Automação API Integrada - SelfService
Zap2Go permite que qualquer empresa crie seus processos de automação de acordo com suas necessidades.
O formato de Automação API integrada - Selfservice permite que o nosso cliente desenvolva seu próprio processo de automação de atendimento utilizando qualquer tecnologia que permita a implementação de WebApi.
Este modelo de automação é bastante poderoso pois permite:
Construir e manter sua automação de forma independente em seu ambiente, não precisando expor dados ou funções de seu ambiente;
Dar manutenção rápida de acordo com suas prioridades de negócio;
Ao mesmo tempo, utilizar todos os recursos do Zap2Go para facilitar e viabilizar o melhor atendimento para o seu cliente.
De forma geral, os conhecimentos técnicos e recursos exigidos para esta implementação são:
Linguagem de programação na qual se possa desenvolver uma aplicação WebApi. Exemplos são: C#, Nodes.JS, Java, Python, VB.NET, PHP, etc.
-
URL/rota do contratante para hospedar o serviço de API. Várias possibilidades podem ocorrer:
uso de infraestrutura e servers do cliente.
uso da infraestrutura Zap2Go.
comunicação via VPN.
etc.
Definição de um padrão de segurança aberto, semi-restritivo ou restritivo para acesso.
Conhecimento do fluxo operacional e sistêmico do cliente.
O modelo de implementação da API integrada é bastante simples e poderoso. Ele pode funcionar com pouco desenvolvimento e se tornará mais complexo quanto mais for complexo o processo interno do cliente.
O ponto de partida para efetuar esta implementação é o cliente de fato ter um fluxo de atendimento (fluxograma de etapas a serem cumpridas) esperado para execução.
Um fluxo por natureza contém:
um ponto de partida (chamamos de step START).
uma ou mais etapas "estáveis" (ponto em que o sistema fica aguardando um "reação" do usuário - são steps com nomes únicos entre si).
transições entre steps (as setas dos fluxogramas): que ocorrem de acordo com as regras de negócio.
zero, um ou mais steps de finalização (chamamos de step END).
Pontos chave para a implementação:
O desenvolvimento terá como ponto de entrada somente um método na API, cujo objeto de Request também é padronizado.
O método chamado terá apenas um padrão (objeto) de retorno.
-
Uma chamada deste método ocorrerá quando:
o cliente enviou/respondeu uma mensagem;
foi executado algum processo configurado de renitência na carteira;
o próprio processo da api respondeu solicitando para ser chamado após X minutos.
A resposta do método deverá ser uma lista de ações (Actions) a ser executada pelo Zap2Go como "reação" à mensagem/renitência.
A solicitação (request) para a API dispõe dos seguintes atributos:
| Atributo | Tipo / Obrigatoriedade | Notas |
| WalletId | int (OBRIGATÓRIO) | |
| FlowCode | string (OBRIGATÓRIO) | |
| Protocol | string (OPCIONAL) | |
| ClientData | Client (OBRIGATÓRIO) | Objeto com dados do cliente que enviou mensagem (1) |
| ReceivedMessage | Message (OBRIGATÓRIO) | Objeto da mensagem recebida (2) |
| CurrentStep | string (OBRIGATÓRIO) | identificação do 'step' em que está o fluxo, para controle sobre o processo. |
| TimesAtThisStep | int (OBRIGATÓRIO) | Quantidade de vezes em que o processo foi chamado com o fluxo "parado" neste step. Esta informação auxilia a indicar as "tentativas" de identificar o que um cliente diz, por exemplo. O padrão para a primeira execução é 0 (zero). |
| FlowTimeline | StepHistory[ ] (OPCIONAL) | Trata-se do histórico de todos os steps pelos quais passou a execução deste cliente desde o último START. |
| ResubmitToken | string (OPCIONAL) | Nos casos em que a própria API solicitou nova execução após um intervalo de tempo, este é o token informado (vide Action ResubmitToken). |
| Variables | Dict<string, object> / JSON object | Conjunto de variáveis armazenadas durante o fluxo ou desde seu início. Estas variáveis podem ser atualizadas durante a execução da API, e retornadas para atualização. As variáveis podem iniciar seus valores desde o acionamento (Active ou Mailing). |
| Version | int | Valor inicialmente 1. |
(1) Objeto Client
| Atributo | Tipo / Obrigatoriedade | Notas |
| Id | int (OBRIGATÓRIO) | |
| Document | string | |
| ExternalId | string | |
| PhoneNumber | string | |
| Name | string | |
| NameOnChannel | string | |
| string | ||
| Photo | string |
(2) Objeto Message
| Atributo | Tipo / Obrigatoriedade | Notas |
| Type | enum | Tipo da mensagem que se deseja enviar. Mensagens recebidas podem ser basicamente: TEXT, FILE, BUTTON. |
| Text | string | Texto enviado/recebido da mensagem |
| ContentId | string (OPCIONAL) | Id do botão/opção recebido (vide botões abaixo) |
| FileContent | string (OPCIONAL) | Base 64 do arquivo enviado/recebido (quando aplicável) |
| FileName | string (OPCIONAL) | Nome do arquivo enviado/recebido (quando aplicável) |
| Buttons | Button [ ] (OPCIONAL) | Array de botões. Cada botão tem as propriedades:
|
| Options | Option [ ] (OPCIONAL) | Array de opções. Cada opção tem propriedades:
|
| ScheduleFor | Datetime (OPCIONAL) | Data/hora para agendamento de envio da mensagem. Se não infor |
O retorno (response) que a API deve fazer possui os seguintes atributos:
| Atributo | Tipo / Obrigatoriedade | Notas |
| Actions | Action[ ] | Uma lista com zero, um ou mais ações a serem executadas para o atendimento. Todas as ações retornadas serão executadas na ordem informada. Cada tipo de Action possui atributos próprios (1). Recomendamos consultar o GitHub, que conterá sempre as propriedades mais atualizadas de cada uma. |
| Protocol | string | Caso informado, será o protocolo a ser utilizado para identificação do atendimento em andamento. |
(1) As seguintes oções de Actions estão disponíveis:
| Action | Descrição | Notas |
| SendMessage | Enviar uma ou mais mensagens para o cliente, normalmente como resposta ou nova pergunta ao usuário. |
|
| FinishService | Encerrar o atendimento automático, marcando que o cliente já foi atendido e o processo concluído. Neste sentido, caso haja nova interação com o cliente, será reiniciado o processo. |
|
| TransferService | Transferir o atendimento para o processo manual de atendimento. Uma vez executada esta action, o cliente ficará disponível para atendimento manual plo Zap2Go. |
|
| SetVariables | Definir novos valores para variáveis do sistema. | |
| SetStep | Alterar a marcação do step atual do cliente. |
|
| AddToBlacklist | Adiciona o telefone do cliente imediatamente em blacklist (ou seja, o telefone não receberá novas mensagens) |
|
| ChangeRetryAction | Alterar/incluir/excluir uma ação de renitência para o atendimento do cliente. | Uma renitência é por definição o disparo de uma ou mais ações em caso de não haver ação por parte do cliente. |
| RegisterLog | Registrar em log uma informação. | Usado para debug de processos dentro do Zap2Go. |
| RegisterUserInfo | Registrar informações para o atendimento. | Esta ação insere as informações desejadas para o usuário. Esta informação aparece na timeline do atendimento do cliente, e é visível apenas pelo usuário. |
| Resubmit | Ordem para resubmeter uma chamada de API após um tempo. | Esta ação, se informada, fará com que o Zap2Go reexecute a chamada desta API após uma determinada quantidade de tempo, com os mesmos parâmetros, mas identificando um token (a ser informado nesta action de Resubmit). |
| SendAlert | (em processo) Enviar um alerta para o gestor da carteira. | |
| UpdateClientInfo | Atualizar dados do cadastro do cliente em questão no Zap2Go. | Este processo normalmente é utilizado para complementar informações do cliente na base Zap2Go para posterior utilização pelo Zap2Go no atendimento manual, na formatação de mensagens, etc. |
Notas adicionais:
Todas as chamadas devem retornar actions.
É importante que a configuração de infraestrutura da API esteja preparada para receber pacotes de dados grandes, principalmente devido a envio de arquivos base64.
O timeout para execução de uma API do cliente é de 60 segundos. Não é recomendável que o processo seja "lento" pois pode deixar um cliente muito tempo sem atendimento.
Caso o processo dispare tarefas mais demoradas que o timeout, é ´possível a API controlar este processo de forma assíncrona e retornar o Action Resubmit para continuar após um tempo.
Caso ocorra erro na chamada da API do cliente, a configuração de retentativas e intervalos é configurável (dentro de alguns limites).
Estão previstas mudanças nos parâmetros de entrada e saída, com novos atributos. Estas serão atualizadas tanto aqui na documentação quanto no GitHub.
Caso haja mudanças que impactem em regras de funcionamento das APIs, serão utilizados novos números de versão no request, garantindoa compatibilidade da versão já implementada.