Vai al contenuto principale
Sviluppatori Pulsanti

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

  1. 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" }
      ]
    }
    deploys
    System
    Messaggio da Deploybot

    Fare il deploy della v2.1 in produzione?

    Richiesto da maya.
  2. Scegli 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.

TipoCosa fa una pressioneTi raggiunge
url:{url}Apre il link.No
webhook_actionEsegue 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.

PassoCosa fa, per tuttiCampi
update_messageSostituisce la card e i suoi pulsanti. Invia "actions": [] per togliere i pulsanti.message_container, actions, content
remove_messageElimina il messaggio.Nessuno
add_reactionAggiunge una reazione, a nome del membro che ha premuto.emoji
add_replyPubblica una risposta, a nome del membro che ha premuto.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:" }
      ]
    }
  ]
}
I passi vengono letti dal messaggio salvato, mai dall’app del membro, quindi una pressione può fare solo ciò che ci hai messo tu.
I passi vengono eseguiti in ordine e ognuno viene tentato: se uno fallisce, gli altri vengono eseguiti comunque.

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:

sse
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:

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=..."
}
Ciò che il trigger risponde viene pubblicato come nuova card. La richiesta non dice su quale messaggio si trovava il pulsante: metti ciò che ti serve in payload.

Campi

CampoTipoCosa fa
typestringurl:{url}, webhook_action o trigger:{guid}. Obbligatorio.
textstringL’etichetta sul pulsante. Obbligatorio; funziona anche label.
colorstringIl colore del pulsante, vedi sotto.
idstringPer webhook_action: quale pulsante è stato premuto. Unico all’interno del messaggio.
payloadobjectI tuoi dati, che ti tornano a ogni pressione.
triggersarrayPer webhook_action: i passi da eseguire.
disabledbooleanMostra 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:

CodiceSignificato
INVALID_ACTIONS_FORMATactions non è una lista di oggetti.
INVALID_ACTION_MISSING_FIELDSUn pulsante non ha type o non ha text.
DUPLICATE_ACTION_IDDue pulsanti hanno lo stesso id.
INVALID_TRIGGERS_FORMATtriggers non è una lista di passi.
INVALID_TRIGGER_MISSING_ACTIONUn passo non ha action.
INVALID_TRIGGER_ACTION_NOT_ALLOWEDUn passo diverso dai quattro qui sopra.

Quando qualcuno preme

CodiceSignificato
MESSAGE_NOT_FOUNDNel frattempo il messaggio è stato eliminato.
ACTION_NOT_FOUNDSul messaggio non c’è nessun pulsante con quell’id.
ACTION_DISABLEDIl pulsante è disattivato.
TRIGGER_NOT_FOUND, TRIGGER_NOT_ACTIVEIl trigger a cui punta un pulsante non esiste più o è spento.
TRIGGER_NOT_ALLOWEDIl membro non ha un ruolo che può usare quel trigger.

Vieni dalla vecchia documentazione?

I pulsanti di tipo 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.

Continua a costruire