Preskočiť na hlavný obsah
Vývojári Príkazy s lomkou

Pridaj príkazy s lomkou

Daj svojej komunite vlastné /príkazy. Keď ho člen napíše, mssgs pošle správu tvojej webovej službe a uverejní, čo odpovie: kartu, tlačidlá alebo odpoveď, ktorú uvidí iba ten, kto sa pýtal.

Čo s tým môžeš robiť

  • Odpovedz kartouOdpovedz JSON-om a v kanáli sa objaví ako karta.
  • Vieš, kto sa pýtaDostaneš člena a jeho roly, takže si overíš, kto smie čo robiť.
  • Odpovedaj súkromneUkáž odpoveď iba členovi, ktorý sa pýtal.
  • Nikam sa neponáhľajDo 5 sekúnd odpovedz loaderom a zvyšok dokonči cez callback URL.

V aplikácii

Napíš / a objavia sa príkazy komunity

Tvoja služba odpovie, mssgs uverejní kartu

Výber príkazov aj karta sú priamo z aplikácie. Päta hovorí, kto použil ktorý príkaz.

Rýchly štart

  1. Vytvor trigger

    V desktopovej aplikácii otvor vo svojej komunite Manage Server → Triggers a pridaj trigger: príkaz, na ktorý reaguje, napríklad /weather, a URL tvojej webovej služby.

  2. Prijmi správu

    Keď člen pošle správu, ktorá začína na /weather, mssgs ju cez POST pošle na tvoju 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. Odpovedz JSON-om

    Do 5 sekúnd odpovedz so stavom 2xx a JSON-om. V kanáli sa z neho stane karta.

    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, slabý dážď do 16:00
    Wind
    SW 18 km/h
    Humidity
    82%

Nastavenia

Každý trigger má tieto nastavenia v Manage Server → Triggers.

NastavenieČo robí
Trigger NameNázov triggera, zobrazený vedľa príkazu vo výbere.
Word to MatchText, ktorým musí správa začínať, napríklad /weather. Lomka je zvykom, nie je povinná.
URL EndpointKam mssgs pošle správu.
Webhook SecretVoliteľný tajný kľúč. mssgs ním podpíše každú požiadavku, pozri nižšie.
ActiveVypne trigger bez toho, aby sa zmazal.
Post Matching MessageČi vlastná správa člena, napríklad /weather Amsterdam, zostane v kanáli nad tvojou odpoveďou.
Show Loading ReplyZobrazí kartu načítavania, kým tvoja služba pracuje.
Allowed User GroupsSpustia ho iba členovia s týmito rolami. Pre všetkých ostatných je to obyčajná správa.
Porovnáva sa začiatok správy. Vyhni sa príkazom, z ktorých jeden je začiatkom druhého, ako /deploy a /deploy-prod: ktorý sa spustí, nie je pevne dané. Správy od botov a preposlané správy trigger nikdy nespustia.

Čo dostaneš

POST s telom vo formáte JSON. Medzi hlavičkami je User-Agent: mssgs-webhook/1.0.

PoleTypČo to je
server_guidstringKomunita.
channel_guidstringKanál, v ktorom bola správa poslaná.
trigger_matchstringPríkaz, ktorý sa zhodoval, napríklad /weather.
message.contentstringCelá správa vrátane príkazu.
message.member_guidstringČlen, ktorý ju poslal, v tejto komunite.
message.user_guidstringÚčet tej istej osoby, rovnaký v každej komunite.
message.group_guidsarrayRoly, ktoré člen má.
message.cmsnumberKedy bola poslaná, v milisekundách.
message.is_action_buttonbooleantrue, keď trigger spustilo tlačidlo, nie napísaný príkaz.
message.action_payloadobjectpayload tlačidla, pri stlačení tlačidla.
callback_urlstringCez ňu odpoveď neskôr aktualizuješ alebo zmažeš, počas 30 minút.
stream_urlstringŽivý stream odpovedí, reakcií a stlačení tlačidiel na tvojej odpovedi, počas 10 minút.
Keď je nastavený tajný kľúč, požiadavka nesie X-Mssgs-Signature: sha256=<hex>: HMAC-SHA256 surového tela s tvojím tajným kľúčom. Vypočítaj ho na svojej strane a porovnaj, skôr než požiadavke uveríš.

Kto smie čo robiť

Porovnaj message.group_guids s rolami, ktorým dôveruješ, napríklad aby /ban mohli spúšťať iba moderátori. Ak má byť príkaz pre všetkých ostatných úplne nedostupný, nastav jeho roly v nastaveniach triggera.

Čo odpovieš

Ľubovoľný stav 2xx s telom JSON, najviac 4 MB. Pošli aspoň jedno z polí message_container alebo actions.

PoleTypČo to je
message_containerobjectKarta. Funguje tu každé pole z kariet správ vrátane stavového štítka, odznaku, štatistík diffu a zbaleného uvažovania.
title, description, color, ...stringSkratka: polia karty na najvyššej úrovni sa za teba zabalia do karty.
actionsarrayTlačidlá pod kartou. Pozri tlačidlá.
visible_to_member_guidsarrayOdpoveď uvidia iba títo členovia. Pozri súkromné odpovede.
Hlavička karty ukazuje názov tvojej komunity a päta hovorí, kto príkaz použil: „maya triggered /weather command“. Avatar patrí členovi.
Vždy odpovedaj kartou: riadok content sa na karte odpovede na príkaz nezobrazí, takže to podstatné daj do samotnej karty.

Päť sekúnd

mssgs na tvoju odpoveď čaká 5 sekúnd. Ak potrebuješ viac času, odpovedz hneď kartou s loaderom a dokonči to cez callback_url, ktorá platí 30 minút.

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 } })
});
Ak tvoja služba neodpovie včas alebo odpovie chybou, člen, ktorý príkaz použil, uvidí červenú kartu „Failed“. Nikto iný ju nevidí.

Súkromné odpovede

Daj id členov do visible_to_member_guids a tvoju odpoveď uvidia iba oni. Použi member_guid z požiadavky a odpovieš iba tomu, kto sa pýtal.

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>"]
}

Celý príklad

Príkaz /weather v Node.js s Expressom, ktorý odpovedá kartou.

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);

Limity

LimitHodnota
Čas na odpoveď5 sekúnd
Veľkosť odpovede4 MB
Príkazy na člena5 za 5 sekúnd
Neskoršia úprava odpovede30 minút, cez callback_url
Živý stream odpovede10 minút, cez stream_url

Tvor ďalej