如何获取Slack操作消息发送的JSON有效负载?

问题描述

我正在尝试用交互式按钮构建一个Slack机器人。我已经设置了一个Google Apps脚本来处理对Slack消息执行的操作。我想要由Slack发送的请求的有效负载。我试图通过做得到请求对象

function doPost(e) {
    return processComment(e);
}
function processComment(e) {
    Logger.log(e);
}

{postData=FileUpload,queryString=method=slack,parameter={method=slack,payload={"type":"block_actions","user":{"id":"U01835Mxxxx","username":"ravsamteam","name":"ravsamteam","team_id":"T0160UQZZZZ"},"api_app_id":"A018MPZ2xxx","token":"NTNRCTPDz8mxxxzxxxxxxxxx","container":{"channel_id":"C0190D8L2AU","is_ephemeral":false,"message_ts":"1597154895.001500","type":"message"},"trigger_id":"1281039280903.1204976558018.aa1055f6900d7884d9cd4ac34ffzzzzz","team":{"id":"T0160UQGE0J","domain":"ravsamhq"},"channel":{"id":"C0190D8L2AU","name":"blogs"},"message":{"type":"message","subtype":"bot_message","text":"This content can't be displayed.","ts":"1597154895.001500","bot_id":"B019BNL08BS","blocks":[{"type":"section","block_id":"mNavk","text":{"type":"mrkdwn","text":" New comment on RavSam's blog by hello","verbatim":false}},{"type":"section","block_id":"v3Ip","text":"*Blog:*\nhello\n\n*Comment:*\nravgeet errorCannot read property 'payload' of undefined",{"type":"actions","block_id":"1maVO","elements":[{"type":"button","action_id":"WSo=","text":{"type":"plain_text","text":"Approve","emoji":true},"style":"primary","value":"approved"},{"type":"button","action_id":"Vek\/","text":"Deny","style":"danger","value":"denied"}]}]},"response_url":"https:\/\/hooks.slack.com\/actions\/T0160Uxxxxx\/1301968xxxxxx\/Q3gZhbeUCUIxxxxxxxxxxxxx","actions":[{"action_id":"WSo=","type":"button","value":"approved","action_ts":"1597213837.152704"}]}},contentLength=2391.0,parameters={payload=[Ljava.lang.Object;@53f2e9fa,method=[Ljava.lang.Object;@5793298b},contextPath=}

如何获取有效载荷?有了有效负载JSON之后,就可以使用actions来确定用户采取了什么操作?

解决方法

是的。有效负载包含识别动作所需的所有信息。并且还包含一个response_url来回复。

松弛的有效负载应如下所示。

{
    "actions": [
      {
        "name": "channels_list","selected_options": [
          {
          "value": "C012AB3CD"
          }
        ]
      }
    ],"callback_id": "select_simple_1234","team": {
      "id": "T012AB0A1","domain": "pocket-calculator"
    },"channel": {
      "id": "C012AB3CD","name": "general"
    },"user": {
      "id": "U012A1BCD","name": "musik"
    },"action_ts": "1481579588.685999","message_ts": "1481579582.000003","attachment_id": "1","token": "iUeRJkkRC9RMMvSRTd8gdq2m","response_url": "https://hooks.slack.com/actions/T012AB0A1/123456789/JpmK0yzoZDeRiqfeduTBYXWQ","trigger_id": "13345224609.738474920.8088930838d88f008e0"
}

您可以了解更多here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...