1С + CoMagic



Делимся опытом: интегрировали 1С и ВАТС CoMagic. Стандартные механизмы и Calltracking.

В нашей конфигурации «МедАнгел» (медицинская информационная система) реализована интеграция с сервисом CoMagic, позволяющая:

  • совершать исходящие звонки
  • отображать входящие звонки
  • получать пропущенные звонки
  • прослушивать записи разговоров
  • отслеживание рекламных компаний

Исходящий вызов
Для совершения исходящего звонка необходимо отправить  GET  или POST запрос на адрес «callapi.comagic.ru». Мы реализовали с помощью POST запроса. В тело запроса передается json вида

{
"id": "e209c793-b062-4d8b-a637-1ef08fab086f",
"method": "start.simple_call",
"jsonrpc": "2.0",
"params": {
"access_token": " КлючАутентификации ",
"first_call": "operator",
"virtual_phone_number": "ВиртуальныйНомер",
"contact": "12",
"operator": "НомерТелефона",
"direction": "out"
}
}

Параметры:
id – ид исходящего звонка в нашей МИС
method – имя метода
access_token – ключ аутентификации. Можно получать двумя способами: или вызвать перед  звонком метод авторизации, который вернет ключ, или в личном кабинете CoMagic настроить статичный ключ.
first_call – указываем, куда сначала нужно дозвониться
virtual_phone_number – виртуальный номер, зарегистрированный в CoMagic, с которого будет осуществляться вызов
contact – номер SIP
operator – номер телефона, на который нужно дозвониться
direction – направление звонка

В случае успешного выполнения запроса в синхронном режиме возвращается ответ

{
"jsonrpc": "2.0",
"id": "req1",
"result": {
"data": {
"call_session_id": 237859081
}
}
}

Уведомление о входящем звонке

В личном кабинете CoMagic есть возможность настроить различные уведомления. В нашем случае это «Соединение» — когда оператор поднимает трубку, приходит уведомление и на экране открывается форма с данными звонка (номер телефона, ФИО пациента, рекламная компания).

Форма входящего звонка
Для получения уведомлений был создан http-сервис с POST методом.
Структура уведомления настраивается в личном кабинете CoMagic. В нашем случае json имеет структуру

{
"notification_name":{{notification_name}},           //название уведомления
"external_id":{{external_id}},                       //идентификатор звонка во внешней системе
"contact_phone_number":{{contact_phone_number}},     //номер абонента
"contact_id":{{contact_id}},                         //идентификатор контакта
"employee_full_name":{{employee_full_name}},         //фио сотрудника
"employee_id":{{employee_id}},                       //ид сотрудника
"call_session_id":{{call_session_id}},               //идентификатор звонка
"direction":{{direction}},                           //направление
"campaign_id":{{campaign_id}},                       //ид рекламной компании
"connection_time":{{connection_time}},               //дата время поднятия трубки
"extension_phone_number":{{extension_phone_number}}  //внутренний номер сотрудника
"communication_id":{{communication_id}}              //ид обращения
}

Благодаря параметру «campaign_id»  мы понимаем,  откуда пришел пациент и сохраняем эту информацию для дальнейшего анализа.

Пропущенные звонки

Получить полный журнал звонков, в том числе и пропущенные, можно с помощью GET запроса, в котором можно задать период, за который нужны звонки, а также дополнительные отборы

api.comagic.ru/api/v1/call /?session_key= КлючАутентификации &date_from=Дата1&date_till=Дата2

В ответ в синхронном режиме вернется json со всей необходимой информацией. 
Один из параметров «file_link» — ссылка для скачивания записи разговора.

Уведомление CoMagic об успешности звонка

При входящем звонке мы сохраняем у себя его идентификатор. Если звонок оказался успешным, т.е. произошла запись, в МИС сохраняется связь записи и звонка. В дальнейшем, после оплаты записи, мы этому звонку в CoMagic ставим тег «продажа» с указанием даты и суммы.
Для этого отправляется POST запрос на адрес  «dataapi.comagic.ru/v2.0». В тело запроса передается json вида

{
"id": "e209c793-b062-4d8b-a637-1ef08fab086f",
"method": " set.tag_sales",
"jsonrpc": "2.0",
"params": {
"access_token": " КлючАутентификации ",
" communication_id": "идЗвонка",
" communication_type": "call",
" date_time": "ДатаОплаты",
" transaction_value": "Сумма"
}
}

Этот механизм используется в Calltracking  для анализа, подробнее расскажем в следующей статье. 

Тестировалось на версии платформы 8.3.14.1565.

3 Comments

  1. DNN13

    круто

    Reply
  2. mvgfirst

    В случае со входящим звонком, http-сервис обрабатывает ведь Сервер 1С? Я правильно понял?

    А как реализовано уведомление конкретного пользователя что ему пришел звонок?

    То есть как организована передача с сервера в конкретное клиентское приложение?

    Reply
  3. medangel

    Всё верно, передача через регистр сведений «Очередь звонков» и обработчик ожидания.

    К нам приходит событие о соединении с абонентом (в нем есть информация о внутреннем номере). У нас в МедАнгеле номер опционально привязывается к пользователю или компьютеру. Обработчик ожидания опрашивает РС «Очередь печати» и в случае совпадения внутреннего номера — вызывает окно Входящего звонка.

    Понимаем, что идем на компромисс — но РС практически всё время пустой, всё отрабатывает достаточно быстро.

    У нас еще подключена по умолчанию Система взаимодействия (пользователи активно используют), тестировали оповещение через неё. Но результат отрицательный, пользователям не удобно (лишнее нажатие).

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *