---
title: "Reaalajas uuendused: muuda mssgs’i sõnumeid tagantjärele"
description: "Uuenda või kustuta mssgs’i sõnumit pärast postitamist selle callback URL-iga, näita edenemist laadimisnäidikuga ja kuula vastuseid, reaktsioone ja nupuvajutusi."
canonical: https://docs.mss.gs/et/live-updates
language: et
---

# Uuenda sõnumeid reaalajas

Sõnum ei pea jääma selliseks, nagu see postitati. Näita töö ajal edenemist, asenda laadimisnäidik tulemusega, võta nupud ära, kui keegi on otsustanud, või kustuta sõnum. Kõik kanalis näevad muutust kohe.

## Mida saad teha

- **Uuenda kaarti** Muuda teksti, värvi ja nuppe samas kohas.

- **Näita edenemist** Laadimisnäidik, mis liigub sammhaaval edasi, ja siis tulemus.

- **Kustuta see** Eemalda sõnum, kui see enam ei kehti.

- **Kuula seda** Vastused, reaktsioonid ja nupuvajutused sinu sõnumil, reaalajas.

Rakenduses

Postitatud laadimisnäidikuga

Uuendatud: samm 2/3

#### Paigaldus valmis

Uuendatud: valmis, nupuga

Üks sõnum, mida uuendati kaks korda selle callback URL-i kaudu. Keegi ei näe kolme sõnumit, vaid ühte, mis muutub.

- [Kiirstart](#quick-start)

- [Uuendamine](#update)

- [Edenemine](#progress)

- [Kustutamine](#delete)

- [Kuulamine](#stream)

## Kiirstart

### Hoia callback URL alles

Iga [webhooki](https://docs.mss.gs/et/webhooks) postitus ja iga [käsu](https://docs.mss.gs/et/commands) päring tuleb koos selle sõnumi callback_url -iga.

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

Saada uus olek. Kaart muutub samas kohas kõigi jaoks.

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

Sisu (body) pole vaja.

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

## Sõnumi uuendamine

Saada JSON PUT-päringuga callback_url -ile. Saada ainult see, mida tahad muuta.

| Väli | Tüüp | Mida see teeb |
| --- | --- | --- |
| message_container | object | Uus kaart. Vaata [sõnumikaarte](https://docs.mss.gs/et/bots). |
| actions | array | Uued nupud. "actions": [] eemaldab kõik; kui välja ära jätad, jäävad nupud alles. |
| content | string | Uus tekst. |
| title , description , color , loader , ... | string | Lühivorm: ülemisel tasemel olevad kaardi väljad pannakse sinu eest kaardi sisse. |

### Vastused

| Olek | Kood | Tähendus |
| --- | --- | --- |
| 200 | {"success": true} | Vastu võetud. Uuendus järgneb kohe. |
| 400 | MISSING_FIELDS | Sisus pole midagi uuendada. |
| 400 | INVALID_BODY | Sisu pole korrektne JSON. |
| 400 | nupu kood | Mõne nupuga on midagi valesti, vaata [nuppe](https://docs.mss.gs/et/buttons). |
| 401 | INVALID_TOKEN | URL ei kehti. |
| 404 | TOKEN_NOT_FOUND | URL on aegunud või seda kasutati sõnumi kustutamiseks. |
| 502 | PUBLISH_FAILED | Uuendust ei õnnestunud kohale toimetada. Proovi uuesti. |

### Kui kaua see töötab

30 minutit alates hetkest, kui sõnum postitati või käsku kasutati. Uuendamine seda aega ei pikenda. Sõnumi kustutamine kasutab URL-i ära. Uuendusega ei saa faile lisada.

## Edenemise näitamine

Postita laadimisnäidikuga kaart, uuenda töö edenedes selle alamteksti ja lõpeta tulemusega. Laadimisnäidik on keerlev ikoon tekstireaga ja selle all väiksema reaga ( 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' }]
});
```

## Sõnumi kustutamine

Saada DELETE callback_url -ile ja sõnum kaob kõigi jaoks. Pärast seda ei saa URL-i enam kasutada.

## Sõnumi kuulamine

stream_url on reaalajas voog (Server-Sent Events) sellest, mis sinu sõnumiga toimub. Ava see ja sündmused saabuvad toimumise hetkel, igaüks JSON-ina data: real, mille type ütleb, mis see on:

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

| Sündmus | Millal | Andmed |
| --- | --- | --- |
| action | Vajutati nuppu. | action_id ja salvestatud nupp väljas action koos selle payload -iga |
| reaction | Reaktsioon lisati või eemaldati. | emoji ja action : add, remove või removeall |
| reply | Keegi vastas sõnumile. | Vastuse content |
| expired | Voog sulgub. Saadetakse nimega sündmusena. | Puudub |

### Kuulamine JavaScriptis

```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();
});
```

### Kust selle saad

| Kust see tuleb | Kehtib |
| --- | --- |
| Nuppudega webhooki postitus | 10 minutit või tund, kui "sse_event_extended_timeout": true |
| Iga käsu päring | 10 minutit |

### Vead

| Olek | Kood | Tähendus |
| --- | --- | --- |
| 401 | INVALID_TOKEN | URL-is olev token on vale. |
| 404 | NOT_FOUND | Voog on aegunud või pole kunagi olemas olnud. |

## Ehita edasi
