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

Запуск служебных сценариев: различия между версиями

Материал из Платформа Эра. Документации
Нет описания правки
 
(не показано 5 промежуточных версий этого же участника)
Строка 19: Строка 19:


= Запуск служебного сценария из кода =
= Запуск служебного сценария из кода =
Для запуска служебного сценария с помощью кода существует метод ''ServiceScript_execute'' в базовом сервисе ''EraConnectorService.''
Пример вызова сервиса в серверном Action'е:<syntaxhighlight lang="typescript">
var result = await this.invoke(
'callcenter.EraConnectorService',
'ServiceScript_execute',
{ code: 'test01', startparam1: entity.name });
if (result.state === EInvocationState.success)
entity.address = result.response?.variables?.var;
</syntaxhighlight>В параметрах вызова задается объект с кодом сценария, а также опциональным набором параметров startparam1 - startparam9.
В примере, в качестве переменной Entity используется текущая запись, по отношению к которой совершается действие (Action)
= Запуск служебного сценария из обработчика класса =
[[Файл:Обработчик - запуск сценария.png|мини|Обработчик - запуск сценария]]
Обработчик (Handler) событий класса, при возникновении определенного события, запускать служебный сценарий.
Для запуска служебного сценария необходимо создать обработчик, указать имя класса, выбрать тип операции, на которую он будет запускаться, в качестве действия обработчика ('''actionKind''') необходимо выбрать ''svcScenario'' и указать код служебного сценария для запуска.
Работе с обработчиками будет посвящена отдельная статья курса.


