Общая информация о работе исходящих компаний описана в курсе Контакт-Центр
Общая информация
В рамках данной статьи будет рассмотрена работа с колл-листами, или таблицами контрагентов на исходящий обзвон.
Платформа Эра предоставляет гибкий функционал по их настройке, использованию и наполнению, позволяющий реализовать исходящие кампании любого уровня сложности.
Для хранения таблиц абонентов в платформе используются объекты класса 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 (Персональный оператор) | RootUser | Вызов контрагента может обслужить только персональный оператор |
| 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. Он позволяет просматривать таблицу абонентов по каждой кампании и добавлять в неё новые записи.

В данном разделе можно осуществлять ручной обзвон по таблице абонентов (используя действия карточки абонента), производить групповые операции над данными в таблице абонентов, а также производить импорт и экспорт данных (будет рассмотрен далее).
Обращаем внимание, что если для кампании используется дочерний класс Contragent, отличный от класса SimpleContragent, то дополнительные поля выведены не будут. В таком случае, необходимо в собственном приложении вывести реестр данных этого класса.
Импорт из 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-запросов и создания ключей доступа описаны в соответствующей статье.
Применение таблиц абонентов
Таблицу абонентов можно привязать к конкретной исходящей кампании в приложении "Исходящие кампании".