---
title: "Pulsanti: messaggi interattivi su mssgs"
description: "Pulsanti sotto una card mssgs: apri un link, cambia la card per tutti con un tocco, ricevi ogni pressione dal vivo o esegui un comando. Campi, passi ed errori."
canonical: https://mss.gs/it/docs/buttons
language: it
---

# 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 link** Porta le persone a una pagina, una dashboard o una pull request.

- **Cambia la card con un tocco** Modificala, rimuovila, reagisci o rispondi, direttamente dalla pressione, senza un server tuo.

- **Ricevi ogni pressione** Il tuo servizio sa chi ha premuto cosa, dal vivo.

- **Esegui un comando** Un pulsante può attivare uno dei comandi slash della community, con dei dati.

Nell'app

#### Porta d’ingresso

Qualcuno suona: compare la card

#### Porta d’ingresso

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](#quick-start)

- [Tre tipi](#kinds)

- [Cambiare la card](#steps)

- [Ricevere la pressione](#listen)

- [Eseguire un comando](#trigger)

- [Campi](#fields)

- [Errori](#errors)

## Per iniziare

### Aggiungi una lista actions

I pulsanti vanno in actions , accanto alla card, in un post da [webhook](https://mss.gs/it/docs/webhooks), nella risposta a un [comando](https://mss.gs/it/docs/commands) o in un [aggiornamento](https://mss.gs/it/docs/live-updates).

```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" }
  ]
}
```

#### Fare il deploy della v2.1 in produzione?

- 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.

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

```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:" }
      ]
    }
  ]
}
```

## 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](https://mss.gs/it/docs/live-updates).

## 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=..."
}
```

## 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?

## Continua a costruire
