Pridėk komandas su pasviruoju brūkšniu
Suteik savo bendruomenei jos pačios /komandas. Kai narys įveda vieną iš jų, mssgs nusiunčia žinutę tavo žiniatinklio paslaugai ir paskelbia jos atsakymą: kortelę, mygtukus ar atsakymą, kurį mato tik tas narys.
Ką gali padaryti
- Atsakyk korteleAtsakyk JSON, ir kanale atsiras kortelė.
- Žinok, kas klausiaGauni narį ir jo roles, tad gali patikrinti, kam ką leidžiama daryti.
- Atsakyk privačiaiParodyk atsakymą tik tam nariui, kuris klausė.
- NeskubėkPer 5 sekundes atsakyk loader kortele, o baik per callback URL.
Programėlėje
Įvesk /, ir atsiras bendruomenės komandos
Tavo paslauga atsako, mssgs paskelbia kortelę
Sąrašas ir kortelė yra pačios programėlės. Poraštėje parašyta, kas kurią komandą panaudojo.
Greita pradžia
Sukurk trigerį
Kompiuterio programėlėje atidaryk savo bendruomenės Manage Server → Triggers ir pridėk trigerį: komandą, į kurią jis reaguoja, pavyzdžiui,
/weather, ir tavo žiniatinklio paslaugos URL.Gauk žinutę
Kai narys išsiunčia žinutę, prasidedančią
/weather, mssgs nusiunčia ją POST užklausa į tavo 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=..." }Atsakyk JSON
Per 5 sekundes atsakyk su 2xx būsena ir JSON. Kanale jis taps kortele.
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
Nustatymai
Kiekvienas trigeris turi šiuos nustatymus skiltyje Manage Server → Triggers.
| Nustatymas | Ką daro |
|---|---|
| Trigger Name | Trigerio pavadinimas, rodomas šalia komandos sąraše. |
| Word to Match | Tekstas, kuriuo turi prasidėti žinutė, pavyzdžiui, /weather. Pasvirasis brūkšnys įprastas, bet neprivalomas. |
| URL Endpoint | Kur mssgs siunčia žinutę. |
| Webhook Secret | Neprivaloma. mssgs juo pasirašo kiekvieną užklausą, žr. toliau. |
| Active | Išjungia trigerį jo neištrinant. |
| Post Matching Message | Ar paties nario /weather Amsterdam lieka kanale virš tavo atsakymo. |
| Show Loading Reply | Rodo įkėlimo kortelę, kol tavo paslauga dirba. |
| Allowed User Groups | Jį paleidžia tik šių rolių nariai. Visiems kitiems tai paprasta žinutė. |
/deploy ir /deploy-prod: kuri suveiks, nėra nustatyta. Botų žinutės ir persiųstos žinutės trigerio niekada nepaleidžia.Ką gauni
POST užklausą su JSON turiniu. Tarp antraščių yra User-Agent: mssgs-webhook/1.0.
| Laukas | Tipas | Kas tai |
|---|---|---|
server_guid | string | Bendruomenė. |
channel_guid | string | Kanalas, kuriame žinutė išsiųsta. |
trigger_match | string | Atitikusi komanda, pavyzdžiui, /weather. |
message.content | string | Visa žinutė, kartu su komanda. |
message.member_guid | string | Siuntėjas kaip šios bendruomenės narys. |
message.user_guid | string | To paties žmogaus paskyra, vienoda visose bendruomenėse. |
message.group_guids | array | Nario rolės. |
message.cms | number | Išsiuntimo laikas milisekundėmis. |
message.is_action_button | boolean | true, kai trigerį paleido mygtukas, o ne įvesta komanda. |
message.action_payload | object | Mygtuko payload, kai paspaudžiamas mygtukas. |
callback_url | string | Leidžia vėliau atnaujinti ar ištrinti tavo atsakymą, 30 minučių. |
stream_url | string | Gyvas atsakymų, reakcijų ir mygtukų paspaudimų į tavo atsakymą srautas, 10 minučių. |
X-Mssgs-Signature: sha256=<hex>: neapdoroto turinio HMAC-SHA256 su tavo slaptuoju raktu. Apskaičiuok jį pats ir palygink, prieš pasitikėdamas užklausa.Kaip patikrinti, kam ką leidžiama
Palygink message.group_guids su rolėmis, kuriomis pasitiki, pavyzdžiui, kad /ban galėtų paleisti tik moderatoriai. Kad komanda visai neveiktų niekam kitam, nustatyk jos roles trigerio nustatymuose.
Ką atsakai
Bet kokia 2xx būsena su JSON turiniu, iki 4 MB. Siųsk bent vieną iš message_container arba actions.
| Laukas | Tipas | Kas tai |
|---|---|---|
message_container | object | Kortelė. Čia veikia kiekvienas žinučių kortelių laukas, įskaitant būsenos ženkliuką, žymę, diff statistiką ir suskleistus samprotavimus. |
title, description, color, ... | string | Sutrumpinimas: viršutiniame lygyje pateikti kortelės laukai už tave sudedami į kortelę. |
actions | array | Mygtukai po kortele. Žr. mygtukai. |
visible_to_member_guids | array | Atsakymą mato tik šie nariai. Žr. privatūs atsakymai. |
content eilutė nerodoma, todėl tai, kas svarbu, dėk į pačią kortelę.Penkios sekundės
mssgs laukia tavo atsakymo 5 sekundes. Jei reikia ilgiau, atsakyk iškart loader kortele ir baik per callback_url, kuris galioja 30 minučių.
// 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 } })
});Privatūs atsakymai
Įrašyk narių id į visible_to_member_guids, ir tavo atsakymą matys tik jie. Naudok member_guid iš užklausos, kad atsakytum tik klaususiam žmogui.
{
"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>"]
}Visas pavyzdys
Komanda /weather Node.js su Express, atsakanti kortele.
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);Limitai
| Limitas | Reikšmė |
|---|---|
| Laikas atsakyti | 5 sekundės |
| Atsakymo dydis | 4 MB |
| Komandos vienam nariui | 5 per 5 sekundes |
| Atsakymo atnaujinimas vėliau | 30 minučių, per callback_url |
| Gyvas atsakymo srautas | 10 minučių, per stream_url |