Работа с дайлером
Исходящие кампании
Для создания новой исходящей кампании, необходимо отправить POST запрос на адрес сервера Webitel Engine с заданным телом запроса. Ниже приведен пример такого запроса:
POST
/api/v2/dialer
Content-Type: application/json X-Access-Token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6ImNmMTQ3ZTFiLTk1ZGYtNDI1OC05ZT
M2LWQ4NWZkZDZlZDUzZiIsImV4cCI6MTQ5NzkwNjAwMDAwMCwiZCI6InNpdGUiLCJ0IjoiZG9tYWluIiwidiI6Mn0.o
-bcG_U3oJMN4r3YaBfSg9CcrZPANZulcapR4E6TSdg
{ "name" : "myPredictiveDialer", "description" : "test dialer", "type" : "Predictive Dialer", "priority" : 1, "calendar" : { "id" : "594225b53c1956000b41db7b", "name" : "WorksDay" }, "parameters" : { "limit" : 20, "minBillSec" : 10, "originateTimeout" : 40, "maxTryCount" : 0, "intervalTryCount" : 180, "wrapUpTime" : 60, "predictAdjust" : 150, "targetPredictiveSilentCalls" : 2.5, "maxPredictiveSilentCalls" : 3, "waitingForResultStatus" : true, "recordSession" : true, "eternalQueue" : true, "retryAbandoned" : false, "retriesByNumber" : true, "oneDayTask" : false }, "amd" : { "enabled" : true, "allowNotSure" : true, "maximumWordLength" : 5000, "maximumNumberOfWords" : 3, "betweenWordsSilence" : 50, "minWordLength" : 100, "totalAnalysisTime" : 5000, "silenceThreshold" : 256, "afterGreetingSilence" : 800, "greeting" : 1500, "initialSilence" : 2500 }, "variables" : { "myVar" : "10" }, "numberStrategy" : "by-priority", "membersStrategy" : "next-tries-circuit", "autoResetStats" : true, "resources" : [ { "dialedNumber" : "^\\+?60(\\d{8,11})$", "destinations" : [ { "gwName" : "testDialer", "dialString" : "0$1", "gwProto" : "sip", "order" : 0, "limit" : 10, "enabled" : true, "callerIdNumber" : "000000000" } ] } ], "agentParams" : { "callTimeout" : 20, "wrapUpTime" : 40, "maxNoAnswer" : 2, "busyDelayTime" : 10, "rejectDelayTime" : 10, "noAnswerDelayTime" : 10 }, "agents" : [ "100", "200" ], "skills" : [ "english" ], "agentStrategy" : "longest_idle_agent", "communications" : { "types" : [ { "name" : "Personal", "code" : "1", "ranges" : [ { "startTime" : 540, "endTime" : 1080, "attempts" : 2, "priority" : 10 } ] }, { "name" : "Home", "code" : "2", "ranges" : [ { "startTime" : 1080, "endTime" : 1260, "attempts" : 1, "priority" : 5 } ] } ] } }
Описание структуры тела запроса приведено в таблице ниже:
# | Название | Тип | Значение |
---|---|---|---|
2 | name | string | Название кампании |
3 | description | string | Произвольное описание кампании |
4 | type | string | Тип дайлера. Может принимать одно из значений:
|
5 | priority | number | Приоритет кампании (любой целое число). По умолчанию, 0. |
6 | calendar | object | Рабочий календарь. Необходимо указать идентификатор и название предварительно созданного календаря. |
10 | parameters | object | Дополнительные параметры кампании: 11 - 25. |
11 | limit | number | Максимальное количество одновременных вызовов. |
12 | minBillSec | number | Минимальная длительность успешного звонка "в разговоре", если не включена функция результата звонка (20). |
13 | originateTimeout | number | Максимальная длительность вызова абонента. |
14 | maxTryCount | number | Максимальное количество попыток дозвона абоненту. |
15 | intervalTryCount | number | Ожидание между попытками дозвона абоненту в секундах. |
16 | wrapUpTime | number | Длительность ожидания получения результата звонка, если включена функция результата звонка (20). |
17 | predictAdjust | number | Количество выполненных попыток, после которых включается Predictive механизмы для Predictive Dialer. |
18 | targetPredictiveSilentCalls | number | Плановый показатель потерянных звонков для Predictive Dialer. |
19 | maxPredictiveSilentCalls | number | Максимально допустимый показатель потерянных звонков для Predictive Dialer. |
20 | waitingForResultStatus | boolean | Результата звонка - ожидать результат дозвона абоненту из внешней системы через REST API. |
21 | recordSession | boolean | Включить запись разговоров. |
22 | eternalQueue | boolean | "Вечная кампания" - не останавливать после завершения прозвона всех абонентов. |
23 | retryAbandoned | boolean | Продолжать попытки дозвона абоненту после того, как он был "потерян". |
24 | retriesByNumber | boolean | Количество попыток для тип номера считать по каждому номеру данного типа отдельно. |
25 | oneDayTask | boolean | Кампания одного дня. Не переносить абонентов на следующий день, если выполнены все попытки дозвона в рамках одного дня (0:00 - 24:00). |
27 | amd | object | Функция определение автоотчетчика (answering machine detection): 28 - 38. |
28 | enabled | boolean | Включить функцию определения автоответчика. |
29 | allowNotSure | boolean | Переводить на оператора звонки, в которых не получено однозначное распознавание человека. |
30 | maximumWordLength | number | Максимальная продолжительность одного предложения (ms). |
31 | maximumNumberOfWords | number | Максимальное кол-во слов в приветствии. Если превышено то - автоответчик. |
32 | betweenWordsSilence | number | Продолжительность тишины между словами (ms). |
33 | minWordLength | number | Минимальная продолжительность непрерывного звука голоса, чтобы определить этот звук как слово (ms). |
34 | totalAnalysisTime | number | Максимальное время выделенное для работы алгоритма выявления человека или автоответчика (ms). |
35 | silenceThreshold | number | Максимальная продолжительность тишины между словами (ms). |
36 | afterGreetingSilence | number | Продолжительность тишины после приветствия (ms). |
37 | greeting | number | Максимальная длина приветствия (ms). |
38 | initialSilence | number | Максимальная длительность тишины перед приветствием (ms). |
40 | variables | object | Дополнительные переменные, которые будут назначаться в канал каждой попытки дозвона для всех абонентов кампании. |
43 | numberStrategy | string | Стратегия выбора номеров по типу средства связи абонента. Возможно одно из значений:
|
44 | membersStrategy | string | Стратегия прохождения списка абонентов. Возможно одно из значений:
|
45 | autoResetStats | boolean | Автоматически очищать статистику и показатели работы операторов по кампании в 0:00. |
46 | resources | array | Массив объектов с настройками исходящей маршрутизации (47 - 62). |
48 | dialedNumber | string | Регулярное выражение номера телефона абонента. |
49 | destinations | array | Массив объектов (50 - 59), с описанием направлений вывода звонка. |
51 | gwName | string | Название шлюза из 07 Gateways. |
52 | dialString | string | Строка набора номера. |
54 | order | number | Последовательность выбора. |
55 | limit | number | Количество одновременных вызовов по данному направлению. |
56 | enabled | boolean | Включено. |
57 | callerIdNumber | string | CallerID для направления. |
62 | agentParams | object | Общие параметры операторов в кампании (63 - 68). Если не заданы, то учитываются индивидуальные настройки каждого из операторов в 06 Directory. |
63 | callTimeout | number | Максимальная длительность вызова оператора (дозвон оператору). |
64 | wrapUpTime | number | Время пособработки по завершению звонка. В это время дайлер не распределяет вызов на оператора. |
65 | maxNoAnswer | number | Максимальное количество последовательных звонков без ответа оператора, после которых система выведет оператора в перерыв. |
66 | busyDelayTime | number | Задержка в секундах между звонками из очереди, если оператор занят. |
67 | rejectDelayTime | number | Задержка в секундах между звонками из очереди, если оператор отклонил вызов. |
68 | noAnswerDelayTime | number | Задержка в секундах между звонками из очереди, если оператор не ответил. |
70 | agents | array | Массив с номерами операторов назначенных на данную кампанию. |
74 | skills | array | Массив со скилами операторов, которые будут автоматически включены в данную кампанию. |
77 | agentStrategy | string | Стратегия выбора свободного оператора. Возможно одно из значений:
|
78 | communications | object | Средства связи абонентов. |
79 | types | array | Массив с типами средств связи абонентов (80 - 104). |
81 | name | string | Название типа средства связи. |
82 | code | string | Код типа средства связи. |
83 | ranges | array | Массив объектов описывающих временных и количественные параметры для каждого из типов средства связи. |
85 | startTime | number | Время начала действия. |
86 | endTime | number | Время завершения действия. |
87 | attempts | number | Количество попыток дозвона. |
88 | priority | number | Приоритет. |
После успешного создания новой кампании сервере возвращает в ответе идентификатор:
{ "status": "OK", "data": { "result": { "ok": 1, "n": 1 }, "ops": [], "insertedCount": 1, "insertedIds": [ "5947d253877320000ca427a7" ] } }
Для изменения параметров кампании, необходимо отправить PUT с обновленным телом запроса. Пример:
PUT
/api/v2/dialer/5947d253877320000ca427a7
Content-Type: application/json X-Access-Token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6ImNmMTQ3ZTFiLTk1ZGYtNDI1OC05ZT
M2LWQ4NWZkZDZlZDUzZiIsImV4cCI6MTQ5NzkwNjAwMDAwMCwiZCI6InNpdGUiLCJ0IjoiZG9tYWluIiwidiI6Mn0.o
-bcG_U3oJMN4r3YaBfSg9CcrZPANZulcapR4E6TSdg
Для удаления кампании используется DELETE запрос, а для получения информации по дайлеру - GET
Что бы запустить кампании необходимо отправить PUT запрос без тела
PUT
/api/v2/dialer/5947d253877320000ca427a7/state/1
Content-Type: application/json X-Access-Token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6ImNmMTQ3ZTFiLTk1ZGYtNDI1OC05ZT
M2LWQ4NWZkZDZlZDUzZiIsImV4cCI6MTQ5NzkwNjAwMDAwMCwiZCI6InNpdGUiLCJ0IjoiZG9tYWluIiwidiI6Mn0.o
-bcG_U3oJMN4r3YaBfSg9CcrZPANZulcapR4E6TSdg
Загрузка абонентов
Для добавления нового абонента в созданную кампании, необходимо отправить POST запрос на адрес сервера Webitel Engine с заданным телом запроса. Ниже приведен пример такого запроса:
POST
/api/v2/dialer/5947d253877320000ca427a7/members?autoRun=true
Content-Type: application/json X-Access-Token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6ImNmMTQ3ZTFiLTk1ZGYtNDI1OC05ZT
M2LWQ4NWZkZDZlZDUzZiIsImV4cCI6MTQ5NzkwNjAwMDAwMCwiZCI6InNpdGUiLCJ0IjoiZG9tYWluIiwidiI6Mn0.o
-bcG_U3oJMN4r3YaBfSg9CcrZPANZulcapR4E6TSdg
{ "name": "Ivan Ivanov", "priority": 10, "variables": { "productId": "235444" }, "communications": [ { "number": "380911234567", "priority": 5, "type": "1", "description": "new" }, { "number": "380921234567", "priority": 1, "description": "old one, without communication type" } ], "expire": 1497992400000 }
autoRun
Параметр позволяет автоматически запускать кампанию после добавления абонента.
Body JSON
Переменная | Тип | Описание |
---|---|---|
name | string | Произвольное название абонента |
priority | number | Приоритет обзвона (любой целое число). По умолчанию, 0. |
communications | array | Массив телефонных номеров с приоритетами для прозвона по одному абоненту, если необходимо указать больше одного средства связи для перебора. В поле type указывается code типа средства связи. |
variables | object | Дополнительные переменные, которые будут назначаться в канал каждой попытки дозвона абонента. |
expire | number | Не обязательный параметр. Указывает максимальное время, до которого нужно прозвонить абонента. Если в указанный срок данный абонент не будет обслужен, дайлер прекратит осуществлять попытки дозвона. |
После успешного добавления абонента, сервере возвращает в ответе идентификатор:
{ "status": "OK", "data": { "result": { "ok": 1, "n": 1 }, "ops": [], "insertedCount": 1, "insertedIds": [ "5949067198ff9f000ca9a264" ] } }
Для изменения данных PUT, для удаления абонента используется DELETE запрос, а для получения информации - GET
GET
/api/v2/dialer/5947d253877320000ca427a7/members/5949067198ff9f000ca9a264
X-Access-Token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6ImNmMTQ3ZTFiLTk1ZGYtNDI1OC05ZT
M2LWQ4NWZkZDZlZDUzZiIsImV4cCI6MTQ5NzkwNjAwMDAwMCwiZCI6InNpdGUiLCJ0IjoiZG9tYWluIiwidiI6Mn0.o
-bcG_U3oJMN4r3YaBfSg9CcrZPANZulcapR4E6TSdg
Управление результатом дозвона
Если была активирована функция управления результатом звонка из внешнего приложения, waitingForResultStatus, по завершению каждого успешного звонка, дайлер будет ожидать REST запрос со статусом - считать данную попытку успешной или нет. Так же, есть возможность передать новый телефон, исключить текущий либо назначить новое время дозвона. Пример запроса:
PUT
/api/v2/dialer/5947d253877320000ca427a7/members/5949067198ff9f000ca9a264/status
Content-Type: application/json X-Access-Token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6ImNmMTQ3ZTFiLTk1ZGYtNDI1OC05ZT
M2LWQ4NWZkZDZlZDUzZiIsImV4cCI6MTQ5NzkwNjAwMDAwMCwiZCI6InNpdGUiLCJ0IjoiZG9tYWluIiwidiI6Mn0.o
-bcG_U3oJMN4r3YaBfSg9CcrZPANZulcapR4E6TSdg
{ "success": false, "reset_retries": false, "next_after_sec": 3600, "next_communication": "380910000000", "stop_communications": ["380920000000", "380930000000"], "description": "Перезвонить через час на другой номер" }
Body JSON
Переменная | Тип | Описание |
---|---|---|
success | boolean |
|
reset_retries | boolean | true - полностью очистить все попытки по все средствам связи абонента и начать с начала. |
next_after_sec | number | Если указано, время в секундах через сколько осуществить следующую попытку дозвона абоненту. Если время не указано, учитывается значение из настроек дайлера. |
next_communication | string | На какой номер осуществить следующую попытку. Если номер не указан, будет выбран номер в порядке приоритета. Если указан новый номер, он будет добавлен с повышеным приоритетом. |
stop_communications | array | Массив с номерами, на которые больше не делать попытки дозвона. Либо, можно указать all (как строка), тогда будет прекращен дозвон на все номера, кроме указанного в поле next_communication "stop_communications": "all" |
description | string | Произвольный комментарий к действию |
Отмена участника обзвона
3.10.2
Для отменить (без удаления) участника обзвона вы можете отправить PUT запрос terminate:
PUT
/api/v2/dialer/5947d253877320000ca427a7/members/5949067198ff9f000ca9a264/terminate
X-Access-Token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6ImNmMTQ3ZTFiLTk1ZGYtNDI1OC05ZT
M2LWQ4NWZkZDZlZDUzZiIsImV4cCI6MTQ5NzkwNjAwMDAwMCwiZCI6InNpdGUiLCJ0IjoiZG9tYWluIiwidiI6Mn0.o
-bcG_U3oJMN4r3YaBfSg9CcrZPANZulcapR4E6TSdg