Tervezz üzenetkártyákat
Minden, amit egy bot küld, legyen az webhookból, parancsra adott válaszból vagy gombnyomás utáni frissítésből, kártya. Egy jó kártya egy pillantással elmondja, mi történt: színes szegély, cím, státusz, alatta a részletek.
Mire használhatod
- Mutass státusztSzínes címke, például Open, Merged vagy Passing, a hozzáadott és törölt sorok számával.
- Sorold fel a részleteketCímke–érték sorok, amelyeket a tagok egy koppintással kimásolhatnak.
- Írj markdownbanFélkövér, soron belüli kód, kódblokkok, idézetek és jelölőnégyzetek.
- Mutasd, hogy dolgozolForgó jelző, amíg a botod gondolkodik, utána pedig a gondolatmenete egy kapcsoló mögött.
Az alkalmazásban
Négy kártya, ahogy a tagok látják őket. Mindegyik csak néhány sor JSON.
Egy kártya felépítése
A kártya részei fentről lefelé. Hagyd el, amire nincs szükséged: egy csak címből álló kártya is rendben van.
- Fejléc„Message from” és egy név: a webhook neve, vagy parancsra adott válasznál a közösséged neve. A válasz egy
badgejelvényt is kaphat, például a repository nevét. - Cím és státuszA
title, amely linkké válik, ha megadod atitle_urlmezőt, mellette astatuscímkével. - AlcímEgy második félkövér sor,
sub_title. - LeírásA törzs, markdownban.
- MezőkCímke–érték sorok, másolás gombbal.
- LáblécAz időpont, valamint a hozzáadott és törölt sorok, ha elküldöd őket.
{
"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
}
}Összes mező
Ezek a message_container objektumba kerülnek. A kártyához leírás vagy betöltésjelző kell. A „Parancsválaszok” jelölésű mezők kimaradnak, ha webhookon keresztül küldesz.
| Mező | Típus | Mit csinál |
|---|---|---|
type | string | embed_message (alapértelmezett) vagy system_message. |
badge | string | Kis jelvény a név után a fejlécben, például acme/web. Parancsválaszok |
avatar_url | string | Kép, amely a kártya ikonjára kerül. |
color | string | A szegély színe. Lásd a színeket lejjebb. |
title | string | A félkövér első sor. |
title_url | string | Linkké alakítja a címet. |
sub_title | string | Második félkövér sor a cím alatt. |
description | string | A törzs, markdownban. |
fields | array | [{ "field": "…", "value": "…" }]: címke–érték sorok. |
image_url, image_base64 | string | Kép a kártyán. |
images | array | [{ "image_url": "…" }]: több képből álló galéria. |
status | object vagy string | Színes címke a cím mellett. Lásd lejjebb. Parancsválaszok |
additions, deletions, files_changed | number | Diff-statisztika a láblécben. Parancsválaszok |
loader, loader_text, loader_sub_text | boolean, string | Forgó jelző a törzs helyett. |
thinking | string | Gondolatmenet egy Show thinking kapcsoló mögött. Parancsválaszok |
thinking érti a markdownt: **bold**, _italic_, ~~strike~~, `inline code`, keretezett kódblokkok, > quotes, - [x] jelölőnégyzetek, @említések és :emoji:.Státusz és diff-statisztika
A státuszcímke már azelőtt elmondja a lényeget, hogy bárki elolvasná a szöveget. A cím mellett áll, vagy ha nincs cím, a láblécben; a diff-statisztika az időpont mellett jelenik meg. Mindkettő működik parancsokra adott válaszokban, és a beépített GitHub-integráció is használja őket. A webhook elhagyja őket.
{
"message_container": {
"color": "red",
"title": "Build failed on main",
"status": { "label": "Failing", "color": "red" },
"description": "`search.test.js`: 2 of 212 tests failed."
}
}| Mező | Típus | Mit csinál |
|---|---|---|
status | object vagy string | Egy sima string maga a címke: "status": "Open". |
status.label | string | A címke szövege. Enélkül nincs címke. |
status.color | string | green, purple, red, orange, yellow, blue vagy gray. |
status.icon | string | Opcionális ikon az alábbi listából. |
additions | number | Hozzáadott sorok, zöld +86 formában. |
deletions | number | Törölt sorok, piros -12 formában. |
files_changed | number | Módosított fájlok, 3 files formában. |
Ikonok
| Érték | Ikon | Jellemző használat |
|---|---|---|
pull_request | git-pull-request | Megnyitott pull request |
pull_request_closed | git-pull-request-closed | Beolvasztás nélkül lezárva |
merge, merged | git-merge | Beolvasztva |
commit | git-commit | Pusholt commit |
issue | circle-dot | Megnyitott issue |
issue_closed | circle-check | Lezárt issue |
check | circle-check | Sikeres tesztek, sikeresen lefutott feladat |
GitHubhoz bevált megfeleltetés
A beépített GitHub-integráció ezeket használja; másold át őket a saját eszközeidbe.
| Esemény | Címke | Szín | Ikon |
|---|---|---|---|
| Pull request megnyitva | Open | green | pull_request |
| Piszkozat | Draft | gray | pull_request |
| Beolvasztva | Merged | purple | merged |
| Lezárva beolvasztás nélkül | Closed | red | pull_request_closed |
| Issue megnyitva | Open | green | issue |
| Issue lezárva | Closed | purple | issue_closed |
| Commit pusholva | Commit | gray | commit |
| Sikeres tesztek | Passing | green | check |
| Sikertelen tesztek | Failing | red | nincs |
Betöltésjelző és gondolatmenet
Ha valami eltart egy darabig, például egy AI-válasz vagy egy hosszú feladat, előbb küldj egy kártyát forgó jelzővel, majd cseréld le az eredményre. A betöltésjelző webhookokból és parancsválaszokból is működik. Parancsválaszban a modell gondolatmenetét is elhelyezheted a thinking mezőben: a tagok szövegfal helyett egy Show thinking kapcsolót látnak.
Először: a betöltésjelző
Utána: a válasz, összecsukott gondolatmenettel
{
"message_container": {
"type": "embed_message",
"color": "blue",
"loader": true,
"loader_text": "Thinking…",
"loader_sub_text": "Reading the last 50 messages"
}
}{
"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…"
}
}| Mező | Típus | Mit csinál |
|---|---|---|
loader | boolean | true esetén a törzs helyett a forgó jelző látszik. |
loader_text | string | A forgó jelző melletti sor, például „Gondolkodom…”. |
loader_sub_text | string | Egy kisebb sor alatta. |
thinking | string | Összecsukott gondolatmenet a leírás alatt, markdownban. |
Ha a betöltésjelzőt le akarod cserélni a válaszra, frissítsd az üzenetet egy új kártyával, amelyből kihagyod a loader mezőt. A módját az élő frissítések oldal írja le.
Hosszú leírások
Egy leírás legfeljebb 50 000 bájt lehet. Az első 1000 bájt után a tagok az elejét látják, és egy Show more gombot, amely betölti a többit, így egy hosszú jelentés nem árasztja el a csatornát.
Rendszerüzenetek
Állítsd be a "type": "system_message" értéket, ha közleményt küldesz, nem botbejegyzést: karbantartási időszakról, szabályzatváltozásról, bármiről, ami magának a közösségnek a nevében szól. Ugyanazokat a mezőket és gombokat fogadja.
{
"message_container": {
"type": "system_message",
"color": "orange",
"title": "Maintenance tonight",
"description": "The build servers are down from 22:00 to 23:00."
}
}Színek
A szegély színe a leggyorsabb jelzés egy kártyán. Ugyanahhoz a hírtípushoz mindig ugyanazt a színt használd.
| Szín | Mire használd |
|---|---|
green | Siker: átment, élesítve, kész |
red | Hiba: elbukott, leállt, elutasítva |
orange | Figyelmeztetés, amelyre rá kell nézni |
yellow | Valakire vár: jóváhagyások, kérdések |
blue | Információ, az alapértelmezett |
purple | Kódesemények, vagy valami különleges |
Építsd meg az embededet
Szerkeszd a mezőket vagy a JSON payloadot: a kettő együtt változik. Az előnézet pontosan úgy mutatja az üzenetet, ahogy a csatornában megjelenik. Ez a valódi webhook-törzs; másold ki, ha minden stimmel.