Visão geral
Com a ferramenta Proactive Messaging da LivePerson é possível criar campanhas e templates para envio de mensagens ativas via WhatsApp e Apple Business Chat.
Antes de habilitar a API de Outbound no Zenvia NLU, você deverá consultar essa documentação da LivePerson e se certificar que cumpriu todos os requisitos, com atenção especial ao template (HSM).
⚠️ Atenção: Caso você fique preso na tela de apresentação "LivePerson Proactive Messaging" realize a limpeza de cache e cookies do seu navegador
Os próximos passos serão dedicados a habilitar e configurar API para envio de outbound via WhatsApp.
Habilitar e configurar API
Vá até Canais > WhatsApp > LivePerson
Ao clicar sobre o ícone da LivePerson, você irá visualizar uma tela com todos os assistentes já integrados a esse Broker. Escolha qual será o responsável pelo envio e clique em editar integrações, simbolizado pelo ícone de lápis.
Estrutura
Na tela inicial da área de edição de integrações você verá todas as informações da integração. No fim da página você irá encontrar um botão para habilitar a API de outbound.
Você deverá escolher entre a versão 1.0 ou 2.0, conforme a versão da sua conta na LivePerson.
Versão 1.0
Ao habilitar a API de outbound 1.0 é gerado um endpoint e um token. Eles serão utilizados para realizar o envio das mensagens ativas.
Use a ferramenta de requisição de API’s de sua preferência, e a configure utilizando as seguintes informações:
POST https://outbound.ms.altubots.com/liveperson/<slug>/<id_integracao>
Parameters
Header
Content-type |
string | application/json |
Authorization |
string | <token> |
Responses
🟢 200
{
"status": "pending",
"messageId": 161
}
🟠 400
{
"status": "error",
"message": "Invalid destination!"
}
🟠 404
{
"status": "error",
"message": "Contact not found!"
}
🔴 500 Caso receba esta resposta, verifique se o número do destino e o nome do template estão corretos
{
"status": "error",
"message": "Unexpected error"
}
Você encontra um exemplo de como fazer a requisição no campo de “documentação” que fica ao lado das configurações da API. Essas informações podem ser copiadas e coladas.
Body's templates:
HSM Padrão
Utilize este body quando for enviar uma mensagem ativa somente com texto e variáveis, SEM imagens, botões ou documentos:
{
"destination": "35999999999",
"context": {
"status": "aprovado"
},
"hsm": true,
"richTemplateName": "meu_template",
"richTemplateVariables": {
"variable_number": "variable_value"
},
"restartContact": false,
"skill": "minha_skill",
"inactivityTime": 2
}
Atributos:
destination: número que irá receber a mensagemcontext(opcional): variáveis que serão salvas no contexto do usuáriohsm: campo necessário para envio de mensagem hsmrichTemplateName: nome do template de mensagem a ser enviadorichTemplateVariables(opcional): variáveis do template
variable_number: número da variável dentro do template (1, 2, 3...)variable_value: valor que substituirá o número da variável no template
restartContact(opcional): boleano para resetar as variáveis de contexto do usuárioskill(opcional): habilidade na liveperson que atenderá o usuárioinactivityTime(opcional): tempo em minutos que deve passar desde a última interação do usuário com o assistente para que a mensagem seja enviada. Exemplo: Se o usuário está interagindo ou interagiu com assistente a 1 minuto e o tempo de inatividade necessário para mensagem ser enviada é 2 minutos("inactivityTime": 2) a mensagem não é enviada, caso a interação tivesse ocorrido a 3 minutos a mensagem seria enviada.
HSM Rich Template
Com este body é possível enviar uma mensagem ativa com imagens, documentos e botões:
{
"destination": "11999999999",
"context": {
"status": "aprovado",
},
"hsm": true,
"richTemplateName": "richtemplate",
"richTemplateVariables": {
"pic": "https:imageURL.png",
"variable_number": "variable_value"
}
}
Atributos:
destination: número que irá receber a mensagemcontext(opcional): variáveis que serão salvas no contexto do usuáriohsm: campo necessário para envio de mensagem hsmrichTemplateName: nome do template de mensagem a ser enviadorichTemplateVariables(opcional): variáveis do template
variable_number: número da variável dentro do template (1, 2, 3...)variable_value: valor que substituirá o número da variável no template
Notificação
Caso o assistente tenha recebido uma mensagem da pessoa usuária nas últimas 24 horas, você pode enviar uma notificação para continuar a conversa. Utilize este body:
{
"destination": "35988841854",
"messages": "Envie um 'Oi' para iniciar o atendimento",
"context": {
"status": "aprovado"
},
"inactivityTime": 2
}
Atributos:
destination: número que irá receber a mensagemmessages: mensagem a ser enviadacontext(opcional): variáveis de contexto do usuário que serão salvasinactivityTime(opcional): tempo em minutos que deve passar desde a última interação do usuário com o assistente para que a mensagem seja enviada. Exemplo: Se o usuário interagiu com assistente a 1 minuto e o tempo de inatividade necessário para mensagem ser enviada é 2minutos("inactivityTime": 2) a mensagem não será enviada. Caso a interação tivesse ocorrido a 3 minutos a mensagem seria enviada.
Exemplo HSM Padrão:
TemplateName: template_test
Mensagem: Olá {{1}}! Temos uma atualização a respeito da sua solicitação aberta. Envie um "oi" para saber mais.
{
"destination": "35998631234",
"context": {
"status": "aprovado"
},
"hsm": true,
"richTemplateName": "template_test",
"richTemplateVariables": {
"1": "TESTE"
},
"restartContact": false,
"skill": "atendimento",
"inactivityTime": 2
}
Mensagem recebida:
Olá TESTE! Temos uma atualização a respeito da sua solicitação aberta. Envie um "oi" para saber mais.
Webhook de status
Um webhook é uma infraestrutura que recebe informações sobre as mensagens de outbound enviadas. Ele é composto por um endpoint (link do webhook, onde o cliente receberá as atualizações de status) e um token (acesso gerado pela equipe Zenvia NLU para realizar a integração).
Você vai precisar das seguintes informações, que são encontradas logo abaixo da área de configuração da API de outbound:
- Header: token gerado pelo Zenvia NLU, que é específico para cada assistente e canal
- Post: link com o endpoint informado para acesso
Os status retornados via webhook são:
- Enviado (sent): retorno exclusivo para ativos enviados pela LivePerson, indica o sucesso no encaminhamento da mensagem.
- Entregue (delivered): Indica que a mensagem foi entregue (equivalente ao sinal único de visto ✅ no WhatsApp).
- Respondido (replied): Indica que a mensagem foi respondida pelo usuário.
- Erro (error): Indica que houve um erro no envio da mensagem.
O status <enviado> é instantâneo. O <respondido> será entregue primeiro e tem prioridade no <entregue>
Enviado
{
"external_id": "36ef4510-9c96-11eb-8ccf-dfce354710ee",
"status": "sent",
"destination": "35999999999",
"client": "demo",
"date": "2021-04-13T17:24:16-03:00"
}
Entregue
{
"external_id": "36ef4510-9c96-11eb-8ccf-dfce354710ee",
"status": "delivered",
"destination": "35999999999",
"client": "demo",
"date": "2021-04-13T17:24:15-03:00"
}
Respondido
{
"external_id": "36ef4510-9c96-11eb-8ccf-dfce354710ee",
"status": "replied",
"destination": "35999999999",
"client": "demo",
"message": "Ola", //resposta enviada pelo usuario
"date": "2021-04-13T17:24:25-03:00"
}
Erro
{
"external_id": "36ef4510-9c96-11eb-8ccf-dfce354710ee",
"status": "error",
"destination": "35999999999",
"client": "demo",
"message": "Erro ao enviar HSM",
"date": "2021-04-13T17:24:15-03:00"
}
Versão 2.0
Na tela de configuração da API de outbound, ao selecionar a opção V 2.0 a configuração passa a ser a seguinte:
- ALTU Token: token configurado que será usado na requisição
- Domínio do serviço: informação preenchida automaticamente de acordo com o id da conta cadastrado na integração
- Domínio da API: informação preenchida automaticamente de acordo com o id da conta cadastrado na integração
Os dados abaixo devem ser recuperados através da URL: https://authentication.liveperson.net/
- Id do cliente: Id do cliente localizado na conta LivePerson
- Segredo do cliente: Id do cliente localizado na conta LivePerson
⚠️ Atenção: Ao salvar a integração na versão 2.0, não será possível voltar para a 1.0
POST https://outbound.ms.altubots.com/liveperson/<slug>/<id_integracao>
Parameters
Header
Content-type |
string | application/json |
Authorization |
string | <token> |
Responses
🟢 200
{
"status": "sent",
"messageId": 163,
"external_id": "1405d120-c801-11ea-bc3c-331e67fe876f",
"contact_id": 1
}
🟠 400
{
"status": "error",
"message": "Invalid destination!"
}
🔴 500 Caso receba esta resposta, verifique se o número do destino e o nome do template estão corretos
{
"status": "error",
"message": "5535988841852 is not eligible for wa."
}
Você encontra um exemplo de como fazer a requisição no campo de “documentação” que fica ao lado das configurações da API. Essas informações podem ser copiadas e coladas.
Body's templates:
HSM Padrão
Utilize este body quando for enviar uma mensagem ativa somente com texto e variáveis, SEM imagens, botões ou documentos:
{
"outboundNumber": "5511999999999",
"destination": "35999999999",
"context": {
"status": "aprovado"
},
"hsm": true,
"templateId": "1111111111111",
"richTemplateVariables": {
"variable_number": "variable_value"
},
"restartContact": false,
"skill": "atendimento",
"inactivityTime": 2
}
Atributos:
outboundNumber: número que irá enviar a mensagemdestination: número que irá receber a mensagemcontext(opcional): variáveis que serão salvas no contexto do usuáriohsm: campo necessário para envio de mensagem hsmtemplateId: nome do template de mensagem a ser enviadorichTemplateVariables(opcional): variáveis do template
variable_number: número da variável dentro do template (1, 2, 3...)variable_value: valor que substituirá o número da variável no template
restartContact(opcional): boleano para resetar as variáveis de contexto do usuárioskill: habilidade na liveperson que atenderá o usuárioinactivityTime(opcional): tempo em minutos que deve passar desde a última interação do usuário com o assistente para que a mensagem seja enviada. Exemplo: Se o usuário está interagindo ou interagiu com assistente a 1 minuto e o tempo de inatividade necessário para mensagem ser enviada é 2 minutos("inactivityTime": 2) a mensagem não é enviada, caso a interação tivesse ocorrido a 3 minutos a mensagem seria enviada.
HSM Rich Template
Com este body é possível enviar uma mensagem ativa com imagens, documentos e botões:
{
"outboundNumber": "5511999999999",
"destination": "35999999999",
"context": {
"status": "aprovado"
},
"hsm": true,
"templateId": "1111111111111",
"richTemplateVariables": {
"1": "TESTE"
},
{
"headerVariables": {
"video": "https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_640_3MG.mp4"
}
},
"restartContact": false,
"skill": "atendimento",
"inactivityTime": 2
}
Atributos:
outboundNumber(opcional): número que dispara a mensagemdestination: número que irá receber a mensagemcontext(opcional): variáveis de contexto do usuário que serão salvashsm: campo necessário para envio de mensagem hsmtemplateId: ID template de mensagem a ser enviadorichTemplateVariables(opcional): variáveis do template
variable_number: número da variável dentro do template( 1, 2 3 ...)variable_value: valor que substituirá o número da variável no template
headerVariables(opcional): variáveis de mídia no cabeçalho do templaterestartContact(opcional): booleano para resetar as variáveis de contexto do usuárioskill: habilidade na LivePerson que atenderá o usuárioinactivityTime(opcional): tempo em minutos que deve passar desde a última interação do usuário com o assistente para que a mensagem seja enviada. Exemplo: Se o usuário está interagindo ou interagiu com assistente a 1 minuto e o tempo de inatividade necessário para mensagem ser enviada é 2 minutos("inactivityTime": 2) a mensagem não é enviada, caso a interação tivesse ocorrido a 3 minutos a mensagem seria enviada.
Notificação
Caso o assistente tenha recebido uma mensagem da pessoa usuária nas últimas 24 horas, você pode enviar uma notificação para continuar a conversa. Utilize este body:
{
"destination": "35988841854",
"messages": "Envie um 'Oi' para iniciar o atendimento",
"context": {
"status": "aprovado"
},
"inactivityTime": 2
}
⚠️ Atenção: Na versão 2.0 o Webhook de status não está disponível.