Ana içeriğe geç
Geliştiriciler Eğik çizgi komutları

Eğik çizgi komutları ekle

Topluluğuna kendi /komutlarını ver. Bir üye bunlardan birini yazdığında mssgs mesajı web servisine gönderir ve servisin verdiği yanıtı paylaşır: bir kart, düğmeler ya da yalnızca o üyenin görebileceği bir yanıt.

Neler yapabilirsin

  • Kartla yanıt verJSON ile yanıt ver, yanıtın kanalda bir kart olarak görünsün.
  • Kimin sorduğunu bilÜyeyi ve rollerini alırsın, böylece kimin neyi yapabileceğini kontrol edebilirsin.
  • Özel yanıt verYanıtı yalnızca soran üyeye göster.
  • Acele etme5 saniye içinde bir yükleme kartıyla yanıt ver, sonra işi callback URL üzerinden bitir.

Uygulamada

/ yaz, topluluğun komutları görünsün

Servisin yanıt verir, mssgs kartı paylaşır

Seçici de kart da uygulamanın kendisine ait. Alt bilgi kimin hangi komutu kullandığını söyler.

Hızlı başlangıç

  1. Tetikleyiciyi oluştur

    Masaüstü uygulamasında topluluğunun Manage Server → Triggers bölümünü aç ve bir tetikleyici ekle: tepki vereceği komut, örneğin /weather, ve web servisinin URL’si.

  2. Mesajı al

    Bir üye /weather ile başlayan bir mesaj gönderdiğinde mssgs onu bir POST isteğiyle URL’ine gönderir:

    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 ile yanıt ver

    5 saniye içinde 2xx durum koduyla ve JSON ile yanıt ver. Yanıtın kanalda bir karta dönüşür.

    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’ya kadar hafif yağmur
    Wind
    SW 18 km/h
    Humidity
    82%

Ayarlar

Her tetikleyicinin Manage Server → Triggers içinde şu ayarları vardır.

AyarNe yapar
Trigger NameTetikleyicinin adı; seçicide komutun yanında görünür.
Word to MatchMesajın başlaması gereken metin, örneğin /weather. Eğik çizgi alışılmış olandır ama zorunlu değildir.
URL Endpointmssgs’in mesajı gönderdiği adres.
Webhook Secretİsteğe bağlı. mssgs her isteği bununla imzalar, aşağıya bak.
ActiveTetikleyiciyi silmeden kapatır.
Post Matching MessageÜyenin kendi /weather Amsterdam mesajının kanalda senin yanıtının üstünde kalıp kalmayacağı.
Show Loading ReplyServisin çalışırken bir yükleme kartı gösterir.
Allowed User GroupsYalnızca bu rollerdeki üyeler onu tetikler. Diğer herkes için sıradan bir mesajdır.
Eşleşme mesajın başına bakar. Biri diğerinin başı olan komutlardan kaçın, örneğin /deploy ve /deploy-prod: hangisinin tetikleneceği belli değildir. Botlardan gelen mesajlar ve iletilen mesajlar asla bir tetikleyiciyi çalıştırmaz.

Sana gelen

JSON gövdeli bir POST isteği. Başlıklar arasında User-Agent: mssgs-webhook/1.0 bulunur.

AlanTürNedir
server_guidstringTopluluk.
channel_guidstringMesajın gönderildiği kanal.
trigger_matchstringEşleşen komut, örneğin /weather.
message.contentstringKomut dahil mesajın tamamı.
message.member_guidstringMesajı gönderen üye, bu topluluktaki haliyle.
message.user_guidstringAynı kişinin hesabı; her toplulukta aynıdır.
message.group_guidsarrayÜyenin sahip olduğu roller.
message.cmsnumberGönderildiği zaman, milisaniye cinsinden.
message.is_action_buttonbooleanTetikleyiciyi yazılan bir komut değil de bir düğme çalıştırdıysa true.
message.action_payloadobjectDüğme basışlarında düğmenin payload verisi.
callback_urlstringYanıtını 30 dakika boyunca sonradan güncelle ya da sil.
stream_urlstringYanıtına gelen yanıtların, tepkilerin ve düğme basışlarının 10 dakika boyunca canlı akışı.
Bir gizli anahtar ayarlıysa istek X-Mssgs-Signature: sha256=<hex> başlığını taşır: ham gövdenin, gizli anahtarınla hesaplanmış HMAC-SHA256 değeri. İsteğe güvenmeden önce bunu kendin hesapla ve karşılaştır.

Kimin neyi yapabileceğini kontrol etmek

message.group_guids değerini güvendiğin rollerle karşılaştır, örneğin /ban komutunu yalnızca moderatörler çalıştırabilsin diye. Bir komutu diğer herkesten tamamen uzak tutmak için rollerini tetikleyicinin ayarlarında belirle.

Senin yanıtın

JSON gövdeli herhangi bir 2xx durum kodu, en fazla 4 MB. message_container ya da actions alanlarından en az birini gönder.

AlanTürNedir
message_containerobjectKart. Mesaj kartlarındaki her alan burada çalışır; durum kapsülü, rozet, diff istatistikleri ve katlanmış akıl yürütme dahil.
title, description, color, ...stringKısayol: en üst düzeydeki kart alanları senin için bir karta sarılır.
actionsarrayKartın altındaki düğmeler. Düğmelere bak.
visible_to_member_guidsarrayYanıtı yalnızca bu üyeler görür. Özel yanıtlara bak.
Kartın üst bilgisi topluluğunun adını gösterir, alt bilgisi de komutu kimin kullandığını söyler: “maya triggered /weather command”. Avatar üyeye aittir.
Her zaman bir kartla yanıt ver: bir komut yanıtının kartında content satırı gösterilmez, bu yüzden önemli olanı kartın kendisine koy.

Beş saniye

mssgs yanıtın için 5 saniye bekler. Daha fazla zamana ihtiyacın varsa hemen bir yükleme kartıyla yanıt ver ve işi 30 dakika geçerli kalan callback_url üzerinden bitir.

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 } })
});
Servisin zamanında yanıt vermezse ya da bir hatayla yanıt verirse komutu kullanan üye kırmızı bir “Failed” kartı görür. Başka kimse görmez.

Özel yanıtlar

Üye kimliklerini visible_to_member_guids içine koy, yanıtını yalnızca onlar görsün. Yalnızca soran kişiye yanıt vermek için istekteki member_guid değerini kullan.

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

Tam bir örnek

Node.js ve Express ile yazılmış, kartla yanıt veren bir /weather komutu.

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

Limitler

LimitDeğer
Yanıt süresi5 saniye
Yanıt boyutu4 MB
Üye başına komut5 saniyede 5
Yanıtı sonradan güncellemecallback_url üzerinden 30 dakika
Yanıtın canlı akışıstream_url üzerinden 10 dakika

Geliştirmeye devam et