Pereiti prie pagrindinio turinio
Programuotojams Komandos su pasviruoju brūkšniu

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

  1. 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.

  2. 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=..."
    }
  3. 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
    maya18:45
    /weather Amsterdam
    System
    Message from Weekend Crew

    Amsterdam

    14 °C, nedidelis lietus iki 16:00
    Wind
    SW 18 km/h
    Humidity
    82%

Nustatymai

Kiekvienas trigeris turi šiuos nustatymus skiltyje Manage Server → Triggers.

NustatymasKą daro
Trigger NameTrigerio pavadinimas, rodomas šalia komandos sąraše.
Word to MatchTekstas, kuriuo turi prasidėti žinutė, pavyzdžiui, /weather. Pasvirasis brūkšnys įprastas, bet neprivalomas.
URL EndpointKur mssgs siunčia žinutę.
Webhook SecretNeprivaloma. mssgs juo pasirašo kiekvieną užklausą, žr. toliau.
ActiveIšjungia trigerį jo neištrinant.
Post Matching MessageAr paties nario /weather Amsterdam lieka kanale virš tavo atsakymo.
Show Loading ReplyRodo įkėlimo kortelę, kol tavo paslauga dirba.
Allowed User GroupsJį paleidžia tik šių rolių nariai. Visiems kitiems tai paprasta žinutė.
Tikrinama žinutės pradžia. Venk komandų, kurių viena yra kitos pradžia, pavyzdžiui, /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.

LaukasTipasKas tai
server_guidstringBendruomenė.
channel_guidstringKanalas, kuriame žinutė išsiųsta.
trigger_matchstringAtitikusi komanda, pavyzdžiui, /weather.
message.contentstringVisa žinutė, kartu su komanda.
message.member_guidstringSiuntėjas kaip šios bendruomenės narys.
message.user_guidstringTo paties žmogaus paskyra, vienoda visose bendruomenėse.
message.group_guidsarrayNario rolės.
message.cmsnumberIšsiuntimo laikas milisekundėmis.
message.is_action_buttonbooleantrue, kai trigerį paleido mygtukas, o ne įvesta komanda.
message.action_payloadobjectMygtuko payload, kai paspaudžiamas mygtukas.
callback_urlstringLeidžia vėliau atnaujinti ar ištrinti tavo atsakymą, 30 minučių.
stream_urlstringGyvas atsakymų, reakcijų ir mygtukų paspaudimų į tavo atsakymą srautas, 10 minučių.
Kai nustatytas slaptasis raktas, užklausoje yra 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.

LaukasTipasKas tai
message_containerobjectKortelė. Čia veikia kiekvienas žinučių kortelių laukas, įskaitant būsenos ženkliuką, žymę, diff statistiką ir suskleistus samprotavimus.
title, description, color, ...stringSutrumpinimas: viršutiniame lygyje pateikti kortelės laukai už tave sudedami į kortelę.
actionsarrayMygtukai po kortele. Žr. mygtukai.
visible_to_member_guidsarrayAtsakymą mato tik šie nariai. Žr. privatūs atsakymai.
Kortelės antraštėje rodomas tavo bendruomenės pavadinimas, o poraštėje parašyta, kas panaudojo komandą: „maya triggered /weather command“. Avataras yra nario.
Visada atsakyk kortele: atsakymo į komandą kortelėje 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ų.

javascript
// 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 } })
});
Jei tavo paslauga neatsako laiku arba atsako klaida, komandą panaudojęs narys mato raudoną „Failed“ kortelę. Niekas kitas jos nemato.

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.

json
{
  "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.

javascript
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

LimitasReikšmė
Laikas atsakyti5 sekundės
Atsakymo dydis4 MB
Komandos vienam nariui5 per 5 sekundes
Atsakymo atnaujinimas vėliau30 minučių, per callback_url
Gyvas atsakymo srautas10 minučių, per stream_url

Kurk toliau