---
title: "Slash-commando's: eigen /commando's in je mssgs-community"
description: "Eigen slash-commando's voor je mssgs-community: mssgs stuurt het bericht naar je webservice en post je JSON-antwoord als kaart. Instellen, timing en limieten."
canonical: https://mss.gs/nl/docs/commands
language: nl
---

# Slash-commando's toevoegen

Geef je community eigen /commando's . Typt een lid er een, dan stuurt mssgs het bericht naar je webservice en post wat die antwoordt: een kaart, knoppen, een antwoord dat alleen dat lid ziet.

## Wat je kunt doen

- **Antwoorden met een kaart** Antwoord met JSON en het verschijnt als kaart in het kanaal.

- **Weten wie het vroeg** Je krijgt het lid en zijn rollen mee, zodat je kunt controleren wie wat mag.

- **Privé antwoorden** Toon het antwoord alleen aan het lid dat het vroeg.

- **Neem de tijd** Antwoord binnen 5 seconden met een loader en maak het daarna af via de callback-URL.

In de app

Typ / en de commando's van de community verschijnen

#### Amsterdam

Je service antwoordt, mssgs post de kaart

De lijst en de kaart zijn precies zoals de app ze toont. De voettekst zegt wie welk commando gebruikte.

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

- [Instellingen](#settings)

- [Wat je ontvangt](#request)

- [Wat je antwoordt](#reply)

- [Vijf seconden](#timing)

- [Privé antwoorden](#private)

- [Een volledig voorbeeld](#example)

- [Limieten](#limits)

## Snel aan de slag

- 1 Maak de trigger aan Open in de desktop-app bij je community **Server beheren → Triggers** en voeg er een toe: het commando waarop hij reageert, zoals /weather , en de URL van je webservice.

### Ontvang het bericht

Stuurt een lid een bericht dat begint met /weather , dan POST mssgs het naar je URL:

```json
{
  "server_guid": "abc12345-...",
  "channel_guid": "def67890-...",
  "trigger_match": "/weather",
  "message": {
    "id": "d01ZZdef6-...",
    "content": "/weather Amsterdam",
    "member_guid": "member-guid",
    "user_guid": "user-guid",
    "group_guids": ["group-guid-1", "group-guid-2"],
    "cms": 1790000000000
  },
  "callback_url": "https://mss.gs/api/v1/trigger-callback/...",
  "stream_url": "https://mss.gs/api/v1/instant/...?token=..."
}
```

### Antwoord met JSON

Antwoord binnen 5 seconden met een 2xx-status en JSON. Dat wordt een kaart in het kanaal.

```json
{
  "message_container": {
    "color": "blue",
    "title": "Amsterdam",
    "description": "14 °C, light rain until 16:00",
    "fields": [
      { "field": "Wind", "value": "SW 18 km/h" },
      { "field": "Humidity", "value": "82%" }
    ]
  }
}
```

#### Amsterdam

## Instellingen

Elke trigger heeft deze instellingen in **Server beheren → Triggers**.

| Instelling | Wat het doet |
| --- | --- |
| Triggernaam | Hoe de trigger heet, getoond naast het commando in de lijst. |
| Woord om te matchen | De tekst waarmee een bericht moet beginnen, zoals /weather . Een slash is gebruikelijk, niet verplicht. |
| URL-eindpunt | Waar mssgs het bericht naartoe stuurt. |
| Webhook-secret | Optioneel. mssgs ondertekent er elk request mee, zie hieronder. |
| Actief | Zet de trigger uit zonder hem te verwijderen. |
| Origineel bericht posten | Of het eigen bericht van het lid, zoals /weather Amsterdam , boven je antwoord in het kanaal blijft staan. |
| Laadbericht tonen | Toon een laadkaart terwijl je service bezig is. |
| Toegestane gebruikersgroepen | Alleen leden met deze rollen activeren hem. Voor iedereen anders is het een gewoon bericht. |

## Wat je ontvangt

Een POST met een JSON-body. In de headers staat onder meer User-Agent: mssgs-webhook/1.0 .

| Veld | Type | Wat het is |
| --- | --- | --- |
| server_guid | string | De community. |
| channel_guid | string | Het kanaal waarin het bericht is verstuurd. |
| trigger_match | string | Het commando dat overeenkwam, zoals /weather . |
| message.content | string | Het hele bericht, inclusief het commando. |
| message.member_guid | string | Het lid dat het stuurde, in deze community. |
| message.user_guid | string | Het account van diezelfde persoon, hetzelfde in elke community. |
| message.group_guids | array | De rollen die het lid heeft. |
| message.cms | number | Wanneer het is verstuurd, in milliseconden. |
| message.is_action_button | boolean | true als een knop de trigger activeerde, geen getypt commando. |
| message.action_payload | object | De payload van de knop, bij knopdrukken. |
| callback_url | string | Werk je antwoord later bij of verwijder het, 30 minuten lang. |
| stream_url | string | Een live stream van antwoorden, reacties en knopdrukken op je antwoord, 10 minuten lang. |

### Controleren wie wat mag

Vergelijk message.group_guids met de rollen die je vertrouwt, bijvoorbeeld om alleen moderators /ban te laten gebruiken. Wil je een commando helemaal afschermen voor alle anderen, stel dan de rollen in bij de instellingen van de trigger.

## Wat je antwoordt

Elke 2xx-status met een JSON-body, tot 4 MB. Stuur minstens een van message_container of actions .

| Veld | Type | Wat het is |
| --- | --- | --- |
| message_container | object | De kaart. Elk veld van berichtkaarten werkt hier, ook de statuspill, de badge, de diff-stats en de ingeklapte redenering. |
| title , description , color , ... | string | Verkorte vorm: kaartvelden op het hoogste niveau worden voor je in een kaart gezet. |
| actions | array | Knoppen onder de kaart. Zie knoppen. |
| visible_to_member_guids | array | Alleen deze leden zien het antwoord. Zie privé antwoorden. |

## Vijf seconden

mssgs wacht 5 seconden op je antwoord. Heb je meer tijd nodig, antwoord dan meteen met een loaderkaart en maak het af via callback_url , die 30 minuten geldig blijft.

```javascript
// Answer within 5 seconds with a loader...
res.json({ message_container: { loader: true, loader_text: 'Looking it up…' } });

// ...then finish in your own time with the callback URL.
await fetch(req.body.callback_url, {
  method: 'PUT',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ message_container: { color: 'blue', title: 'Done', description: result } })
});
```

## Privé antwoorden

Zet member-id's in visible_to_member_guids en alleen die leden zien je antwoord. Gebruik de member_guid uit het request om alleen degene te antwoorden die het vroeg.

```json
{
  "message_container": {
    "color": "green",
    "title": "You're on the list",
    "description": "Only you can see this reply."
  },
  "visible_to_member_guids": ["<message.member_guid from the request>"]
}
```

## Een volledig voorbeeld

Een /weather -commando in Node.js met Express, dat antwoordt met een kaart.

```javascript
import express from 'express';

const app = express();
app.use(express.json());

app.post('/mssgs/weather', async (req, res) => {
  const city = req.body.message.content.replace('/weather', '').trim() || 'Amsterdam';
  const w = await getWeather(city); // your own lookup

  res.json({
    message_container: {
      color: 'blue',
      title: city,
      description: `${w.temp} °C, ${w.summary}`,
      fields: [
        { field: 'Wind', value: w.wind },
        { field: 'Humidity', value: `${w.humidity}%` }
      ]
    }
  });
});

app.listen(3000);
```

## Limieten

| Limiet | Waarde |
| --- | --- |
| Tijd om te antwoorden | 5 seconden |
| Grootte van het antwoord | 4 MB |
| Commando's per lid | 5 per 5 seconden |
| Het antwoord achteraf bijwerken | 30 minuten, via callback_url |
| Live stream van het antwoord | 10 minuten, via stream_url |

## Verder bouwen
