Ugrás a fő tartalomra
Fejlesztők Gombok

Adj hozzá gombokat

Tegyél gombokat bármelyik kártya alá. Egy gomb megnyit egy linket, mindenkinek módosítja a kártyát abban a pillanatban, amikor valaki rákoppint, vagy jelzi a szolgáltatásodnak, hogy megnyomták.

Mire használhatod

  • Nyiss meg egy linketKüldd az embereket egy oldalra, egy irányítópultra vagy egy pull requesthez.
  • Módosítsd a kártyát egy koppintássalSzerkeszd, töröld, reagálj vagy válaszolj közvetlenül a gombnyomásból, saját szerver nélkül.
  • Értesülj minden gombnyomásrólA szolgáltatásod élőben megtudja, ki mit nyomott meg.
  • Futtass egy parancsotEgy gomb elindíthatja a közösség valamelyik perjeles parancsát, adatokkal együtt.

Az alkalmazásban

Valaki csenget: megjelenik a kártya

Egy koppintás a Kapu nyitása gombra: a kártya mindenkinek megváltozik

Magához a változáshoz nem kell szerver: a lépések az üzenettel együtt vannak tárolva. A kapuvezérlőd értesül a gombnyomásról, és kinyitja a kaput.

Gyors kezdés

  1. Adj hozzá egy actions listát

    A gombok az actions mezőbe kerülnek, a kártya mellé: egy webhookos üzenetben, egy parancsra adott válaszban vagy egy frissítésben.

    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

    Mehet a v2.1 élesbe?

    Kérte: maya.
  2. Válaszd ki, mit tegyen egy gombnyomás

    Megnyithat egy linket, módosíthatja a kártyát, vagy meghívhatja a szolgáltatásodat. A három típust lent találod.

Háromféle gomb

A type dönti el, mit tesz egy gombnyomás.

TípusMit tesz egy gombnyomásEljut hozzád?
url:{url}Megnyitja a linket.Nem
webhook_actionLefuttatja a vele együtt tárolt lépéseket, a csatornában mindenkinek.Igen, az üzenet stream_url címén
trigger:{guid}Elindítja a közösség valamelyik triggerét a gomb payload értékével.Igen, új kérésként az adott trigger URL-jére

A kártya módosítása egy koppintással

Egy webhook_action gomb lépések listáját hordozza a triggers mezőben. Gombnyomáskor ezek sorban lefutnak az mssgs szerverén, és az eredményt a csatornában mindenki látja.

LépésMit tesz, mindenkinekMezők
update_messageLecseréli a kártyát és a gombjait. Küldj "actions": [] értéket, ha el akarod tüntetni a gombokat.message_container, actions, content
remove_messageTörli az üzenetet.Nincs
add_reactionReakciót ad hozzá a gombot megnyomó tag nevében.emoji
add_replyVálaszt küld a gombot megnyomó tag nevében.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:" }
      ]
    }
  ]
}
A lépéseket a rendszer a tárolt üzenetből olvassa, soha nem a tag alkalmazásából, így egy gombnyomás csak azt teheti, amit te odatettél.
A lépések sorban futnak, és a rendszer mindegyiket megkísérli: ha az egyik nem sikerül, a többi akkor is lefut.

Gombnyomások fogadása

A gombos üzenetre a webhook egy stream_url címmel válaszol. Tartsd nyitva, és minden gombnyomás action típusú eseményként érkezik, a gomb azonosítójával, a tárolt gombbal és annak payload értékével, valamint azzal, hogy ki nyomta meg:

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

Végezd el a tényleges munkát, például nyisd ki a kaput, majd állítsd be a kártya végső állapotát a callback_url címen keresztül. A stream és a callback működését az élő frissítések oldal írja le.

Parancs futtatása gombbal

Egy trigger:{guid} gomb elindítja a közösséged valamelyik triggerét, mintha valaki begépelte volna a parancsot, és átadja a gomb payload értékét. A trigger ezt kapja:

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=..."
}
Amit a trigger válaszol, új kártyaként jelenik meg. A kérésből nem derül ki, melyik üzeneten volt a gomb: tedd a payload mezőbe, amire szükséged van.

Mezők

MezőTípusMit csinál
typestringurl:{url}, webhook_action vagy trigger:{guid}. Kötelező.
textstringA gomb felirata. Kötelező; a label is működik.
colorstringA gomb színe, lásd lejjebb.
idstringwebhook_action esetén: melyik gombot nyomták meg. Az üzeneten belül egyedi.
payloadobjectA saját adataid, gombnyomáskor visszakapod őket.
triggersarraywebhook_action esetén: a lefuttatandó lépések.
disabledbooleanSzürkén jeleníti meg a gombot, a gombnyomásokat pedig elutasítja.

Színek

A green, a blue és a purple teli, elsődleges gombot rajzol. A red, az orange és a yellow másodlagosat: ezeket használd az „Elutasítás”, a „Mégse” és más óvatos választások gombjaihoz.

Hibák

Amikor gombos üzenetet küldesz, az mssgs először ellenőrzi a gombokat:

KódJelentés
INVALID_ACTIONS_FORMATAz actions nem objektumok listája.
INVALID_ACTION_MISSING_FIELDSEgy gombnak nincs type vagy text mezője.
DUPLICATE_ACTION_IDKét gombnak ugyanaz az id értéke.
INVALID_TRIGGERS_FORMATA triggers nem lépések listája.
INVALID_TRIGGER_MISSING_ACTIONEgy lépésnek nincs action mezője.
INVALID_TRIGGER_ACTION_NOT_ALLOWEDA fenti négytől eltérő lépés.

Amikor valaki megnyomja

KódJelentés
MESSAGE_NOT_FOUNDAz üzenetet időközben törölték.
ACTION_NOT_FOUNDAz üzeneten nincs ilyen azonosítójú gomb.
ACTION_DISABLEDA gomb le van tiltva.
TRIGGER_NOT_FOUND, TRIGGER_NOT_ACTIVEA trigger, amelyre a gomb mutat, már nem létezik, vagy ki van kapcsolva.
TRIGGER_NOT_ALLOWEDA tagnak nincs olyan szerepköre, amely használhatja ezt a triggert.

A régi dokumentációból jössz?

A button típusú gombok ws:send, local:update_message és local:remove_message lépésekkel, a previous:success feltételek és az expire_in_seconds már nem működnek külső küldőknél. Használd a webhook_action típust a fenti lépésekkel: ezek mindenkihez eljutnak, nem csak ahhoz, aki megnyomta a gombot.

Építs tovább