Работа с дайлером
Исходящие кампании
Для создания новой исходящей кампании, необходимо отправить POST запрос на адрес сервера Webitel Engine с заданным телом запроса. Ниже приведен пример такого запроса:
POST /api/v2/dialer
Content-Type: application/json
X-Access-Token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6ImNmMTQ3ZTFiLTk1ZGYtNDI1OC05ZT
M2LWQ4NWZkZDZlZDUzZiIsImV4cCI6MTQ5NzkwNjAwMDAwMCwiZCI6InNpdGUiLCJ0IjoiZG9tYWluIiwidiI6Mn0.o
-bcG_U3oJMN4r3YaBfSg9CcrZPANZulcapR4E6TSdg
request body
{
"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 | Приоритет. |
После успешного создания новой кампании сервере возвращает в ответе идентификатор:
Respons
{
"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
Body
{
"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 | Не обязательный параметр. Указывает максимальное время, до которого нужно прозвонить абонента. Если в указанный срок данный абонент не будет обслужен, дайлер прекратит осуществлять попытки дозвона. |
После успешного добавления абонента, сервере возвращает в ответе идентификатор:
Привет ответа
Для изменения данных 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
Body
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