---
title: "Boutons : des messages mssgs interactifs"
description: "Des boutons sous une carte mssgs : ouvrir un lien, modifier la carte pour tous d’un appui, capter chaque appui en direct, lancer une commande. Champs et erreurs."
canonical: https://mss.gs/fr/docs/buttons
language: fr
---

# Ajouter des boutons

Place des boutons sous n’importe quelle carte. Un bouton ouvre un lien, modifie la carte pour tout le monde dès que quelqu’un appuie dessus, ou prévient ton service qu’il a été pressé.

## Ce que vous pouvez faire

- **Ouvrir un lien** Envoie les gens vers une page, un tableau de bord ou une pull request.

- **Modifier la carte d’un appui** La modifier, la supprimer, réagir ou répondre, directement à l’appui, sans serveur à toi.

- **Capter chaque appui** Ton service apprend en direct qui a appuyé sur quoi.

- **Lancer une commande** Un bouton peut lancer l’une des commandes slash de la communauté, avec des données.

Dans l'app

#### Porte d’entrée

Quelqu’un sonne : la carte apparaît

#### Porte d’entrée

Un appui sur Ouvrir le portail : la carte change pour tout le monde

Pas besoin de serveur pour le changement lui-même : les étapes sont stockées avec le message. Ton contrôleur de portail capte l’appui et ouvre le portail.

- [Démarrage rapide](#quick-start)

- [Trois types](#kinds)

- [Modifier la carte](#steps)

- [Capter l’appui](#listen)

- [Lancer une commande](#trigger)

- [Champs](#fields)

- [Erreurs](#errors)

## Démarrage rapide

### Ajoute une liste actions

Les boutons vont dans actions , à côté de la carte, dans une publication par [webhook](https://mss.gs/fr/docs/webhooks), une réponse de [commande](https://mss.gs/fr/docs/commands) ou une [mise à jour](https://mss.gs/fr/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" }
  ]
}
```

#### Déployer la v2.1 en production ?

- 2 Choisis ce que fait un appui Un lien, une modification de la carte, ou un appel à ton service. Les trois types sont décrits plus bas.

## Trois types de bouton

Le type décide de ce que fait un appui.

| Type | Ce que fait un appui | Te parvient |
| --- | --- | --- |
| url:{url} | Ouvre le lien. | Non |
| webhook_action | Exécute les étapes que tu as stockées avec lui, pour tout le monde dans le salon. | Oui, sur la stream_url du message |
| trigger:{guid} | Lance l’un des déclencheurs de la communauté avec le payload du bouton. | Oui, sous forme de nouvelle requête vers l’URL de ce déclencheur |

## Modifier la carte d’un appui

Un bouton webhook_action porte une liste d’étapes dans triggers . À l’appui, elles s’exécutent sur le serveur mssgs, dans l’ordre, et tout le monde dans le salon voit le résultat.

| Étape | Ce qu’elle fait, pour tout le monde | Champs |
| --- | --- | --- |
| update_message | Remplace la carte et ses boutons. Envoie "actions": [] pour retirer les boutons. | message_container , actions , content |
| remove_message | Supprime le message. | Aucun |
| add_reaction | Ajoute une réaction, au nom du membre qui a appuyé. | emoji |
| add_reply | Publie une réponse, au nom du membre qui a appuyé. | 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:" }
      ]
    }
  ]
}
```

## Capter l’appui

Un message avec des boutons revient du webhook avec une stream_url . Garde-la ouverte et chaque appui arrive sous forme d’événement de type action , avec l’id du bouton, le bouton stocké et son payload , et la personne qui a appuyé :

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

Fais le vrai travail, comme ouvrir le portail, puis fixe l’état final de la carte via callback_url . Le fonctionnement du flux et du callback est expliqué sur [mises à jour en direct](https://mss.gs/fr/docs/live-updates).

## Lancer une commande depuis un bouton

Un bouton trigger:{guid} lance l’un des déclencheurs de ta communauté, comme si quelqu’un avait tapé la commande, et lui transmet le payload du bouton. Le déclencheur reçoit :

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

## Champs

| Champ | Type | Ce qu’il fait |
| --- | --- | --- |
| type | string | url:{url} , webhook_action ou trigger:{guid} . Obligatoire. |
| text | string | Le libellé du bouton. Obligatoire ; label fonctionne aussi. |
| color | string | La couleur du bouton, voir plus bas. |
| id | string | Pour webhook_action : quel bouton a été pressé. Unique dans le message. |
| payload | object | Tes données, renvoyées lors d’un appui. |
| triggers | array | Pour webhook_action : les étapes à exécuter. |
| disabled | boolean | Affiche le bouton grisé, et les appuis sont refusés. |

### Couleurs

green , blue et purple dessinent un bouton plein, principal. red , orange et yellow en dessinent un secondaire : utilise-les pour « Refuser », « Annuler » et les autres choix qui demandent de la prudence.

## Erreurs

Quand tu publies un message avec des boutons, mssgs les vérifie d’abord :

| Code | Signification |
| --- | --- |
| INVALID_ACTIONS_FORMAT | actions n’est pas une liste d’objets. |
| INVALID_ACTION_MISSING_FIELDS | Un bouton n’a pas de type ou pas de text . |
| DUPLICATE_ACTION_ID | Deux boutons ont le même id . |
| INVALID_TRIGGERS_FORMAT | triggers n’est pas une liste d’étapes. |
| INVALID_TRIGGER_MISSING_ACTION | Une étape n’a pas d’ action . |
| INVALID_TRIGGER_ACTION_NOT_ALLOWED | Une étape autre que les quatre ci-dessus. |

### Quand quelqu’un appuie

| Code | Signification |
| --- | --- |
| MESSAGE_NOT_FOUND | Le message a été supprimé entre-temps. |
| ACTION_NOT_FOUND | Aucun bouton avec cet id sur le message. |
| ACTION_DISABLED | Le bouton est désactivé. |
| TRIGGER_NOT_FOUND , TRIGGER_NOT_ACTIVE | Le déclencheur visé par un bouton n’existe plus ou est désactivé. |
| TRIGGER_NOT_ALLOWED | Le membre n’a aucun rôle autorisé à utiliser ce déclencheur. |

## Tu viens de l’ancienne documentation ?

## Continuer
