Hoppa till huvudinnehållet
Utvecklare Knappar

Lägg till knappar

Sätt knappar under vilket kort som helst. En knapp öppnar en länk, ändrar kortet för alla i samma stund som någon trycker, eller talar om för din tjänst att den har tryckts.

Det här kan du göra

  • Öppna en länkSkicka folk till en sida, en dashboard eller en pull request.
  • Ändra kortet med ett tryckRedigera det, ta bort det, reagera eller svara, direkt från trycket, utan någon egen server.
  • Hör varje tryckDin tjänst får veta vem som tryckte på vad, live.
  • Kör ett kommandoEn knapp kan utlösa ett av communityns slash-kommandon, med data.

I appen

Någon ringer på: kortet visas

Ett tryck på Öppna grinden: kortet ändras för alla

Ingen server behövs för själva ändringen: stegen sparas med meddelandet. Din grindstyrning hör trycket och öppnar grinden.

Snabbstart

  1. Lägg till en actions-lista

    Knappar ligger i actions, bredvid kortet, i ett inlägg från en webhook, ett svar på ett kommando eller en uppdatering.

    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
    Meddelande från Deploybot

    Deploya v2.1 till produktion?

    Begärd av maya.
  2. Välj vad ett tryck gör

    En länk, en ändring av kortet eller ett anrop till din tjänst. De tre sorterna finns nedan.

Tre sorters knappar

type avgör vad ett tryck gör.

TypVad ett tryck görNår dig
url:{url}Öppnar länken.Nej
webhook_actionKör stegen som du har sparat med den, för alla i kanalen.Ja, på meddelandets stream_url
trigger:{guid}Utlöser en av communityns triggers med knappens payload.Ja, som ett nytt anrop till den triggerns URL

Ändra kortet med ett tryck

En webhook_action-knapp har en lista med steg i triggers. Vid ett tryck körs de på mssgs-servern, i ordning, och alla i kanalen ser resultatet.

StegVad det gör, för allaFält
update_messageErsätter kortet och dess knappar. Skicka "actions": [] för att ta bort knapparna.message_container, actions, content
remove_messageRaderar meddelandet.Inga
add_reactionLägger till en reaktion, från medlemmen som tryckte.emoji
add_replyPostar ett svar, från medlemmen som tryckte.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:" }
      ]
    }
  ]
}
Stegen läses från det sparade meddelandet, aldrig från medlemmens app, så ett tryck kan bara göra det som du har lagt där.
Stegen körs i ordning och vart och ett provas: om ett misslyckas körs resten ändå.

Hör trycket

Ett meddelande med knappar kommer tillbaka från webhooken med en stream_url. Håll den öppen så kommer varje tryck som en händelse av typen action, med knappens id, den sparade knappen och dess payload, och vem som tryckte:

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

Gör det riktiga jobbet, som att öppna grinden, och sätt sedan kortets slutliga läge via callback_url. Hur strömmen och callbacken fungerar står under liveuppdateringar.

Kör ett kommando från en knapp

En trigger:{guid}-knapp utlöser en av communityns triggers, som om någon hade skrivit kommandot, och lämnar över knappens payload. Triggern tar emot:

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=..."
}
Det som triggern svarar postas som ett nytt kort. Anropet säger inte vilket meddelande knappen satt på: lägg det du behöver i payload.

Fält

FältTypVad det gör
typestringurl:{url}, webhook_action eller trigger:{guid}. Krävs.
textstringTexten på knappen. Krävs; label fungerar också.
colorstringKnappens färg, se nedan.
idstringFör webhook_action: vilken knapp som trycktes. Unikt inom meddelandet.
payloadobjectDin data, som lämnas tillbaka vid ett tryck.
triggersarrayFör webhook_action: stegen som ska köras.
disabledbooleanVisar knappen nedtonad, och tryck avvisas.

Färger

green, blue och purple ritar en fylld, primär knapp. red, orange och yellow ritar en sekundär: använd dem för "Avvisa", "Avbryt" och andra val som kräver eftertanke.

Fel

När du postar ett meddelande med knappar kontrollerar mssgs dem först:

KodBetydelse
INVALID_ACTIONS_FORMATactions är inte en lista med objekt.
INVALID_ACTION_MISSING_FIELDSEn knapp saknar type eller text.
DUPLICATE_ACTION_IDTvå knappar har samma id.
INVALID_TRIGGERS_FORMATtriggers är inte en lista med steg.
INVALID_TRIGGER_MISSING_ACTIONEtt steg saknar action.
INVALID_TRIGGER_ACTION_NOT_ALLOWEDEtt annat steg än de fyra ovan.

När någon trycker

KodBetydelse
MESSAGE_NOT_FOUNDMeddelandet har raderats under tiden.
ACTION_NOT_FOUNDDet finns ingen knapp med det id:t på meddelandet.
ACTION_DISABLEDKnappen är inaktiverad.
TRIGGER_NOT_FOUND, TRIGGER_NOT_ACTIVETriggern som en knapp pekar på finns inte längre eller är avstängd.
TRIGGER_NOT_ALLOWEDMedlemmen har ingen roll som får använda den triggern.

Kommer du från den gamla dokumentationen?

Knappar av typen button med ws:send-steg, local:update_message och local:remove_message, previous:success-villkor och expire_in_seconds fungerar inte längre för externa avsändare. Använd webhook_action med stegen ovan: de når alla, inte bara den som tryckte.

Bygg vidare