Перейти до основного вмісту
Розробникам Кнопки

Додайте кнопки

Розміщуйте кнопки під будь-якою карткою. Кнопка відкриває посилання, змінює картку для всіх, щойно хтось її натисне, або повідомляє ваш сервіс, що її натиснули.

Що можна зробити

  • Відкривайте посиланняСпрямовуйте людей на сторінку, дашборд чи pull request.
  • Змінюйте картку натисканнямРедагуйте чи видаляйте її, додавайте реакцію чи відповідь просто з натискання, без власного сервера.
  • Чуйте кожне натисканняВаш сервіс наживо дізнається, хто що натиснув.
  • Запускайте командуКнопка може запустити одну зі слеш-команд спільноти й передати їй дані.

У застосунку

Хтось дзвонить: з’являється картка

Натискання «Відчинити ворота»: картка змінюється для всіх

Для самої зміни сервер не потрібен: кроки зберігаються разом із повідомленням. Ваш контролер воріт чує натискання й відчиняє ворота.

Швидкий старт

  1. Додайте список 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
    System
    Повідомлення від Deploybot

    Розгорнути v2.1 у продакшн?

    Запит від maya.
  2. Виберіть, що робить натискання

    Посилання, зміна картки або звернення до вашого сервісу. Три види описано нижче.

Три види кнопок

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
json
{
  "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, а також тим, хто натиснув:

sse
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 кнопки. Тригер отримує:

json
{
  "actions": [
    {
      "type": "trigger:5f2c9a1e-trigger-guid",
      "text": "Check status",
      "color": "blue",
      "payload": { "order_id": "12345" }
    }
  ]
}
json
{
  "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.

Поля

ПолеТипЩо робить
typestringurl:{url}, webhook_action або trigger:{guid}. Обов’язкове.
textstringНапис на кнопці. Обов’язкове; label теж працює.
colorstringКолір кнопки, див. нижче.
idstringДля webhook_action: яку кнопку натиснуто. Унікальний у межах повідомлення.
payloadobjectВаші дані, що повертаються під час натискання.
triggersarrayДля webhook_action: кроки, які треба виконати.
disabledbooleanПоказує кнопку сірою, а натискання відхиляються.

Кольори

green, blue і purple дають суцільну основну кнопку. red, orange і yellow дають другорядну: використовуйте їх для «Відхилити», «Скасувати» та інших обережних варіантів.

Помилки

Коли ви публікуєте повідомлення з кнопками, mssgs спершу їх перевіряє:

КодЗначення
INVALID_ACTIONS_FORMATactions не є списком об’єктів.
INVALID_ACTION_MISSING_FIELDSКнопка не має type або text.
DUPLICATE_ACTION_IDДві кнопки мають однаковий id.
INVALID_TRIGGERS_FORMATtriggers не є списком кроків.
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 з наведеними вище кроками: вони доходять до всіх, а не лише до того, хто натиснув.

Що далі