Przejdź do treści głównej
Deweloperzy Przyciski

Dodaj przyciski

Umieść przyciski pod dowolną kartą. Przycisk otwiera link, zmienia kartę dla wszystkich w chwili, gdy ktoś go dotknie, albo informuje twoją usługę, że został naciśnięty.

Co możesz z tym zrobić

  • Otwórz linkKieruj ludzi na stronę, dashboard albo pull request.
  • Zmień kartę jednym dotknięciemEdytuj ją, usuń, zareaguj albo odpowiedz, prosto z naciśnięcia, bez własnego serwera.
  • Odbieraj każde naciśnięcieTwoja usługa na żywo dowiaduje się, kto co nacisnął.
  • Uruchom komendęPrzycisk może uruchomić jedną z komend z ukośnikiem społeczności, z danymi.

W aplikacji

Ktoś dzwoni: pojawia się karta

Dotknięcie Otwórz bramę: karta zmienia się dla wszystkich

Sama zmiana nie wymaga serwera: kroki są zapisane razem z wiadomością. Twój sterownik bramy odbiera naciśnięcie i otwiera bramę.

Szybki start

  1. Dodaj listę actions

    Przyciski trafiają do actions, obok karty: w poście z webhooka, w odpowiedzi na komendę albo w aktualizacji.

    json
    {
      "message_container": {
        "color": "yellow",
        "title": "Deploy v2.1 to production?",
        "description": "Requested by maya."
      },
      "actions": [
        { "type": "url:https://ci.example.com/deploys/218", "text": "View changes", "color": "blue" }
      ]
    }
    deploys
    System
    Message from Deploybot

    Wdrożyć v2.1 na produkcję?

    Prośba od: maya.
  2. Wybierz, co robi naciśnięcie

    Link, zmiana karty albo wywołanie twojej usługi. Trzy rodzaje opisujemy niżej.

Trzy rodzaje przycisków

O tym, co robi naciśnięcie, decyduje type.

TypCo robi naciśnięcieCzy do ciebie dociera
url:{url}Otwiera link.Nie
webhook_actionWykonuje zapisane z nim kroki, dla wszystkich na kanale.Tak, na stream_url wiadomości
trigger:{guid}Uruchamia jeden z triggerów społeczności z payload przycisku.Tak, jako nowe żądanie na URL tego triggera

Zmiana karty jednym dotknięciem

Przycisk webhook_action niesie listę kroków w triggers. Po naciśnięciu wykonują się one po kolei na serwerze mssgs, a wynik widzą wszyscy na kanale.

KrokCo robi, dla wszystkichPola
update_messageZastępuje kartę i jej przyciski. Wyślij "actions": [], żeby usunąć przyciski.message_container, actions, content
remove_messageUsuwa wiadomość.Brak
add_reactionDodaje reakcję w imieniu osoby, która nacisnęła.emoji
add_replyPublikuje odpowiedź w imieniu osoby, która nacisnęła.content
json
{
  "message_container": { "color": "yellow", "title": "Front door", "description": "Someone rang the bell." },
  "actions": [
    {
      "type": "webhook_action",
      "id": "open_gate",
      "text": "Open gate",
      "color": "green",
      "payload": { "door": "front" },
      "triggers": [
        {
          "action": "update_message",
          "message_container": { "color": "blue", "title": "Front door", "description": "Opening…" },
          "actions": []
        },
        { "action": "add_reaction", "emoji": ":white_check_mark:" }
      ]
    }
  ]
}
Kroki są odczytywane z zapisanej wiadomości, nigdy z aplikacji członka, więc naciśnięcie może zrobić tylko to, co tam umieścisz.
Kroki wykonują się po kolei, a mssgs próbuje wykonać każdy z nich: jeśli jeden się nie powiedzie, pozostałe i tak się wykonają.

Odbieranie naciśnięć

