Přeskočit na hlavní obsah
Vývojáři Tlačítka

Přidej tlačítka

Dej tlačítka pod jakoukoli kartu. Tlačítko otevře odkaz, změní kartu všem ve chvíli, kdy na něj někdo klepne, nebo dá tvé službě vědět, že ho někdo stiskl.

Co s tím můžeš dělat

  • Otevři odkazPošli lidi na stránku, dashboard nebo pull request.
  • Změň kartu jedním klepnutímUprav ji, smaž, přidej reakci nebo odpověď, rovnou ze stisku, bez vlastního serveru.
  • Zachyť každý stiskTvoje služba živě ví, kdo co stiskl.
  • Spusť příkazTlačítko může spustit jeden z příkazů s lomítkem tvé komunity, i s daty.

V aplikaci

Někdo zazvoní: objeví se karta

Klepnutí na Otevřít bránu: karta se změní všem

Samotná změna nepotřebuje žádný server: kroky jsou uložené se zprávou. Tvůj ovladač brány stisk zachytí a bránu otevře.

Rychlý start

  1. Přidej seznam actions

    Tlačítka patří do actions, vedle karty: v příspěvku přes webhook, v odpovědi na příkaz nebo v aktualizaci.

    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

    Nasadit v2.1 do produkce?

    Žádost od: maya.
  2. Vyber, co stisk udělá

    Odkaz, změnu karty, nebo volání tvé služby. Všechny tři druhy najdeš níže.

Tři druhy tlačítek

O tom, co stisk udělá, rozhoduje type.

TypCo udělá stiskDozvíš se o něm
url:{url}Otevře odkaz.Ne
webhook_actionProvede kroky uložené s tlačítkem, pro všechny v kanálu.Ano, přes stream_url zprávy
trigger:{guid}Spustí jeden z triggerů komunity s payload tlačítka.Ano, jako nový požadavek na URL toho triggeru

Změna karty jedním klepnutím

Tlačítko webhook_action nese v triggers seznam kroků. Po stisku se postupně provedou na serveru mssgs a výsledek uvidí všichni v kanálu.

KrokCo udělá, pro všechnyPole
update_messageNahradí kartu a její tlačítka. Pošli "actions": [] a tlačítka zmizí.message_container, actions, content
remove_messageSmaže zprávu.Žádná
add_reactionPřidá reakci za člena, který tlačítko stiskl.emoji
add_replyZveřejní odpověď za člena, který tlačítko stiskl.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:" }
      ]
    }
  ]
}
Kroky se čtou z uložené zprávy, nikdy z aplikace člena, takže stisk udělá jen to, co do ní vložíš.
Kroky se provádějí postupně a mssgs zkusí každý z nich: když jeden selže, ostatní se provedou i tak.

Zachycení stisku

Zpráva s tlačítky se z webhooku vrátí se stream_url. Nech ho otevřený a každý stisk dorazí jako událost typu action, s id tlačítka, uloženým tlačítkem a jeho payload a s tím, kdo ho stiskl:

sse
data: {"type": "action", "message_id": "...", "action_id": "open_gate", "action": {"id": "open_gate", "payload": {"door": "front"}, ...}, "member_guid": "member-guid", "member": {...}, "ts": 1790000000000}

Udělej skutečnou práci, třeba otevři bránu, a pak nastav konečný stav karty přes callback_url. Jak funguje stream a callback, popisují živé aktualizace.

Spuštění příkazu tlačítkem

Tlačítko trigger:{guid} spustí jeden z triggerů tvé komunity, jako by někdo napsal příkaz, a předá mu payload tlačítka. Trigger dostane:

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=..."
}
Odpověď triggeru se zveřejní jako nová karta. Požadavek neříká, u které zprávy tlačítko bylo: co potřebuješ, dej do payload.

Pole

PoleTypCo dělá
typestringurl:{url}, webhook_action nebo trigger:{guid}. Povinné.
textstringPopisek na tlačítku. Povinné; funguje i label.
colorstringBarva tlačítka, viz níže.
idstringU webhook_action: které tlačítko bylo stisknuto. V rámci zprávy jedinečné.
payloadobjectTvoje data, která se ti při stisku vrátí.
triggersarrayU webhook_action: kroky, které se mají provést.
disabledbooleanZobrazí tlačítko zašedlé a stisky se odmítnou.

Barvy

green, blue a purple vykreslí plné, hlavní tlačítko. red, orange a yellow vykreslí vedlejší: použij je pro „Odmítnout“, „Zrušit“ a další volby, se kterými je třeba opatrnosti.

Chyby

Když zveřejníš zprávu s tlačítky, mssgs je nejdřív zkontroluje:

KódVýznam
INVALID_ACTIONS_FORMATactions není seznam objektů.
INVALID_ACTION_MISSING_FIELDSTlačítku chybí type nebo text.
DUPLICATE_ACTION_IDDvě tlačítka mají stejné id.
INVALID_TRIGGERS_FORMATtriggers není seznam kroků.
INVALID_TRIGGER_MISSING_ACTIONKroku chybí action.
INVALID_TRIGGER_ACTION_NOT_ALLOWEDJiný krok než čtyři výše uvedené.

Když někdo stiskne tlačítko

KódVýznam
MESSAGE_NOT_FOUNDZpráva byla mezitím smazána.
ACTION_NOT_FOUNDZpráva nemá tlačítko s tímto id.
ACTION_DISABLEDTlačítko je vypnuté.
TRIGGER_NOT_FOUND, TRIGGER_NOT_ACTIVETrigger, na který tlačítko odkazuje, už neexistuje nebo je vypnutý.
TRIGGER_NOT_ALLOWEDČlen nemá roli, která smí ten trigger používat.

Přicházíš ze staré dokumentace?

Tlačítka typu button s kroky ws:send, local:update_message a local:remove_message, podmínky previous:success a expire_in_seconds už pro externí odesílatele nefungují. Použij webhook_action s kroky popsanými výše: dostanou se ke všem, nejen k tomu, kdo tlačítko stiskl.

Tvoř dál