Боты
Бот — технический пользователь Pyrus, который не работает через веб- или мобильное приложение, а обрабатывает задачи автоматически. Когда задача попадает к боту, Pyrus отправляет POST-запрос на адрес обработчика, указанный в настройках бота, и выполняет действия, которые вернул обработчик. Подробнее о том, как устроены боты, читайте в справке.
С помощью методов этого раздела можно получать список ботов организации, создавать, изменять и удалять ботов, не заходя в веб-интерфейс Pyrus. Например, так удобно разворачивать одинаковых ботов в нескольких организациях или управлять ботами из внешней системы.
Обратите внимание: для вызова методов нужен токен пользователя с правом Управляющий интеграциями (Управление интеграциями и справочниками). Изменять существующего бота может также его администратор.
Все методы раздела возвращают объект бота в формате, описанном ниже.
Методы
- GET/
botsПолучение списка ботов организации - POST/
botsСоздание бота - PUT/
bots/ {id}Изменение бота - DELETE/
bots/ {id}Удаление бота
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_enabled | true — включить бота, 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 | Обязательный параметр. Идентификатор сотрудника, которому будут переданы задачи бота. Нельзя указать роль или удалённого сотрудника. |