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
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.Ta emot meddelandet
När en medlem skickar ett meddelande som börjar med
/weathergö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=..." }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
Inställningar
Varje trigger har de här inställningarna under Hantera community → Triggers.
| Inställning | Vad den gör |
|---|---|
| Triggernamn | Vad triggern heter, visas bredvid kommandot i väljaren. |
| Ord att matcha | Texten ett meddelande måste börja med, som /weather. Ett snedstreck är vanligt men inget krav. |
| URL-endpoint | Dit mssgs skickar meddelandet. |
| Webhook-hemlighet | Valfri. mssgs signerar varje anrop med den, se nedan. |
| Aktiv | Stäng av triggern utan att ta bort den. |
| Posta matchande meddelande | Om medlemmens eget /weather Amsterdam ska stå kvar i kanalen ovanför ditt svar. |
| Visa laddningssvar | Visa ett laddningskort medan din tjänst arbetar. |
| Tillåtna användargrupper | Bara medlemmar med de här rollerna utlöser den. För alla andra är det ett vanligt meddelande. |
/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ält | Typ | Vad det är |
|---|---|---|
server_guid | string | Communityn. |
channel_guid | string | Kanalen där meddelandet skickades. |
trigger_match | string | Kommandot som matchade, som /weather. |
message.content | string | Hela meddelandet, med kommandot. |
message.member_guid | string | Medlemmen som skickade det, i den här communityn. |
message.user_guid | string | Samma persons konto, detsamma i alla communities. |
message.group_guids | array | Rollerna som medlemmen har. |
message.cms | number | När det skickades, i millisekunder. |
message.is_action_button | boolean | true när en knapp utlöste triggern, inte ett skrivet kommando. |
message.action_payload | object | Knappens payload, vid knapptryck. |
callback_url | string | Uppdatera eller radera ditt svar senare, i 30 minuter. |
stream_url | string | En liveström av svar, reaktioner och knapptryck på ditt svar, i 10 minuter. |
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ält | Typ | Vad det är |
|---|---|---|
message_container | object | Kortet. Alla fält för meddelandekort fungerar här, också statuspillen, märket, diff-statistiken och det hopfällda resonemanget. |
title, description, color, ... | string | Kortform: kortfält på översta nivån slås in i ett kort åt dig. |
actions | array | Knappar under kortet. Se knappar. |
visible_to_member_guids | array | Bara de här medlemmarna ser svaret. Se privata svar. |
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.
// 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 } })
});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.
{
"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.
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äns | Värde |
|---|---|
| Tid att svara | 5 sekunder |
| Svarets storlek | 4 MB |
| Kommandon per medlem | 5 per 5 sekunder |
| Uppdatera svaret efteråt | 30 minuter, via callback_url |
| Liveström av svaret | 10 minuter, via stream_url |