Updated: 11 January 2023

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
Email 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:
  • Id (string única no array)
  • Label (string)
Options Option [ ] (OPCIONAL) Array de opções. Cada opção tem propriedades:
  • Id (string única no array)
  • Description (string)
  • Title (string)
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.
  • Todos os tipos de mensagens podem ser enviadas (texto, arquivos, botões, etc).
  • É possível: enviar mais de uma, agendar mensagens, etc.
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. 
  • É possível definir o código do motivo de encerramento.
  • É possível especificar a partir de quando deverá ocorrer um novo atendimento automático.
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. 
  • A transferência pode ocorrer:
    • para um grupo de especialistas, sujeito ao primeiro que buscar.
    • para um especialista específico, dentro de uma lista de prioridades (será transferido para o primeiro que estiver logado no sistema).
    • transferência forçada para um especialista fidelizado, mesmo que esteja offline.
    • para outra carteira de atendimento. 
SetVariables Definir novos valores para variáveis do sistema.
SetStep Alterar a marcação do step atual do cliente.
  • É possível por exemplo reiniciar o step do fluxo para START, ou mesmo finalizá-lo (END)
  • O Zap2Go não restringe a identificação de steps. Esta identificação é própria de cada fluxo. 
  • O steps "START" e "END" são nomes reservados. Devem ser usados para identificar um começo e o término principal do fluxo.
  • Recomendamos, para facilitar o próprio desenvolvimento, utilizar letras maiúsculas, números e traços somente. A restrição para o tamanho da identificação do step é 32 caracteres.
AddToBlacklist Adiciona o telefone do cliente imediatamente em blacklist (ou seja, o telefone não receberá novas mensagens) 
  • é possível inserir o período em que o cliente não deverá receber.
  • é possível inserir o escopo da blacklist (chip, dispositivo, carteira, empresa). 
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.



Esta tendo algum problema?

CLIQUE AQUI ou então entre em contato com o GUGA - Suporte