【问题标题】:Asana Webhooks APIAsana Webhook API
【发布时间】:2017-05-08 12:51:57
【问题描述】:

所以我已经按照他们的文档中的描述实现了 Asana Webhooks API。我可以向它传递一个项目 ID 并请求创建一个新的 webhook。 API 成功地向我的应用程序发送了一个身份验证请求,该请求返回文档中描述的 Security 标头。 Asana 然后返回预期的成功响应,概述新创建的 Webhook 唯一 ID。

现在,如果我使用此 ID,然后查询 Asana API 以显示父工作区或项目资源上的所有已配置 Webhook,它会直接返回空数据 JSON 对象或报告资源不存在,这表明 Webhook尽管给了我预期的成功响应,但我刚刚创建并没有真正创建。

此外,如果我随后对项目进行更改,它不会触发 webhook,并且我不会在我的应用程序上收到任何事件。

奇怪的是,周五一切正常,但今天(周一)我遇到了这些问题。

任何指针都会很好,我一直按照文档建议的方式处理我的请求结构,并且正在使用 PAT 进行身份验证,我什至尝试了新创建的令牌。

谢谢,

【问题讨论】:

    标签: asana asana-api


    【解决方案1】:

    我们的 webhook 使用握手机制来确保可以给您回电,但后续请求总是有可能失败。此外(虽然我们没有很好地记录这一点 - 我们有机会)我们应该在握手后立即尝试传递一个(可能)空事件(它看起来像{"events":[]}。这有点像“第二次回调" 包含自您创建 webhook 以来发生的任何更改。

    如果失败 - 或者任何后续请求经常失败 - webhook 将被丢弃。此上下文中的“失败”表示返回 200 或 204 以外的 HTTP 响应代码。

    至于您在查询 webhook 本身时遇到问题的原因,我无法重现该问题,因此我们必须深入研究。如果您这样做应该没问题:

    • 指定工作区
    • 可选择指定资源

    我对此进行了测试,看起来还不错。您可能还想通过/webhooks/:id 端点的id 直接查询webhook - 请注意使用create 返回的webhook 的id,而不是resource 字段中的id。

    如果您创建了 webhook(具体来说,您的 PAT 或 OAuth 应用程序是发出创建请求的应用程序),您应该可以很好地看到信息。如果您可以通过 id 获取 webhook,您应该会看到 last_failure_atlast_failure_content 字段,它们会告诉您为什么 webhook 无法进行交付。

    最后,如果您想通过api-support@asana.com 与我们联系并让他们知道更多详细信息(例如,您要查看的 webhook 的 ID),我们可以从我们这边查看这些字段以查看如果我们能确定发生了什么。

    【讨论】:

    • "这有点像“第二次回调”,其中包含自创建 webhook 以来发生的任何更改。如果失败 - 或者任何后续请求经常失败 - webhook 将被丢弃。在这种情况下,“失败”意味着返回 200 或 204 以外的 HTTP 响应代码。” - 这是否包括安全标头?如果不是这可能是我的问题,因为我的 API 只响应存在安全标头,我假设它是在所有请求中发送的。
    • 如果“安全标头”指的是握手标头“X-Hook-Secret”,它仅在握手过程中发送 - 也就是说,在成功握手后不会发送网络钩子。标头“X-Hook-Signature”会在握手请求之后发送给所有请求,包括第一个“可能还没有改变”的第一个回调。所以握手有“X-Hook-Secret”,所有其他人都有“X-Hook-Signature”
    • 谢谢马特,我发现我的问题出在第一个回调上,因为我期待每个请求中都有 X-Hook-Secret 并拒绝没有它的请求。所以现在 webhook 保持建立。
    猜你喜欢
    • 1970-01-01
    • 2017-02-17
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多