Wiadomość z przyciskami wraca z webhooka z stream_url. Trzymaj go otwartym, a każde naciśnięcie dotrze jako zdarzenie typu action, z id przycisku, zapisanym przyciskiem i jego payload oraz informacją, kto go nacisnął:

sse
data: {"type": "action", "message_id": "...", "action_id": "open_gate", "action": {"id": "open_gate", "payload": {"door": "front"}, ...}, "member_guid": "member-guid", "member": {...}, "ts": 1790000000000}

Wykonaj właściwą pracę, np. otwórz bramę, a potem ustaw końcowy stan karty przez callback_url. Jak działają strumień i callback, opisujemy w aktualizacjach na żywo.

Uruchamianie komendy przyciskiem

Przycisk trigger:{guid} uruchamia jeden z triggerów twojej społeczności, tak jakby ktoś wpisał komendę, i przekazuje payload przycisku. Trigger otrzymuje:

json
{
  "actions": [
    {
      "type": "trigger:5f2c9a1e-trigger-guid",
      "text": "Check status",
      "color": "blue",
      "payload": { "order_id": "12345" }
    }
  ]
}
json
{
  "trigger_match": "/status",
  "message": {
    "content": "[Action Triggered]",
    "member_guid": "member-guid",
    "is_action_button": true,
    "action_payload": { "order_id": "12345" }
  },
  "callback_url": "https://mss.gs/api/v1/trigger-callback/...",
  "stream_url": "https://mss.gs/api/v1/instant/...?token=..."
}
Odpowiedź triggera jest publikowana jako nowa karta. Żądanie nie mówi, pod którą wiadomością był przycisk: umieść to, czego potrzebujesz, w payload.

Pola

PoleTypCo robi
typestringurl:{url}, webhook_action albo trigger:{guid}. Wymagane.
textstringEtykieta na przycisku. Wymagane; działa też label.
colorstringKolor przycisku, zobacz niżej.
idstringDla webhook_action: który przycisk naciśnięto. Unikalne w obrębie wiadomości.
payloadobjectTwoje dane, zwracane przy naciśnięciu.
triggersarrayDla webhook_action: kroki do wykonania.
disabledbooleanPokazuje przycisk wyszarzony, a naciśnięcia są odrzucane.

Kolory

green, blue i purple rysują pełny, główny przycisk. red, orange i yellow rysują drugorzędny: używaj ich dla „Odrzuć”, „Anuluj” i innych ostrożnych wyborów.

Błędy

Gdy publikujesz wiadomość z przyciskami, mssgs najpierw je sprawdza:

KodZnaczenie
INVALID_ACTIONS_FORMATactions nie jest listą obiektów.
INVALID_ACTION_MISSING_FIELDSPrzycisk nie ma type albo text.
DUPLICATE_ACTION_IDDwa przyciski mają to samo id.
INVALID_TRIGGERS_FORMATtriggers nie jest listą kroków.
INVALID_TRIGGER_MISSING_ACTIONKrok nie ma action.
INVALID_TRIGGER_ACTION_NOT_ALLOWEDKrok inny niż cztery powyższe.

Gdy ktoś naciśnie

KodZnaczenie
MESSAGE_NOT_FOUNDWiadomość została w międzyczasie usunięta.
ACTION_NOT_FOUNDW wiadomości nie ma przycisku o tym id.
ACTION_DISABLEDPrzycisk jest wyłączony.
TRIGGER_NOT_FOUND, TRIGGER_NOT_ACTIVETrigger, na który wskazuje przycisk, nie istnieje albo jest wyłączony.
TRIGGER_NOT_ALLOWEDCzłonek nie ma roli, która może używać tego triggera.

Przechodzisz ze starej dokumentacji?

Przyciski typu button z krokami ws:send, local:update_message i local:remove_message, warunki previous:success oraz expire_in_seconds nie działają już dla zewnętrznych nadawców. Używaj webhook_action z krokami opisanymi wyżej: docierają do wszystkich, nie tylko do osoby, która nacisnęła.

Buduj dalej