Кастомизации (для версий до 3.0)

Начиная с версии 2.15.0

В версии 2.15.0 обновлена логика обработки звонков: теперь звонки регистрируются через телефонию Битрикс24, что позволяет использовать сквозную аналитику.

Это также означает, что теперь при необходимости создания сущности (лида/контакта) это делает сам Битрикс, а коннектор больше не ищет и не создаёт сущность напрямую.

В связи с обновлением изменилась также и функциональность кастомизаций.

Схема обработки звонка модулем интеграции Itgrix (bx24asterisk)

(Схема для версий начиная с 2.15.0)

“Сущность” – это контакт или лид.
Запрос разговора – это начало звонка на внутреннем номере.
В одном звонке может быть несколько разговоров (в случае перевода звонка).

Краткое описание кастомизаций

Файл кастомизации
(по алфавиту)
Описание
get_updated_activity_fields.phpОбновление полей дела (в конце звонка).
get_updated_entity_fields.phpОбновить поля сущности (в конце звонка).
need_registration.phpНужна ли регистрация звонка?
Можно сделать черно-белые списки по внутреннему номеру/транку.
process_final_params.phpИзменение данных завершения звонка.
process_originate_params.phpИзменение параметров при инициализации звонка из Битрикс24.
Можно позвонить через другой транк, через другой контекст, сменить формат номера и прочее.
process_phone_number.phpИзменение номера телефона перед регистрацией в Б24 и перед поиском пользователя.
Можно сменить формат телефонного номера (+7, 8...).
process_record_file_path.phpКастомизация пути до файла записи разговора.
process_registration_params.phpИзменение параметров регистрации звонка.
process_task_creation_params.phpКастомизация создания задач по пропущенным звонкам.

Входные и выходные параметры кастомизаций

1) process_originate_params

Изменение параметров при инициализации звонка из Битрикс.

Примеры Изменения номера\контекста для вызова в астериск

Вход:

{
"params": {
"caller_id": "<caller_id>",
"channel": "<channel>",
"context": "<context>",
"extension": "<extension>",
"priority": "<priority>"
}
}

Вернуть:

{
"data": {
"caller_id": "<caller_id>",
"channel": "<channel>",
"context": "<context>",
"extension": "<extension>",
"priority": "<priority>"
}
}

К этому массиву данных можно добавить переменные "codecs" и "variables":

"codecs": "<codecs>",
"variable": "variable",

2) process_phone_number

Преобразование номеров – как внутренних, так и внешних.

Пример Изменение номера телефона перед отправкой данных в CRM

Вход:

{
"params": {
"phone": "<номер>"
}
}

Вернуть:

{
"data": {
"phone": "<кастомизированный_номер>"
},
"state": "success"
}

3**) need_registration**

Используется для реализации функционала чёрных/белых список по номерам, транкам и прочим сложным условиям.

Пример Черные и белые списки. Как настроить?

Вход:

{
"params": {<Набор данных о разговоре>}
}

Набор данных о разговоре описан ниже в разделе Данные разговора в параметрах.

Вернуть:

{
"data": {
"result": "<Булева переменная: true - регистрируем, false - игнорируем>"
},
"state": "success"
}

4) process_registration_params

Используется для кастомизации параметров регистрации начала звонка.

Примеры Изменение внешнего номера в Битрикс24

Вход:

{"params": {
    "CALL_START_DATE": "<Дата, время начала звонка>",
    "CRM_CREATE": "<Создавать или нет новый лид (если номер не найден в CRM)>",
    "CRM_SOURCE": "<STATUS_ID источника из справочника источников>",
    "LINE_NUMBER": "<Транк, на который пришел звонок>",
    "PHONE_NUMBER": "<Номер для поиска сущности в битрикс>",
    "SHOW": "<[0/1] Показывать ли карточку звонка при регистрации>",
    "TYPE": "<Направление звонка: 2 - входящий; 1 - исходящий>",
    "USER_ID": "<Идентификатор пользователя>",
    "conversation": {<Набор данных о разговоре>}
}}

Набор данных о разговоре описан ниже в разделе Данные разговора в параметрах.

Вернуть:

Полный список параметров в документации Битрикса.

{"data": {
        "CALL_START_DATE": "<Дата, время начала звонка>",
        "CRM_CREATE": "<Создавать или нет новый лид (если номер не найден в CRM)>",
        "CRM_SOURCE": "<STATUS_ID источника из справочника источников>",
        "LINE_NUMBER": "<Транк, на который пришел звонок>",
        "PHONE_NUMBER": "<Номер для поиска сущности в битрикс>",
        "SHOW": "<[0/1] Показывать ли карточку звонка при регистрации>",
        "TYPE": "<Направление звонка: 2 - входящий; 1 - исходящий>",
        "USER_ID": "<Идентификатор пользователя>"
    },
 "state": "success"
}

5) process_final_params

Начиная с версии 2.15.0 кастомизация всех черных/белых списков реализуется через need_registration.

Примеры Разные ответственные за пропущенные за разные транки

Вход:

{"params": {
"ADD_TO_CHAT": "<Добавить сообщение о звонке в бизнес чат>",
"CALL_ID": "<Идентификатор звонка в битрикс>",
"DURATION": "<Длительность>",
"STATUS_CODE": 200,
"USER_ID": "<Идентификатор пользователя Битрикс, ответственного за разговор>",
"conversation": {<Набор данных о разговоре>}
}}

