---
title: "Carduri de mesaj: ce poate afișa un mesaj de bot în mssgs"
description: "Creează mesaje de bot în mssgs: titluri, markdown, câmpuri, imagini, etichete de status cu statistici de diff, loader, raționament, culori și un builder live."
canonical: https://docs.mss.gs/ro/bots
language: ro
---

# Creează carduri de mesaj

Tot ce postează un bot, fie dintr-un webhook, dintr-un răspuns la o comandă sau dintr-o actualizare după un buton, este un card. Un card bun spune dintr-o privire ce s-a întâmplat: o margine colorată, un titlu, un status și detaliile dedesubt.

## Ce poți face

- **Afișează un status** O etichetă colorată precum Open, Merged sau Passing, cu liniile adăugate și șterse.

- **Listează detaliile** Rânduri cu etichetă și valoare pe care membrii le copiază cu o singură atingere.

- **Scrie în markdown** Text îngroșat, cod inline, blocuri de cod, citate și checkbox-uri.

- **Arată că lucrezi** Un spinner cât timp botul se gândește, apoi raționamentul lui ascuns după un comutator.

În aplicație

#### Pull request-ul #212 a fost deschis

Căutare mai rapidă în lista de canale

#### Build-ul #1847 a trecut

#### api.acme.com nu funcționează

Patru carduri așa cum le văd membrii. Fiecare înseamnă doar câteva linii de JSON.

