Перейти к основному содержимому

Slash-команды

Slash-команда — это сообщение, которое начинается с /, например /weather москва. Loop отправляет HTTP-запрос в ваш сервис и публикует его ответ. В интерфейсе Loop такие команды называются быстрыми командами.

  • Работают в любых каналах: публичных, частных и в личных сообщениях — в отличие от исходящих вебхуков.
  • Поддерживают автодополнение: при вводе / появляется список команд с подсказками по аргументам.
  • В Loop есть встроенные команды, а также можно создать собственные.

Советы​

  1. Slash-команды удобны для отправки сообщений. Для других действий — например, создания канала — вызывайте из своего сервиса REST API.
  2. Максимальная длина сообщения — 16 383 символа. Чтобы ответить несколькими сообщениями, используйте поле extra_responses.
  3. Сервис можно написать на любом языке: он должен принимать запрос от Loop и отвечать в нужном формате.
  4. Интеграции, написанные для Slack, обычно работают без изменений — см. Совместимость со Slack.

Частые вопросы​

Как отлаживать slash-команды?​

Ошибки вызова команд записываются в журнал сервера. В Системная консоль > Окружение > Ведение журнала проверьте, что Включить отладку Webhook-ов включено (по умолчанию так и есть), и при необходимости установите Уровень логирования в консоли в DEBUG.

Как ответить несколькими сообщениями?​

Добавьте в ответ массив extra_responses. Каждый элемент — отдельный ответ в том же формате:

{
"response_type": "in_channel",
"text": "Сообщение 1",
"extra_responses": [
{"text": "Сообщение 2"},
{"text": "Сообщение 3"}
]
}

Что делать, если ответ готовится долго?​

Сразу верните короткий ответ, например «Готовлю отчёт…», а результат отправьте позже POST-запросом на response_url из запроса команды. По одному response_url можно отправить до 5 сообщений в течение 30 минут. Подробнее — в разделе Отложенные ответы.

Почему команда не может обратиться к localhost?​

По умолчанию Loop не отправляет запросы на внутренние адреса: localhost, 127.0.0.0/8 и частные подсети. Для разработки системный администратор может разрешить нужные адреса в Системная консоль > Окружение > Разработчик > Разрешить недоверенные внутренние соединения для (ServiceSettings.AllowedUntrustedInternalConnections).

Какой метод выбрать: POST или GET?​

GET подходит, только если команда ничего не меняет и её можно безопасно повторить. Кроме того, некоторые серверы ограничивают длину строки запроса. Если сомневаетесь, используйте POST.

Почему ответ не виден в канале?​

Если response_type не указан, Loop считает ответ временным (ephemeral): его видит только пользователь, вызвавший команду. Чтобы ответ увидели все участники канала, укажите "response_type": "in_channel".

Почему команда выводит «сырой» JSON?​

Ответ разбирается как JSON, только если сервис вернул заголовок Content-Type: application/json. Иначе тело ответа публикуется как обычный текст.

Как отвечать на команды от имени бота?​

  • Из внешнего сервиса: создайте бот-аккаунт и публикуйте сообщения через REST API с его токеном.
  • Из плагина: используйте метод API плагинов CreatePost, указав UserId бота. Для временного сообщения, видимого одному пользователю, — SendEphemeralPost.