Preskoči na glavno vsebino
Razvijalci Kartice sporočil

Oblikuj kartice sporočil

Vse, kar objavi bot, iz webhooka, kot odgovor na ukaz ali ob posodobitvi po pritisku gumba, je kartica. Dobra kartica na prvi pogled pove, kaj se je zgodilo: barvni rob, naslov, stanje, spodaj pa podrobnosti.

Kaj lahko narediš

  • Pokaži stanjeBarvna oznaka, kot so Open, Merged ali Passing, z dodanimi in odstranjenimi vrsticami.
  • Naštej podrobnostiVrstice z nazivom in vrednostjo, ki jih člani kopirajo z enim dotikom.
  • Piši v markdownuKrepko, koda v vrstici, bloki kode, citati in potrditvena polja.
  • Pokaži, da delašIndikator nalaganja, medtem ko bot razmišlja, nato pa njegovo razmišljanje za stikalom.

V aplikaciji

Štiri kartice, kot jih vidijo člani. Vsaka je le nekaj vrstic JSON-a.

Zgradba kartice

Deli kartice, od zgoraj navzdol. Izpusti, česar ne potrebuješ: tudi kartica s samim naslovom je v redu.

  1. Glava„Message from“ in ime: ime webhooka ali, pri odgovoru na ukaz, ime tvoje skupnosti. Odgovor lahko doda badge, na primer repozitorij.
  2. Naslov in stanjetitle, ki postane povezava, ko nastaviš title_url, ob njem pa oznaka status.
  3. PodnaslovDruga krepka vrstica, sub_title.
  4. OpisVsebina, v markdownu.
  5. PoljaVrstice z nazivom in vrednostjo, z gumbom za kopiranje.
  6. NogaČas ter dodane in odstranjene vrstice, če jih pošlješ.
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
  }
}

Vsa polja

Ta polja gredo v message_container. Kartica potrebuje opis ali indikator nalaganja. Polja z oznako „Odgovori na ukaze“ se izpustijo, ko objavljaš prek webhooka.

PoljeTipKaj naredi
typestringembed_message (privzeto) ali system_message.
badgestringMajhna značka za imenom v glavi, na primer acme/web. Odgovori na ukaze
avatar_urlstringSlika čez ikono kartice.
colorstringBarva roba. Glej barve spodaj.
titlestringKrepka prva vrstica.
title_urlstringNaslov spremeni v povezavo.
sub_titlestringDruga krepka vrstica pod naslovom.
descriptionstringVsebina, v markdownu.
fieldsarray[{ "field": "…", "value": "…" }]: vrstice z nazivom in vrednostjo.
image_url, image_base64stringSlika na kartici.
imagesarray[{ "image_url": "…" }]: galerija več slik.
statusobject ali stringBarvna oznaka ob naslovu. Glej spodaj. Odgovori na ukaze
additions, deletions, files_changednumberStatistika sprememb v nogi. Odgovori na ukaze
loader, loader_text, loader_sub_textboolean, stringIndikator nalaganja namesto vsebine.
thinkingstringRazmišljanje, skrito za stikalom Show thinking. Odgovori na ukaze
Opis in thinking razumeta markdown: **bold**, _italic_, ~~strike~~, `inline code`, večvrstične bloke kode, > quotes, potrditvena polja - [x], @omembe in :emoji:.

Stanje in statistika sprememb

Oznaka stanja pove zgodbo, še preden kdo prebere besedilo. Stoji ob naslovu ali, če naslova ni, v nogi; statistika sprememb se prikaže ob času. Oboje deluje v odgovorih na ukaze in uporablja ju vgrajena integracija z GitHubom. Webhook ju izpusti.

json
{
  "message_container": {
    "color": "red",
    "title": "Build failed on main",
    "status": { "label": "Failing", "color": "red" },
    "description": "`search.test.js`: 2 of 212 tests failed."
  }
}
PoljeTipKaj naredi
statusobject ali stringGolo besedilo je oznaka: "status": "Open".
status.labelstringBesedilo oznake. Brez njega oznake ni.
status.colorstringgreen, purple, red, orange, yellow, blue ali gray.
status.iconstringNeobvezna ikona s spodnjega seznama.
additionsnumberDodane vrstice, prikazane kot zeleno +86.
deletionsnumberOdstranjene vrstice, prikazane kot rdeče -12.
files_changednumberSpremenjene datoteke, prikazane kot 3 files.

