Hoppa till huvudinnehållet
Utvecklare Slash-kommandon

Lägg till slash-kommandon

Ge din community egna /kommandon. När en medlem skriver ett skickar mssgs meddelandet till din webbtjänst och postar det den svarar: ett kort, knappar, ett svar som bara den medlemmen ser.

Det här kan du göra

  • Svara med ett kortSvara med JSON så visas det i kanalen som ett kort.
  • Vet vem som frågadeDu får medlemmen och medlemmens roller, så att du kan kontrollera vem som får göra vad.
  • Svara privatVisa svaret bara för medlemmen som frågade.
  • Ta den tid du behöverSvara med ett laddningskort inom 5 sekunder och gör klart via callback-URL:en.

I appen

Skriv / så visas communityns kommandon

Din tjänst svarar, mssgs postar kortet

Väljaren och kortet är appens egna. Sidfoten visar vem som använde vilket kommando.

Snabbstart

  1. Skapa triggern

    Öppna Hantera community → Triggers för din community i skrivbordsappen och lägg till en: kommandot den reagerar på, som /weather, och URL:en till din webbtjänst.

  2. Ta emot meddelandet

    När en medlem skickar ett meddelande som börjar med /weather gör mssgs en POST med det till din 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=..."
    }
  3. Svara med JSON

    Svara inom 5 sekunder med en 2xx-status och JSON. Det blir ett kort i kanalen.

    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%" }
        ]
      }
    }
    general
    maya18:45
    /weather Amsterdam
    System
    Meddelande från Weekend Crew

    Amsterdam

    14 °C, lätt regn till 16:00
    Wind
    SW 18 km/h
    Humidity
    82%

Inställningar

Varje trigger har de här inställningarna under Hantera community → Triggers.

InställningVad den gör
TriggernamnVad triggern heter, visas bredvid kommandot i väljaren.
Ord att matchaTexten ett meddelande måste börja med, som /weather. Ett snedstreck är vanligt men inget krav.
URL-endpointDit mssgs skickar meddelandet.
Webhook-hemlighetValfri. mssgs signerar varje anrop med den, se nedan.
AktivStäng av triggern utan att ta bort den.
Posta matchande meddelandeOm medlemmens eget /weather Amsterdam ska stå kvar i kanalen ovanför ditt svar.
Visa laddningssvarVisa ett laddningskort medan din tjänst arbetar.
Tillåtna användargrupperBara medlemmar med de här rollerna utlöser den. För alla andra är det ett vanligt meddelande.
Matchningen sker på början av meddelandet. Undvik kommandon som börjar som varandra, som /deploy och /deploy-prod: vilket av dem som utlöses är inte bestämt. Meddelanden från bottar och vidarebefordrade meddelanden utlöser aldrig en trigger.

Vad du tar emot

En POST med en JSON-body. Bland headers finns User-Agent: mssgs-webhook/1.0.

FältTypVad det är
server_guidstringCommunityn.
channel_guidstringKanalen där meddelandet skickades.
trigger_matchstringKommandot som matchade, som /weather.
message.contentstringHela meddelandet, med kommandot.
message.member_guidstringMedlemmen som skickade det, i den här communityn.
message.user_guidstringSamma persons konto, detsamma i alla communities.
message.group_guidsarrayRollerna som medlemmen har.
message.cmsnumberNär det skickades, i millisekunder.
message.is_action_buttonbooleantrue när en knapp utlöste triggern, inte ett skrivet kommando.
message.action_payloadobjectKnappens payload, vid knapptryck.
callback_urlstringUppdatera eller radera ditt svar senare, i 30 minuter.
stream_urlstringEn liveström av svar, reaktioner och knapptryck på ditt svar, i 10 minuter.
När en hemlighet är inställd har anropet X-Mssgs-Signature: sha256=<hex>: en HMAC-SHA256 av den råa bodyn med din hemlighet. Räkna ut den själv och jämför innan du litar på anropet.

Kontrollera vem som får göra vad

Jämför message.group_guids med de roller du litar på, till exempel för att bara låta moderatorer köra /ban. Vill du hålla ett kommando helt borta från alla andra anger du dess roller i triggerns inställningar.

Vad du svarar

Valfri 2xx-status med en JSON-body, upp till 4 MB. Skicka minst en av message_container och actions.

FältTypVad det är
message_containerobjectKortet. Alla fält för meddelandekort fungerar här, också statuspillen, märket, diff-statistiken och det hopfällda resonemanget.
title, description, color, ...stringKortform: kortfält på översta nivån slås in i ett kort åt dig.
actionsarrayKnappar under kortet. Se knappar.
visible_to_member_guidsarrayBara de här medlemmarna ser svaret. Se privata svar.
Kortets sidhuvud visar din communitys namn, och sidfoten visar vem som använde kommandot: "maya triggered /weather command". Avataren är medlemmens.
Svara alltid med ett kort: raden content visas inte på kortet för ett kommandosvar, så lägg det viktiga i själva kortet.

Fem sekunder

mssgs väntar 5 sekunder på ditt svar. Behöver du längre tid svarar du direkt med ett laddningskort och gör klart via callback_url, som gäller i 30 minuter.

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 } })
});
Om din tjänst inte svarar i tid, eller svarar med ett fel, ser medlemmen som använde kommandot ett rött "Failed"-kort. Ingen annan ser det.

Privata svar

Lägg medlems-id:n i visible_to_member_guids så ser bara de medlemmarna ditt svar. Använd member_guid från anropet för att bara svara personen som frågade.

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>"]
}

Ett komplett exempel

Ett /weather-kommando i Node.js med Express, som svarar med ett kort.

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);

Gränser

GränsVärde
Tid att svara5 sekunder
Svarets storlek4 MB
Kommandon per medlem5 per 5 sekunder
Uppdatera svaret efteråt30 minuter, via callback_url
Liveström av svaret10 minuter, via stream_url

Bygg vidare