Интегрируем IP-телефонию Asterisk и Битрикс24 без использования сторонних сервисов. Asterisk-коннектор работает на собственном сервере компании и не требует дополнительных компонентов. Написан на Java, открытый продукт.
РешенияAsterisk-коннектор — это отдельное ПО, которое передает в Битрикс24 информацию о входящих звонках и направляет исходящие и переадресованные звонки из Битрикс24 в SIP АТС.
Передача в Битрикс24 информации о входящих звонках из Asterisk, получение информации о контакте и открытие окна звонка.
Возможность звонить из Битрикс24 в браузере, десктоп-приложения, мобильного приложения.
Передача в Битрикс24 записей разговоров для сохранения в истории сделок и карточках контактов.
Передача в Битрикс24 полной информации о входящих звонках: номеров абонентов, статусов, времени, длительности.
Автоматическое создание лида при поступлении нового звонка или добавление информации в существующую сделку.
Определение ответственного на основе найденной информации в компаниях, контактах, лидах и компаний или назначение ответственного по умолчанию.
Персональные настройки для каждого сотрудника, исключения, VIP-списки.
Работа с Asterisk без потери вызовов и задержки соединений.
Внедряем системы IP-телефонии на базе IP-АТС Asterisk для малого бизнеса и больших компаний. Вместе со многими клиентами 10+ лет, с основания до занятия лидирующих позиций на рынке.
… и другие решения. Обычно отраслевой опыт позволяет нам предложить шаги по интеграции IP-телефонии, соответствующие как конкретным задачам, так и долгосрочным целям.
Asterisk-коннектор размещается на собственном сервере компании, доступ сторонних сервисов к IP-телефонии компании отсутствует. Коннектор асинхронно взаимодействует с Asterisk через AMI и непрерывно получает события, содержащие все данные об изменениях при обработке звонков. В зависимости от полученных событий происходит получение ответственного из Битрикс24 для подачи звонка нужному сотруднику и отправка нужных данных в Битрикс24 для учета в CRM. Взаимодействие с Битрикс24 осуществляется через REST API (с 1 января 2021 года возможно только на коммерческих тарифах).
# --- INCOMING CALL VIA QUEUE, SUCCESS ---
- events:
- name: "Newchannel"
- name: "UserEvent"
constraints:
UserEvent: IncomingCall
- name: "QueueCallerJoin"
- name: "AgentCalled"
- name: "AgentConnect"
- name: "Hangup"
action:
- method: telephony.externalcall.finish
params:
USER_ID: $(REST("user.get", "USER_ID", "UF_PHONE_INNER", ${AgentComplete(ConnectedLineNum)} | ${AgentComplete(DestCallerIDNum)} | ${AgentConnect(ConnectedLineNum)} | ${AgentConnect(DestCallerIDNum)}, "ACTIVE", "true")) | $(Responsible(${QueueCallerJoin(CallerIDNum)},ASSIGNED_BY_ID,company,contact,lead)) | ${UserEvent[UserEvent=IncomingCall](B24ResponsibleId)} | 108
DURATION: $(Duration(${AgentConnect}))
STATUS_CODE: 200
- method: crm.lead.update
fields:
ASSIGNED_BY_ID: $(Responsible(${QueueCallerJoin(CallerIDNum)},ASSIGNED_BY_ID,company,contact,lead))
- method: telephony.externalcall.attachrecord
params:
FILENAME: ${UserEvent[UserEvent=MonitorFile](Filename)}.mp3
FILE_CONTENT: $(FileContents(/home/monitor/records/${UserEvent[UserEvent=MonitorFile](Index)}/${UserEvent[UserEvent=MonitorFile](Filename)}.mp3))
Фрагмент конфигурационного файла описывает обработку успешного входящего звонка.
Коннектор ожидает получения заданной последовательности событий events. Другие события, которые могут встретиться между ними, игнорируются. При этом событие UserEvent должно иметь значение атрибута IncomingCall. После получения заверщающего события Hangup коннектор запускает выполнение последовательности action, включающей REST-методы для взаимодействия с Битрикс24 и AMI-запросы для Asterisk.
После завершения звонка в Битрикс24 с помощью метода telephony.externalcall.finish у пользователя скрывается карточка звонка, звонок завершается, фиксируется в статистике. Метод crm.lead.update обновляет существующий лид, чтобы назначить ответственного за него сотрудника. Метод telephony.externalcall.attachrecord прикрепляет запись разговора к завершенному звонку и к делу звонка.
${Event[attrCheck=value](attribute)}
# ${UserEvent[UserEvent=IncomingCall](B24ResponsibleId)}
# ${UserEvent[UserEvent=MonitorFile](Index)}
# ${UserEvent[UserEvent=MonitorFile](Filename)}.mp3
Поиск события Event с проверкой значения его параметра attrCheck и возврат значения attribute. Возвращаемое значение записывается в виде макроса ${…}.
$(Channel(channel, expression))
Вычисление выражения expression в контексте определенного канала channel.
$(Duration(event1, event2))
Вычисление времени в секундах между событием event1 и событием event2.
$(FileContents(filename))
Ожидание появления файла по определенному пути filename, чтение и преобразование в base64.
$(Responsible(phone))
Поиск сущностей в Битрикс24 (компании, контакты, лиды), относящихся к определенному номеру телефона phone, и получение связанного с ними идентификатора ответственного.
$(REST(method, field[, attr, value]...))
Вызов REST-метода method и получение значения определенного поля field.
По общим вопросам, пожалуйста, позвоните в офис по телефону +7 (4852) 67-96-06 или напишите на info@ntechs.ru.