Коробочная версия. Запуск сценария из внешних систем и других приложений Битрикс24

Коробочные модули конструктора чат-ботов Zabotix позволяют запускать сценарии из внешних систем и даже других приложений Битрикс24. Для этого добавлены собственные методы в REST API Битрикс24. 
Доступно только при использовании коробочных модулей конструктора.
Коробочный модуль чат-ботов для сотрудников - с версии 1.0.10
Коробочный модуль чат-ботов для открытых линий - с версии 1.0.13
Для доступа к методу необходимо назначить право в соответтсвии с модулем:
  • Конструктор чат-ботов Zabotix (itees:chatbots) - Для ОЛ
  • Чат-боты для сотрудников. Zabotix (itees:zabotixintranet) - Для интранета





Название метода в зависимости от модуля:
- itees:chatbots.script.node.run - Для Ол
- itees:zabotixintranet.script.node.run - Для интранета








ID сценария можно получить в списке сценариев




Номер узла можно получить при редактировании узла, он будет указан справа от названия.






Параметры методов, как и во всём rest Битрикса - регистрочувствительные. Если написано с большой буквы, так и надо указывать.

Параметры метода (для ОЛ):
- SCRIPT_ID - ID сценария. Сценарий в котором находится нужный узел. Обязательно, можно найти в списке сценариев.
- NODE_ID - ID узла. Номер узла, который нужно запустить. Обязательно, можно найти в карточке редактирования узла.
- CHAT_ID - ID чата. ID чата (не номер!), в котором нужно запустить узел. Данный параметр обязателен только в том случае, если не указан параметр ENTITY_ID.
- ENTITY_TYPE - Тип сущности. Тип crm-сущности к которой привязан чат (LEAD/DEAL/COMPANY/CONTACT/CRM). Обязательно, если не указан параметр CHAT_ID и если ENTITY_ID содержит только ID сущности.
- ENTITY_ID - ID сущности. ID crm-сущности к которой привязан чат. Это может быть как просто ID (число), так и Тип + ID (прим, DEAL_1893), если указывается вместе с типом, то можно не указывать ENTITY_TYPE отдельно. Обязательно, если не указан параметр CHAT_ID.
- CHECK_OPERATOR - Проверять наличие оператора в чате и не запускать, если оператор в чате. По умолчанию включено. Y - не запускать (т.е. проверять), N - запускать (т.е. не проверять).
Пример 1:
{
   SCRIPT_ID: 4589
   NODE_ID: 5,
   CHAT_ID: 456,
   CHECK_OPERATOR: "N"
}

Пример 2:
{
   SCRIPT_ID: 4589
   NODE_ID: 5,
   ENTITY_TYPE: "DEAL",
   ENTITY_ID: 1893,
   CHECK_OPERATOR: "N"
}

Пример 4:
{
   SCRIPT_ID: 4589
   NODE_ID: 5,
   ENTITY_ID: "DEAL_1893",
   CHECK_OPERATOR: "N"
}


Параметры метода (для интранета):
- SCRIPT_ID - ID сценария. Сценарий в котором находится нужный узел. Обязательно, можно найти в списке сценариев.
- NODE_ID - ID узла. Номер узла, который нужно запустить. Обязательно, можно найти в карточке редактирования узла.
- USER_ID - ID пользователя. ID пользователя, которому нужно запустить узел. Может быть множественным, для этого ID пользователей нужно указать в массиве. Обязательно.
- USER_SCRIPT - Изолированный чат. По умолчанию включено. Y - изолированный, N - не изолированный. В случае изолированного чата скрипт будет запущен в отдельном чате, иначе в личном чате бота с пользователем.
- FROM_USER - ID пользователя от имени которого будет запущен узел. Не множественное. Обязательно.
Пример 1:
{
   SCRIPT_ID: 4589
   NODE_ID: 5,
   USER_ID: 1232,
   USER_SCRIPT: "Y",
   FROM_USER: 132
}

Пример 2:
{
   SCRIPT_ID: 4589
   NODE_ID: 5,
   USER_ID: [1232, 1254, 1324],
   USER_SCRIPT: "Y",
   FROM_USER: 132
}



В случае не указания параметра или отсутствия нужного узла метод выдаст соответствующую ошибку, в обычном формате rest Битрикса (код ошибки и описание).
Если в случае ОЛ нее удалось найти привязанный чат, метод также возвращает ошибку.

В случае успеха метод возвращает ответ в следующем формате.

Для ол:
{
   ID чата: {
      result: Результат,
      error: Ошибка
   }
}

Т.е. это массив с ключами в виде ID чатов в которых был запущен узел (т.к. в случае указания ENTITY_ID к нему может быть привязано несколько чатов и результат у всех может быть разным).
Результат - это либо true в случае успеха, либо false в случае неудачи.
Ошибка - это либо false при отсутсвии ошибки, либо описание ошибки при её наличии. Например, наличие оператора при CHECK_OPERATOR = Y будет ошибкой.


Для интранета:
{
   ID пользователя: {
      result: Результат,
      error: Ошибка
   }
}

Т.е. это массив с ключами в виде ID пользователей для которых был запущен узел (т.к. метод поддерживает множественность ID пользователей).
Результат - это либо true в случае успеха, либо false в случае неудачи.
Ошибка - это либо false при отсутсвии ошибки, либо описание ошибки при её наличии. Например, отсутсвие пользователя будет ошибкой.

Метод доступен как в приложениях, так и в вебхуках.