Preskočiť na hlavný obsah
Vývojári Karty správ

Navrhni karty správ

Všetko, čo bot pošle, či už cez webhook, ako odpoveď na príkaz alebo pri aktualizácii po stlačení tlačidla, je karta. Dobrá karta na prvý pohľad povie, čo sa stalo: farebný okraj, nadpis, stav a pod tým podrobnosti.

Čo s tým môžeš robiť

  • Ukáž stavFarebný štítok ako Open, Merged alebo Passing, s počtom pridaných a odobratých riadkov.
  • Vypíš podrobnostiRiadky s popisom a hodnotou, ktoré členovia skopírujú jedným ťuknutím.
  • Píš v markdowneTučné písmo, inline kód, bloky kódu, citácie a zaškrtávacie políčka.
  • Ukáž, že pracuješSpinner, kým bot premýšľa, a potom jeho uvažovanie skryté za prepínačom.

V aplikácii

Štyri karty tak, ako ich vidia členovia. Každá je len pár riadkov JSON.

Anatómia karty

Časti karty zhora nadol. Čo nepotrebuješ, vynechaj: aj karta iba s nadpisom je v poriadku.

  1. Hlavička„Message from“ a meno: názov webhooku alebo pri odpovedi na príkaz názov tvojej komunity. Odpoveď môže pridať badge, napríklad repozitár.
  2. Nadpis a stavtitle, ktorý sa stane odkazom, keď nastavíš title_url, a vedľa neho štítok status.
  3. PodnadpisDruhý tučný riadok, sub_title.
  4. PopisTelo správy v markdowne.
  5. PoliaRiadky s popisom a hodnotou, s tlačidlom na kopírovanie.
  6. PätaČas a pridané a odobraté riadky, ak ich pošleš.
json
{
  "message_container": {
    "type": "embed_message",
    "badge": "acme/web",
    "color": "purple",
    "title": "Pull request #212 opened",
    "title_url": "https://github.com/acme/web/pull/212",
    "status": { "label": "Open", "color": "green", "icon": "pull_request" },
    "sub_title": "Faster search in the channel list",
    "description": "Search now runs **per keystroke** with a 120 ms debounce.",
    "fields": [
      { "field": "Author", "value": "maya" },
      { "field": "Reviewers", "value": "dani, sam" }
    ],
    "additions": 86,
    "deletions": 12,
    "files_changed": 3
  }
}

Všetky polia

Tieto polia patria do message_container. Karta potrebuje popis alebo loader. Polia označené „Odpovede na príkazy“ sa pri posielaní cez webhook zahodia.

PoleTypČo robí
typestringembed_message (predvolené) alebo system_message.
badgestringMalý štítok za menom v hlavičke, napríklad acme/web. Odpovede na príkazy
avatar_urlstringObrázok cez ikonu karty.
colorstringFarba okraja. Pozri farby nižšie.
titlestringTučný prvý riadok.
title_urlstringZ nadpisu urobí odkaz.
sub_titlestringDruhý tučný riadok pod nadpisom.
descriptionstringTelo správy v markdowne.
fieldsarray[{ "field": "…", "value": "…" }]: riadky s popisom a hodnotou.
image_url, image_base64stringObrázok na karte.
imagesarray[{ "image_url": "…" }]: galéria viacerých obrázkov.
statusobject alebo stringFarebný štítok vedľa nadpisu. Pozri nižšie. Odpovede na príkazy
additions, deletions, files_changednumberŠtatistiky diffu v päte. Odpovede na príkazy
loader, loader_text, loader_sub_textboolean, stringSpinner namiesto tela správy.
thinkingstringUvažovanie skryté za prepínačom Show thinking. Odpovede na príkazy
Popis a thinking rozumejú markdownu: **bold**, _italic_, ~~strike~~, `inline code`, bloky kódu ohraničené trojitými backtickmi, > quotes, zaškrtávacie políčka - [x], @zmienky a :emoji:.

Stav a štatistiky diffu

Stavový štítok povie, o čo ide, skôr než si niekto prečíta text. Je vedľa nadpisu, a keď nadpis chýba, v päte; štatistiky diffu sa zobrazia vedľa času. Oboje funguje v odpovediach na príkazy a používa ich aj vstavaná integrácia s GitHubom. Webhook ich zahodí.

json
{
  "message_container": {
    "color": "red",
    "title": "Build failed on main",
    "status": { "label": "Failing", "color": "red" },
    "description": "`search.test.js`: 2 of 212 tests failed."
  }
}
PoleTypČo robí
statusobject alebo stringSamotný string je popis štítka: "status": "Open".
status.labelstringText štítka. Bez neho sa štítok nezobrazí.
status.colorstringgreen, purple, red, orange, yellow, blue alebo gray.
status.iconstringVoliteľná ikona zo zoznamu nižšie.
additionsnumberPridané riadky, zobrazené zelenou ako +86.
deletionsnumberOdobraté riadky, zobrazené červenou ako -12.
files_changednumberZmenené súbory, zobrazené ako 3 files.

