Vai al contenuto principale
Sviluppatori Comandi slash

Aggiungi comandi slash

Dai alla tua community i suoi /comandi. Quando un membro ne scrive uno, mssgs invia il messaggio al tuo servizio web e pubblica ciò che risponde: una card, dei pulsanti, una risposta che vede solo chi ha chiesto.

Cosa puoi fare

  • Rispondi con una cardRispondi con del JSON e compare nel canale come card.
  • Sai chi ha chiestoRicevi il membro e i suoi ruoli, così puoi verificare chi può fare cosa.
  • Rispondi in privatoMostra la risposta solo al membro che l’ha chiesta.
  • Prenditi il tuo tempoRispondi con un loader entro 5 secondi, poi finisci tramite la callback URL.

Nell'app

Scrivi / e compaiono i comandi della community

Il tuo servizio risponde, mssgs pubblica la card

Il selettore e la card sono quelli dell’app. Il piè di pagina dice chi ha usato quale comando.

Per iniziare

  1. Crea il trigger

    Nell’app desktop apri Gestisci il server → Trigger della tua community e aggiungine uno: il comando a cui reagisce, come /weather, e l’URL del tuo servizio web.

  2. Ricevi il messaggio

    Quando un membro invia un messaggio che inizia con /weather, mssgs lo invia in POST al tuo 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. Rispondi con JSON

    Rispondi entro 5 secondi con uno status 2xx e del JSON. Diventa una card nel canale.

    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
    Messaggio da Weekend Crew

    Amsterdam

    14 °C, pioggia leggera fino alle 16:00
    Wind
    SW 18 km/h
    Humidity
    82%

Impostazioni

Ogni trigger ha queste impostazioni in Gestisci il server → Trigger.

ImpostazioneCosa fa
Nome del triggerCome si chiama il trigger, mostrato accanto al comando nel selettore.
Parola da riconoscereIl testo con cui deve iniziare un messaggio, come /weather. La barra è consueta, non obbligatoria.
Endpoint URLDove mssgs invia il messaggio.
Segreto del webhookFacoltativo. mssgs firma ogni richiesta con il segreto, vedi sotto.
AttivoSpegni il trigger senza eliminarlo.
Pubblica il messaggio corrispondenteSe il /weather Amsterdam scritto dal membro resta nel canale sopra la tua risposta.
Mostra una risposta di attesaMostra una card di caricamento mentre il tuo servizio lavora.
Gruppi utenti ammessiLo attivano solo i membri con questi ruoli. Per tutti gli altri è un messaggio normale.
Il confronto avviene sull’inizio del messaggio. Evita comandi che iniziano l’uno con l’altro, come /deploy e /deploy-prod: quale dei due scatta non è stabilito. I messaggi dei bot e i messaggi inoltrati non attivano mai un trigger.

Cosa ricevi

Un POST con un body JSON. Tra gli header c’è User-Agent: mssgs-webhook/1.0.

CampoTipoCos’è
server_guidstringLa community.
channel_guidstringIl canale in cui è stato inviato il messaggio.
trigger_matchstringIl comando riconosciuto, come /weather.
message.contentstringL’intero messaggio, comando compreso.
message.member_guidstringIl membro che l’ha inviato, in questa community.
message.user_guidstringL’account della stessa persona, uguale in ogni community.
message.group_guidsarrayI ruoli del membro.
message.cmsnumberQuando è stato inviato, in millisecondi.
message.is_action_buttonbooleantrue quando il trigger è stato attivato da un pulsante e non da un comando scritto.
message.action_payloadobjectIl payload del pulsante, per le pressioni dei pulsanti.
callback_urlstringAggiorna o elimina la tua risposta in seguito, per 30 minuti.
stream_urlstringUno stream live di risposte, reazioni e pressioni dei pulsanti sulla tua risposta, per 10 minuti.
Con un segreto impostato, la richiesta porta X-Mssgs-Signature: sha256=<hex>: un HMAC-SHA256 del body grezzo con il tuo segreto. Calcolalo tu stesso e confrontalo prima di fidarti della richiesta.

Verificare chi può fare cosa

Confronta message.group_guids con i ruoli di cui ti fidi, per esempio per far eseguire /ban solo ai moderatori. Per tenere un comando del tutto lontano da tutti gli altri, imposta i suoi ruoli nelle impostazioni del trigger.

Cosa rispondi

Qualsiasi status 2xx con un body JSON, fino a 4 MB. Invia almeno uno tra message_container e actions.

CampoTipoCos’è
message_containerobjectLa card. Qui funziona ogni campo delle card dei messaggi, compresi la pillola di stato, il badge, le statistiche diff e il ragionamento ripiegato.
title, description, color, ...stringForma breve: i campi della card al primo livello vengono racchiusi in una card per te.
actionsarrayPulsanti sotto la card. Vedi pulsanti.
visible_to_member_guidsarraySolo questi membri vedono la risposta. Vedi risposte private.
L’intestazione della card mostra il nome della tua community, e il piè di pagina dice chi ha usato il comando: “maya triggered /weather command”. L’avatar è quello del membro.
Rispondi sempre con una card: la riga content non viene mostrata sulla card di una risposta a un comando, quindi metti ciò che conta nella card stessa.

Cinque secondi

mssgs aspetta la tua risposta per 5 secondi. Se ti serve più tempo, rispondi subito con una card di caricamento e finisci tramite callback_url, che resta valida per 30 minuti.

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 } })
});
Se il tuo servizio non risponde in tempo, o risponde con un errore, il membro che ha usato il comando vede una card rossa “Failed”. Nessun altro la vede.

Risposte private

Metti gli id dei membri in visible_to_member_guids e solo loro vedono la tua risposta. Usa il member_guid della richiesta per rispondere solo alla persona che ha chiesto.

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

Un esempio completo

Un comando /weather in Node.js con Express, che risponde con una card.

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

LimiteValore
Tempo per rispondere5 secondi
Dimensione della risposta4 MB
Comandi per membro5 ogni 5 secondi
Aggiornare la risposta in seguito30 minuti, tramite callback_url
Stream live della risposta10 minuti, tramite stream_url

Continua a costruire