Agent connector API
O Agent Connector API permite que plataformas externas realizem atendimentos de Live Chat no Zenvia NLU.
Overview
Esta API consiste no envio e recebimento de eventos, através de chamadas http.
O Zenvia NLU enviará eventos para o Live Chat através de chamadas
POSTao webhook configurado na integraçãoO Live Chat enviará eventos para o Zenvia NLU por meio de chamadas
POSTao endpoint https://agent.altubots.com/altu-connector/{slug}/{livechatId}A autenticação do envio e recebimento de eventos será feita via JWT. Esse processo será detalhado na conclusão do desenvolvimento
Todo evento enviado e recebido deve ter no corpo um JSON com o seguinte formato:
{
"action":"Tipo do evento",
"conversationID":"Id único que identifica a conversa de live chat",
"identifier":"Id único que identifica a usuário no ALTU",
"parameters":{
...
},
"timestamp":"Horário do envio do evento em formato UNIX timestamp"
}Envie também dados do usuário para o agente, saiba como configurar em:
Iniciar LiveChatAutenticação
A autenticação é feita via JWT:
Para cada request deve ser gerado um token novo onde a chave é usada para encriptar o token de acesso;
O Token de acesso (access_token) e a Chave de acesso (access_key) são obtidos na integração cadastrada no Zenvia NLU.
Assine o JWT com HS256 usando a chave de acesso (access_key);
Para o campo
iat, especifique a hora Unix atual, e para o campoexp, especifique a hora exatamente 60 segundos depois, que é quando o JWT irá expirar;É fundamental que o tempo de expiração seja de no máximo 60 segundos (
exp).
Eventos
Todo evento deve possuir um atributo action que identifica o propósito do que está sendo enviado/solicitado.
Actions que o Zenvia NLU envia para a plataforma de Livechat:
OPEN_CONVERSATION: solicitação de atendimentocontact.extra: objeto que engloba o atributocontact_infoque é usado para enviar informações extras do atendimento durante o transbordoextraInfo: informações extras do atendimento que serão enviadas durante o transbordo e serão disponibilizados no Widget (ficha) do atendimento para o Agente
SEND_MESSAGE: envio de mensagem do usuário para o agenteUPLOAD_FILE: evento usado para salvar um arquivoSEND_FILE: envio de arquivo do usuário para o agente através do ID recebido no eventoUPLOAD_FILEGET_FILE: evento enviado para buscar os dados de um arquivo através do ID recebido no eventoUPLOAD_FILECLOSE_CONVERSATION: encerramento de atendimento por parte do usuário.ACCEPT_CONVERSATION: evento que sinaliza a aprovação do ALTU para a reabertura de atendimentoREJECT_CONVERSATION: evento que sinaliza algum erro no pedido de reabertura de atendimento
Actions que a plataforma de Livechat envia para o Zenvia NLU:
ACCEPT_CONVERSATION: deve ser enviado quando um agente aceita a solicitação de um atendimentoREJECT_CONVERSATION: deve ser enviado quando não há agentes disponíveis para realizar o atendimentoSEND_MESSAGE: envio de mensagem do agente para o usuárioSEND_FILE: envio de arquivo do agente para o usuárioGET_FILE: evento enviado para buscar os dados de um arquivo através do ID recebido no eventoSEND_FILECLOSE_CONVERSATION: encerramento de atendimento por parte do agenteCLOSE_CONVERSATION: quando se trata de reabertura de atendimento, esse evento será disparado quando o cliente responder o outbound fora do tempo de tolerância, ou seja, maior que oexpirationTime
REOPEN_CONVERSATION: solicitação de reabertura de um atendimento por parte do agente
Eventos enviados e recebidos em um exemplo de atendimento de Livechat:

