为Asana php创建webhook
我正在尝试在Asana中设置一个webhook,向我发送特定项目的事件更新。我是个新手,所以在阅读和回答时要记住这一点。我的第一篇文章在这里,所以对我放松点。这是我正在运行的代码 asanawebhook.php页面:为Asana php创建webhook,php,curl,webhooks,asana,asana-api,Php,Curl,Webhooks,Asana,Asana Api,我正在尝试在Asana中设置一个webhook,向我发送特定项目的事件更新。我是个新手,所以在阅读和回答时要记住这一点。我的第一篇文章在这里,所以对我放松点。这是我正在运行的代码 asanawebhook.php页面: $headers = getallheaders(); $secret_token = $headers['X-Hook-Secret']; header('X-Hook-Secret: ' . $secret_token); header("HTTP/1.1 200 OK");
$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"}]} )
如果我可以得到它以返回某种成功消息,我假设我可以解析数据,然后向Asana发出curl请求以获得完整的负载。提前谢谢。谢谢您的帮助!我是Asana的开发者拥护者,我想我知道什么会给你带来麻烦。(不用担心,我们在Asana非常友好!) 当您创建一个webhook时,您要求Asana做的是在您感兴趣的事情改变状态时呼叫您。也就是说,当您注册了webhook的项目发生变化时,我们的服务器将调用您的服务器,让您知道发生了变化 这意味着我们的服务器需要与您维护的公共可用服务器联系。要检查这种情况,当您创建webhook时,有一个“握手”过程:
target
中指定的位置发出POST
请求,并将标题设置为一个值,该值为:200OK
响应来响应,并使用相同的标题值,最后200ok
在特定时间点获取任务,还可以从/events
端点获取该任务的同步令牌。在此之后,您可以定期在/events
端点的同一资源上创建GET
请求,并传递该同步令牌,我们将返回自您获得该令牌以来所做的更改(如果有任何更改的话)(并传回一个新的“发生这些更改后最新的”令牌,供您在以后的调用中使用)
我希望这有助于你再次行动起来 在仔细研究并轮询Asana寻求帮助后,我确定这是一个与SSL相关的问题。该代码工作得很好,可以进行握手并设置webhook。我没有意识到的是,虽然我有一个SSL证书,但我没有设置它。确保为webhook目标将要访问的域正确配置了SSL。感谢Matt对此进行调查。我知道我需要握手。这就是我希望更好地理解的。通过这个周末的谷歌搜索,我可以把上面的代码组合起来。当我发送创建webhook的请求时,我与该页面的连接是否保持打开状态?换句话说,我是否需要在创建webhook的请求之后添加有关秘密令牌的信息?如果是这样的话,我是否打算在创建webhook后删除代码来设置它?有人向我指出,我在其中有一个错误的url。我不知道你指的是这个。实际上我的代码中没有URL,我只是把它放在那里以缩短它。。。在我的代码中,这是一个合法的公共url。我也通过电子邮件联系了Asana,他们说会将我的信息转发给你。只是想澄清一下,以防其他人读到。@DannyRamirez创建握手后,您得到的响应是否一致?有相同的问题-SSL正在工作。。。但同样的错误。对我有什么建议吗?我也有同样的问题,我该怎么解决?