Pāriet uz galveno saturu
Izstrādātājiem Slīpsvītras komandas

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

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

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

    Amsterdam

    14 °C, neliels lietus līdz 16:00
    Wind
    SW 18 km/h
    Humidity
    82%

Iestatījumi

Katram trigerim ir šie iestatījumi sadaļā Manage Server → Triggers.

IestatījumsKo tas dara
Trigger NameTrigera nosaukums, kas redzams blakus komandai izvēlnē.
Word to MatchTeksts, ar ko jāsākas ziņai, piemēram, /weather. Slīpsvītra ir ierasta, bet nav obligāta.
URL EndpointKur mssgs sūta ziņu.
Webhook SecretPēc izvēles. mssgs ar to paraksta katru pieprasījumu, skati zemāk.
ActiveIzslēdz trigeri, to nedzēšot.
Post Matching MessageVai dalībnieka paša ziņa /weather Amsterdam paliek kanālā virs tavas atbildes.
Show Loading ReplyRāda ielādes kartīti, kamēr tavs serviss strādā.
Allowed User GroupsTrigeri iedarbina tikai šo lomu dalībnieki. Visiem pārējiem tā ir parasta ziņa.
Tiek salīdzināts ziņas sākums. Izvairies no komandām, kur viena ir otras sākums, piemēram, /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.

LauksTipsKas tas ir
server_guidstringKopiena.
channel_guidstringKanāls, kurā ziņa nosūtīta.
trigger_matchstringKomanda, kas atbilda, piemēram, /weather.
message.contentstringVisa ziņa, ieskaitot komandu.
message.member_guidstringDalībnieks, kurš to nosūtīja, šajā kopienā.
message.user_guidstringTā paša cilvēka konts, vienāds visās kopienās.
message.group_guidsarrayDalībnieka lomas.
message.cmsnumberNosūtīšanas laiks milisekundēs.
message.is_action_buttonbooleantrue, ja trigeri iedarbināja poga, nevis ierakstīta komanda.
message.action_payloadobjectPogas payload, ja nospiesta poga.
callback_urlstringAtjaunini vai dzēs savu atbildi vēlāk, 30 minūšu laikā.
stream_urlstringReāllaika plūsma ar atbildēm, reakcijām un pogu nospiešanām uz tavu atbildi, 10 minūtes.
Ja ir iestatīta slepenā atslēga, pieprasījumā ir 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.

LauksTipsKas tas ir
message_containerobjectKartī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, ...stringSaīsinājums: kartītes lauki augšējā līmenī tiek automātiski ietīti kartītē.
actionsarrayPogas zem kartītes. Skati pogas.
visible_to_member_guidsarrayAtbildi redz tikai šie dalībnieki. Skati privātas atbildes.
Kartītes galvenē redzams tavas kopienas nosaukums, bet kājenē, kurš izmantoja komandu: „maya triggered /weather command“. Avatārs ir dalībnieka.
Vienmēr atbildi ar kartīti: rinda 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.

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 } })
});
Ja tavs serviss neatbild laikā vai atbild ar kļūdu, dalībnieks, kurš izmantoja komandu, redz sarkanu kartīti „Failed“. Neviens cits to neredz.

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.

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

Pilns piemērs

Komanda /weather Node.js ar Express, kas atbild ar kartīti.

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

Limiti

LimitsVērtība
Laiks atbildei5 sekundes
Atbildes izmērs4 MB
Komandas vienam dalībniekam5 ik pēc 5 sekundēm
Atbildes atjaunināšana vēlāk30 minūtes, caur callback_url
Atbildes reāllaika plūsma10 minūtes, caur stream_url

Veido tālāk