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 lienEnvoie les gens vers une page, un tableau de bord ou une pull request.
- Modifier la carte d’un appuiLa modifier, la supprimer, réagir ou répondre, directement à l’appui, sans serveur à toi.
- Capter chaque appuiTon service apprend en direct qui a appuyé sur quoi.
- Lancer une commandeUn bouton peut lancer l’une des commandes slash de la communauté, avec des données.
Dans l'app
Quelqu’un sonne : la carte apparaît
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
Ajoute une liste actions
Les boutons vont dans
actions, à côté de la carte, dans une publication par webhook, une réponse de commande ou une mise à jour.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" } ] }deploysChoisis 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 |
{
"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é :
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.
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 :
{
"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.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 ?
button avec des étapes ws:send, local:update_message et local:remove_message, les conditions previous:success et expire_in_seconds ne fonctionnent plus pour les expéditeurs externes. Utilise webhook_action avec les étapes ci-dessus : elles s’appliquent pour tout le monde, pas seulement pour la personne qui a appuyé.