Добавете бутони
Сложете бутони под всяка карта. Бутонът отваря линк, сменя картата за всички в момента, в който някой го докосне, или съобщава на вашата услуга, че е натиснат.
Какво можете да направите
- Отворете линкПратете хората към страница, табло или pull request.
- Сменете картата с едно докосванеРедактирайте я, премахнете я, реагирайте или отговорете направо от натискането, без собствен сървър.
- Чуйте всяко натисканеВашата услуга научава на живо кой какво е натиснал.
- Пуснете командаБутонът може да задейства някоя от slash командите на общността, с данни.
В приложението
Някой звъни: картата се появява
Докосване на Отвори портата: картата се сменя за всички
За самата промяна не е нужен сървър: стъпките се пазят заедно със съобщението. Контролерът на портата чува натискането и отваря портата.
Бърз старт
Добавете списък actions
Бутоните се слагат в
actions, до картата: в публикация от уебхук, в отговор на команда или в обновяване.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" } ] }deploysИзберете какво прави натискането
Линк, промяна на картата или извикване на вашата услуга. Трите вида са описани по-долу.
Три вида бутони
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 |
{
"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, както и кой го е натиснал:
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-ът, вижте в обновления на живо.
Пускане на команда с бутон
Бутон trigger:{guid} задейства един от тригерите на вашата общност, все едно някой е написал командата, и предава payload на бутона. Тригерът получава:
{
"actions": [
{
"type": "trigger:5f2c9a1e-trigger-guid",
"text": "Check status",
"color": "blue",
"payload": { "order_id": "12345" }
}
]
}{
"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=..."
}payload.Полета
| Поле | Тип | Какво прави |
|---|---|---|
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 | Членът няма роля, която може да използва този тригер. |
Идвате от старата документация?
button със стъпки ws:send, local:update_message и local:remove_message, условия previous:success и expire_in_seconds вече не работят за външни подаватели. Използвайте webhook_action със стъпките по-горе: те стигат до всички, а не само до човека, който е натиснал.