Ikone

VrednostIkonaTipična uporaba
pull_requestgit-pull-requestOdprt pull request
pull_request_closedgit-pull-request-closedZaprt brez združitve
merge, mergedgit-mergeZdruženo
commitgit-commitPotisnjen commit
issuecircle-dotOdprt issue
issue_closedcircle-checkZaprt issue
checkcircle-checkTesti so uspeli, opravilo je uspešno končano

Preslikava, ki deluje za GitHub

Vgrajena integracija z GitHubom uporablja te vrednosti; prekopiraj jih za svoja orodja.

DogodekOznakaBarvaIkona
Odprt pull requestOpengreenpull_request
OsnutekDraftgraypull_request
ZdruženoMergedpurplemerged
Zaprt brez združitveClosedredpull_request_closed
Odprt issueOpengreenissue
Zaprt issueClosedpurpleissue_closed
Potisnjen commitCommitgraycommit
Testi uspešniPassinggreencheck
Testi neuspešniFailingrednobena

Nalaganje in razmišljanje

Za vse, kar traja nekaj časa, kot UI-odgovor ali dolgo opravilo, najprej objavi kartico z indikatorjem nalaganja, nato jo zamenjaj z rezultatom. Indikator nalaganja deluje iz webhookov in v odgovorih na ukaze. V odgovor na ukaz lahko v thinking dodaš tudi razmišljanje modela: člani namesto stene besedila vidijo stikalo Show thinking.

assistant
System
Message from Assistant
Razmišljam…Berem zadnjih 50 sporočil

Najprej: indikator nalaganja

assistant
System
Message from Assistant

maya: kdaj je standup?

Standup je ob 09:30, v #daily.
Pregledana pripeta sporočila in ponavljajoči se dogodek v #daily.

Nato: odgovor, razmišljanje skrito

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…"
  }
}
PoljeTipKaj naredi
loaderbooleantrue prikaže indikator nalaganja namesto vsebine.
loader_textstringVrstica ob indikatorju, na primer „Razmišljam…“.
loader_sub_textstringManjša vrstica pod njo.
thinkingstringSkrito razmišljanje pod opisom, v markdownu.

Da indikator nalaganja zamenjaš z odgovorom, posodobi sporočilo z novo kartico brez loader. Kako, piše na strani posodobitve v živo.

Dolgi opisi

Opis je lahko dolg do 50.000 bajtov. Po prvih 1000 člani vidijo začetek in gumb Show more, ki naloži preostanek, zato dolgo poročilo ne preplavi kanala.

Sistemska sporočila

Nastavi "type": "system_message" za obvestilo namesto objave bota: vzdrževalna okna, spremembe pravil, vse, kar govori v imenu same skupnosti. Sprejme ista polja in gumbe.

json
{
  "message_container": {
    "type": "system_message",
    "color": "orange",
    "title": "Maintenance tonight",
    "description": "The build servers are down from 22:00 to 23:00."
  }
}

Barve

Barva roba je najhitrejši signal na kartici. Za isto vrsto novic vedno uporabi isto barvo.

BarvaUporabi za
greenUspeh: uspelo, nameščeno, končano
redNeuspeh: ni uspelo, ne deluje, zavrnjeno
orangeOpozorilo, ki ga je treba pogledati
yellowČaka na nekoga: odobritve, vprašanja
blueInformacija, privzeto
purpleDogodki v kodi ali nekaj posebnega

Sestavi svoj embed

Uredi polja ali JSON payload. Oboje ostaja usklajeno. Predogled pokaže sporočilo natanko tako, kot bo prikazano v kanalu. To je pravo telo webhooka; kopiraj ga, ko je videti prav.

Predloge
Gumbi
Predogled
Telo webhooka

Gradi naprej