Preskoči na glavno vsebino
Razvijalci Ukazi s poševnico

Dodaj ukaze s poševnico

Daj svoji skupnosti lastne /ukaze. Ko član vtipka enega, mssgs sporočilo pošlje tvoji spletni storitvi in objavi njen odgovor: kartico, gumbe ali odgovor, ki ga vidi samo on.

Kaj lahko narediš

  • Odgovori s karticoOdgovori z JSON-om in v kanalu se prikaže kot kartica.
  • Vedi, kdo sprašujeDobiš člana in njegove vloge, zato lahko preveriš, kdo sme kaj.
  • Odgovori zasebnoOdgovor pokaži samo članu, ki je vprašal.
  • Brez nagliceV 5 sekundah odgovori z indikatorjem nalaganja, nato končaj prek callback URL-ja.

V aplikaciji

Vtipkaj / in prikažejo se ukazi skupnosti

Tvoja storitev odgovori, mssgs objavi kartico

Izbirnik in kartica sta del same aplikacije. Noga pove, kdo je uporabil kateri ukaz.

Hiter začetek

  1. Ustvari trigger

    V namizni aplikaciji v svoji skupnosti odpri Manage Server → Triggers in dodaj trigger: ukaz, na katerega se odzove, na primer /weather, in URL tvoje spletne storitve.

  2. Prejmi sporočilo

    Ko član pošlje sporočilo, ki se začne z /weather, ga mssgs z zahtevo POST pošlje na tvoj 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. Odgovori z JSON-om

    V 5 sekundah odgovori s statusom 2xx in JSON-om. V kanalu postane kartica.

    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, rahel dež do 16:00
    Wind
    SW 18 km/h
    Humidity
    82%

Nastavitve

Vsak trigger ima v Manage Server → Triggers te nastavitve.

NastavitevKaj naredi
Trigger NameIme triggerja, prikazano ob ukazu v izbirniku.
Word to MatchBesedilo, s katerim se mora sporočilo začeti, na primer /weather. Poševnica je običajna, ni pa obvezna.
URL EndpointKam mssgs pošlje sporočilo.
Webhook SecretNeobvezno. mssgs z njim podpiše vsako zahtevo, glej spodaj.
ActiveIzklopi trigger, ne da bi ga izbrisal.
Post Matching MessageAli članovo sporočilo, na primer /weather Amsterdam, ostane v kanalu nad tvojim odgovorom.
Show Loading ReplyPrikaže kartico z indikatorjem nalaganja, medtem ko tvoja storitev dela.
Allowed User GroupsSprožijo ga le člani s temi vlogami. Za vse druge je to navadno sporočilo.
Ujemanje se preverja na začetku sporočila. Izogibaj se ukazom, pri katerih se eden začne z drugim, kot sta /deploy in /deploy-prod: kateri se sproži, ni določeno. Sporočila botov in posredovana sporočila nikoli ne sprožijo triggerja.

Kaj prejmeš

Zahtevo POST s telesom JSON. Med glavami je User-Agent: mssgs-webhook/1.0.

PoljeTipKaj je
server_guidstringSkupnost.
channel_guidstringKanal, v katerem je bilo sporočilo poslano.
trigger_matchstringUkaz, ki se je ujemal, na primer /weather.
message.contentstringCelotno sporočilo, skupaj z ukazom.
message.member_guidstringČlan, ki ga je poslal, v tej skupnosti.
message.user_guidstringRačun iste osebe, enak v vsaki skupnosti.
message.group_guidsarrayVloge, ki jih ima član.
message.cmsnumberKdaj je bilo poslano, v milisekundah.
message.is_action_buttonbooleantrue, ko je trigger sprožil gumb in ne vtipkan ukaz.
message.action_payloadobjectpayload gumba, pri pritiskih gumbov.
callback_urlstringZ njim lahko odgovor še 30 minut posodobiš ali izbrišeš.
stream_urlstringTok v živo z odgovori, reakcijami in pritiski gumbov na tvoj odgovor, 10 minut.
Ko je skrivni ključ nastavljen, zahteva vsebuje X-Mssgs-Signature: sha256=<hex>: HMAC-SHA256 surovega telesa s tvojim skrivnim ključem. Izračunaj ga sam in primerjaj, preden zahtevi zaupaš.

Preverjanje, kdo sme kaj

Primerjaj message.group_guids z vlogami, ki jim zaupaš, na primer da lahko /ban zaženejo samo moderatorji. Če želiš ukaz vsem drugim povsem skriti, mu nastavi vloge v nastavitvah triggerja.

Kaj odgovoriš

Kateri koli status 2xx s telesom JSON, do 4 MB. Pošlji vsaj eno od polj message_container ali actions.

PoljeTipKaj je
message_containerobjectKartica. Tu deluje vsako polje kartic sporočil, vključno z oznako stanja, značko, statistiko sprememb in skritim razmišljanjem.
title, description, color, ...stringOkrajšava: polja kartice na najvišji ravni se samodejno zavijejo v kartico.
actionsarrayGumbi pod kartico. Glej gumbe.
visible_to_member_guidsarrayOdgovor vidijo samo ti člani. Glej zasebne odgovore.
Glava kartice prikazuje ime tvoje skupnosti, noga pa pove, kdo je uporabil ukaz: „maya triggered /weather command“. Avatar je od člana.
Vedno odgovori s kartico: vrstica content se na kartici odgovora na ukaz ne prikaže, zato bistveno zapiši v samo kartico.

Pet sekund

mssgs na tvoj odgovor čaka 5 sekund. Če potrebuješ več časa, takoj odgovori s kartico z indikatorjem nalaganja in končaj prek callback_url, ki velja 30 minut.

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 } })
});
Če tvoja storitev ne odgovori pravočasno ali odgovori z napako, član, ki je uporabil ukaz, vidi rdečo kartico „Failed“. Nihče drug je ne vidi.

Zasebni odgovori

V visible_to_member_guids vpiši ID-je članov in tvoj odgovor vidijo samo oni. Uporabi member_guid iz zahteve, da odgovoriš le osebi, ki je vprašala.

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

Celoten primer

Ukaz /weather v Node.js z Expressom, ki odgovori s kartico.

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

Omejitve

OmejitevVrednost
Čas za odgovor5 sekund
Velikost odgovora4 MB
Ukazi na člana5 vsakih 5 sekund
Posodabljanje odgovora pozneje30 minut, prek callback_url
Tok odgovora v živo10 minut, prek stream_url

Gradi naprej