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
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" } ] }deploysAlege 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.
| Tip | Ce face o apăsare | Ajunge la tine |
|---|---|---|
url:{url} | Deschide linkul. | Nu |
webhook_action | Rulează 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.
| Pas | Ce face, pentru toată lumea | Câ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_reaction | Adaugă o reacție din partea membrului care a apăsat. | emoji |
add_reply | Postează un răspuns din partea membrului care a apăsat. | content |
{
"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:" }
]
}
]
}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:
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:
{
"actions": [
{
"type": "trigger:5f2c9a1e-trigger-guid",
"text": "Check status",
"color": "blue",
"payload": { "order_id": "12345" }
}
]
}{
"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.Câmpuri
| Câmp | Tip | Ce face |
|---|---|---|
type | string | url:{url}, webhook_action sau trigger:{guid}. Obligatoriu. |
text | string | Textul de pe buton. Obligatoriu; merge și label. |
color | string | Culoarea butonului, vezi mai jos. |
id | string | Pentru webhook_action: ce buton a fost apăsat. Unic în cadrul mesajului. |
payload | object | Datele tale, returnate la apăsare. |
triggers | array | Pentru webhook_action: pașii de rulat. |
disabled | boolean | Afiș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:
| Cod | Semnificație |
|---|---|
INVALID_ACTIONS_FORMAT | actions nu este o listă de obiecte. |
INVALID_ACTION_MISSING_FIELDS | Un buton nu are type sau nu are text. |
DUPLICATE_ACTION_ID | Două butoane au același id. |
INVALID_TRIGGERS_FORMAT | triggers nu este o listă de pași. |
INVALID_TRIGGER_MISSING_ACTION | Un pas nu are action. |
INVALID_TRIGGER_ACTION_NOT_ALLOWED | Un pas diferit de cei patru de mai sus. |
Când apasă cineva
| Cod | Semnificație |
|---|---|
MESSAGE_NOT_FOUND | Între timp, mesajul a fost șters. |
ACTION_NOT_FOUND | Pe mesaj nu există niciun buton cu acel id. |
ACTION_DISABLED | Butonul este dezactivat. |
TRIGGER_NOT_FOUND, TRIGGER_NOT_ACTIVE | Triggerul spre care arată un buton nu mai există sau este dezactivat. |
TRIGGER_NOT_ALLOWED | Membrul nu are un rol care poate folosi acel trigger. |
Vii de la documentația veche?
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.