Formato dos envios no webhook 18 de fevereiro de 2025 13:13 Atualizado Atualmente suportamos o envio dos seguintes tipos de item: Mensagens Eventos Contatos (Em breve) Tickets Atualmente não existe um campo específico que identifique diretamente o tipo de dado enviado. No entanto, sugerimos a seguinte heurística para identificar o tipo de cada item: O campo type é único e obrigatório para mensagens. O campo category é único e obrigatório para eventos. O campo lastMessageDate é único e obrigatório para contatos. Como alternativa, você pode configurar uma URL específica para cada tipo de envio, isolando os fluxos e simplificando o processamento dos dados. Mensagens Mensagens incluem tudo o que é trocado entre as partes da conversa, como texto simples, mídia, opções interativas (ex.: menus) e estruturas específicas do canal utilizado, como disparos ativos no WhatsApp. Por razões históricas, também incluem algumas atualizações de tickets, como abertura, fechamento e transferência. A data e hora da mensagem podem ser obtidas no subcampo #envelope.storageDate, do campo metadata. Estrutura Campo Tipo Obrigatório Significado Exemplo type string Sim O MIME type da mensagem, que indica qual estrutura será usada no campo content text/plain content string | object Sim O conteúdo da mensagem. Pode ser texto simples ou um objeto, caso seja uma mensagem especial, como mensagens interativas, conteúdo de mídia ou outros. Olá! id string Sim Identificador único da mensagem. wamid.HBgNNTQ5Mjk0N DY0ODgzMBUCABIYIDMz QTZGQjM2NUQ2QkFDQU FFRTdERkUyNDQ5NUQ2MjlDAA== from string Sim O remetente da mensagem. Pode ser o cliente ou o bot, dependendo da direção da mensagem. 551199999999@wa.gw.msging.net to string Sim O destinatário da mensagem. Pode ser o cliente ou o bot, dependendo da direção da mensagem. whatsappexample@msging.net metadata object Sim Metadados sobre a mensagem. Os campos variam de acordo com o canal e a direção da mensagem. O subcampo #envelope.storageDate contém a data de criação da mensagem no formato UTC-0. { "#wa.timestamp": "1736354097", "traceparent": "00-f2b0535c0c9d15b3dd29a7b1356365f1-448294cb77a064ee-01", "#uniqueId": "74eb1496-a986-4f10-b1f6-d353e04ee39e", "#date_processed": "1736354114687", "date_created": "1736354114668", "#envelope.storageDate": "2025-01-08T16:35:14Z" } Alguns dos valores possíveis de “type” são: text/plain application/json application/vnd.iris.ticket+json application/vnd.lime.collection+json application/vnd.lime.media-link+json application/vnd.lime.reaction+json application/vnd.lime.redirect+json application/vnd.lime.reply+json application/vnd.lime.select+json Exemplos Texto plano, enviado pelo usuário (canal WhatsApp). { "type": "text/plain", "content": "Oi", "id": "wamid.HBgNNTQ5Mjk0NDY0ODgzMBUCABIYIDMzQTZGQjM2NUQ2QkFDQUFFRTdERkUyNDQ5NUQ2MjlDAA==", "from": "551199999999@wa.gw.msging.net", "to": "whatsappexample@msging.net", "metadata": { "#wa.timestamp": "1736354097", "traceparent": "00-f2b0535c0c9d15b3dd29a7b1356365f1-448294cb77a064ee-01", "#uniqueId": "74eb1496-a986-4f10-b1f6-d353e04ee39e", "#date_processed": "1736354114687", "date_created": "1736354114668", "#envelope.storageDate": "2025-01-08T16:35:14Z" }} Menu interativo, enviado pelo bot (canal BlipChat). { "type": "application/vnd.lime.select+json", "content": { "scope": "immediate", "text": "Quer falar com um atendente?", "options": [ { "text": "Sim" }, { "text": "Não" } ] }, "id": "d1402ce1-5e08-4a64-b9c2-5145d0d511e7", "from": "blipchatexamplerouter@msging.net/msging-application-router-hosting-standard-cd68bb7b9-v589m", "to": "78843319-6318-46a8-9653-8f11d77a63f6.blipchatexamplerouter@0mn.io", "metadata": { "#stateName": "Atendimento?", "#stateId": "50a630f3-4453-4185-9716-8774f75eb9db", "#messageId": "context:b7859be1-6165-467d-80d1-1838c4768435", "#previousStateId": "welcome", "#previousStateName": "Bienvenida", "#tunnel.owner": "blipchatexamplerouter@msging.net", "#tunnel.originator": "78843319-6318-46a8-9653-8f11d77a63f6.blipchatexamplerouter@0mn.io", "traceparent": "00-888774c75676f06122fc35cab221b0c2-18067e9a7d8e7062-01", "#uniqueId": "0e3d6aaa-cded-437e-b7cf-2b30866d271f", "#date_processed": "1736343637158", "date_created": "1736343637137", "#tunnel.originalFrom": "blipchatatendimento@msging.net/msging-application-builder-hosting-standard-777695bf87-4q9wk", "#tunnel.originalTo": "d5187b97-cbb2-4987-8e2d-cd77a04fd362@tunnel.msging.net", "#messageKind": "Response", "#envelope.storageDate": "2025-01-08T13:40:37Z" }} Mensagem enviada pelo atendente (canal BlipChat). { "type": "text/plain", "content": "Como posso te ajudar?", "id": "fwd:fwd:4bf2147b-8a46-466e-9d3d-0ba6df7a1c7c", "from": "blipchatexamplerouter@msging.net/msging-application-router-hosting-standard-7b4cb78c46-tktks", "to": "1bf2e971-c887-4115-9da4-c0377c650af8.blipchatexamplerouter@0mn.io", "metadata": { "#messageEmitter": "Human", "traceparent": "00-dd1b2640e065e43328bea33ad4f3f50c-6e97fb525fae5e7a-01", "#uniqueId": "83b6e2eb-4ebb-464e-9873-546f53e3ce44", "#date_processed": "1736356745643", "date_created": "1736356745458", "#tunnel.owner": "blipchatexamplerouter@msging.net", "#tunnel.originator": "1bf2e971-c887-4115-9da4-c0377c650af8.hmgrouter@0mn.io", "#tunnel.originalFrom": "blipchatatendimento@msging.net/msging-application-builder-hosting-standard-6969686d5c-c7c67", "#tunnel.originalTo": "2da4c131-4a23-4fbe-8148-792cd5d73d70@tunnel.msging.net", "#messageKind": "Response", "#envelope.storageDate": "2025-01-08T17:19:05Z" }} Ticket puxado pelo atendente (canal BlipChat). { "type": "application/vnd.iris.ticket+json", "content": { "id": "ba5af0b5-5b29-4a82-8536-0194470002a2", "sequentialId": 56, "ownerIdentity": "blipchatatendimento@msging.net", "customerIdentity": "2da4c131-4a23-4fbe-8148-792cd5d73d70@tunnel.msging.net", "customerDomain": "0mn.io", "provider": "Lime", "status": "Waiting", "storageDate": "2025-01-08T17:39:30.594Z", "externalId": "ba5af0b5-5b29-4a82-8536-0194470002a2", "rating": 0, "team": "Default", "unreadMessages": 0, "closed": false, "customerInput": { "type": "text/plain", "value": "oi" }, "priority": 0 }, "id": "ba5af0b5-5b29-4a82-8536-0194470002a2", "from": "1bf2e971-c887-4115-9da4-c0377c650af8.blipchatexamplerouter@0mn.io", "to": "blipchatexamplerouter@msging.net", "metadata": { "#envelope.storageDate": "2025-01-08T17:39:30Z" }} Mensagem de áudio, enviada pelo cliente (canal Whatsapp). { "type": "application/vnd.lime.media-link+json", "content": { "type": "audio/ogg", "uri": "https://fakemediastore.blip.ai/secure-medias/Media_3c64e81c-2c7b-4e2b-afc7-da71bdaae5d01806539016748636?sv=2024-05-04&st=2025-01-08T20%3A19%3A55Z&se=2025-01-08T20%3A49%3A55Z&sr=b&sp=r&sig=mtSChi1oLIvgxQReL4tvlwzw2aBV8L14k5NjdVHkzzg%3D&secure=true" }, "id": "wamid.HBgNNTQ5Mjk0NDY0ODgzMBUCABIYIDRDNjJCMDU1OTg2QjdDNzdDNzExREFEOUFEQTcwQUVFAA==", "from": "551199999999@wa.gw.msging.net", "to": "whatsappexample@msging.net", "metadata": { "#wa.timestamp": "1736368475", "#wa.voice": "true", "traceparent": "00-8889ac22711f246651486c2fdf4e4b33-9bb3bb83c2817183-01", "#uniqueId": "4d5007bb-8191-4926-adad-c54dcd9e8784", "#date_processed": "1736368495393", "date_created": "1736368495385", "#envelope.storageDate": "2025-01-08T20:34:55Z" }} Eventos Eventos, também chamados de event-tracks, são os rastreamentos disparados pelas ações “Registro de eventos” ou ao habilitar a opção “Tracking automático” no Builder. Também podem ser gerados por meio da API HTTP do Blip. A data e hora do evento podem ser obtidas do campo storageDate. Estrutura Campo Tipo Obrigatório Significado Exemplo ownerIdentity string Sim ID do bot ao qual o evento está associado. whatsappexample@msging.net identity string Não [Obsoleto] ID do contato que causou o disparo do evento. 551199999999@wa.gw.msging.net contact objeto Não Objeto contendo dados do contato que causou o disparo do evento. { "Identity": "551199999999@wa.gw.msging.net" } messageId string Não ID da mensagem que causou o disparo do evento. Note que uma única mensagem pode originar mais de um evento. wamid.HBgNNTQ5Mjk0N DY0ODgzMBUCABIYIDkz MjhCOEFGMDE4RTM0Q0 I2NEY3MTJBOUNDNUQwNzBBAA== storageDate string Sim Data e hora do registro do evento, no formato UTC-0. 2025-01-08T17:50:25.577Z category string Sim Categoria do evento. Corresponde à hierarquia mais alta na organização do dado. Possui cadastro action string Sim Ação, subcategoria ou detalhe do evento. Representa a hierarquia mais baixa na organização do dado. Não extras objeto Não Objeto contendo metadados automáticos do evento (ex.: ID do bloco no qual ele foi disparado) e informações extras personalizadas cadastradas na ação "Registro de Evento". { "stateId": "welcome", "#stateName": "Boas vindas", "#stateId": "welcome", "#messageId": "c59505f0-4000-4b21-be0a-6850961ea7aa", "#previousStateId": "onboarding", "#previousStateName": "Início" } Exemplos Evento personalizado, configurado como Ação no Builder (canal BlipChat). { "ownerIdentity": "blipchatexamplerouter@msging.net", "identity": "78843319-6318-46a8-9653-8f11d77a63f6.blipchatexamplerouter@0mn.io", "contact": { "Identity": "78843319-6318-46a8-9653-8f11d77a63f6.blipchatexamplerouter@0mn.io" }, "messageId": "505eb2ad-9236-4915-8e6d-b2c0ee30c290", "storageDate": "2025-01-08T13:29:24.255Z", "category": "Possui cadastro", "action": "Não", "extras": { "#stateName": "Verifica cadastro", "#stateId": "9b530b75-e487-4c17-933e-c7743f9f4516", "#messageId": "505eb2ad-9236-4915-8e6d-b2c0ee30c290", "#previousStateId": "onboarding", "#previousStateName": "Inicio" }} Evento de Tracking Automático (canal Whatsapp). { "ownerIdentity": "whatsapprouter2@msging.net", "identity": "5492944648830@wa.gw.msging.net", "contact": { "Identity": "5492944648830@wa.gw.msging.net" }, "messageId": "wamid.HBgNNTQ5Mjk0NDY0ODgzMBUCABIYIDkzMjhCOEFGMDE4RTM0Q0I2NEY3MTJBOUNDNUQwNzBBAA==", "storageDate": "2025-01-08T17:50:25.577Z", "category": "flow", "action": "Atendimento Humano", "extras": { "stateId": "desk:209e648f-afc0-4e27-94e9-26a4c9e261bd", "#stateName": "Atendimento Humano", "#stateId": "desk:209e648f-afc0-4e27-94e9-26a4c9e261bd", "#messageId": "wamid.HBgNNTQ5Mjk0NDY0ODgzMBUCABIYIDkzMjhCOEFGMDE4RTM0Q0I2NEY3MTJBOUNDNUQwNzBBAA==", "#previousStateId": "desk:209e648f-afc0-4e27-94e9-26a4c9e261bd", "#previousStateName": "Atendimento Humano" }} Contatos Aqui são registradas todas as atualizações de contatos. Sempre que qualquer campo de um contato é atualizado, a versão mais recente do contato completo é enviada. É importante observar que, devido à natureza assíncrona e paralela do Blip, não há garantia de que as atualizações serão recebidas em ordem estritamente cronológica. Estrutura Campo Tipo Obrigatório Significado Exemplo lastMessageDate string Sim Data e hora aproximada da última interação desse cliente, em UTC-0. É atualizada pelo menos uma vez a cada "sessão". No entanto, caso várias mensagens sejam trocadas em um curto intervalo, ela pode não se referir à última mensagem necessariamente. 2025-01-08T17:58:48.890Z identity string Sim Identificador único do cliente. 551199999999@wa.gw.msging.net source string Sim Identificador do canal. WhatsApp name string Não Nome do contato. João da Silva email string Não Endereço de e-mail do contato. joaodasilva@email.com.br phoneNumber string Não Telefone do contato. 99999999 gender string Não Gênero do contato. male taxDocument string Não Documento de identificação do contato (ex.: CPF, CNPJ, RG). 901.396.765-33 extras object Não Dados adicionais personalizados relacionados ao contato. { "ticket": "123", "plano": "Golden" } Exemplos Contato recém criado, sem nenhuma informação (canal Blip Chat). { "lastMessageDate": "2025-01-08T20:23:51.110Z", "identity": "6f16a65f-eaec-42e3-ac56-8815269ac06b.blipchatexamplerouter@0mn.io", "source": "0mn.io"} Contato completo com todos os campos disponíveis no Builder preenchidos (canal WhatsApp). { "name": "João da Silva", "lastMessageDate": "2025-01-08T20:27:28.455Z", "identity": "551199999999@wa.gw.msging.net", "email": "joaodasilva@email.com.br", "phoneNumber": "(11)9999-9999", "gender": "male", "extras": { "ticket": "123", "plano": "Golden" }, "source": "WhatsApp", "taxDocument": "901.396.765-33"} Para mais informações, acesse a discussão sobre o assunto em nossa comunidade ou os vídeos no nosso canal. 😃 Artigos relacionados Enviando dados para análise através de Webhooks Regra de bloqueio de URLs inválidas no Webhook Como conectar a um canal de atendimento personalizado Ação: Requisição HTTP Criando mensagens interativas no WhatsApp