为 Asana 创建 Webhook php
Create webhook for Asana php
我正在尝试在 Asana 中设置一个 webhook,以便向我发送特定项目的事件更新。我是新手,所以在阅读和回答时请记住这一点。我的第一个 post 在这里所以对我放轻松。这是我的代码,我是 运行。
asanawebhook.php 页数:
$headers = getallheaders();
$secret_token = $headers['X-Hook-Secret'];
header('X-Hook-Secret: ' . $secret_token);
header("HTTP/1.1 200 OK");
我创建 webhook 的 curl 请求:
$apikey = "mykey"; // Your API key
$taskid = "resourceid";
exec( 'curl \
-H "Authorization: Bearer '.$apikey.'" \
-H "Content-Type: application/x-www-form-urlencoded" \
-X POST https://app.asana.com/api/1.0/webhooks \
-d "resource='.$taskid.'" \
-d "target=https://mywebsite.com/folders/asanawebhook.php"', $return);
print_r($return);
这让我在页面上打印了这个错误。
Array ( [0] => {"errors":[{"message":"Could not complete activation handshake with target URL. Please ensure that the receiving server is accepting connections and supports SSL","help":"For more information on API status codes and how to handle them, read the docs on errors: https://asana.com/developers/documentation/getting-started/errors"}]} )
如果我可以将其发送到 return 某种成功消息,我假设我可以解析数据,然后向 Asana 发出 curl 请求以获取完整的有效负载。提前致谢。
感谢您与我们联系!我是 Asana 的一名开发倡导者,我想我知道什么可能会给您带来麻烦。 (不用担心,我们在 Asana 非常友好!)
当您创建 webhook 时,您要求 Asana 做的是 呼叫您 当您感兴趣的事物状态发生变化时。也就是说,当发生更改您已注册 webhook 的项目时,我们的服务器将调用您的服务器,让您知道更改已经发生。
这意味着我们的服务器需要与您维护的 publicly-available 服务器取得联系。要检查是否属于这种情况,当您创建 webhook 时,有一个 "handshake" 过程:
- 您调用 Asana 的 API 来创建网络钩子。这会暂时阻塞,同时:
- Asana 的服务器通过
POST
请求回拨到您在 target
中指定的位置,并将 header 设置为一个值,该值:
- 你用相同的 header 值回复
200 OK
,最后
- 使用
200 OK
创建 Webhook return 的原始调用。
如果您没有设置此握手,则来自 webhook 创建的 return 调用将失败并出现您看到的错误。您可以在 our API reference page for webhooks 上查看有关此过程的更多技术细节。设置起来似乎需要很多工作或 back-and-forth,但此过程旨在让您在创建 Webhook 时 知道 是否会获得未来的回调,而不是悲伤的、无声的失败——我们实际上测试了您在创建 webhook 时的能力。
作为替代方案,如果您不想创建和维护 publicly-available 服务器,您可能需要查看我们的 events API;这些很像 webhooks,但你并不期望在事情发生变化时被 Asana 的服务器调用,你可以轮询自特定时间点以来的变化(由我们给你的同步令牌表示)。例如,您可以 GET
特定时间点的任务,以及 GET
来自 /events
端点的该任务的同步令牌。在此之后,您可以定期在 /events
端点对同一资源创建 GET
请求并传递该同步令牌,我们将 return 自您获得以来发生了哪些变化(如果有的话)该令牌(并传回一个新的 "up to date after these changes have happened" 令牌供您在以后的调用中使用)。
我希望这能帮助你再次动起来!
在仔细研究和轮询 Asana 寻求帮助后,我确定这对我来说是一个与 SSL 相关的问题。该代码运行良好,允许进行握手并设置 webhook。我没有意识到的是,虽然我有 SSL 证书,但我没有设置它。确保为 Webhook 目标所在的域正确配置了 SSL。
我正在尝试在 Asana 中设置一个 webhook,以便向我发送特定项目的事件更新。我是新手,所以在阅读和回答时请记住这一点。我的第一个 post 在这里所以对我放轻松。这是我的代码,我是 运行。
asanawebhook.php 页数:
$headers = getallheaders();
$secret_token = $headers['X-Hook-Secret'];
header('X-Hook-Secret: ' . $secret_token);
header("HTTP/1.1 200 OK");
我创建 webhook 的 curl 请求:
$apikey = "mykey"; // Your API key
$taskid = "resourceid";
exec( 'curl \
-H "Authorization: Bearer '.$apikey.'" \
-H "Content-Type: application/x-www-form-urlencoded" \
-X POST https://app.asana.com/api/1.0/webhooks \
-d "resource='.$taskid.'" \
-d "target=https://mywebsite.com/folders/asanawebhook.php"', $return);
print_r($return);
这让我在页面上打印了这个错误。
Array ( [0] => {"errors":[{"message":"Could not complete activation handshake with target URL. Please ensure that the receiving server is accepting connections and supports SSL","help":"For more information on API status codes and how to handle them, read the docs on errors: https://asana.com/developers/documentation/getting-started/errors"}]} )
如果我可以将其发送到 return 某种成功消息,我假设我可以解析数据,然后向 Asana 发出 curl 请求以获取完整的有效负载。提前致谢。
感谢您与我们联系!我是 Asana 的一名开发倡导者,我想我知道什么可能会给您带来麻烦。 (不用担心,我们在 Asana 非常友好!)
当您创建 webhook 时,您要求 Asana 做的是 呼叫您 当您感兴趣的事物状态发生变化时。也就是说,当发生更改您已注册 webhook 的项目时,我们的服务器将调用您的服务器,让您知道更改已经发生。
这意味着我们的服务器需要与您维护的 publicly-available 服务器取得联系。要检查是否属于这种情况,当您创建 webhook 时,有一个 "handshake" 过程:
- 您调用 Asana 的 API 来创建网络钩子。这会暂时阻塞,同时:
- Asana 的服务器通过
POST
请求回拨到您在target
中指定的位置,并将 header 设置为一个值,该值: - 你用相同的 header 值回复
200 OK
,最后 - 使用
200 OK
创建 Webhook return 的原始调用。
如果您没有设置此握手,则来自 webhook 创建的 return 调用将失败并出现您看到的错误。您可以在 our API reference page for webhooks 上查看有关此过程的更多技术细节。设置起来似乎需要很多工作或 back-and-forth,但此过程旨在让您在创建 Webhook 时 知道 是否会获得未来的回调,而不是悲伤的、无声的失败——我们实际上测试了您在创建 webhook 时的能力。
作为替代方案,如果您不想创建和维护 publicly-available 服务器,您可能需要查看我们的 events API;这些很像 webhooks,但你并不期望在事情发生变化时被 Asana 的服务器调用,你可以轮询自特定时间点以来的变化(由我们给你的同步令牌表示)。例如,您可以 GET
特定时间点的任务,以及 GET
来自 /events
端点的该任务的同步令牌。在此之后,您可以定期在 /events
端点对同一资源创建 GET
请求并传递该同步令牌,我们将 return 自您获得以来发生了哪些变化(如果有的话)该令牌(并传回一个新的 "up to date after these changes have happened" 令牌供您在以后的调用中使用)。
我希望这能帮助你再次动起来!
在仔细研究和轮询 Asana 寻求帮助后,我确定这对我来说是一个与 SSL 相关的问题。该代码运行良好,允许进行握手并设置 webhook。我没有意识到的是,虽然我有 SSL 证书,但我没有设置它。确保为 Webhook 目标所在的域正确配置了 SSL。