【问题标题】:Podio webhook verification not received by AWS API GatewayAWS API Gateway 未收到 Podio Webhook 验证
【发布时间】:2017-06-27 17:43:35
【问题描述】:

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

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

因为当我从其他各种 POST/GET 请求站点测试 API 网关端点时它可以工作,所以我在旧的 php 服务器上设置了一个测试端点,它从 Podio 接收了钩子验证。

为什么会这样:

  • Podio 没有向 API 网关发送钩子请求?

  • API 网关没有收到来自 Podio 的帖子?

【问题讨论】:

  • 您能否详细解释一下您使用的“API 网关”是什么以及您如何验证它是否可以接收其他 POST/GET 请求?
  • API gateway 可用于创建一个端点,在我的例子中将请求的数据传递给 Lambda 函数。我已经使用 curl 帖子、Chrome 轻松扩展和来自我们开发网站之一的请求对其进行了测试。
  • 您能否分享一下您正在使用的 web_hook url 示例?
  • @Pavlo-Podio 这是实时网络钩子:https://ecr7o486ei.execute-api.eu-west-1.amazonaws.com/beta/
  • 这个网址没有什么特别之处,所以我不明白为什么它可能不起作用。你有没有再尝试过这一切? (从 Podio UI 中单击“验证”网络挂钩并检查请求是否到达)

标签: webhooks podio


【解决方案1】:

在我发现如何为 API Gateway 开启 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"
}

它处理钩子验证请求以及来自 Podio 的 webhook 帖子,然后此映射数据成功传递到 Lambda。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 2019-05-20
    相关资源
    最近更新 更多