AWS API 网关未收到 Podio webhook 验证

Podio webhook verification not received by AWS API Gateway

我已设置 API 网关和 Lambda 以接收来自跑道的 webhook。我已经在 Podio 中使用 API 网关端点设置了 webhook,并将 lambda 函数设置为注销接收到的事件,只是为了检查它是否正在接收请求。

端点当前设置为接收任何类型的请求。我最初只将它设置为接收 POST 请求,但由于它没有收到任何东西,我打开了它。

因为当我从其他各种 POST/GET 请求站点测试它时 API 网关端点工作,我在旧的 php 服务器上设置了一个测试端点并且它收到了钩子来自跑道的验证。

为什么是:

解决方案是在我发现如何为 API 网关打开 CloudWatch 日志之后得出的。我发现发送的数据不是我预期的 JSON 格式,而是 x-www-form-urlencoded。 然后我设置了一个映射模板:

#set( $inputRoot = $input.path('$') )
#set( $item = {} )
{
    #foreach( $param in $inputRoot.split('&') )
        #set( $t = $param.split('=') )
        "$t[0]":"$t[1]",
    #end
    "null":"null"
}

它处理 hook 验证请求和来自 Podio 的 webhook posts,然后这个映射数据成功传递到 Lambda。

我在最后使用 "null":"null" 这样我就可以 运行 简单的 foreach 循环并仍然保留有效的 JSON 输出