---
title: "Atnaujinimai realiu laiku: keisk mssgs žinutes po paskelbimo"
description: "Atnaujink ar ištrink mssgs žinutę po paskelbimo per callback URL, rodyk eigą su įkėlimo indikatoriumi ir gauk atsakymus, reakcijas bei paspaudimus tiesiogiai."
canonical: https://docs.mss.gs/lt/live-updates
language: lt
---

# Atnaujink žinutes realiu laiku

Žinutė neprivalo likti tokia, kokia buvo paskelbta. Rodyk eigą, kol vyksta užduotis, pakeisk įkėlimo indikatorių rezultatu, pašalink mygtukus, kai kas nors jau nusprendė, arba ištrink žinutę. Visi kanale pokytį pamato iš karto.

## Ką gali padaryti

- **Atnaujink kortelę** Keisk tekstą, spalvą ir mygtukus toje pačioje vietoje.

- **Rodyk eigą** Įkėlimo indikatorius, einantis per žingsnius, o po to rezultatas.

- **Ištrink ją** Pašalink žinutę, kai ji nebeaktuali.

- **Klausykis jos** Atsakymai, reakcijos ir mygtukų paspaudimai tavo žinutėje, realiu laiku.

Programėlėje

Paskelbta su įkėlimo indikatoriumi

Atnaujinta: 2 žingsnis iš 3

#### Diegimas baigtas

Atnaujinta: baigta, su mygtuku

Viena žinutė, du kartus atnaujinta per jos callback URL. Niekas nemato trijų žinučių, tik vieną, kuri keičiasi.

