Designa meddelandekort
Allt en bot postar, från en webhook, ett kommandosvar eller en knappuppdatering, är ett kort. Ett bra kort visar vad som har hänt med en blick: en färgad kant, en rubrik, en status och detaljerna under.
Det här kan du göra
- Visa en statusEn färgad pill som Öppen, Mergad eller Godkänd, med tillagda och borttagna rader.
- Lista detaljernaRader med etikett och värde som medlemmarna kan kopiera med ett tryck.
- Skriv i markdownFetstil, inline-kod, kodblock, citat och kryssrutor.
- Visa att du arbetarEn spinner medan din bot tänker, och dess resonemang bakom en växlare efteråt.
I appen
Fyra kort som medlemmarna ser dem. Vart och ett är några rader JSON.
Ett korts anatomi
Kortets delar, uppifrån och ned. Utelämna det du inte behöver: ett kort med bara en rubrik går bra.
- Sidhuvud"Meddelande från" och ett namn: webhookens namn, eller din communitys namn för ett kommandosvar. Ett svar kan lägga till ett
badge, som repot. - Rubrik och status
title, en länk när du angertitle_url, medstatus-pillen bredvid. - UnderrubrikEn andra rad i fetstil,
sub_title. - BeskrivningBrödtexten, i markdown.
- FältRader med etikett och värde, med en kopieringsknapp.
- SidfotTiden, och tillagda och borttagna rader om du skickar 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
}
}Alla fält
De här ligger i message_container. Ett kort behöver en beskrivning, eller ett laddningsläge. Fält som är märkta "Kommandosvar" tas bort när du postar via en webhook.
| Fält | Typ | Vad det gör |
|---|---|---|
type | string | embed_message (standard) eller system_message. |
badge | string | Ett litet märke efter namnet i sidhuvudet, som acme/web. Kommandosvar |
avatar_url | string | En bild ovanpå kortets ikon. |
color | string | Kantens färg. Se färger nedan. |
title | string | Den första raden, i fetstil. |
title_url | string | Gör rubriken till en länk. |
sub_title | string | En andra rad i fetstil under rubriken. |
description | string | Brödtexten, i markdown. |
fields | array | [{ "field": "…", "value": "…" }]: rader med etikett och värde. |
image_url, image_base64 | string | En bild på kortet. |
images | array | [{ "image_url": "…" }]: ett galleri med flera bilder. |
status | object eller string | En färgad pill bredvid rubriken. Se nedan. Kommandosvar |
additions, deletions, files_changed | number | Diff-statistik i sidfoten. Kommandosvar |
loader, loader_text, loader_sub_text | boolean, string | En spinner i stället för brödtexten. |
thinking | string | Resonemang bakom en Visa tänkande-växlare. Kommandosvar |
thinking förstår markdown: **bold**, _italic_, ~~strike~~, `inline code`, kodblock med staket, > quotes, kryssrutor med - [x], @omnämnanden och :emoji:.Status och diff-statistik
En statuspill berättar historien innan någon har läst texten. Den sitter bredvid rubriken, eller i sidfoten när det inte finns någon rubrik; diff-statistiken visas bredvid tiden. Båda fungerar i kommandosvar, och den inbyggda GitHub-integrationen använder dem. En webhook tar bort dem.
{
"message_container": {
"color": "red",
"title": "Build failed on main",
"status": { "label": "Failing", "color": "red" },
"description": "`search.test.js`: 2 of 212 tests failed."
}
}| Fält | Typ | Vad det gör |
|---|---|---|
status | object eller string | En ensam sträng är etiketten: "status": "Open". |
status.label | string | Texten i pillen. Utan den blir det ingen pill. |
status.color | string | green, purple, red, orange, yellow, blue eller gray. |
status.icon | string | En valfri ikon ur listan nedan. |
additions | number | Tillagda rader, visas som grönt +86. |
deletions | number | Borttagna rader, visas som rött -12. |
files_changed | number | Ändrade filer, visas som 3 files. |
Ikoner
| Värde | Ikon | Typisk användning |
|---|---|---|
pull_request | git-pull-request | En pull request har öppnats |
pull_request_closed | git-pull-request-closed | Stängd utan merge |
merge, merged | git-merge | Mergad |
commit | git-commit | En pushad commit |
issue | circle-dot | En issue har öppnats |
issue_closed | circle-check | En issue har stängts |
check | circle-check | Testerna gick igenom, ett jobb lyckades |
En mappning som fungerar för GitHub
Den inbyggda GitHub-integrationen använder de här etiketterna; kopiera dem till dina egna verktyg.
| Händelse | Etikett | Färg | Ikon |
|---|---|---|---|
| Pull request öppnad | Open | green | pull_request |
| Utkast | Draft | gray | pull_request |
| Mergad | Merged | purple | merged |
| Stängd utan merge | Closed | red | pull_request_closed |
| Issue öppnad | Open | green | issue |
| Issue stängd | Closed | purple | issue_closed |
| Commit pushad | Commit | gray | commit |
| Testerna gick igenom | Passing | green | check |
| Testerna misslyckades | Failing | red | ingen |
Laddning och tänkande
För allt som tar en stund, som ett AI-svar eller ett långt jobb, postar du först ett kort med en spinner och ersätter det sedan med resultatet. Laddningsläget fungerar från webhooks och kommandosvar. I ett kommandosvar kan du också lägga modellens resonemang i thinking: medlemmarna ser en Visa tänkande-växlare i stället för en vägg av text.
Först: laddningskortet
Sedan: svaret, med resonemanget hopfällt
{
"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…"
}
}| Fält | Typ | Vad det gör |
|---|---|---|
loader | boolean | true visar spinnern i stället för brödtexten. |
loader_text | string | Raden bredvid spinnern, som "Tänker…". |
loader_sub_text | string | En mindre rad under den. |
thinking | string | Hopfällt resonemang under beskrivningen, i markdown. |
För att byta laddningskortet mot svaret uppdaterar du meddelandet med ett nytt kort utan loader. Hur det går till står under liveuppdateringar.
Långa beskrivningar
En beskrivning kan vara upp till 50 000 byte. Efter de första 1 000 ser medlemmarna början och en Visa mer-knapp som laddar resten, så att en lång rapport inte översvämmar kanalen.
Systemmeddelanden
Ange "type": "system_message" för ett meddelande som talar för communityn snarare än ett botinlägg: underhållsfönster, ändrade regler, allt där communityn själv har ordet. Det tar samma fält och knappar.
{
"message_container": {
"type": "system_message",
"color": "orange",
"title": "Maintenance tonight",
"description": "The build servers are down from 22:00 to 23:00."
}
}Färger
Kantens färg är den snabbaste signalen på ett kort. Använd samma färg för samma sorts nyhet, varje gång.
| Färg | Använd den för |
|---|---|
green | Lyckat: godkänt, driftsatt, klart |
red | Misslyckat: fel, nere, avvisat |
orange | En varning som behöver en titt |
yellow | Väntar på någon: godkännanden, frågor |
blue | Information, standard |
purple | Kodhändelser, eller något speciellt |
Bygg din embed
Redigera fälten eller JSON-payloaden. Båda hålls synkade. Se meddelandet visas exakt som i en kanal. Det här är den riktiga webhook-bodyn; kopiera den när den ser rätt ut.