Общая информация о работе исходящих компаний описана в курсе Контакт-Центр
Общая информация
В рамках данной статьи будет рассмотрена работа с колл-листами, или таблицами контрагентов на исходящий обзвон.
Платформа Эра предоставляет гибкий функционал по их настройке, использованию и наполнению, позволяющий реализовать исходящие кампании любого уровня сложности.
Для хранения таблиц контрагентов в платформе используются объекты класса callcenter/outbound/Contragents и его наследники. Этот класс поставляется в составе приложения callcenter, и предоставляет базовый набор свойств и действий для работы колл-листа. Можно создавать собственные дочерние классы, дополняя состав данных для соответствия нуждам бизнеса.
Базовый класс Contragents по-умолчанию подразумевает его использование для множественного количества исходящих кампаний. Таким образом, для новых кампаний не требуется создавать полностью новый класс. Разделение осуществляется с помощью свойства campaign_id.
Также в составе приложения callcenter присутствуют два дочерних класса по-умолчанию:
- DemoContragent - пример дочернего класса Contragent с большим количеством дополнительных полей
- SimpleContragent - пример дочернего класса Contragent с минимальным набором дополнительных полей (только ФИО, примечание и результат обзвона)
Эти классы можно использовать как примеры для разработки собственных, или применять "из коробки".
| Свойство | Тип данных | Описание |
| campaign_id (Кампания) | Campaign (R) | Исходящая кампания (в одной таблице могут храниться контрагенты нескольких кампаний) |
| increment (Счетчик) | Increment | Счетчик для сортировки контрагентов по умолчанию |
| state (Состояние) | ContragentState | Текущее состояние контрагента |
| timeZone (Часовой пояс) | Integer | Часовой пояс контрагента (учитывается при определении допустимого времени дозвона) |
| tryCount (Количество попыток) | Integer | Общее количество попыток дозвона по всем номерам контрагента |
| scheduledTime (Минимальное время) | DateTime | Запланированное время дозвона (минимальное – вызов ранее этого времени невозможен) |
| scheduledTimeMax (Максимальное время) | DateTime | Запланированное время дозвона (максимальное – вызов по истечении этого времени невозможен) |
| scheduledNumber (Номер) | String | Запланированный номер (вызов других номеров контрагента невозможен) |
| personalAgent_id (Персональный оператор) | Uuid | Вызов контрагента может обслужить только персональный оператор |
| ext | Any | |
| phone (Телефон) | String (calc) | |
| workPhone (Рабочий телефон) | String (calc) | |
| homePhone (Домашний телефон) | String (calc) | |
| mobilePhone (Мобильный телефон) | String (calc) | |
| lastPhoneNumber (Последний телефон) | String (calc) | |
| phoneNumbers (Номера телефонов) | PhoneNumber (M) | Телефонные номера контрагента |
| id (ИД) | Uuid | Уникальный идентификатор |
| R – required, обязательное свойство | ||
| M – multi, множественное свойство |
| Имя | Описание |
| makeCall (Позвонить) | Совершить звонок контрагенту |
| scheduleCall (Запланировать) | Запланировать звонок контрагенту на указанный номер в заданное время |
| setResult (Результат) | Изменить результат вызова (например, физически соединение установлено, а фактически произошел сброс или тишина в линии) |
| cleanState (Очистить состояние) | |
| cleanTryCount (Очистить счетчик попыток) | |
| cleanNumbersInfo (Очистить состояния и счетчики номеров) | |
| cleanScheduledInfo (Очистить запланированные время и номер) |
Наполнение таблицы контрагентов
На текущий момент возможны следующие способы добавления новых контрагентов в таблицу:
- Ручное добавление в рабочем месте оператора
- Импорт из CSV и JSON
- Автоматическое добавление через сценарий (IVR или служебный)
- Добавление через сервис
- Добавление через API
Далее, рассмотрим все доступные варианты.
Ручное добавление в таблицу контрагентов


В приложении "Исходящие кампании", в разделе Кампании, можно открыть список контрагентов для каждой из них (кнопка Открыть). При открытии будет отображен реестр данных класса callcenter/outbound/SimpleContragents (или его наследников, в зависимости от настроек кампании). В данном реестре можно производить ручное добавление и модификацию записей, а также производить импорт и экспорт данных.

