Към основното съдържание
Разработчици Slash команди

Добавете slash команди

Дайте на общността си собствени /команди. Когато член напише някоя от тях, mssgs изпраща съобщението до вашата уеб услуга и публикува отговора ѝ: карта, бутони или отговор, който вижда само той.

Какво можете да направите

  • Отговаряйте с картаОтговорете с JSON и той се появява в канала като карта.
  • Знайте кой питаПолучавате члена и ролите му, така че можете да проверите кой какво може да прави.
  • Отговаряйте насамеПокажете отговора само на члена, който е попитал.
  • Не бързайтеОтговорете с индикатор за зареждане до 5 секунди, а после довършете чрез callback URL.

В приложението

Напишете / и командите на общността се появяват

Вашата услуга отговаря, mssgs публикува картата

Списъкът и картата са тези на самото приложение. Долната част на картата показва кой е използвал коя команда.

Бърз старт

  1. Създайте тригера

    В настолното приложение отворете Manage Server → Triggers на вашата общност и добавете тригер: командата, на която реагира, например /weather, и URL адреса на вашата уеб услуга.

  2. Получете съобщението

    Когато член изпрати съобщение, което започва с /weather, mssgs го изпраща с POST на вашия 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. Отговорете с JSON

    Отговорете до 5 секунди със статус 2xx и JSON. Той става карта в канала.

    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, слаб дъжд до 16:00
    Wind
    SW 18 km/h
    Humidity
    82%

Настройки

Всеки тригер има тези настройки в Manage Server → Triggers.

НастройкаКакво прави
Trigger NameИмето на тригера, което се показва до командата в списъка.
Word to MatchТекстът, с който трябва да започва съобщението, например /weather. Наклонената черта е обичайна, но не е задължителна.
URL EndpointКъде mssgs изпраща съобщението.
Webhook SecretПо избор. mssgs подписва всяка заявка с него, вижте по-долу.
ActiveИзключва тригера, без да го изтрива.
Post Matching MessageДали собственото съобщение на члена, /weather Amsterdam, остава в канала над вашия отговор.
Show Loading ReplyПоказва карта със зареждане, докато вашата услуга работи.
Allowed User GroupsЗадействат го само членове с тези роли. За всички останали това е обикновено съобщение.
Съвпадението се търси в началото на съобщението. Избягвайте команди, едната от които е началото на другата, като /deploy и /deploy-prod: не е определено коя ще се задейства. Съобщения от ботове и препратени съобщения никога не задействат тригер.

Какво получавате

POST заявка с JSON тяло. Сред хедърите е User-Agent: mssgs-webhook/1.0.

ПолеТипКакво е
server_guidstringОбщността.
channel_guidstringКаналът, в който е изпратено съобщението.
trigger_matchstringКомандата, която е съвпаднала, например /weather.
message.contentstringЦялото съобщение, включително командата.
message.member_guidstringЧленът, който го е изпратил, в тази общност.
message.user_guidstringАкаунтът на същия човек, еднакъв във всяка общност.
message.group_guidsarrayРолите на члена.
message.cmsnumberКога е изпратено, в милисекунди.
message.is_action_buttonbooleantrue, когато тригерът е задействан от бутон, а не от написана команда.
message.action_payloadobjectpayload на бутона, при натискане на бутон.
callback_urlstringОбновете или изтрийте отговора си по-късно, в рамките на 30 минути.
stream_urlstringПоток на живо с отговорите, реакциите и натисканията на бутони по вашия отговор, за 10 минути.
Когато е зададен таен ключ, заявката съдържа X-Mssgs-Signature: sha256=<hex>: HMAC-SHA256 на суровото тяло с вашия таен ключ. Изчислете го сами и сравнете, преди да се доверите на заявката.

Проверка кой какво може да прави

Сравнете message.group_guids с ролите, на които имате доверие, например за да позволите само на модераторите да изпълняват /ban. За да скриете команда напълно от всички останали, задайте ролите ѝ в настройките на тригера.

Какво отговаряте

Всеки статус 2xx с JSON тяло, до 4 MB. Изпратете поне едно от двете: message_container или actions.

ПолеТипКакво е
message_containerobjectКартата. Тук работи всяко поле от картите на съобщения, включително етикетът за статус, значката, статистиката на diff и сгънатите разсъждения.
title, description, color, ...stringСъкратен запис: полетата на картата на най-горното ниво се опаковат в карта вместо вас.
actionsarrayБутони под картата. Вижте бутони.
visible_to_member_guidsarrayСамо тези членове виждат отговора. Вижте частни отговори.
В горната част на картата стои името на вашата общност, а долната част казва кой е използвал командата: „maya triggered /weather command“. Аватарът е на члена.
Винаги отговаряйте с карта: редът content не се показва в картата на отговор на команда, така че сложете важното в самата карта.

Пет секунди

mssgs чака отговора ви 5 секунди. Ако ви трябва повече време, отговорете веднага с карта със зареждане и довършете чрез callback_url, който е валиден 30 минути.

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 } })
});
Ако вашата услуга не отговори навреме или отговори с грешка, членът, който е използвал командата, вижда червена карта „Failed“. Никой друг не я вижда.

Частни отговори

Сложете id на членове в visible_to_member_guids и само те ще видят отговора ви. Използвайте member_guid от заявката, за да отговорите само на човека, който е попитал.

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

Пълен пример

Команда /weather на Node.js с Express, която отговаря с карта.

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

Лимити

ЛимитСтойност
Време за отговор5 секунди
Размер на отговора4 MB
Команди на член5 на всеки 5 секунди
Обновяване на отговора след това30 минути, чрез callback_url
Поток на живо за отговора10 минути, чрез stream_url

Продължете нататък