Pereiti prie pagrindinio turinio
Programuotojams Mygtukai

Pridėk mygtukus

Pridėk mygtukus po bet kuria kortele. Mygtukas atidaro nuorodą, pakeičia kortelę visiems tą akimirką, kai kas nors jį paspaudžia, arba praneša tavo paslaugai, kad buvo paspaustas.

Ką gali padaryti

  • Atidaryk nuorodąNukreipk žmones į puslapį, skydelį ar pull request.
  • Pakeisk kortelę vienu paspaudimuRedaguok ją, pašalink, sureaguok ar atsakyk tiesiai iš paspaudimo, be savo serverio.
  • Gauk kiekvieną paspaudimąTavo paslauga gyvai sužino, kas ką paspaudė.
  • Paleisk komandąMygtukas gali paleisti vieną iš bendruomenės komandų su pasviruoju brūkšniu, kartu su duomenimis.

Programėlėje

Kažkas skambina: atsiranda kortelė

Paspaudus „Atidaryti vartus“, kortelė pasikeičia visiems

Pačiam pakeitimui serverio nereikia: žingsniai saugomi kartu su žinute. Tavo vartų valdiklis gauna paspaudimą ir atidaro vartus.

Greita pradžia

  1. Pridėk actions sąrašą

    Mygtukai dedami į actions, šalia kortelės: webhook įraše, atsakyme į komandą arba atnaujinime.

    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

    Diegti v2.1 į produkciją?

    Paprašė maya.
  2. Pasirink, ką daro paspaudimas

    Nuoroda, kortelės pakeitimas arba kreipimasis į tavo paslaugą. Trys rūšys aprašytos toliau.

Trys mygtukų rūšys

Ką daro paspaudimas, lemia type.

TipasKą daro paspaudimasAr pasiekia tave
url:{url}Atidaro nuorodą.Ne
webhook_actionVykdo su juo išsaugotus žingsnius, visiems kanale.Taip, per žinutės stream_url
trigger:{guid}Paleidžia vieną iš bendruomenės trigerių su mygtuko payload.Taip, kaip nauja užklausa į to trigerio URL

Kortelės keitimas vienu paspaudimu

webhook_action mygtukas turi žingsnių sąrašą lauke triggers. Paspaudus jie paeiliui vykdomi mssgs serveryje, o rezultatą mato visi kanale.

ŽingsnisKą daro, visiemsLaukai
update_messagePakeičia kortelę ir jos mygtukus. Siųsk "actions": [], kad pašalintum mygtukus.message_container, actions, content
remove_messageIštrina žinutę.Nėra
add_reactionPrideda reakciją paspaudusio nario vardu.emoji
add_replyPaskelbia atsakymą paspaudusio nario vardu.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:" }
      ]
    }
  ]
}
Žingsniai skaitomi iš išsaugotos žinutės, niekada iš nario programėlės, todėl paspaudimas gali padaryti tik tai, ką ten įdėjai.
Žingsniai vykdomi paeiliui ir bandomas kiekvienas: jei vienas nepavyksta, likusieji vis tiek vykdomi.

Paspaudimų gavimas

Žinutė su mygtukais grįžta iš webhook su stream_url. Laikyk jį atidarytą, ir kiekvienas paspaudimas ateis kaip action tipo įvykis su mygtuko id, išsaugotu mygtuku ir jo payload bei informacija, kas jį paspaudė:

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

Atlik tikrąjį darbą, pavyzdžiui, atidaryk vartus, tada per callback_url nustatyk galutinę kortelės būseną. Kaip veikia srautas ir callback, rasi puslapyje atnaujinimai realiuoju laiku.

Komandos paleidimas mygtuku

trigger:{guid} mygtukas paleidžia vieną iš tavo bendruomenės trigerių, lyg kas nors būtų įvedęs komandą, ir perduoda mygtuko payload. Trigeris gauna:

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=..."
}
Trigerio atsakymas paskelbiamas kaip nauja kortelė. Užklausoje nenurodoma, prie kurios žinutės buvo mygtukas: tai, ko reikia, dėk į payload.

Laukai

LaukasTipasKą daro
typestringurl:{url}, webhook_action arba trigger:{guid}. Privalomas.
textstringUžrašas ant mygtuko. Privalomas; tinka ir label.
colorstringMygtuko spalva, žr. toliau.
idstringwebhook_action atveju: kuris mygtukas paspaustas. Unikalus žinutėje.
payloadobjectTavo duomenys, grąžinami paspaudus.
triggersarraywebhook_action atveju: vykdomi žingsniai.
disabledbooleanRodo mygtuką papilkintą, o paspaudimai atmetami.

Spalvos

green, blue ir purple piešia vientisą, pagrindinį mygtuką. red, orange ir yellow piešia antrinį: naudok juos „Atmesti“, „Atšaukti“ ir kitiems atsargiems pasirinkimams.

Klaidos

Kai skelbi žinutę su mygtukais, mssgs pirmiausia juos patikrina:

KodasReikšmė
INVALID_ACTIONS_FORMATactions nėra objektų sąrašas.
INVALID_ACTION_MISSING_FIELDSMygtukas neturi type arba text.
DUPLICATE_ACTION_IDDu mygtukai turi tą patį id.
INVALID_TRIGGERS_FORMATtriggers nėra žingsnių sąrašas.
INVALID_TRIGGER_MISSING_ACTIONŽingsnis neturi action.
INVALID_TRIGGER_ACTION_NOT_ALLOWEDŽingsnis, kuris nėra vienas iš keturių aukščiau.

Kai kas nors paspaudžia

KodasReikšmė
MESSAGE_NOT_FOUNDŽinutė per tą laiką buvo ištrinta.
ACTION_NOT_FOUNDŽinutėje nėra mygtuko su tokiu id.
ACTION_DISABLEDMygtukas išjungtas.
TRIGGER_NOT_FOUND, TRIGGER_NOT_ACTIVETrigeris, į kurį rodo mygtukas, nebeegzistuoja arba išjungtas.
TRIGGER_NOT_ALLOWEDNarys neturi rolės, kuriai leidžiama naudoti tą trigerį.

Ateini iš senosios dokumentacijos?

button tipo mygtukai su ws:send žingsniais, local:update_message ir local:remove_message, previous:success sąlygos ir expire_in_seconds išoriniams siuntėjams nebeveikia. Naudok webhook_action su aukščiau aprašytais žingsniais: jie pasiekia visus, ne tik paspaudusį žmogų.

Kurk toliau