---
title: "Knoppen: interactieve berichten in mssgs"
description: "Knoppen onder een mssgs-kaart: open een link, verander de kaart voor iedereen met één tik, hoor elke druk live of start een commando. Velden, stappen, fouten."
canonical: https://mss.gs/nl/docs/buttons
language: nl
---

# Knoppen toevoegen

Zet knoppen onder elke kaart. Een knop opent een link, verandert de kaart voor iedereen zodra iemand erop tikt, of laat je service weten dat hij is ingedrukt.

## Wat je kunt doen

- **Een link openen** Stuur mensen naar een pagina, een dashboard of een pull request.

- **De kaart veranderen met een tik** Bewerk hem, verwijder hem, reageer of antwoord, direct vanuit de knopdruk, zonder eigen server.

- **Elke druk horen** Je service hoort live wie wat heeft ingedrukt.

- **Een commando uitvoeren** Een knop kan een van de slash-commando's van de community activeren, met data.

In de app

#### Voordeur

Er wordt aangebeld: de kaart verschijnt

#### Voordeur

Een tik op Poort openen: de kaart verandert voor iedereen

Voor de verandering zelf is geen server nodig: de stappen zijn bij het bericht opgeslagen. Je poortcontroller hoort de druk en opent de poort.

- [Snel aan de slag](#quick-start)

- [Drie soorten](#kinds)

- [De kaart veranderen](#steps)

- [De druk horen](#listen)

- [Een commando uitvoeren](#trigger)

- [Velden](#fields)

- [Fouten](#errors)

## Snel aan de slag

### Voeg een actions-lijst toe

Knoppen horen in actions , naast de kaart, in een post via een [webhook](https://mss.gs/nl/docs/webhooks), een antwoord op een [commando](https://mss.gs/nl/docs/commands) of een [update](https://mss.gs/nl/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" }
  ]
}
```

#### v2.1 naar productie uitrollen?

- 2 Kies wat een druk doet Een link, een wijziging aan de kaart, of een aanroep van je service. De drie soorten staan hieronder.

## Drie soorten knoppen

Het type bepaalt wat een druk doet.

| Type | Wat een druk doet | Bereikt jou |
| --- | --- | --- |
| url:{url} | Opent de link. | Nee |
| webhook_action | Voert de stappen uit die je erbij hebt opgeslagen, voor iedereen in het kanaal. | Ja, via de stream_url van het bericht |
| trigger:{guid} | Activeert een van de triggers van de community, met de payload van de knop. | Ja, als nieuw request naar de URL van die trigger |

## De kaart veranderen met een tik

Een webhook_action -knop heeft een lijst stappen in triggers . Bij een druk draaien die op de server van mssgs, op volgorde, en iedereen in het kanaal ziet het resultaat.

| Stap | Wat hij doet, voor iedereen | Velden |
| --- | --- | --- |
| update_message | Vervangt de kaart en zijn knoppen. Stuur "actions": [] om de knoppen weg te halen. | message_container , actions , content |
| remove_message | Verwijdert het bericht. | Geen |
| add_reaction | Voegt een reactie toe, namens het lid dat drukte. | emoji |
| add_reply | Post een antwoord, namens het lid dat drukte. | 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:" }
      ]
    }
  ]
}
```

## De druk horen

Een bericht met knoppen komt van de webhook terug met een stream_url . Houd die open en elke druk komt binnen als event van het type action , met het id van de knop, de opgeslagen knop met zijn payload , en wie er drukte:

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

Doe het echte werk, zoals de poort openen, en zet daarna de eindstand van de kaart via callback_url . Hoe de stream en de callback werken lees je bij [live-updates](https://mss.gs/nl/docs/live-updates).

## Een commando uitvoeren vanaf een knop

Een trigger:{guid} -knop activeert een van de triggers van je community, alsof iemand het commando had getypt, en geeft de payload van de knop mee. De trigger ontvangt:

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

## Velden

| Veld | Type | Wat het doet |
| --- | --- | --- |
| type | string | url:{url} , webhook_action of trigger:{guid} . Verplicht. |
| text | string | De tekst op de knop. Verplicht; label werkt ook. |
| color | string | De kleur van de knop, zie hieronder. |
| id | string | Voor webhook_action : welke knop is ingedrukt. Uniek binnen het bericht. |
| payload | object | Jouw data, die je bij een druk terugkrijgt. |
| triggers | array | Voor webhook_action : de stappen die draaien. |
| disabled | boolean | Toont de knop grijs, en een druk erop wordt geweigerd. |

### Kleuren

green , blue en purple geven een gevulde, primaire knop. red , orange en yellow geven een secundaire: gebruik die voor "Afwijzen", "Annuleren" en andere keuzes waar je voorzichtig mee moet zijn.

## Fouten

Post je een bericht met knoppen, dan controleert mssgs die eerst:

| Code | Betekenis |
| --- | --- |
| INVALID_ACTIONS_FORMAT | actions is geen lijst van objecten. |
| INVALID_ACTION_MISSING_FIELDS | Een knop heeft geen type of geen text . |
| DUPLICATE_ACTION_ID | Twee knoppen hebben hetzelfde id . |
| INVALID_TRIGGERS_FORMAT | triggers is geen lijst van stappen. |
| INVALID_TRIGGER_MISSING_ACTION | Een stap heeft geen action . |
| INVALID_TRIGGER_ACTION_NOT_ALLOWED | Een andere stap dan de vier hierboven. |

### Als iemand drukt

| Code | Betekenis |
| --- | --- |
| MESSAGE_NOT_FOUND | Het bericht is intussen verwijderd. |
| ACTION_NOT_FOUND | Het bericht heeft geen knop met dat id. |
| ACTION_DISABLED | De knop is uitgeschakeld. |
| TRIGGER_NOT_FOUND , TRIGGER_NOT_ACTIVE | De trigger waar een knop naar wijst, bestaat niet meer of staat uit. |
| TRIGGER_NOT_ALLOWED | Het lid heeft geen rol die die trigger mag gebruiken. |

## Kom je van de oude docs?

## Verder bouwen