Данный раздел также присутствует в рабочем месте оператора, с помощью него возможно осуществлять ручной обзвон, если исходящая кампания не является автоматизированной.
Импорт из CSV и JSON
В разделе Кампании рабочего места оператора также доступны операции экспорта и импорта данных. Данные операции можно использовать для ручной загрузки данных в таблицу контрагента.
Поддерживается экспорт в Excel, CSV и JSON.
Импорт данных поддерживается только из CSV и JSON.
Шаблон для импорта CSV можно получить, выбрав все колонки для отображения и выполнив экспорт в CSV (даже пустой таблицы)
Шаблон импорта JSON (SimpleContragents):
[
{
"id": "1a8cb23f-1010-4703-b93d-80a7e262f6a3",
"campaign_id": "db51f32a-8f1e-475f-a128-4aed897e2840",
"increment": 0,
"state": "",
"phoneNumbers": [
{
"phoneNumber": "89478485614",
"kind": "mobile",
"state": "",
"tryCount": 0,
"lastTryTime": "",
"display": "Моб. 89478485614"
}
],
"tryCount": 0,
"ext": null,
"lastPhoneNumber": "",
"fio": "Степан Борисович Варфоломеев",
"notes": "Задолженность: 186273 руб."
}
]
Детально изучить структуру базовых таблиц можно через приложение Builder, в пакете callcenter.
Для этого способа добавления данных, а также дальнейшних требуется опыт работы с JSON-структурой данных. Полезным инструментом для взаимодейтсвия с данными через JSON является раздел REST Sandbox в приложении Builder.
Добавление данных в служебных сценариях и IVR

Для добавления записи в svc и ivr сценариях используется компонент Операция. Это универсальный компонент для доступа к данным и функциям платформы, включая продуктовый слой. Детально его работа описана в курсе по разработке приложений.
В данном случае, необходимо использовать тип операции "Модель данных в домене", и операцию "Создание сущности", после чего указать имя класса и передать JSON, собранный по шаблону выше или из REST Sandbox.
Добавление данных через сервис
В случае необходимости описания какой-либо сложной логики создания записи в таблице контрагентов, либо получения данных из внеших систем, рекомендуется разработка собственного сервиса, который будет осуществлять обработку данных и создание записей таблицы.
Разработка сервиса требует знания TS/JS и NodeJS. Пример создания экземпляра класса описан в статье по работе с данными классов курса по разработке. В рамках этого курса, в том числе, разбирается процесс разработки и работы сервисов.
Добавление данных через REST API
Если требуется наполнять таблицу контрагентов из внешней системы напрямую, необходимо использовать автоматически генерируемый REST API для доступа.
Подход к использованию системного REST API описан на ресурсе Vendor. Также как и в предудыщих пунктах, крайне полезным будет инструмент REST Sandbox в приложении Builder.
Примеры осуществления API-запросов и создания ключей доступа описаны в соответствующей статье.
Применение таблиц контрагентов

Таблицу можно привязать к конкретной исходящей кампании в приложении "Исходящие кампании".
Важно выбрать правильный режим загрузки данных в таблице:
- Скользящее окно - данные будут загружаться из таблицы постепенно, по мере обработки. Самый эффективный способ загрузки для большого объема данных
- Фоном - данные будут загружаться в фоновом режиме во время работы кампании. Сама кампания будет запущена сразу же
- Сразу - данные будут загружаться полностью при старте кампании. Кампания запустится после окончания загрузки данных. Самый нагруженный вариант
Режим загрузки в первую очередь зависит от бизнес-задач конкретной исходящей кампании, однако в 90% случаев, он не будет влиять на логику обзвона, поэтому рекомендуется выбирать самый эффективный вариант со скользящим окном.
Кроме способа загрузки, на объем и порядок данных, загружаемых из таблицы влияют опциональная фильтрация и сортировка данных, которые доступны в настройках исходящей кампании.
Также, если в таблице контрагентов заполнены значения персональных операторов (свойство personalAgent_id), либо настроено сохранение персонального оператора, можно включить режим "привязки" контрагента к оператору, который обслуживал его вызов.
Важным параметром в классе Contragent является часовой пояс клиента, так как это значение влияет на работу ограничений по времени звонков в исходящей кампании, а также на планирование перезвонов.
Кроме свойств самой таблицы, конкретная исходящая кампания может расширять их набор при помощи набора расширений - свойств произвольного типа, по аналогии с настройками класса в приложении Builder.