Ikony

HodnotaIkonaTypické použitie
pull_requestgit-pull-requestOtvorený pull request
pull_request_closedgit-pull-request-closedZatvorený bez zlúčenia
merge, mergedgit-mergeZlúčený
commitgit-commitPushnutý commit
issuecircle-dotOtvorené issue
issue_closedcircle-checkZatvorené issue
checkcircle-checkTesty prešli, úloha uspela

Mapovanie, ktoré sa osvedčilo pre GitHub

Vstavaná integrácia s GitHubom používa tieto hodnoty; skopíruj si ich do vlastných nástrojov.

UdalosťŠtítokFarbaIkona
Otvorený pull requestOpengreenpull_request
KonceptDraftgraypull_request
ZlúčenýMergedpurplemerged
Zatvorený bez zlúčeniaClosedredpull_request_closed
Otvorené issueOpengreenissue
Zatvorené issueClosedpurpleissue_closed
Pushnutý commitCommitgraycommit
Testy prešliPassinggreencheck
Testy zlyhaliFailingredžiadna

Loader a uvažovanie

Pri všetkom, čo chvíľu trvá, napríklad pri odpovedi AI alebo dlhej úlohe, najprv pošli kartu so spinnerom a potom ju nahraď výsledkom. Loader funguje vo webhookoch aj v odpovediach na príkazy. V odpovedi na príkaz môžeš do thinking vložiť aj uvažovanie modelu: členovia namiesto steny textu uvidia prepínač Show thinking.

assistant
System
Message from Assistant
Premýšľam…Čítam posledných 50 správ

Najprv: loader

assistant
System
Message from Assistant

maya: kedy je standup?

Standup je o 09:30 v #daily.
Skontrolované: pripnuté správy a opakujúca sa udalosť v #daily.

Potom: odpoveď so zbaleným uvažovaním

json
{
  "message_container": {
    "type": "embed_message",
    "color": "blue",
    "loader": true,
    "loader_text": "Thinking…",
    "loader_sub_text": "Reading the last 50 messages"
  }
}
json
{
  "message_container": {
    "type": "embed_message",
    "color": "blue",
    "sub_title": "maya: when is the standup?",
    "description": "Standup is at **09:30**, in #daily.",
    "thinking": "Checked the pinned messages and the recurring event in #daily…"
  }
}
PoleTypČo robí
loaderbooleantrue zobrazí spinner namiesto tela správy.
loader_textstringRiadok vedľa spinnera, napríklad „Premýšľam…“.
loader_sub_textstringMenší riadok pod ním.
thinkingstringZbalené uvažovanie pod popisom, v markdowne.

Ak chceš loader vymeniť za odpoveď, aktualizuj správu novou kartou bez loader. Ako na to, nájdeš na stránke živé aktualizácie.

Dlhé popisy

Popis môže mať až 50 000 bajtov. Po prvých 1 000 členovia uvidia začiatok a tlačidlo Show more, ktoré načíta zvyšok, takže dlhý report nezahltí kanál.

Systémové správy

Nastav "type": "system_message", keď chceš oznámenie namiesto príspevku bota: plánovanú údržbu, zmeny pravidiel, čokoľvek, čo hovorí za samotnú komunitu. Prijíma rovnaké polia a tlačidlá.

json
{
  "message_container": {
    "type": "system_message",
    "color": "orange",
    "title": "Maintenance tonight",
    "description": "The build servers are down from 22:00 to 23:00."
  }
}

Farby

Farba okraja je najrýchlejší signál na karte. Pre rovnaký druh správ používaj vždy rovnakú farbu.

FarbaPouži ju na
greenÚspech: prešlo, nasadené, hotovo
redZlyhanie: chyba, výpadok, zamietnuté
orangeVarovanie, na ktoré treba pozrieť
yellowČaká sa na niekoho: schválenia, otázky
blueInformácia, predvolená
purpleUdalosti v kóde alebo niečo výnimočné

Vytvor si svoj embed

Uprav polia alebo JSON payload: oboje zostáva zosynchronizované. Náhľad ukazuje správu presne tak, ako sa zobrazí v kanáli. Toto je skutočné telo webhooku; skopíruj si ho, keď bude všetko sedieť.

Šablóny
Tlačidlá
Náhľad
Telo webhooku

Tvor ďalej