【问题标题】:How to replace the buttons (attachment) only w/ Slack interactive buttons response如何仅使用 Slack 交互式按钮响应替换按钮(附件)
【发布时间】:2017-03-14 17:54:29
【问题描述】:

我已经设法使用 Google Apps 脚本 (GAS) 创建了一个简单的交互式按钮 Slack 应用程序。

我知道如何用响应替换原始消息,但我只想替换按钮,如 Slack 交互式按钮文档中的多个位置所示(但未明确解释):
https://api.slack.com/docs/message-buttons#crafting_your_message

我想做这里演示的事情: 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);     
}

我不想替换整个原始消息,而是将按钮替换为复选框和确认消息之类的东西,如上面的 gif 所示。

谢谢!

【问题讨论】:

  • 这应该是用有意义的东西替换按钮的松弛功能

标签: slack-api


【解决方案1】:

您只能替换完整的消息,而不仅仅是一部分。

有两个选项可以更新原始消息:

  1. 使用{"replace_original": true}响应 Slack 请求

  2. 使用chat.update

如果您的原始消息不是 ephemeral 类型,您将在 original_message 属性中从 Slack 获取原始消息的副本作为有效负载的一部分,这有助于更新交换原始消息。

请参阅 Slack 文档中的 this page 作为参考。

【讨论】:

  • 感谢您的帮助 - 我们将使用选项 1。
  • @Matt 你能分享你的工作doPost 代码吗?我仍然遇到您发布此问题时遇到的相同问题
  • @baskInEminence - 我只是最终替换了所有测试,然后我从未实现它,所以我没有任何代码可以分享。
  • 所以 slacks 文档是假的? @baskInEminence(我找不到您解释如何更新消息的一部分的部分)
  • @jens 我也很好奇这个。事实证明,您可以通过删除操作然后在原始消息文本中附加换行符和附加消息来完成此操作(用消息替换按钮,同时保持原始消息文本不变)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-31
  • 1970-01-01
  • 2022-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多