Slash-команды
Slash-команда — это сообщение, которое начинается с /, например /weather москва. Loop отправляет HTTP-запрос в ваш сервис и публикует его ответ. В интерфейсе Loop такие команды называются быстрыми командами.
- Работают в любых каналах: публичных, частных и в личных сообщениях — в отличие от исходящих вебхуков.
- Поддерживают автодополнение: при вводе
/появляется список команд с подсказками по аргументам. - В Loop есть встроенные команды, а также можно создать собственные.
Собственные команды
Допустим, вы хотите, чтобы пользователи узнавали прогноз погоды командой /weather москва неделя. Для этого нужно создать команду в Loop и написать сервис, который принимает HTTP-запрос от Loop и возвращает ответ.
Встроенные команды
Эти команды доступны в Loop сразу. Их имена зарезервированы: создать собственную команду с таким же ключевым словом нельзя. Введите / в поле сообщения — появится список всех доступных команд с подсказками, включая команды плагинов и интеграций.
Совместимость со Slack
Интеграции, написанные для Slack, как правило, работают в Loop без изменений.
Советы
- Slash-команды удобны для отправки сообщений. Для других действий — например, создания канала — вызывайте из своего сервиса REST API.
- Максимальная длина сообщения — 16 383 символа. Чтобы ответить несколькими сообщениями, используйте поле
extra_responses. - Сервис можно написать на любом языке: он должен принимать запрос от Loop и отвечать в нужном формате.
- Интеграции, написанные для 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.