- [Anatomie](#anatomy)

- [Toate câmpurile](#fields)

- [Status și statistici de diff](#status)

- [Loader și raționament](#ai)

- [Mesaje de sistem](#system)

- [Culori](#colors)

- [Construiește unul](#try)

## Anatomia unui card

Părțile unui card, de sus în jos. Lasă deoparte ce nu îți trebuie: și un card doar cu titlu este în regulă.

#### Pull request-ul #212 a fost deschis

Căutare mai rapidă în lista de canale

- **Antet** „Message from” și un nume: numele webhook-ului sau, la un răspuns la o comandă, numele comunității tale. Un răspuns poate adăuga un badge , de exemplu repository-ul.

- **Titlu și status** title , care devine link când setezi title_url , cu eticheta status alături.

- **Subtitlu** O a doua linie îngroșată, sub_title .

- **Descriere** Conținutul, în markdown.

- **Câmpuri** Rânduri cu etichetă și valoare, cu un buton de copiere.

- **Subsol** Ora, plus liniile adăugate și șterse, dacă le trimiți.

```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
  }
}
```

## Toate câmpurile

Acestea merg în message_container . Un card are nevoie de o descriere sau de un loader. Câmpurile marcate „Răspunsuri la comenzi” sunt eliminate când postezi printr-un webhook.

| Câmp | Tip | Ce face |
| --- | --- | --- |
| type | string | embed_message (implicit) sau system_message . |
| badge | string | O etichetă mică după nume, în antet, de exemplu acme/web . Răspunsuri la comenzi |
| avatar_url | string | O imagine peste iconița cardului. |
| color | string | Culoarea marginii. Vezi culorile mai jos. |
| title | string | Prima linie, îngroșată. |
| title_url | string | Transformă titlul într-un link. |
| sub_title | string | O a doua linie îngroșată, sub titlu. |
| description | string | Conținutul, în markdown. |
| fields | array | [{ "field": "…", "value": "…" }] : rânduri cu etichetă și valoare. |
| image_url , image_base64 | string | O imagine pe card. |
| images | array | [{ "image_url": "…" }] : o galerie cu mai multe imagini. |
| status | object sau string | O etichetă colorată lângă titlu. Vezi mai jos. Răspunsuri la comenzi |
| additions , deletions , files_changed | number | Statistici de diff în subsol. Răspunsuri la comenzi |
| loader , loader_text , loader_sub_text | boolean, string | Un spinner în locul conținutului. |
| thinking | string | Raționament ascuns după comutatorul **Show thinking**. Răspunsuri la comenzi |

## Status și statistici de diff

O etichetă de status spune povestea înainte ca cineva să citească textul. Stă lângă titlu sau, dacă nu există titlu, în subsol; statisticile de diff apar lângă oră. Ambele funcționează în răspunsurile la comenzi, iar integrarea GitHub încorporată le folosește. Un webhook le elimină.

#### Pull request-ul #212 a fost integrat

#### Build-ul a eșuat pe main

#### maya a făcut push pe main

```json
{
  "message_container": {
    "color": "red",
    "title": "Build failed on main",
    "status": { "label": "Failing", "color": "red" },
    "description": "`search.test.js`: 2 of 212 tests failed."
  }
}
```

| Câmp | Tip | Ce face |
| --- | --- | --- |
| status | object sau string | Un string simplu este eticheta: "status": "Open" . |
| status.label | string | Textul etichetei. Fără el nu apare nicio etichetă. |
| status.color | string | green , purple , red , orange , yellow , blue sau gray . |
| status.icon | string | O iconiță opțională din lista de mai jos. |
| additions | number | Linii adăugate, afișate ca +86 verde. |
| deletions | number | Linii șterse, afișate ca -12 roșu. |
| files_changed | number | Fișiere modificate, afișate ca 3 files . |

### Iconițe

| Valoare | Iconiță | Utilizare tipică |
| --- | --- | --- |
| pull_request | git-pull-request | Un pull request deschis |
| pull_request_closed | git-pull-request-closed | Închis fără merge |
| merge , merged | git-merge | Integrat |
| commit | git-commit | Un commit trimis cu push |
| issue | circle-dot | Un issue deschis |
| issue_closed | circle-check | Un issue închis |
| check | circle-check | Testele au trecut, un job a reușit |

### O mapare care funcționează pentru GitHub

Integrarea GitHub încorporată folosește aceste valori; copiază-le pentru propriile tale unelte.

| Eveniment | Etichetă | Culoare | Iconiță |
| --- | --- | --- | --- |
| Pull request deschis | Open | green | pull_request |
| Ciornă | Draft | gray | pull_request |
| Integrat | Merged | purple | merged |
| Închis fără merge | Closed | red | pull_request_closed |
| Issue deschis | Open | green | issue |
| Issue închis | Closed | purple | issue_closed |
| Commit trimis cu push | Commit | gray | commit |
| Teste trecute | Passing | green | check |
| Teste eșuate | Failing | red | niciuna |

## Loader și raționament

Pentru orice durează puțin, cum ar fi un răspuns AI sau un job lung, postează mai întâi un card cu un spinner, apoi înlocuiește-l cu rezultatul. Loader-ul funcționează din webhook-uri și din răspunsurile la comenzi. Într-un răspuns la o comandă poți pune și raționamentul modelului în thinking : membrii văd un comutator **Show thinking** în loc de un zid de text.

Întâi: loader-ul

maya: când e standup-ul?

Apoi: răspunsul, cu raționamentul pliat

```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…"
  }
}
```

| Câmp | Tip | Ce face |
| --- | --- | --- |
| loader | boolean | true afișează spinnerul în locul conținutului. |
| loader_text | string | Linia de lângă spinner, de exemplu „Mă gândesc…”. |
| loader_sub_text | string | O linie mai mică dedesubt. |
| thinking | string | Raționament pliat sub descriere, în markdown. |

Ca să înlocuiești loader-ul cu răspunsul, actualizează mesajul cu un card nou fără loader . Cum se face afli la [actualizări live](https://docs.mss.gs/ro/live-updates).

## Descrieri lungi

O descriere poate avea până la 50.000 de octeți. După primii 1.000, membrii văd începutul și un buton **Show more** care încarcă restul, așa că un raport lung nu inundă canalul.

## Mesaje de sistem

Setează "type": "system_message" pentru un anunț în loc de o postare de bot: ferestre de mentenanță, schimbări de reguli, orice vorbește în numele comunității însăși. Acceptă aceleași câmpuri și butoane.

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

## Culori

Culoarea marginii este cel mai rapid semnal de pe un card. Folosește aceeași culoare pentru același tip de veste, de fiecare dată.

| Culoare | Folosește-o pentru |
| --- | --- |
| green | Succes: trecut, implementat, gata |
| red | Eșec: eșuat, căzut, respins |
| orange | Un avertisment care merită verificat |
| yellow | Se așteaptă după cineva: aprobări, întrebări |
| blue | Informații, culoarea implicită |
| purple | Evenimente din cod sau ceva special |

## Construiește-ți embedul

Editează câmpurile sau payload-ul JSON: cele două rămân sincronizate. Previzualizarea arată mesajul exact cum va apărea într-un canal. Acesta este body-ul real al webhook-ului; copiază-l când totul arată bine.

## Construiește mai departe
