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

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

Описание структуры тела запроса приведено в таблице ниже:

#НазваниеТипЗначение
2namestringНазвание кампании
3descriptionstringПроизвольное описание кампании
4typestring

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

  • Predictive Dialer
  • Progressive Dialer
  • Voice Broadcasting
5prioritynumberПриоритет кампании (любой целое число). По умолчанию, 0.
6calendarobjectРабочий календарь. Необходимо указать идентификатор и название предварительно созданного календаря.
10parametersobjectДополнительные параметры кампании: 11 - 25.
11limitnumberМаксимальное количество одновременных вызовов.
12minBillSecnumberМинимальная длительность успешного звонка "в разговоре", если не включена функция результата звонка (20).
13originateTimeoutnumberМаксимальная длительность вызова абонента.
14maxTryCountnumberМаксимальное количество попыток дозвона абоненту.
15intervalTryCountnumberОжидание между попытками дозвона абоненту в секундах.
16wrapUpTimenumberДлительность ожидания получения результата звонка, если включена функция результата звонка (20).
17predictAdjustnumberКоличество выполненных попыток, после которых включается Predictive механизмы для Predictive Dialer.
18targetPredictiveSilentCallsnumberПлановый показатель потерянных звонков для Predictive Dialer.
19maxPredictiveSilentCallsnumberМаксимально допустимый показатель потерянных звонков для Predictive Dialer.
20waitingForResultStatusbooleanРезультата звонка - ожидать результат дозвона абоненту из внешней системы через REST API.
21recordSessionbooleanВключить запись разговоров.
22eternalQueueboolean"Вечная кампания" - не останавливать после завершения прозвона всех абонентов.
23retryAbandonedbooleanПродолжать попытки дозвона абоненту после того, как он был "потерян".
24retriesByNumberbooleanКоличество попыток для тип номера считать по каждому номеру данного типа отдельно.
25oneDayTaskbooleanКампания одного дня. Не переносить абонентов на следующий день, если выполнены все попытки дозвона в рамках одного дня (0:00 - 24:00).
27amdobjectФункция определение автоотчетчика (answering machine detection): 28 - 38.
28enabledbooleanВключить функцию определения автоответчика.
29allowNotSurebooleanПереводить на оператора звонки, в которых не получено однозначное распознавание человека.
30maximumWordLengthnumberМаксимальная продолжительность одного предложения (ms).
31maximumNumberOfWordsnumberМаксимальное кол-во слов в приветствии. Если превышено то - автоответчик.
32betweenWordsSilencenumberПродолжительность тишины между словами (ms).
33minWordLengthnumberМинимальная продолжительность непрерывного звука голоса, чтобы определить этот звук как слово (ms).
34totalAnalysisTimenumberМаксимальное время выделенное для работы алгоритма выявления человека или автоответчика (ms).
35silenceThresholdnumberМаксимальная продолжительность тишины между словами (ms).
36afterGreetingSilencenumberПродолжительность тишины после приветствия (ms).
37greetingnumberМаксимальная длина приветствия (ms).
38initialSilencenumber

Максимальная длительность тишины перед приветствием (ms).

40variablesobjectДополнительные переменные, которые будут назначаться в канал каждой попытки дозвона для всех абонентов кампании.
43numberStrategystring

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

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

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

  • next-tries-circuit - в начале выбирать абонентов, которые имеют выше приоритет и были раньше добавлены с учетом времени следующей попытки дозвона.
  • strict-circuit - в начале выбирать абонентов, которые имеют выше приоритет и были раньше добавлены. Время следующей попытки дозвона проставляется после неудачной попытки дозвона к клиенту (не взял трубку, сбросил и т.п.). Последующий обзвон мемберов осуществляется с учетом проставленного ранее времени следующей попытки.
45autoResetStatsbooleanАвтоматически очищать статистику и показатели работы операторов по кампании в 0:00.
46resourcesarrayМассив объектов с настройками исходящей маршрутизации (47 - 62).
48dialedNumberstringРегулярное выражение номера телефона абонента.
49destinationsarrayМассив объектов (50 - 59), с описанием направлений вывода звонка.
51gwNamestringНазвание шлюза из 07 Gateways.
52dialStringstringСтрока набора номера.
54ordernumberПоследовательность выбора.
55limitnumberКоличество одновременных вызовов по данному направлению.
56enabledbooleanВключено.
57callerIdNumberstringCallerID для направления.
62agentParamsobjectОбщие параметры операторов в кампании (63 - 68). Если не заданы, то учитываются индивидуальные настройки каждого из операторов в 06 Directory.
63callTimeoutnumberМаксимальная длительность вызова оператора (дозвон оператору).
64wrapUpTimenumberВремя пособработки по завершению звонка. В это время дайлер не распределяет вызов на оператора.
65maxNoAnswernumberМаксимальное количество последовательных звонков без ответа оператора, после которых система выведет оператора в перерыв.
66busyDelayTimenumberЗадержка в секундах между звонками из очереди, если оператор занят.
67rejectDelayTimenumberЗадержка в секундах между звонками из очереди, если оператор отклонил вызов.
68noAnswerDelayTimenumberЗадержка в секундах между звонками из очереди, если оператор не ответил.
70agentsarrayМассив с номерами операторов назначенных на данную кампанию.
74skillsarrayМассив со скилами операторов, которые будут автоматически включены в данную кампанию.
77agentStrategystring

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

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

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

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

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

78communicationsobjectСредства связи абонентов.
79typesarrayМассив с типами средств связи абонентов (80 - 104).
81namestringНазвание типа средства связи.
82codestringКод типа средства связи.
83rangesarrayМассив объектов описывающих временных и количественные параметры для каждого из типов средства связи.
85startTimenumberВремя начала действия.
86endTimenumberВремя завершения действия.
87attemptsnumberКоличество попыток дозвона.
88prioritynumberПриоритет.

После успешного создания новой кампании сервере возвращает в ответе идентификатор:

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

Переменная
Тип
Описание
namestringПроизвольное название абонента
prioritynumberПриоритет обзвона (любой целое число). По умолчанию, 0.

communications

array

Массив телефонных номеров с приоритетами для прозвона по одному абоненту, если необходимо указать больше одного средства связи для перебора. В поле type указывается code типа средства связи.

variablesobject

Дополнительные переменные, которые будут назначаться в канал каждой попытки дозвона абонента.

expirenumberНе обязательный параметр. Указывает максимальное время, до которого нужно прозвонить абонента. Если в указанный срок данный абонент не будет обслужен, дайлер прекратит осуществлять попытки дозвона.

После успешного добавления абонента, сервере возвращает в ответе идентификатор:

Привет ответа
{
	"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

Body
{
	"success": false,
	"reset_retries": false,
	"next_after_sec": 3600,
	"next_communication": "380910000000",
	"stop_communications": ["380920000000", "380930000000"],
	"description": "Перезвонить через час на другой номер"
}


Body JSON

Переменная
Тип
Описание
success
boolean
  • true - Успешный звонок. Прекращаем дозваниваться абоненту по всем остальным номерам.
  • false - Не успешный звонок. Продолжить попытки дозвона.
reset_retries
booleantrue - полностью очистить все попытки по все средствам связи абонента и начать с начала.
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
  • No labels