Evento enviado do Zenvia NLU para a plataforma de Livechat para solicitar a abertura de um novo atendimento.
Payload:
action: OPEN_CONVERSATION (solicitação de atendimento)
conversationId: ID único gerado pelo Zenvia NLU que representa a sessão de live chat.
requestId: ID único que representa o evento.
identifier: Id único que identifica o usuário no Zenvia NLU
skillId (opcional): id da habilidade do agente que atenderá o usuário. Id pode ser número ou string.
agent (opcional): ID do agente que atenderá o usuário. Id pode ser número ou string.
parameters:
contact:
id: ID do atendimento no Zenvia NLU
name (opcional, default: "Sem Nome"): nome do usuário
email (opcional): email do usuário
phone (opcional): telefone do usuário
cpf (opcional): cpf do usuário
channel: canal do atendimento (whatsapp, widget, messenger, etc)
history(opcional): Últimas 100 mensagens do histórico de mensagens trocadas entre o usuário e o(s) assistente(s) a partir do evento new_dialog do atendimento atual
Valores que podem ser adicionados: default, debugger, whatsapp, apple, widget, api, facebook, workplace e rcs
extraInfo: informações extras, citado em Iniciar Live Chat
timestamp: UNIX timestamp do momento de envio do evento
Evento enviado do ALTU para a plataforma de Livechat para solicitar a abertura de um novo atendimento.
Payload:
action: OPEN_CONVERSATION (solicitação de atendimento)
conversationId: ID único gerado pelo ALTU que representa a sessão de Livechat.
requestId: ID único que representa o evento.
identifier: Id único que identifica o usuário no ALTU
skillId (opcional): id da habilidade do agente que atenderá o usuário. Id pode ser número ou string.
parameters:
contact:
id: ID do atendimento no ALTU
name (opcional, default: "Sem Nome"): nome do usuário
email (opocional): email do usuário
phone (opcional): telefone do usuário
cpf (opcional): cpf do usuário
channel: canal do atendimento (whatsapp, widget, messenger, etc)
extra (opcional): objeto que engloba o contact_info, atributo que envia informações extras do atendimento durante o transbordo.
extraInfo: informações extras do atendimento
timestamp: UNIX timestamp do momento de envio do evento
Evento enviado do LiveChat para o ALTU para indicar que um agente aceitou uma solicitação de atendimento.
Payload:
action: ACCEPT_CONVERSATION (aceite do atendimento)
conversationId: ID da sessão enviado pelo ALTU no evento de OPEN_CONVERSATION
parameters:
agent:
id: ID do agente que atendeu a chamada
name (opcional): nome do agente que atendeu a chamada
timestamp: UNIX timestamp do momento de envio do evento
Para reabertura de atendimento: Evento enviado pelo ALTU para a plataforma de Livechat, quando a reabertura da conversa passou por todos os requisitos e está aguardando a interação do usuário
action: ACCEPT_CONVERSATION (aceite do atendimento)
conversationId: identificador da sessão atual, referente à conversa reaberta.
requestId: identificador único que representa o evento.
parameters:
status: accepted
contact:
id: identificador do atendimento no ALTU
name (opcional, default: "Sem Nome"): nome do usuário
email (opocional): email do usuário
phone (opcional): telefone do usuário
cpf (opcional): CPF do usuário
channel: canal do atendimento (whatsapp, widget, messenger, etc)
timestamp: UNIX timestamp do momento de envio do evento
Evento enviado do Livechat para o ALTU para indicar que não há agente disponível para atender a chamada (ex: fora do horário de atendimento)
Payload:
action: REJECT_CONVERSATION
conversationId: ID da sessão enviado pelo ALTU no evento de OPEN_CONVERSATION
reason: campo para enviar motivo da conversa não ter sido aceita pelo agente
timestamp: UNIX timestamp do momento de envio do evento
Para reabertura de atendimento:
Evento disparado pelo ALTU para a plataforma de Livechat, quando há algum erro ao tentar reabrir a conversa
Payload:
action: REJECT_CONVERSATION
conversationId: identificador passado no
REOPEN_CONVERSATION.requestId: identificador único que representa o evento.
parameters:
status: códigos variam de acordo com a causa da rejeição, sendo os status:
contact_not_found: não foi possível encontrar o atendimento com o
conversationIdinformado.invalid_channel: o atendimento está em um canal que não oferece suporte à reabertura.
invalid_integration: o atendimento está em um canal válido, em uma integração que não oferece suporte à reabertura.
integration_not_found: houve um erro ao tentar acessar mais detalhes da integração vinculada ao atendimento.
bad_integration_config: foi possível obter detalhes da integração, mas os campos na configuração da reabertura estão vazios.
contact_in_conversation: o atendimento já está em uma conversa.
message_not_sent: houve um erro ao enviar a mensagem para o broker.
reason: explicação do porquê a tentativa de reabertura falhou.
timestamp: UNIX timestamp do momento de envio do evento.
Evento do ALTU para o Livechat e vice-versa para enviar uma mensagem do usuário para o agente e vice-versa.
ALTU para Live chat (Usuário para agente)
Payload:
action: SEND_MESSAGE
conversationId: ID da sessão enviado pelo ALTU no evento de OPEN_CONVERSATION
parameters:
contact:
id: ID do atendimento no ALTU
name (opcional, default: "Sem Nome"): nome do usuário
email (opocional): email do usuário
phone (opcional): telefone do usuário
cpf (opcional): cpf do usuário
channel: canal do atendimento (whatsapp, widget, messenger, etc)
messages: array de mensagens que o usuário está enviando para o agente
type (opcional): Tipos disponíveis:
“information”: envio de mensagens classificadas como informativas. Um exemplo, é o envio de mensagens enquanto o agente não atende o usuário no Livechat.
No widget, a mensagem é exibida em uma estrutura diferente das demais mensagens da troca, nos outros canais é enviada como texto.
timestamp: UNIX timestamp do momento de envio do evento
Live chat para ALTU (Agente para usuário)
Payload:
action: SEND_MESSAGE
conversationId: ID da sessão enviado pelo Altu no evento de OPEN_CONVERSATION
parameters:
agent:
id: ID do agente que atendeu a chamada
name (opcional): nome do agente que atendeu a chamada
messages: array de mensagens que o agente está enviando para o usuário
timestamp: UNIX timestamp do momento de envio do evento
Compartilhar Localização
A localização será enviada no evento SEND_MESSAGE e estará dentro do atributo "parameters":
O atributo location será composto por latitude e um longitude , e seus valores serão numéricos.
Evento utilizado para salvar um arquivo que será enviado posteriormente. Após ser salvo, o arquivo ficará disponível por até 24h.
Payload:
action: UPLOAD_FILE
conversationId: ID da sessão enviado pelo ALTU no evento de OPEN_CONVERSATION
file:
contentType: Tipo do arquivo
buffer: Buffer do arquivo
timestamp: UNIX timestamp do momento de envio do evento
Response:
Status Code: 200
fileId: ID do arquivo que deve ser utilizado no
SEND_FILEeGET_FILE.requestId: ID único que representa o evento.
Evento do ALTU para o Livechat e vice-versa para enviar um arquivo do usuário para o agente e vice-versa.
ALTU para Livechat (usuário para agente)
Payload:
action: SEND_FILE
conversationId: ID da sessão enviado pelo ALTU no evento de OPEN_CONVERSATION
requestId: ID único que representa o evento.
identifier: Id único que identifica o usuário no ALTU
parameters:
contact:
id: ID do atendimento no ALTU
name (opcional, default: "Sem Nome"): nome do usuário
email (opocional): email do usuário
phone (opcional): telefone do usuário
cpf (opcional): cpf do usuário
file:
name: nome do arquivo
contentType: o tipo MIME do arquivo
type: extensão do arquivo
size: tamanho do arquivo (em bytes)
caption: descrição do arquivo
timestamp: UNIX timestamp do momento de envio do evento
Livechat para ALTU (agente para usuário)
Payload:
action: SEND_FILE
conversationId: ID da sessão enviado pelo Altu no evento de OPEN_CONVERSATION
parameters:
agent:
id: ID do agente que atendeu a chamada
name (opcional): nome do agente que atendeu a chamada
file:
id: ID do arquivo que é retornado após a chamada da action UPLOAD_FILE.
timestamp: UNIX timestamp do momento de envio do evento
Busca um arquivo através do id informado no evento UPLOAD_FILE. Essa chamada pode ser feita do ALTU para o Livechat e vice-versa.
ALTU para Livechat (usuário para agente)
Payload:
action: GET_FILE
fileId: ID do arquivo recebido no evento
UPLOAD_FILErequestId: ID único que representa o evento.
timestamp: UNIX timestamp do momento de envio do evento.
Response:
Status Code: 200
file
contentLength: Tamanho do arquivo.
contentType: Tipo do arquivo.
type: Extensão do arquivo.
buffer: Buffer do arquivo.
requestId: ID único que representa o evento.
Livechat para o ALTU (agente para usuário)
Payload:
action: GET_FILE
fileId: ID do arquivo recebido no evento
timestamp: UNIX timestamp do momento de envio do evento.
Evento enviado para encerrar um atendimento, seja do lado do agente (Livechat) ou usuário (ALTU)
ALTU para Livechat (usuário para agente)
Payload:
action: CLOSE_CONVERSATION
conversationId: ID da sessão enviado pelo ALTU no evento de OPEN_CONVERSATION
requestId: ID único que representa o evento.
identifier: Id único que identifica o usuário no ALTU
timestamp: UNIX timestamp do momento de envio do evento
Livechat para ALTU (agente para usuário)
Payload:
action: CLOSE_CONVERSATION
conversationId: ID da sessão enviado pelo Altu no evento de OPEN_CONVERSATION
reason: campo para enviar motivo da conversa ter sido encerrada pelo agente
timestamp: UNIX timestamp do momento de envio do evento
Para reabertura de atendimento:
A estrutura é a mesma do ALTU para Livechat, e será enviado quando o usuário responder o outbound fora do tempo de tolerância, ou seja, maior que o expirationTime
Evento enviado pelo agente para reabrir um atendimento com um determinado usuário.
Live chat para ALTU (agente para usuário)
Exemplo de payload a ser enviado do Live Chat para o ALTU
Atributos:
action: fixo com o valor
REOPEN_CONVERSATIONconversationId: ID da conversa tida anteriormente que deseja ser reaberta
parameters:
expirationTime: Tempo em minutos em que o pedido de reabertura será válido
message: mensagem que será enviada ao usuário no pedido de reabertura.
timestamp: momento da requisição.
ALTU para Live chat (usuário para agente)
Exemplo de payload que o ALTU enviará para o Live Chat ao conseguir enviar o HSM ao usuário.
Atributos:
action: fixo com o valor
ACCEPT_CONVERSATIONconversationId: mesmo do pedido de reabertura
parameters:
status: message_sent
contact: dados do atendimento
timestamp: momento da requisição.
REJECT_CONVERSATION (ALTU → Live chat)
Exemplo de payload que o ALTU enviará para o Live Chat quando o pedido de reabertura é negado.
Atributos:
action: fixo com o valor
REJECT_CONVERSATIONconversationID: mesmo do pedido de reabertura
parameters:
status: keyword sistêmica indicando o motivo da rejeição. Será um dos seguintes valores:
Atendimento não existente (contact_not_found)
Canal inválido (invalid_channel)
Integração mal configurada (bad_integration_config)
Qualquer erro retornado pelo broker ao tentar enviar o HSM (message_not_sent).
Atendimento em andamento (contact_in_conversation)
reason: descrição do motivo do pedido de reabertura ter sido rejeitado.
Envio de Status LiveChat
Durante um LiveChat, uma mensagem enviada pelo usuário será instantaneamente marcada como “Enviada”, após o agente visualizá-la. O payload abaixo deverá ser disparado e permitirá atualizar no widget o status para “Lida”.
Estrutura
Atributos:
action: SEND_STATUS
conversationId: ID da sessão enviado pelo ALTU no evento de OPEN_CONVERSATION
parameters:
status: até o momento somente o status “read”, indicando leitura da mensagem pelo agente, será processado pelo Zenvia NLU.
timestamp: UNIX timestamp do momento de envio do evento
Importante
O recebimento de um evento deve ser sempre respondido com o http code 200 OK, por ambos os lados. No body do response o Zenvia NLU irá indicar se o evento recebido foi processado corretamente ou não:
Status Code: 200
requestId: ID único que o Zenvia NLU gera que identifica o evento recebido
message: Mensagem que indica o sucesso/erro do recebimento
Caso o payload gerado via JWT não seja válido.
Status Code: 401
requestId: ID único que o ALTU gera que identifica o evento recebido
message: Mensagem que indica o sucesso/erro do recebimento
Caso o Altu receba algum evento que esteja mal formatado ou com algum parâmetro obrigatório faltando.
Status Code: 400
requestId: ID único que o ALTU gera que identifica o evento recebido
message: Mensagem indicando o que está errado no evento recebido
Caso o dado solicitado não for encontrado, como um arquivo por exemplo, na action GET_FILE.
Status Code: 404
requestId: ID único que o ALTU gera que identifica o evento recebido
message: Mensagem que indica o sucesso/erro do recebimento
Caso o Altu não consiga processar a requisição por algum motivo não esperado.
Status Code: 500
requestId: ID único que o ALTU gera que identifica o evento recebido
message: Mensagem que indica o sucesso/erro do recebimento
Para saber mais como usa-lo em um assistente:
Iniciar LiveChatReabertura de atendimento
Essa funcionalidade possibilita que um agente em atendimento de Live chat possa reabrir um atendimento para tratar algum assunto pendente com o usuário.
A reabertura acontece por meio do envio de uma mensagem outbound, e segue alguns padrões:
Requisitos
Integração do WhatsApp pelos brokers LivePerson ou Zenvia
Um template de mensagem (HSM) específico para esse tipo de ocasião:
Esse template HSM deve ter apenas UMA variável
Quando for possível nomear a variável, como é o caso da Zenvia, ela deve ter o nome de
message
API de Outbound habilitada e configurada
Configuração da API de Outbound
Os campos para habilitar a possibilidade de reabertura de conversa estão dentro das configurações da integração com o canal, após habilitar a API de Outbound
LivePerson V1
Para a V1 da LivePerson, basta inserir o nome do template HSM criado (conforme os requisitos mencionados acima)
LivePerson V2
Já na V2, é necessário inserir o ID do template HSM criado (conforme os requisitos já mencionados), bem como a skill (habilidade) configurada no template.
Zenvia
Quando a integração é feita pelo broker Zenvia, é necessário informar o ID do template HSM (criado conforme as regras mencionadas acima)
Eventos enviados e recebidos em um exemplo de reabertura de Live Chat:

Last updated
Was this helpful?