Gå til hovedindhold
Udviklere Slash-kommandoer

Tilføj slash-kommandoer

Giv dit fællesskab sine egne /kommandoer. Når et medlem skriver en, sender mssgs beskeden til din webtjeneste og poster det, den svarer: et kort, knapper, et svar, som kun medlemmet kan se.

Det kan du

  • Svar med et kortSvar med JSON, så dukker det op i kanalen som et kort.
  • Vid, hvem der spurgteDu får medlemmet og medlemmets roller, så du kan tjekke, hvem der må hvad.
  • Svar privatVis kun svaret for det medlem, der spurgte.
  • Tag den tid, du skal brugeSvar med en loader inden for 5 sekunder, og gør det færdigt gennem callback-URL'en.

I appen

Skriv /, så vises fællesskabets kommandoer

Din tjeneste svarer, mssgs poster kortet

Vælgeren og kortet er appens egne. Bunden af kortet viser, hvem der brugte hvilken kommando.

Kom godt i gang

  1. Opret triggeren

    Åbn Administrer fællesskab → Triggere for dit fællesskab i desktop-appen, og tilføj en: den kommando, den reagerer på, som /weather, og URL'en til din webtjeneste.

  2. Modtag beskeden

    Når et medlem sender en besked, der starter med /weather, sender mssgs den med POST til 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. Svar med JSON

    Svar inden for 5 sekunder med en 2xx-status og JSON. Det bliver til et 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
    Besked fra Weekend Crew

    Amsterdam

    14 °C, let regn indtil 16:00
    Wind
    SW 18 km/h
    Humidity
    82%

Indstillinger

Hver trigger har disse indstillinger under Administrer fællesskab → Triggere.

IndstillingHvad den gør
TriggernavnHvad triggeren hedder, vist ved siden af kommandoen i vælgeren.
Ord, der skal matchesDen tekst, en besked skal starte med, som /weather. En skråstreg er det normale, men ikke påkrævet.
URL-endpointHvor mssgs sender beskeden hen.
Webhook-hemmelighedValgfri. mssgs signerer hver request med den, se nedenfor.
AktivSlå triggeren fra uden at slette den.
Post den matchende beskedOm medlemmets egen /weather Amsterdam bliver stående i kanalen over dit svar.
Vis indlæsningssvarVis et indlæsningskort, mens din tjeneste arbejder.
Tilladte brugergrupperKun medlemmer med disse roller udløser den. For alle andre er det en almindelig besked.
Der matches på starten af beskeden. Undgå kommandoer, der begynder med hinanden, som /deploy og /deploy-prod: hvilken af dem der udløses, ligger ikke fast. Beskeder fra bots og videresendte beskeder udløser aldrig en trigger.

Det modtager du

En POST med en JSON-body. Headerne indeholder User-Agent: mssgs-webhook/1.0.

FeltTypeHvad det er
server_guidstringFællesskabet.
channel_guidstringDen kanal, beskeden blev sendt i.
trigger_matchstringDen kommando, der matchede, som /weather.
message.contentstringHele beskeden, inklusive kommandoen.
message.member_guidstringDet medlem, der sendte den, i dette fællesskab.
message.user_guidstringDen samme persons konto, den samme i alle fællesskaber.
message.group_guidsarrayMedlemmets roller.
message.cmsnumberHvornår den blev sendt, i millisekunder.
message.is_action_buttonbooleantrue, når en knap udløste triggeren og ikke en skrevet kommando.
message.action_payloadobjectKnappens payload, ved tryk på knapper.
callback_urlstringOpdatér eller slet dit svar senere, i 30 minutter.
stream_urlstringEn live stream af svar, reaktioner og tryk på knapper på dit svar, i 10 minutter.
Er der sat en hemmelighed, har requesten X-Mssgs-Signature: sha256=<hex>: en HMAC-SHA256 af den rå body med din hemmelighed. Beregn den selv, og sammenlign, før du stoler på requesten.

Tjek, hvem der må hvad

Sammenlign message.group_guids med de roller, du stoler på, for eksempel for kun at lade moderatorer køre /ban. Vil du holde en kommando helt væk fra alle andre, så sæt dens roller i triggerens indstillinger.

Det svarer du

En hvilken som helst 2xx-status med en JSON-body på op til 4 MB. Send mindst én af message_container eller actions.

FeltTypeHvad det er
message_containerobjectKortet. Alle felter fra beskedkort virker her, inklusive statuspillen, mærket, diff-statistikken og det sammenfoldede ræsonnement.
title, description, color, ...stringGenvej: kortfelter på øverste niveau bliver pakket ind i et kort for dig.
actionsarrayKnapper under kortet. Se knapper.
visible_to_member_guidsarrayKun disse medlemmer ser svaret. Se private svar.
Kortets header viser dit fællesskabs navn, og bunden viser, hvem der brugte kommandoen: "maya triggered /weather command". Avataren er medlemmets.
Svar altid med et kort: linjen content vises ikke på kortet i et kommandosvar, så læg det vigtige i selve kortet.

Fem sekunder

mssgs venter 5 sekunder på dit svar. Har du brug for mere tid, så svar med det samme med et loader-kort, og gør det færdigt gennem callback_url, som er gyldig i 30 minutter.

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 } })
});
Svarer din tjeneste ikke i tide, eller svarer den med en fejl, ser det medlem, der brugte kommandoen, et rødt "Failed"-kort. Ingen andre ser det.

Private svar

Læg medlems-id'er i visible_to_member_guids, så er det kun dem, der ser dit svar. Brug member_guid fra requesten, hvis kun den, der spurgte, skal se svaret.

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

Et fuldt eksempel

En /weather-kommando i Node.js med Express, der svarer med et 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ænseVærdi
Tid til at svare5 sekunder
Svarets størrelse4 MB
Kommandoer pr. medlem5 hvert 5. sekund
Opdatering af svaret bagefter30 minutter, gennem callback_url
Live stream af svaret10 minutter, gennem stream_url

Byg videre