Closed fredlisboa closed 8 months ago
Você consegue mandar aqui o payload recebido pelo webhook quando responde a uma lista? Recomendo o https://public.requestbin.com/r para conseguir pegar o webhook
Posso tentar, claro. Segue abaixo e em anexo. Sigo à disposição, obrigado!
{ "event": "messages.upsert", "instance": "INSTANCIA", "data": { "key": { "remoteJid": "123456@s.whatsapp.net", "fromMe": false, "id": "30102001" }, "pushName": "Fred Lisboa", "message": { "messageContextInfo": { "deviceListMetadata": { "senderKeyHash": "zeuJ+SMzB/Y8yQ==", "senderTimestamp": "1703764621", "recipientKeyHash": "LsBsuui3DuaVRw==", "recipientTimestamp": "1703591632" }, "deviceListMetadataVersion": 2 }, "listResponseMessage": { "title": "Title row 01", "listType": "SINGLE_SELECT", "singleSelectReply": { "selectedRowId": "rowId 001" }, "contextInfo": { "stanzaId": "BAE5484DB34AAA9E", "participant": "654321@s.whatsapp.net", "quotedMessage": { "listMessage": { "title": "List Title", "description": "List description", "buttonText": "Click Here", "listType": "SINGLE_SELECT", "sections": [ { "title": "Row tilte 01", "rows": [ { "title": "Title row 01", "description": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,", "rowId": "rowId 001" }, { "title": "Title row 02", "description": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,", "rowId": "rowId 002" } ] }, { "title": "Row tilte 02", "rows": [ { "title": "Title row 01", "description": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,", "rowId": "rowId 001" }, { "title": "Title row 02", "description": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,", "rowId": "rowId 002" } ] } ], "footerText": "footer list\nhttps://examplelink.com.br" } } }, "description": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s," } }, "messageType": "listResponseMessage", "messageTimestamp": 1703852086, "owner": "INSTANCIA", "source": "android" }, "destination": "https://eni7u7w7a10d.x.pipedream.net", "date_time": "2023-12-29T09:14:46.895Z", "sender": "654321@s.whatsapp.net", "server_url": "https://evolution.api.com", "apikey": "102030" }
Legal, no webhook dá para identificar a resposta do usuário
data.message.listResponseMessage.singleSelectReply
Agora é ver como passar isso para o typebot
Se funcionar vai agregar muito!
@fredlisboa pode informar qual webhook está fornecendo esse resultado?
@fredlisboa pode informar qual webhook está fornecendo esse resultado?
messages.upsert
Alguém ai conseguiu ?
Outra coisa que percebi, é que mesmo você definindo uma mensagem para enviar antes da lista, ele envia na ordem errada, primeiro processa o webhook, depois a mensagem.
Alguma forma de contornar isso @fredlisboa
Pessoal uma amigo do grupo do whatsapp o Edson martins fez o ajuste> Para o Typebot entender a resposta de listas, basta adicionar essa linha aqui no typebot.service.ts..
responseRowId: msg.listResponseMessage.singleSelectReply?.selectedRowId,
adicionar esta linha, alguem pode ver pra colcoar pra testes?
Exatamente isso mesmo, basta adicionar a linha "responseRowId: msg.listResponseMessage.singleSelectReply?.selectedRowId," no arquivo typebot.service.ts..
Exatamente isso mesmo, basta adicionar a linha "responseRowId: msg.listResponseMessage.singleSelectReply?.selectedRowId," no arquivo typebot.service.ts..
Eu coloquei no meu arquivo exatamente como o Edison fez mas mesmo assim quando vou fazer o teste o fluxo não segue após receber o item selecionado.
Pessoal uma amigo do grupo do whatsapp o Edson martins fez o ajuste> Para o Typebot entender a resposta de listas, basta adicionar essa linha aqui no typebot.service.ts..
responseRowId: msg.listResponseMessage.singleSelectReply?.selectedRowId,
adicionar esta linha, alguem pode ver pra colcoar pra testes?
Eu coloquei mas não funcionou.nao consigo Extrai a resposta e seguir em diante o fluxo a partir do if/else
Eu coloquei no meu arquivo exatamente como o Edison fez mas mesmo assim quando vou fazer o teste o fluxo não segue após receber o item selecionado.
Fala @Azzybot, beleza?
Colocando do jeito que citei para o amigo @alekyxander, a única coisa que vai precisar é fazer um collect, igual faria para pegar qualquer resposta no Typebot, tipo um nome, data de nascimento, qualquer coisa, pois o código passa a ser tratado como uma resposta normal de texto do lead.
O que tem que se atentar é para a requisição de montagem da lista. Vou mandar um exemplo, que foi o que coloquei no Postman da Evolution quando eu criei, lá atrás... nas primeiras versões.
Veja na imagem abaixo, que são passados o title, description e rowId da linha na requisição. O title e o description são o que chegam para o lead. Daí, quando ele responder, o Typebot vai receber o rowId. É o conteúdo do rowId que tem que considerar pra criar a sua automação, ok?
Então, quando eu clicar nessa opção e mandar responder, o Typebot vai receber o texto ID 1001, que deverá ser tratado e respondido adequadamente para o contato.
De forma beeemmm básica, seria algo assim:
Espero que ajude a galera a entender melhor.
Abraços. 🚀
Opaa @edisoncm-ti . Tudo na paz Mestre?
Acabei de fazer os testes como recomendou mas ainda sim não funcionou. Coloquei basicamente o mesmo exemplo mostrado nas imagens mas mesmo assim não funcionou.
Segue aí:
Body do endpoint sendList
Fluxo Typebot, aqui no if coloquei o primeiro e o seguindo diferente para testes com " " e sem " " e tbm fiz outras variações e tbm sem sucesso.
Abaixo as 3 opções selecionadas. Nota-se abaixo de cada opção selecionada depois de 30 segundos dei o comando "#sair" para poder iniciar o novo teste com outra opção já que a anterior não retornou nada nem mesmo o else que declarei no nó de condições do fluxo
Abaixo está o código modificado:
Acabei de fazer os testes como recomendou mas ainda sim não funcionou. Coloquei basicamente o mesmo exemplo mostrado nas imagens mas mesmo assim não funcionou.
@Azzybot, vamos tentar mais uma vez, ok?
Agora vou tentar facilitar um pouco mais...
Veja a imagem abaixo:
Como mostra a imagem abaixo, a variável optionSelected escolhida foi a ID 2001:
Este seria o texto que precisaria ser tratado no fluxo para oferecer uma opção apropriada para o lead, mas aí já personalização de cada um.
Segue o link do arquivo utilizado como fluxo do meu Typebot. Adapte para as suas necessidades:
typebot-export-send-list-typebot-evolution-9ibw5rb.zip
Se ainda assim não funcionar, infelizmente será algo no seu cenário aí, que não terei como avaliar, ok?
Boa sorte e bom domingo para todos! 🙏
PS. Falarei mais sobre esse assunto no grupo do WhatsApp da Evolution. Vou encerrar por aqui. 🤝👍😉
@edisoncm-ti acho que descobri o problema . Usei esse seu fluxo pra teste e sempre que envio a msg o webhook executa normalmente após selecionar a opção ele executa de novo o webhook para o endpoint trazendo a lista de novo e quando escolho a opção de novo ele pausa . Digamos que mando um Oi o fluxo inicia e quando recebo o menu e vou selecionar ele, ele é disparado novamente e trás o menu de novo aí vou olhar no resultados do typebot na variável do input acrescenta o "Oi" e não o id do row selecionado.
Não sei se é um problema de versão do typebot ou na evo pois mesmo se eu incluir outros bubbles no fluxo( qualquer um) antes do webhook ele sempre executa primeiro o webhook e trata a primeira entrada na input ao invés da opção selecionada. Tentarei fazer um downgrade do typebot para verificar se isso acontece em outras versões tbm. De qualquer forma agradeço de mais a sua resposta Mestre. Tmj 👏
Não sei se é um problema de versão do typebot ou na evo pois mesmo se eu incluir outros bubbles no fluxo( qualquer um) antes do webhook ele sempre executa primeiro o webhook
Fala @Azzybot, beleza?
Não sei se procede, pois Tybebot não é necessariamente a minha praia, mas Mathueus Leandro, que foi o parceiro que pediu essa parada aí, informou que esse lance do webhook ser executado antes dos demais bubbles é um bug do Typebot.
Eu não cheguei a aprofundar nos testes, então veja o que consegue aí, beleza?
Abraços...
Opa estou em vários grupo e os grupos estão este debate e aqui está a solução usada !
Como pode ver faltou o ponto de interrogação nesta variavel se isso ajudar estarei aqui!
Aqui no meu idem, robo para quando sai de uma variável e vai para um texto, alguém descobriu ou testou a solução proposta e deu certo?
Descrição Detalhada:
Gostaria de criar um fluxo no Typebot utilizando as Listas (ENDPOINT sendList @w3nder) sendo que o fluxo de mensagens continuaria ao passo que o usuário clicasse em uma das opções disponibilizadas pela lista;
Racional:
Esta funcionalidade permitiria a elaboração de chatbots eficientes e retentivos no que se refere à usabilidade e possível alta taxa de interação dos usuários com o mesmo. Considero que esta seria uma alternativa à altura dos botões (aparentemente disponíveis apenas na API Oficial);
Exemplos de Uso:
Chatbot com fluxo de interações para qualificação de leads via WhatsApp;
Possíveis Implementações:
A resposta da lista fica na propriedade message?.listResponseMessage, diferentemente da propiedade que aparentemente o TypeBot avalia ao coletar uma informação do usuário (extendedTextMessage, conversation);
Impacto no Projeto:
Não tenho conhecimento técnico para avaliar este impacto no projeto.
Notas Adicionais:
Segue abaixo teste atual desta possível implementação: da forma como está, o Typebot retorna "mensagem não reconhecida".