如何 select 与机器人交互消息中的按钮?

How to select a button from a interactive message with a bot?

我正在尝试让机器人 "click" Slack 中交互式消息上的按钮(最好是作为机器人,但也可以使用用户令牌)。

我发现 link 发送操作信息是

https://blue-hybrid.slack.com/api/chat.attachmentAction

我的问题是我找不到 "chat.attachmentAction." 的任何文档 查看使用我的浏览器时发送的请求,它有一个 http 参数:“_x_id”,有效负载是一个 WebKitForm ,包含 4 项:payload、client_id、payload_id 和 token。

我确定我只是没有发送适当的数据或身份验证或什么。我所有的帖子 return "invalid_payload" 或 "invalid_arg_name."

非常感谢任何帮助。

看来我终于明白了!
我不得不用老式的方法解决它。 Slack 客户支持只会帮助官方 public API。我将在 Javascript.

中留下解决方案

为此,您需要 3 个东西:

  1. choice_num
    • 选项列表中选项的数量。
    • 例如如果一条消息有按钮(从左到右):是、否和可能,则 yes=0、no=1 和 maybe=2。
  2. message
    • 互动留言json
  3. SLACK_TOKEN
    • 您的 slack 令牌(不确定机器人令牌是否有效,但是用户令牌有效)

方法chat.attachmentAction本身需要3个参数:

  • payload
  • service_id AND/OR bot_user_id
  • token

args = encodeURI(
'payload={'
+ '"actions":[' + JSON.stringify(message.attachments[0]["actions"][choice_num]) + '],'
+ '"attachment_id":"' + message.attachments[0]["id"] + '",'
+ '"callback_id":"' + message.attachments[0]["callback_id"] + '",'
+ '"channel_id":"' + message.channel + '",'
+ '"message_ts":"' + message.ts + '"}'
+ '&service_id=' + message.bot_id
+ '&bot_user_id=' + message.user
+ '&token=' + SLACK_TOKEN
)

request_url = 'https://YOURSLACKTEAM.slack.com/api/chat.attachmentAction?' + args

然后发送一个异步 POST 到 request_url 你应该得到这样的结果:

{"replaced":true,"ok":true}