Buttons hinzufügen
Setz Buttons unter jede Karte. Ein Button öffnet einen Link, ändert die Karte für alle, sobald jemand tippt, oder sagt deinem Dienst, dass er gedrückt wurde.
Was du damit machen kannst
- Einen Link öffnenSchick Leute auf eine Seite, ein Dashboard oder einen Pull Request.
- Die Karte per Tipp ändernBearbeiten, entfernen, reagieren oder antworten, direkt beim Drücken, ohne eigenen Server.
- Jeden Druck mitbekommenDein Dienst erfährt live, wer was gedrückt hat.
- Einen Befehl ausführenEin Button kann einen der Slash-Befehle der Community auslösen, mit Daten.
In der App
Jemand klingelt: Die Karte erscheint
Ein Tipp auf Tor öffnen: Die Karte ändert sich für alle
Für die Änderung selbst braucht es keinen Server: Die Schritte sind mit der Nachricht gespeichert. Deine Torsteuerung hört den Druck und öffnet das Tor.
Schnellstart
Eine actions-Liste hinzufügen
Buttons gehören in
actions, neben die Karte: in einem Post per Webhook, in der Antwort auf einen Befehl oder in einem Update.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" } ] }deploysFestlegen, was ein Druck tut
Ein Link, eine Änderung an der Karte oder ein Aufruf deines Diensts. Die drei Arten stehen unten.
Drei Arten von Buttons
Der type entscheidet, was ein Druck tut.
| Typ | Was ein Druck tut | Kommt bei dir an |
|---|---|---|
url:{url} | Öffnet den Link. | Nein |
webhook_action | Führt die Schritte aus, die du mit ihm gespeichert hast, für alle im Kanal. | Ja, über die stream_url der Nachricht |
trigger:{guid} | Löst einen der Trigger der Community mit der payload des Buttons aus. | Ja, als neuer Request an die URL dieses Triggers |
Die Karte per Tipp ändern
Ein webhook_action-Button trägt in triggers eine Liste von Schritten. Bei einem Druck laufen sie der Reihe nach auf dem mssgs-Server, und alle im Kanal sehen das Ergebnis.
| Schritt | Was er tut, für alle | Felder |
|---|---|---|
update_message | Ersetzt die Karte und ihre Buttons. Sende "actions": [], um die Buttons zu entfernen. | message_container, actions, content |
remove_message | Löscht die Nachricht. | Keine |
add_reaction | Fügt eine Reaktion hinzu, im Namen des Mitglieds, das gedrückt hat. | emoji |
add_reply | Postet eine Antwort, im Namen des Mitglieds, das gedrückt hat. | 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:" }
]
}
]
}Den Druck hören
Eine Nachricht mit Buttons kommt vom Webhook mit einer stream_url zurück. Halte sie offen, und jeder Druck kommt als Event vom Typ action an, mit der ID des Buttons, dem gespeicherten Button samt payload und der Person, die gedrückt hat:
data: {"type": "action", "message_id": "...", "action_id": "open_gate", "action": {"id": "open_gate", "payload": {"door": "front"}, ...}, "member_guid": "member-guid", "member": {...}, "ts": 1790000000000}Erledige die eigentliche Arbeit, etwa das Tor öffnen, und setz dann über callback_url den Endzustand der Karte. Wie Stream und Callback funktionieren, steht unter Live-Updates.
Einen Befehl per Button ausführen
Ein trigger:{guid}-Button löst einen der Trigger deiner Community aus, als hätte jemand den Befehl getippt, und übergibt die payload des Buttons. Der Trigger bekommt:
{
"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.Felder
| Feld | Typ | Was es tut |
|---|---|---|
type | string | url:{url}, webhook_action oder trigger:{guid}. Pflicht. |
text | string | Die Beschriftung des Buttons. Pflicht; label geht auch. |
color | string | Die Farbe des Buttons, siehe unten. |
id | string | Für webhook_action: welcher Button gedrückt wurde. Innerhalb der Nachricht eindeutig. |
payload | object | Deine Daten, die du bei einem Druck zurückbekommst. |
triggers | array | Für webhook_action: die Schritte, die laufen sollen. |
disabled | boolean | Zeigt den Button ausgegraut, und Drücke werden abgelehnt. |
Farben
green, blue und purple ergeben einen gefüllten, primären Button. red, orange und yellow ergeben einen sekundären: Nimm sie für „Ablehnen“, „Abbrechen“ und andere vorsichtige Entscheidungen.
Fehler
Wenn du eine Nachricht mit Buttons postest, prüft mssgs sie zuerst:
| Code | Bedeutung |
|---|---|
INVALID_ACTIONS_FORMAT | actions ist keine Liste von Objekten. |
INVALID_ACTION_MISSING_FIELDS | Ein Button hat keinen type oder keinen text. |
DUPLICATE_ACTION_ID | Zwei Buttons haben dieselbe id. |
INVALID_TRIGGERS_FORMAT | triggers ist keine Liste von Schritten. |
INVALID_TRIGGER_MISSING_ACTION | Ein Schritt hat keine action. |
INVALID_TRIGGER_ACTION_NOT_ALLOWED | Ein anderer Schritt als die vier oben. |
Wenn jemand drückt
| Code | Bedeutung |
|---|---|
MESSAGE_NOT_FOUND | Die Nachricht wurde inzwischen gelöscht. |
ACTION_NOT_FOUND | Die Nachricht hat keinen Button mit dieser ID. |
ACTION_DISABLED | Der Button ist deaktiviert. |
TRIGGER_NOT_FOUND, TRIGGER_NOT_ACTIVE | Der Trigger, auf den ein Button zeigt, ist weg oder abgeschaltet. |
TRIGGER_NOT_ALLOWED | Das Mitglied hat keine Rolle, die diesen Trigger benutzen darf. |
Kommst du von der alten Doku?
button mit ws:send-Schritten, local:update_message und local:remove_message, previous:success-Bedingungen und expire_in_seconds funktionieren für externe Absender nicht mehr. Nimm webhook_action mit den Schritten oben: Die erreichen alle, nicht nur die Person, die gedrückt hat.