A integração via Webhook tem como objetivo disponibilizar em real time todas as interações
realizadas nas plataformas Invenio Center e Invenio Live.
👉 Mensagens enviadas e atualização de status de entrega
👉 Mensagem recebida e atualização de status de recebimento
👉 Eventos
👉 Campanhas e atualização de status
Mensagens #
Para realizar a busca dos dados referente às interações do sistema, primeiramente é necessário
disponibilizar um endpoint onde sua requisição deverá retornar o código 200 de retorno http,
para que o serviço identifique que o envio do json com as informações foi realizado com
sucesso. Em questão de segundos, nosso serviço executa o envio dos logs pendentes de envio,
podendo trazer em um único arquivo diversos blocos. Todos os horários enviados estão no formato UTC.
Abaixo, teremos exemplos da disposição dos campos no envio desses blocos em json.
Mapeamento #
message | Indica que o objeto é uma mensagem |
message.receivedAt | Data da recepção da mensagem |
message. sentAt | Data de envio da mensagem |
message. direction | Informar se é entrada ou saída de mensagem (pode ser “outgoing” para envio ou “incoming” para entrada) |
message. id | Id da mensagem |
message. channel | Enumerador referente à mensagem 1 – E-mail 2 – SMS 3 – Whatsapp 4 – Chat 5 – Facebook 6 – Telegram 7 – Voz 8 – Instagram 9 – Viber |
message.type | Tipo do envio da mensagem para casos outgoing |
message.text | Indica o texto da mensagem |
message.campaignId | Id da campanha para casos outgoing |
message.source | Objeto contendo informações da pessoa |
message.source.countryCode | Código do País para casos outgoing |
message.source.phoneNumber | Telefone de contato para casos outgoing |
message.source.email | Em casos outgoing |
message.source.sender | Informa o responsável pelo disparo da mensagem (apenas em casos envio – outgoing) |
message.contact.lastWalletName | Informa o nome do último segmento do contato |
message.contact.lastWalletCode | Informa o código do último segmento do contato |
destination | Informa o contato de destino, nele consta um objeto com novos parâmetros. |
destination.countryCode | Código do país |
destination.phoneNumber | Telefone de contato |
destination.email | E-mail de contato |
location | Detalha as informações referente à localização enviada pelo cliente |
location.latitude | Latitude da localização |
location.longitude | Longitude da localização |
file | Objeto contendo informações do arquivo recebido ou enviado |
file.url | URL do arquivo |
file.name | Nome do arquivo |
file.extension | Extensão do arquivo |
contact | Objeto contendo informações do contato/pessoa |
contact.robbuid | Id do prospect na Robbu |
contact.name | Nome do prospect |
contact.customCode | Código do cliente |
contact.id | CPF/CNPJ do cliente |
contact.mainSMS | Forma de contato SMS |
contact.mainSMS.countryCode | Código do país |
contact.mainSMS.phoneNumber | Telefone de contato |
contact.mainEmail | Endereço de e-mail de contato |
contact.mainWhatsapp | Forma do contato WhatsApp |
contact.mainWhatsapp.countryCode | Código do país |
contact.mainWhatsapp.phoneNumber | Telefone de contato |
contact.queue | Fila da operação |
contact.queue.waitingSince | Data e hora de entrada do contato na fila da operação (em casos outgoing) |
contact.queue.firstAnswerAt | Data e hora da última mensagem enviada ao contato pela operação (em casos outgoing) |
lastWalletCode | Código da última carteira adicionada ao cadastro do cliente |
lastWalletName | Nome da última carteira adicionada ao cadastro do cliente |
event | Indica que o objeto é um evento/tabulação e cada evento possui os seguintes parâmetros |
event.createdAt | Data da inclusão do evento |
event.id | Id do evento na Robbu |
event.description | Descrição do evento |
event.note | Descrição do evento |
event.customCode | Código customizado do evento |
event.finalized | Indica se é um evento finalizador |
event.sender | Usuário responsável pelo evento |
event.type | Tipo do evento: negativo, neutro ou positivo |
event.contact | Objeto contendo informações do contato/pessoa |
event.contact.robbuid | Id do prospect na Robbu |
event.contact.name | Nome do prospect |
event.contact.customCode | Código do cliente |
event.contact.id | CPF/CNPJ do cliente |
event.contact.mainSMS | Forma de contato |
event.contact.mainSMS.countrycode | Código do país |
event.contact.mainSMS.phoneNumber | Telefone de contato |
event.contact.mainEmail | Endereço de e-mail de contato |
event.Whatsapp | Forma de contato |
event.Whatsapp.countrycode | Código do país |
event.Whatsapp.phoneNumber | Telefone de contato |
campaign | Indica que o objeto é uma campanha criada, e cada objeto desse tipo possui os seguintes parâmetros abaixo: |
campaign.createdAt | Data e hora de criação da campanha |
campaign.createdBy | Usuário responsável pela campanha |
campaign.id | Id da campanha |
campaign.channel | Enumerador do canal de recepção da mensagem 1 – E-mail 2 – SMS 3 – Whatsapp 4 – Chat 5 – Facebook 6 – Telegram 7 – Voz 8 – Instagram 9 – Viber |
campaign.startAt | Data e hora de início da campanha |
campaign.size | Quantidade de mensagens a serem enviadas |
campaign.message | Template enviado na campanha |
campaign.hoursToDiscard | Quantidade de horas usadas para descartar pessoas |
campaign.type | Detalhes do tipo da campanha |
campaign.type.code | Código interno do tipo de campanha • “EM” – E-mail • “SL” – SMS Long • “SS” – SMS Short • “VW” – Voz Way • “WB” – Whatsapp Broadcast • “WE” – WhatsApp Oficial Exclusivo • “WP” – Whastapp Prospect Convencional • “WO” ou “WC” – Whatsapp Oficial Compartilhado |
campaign.type.description | Descrição do tipo de campanha |
campaign.splitSend | Parâmetros utilizados estabelecidos quando houver uma quebra no envio da campanha |
campaign.splitSend.percentage | Porcentagem de envio |
campaign.splitSend.minutes | Quantidade de minutos para envio dos blocos de mensagens |
campaign.mailing | Informações do mailing utilizado na campanha |
campaign.mailing.description | Descrição do mailing |
campaign.mailing.importedAt | Data e hora da importação do mailing |
campaign.mailing.importedBy | Usuário responsável pela importação do mailing |
campaign.mailing.size | Quantidade de registros no mailing |
campaign.mailing.walletClientCode | Código da carteira do mailing |
status | Indica que o objeto é um status da campanha ou da mensagem |
status.message | Trará, em tempo real, o status do envio das mensagens avulsas, conforme padrão abaixo |
status.message.id | Id da mensagem |
status.message.source | Informa o dado que originou o contato, nele consta um objeto com novos parâmetros |
status.message.source.sender | Informa o responsável pelo disparo da mensagem |
status.message.sentToProviderAt | Data e hora de envio da mensagem |
status.message.deliveredAt | Data e hora de entrega da mensagem |
status.message.readAt | Data e hora da leitura da mensagem |
status.message.failedAt | Data e hora da falha na entrega da mensagem |
status.message.errorCode | Código da falha na entrega da mensagem |
status.message.destination | Informa o contato de destino, nele consta um objeto com novos parâmetros |
status.message.provider | Operadora, em caso de comunicação via SMS |
status.campaign | Trará em tempo real o status do momento da campanha disparada, desde o início até a conclusão dos disparos, conforme padrão abaixo |
status.campaign.id | Id da campanha |
status.campaign.totalsent | Total de mensagens enviadas até o momento |
status.campaign.lastSentAt | Data e hora da última mensagem enviada na campanha |
status.campaign.statusCode | Status atual da campanha Enumerador: “C” – Cancelada “E” – Campanha não enviada “F” – Finalizada “I” – Iniciada “P” – Aguardando Processamento |
Mensagem de entrada – Exemplo de json #
[{
"message": {
"receivedAt": "2020-01-31T02:01:03",
"direction": "incoming",
"id": 13232322244444,
"channel": 3,
"text": "Olá, teste whats!",
"source": {
"countryCode": 55,
"phoneNumber": 11999999992
},
"destination": {
"countryCode": 55,
"phoneNumber": 11944497777
},
"location": {
"latitude": -23.5535317,
"longitude": -46.6631181
},
"file": {
"url": "http://s.robbu.com.br/arquivo?hash=ROBBU",
"name": "robbu",
"extension": "pdf"
},
"contact": {
"robbuid": 11111111111,
"name": "TESTE ROBBU",
"customCode": "1372511",
"id": "00000000000",
"mainWhatsapp": {
"countryCode": 55,
"phoneNumber": 11999999992
},
"mainSMS": {
"countryCode": 55,
"phoneNumber": 11999999992
},
"mainEmail": "teste@robbu.global"
}
}
}]
Mensagem de Saida- Exemplo de json #
[{
"message": {
"sentAt": "2020-01-31T02:05:21.2900000",
"direction": "outgoing",
"id": 1323232224455555,
"channel": 3,
"type": "",
"text": "Teste envio whats!",
"campaignId": 1234,
"source": {
"countryCode": 55,
"phoneNumber": 11944497777,
"sender": ""
},
"destination": {
"countryCode": 55,
"phoneNumber": 11999999992
},
"file": {
"url": "http://s.robbu.com.br/arquivo?hash=ROBBU",
"name": "robbu",
"extension": "pdf"
},
"contact": {
"robbuid": 11111111111,
"name": "TESTE ROBBU",
"customCode": "1372511",
"id": "00000000000",
"mainWhatsapp": {
"countryCode": 55,
"phoneNumber": 11999999992
},
"mainSMS": {
"countryCode": 55,
"phoneNumber": 11999999992
},
"mainEmail": "teste@robbu.global",
"queue": {
"waitingSince": "2021-03-08 12:00:00",
"firstAnswerAt": "2021-03-08 11:30:00"
}
}
}
}]
Status de Mensagem – Exemplo de json #
[{
"status": {
"message": {
"id": 1323232224455555,
"source": {
"sender": "User1"
},
"sentToProviderAt": "2020-01-31T15:50:39.9312405",
"deliveredAt": "2020-01-31T15:51:52.9707831",
"readAt": "2020-01-31T15:53:14.6399299"
}
}
}]
Eventos – Exemplo de json #
[{
"event": {
"createdAt": "2020-01-31T02:05:21.0566667",
"id": 13232322244599998,
"description": "[CR] Saudacao Final",
"note": "Saudacao Final",
"customCode": "298",
"finalized": false,
"sender": "",
"type": "Neutro",
"contact": {
"robbuid": 11111111111,
"name": "TESTE ROBBU",
"customCode": "1372511",
"id": "00000000000",
"mainWhatsapp": {
"countryCode": 55,
"phoneNumber": 11999999992
},
"mainSMS": {
"countryCode": 55,
"phoneNumber": 11999999992
},
"mainEmail": "teste@robbu.global"
}
}
}]
Campanha – Exemplo de json #
[{
"campaign": {
"createdAt": "2020-01-27T22:01:12.2766667",
"createdBy": "User Robbu",
"id": 994545,
"channel": 1,
"startAt": "2020-01-27T21:59:00",
"size": 3102,
"message": "<html><body>Envio campanha email!<\/body><\/html>",
"hoursToDiscard": 0,
"type": {
"code": "EM",
"description": "EMAIL"
},
"splitSend": {
"percentage": 100.00,
"minutes": 0
},
"mailing": {
"description": "disparo_email",
"importedAt": "2020-01-27T21:54:16.5500000",
"importedBy": "User Robbu",
"size": 3102,
"walletClientCode": "1000"
}
}
}]
Campanha status – Exemplo de json #
[{
"status": {
"campaign": {
"id": 994545,
"totalSent": 91,
"lastSentAt": "2020-01-31T16:10:12.0633333",
"statusCode": "F"
}
}
}]