【问题标题】:How to get JSON payload sent by the Slack action message?如何获取 Slack 操作消息发送的 JSON 有效负载?
【发布时间】:2020-08-12 15:08:06
【问题描述】:

我正在尝试构建一个带有交互式按钮的 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":{"type":"mrkdwn","text":"*Blog:*\nhello\n\n*Comment:*\nravgeet errorCannot read property 'payload' of undefined","verbatim":false}},{"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":{"type":"plain_text","text":"Deny","emoji":true},"style":"danger","value":"denied"}]}]},"response_url":"https:\/\/hooks.slack.com\/actions\/T0160Uxxxxx\/1301968xxxxxx\/Q3gZhbeUCUIxxxxxxxxxxxxx","actions":[{"action_id":"WSo=","block_id":"1maVO","text":{"type":"plain_text","text":"Approve","emoji":true},"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 来确定用户采取了哪些操作?

【问题讨论】:

  • 虽然我不确定我是否能正确理解您的目标,例如,e of Logger.log(e) 是您问题中的值,您想在@987654327 中检索payload @,Logger.log(e.parameter.payload) 怎么样?但我不确定您期望的输出值。因此,如果这不是您期望的结果,您能否提供您期望的输出值?顺便说一句,我无法理解您对 Once I have the payload JSON, I can use the actions to determine what action was taken by the user? 的期望值。
  • 感谢@Tanaike。我错过了这个东西。 JSON.parse(e.parameter.payload).

标签: javascript google-apps-script slack


【解决方案1】:

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

Slack 有效负载应如下所示。

{
    "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

【讨论】:

    猜你喜欢
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 2019-06-12
    • 2023-04-03
    相关资源
    最近更新 更多