Към основното съдържание
Разработчици Бутони

Добавете бутони

Сложете бутони под всяка карта. Бутонът отваря линк, сменя картата за всички в момента, в който някой го докосне, или съобщава на вашата услуга, че е натиснат.

Какво можете да направите

  • Отворете линкПратете хората към страница, табло или pull request.
  • Сменете картата с едно докосванеРедактирайте я, премахнете я, реагирайте или отговорете направо от натискането, без собствен сървър.
  • Чуйте всяко натисканеВашата услуга научава на живо кой какво е натиснал.
  • Пуснете командаБутонът може да задейства някоя от slash командите на общността, с данни.

В приложението

Някой звъни: картата се появява

Докосване на Отвори портата: картата се сменя за всички

За самата промяна не е нужен сървър: стъпките се пазят заедно със съобщението. Контролерът на портата чува натискането и отваря портата.

Бърз старт

  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
    Message from 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 със стъпките по-горе: те стигат до всички, а не само до човека, който е натиснал.

Продължете нататък