Preskoči na glavni sadržaj
Programeri Kartice poruka

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.

  1. Zaglavlje„Message from“ i ime: ime webhooka ili, kod odgovora na naredbu, ime tvoje zajednice. Odgovor može dodati badge, primjerice repozitorij.
  2. Naslov i statustitle, koji postaje poveznica kad postaviš title_url, s oznakom status pored.
  3. PodnaslovDrugi podebljani redak, sub_title.
  4. OpisTijelo, u markdownu.
  5. PoljaRetci s nazivom i vrijednošću, s gumbom za kopiranje.
  6. PodnožjeVrijeme te dodani i uklonjeni retci, ako ih pošalješ.
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
  }
}

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.

PoljeTipŠto radi
typestringembed_message (zadano) ili system_message.
badgestringMala značka iza imena u zaglavlju, primjerice acme/web. Odgovori na naredbe
avatar_urlstringSlika preko ikone kartice.
colorstringBoja ruba. Pogledaj boje u nastavku.
titlestringPodebljani prvi redak.
title_urlstringPretvara naslov u poveznicu.
sub_titlestringDrugi podebljani redak ispod naslova.
descriptionstringTijelo, u markdownu.
fieldsarray[{ "field": "…", "value": "…" }]: retci s nazivom i vrijednošću.
image_url, image_base64stringSlika na kartici.
imagesarray[{ "image_url": "…" }]: galerija od nekoliko slika.
statusobject ili stringObojena oznaka pored naslova. Pogledaj u nastavku. Odgovori na naredbe
additions, deletions, files_changednumberStatistika diffa u podnožju. Odgovori na naredbe
loader, loader_text, loader_sub_textboolean, stringSpinner umjesto tijela.
thinkingstringRazmišljanje iza preklopnika Show thinking. Odgovori na naredbe
Opis i 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.

json
{
  "message_container": {
    "color": "red",
    "title": "Build failed on main",
    "status": { "label": "Failing", "color": "red" },
    "description": "`search.test.js`: 2 of 212 tests failed."
  }
}
PoljeTipŠto radi
statusobject ili stringSam string je oznaka: "status": "Open".
status.labelstringTekst oznake. Bez njega oznake nema.
status.colorstringgreen, purple, red, orange, yellow, blue ili gray.
status.iconstringNeobavezna ikona s popisa u nastavku.
additionsnumberDodani retci, prikazani kao zeleno +86.
deletionsnumberUklonjeni retci, prikazani kao crveno -12.
files_changednumberPromijenjene datoteke, prikazane kao 3 files.

Ikone

VrijednostIkonaTipična upotreba
pull_requestgit-pull-requestOtvoren pull request
pull_request_closedgit-pull-request-closedZatvoren bez spajanja
merge, mergedgit-mergeSpojeno
commitgit-commitPushani commit
issuecircle-dotOtvoren issue
issue_closedcircle-checkZatvoren issue
checkcircle-checkTestovi su prošli, posao je uspio

Mapiranje koje odgovara GitHubu

Ugrađena integracija s GitHubom koristi ove vrijednosti; kopiraj ih za svoje alate.

DogađajOznakaBojaIkona
Otvoren pull requestOpengreenpull_request
SkicaDraftgraypull_request
SpojenoMergedpurplemerged
Zatvoren bez spajanjaClosedredpull_request_closed
Otvoren issueOpengreenissue
Zatvoren issueClosedpurpleissue_closed
Pushan commitCommitgraycommit
Testovi su prošliPassinggreencheck
Testovi nisu prošliFailingrednema

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.

assistant
System
Message from Assistant
Razmišljam…Čitam zadnjih 50 poruka

Najprije: loader

assistant
System
Message from Assistant

maya: kad je standup?

Standup je u 09:30, u #daily.
Provjerene su prikvačene poruke i ponavljajući događaj u #daily.

Zatim: odgovor, s razmišljanjem sklopljenim

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…"
  }
}
PoljeTipŠto radi
loaderbooleantrue prikazuje spinner umjesto tijela.
loader_textstringRedak pored spinnera, primjerice „Razmišljam…“.
loader_sub_textstringManji redak ispod njega.
thinkingstringSklopljeno 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.

json
{
  "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.

BojaZa što
greenUspjeh: prošlo, deployano, gotovo
redNeuspjeh: palo, ne radi, odbijeno
orangeUpozorenje koje treba pogledati
yellowČeka se netko: odobrenja, pitanja
blueInformacija, zadano
purpleDogađ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.

Predlošci
Gumbi
Pregled
Tijelo webhooka

Nastavi graditi