---
title: "Кнопки: інтерактивні повідомлення в mssgs"
description: "Кнопки під карткою mssgs: відкрийте посилання, змініть картку для всіх, чуйте кожне натискання наживо або запустіть команду. Поля, кроки й помилки."
canonical: https://mss.gs/uk/docs/buttons
language: uk
---

# Додайте кнопки

Розміщуйте кнопки під будь-якою карткою. Кнопка відкриває посилання, змінює картку для всіх, щойно хтось її натисне, або повідомляє ваш сервіс, що її натиснули.

## Що можна зробити

- **Відкривайте посилання** Спрямовуйте людей на сторінку, дашборд чи pull request.

- **Змінюйте картку натисканням** Редагуйте чи видаляйте її, додавайте реакцію чи відповідь просто з натискання, без власного сервера.

- **Чуйте кожне натискання** Ваш сервіс наживо дізнається, хто що натиснув.

- **Запускайте команду** Кнопка може запустити одну зі слеш-команд спільноти й передати їй дані.

У застосунку

#### Вхідні двері

Хтось дзвонить: з’являється картка

#### Вхідні двері

Натискання «Відчинити ворота»: картка змінюється для всіх

Для самої зміни сервер не потрібен: кроки зберігаються разом із повідомленням. Ваш контролер воріт чує натискання й відчиняє ворота.

- [Швидкий старт](#quick-start)

- [Три види](#kinds)

- [Зміна картки](#steps)

- [Як почути натискання](#listen)

- [Запуск команди](#trigger)

- [Поля](#fields)

- [Помилки](#errors)

## Швидкий старт

### Додайте список actions

Кнопки розміщуються в actions , поруч із карткою: у публікації через [вебхук](https://mss.gs/uk/docs/webhooks), у [відповіді на команду](https://mss.gs/uk/docs/commands) або в [оновленні](https://mss.gs/uk/docs/live-updates).

```json
{
  "message_container": {
    "color": "yellow",
    "title": "Deploy v2.1 to production?",
    "description": "Requested by maya."
  },
  "actions": [
    { "type": "url:https://ci.example.com/deploys/218", "text": "View changes", "color": "blue" }
  ]
}
```

#### Розгорнути v2.1 у продакшн?

- 2 Виберіть, що робить натискання Посилання, зміна картки або звернення до вашого сервісу. Три види описано нижче.

## Три види кнопок

type визначає, що робить натискання.

| Тип | Що робить натискання | Чи доходить до вас |
| --- | --- | --- |
| url:{url} | Відкриває посилання. | Ні |
| webhook_action | Виконує збережені разом із нею кроки для всіх у каналі. | Так, через stream_url повідомлення |
| trigger:{guid} | Запускає один із тригерів спільноти з payload кнопки. | Так, як новий запит на URL цього тригера |

## Зміна картки натисканням

Кнопка webhook_action містить список кроків у triggers . Після натискання вони по черзі виконуються на сервері mssgs, і всі в каналі бачать результат.

| Крок | Що робить, для всіх | Поля |
| --- | --- | --- |
| update_message | Замінює картку та її кнопки. Надішліть "actions": [] , щоб прибрати кнопки. | message_container , actions , content |
| remove_message | Видаляє повідомлення. | Немає |
| add_reaction | Додає реакцію від імені учасника, який натиснув. | emoji |
| add_reply | Публікує відповідь від імені учасника, який натиснув. | content |

```json
{
  "message_container": { "color": "yellow", "title": "Front door", "description": "Someone rang the bell." },
  "actions": [
    {
      "type": "webhook_action",
      "id": "open_gate",
      "text": "Open gate",
      "color": "green",
      "payload": { "door": "front" },
      "triggers": [
        {
          "action": "update_message",
          "message_container": { "color": "blue", "title": "Front door", "description": "Opening…" },
          "actions": []
        },
        { "action": "add_reaction", "emoji": ":white_check_mark:" }
      ]
    }
  ]
}
```

## Як почути натискання

Повідомлення з кнопками повертається від вебхука з stream_url . Тримайте його відкритим, і кожне натискання надходитиме як подія типу action з id кнопки, збереженою кнопкою та її payload , а також тим, хто натиснув:

```sse
data: {"type": "action", "message_id": "...", "action_id": "open_gate", "action": {"id": "open_gate", "payload": {"door": "front"}, ...}, "member_guid": "member-guid", "member": {...}, "ts": 1790000000000}
```

Виконайте справжню роботу, наприклад відчиніть ворота, а потім задайте остаточний стан картки через callback_url . Як працюють потік і callback, описано на сторінці [оновлення наживо](https://mss.gs/uk/docs/live-updates).

## Запуск команди кнопкою

Кнопка trigger:{guid} запускає один із тригерів вашої спільноти так, ніби хтось ввів команду, і передає payload кнопки. Тригер отримує:

```json
{
  "actions": [
    {
      "type": "trigger:5f2c9a1e-trigger-guid",
      "text": "Check status",
      "color": "blue",
      "payload": { "order_id": "12345" }
    }
  ]
}
```

```json
{
  "trigger_match": "/status",
  "message": {
    "content": "[Action Triggered]",
    "member_guid": "member-guid",
    "is_action_button": true,
    "action_payload": { "order_id": "12345" }
  },
  "callback_url": "https://mss.gs/api/v1/trigger-callback/...",
  "stream_url": "https://mss.gs/api/v1/instant/...?token=..."
}
```

## Поля

| Поле | Тип | Що робить |
| --- | --- | --- |
| type | string | url:{url} , webhook_action або trigger:{guid} . Обов’язкове. |
| text | string | Напис на кнопці. Обов’язкове; label теж працює. |
| color | string | Колір кнопки, див. нижче. |
| id | string | Для webhook_action : яку кнопку натиснуто. Унікальний у межах повідомлення. |
| payload | object | Ваші дані, що повертаються під час натискання. |
| triggers | array | Для webhook_action : кроки, які треба виконати. |
| disabled | boolean | Показує кнопку сірою, а натискання відхиляються. |

### Кольори

green , blue і purple дають суцільну основну кнопку. red , orange і yellow дають другорядну: використовуйте їх для «Відхилити», «Скасувати» та інших обережних варіантів.

## Помилки

Коли ви публікуєте повідомлення з кнопками, mssgs спершу їх перевіряє:

| Код | Значення |
| --- | --- |
| INVALID_ACTIONS_FORMAT | actions не є списком об’єктів. |
| INVALID_ACTION_MISSING_FIELDS | Кнопка не має type або text . |
| DUPLICATE_ACTION_ID | Дві кнопки мають однаковий id . |
| INVALID_TRIGGERS_FORMAT | triggers не є списком кроків. |
| INVALID_TRIGGER_MISSING_ACTION | Крок не має action . |
| INVALID_TRIGGER_ACTION_NOT_ALLOWED | Крок, відмінний від чотирьох наведених вище. |

### Коли хтось натискає

| Код | Значення |
| --- | --- |
| MESSAGE_NOT_FOUND | Тим часом повідомлення видалили. |
| ACTION_NOT_FOUND | У повідомленні немає кнопки з таким id. |
| ACTION_DISABLED | Кнопку вимкнено. |
| TRIGGER_NOT_FOUND , TRIGGER_NOT_ACTIVE | Тригер, на який вказує кнопка, видалено або вимкнено. |
| TRIGGER_NOT_ALLOWED | Учасник не має ролі, якій дозволено використовувати цей тригер. |

## Переходите зі старої документації?

## Що далі
