Gå til hovedindhold
Udviklere Knapper

Tilføj knapper

Sæt knapper under et hvilket som helst kort. En knap åbner et link, ændrer kortet for alle i det øjeblik, nogen trykker på den, eller fortæller din tjeneste, at der blev trykket.

Det kan du

  • Åbn et linkSend folk til en side, et dashboard eller en pull request.
  • Ændr kortet med ét trykRedigér det, fjern det, reagér eller svar, direkte fra trykket, uden din egen server.
  • Hør hvert trykDin tjeneste får live at vide, hvem der trykkede på hvad.
  • Kør en kommandoEn knap kan udløse en af fællesskabets slash-kommandoer, med data.

I appen

Nogen ringer på: kortet dukker op

Et tryk på Åbn porten: kortet ændrer sig for alle

Selve ændringen kræver ingen server: trinnene er gemt sammen med beskeden. Din portstyring hører trykket og åbner porten.

Kom godt i gang

  1. Tilføj en actions-liste

    Knapper hører til i actions, ved siden af kortet, når du poster med en webhook, svarer på en kommando eller sender en opdatering.

    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
    Besked fra Deploybot

    Deploy v2.1 til produktion?

    Anmodet af maya.
  2. Vælg, hvad et tryk gør

    Et link, en ændring af kortet eller et kald til din tjeneste. De tre slags står nedenfor.

Tre slags knapper

Feltet type afgør, hvad et tryk gør.

TypeHvad et tryk gørNår dig
url:{url}Åbner linket.Nej
webhook_actionKører de trin, du har gemt sammen med den, for alle i kanalen.Ja, på beskedens stream_url
trigger:{guid}Udløser en af fællesskabets triggere med knappens payload.Ja, som en ny request til den triggers URL

Ændr kortet med ét tryk

En webhook_action-knap har en liste med trin i triggers. Ved et tryk kører de på mssgs-serveren, i rækkefølge, og alle i kanalen ser resultatet.

TrinHvad det gør, for alleFelter
update_messageErstatter kortet og dets knapper. Send "actions": [] for at fjerne knapperne.message_container, actions, content
remove_messageSletter beskeden.Ingen
add_reactionTilføjer en reaktion fra det medlem, der trykkede.emoji
add_replyPoster et svar fra det medlem, der trykkede.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:" }
      ]
    }
  ]
}
Trinnene læses fra den gemte besked, aldrig fra medlemmets app, så et tryk kan kun gøre det, du selv har lagt ind.
Trinnene kører i rækkefølge, og hvert enkelt bliver forsøgt: fejler et, kører resten stadig.

Hør trykket

En besked med knapper kommer tilbage fra webhooken med en stream_url. Hold den åben, så ankommer hvert tryk som en hændelse af typen action, med knappens id, den gemte knap og dens payload, og hvem der trykkede:

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 egentlige arbejde, som at åbne porten, og sæt så kortets endelige tilstand gennem callback_url. Hvordan streamen og callbacken virker, står under liveopdateringer.

Kør en kommando fra en knap

En trigger:{guid}-knap udløser en af dit fællesskabs triggere, som om nogen havde skrevet kommandoen, og giver knappens payload videre. Triggeren modtager:

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, triggeren svarer, bliver postet som et nyt kort. Requesten siger ikke, hvilken besked knappen sad på: læg det, du har brug for, i payload.

Felter

FeltTypeHvad det gør
typestringurl:{url}, webhook_action eller trigger:{guid}. Påkrævet.
textstringTeksten på knappen. Påkrævet; label virker også.
colorstringKnappens farve, se nedenfor.
idstringFor webhook_action: hvilken knap der blev trykket på. Unik inden for beskeden.
payloadobjectDine data, som du får tilbage ved et tryk.
triggersarrayFor webhook_action: de trin, der skal køres.
disabledbooleanViser knappen nedtonet, og tryk bliver afvist.

Farver

green, blue og purple tegner en fyldt, primær knap. red, orange og yellow tegner en sekundær: brug dem til "Afvis", "Annullér" og andre valg, der kræver omtanke.

Fejl

Når du poster en besked med knapper, tjekker mssgs dem først:

KodeBetydning
INVALID_ACTIONS_FORMATactions er ikke en liste af objekter.
INVALID_ACTION_MISSING_FIELDSEn knap har ingen type eller ingen text.
DUPLICATE_ACTION_IDTo knapper har det samme id.
INVALID_TRIGGERS_FORMATtriggers er ikke en liste af trin.
INVALID_TRIGGER_MISSING_ACTIONEt trin har ingen action.
INVALID_TRIGGER_ACTION_NOT_ALLOWEDEt andet trin end de fire ovenfor.

Når nogen trykker

KodeBetydning
MESSAGE_NOT_FOUNDBeskeden er blevet slettet i mellemtiden.
ACTION_NOT_FOUNDDer er ingen knap med det id på beskeden.
ACTION_DISABLEDKnappen er deaktiveret.
TRIGGER_NOT_FOUND, TRIGGER_NOT_ACTIVEDen trigger, en knap peger på, er væk eller slået fra.
TRIGGER_NOT_ALLOWEDMedlemmet har ikke en rolle, der må bruge den trigger.

Kommer du fra den gamle dokumentation?

Knapper af typen button med ws:send-trin, local:update_message og local:remove_message, previous:success-betingelser og expire_in_seconds virker ikke længere for afsendere udefra. Brug webhook_action med trinnene ovenfor: de når alle, ikke kun den, der trykkede.

Byg videre