Интеграция OneBox с IP-АТС Oktell подразумевает:
Подключение интеграции предусмотрено в пункте настроек "Интеграции" >> "Телефония Oktell".
Документация о структуре базы данных Oktell - http://wiki.oktell.ru/Структура_БД_Oktell
Документация о серверном HTTP интерфейсе - http://wiki.oktell.ru/Серверный_HTTP_интерфейс
Для совершения звонков из системы OneBox по нажатию на номер абонента необходимо:
При нажатии на номер телефона с OneBox будет отправлен запрос в Web API метод wp_autocallstart, со следующими параметрами:
Для получения информации о входящих/исходящих звонках и отображения соответствующего окна звонка в системе OneBox необходимо на стороне АТС настроить передачу соответствующей информации (GET или POST запросом) в API http://вашбокс/oktell/push/ , передав следующие параметры:
В данное API можно передавать информацию и по завершению звонка для автоматического закрытия звонка и окна звонка в системе OneBox.
Получение информации о завершившемся звонке осуществляется с помощью запроса в API http://вашбокс/oktell/push/complete/ при помощи передачи в него XML с информацией о завершенном звонке.
Пример XML:
<?xml version="1.0" encoding="utf-8"?>
<content Version="80903">
<call commcount="7" taskcount="1">
<property_simple key="datetimeformat" value="dd.MM.yyyy HH:mm:ss.fff" />
<property_simple key="direction" value="1" name="cdIncoming" />
<property_simple key="lineid" value="f77fdde7-5031-49ba-8c20-a62eb4dbc269" />
<property_simple key="linenumber" value="13006" />
<property_simple key="callerid" value="0968300999" />
<property_simple key="calledid" value="0443920183" />
<property_simple key="idchain" value="6549deb3-4700-4c4b-bfbf-e9f024392451" />
<property_cdata key="custominfo"><![CDATA[]]></property_cdata>
<property_simple key="timestart" value="26.02.2018 16:55:06.411" />
<property_simple key="timeconnected" value="26.02.2018 16:55:06.442" />
<property_simple key="timedisconnected" value="26.02.2018 17:12:46.633" />
<property_simple key="timestop" value="26.02.2018 17:12:47.633" />
<property_simple key="totalsec" value="1061" />
<property_simple key="emergency" value="0" />
<property_simple key="callresult" value="busy" />
<activity>
<commutation index="0">
<property_simple key="idconnection" value="8b355cf1-219f-48c9-bcb5-b0efa89a7c9c" />
<property_simple key="type" value="2" name="IVR" />
<property_simple key="custominfo" value="" />
<property_simple key="timestart" value="26.02.2018 16:55:06.426" />
<property_simple key="timestop" value="26.02.2018 16:55:06.426" />
<property_simple key="totalsec" value="0" />
<property_simple key="ivrscriptname" value="МАРШРУТИЗАЦИЯ ВХОДЯЩИХ" />
</commutation>
<commutation index="1">
<property_simple key="idconnection" value="8b355cf1-219f-48c9-bcb5-b0efa89a7c9c" />
<property_simple key="type" value="2" name="IVR" />
<property_simple key="custominfo" value="" />
<property_simple key="timestart" value="26.02.2018 16:55:06.426" />
<property_simple key="timestop" value="26.02.2018 16:55:06.442" />
<property_simple key="totalsec" value="0" />
<property_simple key="ivrscriptname" value="" />
</commutation>
<commutation index="2">
<property_simple key="idconnection" value="8b355cf1-219f-48c9-bcb5-b0efa89a7c9c" />
<property_simple key="type" value="2" name="IVR" />
<property_simple key="custominfo" value="" />
<property_simple key="timestart" value="26.02.2018 16:55:06.442" />
<property_simple key="timestop" value="26.02.2018 16:55:06.442" />
<property_simple key="totalsec" value="0" />
<property_simple key="ivrscriptname" value="МАРШРУТИЗАЦИЯ ВХОДЯЩИХ" />
</commutation>
<commutation index="3">
<property_simple key="idconnection" value="8b355cf1-219f-48c9-bcb5-b0efa89a7c9c" />
<property_simple key="type" value="2" name="IVR" />
<property_simple key="custominfo" value="" />
<property_simple key="timestart" value="26.02.2018 16:55:06.442" />
<property_simple key="timestop" value="26.02.2018 16:58:10.790" />
<property_simple key="totalsec" value="184" />
<property_simple key="ivrscriptname" value="" />
</commutation>
<task index="0">
<property_simple key="effortid" value="1d8a168a-5125-4934-86c2-83055d85db4e" />
<property_simple key="direction" value="1" name="cdIncoming" />
<property_simple key="taskid" value="b51b8635-89a8-4a4a-82de-216615cb8553" />
<property_simple key="taskname" value="" />
<property_simple key="taskcode" value="" />
<property_simple key="projectid" value="bb61257d-60ab-4b9f-b761-fe120be6ebae" />
<property_simple key="tag" value="0" />
<property_simple key="timeonline" value="26.02.2018 16:55:31.146" />
<property_simple key="joinedtableid" value="46862" />
<property_simple key="timestart" value="26.02.2018 16:58:04.852" />
<commutation index="4">
<property_simple key="idconnection" value="22ffa9cf-3fe0-4ca8-8346-b81485054f5a" />
<property_simple key="type" value="1" name="Abonent" />
<property_simple key="custominfo" value="" />
<property_simple key="timestart" value="26.02.2018 16:58:10.790" />
<property_simple key="timestop" value="26.02.2018 17:01:59.373" />
<property_simple key="totalsec" value="228" />
<abonents count="1">
<abonent index="1">
<property_simple key="lineid" value="cd6ab595-ea85-44f6-83ca-0dde81920497" />
<property_simple key="linenumber" value="17012" />
<property_simple key="callerid" value="" />
<property_simple key="userid" value="acdd2ea8-51e7-43e2-9449-00b08ba1b1f2" />
<property_simple key="username" value="" />
</abonent>
</abonents>
</commutation>
<commutation index="5">
<property_simple key="idconnection" value="e5b6a26c-09a8-4fc4-a049-2b3ba8709696" />
<property_simple key="type" value="1" name="Abonent" />
<property_simple key="custominfo" value="" />
<property_simple key="timestart" value="26.02.2018 17:02:45.327" />
<property_simple key="timestop" value="26.02.2018 17:03:55.391" />
<property_simple key="totalsec" value="70" />
<abonents count="1">
<abonent index="1">
<property_simple key="lineid" value="cd6ab595-ea85-44f6-83ca-0dde81920497" />
<property_simple key="linenumber" value="17012" />
<property_simple key="callerid" value="" />
<property_simple key="userid" value="acdd2ea8-51e7-43e2-9449-00b08ba1b1f2" />
<property_simple key="username" value="" />
</abonent>
</abonents>
</commutation>
<commutation index="6">
<property_simple key="idconnection" value="63d87069-bb2b-4a12-b7ab-e6deee2c1cca" />
<property_simple key="type" value="1" name="Abonent" />
<property_simple key="custominfo" value="" />
<property_simple key="timestart" value="26.02.2018 17:05:15.017" />
<property_simple key="timestop" value="26.02.2018 17:12:46.570" />
<property_simple key="totalsec" value="451" />
<abonents count="1">
<abonent index="1">
<property_simple key="lineid" value="cd6ab595-ea85-44f6-83ca-0dde81920497" />
<property_simple key="linenumber" value="17012" />
<property_simple key="callerid" value="" />
<property_simple key="userid" value="acdd2ea8-51e7-43e2-9449-00b08ba1b1f2" />
<property_simple key="username" value="" />
</abonent>
</abonents>
</commutation>
</task>
</activity>
</call>
</content>
В виду сложности реализации рекомендуем воспользоваться простыми запросами в /oktell/push/, описанными выше.
Для получения истории звонков необходимо:
Раз в минуту дейстие подключается к базе данных MS SQL и получает 1000 последних записей с таблицы [oktell].[dbo].[A_Stat_Connections_1x1] (дата начала звонка и [IdChain] ).
Далее по основании полученных значений [IdChain] будут получены данные с таблицы [oktell_cc_temp].[dbo].[A_Cube_CC_EffortConnections] (направление звонка, номера абонентов, в том числе и [IdEffort] ).
Далее на основании полученного [IdEffort] будут получены данные с таблицы [oktell_cc_temp].[dbo].[A_Cube_CC_OperatorStates] (статус звонка, длительность).
Если включена настройка интеграции "Серверный HTTP интерфейс: Скачивать аудиозапись звонка локально" - будет выполнена попытка получения файла аудиозаписи через Web API по значению [IdChain] с помощью метода /download/byscript.
При прослушивании аудиозаписи в списке событий OneBox выполняется попытке получения файла по ссылке, загруженной через PUSH-запрос, либо на основании значения канала звонка, соответствующего [IdChain] в базе данные Oktell. По умолчанию подразумевается, что скрипт будет называться getfile и отдаёт файл аудиозаписи в соответствии с описанием метода Web API.
Если же Вы будете реализовывать свой скрипт для получения файла аудиозаписи - необходимо указать его название в настройку интеграции "Серверный HTTP интерфейс: Название скрипта для получения аудиозаписи".