Aggiungi pulsanti
Metti dei pulsanti sotto qualsiasi card. Un pulsante apre un link, cambia la card per tutti nel momento in cui qualcuno lo tocca, oppure avvisa il tuo servizio che è stato premuto.
Cosa puoi fare
- Apri un linkPorta le persone a una pagina, una dashboard o una pull request.
- Cambia la card con un toccoModificala, rimuovila, reagisci o rispondi, direttamente dalla pressione, senza un server tuo.
- Ricevi ogni pressioneIl tuo servizio sa chi ha premuto cosa, dal vivo.
- Esegui un comandoUn pulsante può attivare uno dei comandi slash della community, con dei dati.
Nell'app
Qualcuno suona: compare la card
Un tocco su Apri il cancello: la card cambia per tutti
Per il cambiamento in sé non serve nessun server: i passi sono salvati con il messaggio. Il controller del cancello riceve la pressione e apre il cancello.
Per iniziare
Aggiungi una lista actions
I pulsanti vanno in
actions, accanto alla card, in un post da webhook, nella risposta a un comando o in un aggiornamento.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" } ] }deploysScegli cosa fa una pressione
Un link, una modifica alla card o una chiamata al tuo servizio. I tre tipi sono qui sotto.
Tre tipi di pulsante
Il type decide cosa fa una pressione.
| Tipo | Cosa fa una pressione | Ti raggiunge |
|---|---|---|
url:{url} | Apre il link. | No |
webhook_action | Esegue i passi che hai salvato con il pulsante, per tutti nel canale. | Sì, sullo stream_url del messaggio |
trigger:{guid} | Attiva uno dei trigger della community con il payload del pulsante. | Sì, come nuova richiesta all’URL di quel trigger |
Cambiare la card con un tocco
Un pulsante webhook_action porta con sé una lista di passi in triggers. Alla pressione vengono eseguiti sul server di mssgs, in ordine, e tutti nel canale vedono il risultato.
| Passo | Cosa fa, per tutti | Campi |
|---|---|---|
update_message | Sostituisce la card e i suoi pulsanti. Invia "actions": [] per togliere i pulsanti. | message_container, actions, content |
remove_message | Elimina il messaggio. | Nessuno |
add_reaction | Aggiunge una reazione, a nome del membro che ha premuto. | emoji |
add_reply | Pubblica una risposta, a nome del membro che ha premuto. | 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:" }
]
}
]
}Ricevere la pressione
Un messaggio con pulsanti torna dal webhook con uno stream_url. Tienilo aperto e ogni pressione arriva come evento di tipo action, con l’id del pulsante, il pulsante salvato e il suo payload, e chi l’ha premuto:
data: {"type": "action", "message_id": "...", "action_id": "open_gate", "action": {"id": "open_gate", "payload": {"door": "front"}, ...}, "member_guid": "member-guid", "member": {...}, "ts": 1790000000000}Fai il lavoro vero e proprio, come aprire il cancello, poi imposta lo stato finale della card tramite callback_url. Come funzionano lo stream e la callback è spiegato in aggiornamenti live.
Eseguire un comando da un pulsante
Un pulsante trigger:{guid} attiva uno dei trigger della tua community, come se qualcuno avesse scritto il comando, e gli consegna il payload del pulsante. Il trigger riceve:
{
"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.Campi
| Campo | Tipo | Cosa fa |
|---|---|---|
type | string | url:{url}, webhook_action o trigger:{guid}. Obbligatorio. |
text | string | L’etichetta sul pulsante. Obbligatorio; funziona anche label. |
color | string | Il colore del pulsante, vedi sotto. |
id | string | Per webhook_action: quale pulsante è stato premuto. Unico all’interno del messaggio. |
payload | object | I tuoi dati, che ti tornano a ogni pressione. |
triggers | array | Per webhook_action: i passi da eseguire. |
disabled | boolean | Mostra il pulsante in grigio, e le pressioni vengono rifiutate. |
Colori
green, blue e purple disegnano un pulsante primario pieno. red, orange e yellow ne disegnano uno secondario: usali per “Rifiuta”, “Annulla” e altre scelte da fare con cautela.
Errori
Quando pubblichi un messaggio con pulsanti, mssgs prima li controlla:
| Codice | Significato |
|---|---|
INVALID_ACTIONS_FORMAT | actions non è una lista di oggetti. |
INVALID_ACTION_MISSING_FIELDS | Un pulsante non ha type o non ha text. |
DUPLICATE_ACTION_ID | Due pulsanti hanno lo stesso id. |
INVALID_TRIGGERS_FORMAT | triggers non è una lista di passi. |
INVALID_TRIGGER_MISSING_ACTION | Un passo non ha action. |
INVALID_TRIGGER_ACTION_NOT_ALLOWED | Un passo diverso dai quattro qui sopra. |
Quando qualcuno preme
| Codice | Significato |
|---|---|
MESSAGE_NOT_FOUND | Nel frattempo il messaggio è stato eliminato. |
ACTION_NOT_FOUND | Sul messaggio non c’è nessun pulsante con quell’id. |
ACTION_DISABLED | Il pulsante è disattivato. |
TRIGGER_NOT_FOUND, TRIGGER_NOT_ACTIVE | Il trigger a cui punta un pulsante non esiste più o è spento. |
TRIGGER_NOT_ALLOWED | Il membro non ha un ruolo che può usare quel trigger. |
Vieni dalla vecchia documentazione?
button con passi ws:send, local:update_message e local:remove_message, le condizioni previous:success ed expire_in_seconds non funzionano più per i mittenti esterni. Usa webhook_action con i passi qui sopra: raggiungono tutti, non solo chi ha premuto.