Ugrás a fő tartalomra
Fejlesztők Perjeles parancsok

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

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

  2. Fogadd az üzenetet

    Amikor egy tag /weather kezdetű ü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=..."
    }
  3. 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
    maya18:45
    /weather Amsterdam
    System
    Message from Weekend Crew

    Amsterdam

    14 °C, gyenge eső 16:00-ig
    Wind
    SW 18 km/h
    Humidity
    82%

Beállítások

Minden triggernek ezek a beállításai vannak a Manage Server → Triggers menüpontban.

BeállításMit csinál
Trigger NameA trigger neve, amely a parancs mellett jelenik meg a választóban.
Word to MatchA szöveg, amellyel az üzenetnek kezdődnie kell, például /weather. A perjel szokásos, de nem kötelező.
URL EndpointAhová az mssgs elküldi az üzenetet.
Webhook SecretOpcionális. Az mssgs minden kérést aláír vele, lásd lejjebb.
ActiveKikapcsolja a triggert anélkül, hogy törölnéd.
Post Matching MessageMegmarad-e a tag saját /weather Amsterdam üzenete a csatornában a válaszod fölött.
Show Loading ReplyBetöltési kártyát mutat, amíg a szolgáltatásod dolgozik.
Allowed User GroupsCsak ezeknek a szerepköröknek a tagjai indíthatják el. Mindenki más számára ez egy közönséges üzenet.
Az egyezés az üzenet elejére vonatkozik. Kerüld az olyan parancsokat, amelyek közül az egyik a másikkal kezdődik, mint a /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ípusMi ez
server_guidstringA közösség.
channel_guidstringA csatorna, ahová az üzenetet küldték.
trigger_matchstringAz egyező parancs, például /weather.
message.contentstringA teljes üzenet, a paranccsal együtt.
message.member_guidstringA küldő tag ebben a közösségben.
message.user_guidstringUgyanannak a személynek a fiókja, minden közösségben ugyanaz.
message.group_guidsarrayA tag szerepkörei.
message.cmsnumberA küldés ideje, ezredmásodpercben.
message.is_action_buttonbooleantrue, ha egy gomb indította a triggert, nem begépelt parancs.
message.action_payloadobjectA gomb payload értéke, gombnyomásoknál.
callback_urlstringEzzel később, 30 percig frissítheted vagy törölheted a válaszodat.
stream_urlstringA válaszodra érkező válaszok, reakciók és gombnyomások élő streamje, 10 percig.
Ha beállítottál titkos kulcsot, a kérés tartalmazza az 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ípusMi ez
message_containerobjectA 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, ...stringRövidítés: a legfelső szinten megadott kártyamezőket a rendszer kártyába csomagolja helyetted.
actionsarrayGombok a kártya alatt. Lásd a gombokat.
visible_to_member_guidsarrayCsak ezek a tagok látják a választ. Lásd a privát válaszokat.
A kártya fejlécében a közösséged neve áll, a láblécben pedig az, hogy ki használta a parancsot: „maya triggered /weather command”. Az avatar a tagé.
Mindig kártyával válaszolj: a 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.

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 } })
});
Ha a szolgáltatásod nem válaszol időben, vagy hibával válaszol, a parancsot használó tag egy piros „Failed” kártyát lát. Más senki.

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.

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

Teljes példa

Egy /weather parancs Node.js-ben, Expresszel, amely kártyával válaszol.

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

Korlátok

KorlátÉrték
Válaszidő5 másodperc
Válasz mérete4 MB
Parancsok tagonként5 parancs 5 másodpercenként
A válasz utólagos frissítése30 perc, a callback_url címen keresztül
A válasz élő streamje10 perc, a stream_url címen keresztül

Építs tovább