Adj hozzá perjeles parancsokat
Adj a közösségednek saját /parancsokat. Amikor egy tag beír egyet, az mssgs elküldi az üzenetet a webszolgáltatásodnak, és közzéteszi, amit az válaszol: egy kártyát, gombokat, vagy egy csak neki látható választ.
Mire használhatod
- Válaszolj kártyávalVálaszolj JSON-nal, és a csatornában kártyaként jelenik meg.
- Tudd, ki kérdezettMegkapod a tagot és a szerepköreit, így ellenőrizheted, ki mit tehet meg.
- Válaszolj privátbanA választ csak az a tag látja, aki kérdezett.
- Nem kell sietnedVálaszolj 5 másodpercen belül egy betöltésjelzővel, majd fejezd be a callback URL-en keresztül.
Az alkalmazásban
Gépelj be egy / jelet, és megjelennek a közösség parancsai
A szolgáltatásod válaszol, az mssgs közzéteszi a kártyát
A parancsválasztó és a kártya az alkalmazás saját felülete. A lábléc megmutatja, ki melyik parancsot használta.
Gyors kezdés
Hozd létre a triggert
Az asztali alkalmazásban nyisd meg a közösséged Manage Server → Triggers menüpontját, és adj hozzá egy triggert: a parancsot, amelyre reagál, például
/weather, és a webszolgáltatásod URL-jét.Fogadd az üzenetet
Amikor egy tag
/weatherkezdetű üzenetet küld, az mssgs POST-kéréssel elküldi az URL-edre: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=..." }Válaszolj JSON-nal
Válaszolj 5 másodpercen belül 2xx státusszal és JSON-nal. Ebből kártya lesz a csatornában.
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
Beállítások
Minden triggernek ezek a beállításai vannak a Manage Server → Triggers menüpontban.
| Beállítás | Mit csinál |
|---|---|
| Trigger Name | A trigger neve, amely a parancs mellett jelenik meg a választóban. |
| Word to Match | A szöveg, amellyel az üzenetnek kezdődnie kell, például /weather. A perjel szokásos, de nem kötelező. |
| URL Endpoint | Ahová az mssgs elküldi az üzenetet. |
| Webhook Secret | Opcionális. Az mssgs minden kérést aláír vele, lásd lejjebb. |
| Active | Kikapcsolja a triggert anélkül, hogy törölnéd. |
| Post Matching Message | Megmarad-e a tag saját /weather Amsterdam üzenete a csatornában a válaszod fölött. |
| Show Loading Reply | Betöltési kártyát mutat, amíg a szolgáltatásod dolgozik. |
| Allowed User Groups | Csak ezeknek a szerepköröknek a tagjai indíthatják el. Mindenki más számára ez egy közönséges üzenet. |
/deploy és a /deploy-prod: nem garantált, melyik indul el. Botok üzenetei és továbbított üzenetek soha nem indítanak el triggert.Mit kapsz
Egy POST-kérést JSON-törzzsel. A fejlécek között ott van a User-Agent: mssgs-webhook/1.0.
| Mező | Típus | Mi ez |
|---|---|---|
server_guid | string | A közösség. |
channel_guid | string | A csatorna, ahová az üzenetet küldték. |
trigger_match | string | Az egyező parancs, például /weather. |
message.content | string | A teljes üzenet, a paranccsal együtt. |
message.member_guid | string | A küldő tag ebben a közösségben. |
message.user_guid | string | Ugyanannak a személynek a fiókja, minden közösségben ugyanaz. |
message.group_guids | array | A tag szerepkörei. |
message.cms | number | A küldés ideje, ezredmásodpercben. |
message.is_action_button | boolean | true, ha egy gomb indította a triggert, nem begépelt parancs. |
message.action_payload | object | A gomb payload értéke, gombnyomásoknál. |
callback_url | string | Ezzel később, 30 percig frissítheted vagy törölheted a válaszodat. |
stream_url | string | A válaszodra érkező válaszok, reakciók és gombnyomások élő streamje, 10 percig. |
X-Mssgs-Signature: sha256=<hex> fejlécet: a nyers törzs HMAC-SHA256 értékét a titkos kulcsoddal. Számold ki magad, és hasonlítsd össze, mielőtt megbízol a kérésben.Ki mit tehet meg
Vesd össze a message.group_guids értékét a megbízhatónak tartott szerepkörökkel, például hogy a /ban parancsot csak moderátorok futtathassák. Ha egy parancsot teljesen el akarsz zárni mindenki más elől, állítsd be a szerepköreit a trigger beállításaiban.
Mit válaszolsz
Bármilyen 2xx státuszt JSON-törzzsel, legfeljebb 4 MB-ig. Küldd el legalább az egyiket: message_container vagy actions.
| Mező | Típus | Mi ez |
|---|---|---|
message_container | object | A kártya. Az üzenetkártyák minden mezője működik itt, a státuszcímkét, a jelvényt, a diff-statisztikát és az összecsukott gondolatmenetet is beleértve. |
title, description, color, ... | string | Rövidítés: a legfelső szinten megadott kártyamezőket a rendszer kártyába csomagolja helyetted. |
actions | array | Gombok a kártya alatt. Lásd a gombokat. |
visible_to_member_guids | array | Csak ezek a tagok látják a választ. Lásd a privát válaszokat. |
content sor nem jelenik meg a parancsválasz kártyáján, ezért a lényeget magába a kártyába tedd.Öt másodperc
Az mssgs 5 másodpercig vár a válaszodra. Ha több időre van szükséged, válaszolj azonnal egy betöltési kártyával, és fejezd be a callback_url címen keresztül, amely 30 percig érvényes.
// 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át válaszok
Add meg a tagazonosítókat a visible_to_member_guids mezőben, és csak ők látják a válaszodat. A kérésben kapott member_guid segítségével csak annak válaszolhatsz, aki kérdezett.
{
"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>"]
}Teljes példa
Egy /weather parancs Node.js-ben, Expresszel, amely kártyával válaszol.
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);Korlátok
| Korlát | Érték |
|---|---|
| Válaszidő | 5 másodperc |
| Válasz mérete | 4 MB |
| Parancsok tagonként | 5 parancs 5 másodpercenként |
| A válasz utólagos frissítése | 30 perc, a callback_url címen keresztül |
| A válasz élő streamje | 10 perc, a stream_url címen keresztül |