Я пытаюсь настроить веб-крючок в Асане, чтобы отправлять мне обновления событий для определенного проекта. Я довольно новичок, так что имейте это в виду, когда читаете и отвечаете. Мой первый пост здесь, так что будь осторожен со мной. Вот мой код, который я запускаю.
Страница asanawebhook.php:
$headers = getallheaders();
$secret_token = $headers['X-Hook-Secret'];
header('X-Hook-Secret: ' . $secret_token);
header("HTTP/1.1 200 OK");
мой запрос curl для создания webhook:
$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"}]} )
Если я смогу получить это, чтобы вернуть какое-то сообщение об успешном выполнении, я предполагаю, что смогу проанализировать данные и затем выполнить запрос curl обратно в Asana, чтобы получить полную полезную нагрузку. Заранее спасибо.
Спасибо за обращение! Я адвокат разработчиков в Асане, и я думаю, что знаю, что может причинить вам неприятности. (И не беспокойтесь, мы в Асане очень дружелюбны!)
Когда вы создаете webhook, то, что вы просите Асану, это окликнуть тебя когда что-то вас интересует, меняет состояние. То есть, когда что-то происходит с изменением проекта, для которого вы зарегистрировали веб-крючок, наши серверы позвонят на ваш сервер, чтобы сообщить вам, что изменение произошло.
Это означает, что наши серверы должны связаться с общедоступным сервером, который вы обслуживаете. Чтобы убедиться, что это тот случай, когда вы создаете веб-крючок, происходит процесс «рукопожатия»:
POST
запрос к месту, указанному вами в target
с заголовком, установленным в значение, которое:200 OK
ответ с тем же значением заголовка, и, наконец,200 OK
,Если у вас не настроено это рукопожатие, то обратный вызов от создания webhook завершится с ошибкой, которую вы видите. Вы можете увидеть более подробную техническую информацию об этом процессе на наша справочная страница по API для веб-хуков. Может показаться, что вам нужно много или много работы, но этот процесс разработан таким образом, чтобы вы знать Когда вы создаете веб-крючок, получите ли вы в будущем обратные вызовы, а не печальные, тихие сбои — мы фактически проверяем, что вы можете сделать это при создании веб-крюка.
В качестве альтернативы, если вы не хотите создавать и поддерживать общедоступный сервер, вы можете проверить наш События API; они очень похожи на веб-хуков, но вместо того, чтобы ожидать, что серверы Асаны будут вызывать их, когда что-то изменится, вы можете запрашивать изменения с определенного момента времени (как представлено токеном синхронизации, который мы вам даем). Например, вы можете GET
задача в определенный момент времени, а также GET
токен синхронизации для этой задачи из /events
конечная точка. Периодически после этого вы можете создавать GET
запросы на тот же ресурс на /events
конечную точку и передайте этот токен синхронизации, и мы вернем то, что (если что-то изменилось) с тех пор, как вы получили этот токен (и передадим обратно новый токен «до даты обновления» для использования в будущих вызовах).
Я надеюсь, что это поможет вам снова двигаться!
После тщательного изучения и опроса Асаны о помощи, я решил, что это была проблема, связанная с SSL для меня. Код прекрасно работает и позволяет провести рукопожатие и настроить веб-крючок. Чего я не осознавал, так это того, что у меня был сертификат SSL, но у меня его не было. Убедитесь, что SSL настроен правильно для домена, к которому направляется цель webhook.