Oblikuj kartice poruka
Sve što bot objavi, bilo iz webhooka, kao odgovor na naredbu ili kao ažuriranje nakon pritiska gumba, kartica je. Dobra kartica na prvi pogled kaže što se dogodilo: obojeni rub, naslov, status, a ispod detalji.
Što možeš napraviti
- Prikaži statusObojena oznaka poput Open, Merged ili Passing, s dodanim i uklonjenim recima.
- Navedi detaljeRetci s nazivom i vrijednošću koje članovi kopiraju jednim dodirom.
- Piši u markdownuPodebljano, inline kôd, blokovi koda, citati i potvrdni okviri.
- Pokaži da radišSpinner dok tvoj bot razmišlja, a zatim njegovo razmišljanje iza preklopnika.
U aplikaciji
Četiri kartice onako kako ih vide članovi. Svaka je nekoliko redaka JSON-a.
Građa kartice
Dijelovi kartice, odozgo prema dolje. Izostavi ono što ti ne treba: kartica samo s naslovom sasvim je u redu.
- Zaglavlje„Message from“ i ime: ime webhooka ili, kod odgovora na naredbu, ime tvoje zajednice. Odgovor može dodati
badge, primjerice repozitorij. - Naslov i status
title, koji postaje poveznica kad postavištitle_url, s oznakomstatuspored. - PodnaslovDrugi podebljani redak,
sub_title. - OpisTijelo, u markdownu.
- PoljaRetci s nazivom i vrijednošću, s gumbom za kopiranje.
- PodnožjeVrijeme te dodani i uklonjeni retci, ako ih pošalješ.
{
"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
}
}Sva polja
Ova polja idu u message_container. Kartici treba opis ili loader. Polja označena s „Odgovori na naredbe“ izostavljaju se kad objavljuješ preko webhooka.
| Polje | Tip | Što radi |
|---|---|---|
type | string | embed_message (zadano) ili system_message. |
badge | string | Mala značka iza imena u zaglavlju, primjerice acme/web. Odgovori na naredbe |
avatar_url | string | Slika preko ikone kartice. |
color | string | Boja ruba. Pogledaj boje u nastavku. |
title | string | Podebljani prvi redak. |
title_url | string | Pretvara naslov u poveznicu. |
sub_title | string | Drugi podebljani redak ispod naslova. |
description | string | Tijelo, u markdownu. |
fields | array | [{ "field": "…", "value": "…" }]: retci s nazivom i vrijednošću. |
image_url, image_base64 | string | Slika na kartici. |
images | array | [{ "image_url": "…" }]: galerija od nekoliko slika. |
status | object ili string | Obojena oznaka pored naslova. Pogledaj u nastavku. Odgovori na naredbe |
additions, deletions, files_changed | number | Statistika diffa u podnožju. Odgovori na naredbe |
loader, loader_text, loader_sub_text | boolean, string | Spinner umjesto tijela. |
thinking | string | Razmišljanje iza preklopnika Show thinking. Odgovori na naredbe |
thinking razumiju markdown: **bold**, _italic_, ~~strike~~, `inline code`, blokove koda u trostrukim backtickovima, > quotes, potvrdne okvire - [x], @spominjanja i :emoji:.Status i statistika diffa
Oznaka statusa ispriča priču prije nego što itko pročita tekst. Stoji pored naslova ili, kad naslova nema, u podnožju; statistika diffa prikazuje se pored vremena. Oboje radi u odgovorima na naredbe i koristi ih ugrađena integracija s GitHubom. Webhook ih izostavlja.
{
"message_container": {
"color": "red",
"title": "Build failed on main",
"status": { "label": "Failing", "color": "red" },
"description": "`search.test.js`: 2 of 212 tests failed."
}
}| Polje | Tip | Što radi |
|---|---|---|
status | object ili string | Sam string je oznaka: "status": "Open". |
status.label | string | Tekst oznake. Bez njega oznake nema. |
status.color | string | green, purple, red, orange, yellow, blue ili gray. |
status.icon | string | Neobavezna ikona s popisa u nastavku. |
additions | number | Dodani retci, prikazani kao zeleno +86. |
deletions | number | Uklonjeni retci, prikazani kao crveno -12. |
files_changed | number | Promijenjene datoteke, prikazane kao 3 files. |
Ikone
| Vrijednost | Ikona | Tipična upotreba |
|---|---|---|
pull_request | git-pull-request | Otvoren pull request |
pull_request_closed | git-pull-request-closed | Zatvoren bez spajanja |
merge, merged | git-merge | Spojeno |
commit | git-commit | Pushani commit |
issue | circle-dot | Otvoren issue |
issue_closed | circle-check | Zatvoren issue |
check | circle-check | Testovi su prošli, posao je uspio |
Mapiranje koje odgovara GitHubu
Ugrađena integracija s GitHubom koristi ove vrijednosti; kopiraj ih za svoje alate.
| Događaj | Oznaka | Boja | Ikona |
|---|---|---|---|
| Otvoren pull request | Open | green | pull_request |
| Skica | Draft | gray | pull_request |
| Spojeno | Merged | purple | merged |
| Zatvoren bez spajanja | Closed | red | pull_request_closed |
| Otvoren issue | Open | green | issue |
| Zatvoren issue | Closed | purple | issue_closed |
| Pushan commit | Commit | gray | commit |
| Testovi su prošli | Passing | green | check |
| Testovi nisu prošli | Failing | red | nema |
Loader i razmišljanje
Za sve što potraje, poput AI odgovora ili dugog posla, najprije objavi karticu sa spinnerom, a zatim je zamijeni rezultatom. Loader radi u webhookovima i odgovorima na naredbe. U odgovor na naredbu možeš staviti i razmišljanje modela, u thinking: članovi umjesto zida teksta vide preklopnik Show thinking.
Najprije: loader
Zatim: odgovor, s razmišljanjem sklopljenim
{
"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…"
}
}| Polje | Tip | Što radi |
|---|---|---|
loader | boolean | true prikazuje spinner umjesto tijela. |
loader_text | string | Redak pored spinnera, primjerice „Razmišljam…“. |
loader_sub_text | string | Manji redak ispod njega. |
thinking | string | Sklopljeno razmišljanje ispod opisa, u markdownu. |
Da bi loader zamijenio odgovorom, ažuriraj poruku novom karticom bez loader. Kako, opisuje stranica ažuriranja uživo.
Dugi opisi
Opis može imati do 50.000 bajtova. Nakon prvih 1.000 članovi vide početak i gumb Show more koji učitava ostatak, pa dugi izvještaj ne preplavljuje kanal.
Sustavne poruke
Postavi "type": "system_message" za obavijest umjesto objave bota: termine održavanja, promjene pravila i sve što govori u ime same zajednice. Prima ista polja i gumbe.
{
"message_container": {
"type": "system_message",
"color": "orange",
"title": "Maintenance tonight",
"description": "The build servers are down from 22:00 to 23:00."
}
}Boje
Boja ruba najbrži je signal na kartici. Za istu vrstu vijesti uvijek koristi istu boju.
| Boja | Za što |
|---|---|
green | Uspjeh: prošlo, deployano, gotovo |
red | Neuspjeh: palo, ne radi, odbijeno |
orange | Upozorenje koje treba pogledati |
yellow | Čeka se netko: odobrenja, pitanja |
blue | Informacija, zadano |
purple | Događaji u kodu ili nešto posebno |
Složi svoj embed
Uredi polja ili JSON payload: oboje ostaje usklađeno. Pregled prikazuje poruku točno onako kako će izgledati u kanalu. Ovo je pravo tijelo webhooka; kopiraj ga kad sve izgleda kako treba.