Configuração do Hook - Como verificar se a configuração está validas?

Estou tentando configurar um hook de pedido para uma Site o qual as informações serão trabalhadas.

URL :

https://{{accountName}}.myvtex.com/api/orders/hook/config

CORPO:

{ "filter": { "status": [ "order-created", "order-completed", "on-order-completed", "payment-pending", "waiting-for-order-authorization", "approve-payment", "payment-approved", "payment-denied", "request-cancel", "waiting-for-seller-decision", "authorize-fulfillment", "order-create-error", "order-creation-error", "window-to-cancel", "ready-for-handling", "start-handling", "handling", "invoice-after-cancellation-deny", "order-accepted", "invoice", "invoiced", "replaced", "cancellation-requested", "cancel", "canceled" ] }, "hook": { "url": "https://site_valido.com.br/notifications/vtex", "headers": { } } }

Porem estou recebendo as seguinte informações :

Resposta do Postman:

api_hook_retorno

Informação recebida do Ping :

{"hookConfig":"ping"}

E não estou recebendo nenhuma informação alem disso...

Alguém poderia me auxiliar?

Depois de muito apanhar, consegui criar um gatilho. Mas ainda não funciona direito.

Esse gatilho dispara para qualquer coisa que aconteça com um Order, mas se especifico no condtition que só deve disparar quando a order for criada, não funciona.

Funciona -> "condition": "accountName=metodologiagb",

Não funciona -> "condition": "status=order-created",

PUT https://minhaconta.vtexcommercestable.com.br/api/dataentities/orders/schemas/trigger-teste-homologa

{ "properties": {}, "v-triggers": [ { "name": "order-created-homologa", "active": true, "condition": "accountName=minhaconta", "action": { "type": "http", "uri": "https://site.com.br/fromVtex", "headers": { "content-type": "application/json", "Authorization": "abc123" }, "method": "POST", "body": { "message": "Notificação de venda. Disparado com a condition: accountName=minhaconta", "orderId": "{!id}", "creationDate": "{!creationDate}" } } } ] }

Olá pessoal,

Depois de muitas tentativas, consegui fazer funcionar este recurso. A ideia é que no endpoint utilizado para criar este trigger chegue um Raw Body, ou seja, um payload sem nenhum tratamento por parte do framework ou da linguagem.

Dando um exemplo:

O primeiro passo a realizar para que este Webhook passe a funcionar é criá-lo.

{ "filter": { "status": ["order-created", "ready-for-handling", "invoiced"] }, "hook": { "url": "https://www.meuendpoint.com.br/orders" } }

Ao notar em URL, note que o meu endpoint é o /orders. Este endpoint deve ser um POST, e deve receber um payload sem tratamento em seu corpo. Com a utilização de Ruby On Rails, recebemos os payloads sempre com a utilização do método params. Porém o params exige que o payload seja do mesmo tipo do Content-Type que é enviado através dos headers, e não é isso que queremos, visto que o que é recebido é um payload com um JSON escapado.

Recebendo um Raw Body, ao invés de um body que considera o Content-Type enviado pelos headers, temos o semelhante:

{\"State\": \"order-created\",\r\n \"Domain\": \"Marketplace\",\r\n \"OrderId\": \"926872510566-01\",\r\n \"LastChange\": \"2019-04-22T22:42:49.7507903Z\"},

Para finalizar, é só realizar o parse desse JSON e prosseguir com sua implementação.

@Lucas Yamamoto​ Vlw pela dica! Juntando seu exemplo, com o post inicial do @Augusto Stelmo Tosetto​ (a url que ele informou na verdade) ... consegui chegar em uma solução e conclusão.

O que acontece é que parece haver mais de uma versão de hook/trigger o que causa confusão. O exemplo que postei anteriormente parece não estar funcionando.

Neste novo exemplo, a coisa parece ter funcionado. Segue o código para registro =)

Disparando um post, para url abaixo e como o raw body, mais abaixo.

POST: https://{{accountName}}.myvtex.com/api/orders/hook/config{ "filter": { "status": [ "order-created" ] }, "hook": { "url": "https://meusite.com.br/fromVtex", "method": "POST", "headers": { "content-type": "application/json", "Authorization": "abc123" }, "body": { "message": "Notificação de venda.", "orderId": "{!id}", "creationDate": "{!creationDate}" } } }

Abraços, espero que ajude =)

Oi, boa noite. Conseguiu mais informacoes sobre? O hook que estou recebendo ta vindo vazio.

@Anderson Tomazeto​ , cara tudo bem?

Vi no exemplo que vc postou acima, que vc incluiu uma propriedade body no json da configuração do webhook. Esse body por acaso especifica o q vira no body do hook, q vai ser enviado para o seu endpoint quando ele for acionado? Em resumo, existe a possibilidade de personalizar o q o webhook envia para o meu endpoint quando ele é acionado, ou o q é enviado é um padrão sobre o qual eu n tenho controle? Essa possibilidade n está documentada e isso me gerou essa dúvida.

Olá @Felipe Carbone​ ! Tudo bom cara!

Então, aquilo é o "gatilho" já personalizado, tanto o header quanto o body. Basicamente (Entre muitas aspas), você pode enviar qualquer atributo que pertença a entidade que estiver trabalhando, no meu caso "order".

Perceba que o body contem um "orderId": "{!id}", Quando isso chega no meu endpoint, leio o corpo da requisição e usando o numero do pedido executo algumas ações no meu erp.

Sobre a documentação, de fato, é bem ruim. O suporte funciona, mas por "obrigação".

Dica: Teve um problema, abre chamado, vc paga pra isso.

Eu mesmo já estou no 42º replica de um chamado. Até funcionar como prometido! rsrs

Abss!