2016-10-08 26 views
2

私は特定のプロジェクトのイベントアップデートを私に送信するためにWebhookをAsanaに設定しようとしています。私はかなり初心者なので、読んでお答えするときはそれを覚えておいてください。ここに私の最初の投稿は私の上で簡単に行く。ここに私のコードがあります。WebhookをAsana用に作成する

asanawebhook.phpページ:ウェブフックを作成する

$headers = getallheaders(); 
$secret_token = $headers['X-Hook-Secret']; 
header('X-Hook-Secret: ' . $secret_token); 
header("HTTP/1.1 200 OK"); 

私のカール要求:

$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"}]}) 

私はいくつかの種類の成功メッセージを返すように得ることができる場合、私は、データを解析し、完全なペイロードを取得するために戻ってアサナにカールの要求を行うことができますと仮定します。前もって感謝します。

答えて

1

アサナを助けて慎重に調査し、ポーリングすると、私はSSL関連の問題であると判断しました。コードはうまく動作し、ハンドシェイクが起こり、ウェブフックが設定されます。私が気づいていなかったのは、私はSSL証明書を持っていましたが、私はそれを設定していませんでした。 WebhookターゲットのドメインにSSLが正しく設定されていることを確認してください。

+0

同じ問題があります - SSLは動作していますが、同じエラーです。私のためのアドバイスは何ですか? –

+0

私は問題が私のLet's Encrypt証明書であると思います... –

1

お問い合わせありがとうございます!私はAsanaの開発者支持者であり、あなたのために何が問題を引き起こしているのか知っていると思います。 (そして、心配はありません、私たちはAsanaでここまできれいです!)

ウェブフックを作成するときに、アサナに行うことを尋ねるのは、です。変更に興味があるときは、状態。つまり、Webhookが登録されているプロジェクトが何か変わった場合、サーバーはあなたのサーバーに電話をかけて、変更が行われたことを知らせます。

これは、私たちのサーバーが、あなたが維持管理している公開されているサーバーと接触する必要があることを意味します。この場合、Webhookを作成するときに、「ハンドシェイク」プロセスがあります。

  1. Webhookを作成するには、AsanaのAPIを呼び出します。一時的にこのブロックを、ながら:あなたは同じヘッダ値を持つ200 OK応答とに反応
  2. アサナのサーバーは、あなたがどの値に設定し、ヘッダーとtargetで指定した場所にPOST要求に戻ってあなたを呼び出します最後に
  3. Webhookを作成する元の呼び出しは200 OKで戻ります。

このハンドシェイクが設定されていない場合、表示されているエラーでwebhookの作成からの戻り呼び出しが失敗します。このプロセスに関する技術的な詳細については、our API reference page for webhooksをご覧ください。設定がうまくいくかのように思えるかもしれませんが、このプロセスは、を知るように設計されています。将来のコールバックを得るかどうかに関わらず、Webhookを作成するときは悲しい、静かではありませんウェブフックの作成時にできることを実際にテストします。

公然と利用できるサーバーを作成して保守したくない場合は、events APIをチェックしてください。これらはwebhooksによく似ていますが、状況が変わったときにAsanaのサーバーから呼び出されることを期待するのではなく、特定の時点からの変更をポーリングすることができます(同期トークンによって表されます)。たとえば、特定の時点のタスクをGETGET、そのタスクの同期トークンを/eventsエンドポイントから取得できます。その後、定期的にGETリクエストを同じリソース上の/eventsエンドポイントに作成し、その同期トークンを渡すと、そのトークンを取得してから何が変更されたのかを返します(新しい「最新の状態に戻す」)これらの変更が行われた後に "あなたが将来の呼び出しで使用するためのトークン)。

私はこれがあなたをもう一度動かすのを助けることを望みます!

+0

マットありがとうございます。私は握手をする必要があることを理解しています。それが私がもっとよく理解したいと思っているものです。今週末に私のグーグルから私は上記のコードをまとめることができました。 Webhookを作成するリクエストを送信すると、そのページとの接続は開いたままになりますか?言い換えれば、Webhookを作成する要求の後に秘密トークンに関するビットを入れる必要がありますか?もしそうなら、作成したwebhookをセットアップするコードを削除するつもりですか? –

+0

私には間違ったURLがあることが私に指摘されました。私はそれがあなたが何を指していたのか分からなかった。私は実際に私のコードの中にsomeurlを持っていません、私はちょうどそれを短縮するためにそこに置く...それは私のコードのそのフィールドで正当な、公共のURLです。私もアサナに電子メールで連絡を取り、彼らはあなたに私の情報を転送すると言った。他人がこれを読んだ場合に明確にしたいだけでした。 –

関連する問題