---
title: "Reāllaika atjauninājumi: maini mssgs ziņas pēc publicēšanas"
description: "Atjaunini vai dzēs mssgs ziņu pēc publicēšanas ar tās callback URL, parādi progresu ar ielādes indikatoru un seko atbildēm, reakcijām un pogām reāllaikā."
canonical: https://docs.mss.gs/lv/live-updates
language: lv
---

# Atjaunini ziņas reāllaikā

Ziņai nav jāpaliek tādai, kāda tā tika publicēta. Rādi progresu, kamēr darbs rit, nomaini ielādes indikatoru pret rezultātu, noņem pogas, kad kāds ir izlēmis, vai izdzēs ziņu. Visi kanālā izmaiņas redz uzreiz.

## Ko tu vari darīt

- **Atjaunini kartīti** Maini tekstu, krāsu un pogas turpat uz vietas.

- **Rādi progresu** Ielādes indikators, kas iet cauri soļiem, un tad rezultāts.

- **Izdzēs to** Noņem ziņu, kad tā vairs nav aktuāla.

- **Klausies to** Atbildes, reakcijas un pogu nospiešanas uz tavas ziņas, reāllaikā.

Lietotnē

Publicēta ar ielādes indikatoru

Atjaunināta: 2. solis no 3

#### Izvietošana pabeigta

Atjaunināta: gatavs, ar pogu

Viena ziņa, divreiz atjaunināta caur tās callback URL. Neviens neredz trīs ziņas, tikai vienu, kas mainās.

- [Ātrais sākums](#quick-start)

- [Atjaunināšana](#update)

- [Progress](#progress)

- [Dzēšana](#delete)

- [Klausīšanās](#stream)

## Ātrais sākums

### Saglabā callback URL

Katrs [webhook](https://docs.mss.gs/lv/webhooks) ieraksts un katrs [komandas](https://docs.mss.gs/lv/commands) pieprasījums nāk ar šīs ziņas 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, lai atjauninātu

Nosūti jauno stāvokli. Kartīte mainās uz vietas visiem.

```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, lai noņemtu

Body nav vajadzīgs.

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

## Ziņas atjaunināšana

Sūti JSON ar PUT uz callback_url . Sūti tikai to, ko gribi mainīt.

| Lauks | Tips | Ko tas dara |
| --- | --- | --- |
| message_container | object | Jaunā kartīte. Skaties [ziņu kartītes](https://docs.mss.gs/lv/bots). |
| actions | array | Jaunas pogas. "actions": [] noņem tās visas; ja lauku izlaid, tās paliek. |
| content | string | Jauns teksts. |
| title , description , color , loader , ... | string | Saīsinājums: kartītes lauki augšējā līmenī tiek ietīti kartītē tavā vietā. |

### Atbildes

| Statuss | Kods | Nozīme |
| --- | --- | --- |
| 200 | {"success": true} | Pieņemts. Atjauninājums seko uzreiz pēc tam. |
| 400 | MISSING_FIELDS | Body nav nekā, ko atjaunināt. |
| 400 | INVALID_BODY | Body nav derīgs JSON. |
| 400 | pogas kods | Kaut kas nav kārtībā ar pogu, skaties [pogas](https://docs.mss.gs/lv/buttons). |
| 401 | INVALID_TOKEN | URL nav derīgs. |
| 404 | TOKEN_NOT_FOUND | URL ir beidzies vai ticis izmantots ziņas dzēšanai. |
| 502 | PUBLISH_FAILED | Atjauninājumu neizdevās piegādāt. Mēģini vēlreiz. |

### Cik ilgi tas darbojas

30 minūtes no brīža, kad ziņa tika publicēta vai komanda izmantota. Atjaunināšana šo laiku nepagarina. Pēc ziņas dzēšanas URL vairs nedarbojas. Caur atjauninājumu nevar pievienot failus.

## Progresa rādīšana

Publicē kartīti ar ielādes indikatoru, atjaunini tās apakštekstu, kamēr darbs virzās uz priekšu, un beidz ar rezultātu. Ielādes indikators ir griezulis ar rindu un mazāku rindu zem tās ( 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' }]
});
```

## Ziņas dzēšana

Nosūti DELETE uz callback_url , un ziņa pazūd visiem. Pēc tam URL vairs nevar izmantot.

## Ziņas klausīšanās

stream_url ir reāllaika straume (Server-Sent Events) ar visu, kas notiek ar tavu ziņu. Atver to, un notikumi pienāk, tiklīdz tie notiek, katrs kā JSON data: rinda, kuras type pasaka, kas tas ir:

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

| Notikums | Kad | Dati |
| --- | --- | --- |
| action | Tika nospiesta poga. | action_id un saglabātā poga laukā action ar tās payload |
| reaction | Tika pievienota vai noņemta reakcija. | emoji un action : add, remove vai removeall |
| reply | Kāds atbildēja uz ziņu. | Atbildes content |
| expired | Straume tiek aizvērta. Nosūtīts kā nosaukts notikums. | Nav |

### Klausīšanās JavaScript

```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 to dabūt

| No kurienes tas nāk | Cik ilgi atvērts |
| --- | --- |
| Webhook ieraksts ar pogām | 10 minūtes vai stunda ar "sse_event_extended_timeout": true |
| Katrs komandas pieprasījums | 10 minūtes |

### Kļūdas

| Statuss | Kods | Nozīme |
| --- | --- | --- |
| 401 | INVALID_TOKEN | Tokens URL ir nepareizs. |
| 404 | NOT_FOUND | Straume ir beigusies vai nekad nav pastāvējusi. |

## Veido tālāk
