如何从机器人的交互式消息中选择按钮?

问题描述 投票:1回答:1

我正试图让一个机器人“点击”Slack中的交互式消息上的按钮(最好是作为机器人,但使用用户令牌也可以)。

我发现发送动作信息的链接是

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

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

我确定我是不是发送了适当的数据或身份验证或者是什么。我的所有POST都返回“invalid_payload”或“invalid_arg_name”。

任何帮助是极大的赞赏。

slack slack-api
1个回答
1
投票

看起来我终于搞清楚了! 我不得不以老式的方式解决这个问题。 Slack客户支持仅对官方公共API有帮助。我将在Javascript中留下解决方案。

要做到这一点,你需要3件事:

  1. choice_num 选项列表中的选择号。 例如如果消息有按钮(从左到右):是,否,也许,则是= 0,否= 1,可能= 2。
  2. message 交互式消息的json
  3. SLACK_TOKEN 你的松弛令牌(不确定机器人令牌是否有效,用户令牌会这样做)

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

  • payload
  • service_id和/或bot_user_id
  • token

args = encodeURI( '有效载荷= {' +'“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

然后只是向request_url发送一个异步POST,你应该得到这样的东西:

{ “改为”:真实的, “OK”:真正}

© www.soinside.com 2019 - 2024. All rights reserved.