Набор данных о разговоре описан ниже в разделе Данные разговора в параметрах.

Вернуть:

{"data": {
"ADD_TO_CHAT": "<Добавить сообщение о звонке в бизнес чат>",
"CALL_ID": "<Идентификатор звонка в битрикс. Не рекомендуется изменять!>",
"DURATION": "<Длительность>",
"STATUS_CODE": "<SIP-код статуса звонка>",
"USER_ID": "<Идентификатор пользователя Битрикс, ответственного за разговор>"
},
"state": "success"
}

6) process_record_file_path

Преобразование пути до файла записи разговора.

Пример Кастомизация имени файла аудиозаписи

Вход:

{"params": {
"call_id": "<id_звонка>",
"from": "<номер>",
"to": "<номер>",
"path": "<путь_до_записи>"
}
}

Вернуть:

{"data": {
"path": "<кастомизированный_путь_до_записи>"
},
"state": "success"
}

7) process_task_creation_params

Событие возникает перед постановкой задачи (при пропущенном входящем звонке).
Полное описание полей задачи в API Битрикса

Пример Кастомизация создания задач по пропущенным звонкам

Вход:

В версии 2.15.0 добавлен блок данных о разговоре (conversation).

{"params": {
    "arNewTaskData": {
        "DEADLINE":"<Крайний срок исполнения>",
        "CREATED_BY": "<Идентификатор постановщика>",
        "RESPONSIBLE_ID": "<Идентификатор сотрудника, ответственного за задачу>",
        "TITLE":"<Заголовок задачи>",
        "UF_CRM_TASK": ["L_11201"]
    },
    "conversation": {
        "1550838819.13014": {<Набор данных о разговоре>},
        "1550838850.13029": {<Набор данных о разговоре>}
    }
}}

Набор данных о разговоре (conversation) описан ниже в разделе Данные разговора в параметрах.

Вернуть:

{"data": {
"arNewTaskData": {
"<Название поля задачи в битрикс>": "<Значение этого поля>"
}
},
"state": "success"
}

8) get_updated_activity_fields

Обновление полей дела, в конце звонка.

Примеры использования
Обновление полей дела

Вход:

{"params": {<Набор данных о разговоре>}
}

Набор данных о разговоре описан ниже в разделе Данные разговора в параметрах.

Вернуть:

{"data": {
"<Название поля дела в битрикс>": "<Значение этого поля>"
},
"state": "success"
}

9) get_updated_entity_fields

В версии 2.15.0 get_updated_lead_fields перенесена в get_updated_entity_fields и вызывается и для лидов, и для контактов.

Обновление полей лида/контакта в конце входящего звонка работает только для сущностей, которые созданы в результате регистрации звонка модулем.

Примеры использования – Обновление полей сущности

Вход:

{"params": {
    "conversations": {
        "1550838819.13014": {<Набор данных о разговоре>},
        "1550838850.13029": {<Набор данных о разговоре>}
    },
    "answered_at":"",
    "ended_at":"",
    "from":"",
    "from_local":false,
    "id":"1550838797.13013",
    "started_at":"",
    "state":3,
    "to":"",
    "to_local":true,
    "trunk":"",
    "type":
}}

Набор данных о разговоре описан ниже в разделе Данные разговора в параметрах.

Вернуть:

{"data": {
"<Название поля лида в битрикс>": "<Значение этого поля>"
},
"state": "success"
}

Описание полей лида в API Битрикса.
Описание полей контакта в API Битрикса.

Параметры разговора (conversation)

{
    "answered_at": "<Дата и время ответа>",
    "channel_id": "<Идентификатор канала>",
    "ended_at": "<Время завершения разговора>",
    "from": "<Номер звонящего>",
    "from_local": "<Является ли локальным номер звонящего: true/false>",
    "id": "<Идентификатор звонка>",
    "parent_channel_id": "<Идентификатор родительского канала>",
    "started_at": "<Дата и время начала звонка>",
    "state": "<Этап звонка. Числовое значение>",
    "state_code": "<Человекопонятное название этапа.
                  Возмоные значения: unknown, ringing, talking, ended>",
    "to": "<Номер, на который пришёл звонок>",
    "to_local": "<Является ли локальным номер принимающего: true/false",
    "trunk": "<Внешний номер, на который поступил звонок>",
    "type": "<Направление звонка. Принимает значения:
            1 - внутренний; 2 - входящий; 3 - исходящий>",
    "type_code": "<Направление звонка. Принимает значения:
                 local - внутренний, incoming - входящий, outgoing - исходящий>",
    "was_answered": "<Является ли звонок отвеченным: true/false>"
}

Пример (входящий неотвеченный разговор с номера 89123456789 на 123 через транк 3432723033):

{
    "answered_at": null,
    "channel_id": "1175429532.4512",
    "ended_at": null,
    "from": "89123456789",
    "from_local": false,
    "id": "1175429532.4512",
    "parent_channel_id": "1175429532.4511",
    "started_at": "2019-04-01 12:05:25",
    "state": 1,
    "state_code": "ringing",
    "to": "123",
    "to_local": true,
    "trunk": "3432723033",
    "type": 2,
    "type_code": "incoming",
    "was_answered": false
}

На этой странице