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

时间:2018-01-11 20:08:18

标签: slack slack-api

我正在尝试使用机器人来点击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。”

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

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

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

  1. choice_num
    • 选项列表中的选择编号。
    • e.g。如果消息有按钮(从左到右):是,否,也许,则是= 0,否= 1,可能= 2。
  2. message
    • 交互式消息的json
  3. SLACK_TOKEN
    • 你的松弛令牌(不确定机器人令牌是否有效,但是用户令牌会这样做)
  4. 方法chat.attachmentAction本身需要3个参数:

    • payload
    • service_id和/或bot_user_id
    • token
      

    args = encodeURI(
      '有效载荷= {'
      +'""":[' + 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":真}