Как заменить кнопки (вложение) только с откликом интерактивных кнопок Slack

Мне удалось создать простое интерактивное приложение Slack с помощью скрипта Google Apps (GAS).

Я знаю, как заменить исходное сообщение с ответом, но я хотел бы заменить только кнопки, как продемонстрировано (но неясно объяснено) в нескольких местах в документации Slack Interactive Button:
https://api.slack.com/docs/message-buttons

Я хотел бы сделать то, что продемонстрировано здесь: https://a.slack-edge.com/dcb1/img/api/message_guidelines/Example_6.gif

Является ли это обновлением исходного сообщения, заменой исходного сообщения идентичным текстом, но другим вложением,...?

Мой текущий код сообщения интерактивных кнопок выглядит следующим образом:

function sendMsgWithButton() {

// slack channel url (where to send the message)
var slackUrl = "https://hooks.slack.com/services/...";

// message text  
var messageData = {
"text": "Here's your interactive buttons message.",
"attachments": [
    {
        "text": "Can you click the button?",
        "fallback": "Sorry, no support for buttons.",
        "callback_id": "ptNotificationButtonResponse",
        "color": "#3AA3E3",
        "attachment_type": "default",
        "actions": [
            {
                "name": "userResponse",
                "text": "OK",
                "style": "primary",
                "type": "button",
                "value": "ok"
            }
                   ]
    }
                ]
}

// format for Slack
var options = {
   'method' : 'post',
   'contentType': 'application/json',
   // Convert the JavaScript object to a JSON string.
   'payload' : JSON.stringify(messageData)
 };    

// post to Slack
UrlFetchApp.fetch(slackUrl, options);
}

Мой текущий код URL действия сейчас выглядит так:

function doPost() {

var replyMessage = {"replace_original": true,
                    "response_type": "in_channel",
                    "text": "I see you clicked the button."
                   };

 return ContentService.createTextOutput(JSON.stringify(replyMessage)).setMimeType(ContentService.MimeType.JSON);     
}

Вместо того, чтобы заменять все исходное сообщение, я бы хотел заменить только кнопки на что-то вроде флажка и подтверждающего сообщения, как показано на рисунке выше.

Спасибо!

1 ответ

Решение

Вы можете заменить только полное сообщение, а не только часть.

Существует два варианта обновления исходного сообщения:

  1. Ответить на Slack-запрос с помощью {"replace_original": true}

  2. использование chat.update

Если ваше оригинальное сообщение не было типа ephemeral вы получите копию исходного сообщения как часть полезной нагрузки от Slack в original_message свойство, которое может быть полезно для обновления обмена исходного сообщения.

Смотрите эту страницу в документации Slack в качестве ссылки.

Другие вопросы по тегам