Боты

Облачный Pyrus
Безоблачный Pyrus

Бот — технический пользователь Pyrus, который не работает через веб- или мобильное приложение, а обрабатывает задачи автоматически. Когда задача попадает к боту, Pyrus отправляет POST-запрос на адрес обработчика, указанный в настройках бота, и выполняет действия, которые вернул обработчик. Подробнее о том, как устроены боты, читайте в справке.

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

Обратите внимание: для вызова методов нужен токен пользователя с правом Управляющий интеграциями (Управление интеграциями и справочниками). Изменять существующего бота может также его администратор.

Все методы раздела возвращают объект бота в формате, описанном ниже.

Методы

GET /bots

Метод возвращает список ботов организации. По умолчанию удалённые боты в список не попадают — чтобы получить и их, передайте параметр include_fired=true.

GET https://api.pyrus.com/v4/bots?include_fired=false

Тело ответа

{
  "bots": [
    {
      "id": 1234567,
      "name": "Support bot",
      "is_enabled": true,
      "hook_url": "https://example.com/pyrus-hook",
      "description": "Отвечает на обращения клиентов",
      "bot_settings": "{\"mode\":\"prod\"}",
      "version": 4,
      "login": "bot@8f1b0c1e-3f7a-4d2b-9d7e-2b1f3a9c6e11",
      "external_id": "crm-42",
      "send_only_last_comment": false,
      "time_zone_offset": 180,
      "locale": "ru-RU",
      "avatar_id": 98765
    }
  ]
}

curl

curl -X GET \
  'https://api.pyrus.com/v4/bots?include_fired=false' \
  -H 'Authorization: Bearer <YOUR_ACCESS_TOKEN>'

Параметры

include_firedВключать ли в список удалённых ботов: true — включать, false — не включать. По умолчанию false.

Поля ответа

Объект бота имеет одинаковый формат во всех методах раздела. Пустые поля в ответе не возвращаются.

idИдентификатор бота.
codeКод бота. Возвращается, только если задан.
nameИмя бота.
is_enabledВключён ли бот. Отключённый бот не получает событий, пока его снова не включат.
hook_urlАдрес обработчика событий бота. На этот адрес Pyrus отправляет POST-запрос, когда задача попадает к боту.
descriptionОписание бота.
bot_settingsНастройки бота — произвольная строка, например текст сообщения или JSON-объект. Pyrus передаёт её обработчику вместе с каждым событием, поэтому один и тот же обработчик может вести себя по-разному в зависимости от настроек.
versionВерсия протокола, по которому Pyrus взаимодействует с обработчиком бота.
loginЛогин бота. Используется для авторизации бота в API.
external_idВнешний идентификатор бота, например идентификатор в вашей системе.
send_only_last_commentПередавать ли обработчику только последний комментарий задачи: true — только последний, false — все комментарии.
time_zone_offsetЧасовой пояс бота — смещение от UTC в минутах. Возвращается, только если задан.
localeЛокаль бота, например ru-RU. От неё зависят некоторые форматы дат.
avatar_idИдентификатор аватара бота. Возвращается, только если задан.
external_avatar_idВнешний идентификатор аватара бота. Возвращается, только если задан.
firedУдалён ли бот. Возвращается только для удалённых ботов со значением true.

POST /bots

Метод создаёт бота в организации пользователя и возвращает его.

Новый бот сразу включён. Локаль бота совпадает с локалью пользователя, который его создал. Описание, настройки, часовой пояс, локаль и другие параметры можно задать после создания методом PUT /bots/{id}.

POST https://api.pyrus.com/v4/bots

Тело запроса

{
  "name": "Support bot",
  "hook_url": "https://example.com/pyrus-hook",
  "external_id": "crm-42"
}

Тело ответа

{
  "id": 1234567,
  "name": "Support bot",
  "is_enabled": true,
  "hook_url": "https://example.com/pyrus-hook",
  "version": 4,
  "login": "bot@8f1b0c1e-3f7a-4d2b-9d7e-2b1f3a9c6e11",
  "external_id": "crm-42",
  "send_only_last_comment": false,
  "locale": "ru-RU"
}

