Pievieno slīpsvītras komandas
Dod savai kopienai pašai savas /komandas. Kad dalībnieks kādu ieraksta, mssgs nosūta ziņu tavam tīmekļa servisam un publicē tā atbildi: kartīti, pogas vai atbildi, ko redz tikai šis dalībnieks.
Ko tu vari darīt
- Atbildi ar kartītiAtbildi ar JSON, un kanālā tas parādīsies kā kartīte.
- Zini, kas jautājaTu saņem dalībnieku un viņa lomas, tāpēc vari pārbaudīt, kas ko drīkst darīt.
- Atbildi privātiParādi atbildi tikai dalībniekam, kurš jautāja.
- NesteidziesAtbildi ar ielādes indikatoru 5 sekunžu laikā un pabeidz darbu caur callback URL.
Lietotnē
Ieraksti /, un parādās kopienas komandas
Tavs serviss atbild, mssgs publicē kartīti
Izvēlne un kartīte ir pašas lietotnes. Kājenē redzams, kurš izmantoja kuru komandu.
Ātrais sākums
Izveido trigeri
Datora lietotnē atver savas kopienas Manage Server → Triggers un pievieno trigeri: komandu, uz kuru tas reaģē, piemēram,
/weather, un tava tīmekļa servisa URL.Saņem ziņu
Kad dalībnieks nosūta ziņu, kas sākas ar
/weather, mssgs nosūta to ar POST uz tavu 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=..." }Atbildi ar JSON
Atbildi 5 sekunžu laikā ar 2xx statusu un JSON. Kanālā tas kļūst par kartīti.
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
Iestatījumi
Katram trigerim ir šie iestatījumi sadaļā Manage Server → Triggers.
| Iestatījums | Ko tas dara |
|---|---|
| Trigger Name | Trigera nosaukums, kas redzams blakus komandai izvēlnē. |
| Word to Match | Teksts, ar ko jāsākas ziņai, piemēram, /weather. Slīpsvītra ir ierasta, bet nav obligāta. |
| URL Endpoint | Kur mssgs sūta ziņu. |
| Webhook Secret | Pēc izvēles. mssgs ar to paraksta katru pieprasījumu, skati zemāk. |
| Active | Izslēdz trigeri, to nedzēšot. |
| Post Matching Message | Vai dalībnieka paša ziņa /weather Amsterdam paliek kanālā virs tavas atbildes. |
| Show Loading Reply | Rāda ielādes kartīti, kamēr tavs serviss strādā. |
| Allowed User Groups | Trigeri iedarbina tikai šo lomu dalībnieki. Visiem pārējiem tā ir parasta ziņa. |
/deploy un /deploy-prod: nav noteikts, kura iedarbosies. Botu ziņas un pārsūtītas ziņas nekad neiedarbina trigeri.Ko tu saņem
POST pieprasījumu ar JSON body. Galvenēs ir User-Agent: mssgs-webhook/1.0.
| Lauks | Tips | Kas tas ir |
|---|---|---|
server_guid | string | Kopiena. |
channel_guid | string | Kanāls, kurā ziņa nosūtīta. |
trigger_match | string | Komanda, kas atbilda, piemēram, /weather. |
message.content | string | Visa ziņa, ieskaitot komandu. |
message.member_guid | string | Dalībnieks, kurš to nosūtīja, šajā kopienā. |
message.user_guid | string | Tā paša cilvēka konts, vienāds visās kopienās. |
message.group_guids | array | Dalībnieka lomas. |
message.cms | number | Nosūtīšanas laiks milisekundēs. |
message.is_action_button | boolean | true, ja trigeri iedarbināja poga, nevis ierakstīta komanda. |
message.action_payload | object | Pogas payload, ja nospiesta poga. |
callback_url | string | Atjaunini vai dzēs savu atbildi vēlāk, 30 minūšu laikā. |
stream_url | string | Reāllaika plūsma ar atbildēm, reakcijām un pogu nospiešanām uz tavu atbildi, 10 minūtes. |
X-Mssgs-Signature: sha256=<hex>: neapstrādātā body HMAC-SHA256 ar tavu slepeno atslēgu. Aprēķini to pats un salīdzini, pirms uzticies pieprasījumam.Pārbaudi, kas ko drīkst
Salīdzini message.group_guids ar lomām, kurām uzticies, piemēram, lai /ban varētu palaist tikai moderatori. Lai komanda pārējiem vispār nebūtu pieejama, iestati tās lomas trigera iestatījumos.
Ko tu atbildi
Jebkurš 2xx statuss ar JSON body, līdz 4 MB. Nosūti vismaz vienu no laukiem message_container vai actions.
| Lauks | Tips | Kas tas ir |
|---|---|---|
message_container | object | Kartīte. Šeit darbojas katrs ziņu kartīšu lauks, arī statusa birka, nozīmīte, diff statistika un sakļautā spriešana. |
title, description, color, ... | string | Saīsinājums: kartītes lauki augšējā līmenī tiek automātiski ietīti kartītē. |
actions | array | Pogas zem kartītes. Skati pogas. |
visible_to_member_guids | array | Atbildi redz tikai šie dalībnieki. Skati privātas atbildes. |
content komandas atbildes kartītē netiek rādīta, tāpēc svarīgo liec pašā kartītē.Piecas sekundes
mssgs gaida tavu atbildi 5 sekundes. Ja vajag ilgāk, atbildi uzreiz ar ielādes kartīti un pabeidz caur callback_url, kas ir derīgs 30 minūtes.
// 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ātas atbildes
Ieliec dalībnieku id laukā visible_to_member_guids, un tavu atbildi redzēs tikai viņi. Izmanto member_guid no pieprasījuma, lai atbildētu tikai tam, kurš jautāja.
{
"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>"]
}Pilns piemērs
Komanda /weather Node.js ar Express, kas atbild ar kartīti.
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);Limiti
| Limits | Vērtība |
|---|---|
| Laiks atbildei | 5 sekundes |
| Atbildes izmērs | 4 MB |
| Komandas vienam dalībniekam | 5 ik pēc 5 sekundēm |
| Atbildes atjaunināšana vēlāk | 30 minūtes, caur callback_url |
| Atbildes reāllaika plūsma | 10 minūtes, caur stream_url |