= Запуск служебного сценария через API =
= Запуск служебного сценария через API =
Служебный сценарий может быть запущен с помощью API.
Для этого существует базовый сервис /rest/v1/service/svcscript_runtimes
Для запуска сценария, необходимо выполнить POST-запрос к данному сервису, передав код служебного сценария и набор параметров от startparam1 до startparam9 (параметры являются опциональными):<syntaxhighlight lang="http">
POST /rest/v1/service/svcscript_runtimes HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "code": "123",
  "startparam1": "test",
  "startparam2": "test2"
}
</syntaxhighlight>В качестве ответа будет возвращен идентификатор запущенного сценария, а также информация о сайте, на котором он был запущен:<syntaxhighlight lang="http">
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "id": "b7f4ad2f-0624-e7dd-42f5-d000000003e8",
  "site": "SITE1",
  "node": "site1_c@192.168.0.12",
  "domain": "test.rootdomain.ru",
  "type": "svc",
  "code": "123"
}
</syntaxhighlight>Детальное описание сервисов по работе со сценариями можно найти на [https://vendor.era-platform.ru/docs/era/latest/api/rest/v1/service/svcscript_runtimes.html ресурсе Vendor].


= Запуск служебного сценария с помощью вебхука =
= Запуск служебного сценария с помощью вебхука =
[[Файл:Канал интеграции.png|мини|Канал интеграции]]
Служебные сценарии могут использоваться для обработки запросов (HTTP и WS) в '''каналах интеграции'''.
Каналы интеграции доступны в приложении Настройки, в разделе Прочее.
Детальную информацию о работе каналов интеграции можно найти на [https://vendor.era-platform.ru/docs/era/latest/entities/service/integration_point.html ресурсе Vendor].
Канал интеграции в основном определяет точку обработки HTTP(s) веб-хуков, поступающих из внешних систем, а также точку для websocket подключения с предопределенными правами.
В отдельных случаях канал интеграции определяет URL внешней системы для отправки в нее HTTP запросов из сценариев.
Поддерживает потоковую асинхронную обработку сообщений, поступающих из websocket-подключений, и отправку в них ответных сообщений, а также событий.
Поддерживает создание проектных API с помощью служебных сценариев.
Websocket-подключение к каналу интеграции производится с указанием token_local непосредственно в URL или в заголовке Authorization. Подробнее.
Http(s)-подключение к каналу интеграции производится с указанием token_local. Используется для обращения к проектным API, а также для скачивания записей разговоров, вебхуков от мессенджеров.
Могут быть постоянными и временными. Для временных необходимо задать дату и время до которого канал интеграции будет активен. При превышении даты активности система автоматически переведет канал интеграции в состояние просрочен.
Поведение канала интеграции определяется его типом:
{| class="wikitable"
|+Типы канала интеграции
!Значение
!Описание
|-
|Общий (public)
|Канал интеграции общего назначения. Применяется при:
* отправке HTTP-запросов из сценариев в доменах с типами, имеющими ограничения по выбору URL в компоненте ''"Веб-запрос"''. Конечный URL вычисляется путем сцепления значения поля ''url'' выбранного канала интеграции, символа <code>/</code> и указанной страницы.
* получении входящих HTTP-запросов от произвольных отправителей с использованием ''token_local''. В этом случае запускается сценарий ''recv_svcscriptcode''. В частности при получении сообщений для чат-сессий.
* создании собственного внутреннего API в служебных сценариях на протоколах HTTP и websocket. Применяются значения полей ''recv_svcscriptcode'', ''recv_svcscriptcode_ws'', ''url'' и ''token_local'', а также компонента ''"Отправка вебсокет-сообщения"''.
* отправки сообщений из сценариев чат-ботов в канал. Применяются поля ''send_svcscriptcode'', ''send_svcscriptcode_ws''.
|-
|Подписчик (subscr)
|Канал интеграции для подписчиков на события системы.
Поддерживает подписку по протоколам HTTP и Websocket.
В первом случае отправка событий производится веб-хуками по адресу, указанному в запросе подписки, либо по адресу ''url''.
Во втором случае отправка событий производится обратно в websocket-подключение.
В каждый канал интеграции вне зависимости от количества подключений и подписок, каждое событие отправляется не более 1 раза.
Поля ''recv_svcscriptcode'', ''recv_svcscriptcode_ws'', ''send_svcscriptcode'' и ''send_svcscriptcode_ws'' не используются.
|-
|Мессенджер (im)
|Канал интеграции для вебхуков из мессенджеров. Поступающие сообщения на страницу веб-сервера '/api/im/v1/:TOKEN' пересылаются в сервис обслуживания im-аккаунтов.
Поля ''url'', ''recv_svcscriptcode'', ''recv_svcscriptcode_ws'', ''send_svcscriptcode'' и ''send_svcscriptcode_ws'' не используются.
|}
Для использования служебных сценариев необходимо использовать '''общий режим'''.
Для каждого канала интеграции доступен выбор 4 служебных сценариев:
* Обработка входящего HTTP запроса (Входящий HTTP)
* Обработка входящего WS запроса (Входящий WS)
* Обработка исходящего HTTP запроса (Исходящий HTTP)
* Обработка исходящего WS запроса (Исходящий WS)
Также, в канале интеграции задается набор ролей, требуемых для доступа к этому каналу при авторизации пользователя через iam
В поле Пользователь (opts.userid) также определяется идентификатор пользователя системы, от имени которого будут выполняться запросы. Применяются также роли этого пользователя.


= Запуск служебного сценария по расписанию =
= Запуск служебного сценария по расписанию =
Для запуска служебных сценариев по расписанию служит специальная сущность - '''Служебная задача'''.
[[Файл:Служебная задача.png|мини|Служебная задача]]
Служебные задачи доступны в приложении Настройки, в разделе Сценарии.
Каждая задача хранит в себе параметры запуска сценариев:
* Признак активности (включена)
* Код служебного сценария для запуска
* Режим обслуживания на сайтах (при распределенной архитектуре)
* Список допустимых сайтов (опционально, при распределенной архитектуре)
* Режим запуска (однократный, регулярный)
* Разрешить параллельное выполнение
* Интервал запуска
* Начало и окончание периода активности
* Время действия (всегда, рабочее/нерабочее время, расписание)
* Расписание времени действия
Если задача активна, то сценарий будет запускаться автоматически с заданным интервалом, на всех или выбранных сайтах, в выбранное время действия.


= Запуск служебного сценария для обработки событий звонка =
= Запуск служебного сценария для обработки событий звонка =

Текущая версия от 12:23, 3 марта 2025

Предыдущая статья курса: Компоненты работы с данными

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

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

  • при поступлении HTTP-запроса к проектному API (использование сервисов)
  • из кода приложений
  • при поступлении веб-хука в канал интеграции;
  • компонентом Запуск сценария из других служебных и IVR сценариев;
  • по расписанию служебной задачей;
  • в виде контекстного сценария звонка для обработки событий звонка – запускается при поступлении звонка и может быть активным вплоть до его завершения;
  • сервисом управления звонками с целью инициации исходящих вызовов от SIP-UAC IVR;
  • в различных точках бизнес-процессов, предполагающих проектную кастомизацию – стратегии.

Алгоритм работы каждого сценария описываются сущностью svcscript.

Исполняется ролью svc на одном из сайтов, обслуживающих домен.

Запуск служебного сценария из кода

Для запуска служебного сценария с помощью кода существует метод ServiceScript_execute в базовом сервисе EraConnectorService.

Пример вызова сервиса в серверном Action'е:

var result = await this.invoke(
 'callcenter.EraConnectorService',
 'ServiceScript_execute',
 { code: 'test01', startparam1: entity.name });
 if (result.state === EInvocationState.success)
 entity.address = result.response?.variables?.var;

В параметрах вызова задается объект с кодом сценария, а также опциональным набором параметров startparam1 - startparam9.

В примере, в качестве переменной Entity используется текущая запись, по отношению к которой совершается действие (Action)

Запуск служебного сценария из обработчика класса

Обработчик - запуск сценария

Обработчик (Handler) событий класса, при возникновении определенного события, запускать служебный сценарий.

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

Работе с обработчиками будет посвящена отдельная статья курса.

Запуск служебного сценария через API

Служебный сценарий может быть запущен с помощью API.

Для этого существует базовый сервис /rest/v1/service/svcscript_runtimes

Для запуска сценария, необходимо выполнить POST-запрос к данному сервису, передав код служебного сценария и набор параметров от startparam1 до startparam9 (параметры являются опциональными):

POST /rest/v1/service/svcscript_runtimes HTTP/1.1
Content-Type: application/json; charset=utf-8

{
  "code": "123",
  "startparam1": "test",
  "startparam2": "test2"
}

В качестве ответа будет возвращен идентификатор запущенного сценария, а также информация о сайте, на котором он был запущен:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "id": "b7f4ad2f-0624-e7dd-42f5-d000000003e8",
  "site": "SITE1",
  "node": "site1_c@192.168.0.12",
  "domain": "test.rootdomain.ru",
  "type": "svc",
  "code": "123"
}

Детальное описание сервисов по работе со сценариями можно найти на ресурсе Vendor.

Запуск служебного сценария с помощью вебхука

Канал интеграции

Служебные сценарии могут использоваться для обработки запросов (HTTP и WS) в каналах интеграции.

Каналы интеграции доступны в приложении Настройки, в разделе Прочее.

Детальную информацию о работе каналов интеграции можно найти на ресурсе Vendor.

Канал интеграции в основном определяет точку обработки HTTP(s) веб-хуков, поступающих из внешних систем, а также точку для websocket подключения с предопределенными правами.

В отдельных случаях канал интеграции определяет URL внешней системы для отправки в нее HTTP запросов из сценариев.

Поддерживает потоковую асинхронную обработку сообщений, поступающих из websocket-подключений, и отправку в них ответных сообщений, а также событий.

Поддерживает создание проектных API с помощью служебных сценариев.

Websocket-подключение к каналу интеграции производится с указанием token_local непосредственно в URL или в заголовке Authorization. Подробнее.

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

Могут быть постоянными и временными. Для временных необходимо задать дату и время до которого канал интеграции будет активен. При превышении даты активности система автоматически переведет канал интеграции в состояние просрочен.

Поведение канала интеграции определяется его типом:

Типы канала интеграции
Значение Описание
Общий (public) Канал интеграции общего назначения. Применяется при:
  • отправке HTTP-запросов из сценариев в доменах с типами, имеющими ограничения по выбору URL в компоненте "Веб-запрос". Конечный URL вычисляется путем сцепления значения поля url выбранного канала интеграции, символа / и указанной страницы.
  • получении входящих HTTP-запросов от произвольных отправителей с использованием token_local. В этом случае запускается сценарий recv_svcscriptcode. В частности при получении сообщений для чат-сессий.
  • создании собственного внутреннего API в служебных сценариях на протоколах HTTP и websocket. Применяются значения полей recv_svcscriptcode, recv_svcscriptcode_ws, url и token_local, а также компонента "Отправка вебсокет-сообщения".
  • отправки сообщений из сценариев чат-ботов в канал. Применяются поля send_svcscriptcode, send_svcscriptcode_ws.
Подписчик (subscr) Канал интеграции для подписчиков на события системы.

Поддерживает подписку по протоколам HTTP и Websocket.

В первом случае отправка событий производится веб-хуками по адресу, указанному в запросе подписки, либо по адресу url.

Во втором случае отправка событий производится обратно в websocket-подключение.

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

Поля recv_svcscriptcode, recv_svcscriptcode_ws, send_svcscriptcode и send_svcscriptcode_ws не используются.

Мессенджер (im) Канал интеграции для вебхуков из мессенджеров. Поступающие сообщения на страницу веб-сервера '/api/im/v1/:TOKEN' пересылаются в сервис обслуживания im-аккаунтов.

Поля url, recv_svcscriptcode, recv_svcscriptcode_ws, send_svcscriptcode и send_svcscriptcode_ws не используются.

Для использования служебных сценариев необходимо использовать общий режим.

Для каждого канала интеграции доступен выбор 4 служебных сценариев:

  • Обработка входящего HTTP запроса (Входящий HTTP)
  • Обработка входящего WS запроса (Входящий WS)
  • Обработка исходящего HTTP запроса (Исходящий HTTP)
  • Обработка исходящего WS запроса (Исходящий WS)

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

В поле Пользователь (opts.userid) также определяется идентификатор пользователя системы, от имени которого будут выполняться запросы. Применяются также роли этого пользователя.

Запуск служебного сценария по расписанию

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

Служебная задача

Служебные задачи доступны в приложении Настройки, в разделе Сценарии.

Каждая задача хранит в себе параметры запуска сценариев:

  • Признак активности (включена)
  • Код служебного сценария для запуска
  • Режим обслуживания на сайтах (при распределенной архитектуре)
  • Список допустимых сайтов (опционально, при распределенной архитектуре)
  • Режим запуска (однократный, регулярный)
  • Разрешить параллельное выполнение
  • Интервал запуска
  • Начало и окончание периода активности
  • Время действия (всегда, рабочее/нерабочее время, расписание)
  • Расписание времени действия

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

Запуск служебного сценария для обработки событий звонка

Запуск служебного сценария для инициализации исходящих вызовов

Следующая статья курса: Задание 7. Создание служебного сценария
Предыдущая статья курса: Компоненты работы с данными