- [Greita pradžia](#quick-start)

- [Atnaujinimas](#update)

- [Eiga](#progress)

- [Ištrynimas](#delete)

- [Klausymasis](#stream)

## Greita pradžia

### Išsaugok callback URL

Kiekvienas [webhook](https://docs.mss.gs/lt/webhooks) įrašas ir kiekviena [komandos](https://docs.mss.gs/lt/commands) užklausa ateina su tos žinutės callback_url .

```bash
BODY='{"message_container": {"color": "blue", "loader": true, "loader_text": "Deploying…"}}'
SIG=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$MSSGS_WEBHOOK_SECRET" | sed 's/^.* //')

curl -X POST "$MSSGS_WEBHOOK_URL" -H "Content-Type: application/json" \
  -H "X-Mssgs-Signature: sha256=$SIG" -d "$BODY"

# {"success": true, "message_id": "...", "callback_url": "https://mss.gs/api/v1/trigger-callback/8f14e45f-..."}
```

### PUT atnaujinti

Siųsk naują būseną. Kortelė pasikeičia vietoje visiems.

```bash
curl -X PUT "$CALLBACK_URL" -H "Content-Type: application/json" \
  -d '{"message_container": {"color": "green", "title": "Deploy complete", "description": "v2.1 is live."}}'
```

### DELETE pašalinti

Užklausos turinio nereikia.

```bash
curl -X DELETE "$CALLBACK_URL"
```

## Žinutės atnaujinimas

Siųsk JSON metodu PUT į callback_url . Siųsk tik tai, ką nori pakeisti.

| Laukas | Tipas | Ką daro |
| --- | --- | --- |
| message_container | object | Nauja kortelė. Žr. [žinučių korteles](https://docs.mss.gs/lt/bots). |
| actions | array | Nauji mygtukai. "actions": [] pašalina juos visus; praleidus lauką jie lieka. |
| content | string | Naujas tekstas. |
| title , description , color , loader , ... | string | Trumpinys: kortelės laukai viršutiniame lygyje už tave sudedami į kortelę. |

### Atsakymai

| Būsena | Kodas | Reikšmė |
| --- | --- | --- |
| 200 | {"success": true} | Priimta. Atnaujinimas įvyks iškart po to. |
| 400 | MISSING_FIELDS | Užklausos turinyje nėra ką atnaujinti. |
| 400 | INVALID_BODY | Užklausos turinys nėra galiojantis JSON. |
| 400 | mygtuko kodas | Kažkas negerai su mygtuku, žr. [mygtukus](https://docs.mss.gs/lt/buttons). |
| 401 | INVALID_TOKEN | URL negalioja. |
| 404 | TOKEN_NOT_FOUND | URL baigė galioti arba buvo panaudotas žinutei ištrinti. |
| 502 | PUBLISH_FAILED | Atnaujinimo pristatyti nepavyko. Bandyk dar kartą. |

### Kiek laiko veikia

30 minučių nuo žinutės paskelbimo arba komandos panaudojimo akimirkos. Atnaujinimas šio laiko nepratęsia. Ištrynus žinutę URL nebegalioja. Per atnaujinimą failų pridėti negalima.

## Eigos rodymas

Paskelbk kortelę su įkėlimo indikatoriumi, atnaujink jos papildomą eilutę, kai užduotis juda į priekį, ir baik rezultatu. Įkėlimo indikatorius yra suktukas su eilute teksto ir mažesne eilute po ja ( loader_text , loader_sub_text ).

```javascript
const { callback_url } = await post({
  message_container: { color: 'blue', loader: true, loader_text: 'Deploying…', loader_sub_text: 'Step 1 of 3: building' }
});

const update = (body) => {
  return fetch(callback_url, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) });
};

await build();
await update({ message_container: { color: 'blue', loader: true, loader_text: 'Deploying…', loader_sub_text: 'Step 2 of 3: running migrations' } });

await migrate();
await update({
  message_container: { color: 'green', title: 'Deploy complete', description: 'v2.1 is live on production.' },
  actions: [{ type: 'url:https://ci.example.com/deploys/218', text: 'View logs', color: 'green' }]
});
```

## Žinutės ištrynimas

Siųsk DELETE į callback_url , ir žinutė dingsta visiems. Po to URL nebegalima naudoti.

## Žinutės klausymasis

stream_url yra tiesioginis srautas (Server-Sent Events) to, kas vyksta su tavo žinute. Atidaryk jį, ir įvykiai ateina, kai tik įvyksta, kiekvienas kaip JSON data: eilutė, kurios type nurodo, kas tai:

```sse
curl -N "$STREAM_URL"

data: {"type": "reaction", "message_id": "...", "emoji": ":tada:", "action": "add", "member_guid": "...", "member": {...}, "ts": 1790000000000}

data: {"type": "action", "message_id": "...", "action_id": "approve", "action": {"id": "approve", "payload": {"deploy": 218}, ...}, "member_guid": "...", "member": {...}, "ts": 1790000004200}

data: {"type": "reply", "message_id": "...", "content": "Ship it!", "member_guid": "...", "member": {...}, "ts": 1790000009800}

event: expired
data: {}
```

| Įvykis | Kada | Duomenys |
| --- | --- | --- |
| action | Paspaustas mygtukas. | action_id ir išsaugotas mygtukas lauke action su jo payload |
| reaction | Reakcija pridėta arba pašalinta. | emoji ir action : add, remove arba removeall |
| reply | Kažkas atsakė į žinutę. | Atsakymo content |
| expired | Srautas užsidaro. Siunčiamas kaip pavadintas įvykis. | Nėra |

### Klausymasis JavaScript kalba

```javascript
const events = new EventSource(streamUrl);

// Every event arrives as a plain message; its kind is in "type".
events.onmessage = (e) => {
  const ev = JSON.parse(e.data);
  if ((ev.type === 'action') && (ev.action_id === 'approve')) {
    startDeploy(ev.action.payload.deploy);
  }
};

// The one named event: the stream is closing.
events.addEventListener('expired', () => {
  events.close();
});
```

### Kur jį gauni

| Iš kur gauni | Galioja |
| --- | --- |
| Webhook įrašas su mygtukais | 10 minučių arba valandą su "sse_event_extended_timeout": true |
| Kiekviena komandos užklausa | 10 minučių |

### Klaidos

| Būsena | Kodas | Reikšmė |
| --- | --- | --- |
| 401 | INVALID_TOKEN | Prieigos raktas (token) URL adrese neteisingas. |
| 404 | NOT_FOUND | Srautas baigė galioti arba niekada neegzistavo. |

## Kurk toliau
