在 Azure Functions 中将 Slack Interactive Message POST 有效负载参数解析为 JSON

Parsing Slack Interactive Message POST payload parameter to JSON in Azure Functions

我正在尝试创建一个 Azure 函数来使用 ngrokSlack Message Interactions. I'm able to get a test request to come in following this guide 接收 POST 请求。然而,有效载荷并没有像正常的 POST 请求主体那样进入。假设这是因为它是一个“参数”有效载荷而不是主体。

module.exports = async (context, req) => {
    const { body } = req;
    context.log(body);

    context.res = {
        body,
    };
};

输出:

payload=%7B%22type%22%3A%22block_actions%22%2C%22user%22%3A%7B%22id%22%3A%22xxx%22%2C%22username%22%3A%22...

如何在 Azure 函数中将此 POST 参数负载解析为 JSON?

在这个 post 的帮助下,我能够为我的用例解决这个问题。

使用 qsnpm i qs

const { parse } = require('qs');

module.exports = async (context, req) => {
    const payload = JSON.parse(parse(req.rawBody).payload);
    context.log(payload);

    context.res = {
        payload,
    };
};

输出:

{
  type: 'block_actions',
  user: {
    id: 'xxx',
    username: 'xxx',
    name: 'xxx',
    team_id: 'xxx'
  },
  api_app_id: 'xx',
...
}