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
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.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=..." }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
Indstillinger
Hver trigger har disse indstillinger under Administrer fællesskab → Triggere.
| Indstilling | Hvad den gør |
|---|---|
| Triggernavn | Hvad triggeren hedder, vist ved siden af kommandoen i vælgeren. |
| Ord, der skal matches | Den tekst, en besked skal starte med, som /weather. En skråstreg er det normale, men ikke påkrævet. |
| URL-endpoint | Hvor mssgs sender beskeden hen. |
| Webhook-hemmelighed | Valgfri. mssgs signerer hver request med den, se nedenfor. |
| Aktiv | Slå triggeren fra uden at slette den. |
| Post den matchende besked | Om medlemmets egen /weather Amsterdam bliver stående i kanalen over dit svar. |
| Vis indlæsningssvar | Vis et indlæsningskort, mens din tjeneste arbejder. |
| Tilladte brugergrupper | Kun medlemmer med disse roller udløser den. For alle andre er det en almindelig besked. |
/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.
| Felt | Type | Hvad det er |
|---|---|---|
server_guid | string | Fællesskabet. |
channel_guid | string | Den kanal, beskeden blev sendt i. |
trigger_match | string | Den kommando, der matchede, som /weather. |
message.content | string | Hele beskeden, inklusive kommandoen. |
message.member_guid | string | Det medlem, der sendte den, i dette fællesskab. |
message.user_guid | string | Den samme persons konto, den samme i alle fællesskaber. |
message.group_guids | array | Medlemmets roller. |
message.cms | number | Hvornår den blev sendt, i millisekunder. |
message.is_action_button | boolean | true, når en knap udløste triggeren og ikke en skrevet kommando. |
message.action_payload | object | Knappens payload, ved tryk på knapper. |
callback_url | string | Opdatér eller slet dit svar senere, i 30 minutter. |
stream_url | string | En live stream af svar, reaktioner og tryk på knapper på dit svar, i 10 minutter. |
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.
| Felt | Type | Hvad det er |
|---|---|---|
message_container | object | Kortet. Alle felter fra beskedkort virker her, inklusive statuspillen, mærket, diff-statistikken og det sammenfoldede ræsonnement. |
title, description, color, ... | string | Genvej: kortfelter på øverste niveau bliver pakket ind i et kort for dig. |
actions | array | Knapper under kortet. Se knapper. |
visible_to_member_guids | array | Kun disse medlemmer ser svaret. Se private svar. |
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.
// 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 } })
});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.
{
"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.
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ænse | Værdi |
|---|---|
| Tid til at svare | 5 sekunder |
| Svarets størrelse | 4 MB |
| Kommandoer pr. medlem | 5 hvert 5. sekund |
| Opdatering af svaret bagefter | 30 minutter, gennem callback_url |
| Live stream af svaret | 10 minutter, gennem stream_url |