Открыть меню
Платформа Эра. Документация
Toggle preferences menu
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

Привязка записей разговора

Материал из Платформа Эра. Документации
Версия от 14:06, 10 февраля 2025; AZykov (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Предыдущая статья курса: Задание 5. Сложная карточка

Общая информация

Для обеспечения работы со звонками в приложениях, платформа эра предоставляет набор широкий функционала:

  • Тип данных RecordingInfo для хранения информации о записи звонка
  • Метод playRecordedFile для воспроизведения записи
  • Функционал карточки очереди для передачи данных из контекста звонка в контекст приложения
  • Функционал IVR-сценариев для построения логики работы вызовов
  • Тип данных PhoneNumber для осуществления звонков по клику на номер телефона


В рамках данной статьи, рассматриваются все дейтсвия, необходимые для полноценной интеграции звонок в приложение.

Хранение информации о звонке в данных класса

В первую очередь, для начала работы с записью разговора необходимо в какой-либо из классов (наиболее подходящий по смыслу), добавить свойство для хранения информации о ней.

Для хранения информации о записи разговора, используется специализированный тип данных, входящий в пакет callcenter:

callcenter/ccs/RecordInfo

Обычно, привязка записей разговора осуществляется к специально созданному классу Звонки, объекты которого уже имеют связи с другими классами приложения.

Таким образом, запись будет доступна и в реестре всех звонков, и в карточке звонка, и в реестре звонков, связанных с другим классом (например звонки по конкретной заявке).

В примерах далее, будем считать что в класс Call было добавлено свойство recordInfo.

Воспроизведение записи звонка в интерфейсе

Вкладка Actions

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

Ранее в курсе ещё не использовались действия, так как они подразумевают написание полноценного кода для обработки, однако в данном примере достаточно лишь скопировать уже готовый код. Более подробно, механизм дейтсвий будет рассмотрен в дальнейших частях курса.

Действие playRecorded

Для добавления нового действия, необходимо в редакторе класса перейти во вкладку Actions и добавить новую запись.

Имя действия (name) можно указать произвольное, например playRecorded, заголовок (Caption) - просшулать, actionKind - client, actionTarget - entity

Таким образом мы создаем действие, которое будет выполняться на клиентской стороне и по отношению к конкретному объекту (при открытой карточке или выделенной записи в таблице).

В качестве кода действия, необходимо указать следующий:

this._eraEnvironment.getStrong('EraGlobal').playRecordedFile(this.recordInfo);

В данном коде происходит получение глобального контекста и вызов метода playRecordedFile, с передачей в него данных о сохраненной записи разговора. В качестве кода проверки доступности (allowConditionCode), необходимо указать следующий:

!Converter.isNull(this.recordInfo):

Этим кодом мы проверяем, что информация о записи разговора сохранена. Таким образом, для звонков у которых ещё нет записи разговора, действие прослушки будет недоступно.

Передача данных о звонке из сценариев IVR

Работе со сценариями IVR и другими компонентами коммуникационного слоя посвящен курс IP-АТС.

В данном пункте мы лишь кратко рассмотрим логику необходимых дейтсвий для сохранения записи разговора и передачи информации о ней в продуктовый слой. Дополнительную справку по всем элементам IVR-сценариев можно найти в данной статье.

Альтернативный вариант сохранения данных о записи представлен в следующем пункте, однако он не является универсальным.

  1. Необходимо добавить в IVR-сценарии компонент записи разговора, сохранив путь к результирующему файлу в переменную path
  2. Сформировать в переменной link новое имя файла в хранилище домена с помощью формулы:
    ss_domain() + "/documents/" + dateformat("yyyy-MM-dd", nowutc()) + "/" + filename([path]):
  3. Скопировать файл из временной папки сервера IVR в глобальную папку домена с помощью компонента "Файловая операция"
  4. Создать сущность класса Call с помощью компонента "Операция"

Теперь поле recordInfo будет содержать достаточную для прослушивания файла информацию независимо от способа создания сущности – из карточки обращения очереди или из сценария IVR.

Сохранение данных о звонке с помощью карточки очереди

В рамках функциональности контакт-центра в рамках платформы эра предоставляется настройка отображения карточки, которая будет открываться в интерфейсе оператора при каждом новом звонке. Данный функционал можно использовать для того, чтобы перенести данные о записи разговора из контекста звонка в контекст приложения.

Установка ссылки на карточку в очереди

Функционал контакт-центра детально рассмотрен в соответствующем курсе, в рамках данного блока будет представлен только пример передачи необходимой информации в карточку звонка. Для того чтобы функционал можно было настроить - необходимо создать очередь звонков.

Для того, чтобы открыть карточку объекта Call, необходимо в настройках очереди, на вкладке Обработка, в группе Карточка вызова указать Адрес (URL) по следующему шаблону:

/ui/MyPackageName/Call?mode=add&values={"recordInfo": [recordInfo]}

Где MyPackageName/Call это fullName объекта Call

После сохранения изменений, при поступлении звонка из этой очереди, будет автоматически открываться карточка объекта Call в режиме добавления, а поле recordInfo будет заполнено автоматически.

Функционал Click-To-Call

Эдитор PhoneNumber

Для обеспечения возможности совершать звонок одним кликом мыши в пакете callcenter создан редактор callcenter/PhoneNumber. Если его выбрать для строкового поля, в таблице будут отображаться гиперссылки с возможностью совершить исходящий звонок.


Следующая статья курса: Задание 6. Интеграция звонков в карточку
Предыдущая статья курса: Задание 5. Сложная карточка