Дополнительные действия
AZykov (обсуждение | вклад) |
AZykov (обсуждение | вклад) Нет описания правки |
||
Строка 79: | Строка 79: | ||
Предыдущая статья курса: ''[[Задание 5. Сложная карточка]]'' | Предыдущая статья курса: ''[[Задание 5. Сложная карточка]]'' | ||
[[Категория:Курс "Разработка приложений"]] |
Текущая версия от 14:06, 10 февраля 2025
Предыдущая статья курса: Задание 5. Сложная карточка
Общая информация
Для обеспечения работы со звонками в приложениях, платформа эра предоставляет набор широкий функционала:
- Тип данных RecordingInfo для хранения информации о записи звонка
- Метод playRecordedFile для воспроизведения записи
- Функционал карточки очереди для передачи данных из контекста звонка в контекст приложения
- Функционал IVR-сценариев для построения логики работы вызовов
- Тип данных PhoneNumber для осуществления звонков по клику на номер телефона
В рамках данной статьи, рассматриваются все дейтсвия, необходимые для полноценной интеграции звонок в приложение.
Хранение информации о звонке в данных класса
В первую очередь, для начала работы с записью разговора необходимо в какой-либо из классов (наиболее подходящий по смыслу), добавить свойство для хранения информации о ней.
Для хранения информации о записи разговора, используется специализированный тип данных, входящий в пакет callcenter:
callcenter/ccs/RecordInfo
Обычно, привязка записей разговора осуществляется к специально созданному классу Звонки, объекты которого уже имеют связи с другими классами приложения.
Таким образом, запись будет доступна и в реестре всех звонков, и в карточке звонка, и в реестре звонков, связанных с другим классом (например звонки по конкретной заявке).
В примерах далее, будем считать что в класс Call было добавлено свойство recordInfo.
Воспроизведение записи звонка в интерфейсе

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

Для добавления нового действия, необходимо в редакторе класса перейти во вкладку 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-сценариев можно найти в данной статье.
Альтернативный вариант сохранения данных о записи представлен в следующем пункте, однако он не является универсальным.
- Необходимо добавить в IVR-сценарии компонент записи разговора, сохранив путь к результирующему файлу в переменную path
- Сформировать в переменной link новое имя файла в хранилище домена с помощью формулы:
ss_domain() + "/documents/" + dateformat("yyyy-MM-dd", nowutc()) + "/" + filename([path]):
- Скопировать файл из временной папки сервера IVR в глобальную папку домена с помощью компонента "Файловая операция"
- Создать сущность класса Call с помощью компонента "Операция"
Теперь поле recordInfo будет содержать достаточную для прослушивания файла информацию независимо от способа создания сущности – из карточки обращения очереди или из сценария IVR.
Сохранение данных о звонке с помощью карточки очереди
В рамках функциональности контакт-центра в рамках платформы эра предоставляется настройка отображения карточки, которая будет открываться в интерфейсе оператора при каждом новом звонке. Данный функционал можно использовать для того, чтобы перенести данные о записи разговора из контекста звонка в контекст приложения.

Функционал контакт-центра детально рассмотрен в соответствующем курсе, в рамках данного блока будет представлен только пример передачи необходимой информации в карточку звонка. Для того чтобы функционал можно было настроить - необходимо создать очередь звонков.
Для того, чтобы открыть карточку объекта Call, необходимо в настройках очереди, на вкладке Обработка, в группе Карточка вызова указать Адрес (URL) по следующему шаблону:
/ui/MyPackageName/Call?mode=add&values={"recordInfo": [recordInfo]}
Где MyPackageName/Call это fullName объекта Call
После сохранения изменений, при поступлении звонка из этой очереди, будет автоматически открываться карточка объекта Call в режиме добавления, а поле recordInfo будет заполнено автоматически.
Функционал Click-To-Call

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