Design beskedkort
Alt, hvad en bot poster, fra en webhook, et kommandosvar eller en opdatering fra en knap, er et kort. Et godt kort siger med ét blik, hvad der skete: en farvet kant, en titel, en status og detaljerne nedenunder.
Det kan du
- Vis en statusEn farvet pille som Åben, Merget eller Bestået, med tilføjede og fjernede linjer.
- Vis detaljerneRækker med etiket og værdi, som medlemmerne kan kopiere med ét tryk.
- Skriv i markdownFed skrift, inline-kode, kodeblokke, citater og afkrydsningsfelter.
- Vis, at du arbejderEn spinner, mens din bot tænker, og bagefter dens ræsonnement bag en knap.
I appen
Fire kort, som medlemmerne ser dem. Hvert af dem er et par linjer JSON.
Et korts opbygning
Kortets dele, oppefra og ned. Udelad det, du ikke har brug for: et kort med kun en titel er fint.
- Header"Besked fra" og et navn: webhookens navn, eller dit fællesskabs navn ved et kommandosvar. Et svar kan tilføje et
badge, som repositoriet. - Titel og statusFeltet
title, der bliver et link, når du sættertitle_url, medstatus-pillen ved siden af. - UndertitelEn anden linje i fed skrift,
sub_title. - BeskrivelseBrødteksten, i markdown.
- FelterRækker med etiket og værdi, med en kopiknap.
- BundTidspunktet, og tilføjede og fjernede linjer, hvis du sender dem.
{
"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
}
}Alle felter
De her hører til i message_container. Et kort skal have en beskrivelse eller en loader. Felter markeret "kommandosvar" fjernes, når du poster gennem en webhook.
| Felt | Type | Hvad det gør |
|---|---|---|
type | string | embed_message (standard) eller system_message. |
badge | string | En lille chip efter navnet i headeren, som acme/web. Kommandosvar |
avatar_url | string | Et billede oven på kortets ikon. |
color | string | Kantens farve. Se farver nedenfor. |
title | string | Første linje, i fed skrift. |
title_url | string | Gør titlen til et link. |
sub_title | string | En anden linje i fed skrift under titlen. |
description | string | Brødteksten, i markdown. |
fields | array | [{ "field": "…", "value": "…" }]: rækker med etiket og værdi. |
image_url, image_base64 | string | Et billede på kortet. |
images | array | [{ "image_url": "…" }]: et galleri med flere billeder. |
status | object eller string | En farvet pille ved siden af titlen. Se nedenfor. Kommandosvar |
additions, deletions, files_changed | number | Diff-statistik i bunden. Kommandosvar |
loader, loader_text, loader_sub_text | boolean, string | En spinner i stedet for brødteksten. |
thinking | string | Ræsonnement bag en Vis tænkning-knap. Kommandosvar |
thinking forstår markdown: **bold**, _italic_, ~~strike~~, `inline code`, kodeblokke med hegn, > quotes, afkrydsningsfelter med - [x], @omtaler og :emoji:.Status og diff-statistik
En statuspille fortæller historien, før nogen læser teksten. Den sidder ved siden af titlen, eller i bunden, når der ikke er nogen titel; diff-statistikken vises ved siden af tidspunktet. Begge virker i kommandosvar, og den indbyggede GitHub-integration bruger dem. En webhook fjerner dem.
{
"message_container": {
"color": "red",
"title": "Build failed on main",
"status": { "label": "Failing", "color": "red" },
"description": "`search.test.js`: 2 of 212 tests failed."
}
}| Felt | Type | Hvad det gør |
|---|---|---|
status | object eller string | En ren string er etiketten: "status": "Open". |
status.label | string | Teksten i pillen. Uden den er der ingen pille. |
status.color | string | green, purple, red, orange, yellow, blue eller gray. |
status.icon | string | Et valgfrit ikon fra listen nedenfor. |
additions | number | Tilføjede linjer, vist som grøn +86. |
deletions | number | Fjernede linjer, vist som rød -12. |
files_changed | number | Berørte filer, vist som 3 files. |
Ikoner
| Værdi | Ikon | Typisk brug |
|---|---|---|
pull_request | git-pull-request | En pull request er oprettet |
pull_request_closed | git-pull-request-closed | Lukket uden merge |
merge, merged | git-merge | Merget |
commit | git-commit | Et pushet commit |
issue | circle-dot | Et issue er oprettet |
issue_closed | circle-check | Et issue er lukket |
check | circle-check | Tests bestået, et job lykkedes |
En mapping, der virker til GitHub
Den indbyggede GitHub-integration bruger disse; kopiér dem til dine egne værktøjer.
| Hændelse | Etiket | Farve | Ikon |
|---|---|---|---|
| Pull request oprettet | Open | green | pull_request |
| Kladde | Draft | gray | pull_request |
| Merget | Merged | purple | merged |
| Lukket uden merge | Closed | red | pull_request_closed |
| Issue oprettet | Open | green | issue |
| Issue lukket | Closed | purple | issue_closed |
| Commit pushet | Commit | gray | commit |
| Tests bestået | Passing | green | check |
| Tests fejlet | Failing | red | intet |
Loader og tænkning
Til alt, der tager et øjeblik, som et AI-svar eller et langt job, poster du først et kort med en spinner og erstatter det så med resultatet. Loaderen virker fra webhooks og kommandosvar. I et kommandosvar kan du også lægge modellens ræsonnement i thinking: medlemmerne ser en Vis tænkning-knap i stedet for en mur af tekst.
Først: loaderen
Så: svaret, med ræsonnementet foldet sammen
{
"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…"
}
}| Felt | Type | Hvad det gør |
|---|---|---|
loader | boolean | true viser spinneren i stedet for brødteksten. |
loader_text | string | Linjen ved siden af spinneren, som "Tænker…". |
loader_sub_text | string | En mindre linje under den. |
thinking | string | Sammenfoldet ræsonnement under beskrivelsen, i markdown. |
For at skifte loaderen ud med svaret opdaterer du beskeden med et nyt kort uden loader. Hvordan står under liveopdateringer.
Lange beskrivelser
En beskrivelse kan være op til 50.000 bytes. Efter de første 1.000 ser medlemmerne starten og en Vis mere-knap, der henter resten, så en lang rapport ikke oversvømmer kanalen.
Systembeskeder
Sæt "type": "system_message" for en meddelelse i stedet for et botopslag: vedligeholdelsesvinduer, ændrede regler, alt, der taler på vegne af selve fællesskabet. Den tager de samme felter og knapper.
{
"message_container": {
"type": "system_message",
"color": "orange",
"title": "Maintenance tonight",
"description": "The build servers are down from 22:00 to 23:00."
}
}Farver
Kantens farve er det hurtigste signal på et kort. Brug den samme farve til den samme slags nyhed, hver gang.
| Farve | Brug den til |
|---|---|
green | Succes: bestået, deployet, færdig |
red | Fejl: fejlet, nede, afvist |
orange | En advarsel, der skal kigges på |
yellow | Venter på nogen: godkendelser, spørgsmål |
blue | Information, standarden |
purple | Kodehændelser, eller noget særligt |
Byg dit embed
Rediger felterne eller JSON-payloaden. De holdes synkroniseret. Se beskeden blive vist præcis som i en kanal. Det her er den rigtige webhook-body; kopiér den, når den ser rigtig ud.