Додайте кнопки
Розміщуйте кнопки під будь-якою карткою. Кнопка відкриває посилання, змінює картку для всіх, щойно хтось її натисне, або повідомляє ваш сервіс, що її натиснули.
Що можна зробити
- Відкривайте посиланняСпрямовуйте людей на сторінку, дашборд чи pull request.
- Змінюйте картку натисканнямРедагуйте чи видаляйте її, додавайте реакцію чи відповідь просто з натискання, без власного сервера.
- Чуйте кожне натисканняВаш сервіс наживо дізнається, хто що натиснув.
- Запускайте командуКнопка може запустити одну зі слеш-команд спільноти й передати їй дані.
У застосунку
Хтось дзвонить: з’являється картка
Натискання «Відчинити ворота»: картка змінюється для всіх
Для самої зміни сервер не потрібен: кроки зберігаються разом із повідомленням. Ваш контролер воріт чує натискання й відчиняє ворота.
Швидкий старт
Додайте список actions
Кнопки розміщуються в
actions, поруч із карткою: у публікації через вебхук, у відповіді на команду або в оновленні.json{ "message_container": { "color": "yellow", "title": "Deploy v2.1 to production?", "description": "Requested by maya." }, "actions": [ { "type": "url:https://ci.example.com/deploys/218", "text": "View changes", "color": "blue" } ] }deploysВиберіть, що робить натискання
Посилання, зміна картки або звернення до вашого сервісу. Три види описано нижче.
Три види кнопок
type визначає, що робить натискання.
| Тип | Що робить натискання | Чи доходить до вас |
|---|---|---|
url:{url} | Відкриває посилання. | Ні |
webhook_action | Виконує збережені разом із нею кроки для всіх у каналі. | Так, через stream_url повідомлення |
trigger:{guid} | Запускає один із тригерів спільноти з payload кнопки. | Так, як новий запит на URL цього тригера |
Зміна картки натисканням
Кнопка webhook_action містить список кроків у triggers. Після натискання вони по черзі виконуються на сервері mssgs, і всі в каналі бачать результат.
| Крок | Що робить, для всіх | Поля |
|---|---|---|
update_message | Замінює картку та її кнопки. Надішліть "actions": [], щоб прибрати кнопки. | message_container, actions, content |
remove_message | Видаляє повідомлення. | Немає |
add_reaction | Додає реакцію від імені учасника, який натиснув. | emoji |
add_reply | Публікує відповідь від імені учасника, який натиснув. | content |
{
"message_container": { "color": "yellow", "title": "Front door", "description": "Someone rang the bell." },
"actions": [
{
"type": "webhook_action",
"id": "open_gate",
"text": "Open gate",
"color": "green",
"payload": { "door": "front" },
"triggers": [
{
"action": "update_message",
"message_container": { "color": "blue", "title": "Front door", "description": "Opening…" },
"actions": []
},
{ "action": "add_reaction", "emoji": ":white_check_mark:" }
]
}
]
}Як почути натискання
Повідомлення з кнопками повертається від вебхука з stream_url. Тримайте його відкритим, і кожне натискання надходитиме як подія типу action з id кнопки, збереженою кнопкою та її payload, а також тим, хто натиснув:
data: {"type": "action", "message_id": "...", "action_id": "open_gate", "action": {"id": "open_gate", "payload": {"door": "front"}, ...}, "member_guid": "member-guid", "member": {...}, "ts": 1790000000000}Виконайте справжню роботу, наприклад відчиніть ворота, а потім задайте остаточний стан картки через callback_url. Як працюють потік і callback, описано на сторінці оновлення наживо.
Запуск команди кнопкою
Кнопка trigger:{guid} запускає один із тригерів вашої спільноти так, ніби хтось ввів команду, і передає payload кнопки. Тригер отримує:
{
"actions": [
{
"type": "trigger:5f2c9a1e-trigger-guid",
"text": "Check status",
"color": "blue",
"payload": { "order_id": "12345" }
}
]
}{
"trigger_match": "/status",
"message": {
"content": "[Action Triggered]",
"member_guid": "member-guid",
"is_action_button": true,
"action_payload": { "order_id": "12345" }
},
"callback_url": "https://mss.gs/api/v1/trigger-callback/...",
"stream_url": "https://mss.gs/api/v1/instant/...?token=..."
}payload.Поля
| Поле | Тип | Що робить |
|---|---|---|
type | string | url:{url}, webhook_action або trigger:{guid}. Обов’язкове. |
text | string | Напис на кнопці. Обов’язкове; label теж працює. |
color | string | Колір кнопки, див. нижче. |
id | string | Для webhook_action: яку кнопку натиснуто. Унікальний у межах повідомлення. |
payload | object | Ваші дані, що повертаються під час натискання. |
triggers | array | Для webhook_action: кроки, які треба виконати. |
disabled | boolean | Показує кнопку сірою, а натискання відхиляються. |
Кольори
green, blue і purple дають суцільну основну кнопку. red, orange і yellow дають другорядну: використовуйте їх для «Відхилити», «Скасувати» та інших обережних варіантів.
Помилки
Коли ви публікуєте повідомлення з кнопками, mssgs спершу їх перевіряє:
| Код | Значення |
|---|---|
INVALID_ACTIONS_FORMAT | actions не є списком об’єктів. |
INVALID_ACTION_MISSING_FIELDS | Кнопка не має type або text. |
DUPLICATE_ACTION_ID | Дві кнопки мають однаковий id. |
INVALID_TRIGGERS_FORMAT | triggers не є списком кроків. |
INVALID_TRIGGER_MISSING_ACTION | Крок не має action. |
INVALID_TRIGGER_ACTION_NOT_ALLOWED | Крок, відмінний від чотирьох наведених вище. |
Коли хтось натискає
| Код | Значення |
|---|---|
MESSAGE_NOT_FOUND | Тим часом повідомлення видалили. |
ACTION_NOT_FOUND | У повідомленні немає кнопки з таким id. |
ACTION_DISABLED | Кнопку вимкнено. |
TRIGGER_NOT_FOUND, TRIGGER_NOT_ACTIVE | Тригер, на який вказує кнопка, видалено або вимкнено. |
TRIGGER_NOT_ALLOWED | Учасник не має ролі, якій дозволено використовувати цей тригер. |
Переходите зі старої документації?
button із кроками ws:send, local:update_message і local:remove_message, умови previous:success та expire_in_seconds більше не працюють для зовнішніх відправників. Використовуйте webhook_action з наведеними вище кроками: вони доходять до всіх, а не лише до того, хто натиснув.