{"id":908,"date":"2024-11-01T21:58:54","date_gmt":"2024-11-01T21:58:54","guid":{"rendered":"https:\/\/tutoriais.tayon.ai\/?post_type=tesserakb&#038;p=908"},"modified":"2024-11-01T22:05:05","modified_gmt":"2024-11-01T22:05:05","slug":"usando-webhooks-no-flow","status":"publish","type":"tesserakb","link":"https:\/\/tutoriais.tayon.ai\/?tesserakb=usando-webhooks-no-flow","title":{"rendered":"Usando Webhooks no Flow"},"content":{"rendered":"\n<p>O uso de webhooks e chamadas de API no flow \u00e9 um recurso extremamente poderoso e que faz a Tayon se destacatar de outras plataformas por conta da versatilidade e capacidade de integra\u00e7\u00e3o com praticamente qualquer outro sistema.<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"604\" src=\"https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook-1024x604.png\" alt=\"\" class=\"wp-image-909\" srcset=\"https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook-1024x604.png 1024w, https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook-300x177.png 300w, https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook-768x453.png 768w, https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>1 &#8211; <\/strong>A URL externa da API ou Webhook que deve ser chamada.<br><strong>2 &#8211; <\/strong>O tipo de envio que a API ou Webhook espera. Pode ser POST ou GET.<br><strong>3 &#8211;<\/strong> A lista de par\u00e2metros que ser\u00e3o passados. Pode ser uma lista com um par\u00e2metro por linha ou um JSON v\u00e1lido (detalhes mais adiante).<br><strong>4 &#8211; <\/strong>Cabe\u00e7alhos (headers) para a chamada. Geralmente um token de autoriza\u00e7\u00e3o ou outro header exigido pela API\/Webhook.<br><strong>5 &#8211;<\/strong> Tipo de retorno que ser\u00e1 salvo no IDENTIFICADOR para este webhook. O retorno pode ser um c\u00f3digo HTTP (200, 404, 500, etc), um texto ou um JSON.<br><br>Exemplo de uma chamada completa:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"557\" src=\"https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook3-1024x557.png\" alt=\"\" class=\"wp-image-910\" srcset=\"https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook3-1024x557.png 1024w, https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook3-300x163.png 300w, https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook3-768x418.png 768w, https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook3.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Supondo que o c\u00f3digo da API na URL https:\/\/api.oneapptointegrate.com seja algo parecido com esse:<\/p>\n\n\n\n<p><code>&lt;?php<br>\/\/ Set your secret token here<br>$secret_token = \"thesecrettokenfortheapi\";<br><br>\/\/ Get the authorization header<br>$headers = apache_request_headers();<br>if (!isset($headers['Authorization'])) {<br>    http_response_code(401);<br>    echo json_encode([\"error\" => \"Unauthorized\"]);<br>    exit;<br>}<br><br>\/\/ Validate the bearer token<br>$authHeader = $headers['Authorization'];<br>list($token_type, $token) = explode(\" \", $authHeader);<br>if ($token_type !== \"Bearer\" || $token !== $secret_token) {<br>    http_response_code(403);<br>    echo json_encode([\"error\" => \"Forbidden\"]);<br>    exit;<br>}<br><br>\/\/ Retrieve POST data<br>$name = $_POST['name'] ?? null;<br>$phone = $_POST['phone'] ?? null;<br>$email = $_POST['email'] ?? null;<br>$address = $_POST['address'] ?? null;<br><br>\/\/ Validate that required data is present<br>if (!$name || !$phone || !$email || !$address) {<br>    http_response_code(400);<br>    echo json_encode([\"error\" => \"Missing parameters\"]);<br>    exit;<br>}<br><br>\/\/ Return data as JSON<br>$response = [<br>    \"name\" => $name,<br>    \"phone\" => $phone,<br>    \"email\" => $email,<br>    \"address\" => $address,<br>];<br><br>header(\"Content-Type: application\/json\");<br>echo json_encode($response);<br>?><\/code><\/p>\n\n\n\n<p>O resultado ser\u00e1 um JSON com os mesmos dados enviados. Parr recuperar os dados recebidos pelo webhook, basta usar o mesmo identificador como vari\u00e1vel no flow. Quando se trata de um JSON, os dados pode ser recuperados com o formato IDENTIFICADOR[atributo]. Veja exemplo abaixo:<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"541\" src=\"https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook4-1024x541.png\" alt=\"\" class=\"wp-image-912\" srcset=\"https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook4-1024x541.png 1024w, https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook4-300x159.png 300w, https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook4-768x406.png 768w, https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook4.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Quando estiver testando o seu flow, voc\u00ea pode recuperar os dados de retorno no painel seguinte ao da chamada do webhook e mostrar o conte\u00fado no painel. Assim voc\u00ea pode verificar se a chamada deu certo ou se houve algum erro, por exemplo.<br><br>Supondo que voc\u00ea fa\u00e7a uma chamada de webhook apenas para envio de dados e n\u00e3o precisa do retorno para o seu flow. Nesse caso, voc\u00ea pode colocar o retorno como c\u00f3digo HTTP e no seu flow ter uma decis\u00e3o logo ap\u00f3s a a\u00e7\u00e3o do webhook que compara o retorno com 200. Se o retorno = 200, o webhook foi executado com sucesso. Se o retorno for diferente de 200 pode significar que houve um erro ou existe um problema nos par\u00e2metros, autentica\u00e7\u00e3o, etc. Se precisar dos detalhes, voc\u00ea pode temporariamente mudar o retorno para &#8220;texto&#8221; e verificar o conte\u00fado. A maioria das APIs e Webhooks enviam uma mensagem no corpo da p\u00e1gina de retorno com a descri\u00e7\u00e3o do resultado da chamada ou um JSON com esses detalhes. Nos dois casos, ao setar o retorno como &#8220;texto&#8221; voc\u00ea poder\u00e1 exibir o conte\u00fado do identificador usado no webhook no painel seguinte e verificar o retorno. <br><br>Tamb\u00e9m \u00e9 poss\u00edvel passar um JSON como par\u00e2metro para a API\/Webhook quando for necess\u00e1rio. Exemplo:<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"495\" src=\"https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook5-1024x495.png\" alt=\"\" class=\"wp-image-913\" srcset=\"https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook5-1024x495.png 1024w, https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook5-300x145.png 300w, https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook5-768x371.png 768w, https:\/\/tutoriais.tayon.ai\/wp-content\/uploads\/2024\/11\/webhook5.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>IMPORTANTE: O uso de webhooks e chamadas de API \u00e9 um recurso avan\u00e7ado. Voc\u00ea deve conhecer os conceitos e saber o que est\u00e1 fazendo, caso contr\u00e1rio dados podem ser perdidos ou contas bloqueadas em outros apps. A Tayon n\u00e3o se responsabiliza pelo uso indevido de webhooks.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O uso de webhooks e chamadas de API no flow \u00e9 um recurso extremamente poderoso e que faz a Tayon se destacatar de outras plataformas por conta da versatilidade e capacidade de integra\u00e7\u00e3o com praticamente qualquer outro sistema. 1 &#8211; A URL externa da API ou Webhook que deve ser chamada.2 &#8211; O tipo de&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"tessera_post_format_link":""},"tesserakbcats":[38],"tesserakbtags":[65,59,63,60,72,66],"class_list":["post-908","tesserakb","type-tesserakb","status-publish","format-standard","hentry","tesserakbcats-conversational-flows","tesserakbtags-api","tesserakbtags-automation","tesserakbtags-flow-designer","tesserakbtags-flow","tesserakbtags-conversational-flow","tesserakbtags-webhook"],"_links":{"self":[{"href":"https:\/\/tutoriais.tayon.ai\/index.php?rest_route=\/wp\/v2\/tesserakb\/908","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tutoriais.tayon.ai\/index.php?rest_route=\/wp\/v2\/tesserakb"}],"about":[{"href":"https:\/\/tutoriais.tayon.ai\/index.php?rest_route=\/wp\/v2\/types\/tesserakb"}],"author":[{"embeddable":true,"href":"https:\/\/tutoriais.tayon.ai\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tutoriais.tayon.ai\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=908"}],"wp:attachment":[{"href":"https:\/\/tutoriais.tayon.ai\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=908"}],"wp:term":[{"taxonomy":"tesserakbcats","embeddable":true,"href":"https:\/\/tutoriais.tayon.ai\/index.php?rest_route=%2Fwp%2Fv2%2Ftesserakbcats&post=908"},{"taxonomy":"tesserakbtags","embeddable":true,"href":"https:\/\/tutoriais.tayon.ai\/index.php?rest_route=%2Fwp%2Fv2%2Ftesserakbtags&post=908"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}