Sari la conținutul principal
Dezvoltatori Butoane

Adaugă butoane

Pune butoane sub orice card. Un buton deschide un link, schimbă cardul pentru toată lumea în clipa în care cineva îl atinge sau îi spune serviciului tău că a fost apăsat.

Ce poți face

  • Deschide un linkTrimite oamenii spre o pagină, un dashboard sau un pull request.
  • Schimbă cardul cu o atingereEditează-l, șterge-l, reacționează sau răspunde, direct din apăsare, fără un server propriu.
  • Află de fiecare apăsareServiciul tău află live cine ce a apăsat.
  • Rulează o comandăUn buton poate declanșa una dintre comenzile slash ale comunității, cu date.

În aplicație

Sună cineva: apare cardul

O atingere pe Deschide poarta: cardul se schimbă pentru toată lumea

Pentru schimbarea în sine nu ai nevoie de server: pașii sunt stocați odată cu mesajul. Controlerul porții tale află de apăsare și deschide poarta.

Start rapid

  1. Adaugă o listă actions

    Butoanele merg în actions, lângă card, într-o postare prin webhook, într-un răspuns la o comandă sau într-o actualizare.

    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

    Faci deploy la v2.1 în producție?

    Cerut de maya.
  2. Alege ce face o apăsare

    Un link, o schimbare a cardului sau un apel către serviciul tău. Cele trei tipuri sunt mai jos.

Trei tipuri de butoane

type decide ce face o apăsare.

TipCe face o apăsareAjunge la tine
url:{url}Deschide linkul.Nu
webhook_actionRulează pașii pe care i-ai stocat cu el, pentru toată lumea din canal.Da, pe stream_url-ul mesajului
trigger:{guid}Declanșează unul dintre triggerele comunității cu payload-ul butonului.Da, ca o cerere nouă la URL-ul acelui trigger

Schimbă cardul cu o atingere

Un buton webhook_action poartă o listă de pași în triggers. La apăsare, aceștia rulează pe serverul mssgs, în ordine, iar toată lumea din canal vede rezultatul.

PasCe face, pentru toată lumeaCâmpuri
update_messageÎnlocuiește cardul și butoanele lui. Trimite "actions": [] ca să elimini butoanele.message_container, actions, content
remove_messageȘterge mesajul.Niciunul
add_reactionAdaugă o reacție din partea membrului care a apăsat.emoji
add_replyPostează un răspuns din partea membrului care a apăsat.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:" }
      ]
    }
  ]
}
Pașii sunt citiți din mesajul stocat, niciodată din aplicația membrului, așa că o apăsare poate face doar ce ai pus tu acolo.
Pașii rulează în ordine și fiecare este încercat: dacă unul eșuează, restul rulează oricum.

Află de apăsare

Un mesaj cu butoane se întoarce de la webhook cu un stream_url. Ține-l deschis și fiecare apăsare sosește ca un eveniment de tip action, cu id-ul butonului, butonul stocat și payload-ul lui, plus cine l-a apăsat:

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

Fă munca propriu-zisă, de exemplu deschide poarta, apoi setează starea finală a cardului prin callback_url. Cum funcționează fluxul și callback-ul afli la actualizări live.

Rulează o comandă dintr-un buton

Un buton trigger:{guid} declanșează unul dintre triggerele comunității tale, ca și cum cineva ar fi tastat comanda, și transmite payload-ul butonului. Triggerul primește:

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=..."
}
Ce răspunde triggerul este postat ca un card nou. Cererea nu spune pe ce mesaj se afla butonul: pune ce îți trebuie în payload.

Câmpuri

CâmpTipCe face
typestringurl:{url}, webhook_action sau trigger:{guid}. Obligatoriu.
textstringTextul de pe buton. Obligatoriu; merge și label.
colorstringCuloarea butonului, vezi mai jos.
idstringPentru webhook_action: ce buton a fost apăsat. Unic în cadrul mesajului.
payloadobjectDatele tale, returnate la apăsare.
triggersarrayPentru webhook_action: pașii de rulat.
disabledbooleanAfișează butonul estompat, iar apăsările sunt refuzate.

Culori

green, blue și purple desenează un buton plin, principal. red, orange și yellow desenează unul secundar: folosește-le pentru „Respinge”, „Anulează” și alte alegeri care cer prudență.

Erori

Când postezi un mesaj cu butoane, mssgs le verifică mai întâi:

CodSemnificație
INVALID_ACTIONS_FORMATactions nu este o listă de obiecte.
INVALID_ACTION_MISSING_FIELDSUn buton nu are type sau nu are text.
DUPLICATE_ACTION_IDDouă butoane au același id.
INVALID_TRIGGERS_FORMATtriggers nu este o listă de pași.
INVALID_TRIGGER_MISSING_ACTIONUn pas nu are action.
INVALID_TRIGGER_ACTION_NOT_ALLOWEDUn pas diferit de cei patru de mai sus.

Când apasă cineva

CodSemnificație
MESSAGE_NOT_FOUNDÎntre timp, mesajul a fost șters.
ACTION_NOT_FOUNDPe mesaj nu există niciun buton cu acel id.
ACTION_DISABLEDButonul este dezactivat.
TRIGGER_NOT_FOUND, TRIGGER_NOT_ACTIVETriggerul spre care arată un buton nu mai există sau este dezactivat.
TRIGGER_NOT_ALLOWEDMembrul nu are un rol care poate folosi acel trigger.

Vii de la documentația veche?

Butoanele de tip button cu pași ws:send, local:update_message și local:remove_message, condițiile previous:success și expire_in_seconds nu mai funcționează pentru expeditorii externi. Folosește webhook_action cu pașii de mai sus: ajung la toată lumea, nu doar la persoana care a apăsat.

Construiește mai departe