curl

curl -X POST \
  https://api.pyrus.com/v4/bots \
  -H 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Support bot",
    "hook_url": "https://example.com/pyrus-hook",
    "external_id": "crm-42"
  }'

Параметры

nameОбязательный параметр. Имя бота. Не должно начинаться или заканчиваться пробелом, содержать спецсимволы и ссылки.
hook_urlАдрес обработчика событий бота. Адрес должен начинаться с https://, а обработчик — отвечать на POST-запросы. Если адрес не прошёл проверку, бот всё равно будет создан, но без hook_url: задать адрес можно позже методом PUT /bots/{id}.
external_idВнешний идентификатор бота, например его идентификатор в вашей системе.

PUT /bots/{id}

Метод изменяет настройки бота и возвращает бота с учётом изменений. В запросе передавайте только те параметры, которые нужно изменить, — остальные останутся прежними.

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

PUT https://api.pyrus.com/v4/bots/1234567

Тело запроса

{
  "name": "Support bot v2",
  "hook_url": "https://example.com/pyrus-hook-v2",
  "is_enabled": true,
  "bot_settings": "{\"mode\":\"prod\"}",
  "description": "Отвечает на обращения клиентов",
  "send_only_last_comment": true,
  "time_zone_offset": 180,
  "locale": "ru"
}

Тело ответа

{
  "id": 1234567,
  "name": "Support bot v2",
  "is_enabled": true,
  "hook_url": "https://example.com/pyrus-hook-v2",
  "description": "Отвечает на обращения клиентов",
  "bot_settings": "{\"mode\":\"prod\"}",
  "version": 4,
  "login": "bot@8f1b0c1e-3f7a-4d2b-9d7e-2b1f3a9c6e11",
  "external_id": "crm-42",
  "send_only_last_comment": true,
  "time_zone_offset": 180,
  "locale": "ru-RU"
}

curl

curl -X PUT \
  https://api.pyrus.com/v4/bots/1234567 \
  -H 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{
    "is_enabled": false,
    "description": "Временно отключён"
  }'

Параметры

idОбязательный параметр. Идентификатор бота, передаётся в URL.
nameНовое имя бота. Ограничения те же, что и при создании.
hook_urlНовый адрес обработчика событий бота. Должен начинаться с https://.
is_enabledtrue — включить бота, false — отключить.
bot_settingsНастройки бота — строка, которую Pyrus передаёт обработчику вместе с каждым событием.
descriptionОписание бота.
send_only_last_commentПередавать ли обработчику только последний комментарий задачи. Это поможет сократить объём передаваемых данных, если в задачах много комментариев.
time_zone_offsetЧасовой пояс бота — смещение от UTC в минутах, от -720 до 840. Например, 180 соответствует UTC+3.
localeЛокаль бота: короткий (ru, en) или полный (ru-RU, en-US) код языка.

DELETE /bots/{id}

Метод удаляет бота из организации и возвращает его с полем "fired": true. Задачи, в которых участвовал бот, передаются сотруднику, указанному в запросе.

DELETE https://api.pyrus.com/v4/bots/1234567

Тело запроса

{
  "task_receiver_id": 7654321
}

Тело ответа

{
  "id": 1234567,
  "name": "Support bot",
  "is_enabled": true,
  "hook_url": "https://example.com/pyrus-hook",
  "version": 4,
  "login": "bot@8f1b0c1e-3f7a-4d2b-9d7e-2b1f3a9c6e11",
  "external_id": "crm-42",
  "send_only_last_comment": false,
  "locale": "ru-RU",
  "fired": true
}

curl

curl -X DELETE \
  https://api.pyrus.com/v4/bots/1234567 \
  -H 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{
    "task_receiver_id": 7654321
  }'

Параметры

idОбязательный параметр. Идентификатор бота, передаётся в URL.
task_receiver_idОбязательный параметр. Идентификатор сотрудника, которому будут переданы задачи бота. Нельзя указать роль или удалённого сотрудника.

Была ли эта статья полезной?