Работа с дайлером

Исходящие кампании

Для создания новой исходящей кампании, необходимо отправить 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

Тип дайлера. Может принимать одно из значений:

  • Predictive Dialer

  • Progressive Dialer

  • Voice Broadcasting

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

Стратегия выбора номеров по типу средства связи абонента. Возможно одно из значений:

  • by-priority - совершаем заданное количество попыток сначала по самому приоритетному типу средства связи, далее переходим к следующему типу.

  • top-down - последовательно выполняется по одной попытке на каждый тип средства связи.

44

membersStrategy

string

Стратегия прохождения списка абонентов. Возможно одно из значений:

  • next-tries-circuit - в начале выбирать абонентов, которые имеют выше приоритет и были раньше добавлены с учетом времени следующей попытки дозвона.

  • strict-circuit - в начале выбирать абонентов, которые имеют выше приоритет и были раньше добавлены. Время следующей попытки дозвона проставляется после неудачной попытки дозвона к клиенту (не взял трубку, сбросил и т.п.). Последующий обзвон мемберов осуществляется с учетом проставленного ранее времени следующей попытки.

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

Стратегия выбора свободного оператора. Возможно одно из значений:

  • random - в случайном порядке.

  • agent-with-fewest-calls - сначала на оператора с наименьшим количеством звонков.

  • agent-with-least-talk-time- сначала на оператора с наименьшим временем в разговоре.

  • longest-idle-agent- сначала на оператора с наибольшим временем в ожидание.

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

  • true - Успешный звонок. Прекращаем дозваниваться абоненту по всем остальным номерам.

  • false - Не успешный звонок. Продолжить попытки дозвона.

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