Skip to main content

Introdução ao NX Voicebot

O NX Voicebot consiste em um assistente virtual de voz ligado ao callcenter.

Principais Funcionalidades​

  • 👨‍👧‍👦 "Humanizado": A voz é gravada em estúdio com entonação e frases coerentes com o público alvo, proporcionado assim uma experiência menos robotizada.

  • 🦸🏽 Múltiplos propósitos: De cobrança até oferecer uma triagem inicial em clínicas, o Voicebot possui flexibilidade para atuar em diversos contextos.

  • 📈 Produtividade: Em alguns clientes quase 80% do número de promessas vinda dos clientes é originada do voicebot, demonstrando ser muito eficaz.

Tecnologias e Ferramentas​

img img img img img img

  • Python: 3.4.10
  • Repositório git: automacao/automacao
  • Jira board: [P] Voicebots e [S] Voicebots
  • MySQL: 5.6
  • Flask: 1.0.2

Visão Geral​

img

O NX Voicebot está vinculado localmente ao Callcenter e ao seu discador e assim como eles pode ser encontrado em Cloud na AWS ou Under, além de servidores físicos.

Início: a necessidade de negócio​

Em alguns momentos o negócio precisa que os clientes sejam abordados por um canal de voz e não possui agentes disponíveis. Nessas horas o Voicebot é uma opção extremamente importante pelo seu custo benefício e a capacidade de abordar o público de forma veloz e eficiente.

As demandas se dividem em duas categorias:

  • Novas funcionalidades: Serão agregadas novas funções ao robô que ele não possui ainda, como por exemplo uma integração com API de terceiros.

  • Criação/Alteração de voicebot: Com as funcionalidades já existentes, será desenvolvido e/ou modificado um voicebot personalizado para o contexto do cliente.

No primeiro caso, as demandas são abertas no quadro do JIRA denominado [P] Voicebot.

No segundo caso, as solicitações vem com o fluxo e detalhes do voicebot e é criado a tarefa no quadro [S] Voicebot.

Controle e versionamento de código​

Com a tarefa em mãos cria-se uma nova branch no repositório git do produto. Esse repositório está localizado dentro do workspace SMARTNX e do projeto automacao, com o nome de automacao.

Dentro do repositório temos duas branches importantes:

  • develop: Onde está o código de homologação. As novas funcionalidades passam pelo processo de merge nesta branch para serem aprovadas.

  • master: Onde está o código de produção. As novas funcionalidades uma vez homologadas e aprovadas na develop vem para cá.

Todas as contribuições ao projeto são feitas utilizando o workflow Gitflow. Já as tags de versão criadas a partir desse fluxo geram um versionamento semântico, detalhado no item Versionamento.

Interações com o Callcenter​

O NX Voicebot apesar de ser um serviço rodando em paralelo utiliza-se da estrutura do Callcenter de relatórios e discador para funcionar efetivamente.

Setup​

É recomendado a utilização de algum servidor de homologação do Callcenter para utilização do Voicebot. Após o setup do git e bitbucket faça o clone do repositório na máquina de destino:

git clone git@bitbucket.org:devsmartnx/automacao.git

Entre na pasta automacao:

cd automacao

Crie a venv para isolar as dependências do projeto:

python -m venv ./venv

Ative a venv:

source ./venv/bin/activate

Instale as dependências:

pip install -r requirements.txt

Atualize o banco de dados:

flask db upgrade

Configurando para iniciar junto ao servidor:

chkconfig automacao on

Mover o .conf do asterisk para a pasta do sistema:

cp /automacao/scripts/extensions_inc_robo.conf
/etc/asterisk/extensions_inc_robo.conf

Descompactar audios para o Asterisk

mkdir /var/lib/asterisk/sounds/tts
cd /automacao/tts
tar xf audios.tar.gz -C /var/lib/asterisk/sounds/tts

Os próximos passos consistem em configurações adicionais em outros pontos do Callcenter e API Gateway.

Fluxo de trabalho​

Configurações do API GW​

  • Verificar Integrações do ambiente do cliente com o API GW

Caminho: Administração > Configurações > Variáveis do sistema

  • Verificar se variáveis f_url_apismartnx e f_key_apismartnx estão configuradas.

  • Verificar registro do ambiente do cliente no API GW

Caminho: Administração > Integrações

  • Verificar campos da área Gestão Token NX Call Center

  • Criar chave de acesso Google e adicionar ao GW:

Acessar Google Cloud (cloud.google.com).

Caminho: Console (canto superior direito) > Selecione um projeto > NOVO PROJETO

Defina o nome > Criar

Selecione o projeto e ative os serviço Speech to Text

Caminho: Menu > APIs e serviços > Painel > + ATIVAR APIS E SERVIÇOS > Cloud Speech-to-Text API > ATIVAR

Crie as credenciais (Utilizando a ajuda do Google)

Caminho: CRIAR CREDENCIAIS > (Escolha...) Cloud Speech-to-Text API > Não, nenhum > Preciso de quais credenciais?

Nome da conta de serviço:

ID da conta de serviço: id_nomeDoCliente@dadosDoGoogle

Tipo de chave: JSON

Continuar (Criar sem papel)

Fazer o download do json gerado e renomear para id_nome do cliente.json e subir no projeto webhook (API GW SNX).

  • Ativar armazenamento de dados

Geração de registros de dados > ATIVAR A GERAÇÃO DE REGISTROS DE DADOS

  • Criar integração com o cliente no API GW Pegar o nome do json que é gerado ao criar uma conta de serviço, adicionar uma nova integração no webhook user = id_nome do cliente.json e service_id = 13

Configurações do Callcenter​

1 - Criar variável global de referência

Caminho: PBX > Conf. Avançadas > Variável Global

Variável: URL_API = 127.0.0.1:5000

2 - Criar tabulações do voicebot no Callcenter

Caminho: Callcenter > Configurações > Tabulação Lead

Criar as tabulações: ‘Robo - Abandonada por falta de robo disponivel’ e a ‘Robo - Nao Interagiu’

3 - Importar áudios para o servidor

Caminho: Callcenter > Configurações > Áudios

Obs: pelo menos um áudio deve ser adicionado através do sistema

4 - Criar Ura e vincular o áudio criado

Caminho: Callcenter > Configurações > URA

Obs: não é necessário criar opções para a ura

5 - Validar opção de timeout da Ura

Caminho: Callcenter > Configurações > URA

Configurar a opção timeout para a ação “TERMINAR“

6 - Criar campanha e vincular URA

Caminho: Callcenter > Campanhas > Campanhas

Selecionar a ura criada e configurar o Tipo campanha = Robo

Configurar Plano de Horário com datas válidas

Adicionar as tabulações criadas no Plano de Tabulação

7 - Incluir redirecionamento para o robo no extension

Caminho: PBX > Conf. Avançadas > Arquivos de Configuração

Editar arquivo extensions_inc_custom.conf

Incluir linhas no início do arquivo para redirecionar as chamadas para o robo e para testes:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO - CONFIGURACAO ROBO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#include extensions_inc_robo.conf
[ura-<NOME DA URA>]
exten => s,1,NoOp(===Iniciando voicebot===)
same => n,MSet(idTabulacaoPadrao=<ID DA TABULAÇÃO 'Robo - Nao interagiu'>,idTabRoboIndisponivel=<ID DA TABULAÇÃO 'Robo - Abandonada por falta de robo disponivel'>)
same => n,Goto(voicebotContext,voicebot,1)
same => n,Hangup()
[from-internal]
exten => teste,1,NoOp(===Teste voicebot===)
; same => n,Macro(gravar,3232320000,${EXTEN},VOICEBOT)
same => n,MSet(TELEFONE=3232320000,NOME=<NOME DE TESTE>,ID_CAMPANHA=<ID DA CAMPANHA DO ROBO>,DATA1=2020-12-31 00:00:00,VALOR1=999.99,idTabulacaoPadrao=<ID DA TABULAÇÃO 'Contato Inicial'>,idTabRoboIndisponivel=<ID DA TABULAÇÃO 'Robo - Abandonada por falta de robo disponivel'>,ID_CARGA=0)
same => n,Goto(voicebotContext,voicebot,1)
same => n,Hangup()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; FINAL - CONFIGURACAO ROBO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Tabelas​

O campo extra_conf da tabela automacao.voicebot deve conter um json como o modelo:

{"decision_storage":0,"automated_actions":0,"request_error_tolerance":"1.0","packet_loss_tolerance":"1.0","latency_tolerance":"1.0","rtt_tolerance":"1.0"[,"tivea_negotiation":"0123456789012345678"]}

Registro e Comunicação​

1 - Registrar novo robô

Registrar na planilha de Controle do Robô. Link: https://docs.google.com/spreadsheets/d/1YNZxClzuiqO57zqqja5fetUJfpCQ8HCgSUbW9dYqH2o/edit?usp=sharing

2 - Comunicar ao setor de Infra o monitoramento do novo serviço.

Criar ticket no Helpdesk (Ponto ainda a ser esclarecido junto com o setor de Infraestrutura)

REGISTRAR CONFIGURAÇÕES NO SCHEMA AUTOMACAO

1 - Registrar Voicebot na tabela automacao.voicebot (v 1.1)

2 - Criar configuração dos contextos na tabela automacao.ura_robo

3 - Criar grupo de respostas na tabela automcao.ura_resposta

4 - Criar decisões do voicebot na tabela automacao.ura_interacao

5 - Criar base de conhecimento (expressões conhecidas) na tabela automacao.ura_faq

Extensions​

O extension do agente virtual (ou voicebot) foi construído em blocos ou contextos com funções determinadas. Essa seção descreve a função de cada bloco e detalha seu funcionamento passo a passo.

Estrutura básica de um contexto​

Além do exten principal, os contextos possuem três exten especiais (i, h e talk) e outros três exten recorentes, todos descritos abaixo:

  • i: exten chamado caso as funções Background() ou WaitExten() não localize o destino no contexto atual
  • h: quando uma chamada é desligada o Asterisk executa o exten h do contexto atual. Esse exten é utilizado para imprimir as variáveis da chamada (uniqueid, id do lead, id da carga etc.) e facilitar o debug. Além disso é chamado a rota POST/voicebot/end-calls para realizar os provedimentos de finalização da chamada (gravação de variáveis, tabulação etc.)
  • talk: exten chamado quando a função BackgroundDetect() é interrompida conforme descrito no site asterisk.org. Esse exten inicia a gravação da voz do interlocutor e retorna para o exten principal definido no código como BLOCO.
  • tts: exten utilizado para verbalizar variáveis do mailing através da rota POST/google/tts e retornando para o exten principal definido no código como BLOCO.
  • datahumanizada: esse exten é chamado para verbalizar datas do mailing no formato dia/mês/ano utilizando da rota POST/voicebot/dates e retornando para o exten principal definido no código como BLOCO.
  • valorhumanizado: exten utilizado para verbalizar valores monetários utilizando a rota GET/ura/currency/name e retornando para o exten principal definido no código como BLOCO.

Abaixo a descrição dos contextos presentes no no extension do agente virtual.

voicebotContext​

O contexto voicebot é o primeiro contexto a ser chamado dentro da atuação do agente virtual. Esse contexto é utilizado para realizar validações do início da chamada e preparar algumas variáveis do mailing para utilização do voicebot.

Ações realizadas no contexto​

  1. A edição no nome do cliente é realizada através da rota GET/voicebot/names. Apenas o primeiro nome é utilizado em formato capitalizado no agente virtual.
  2. As datas do mailing são editadas para a utilização do voicebot. A rota GET/voicebot/dates é utilizada para formatar os campos de data de YYYY-mm-DD HH:MM para YYYY-mm-DD.
  3. Formatação dos campos string pela rota GET/voicebot/strings. Todos os campos são capitalizados.
  4. Busca das configurações do agente virtual através da rota GET/voicebot/decisions. Essa chamada retorna as variáveis de configuração contidas na tabela automacao.voicebot e busca o contexto para continuar a execução do voicebot.
  5. Buscar permissão para execução através da rota POST/voicebot/cma. A rota verifica se existe agentes virtuais disponíveis para a execução na campanha, caso negativo a ligação é desligada.
  6. Força início da gravação com a função MixMonitor() do asterisk, após a definição de algumas variáveis.

greetingContext​

O contexto greeting é utilizado para comprimentar o interlocutor e utilizar a frase completa de saudação, gravada em estúdio.

Ações realizadas no contexto​

  1. Comprimenta o interlocutor com uma das frases: 'bom dia', 'boa tarde' ou 'boa noite'.
  2. Busca e reproduz a saudação inicial gravada em estúdio, quando houver no servidor. Através da rota GET/ura/name/<NOME> o voicebot busca a frase completa 'Gostaria de falar com <NOME> é você?' gravada em estúdio é buscada no servidor, se ela existir com o nome do mailing a frase é reproduzida, caso contrário o agente segue para o contexto configurado.

baseContext​

O contexto base é o principal do agente virtual, ele é responsável para fazer uma pergunta para o interlocutor e tomar uma decisão de acordo com a resposta recebida.

Ações realizadas no contexto​

  1. Busca das configurações do contexto com a rota GET/voicebot/config.
  2. Execução de áudios configurados no contexto. Alguns campos do mailing podem ser configurados nas variáveis leitura_tts_0? do contexto e os exten datahumanizada, valorhumanizado ou tts são utilizados na verbalização quando necessário.
OrdemConfiguração do contexto
1audio_01
2audio_02
3leitura_tts_01
4audio_03
5leitura_tts_02
6audio_04
7leitura_tts_03
8audio_05
9audio_06
10regra_dia
11grupo_dia
12audio_07

a. O audio_07 é reproduzido com BackgroundDetect(). Essa função do asterisk permite a interrupção do áudio e iniciar imediatamente a gravação da resposta do interlocutor. Nesse caso o exten talk é acionado.

  1. Gravação da resposta do interlocutor. A resposta é gravada em um arquivo temporário em /tmp com o nome igual ao uniqueid da chamada. O tempo máximo da gravação é configurado na variável tempo_gravacao, o mínimo é sempre de 2 segundos.
  2. O áudio gravado é transcrito pelo google utilizando a rota POST/google/speech.
  3. Reprodução dos últimos áudios configurados para o contexto.
OrdemConfiguração do contexto
13audio_08
14audio_09
  1. Decide o destino do fluxo do agente virtual. A rota GET/ura/ngram é utilizada para decidir o destino do fluxo a partir da resposta reconhecida no item 4. Em caso de falha na identificação da resposta ou do destino de exceção é utilizado.

rtspContext (beta)​

Esse contexto ainda não foi completamente testado. O contexto rtsp funciona como o contexto base com a diferença de não gravar o áudio mas enviar para o Google por streaming.

Ações realizadas no contexto​

  1. Busca das configurações do contexto com a rota GET/voicebot/config.
  2. Execução de áudios configurados no contexto. Alguns campos do mailing podem ser configurados nas variáveis leitura_tts_0? do contexto e os exten datahumanizada, valorhumanizado ou tts são utilizados na verbalização quando necessário.
OrdemConfiguração do contexto
1audio_01
2audio_02
3leitura_tts_01
4audio_03
5leitura_tts_02
6audio_04
7leitura_tts_03
8audio_05
9audio_06
10regra_dia
11grupo_dia
12audio_07
  1. Envio da resposta para o Google por streaming.
  2. O áudio gravado é transcrito pelo google utilizando a rota POST/google/speech.
  3. Reprodução dos últimos áudios configurados para o contexto (audio_08 e audio_09).

dtmfContext​

O contexto dtmf funciona de forma semelhante ao baseContext mas a decisão no fluxo é determinada com a digitação dos números 1 ou 2.

Ações realizadas no contexto​

  1. Busca das configurações do contexto com a rota GET/voicebot/config.
  2. Execução de áudios configurados no contexto. Alguns campos do mailing podem ser configurados nas variáveis leitura_tts_0? do contexto e os exten datahumanizada, valorhumanizado ou tts são utilizados na verbalização quando necessário.
OrdemConfiguração do contexto
1audio_01
2audio_02
3leitura_tts_01
4audio_03
5leitura_tts_02
6audio_04
7leitura_tts_03
8audio_05
9audio_06
10regra_dia
11grupo_dia
12audio_07
  1. Aguarda dígito para determinar o fluxo do agente virtual. O máximo de tempo esperado é 7 segundos. A digitação do número 1 força uma resposta 'sim' para a etapa 5, o número 2 força a resposta 'nao'.
  2. Decide o destino do fluxo do agente virtual. A rota GET/ura/ngram é utilizada para decidir o destino do fluxo a partir da resposta reconhecida no item 3. Em caso de outro dígito ser utilizado o destino de exceção é utilizado.

queueContext​

O objetivo do contexto queue é transferir a chamada para uma fila determinada. A fila é configurada como o exten do contexto.

Ações realizadas no contexto​

  1. Busca das configurações do contexto com a rota GET/voicebot/config.
  2. Execução de áudios configurados no contexto. Alguns campos do mailing podem ser configurados nas variáveis leitura_tts_0? do contexto e os exten datahumanizada, valorhumanizado ou tts são utilizados na verbalização quando necessário.
OrdemConfiguração do contexto
1audio_01
2audio_02
3leitura_tts_01
4audio_03
5leitura_tts_02
6audio_04
7leitura_tts_03
8audio_05
9audio_06
10regra_dia
11grupo_dia
12audio_07
13audio_08
14audio_09
  1. Envia informações para tabular a ligação através da rota POST/voicebot/end-calls. A ligação é tabulada caso haja problema na transferência para a fila (item 4).
  2. Transfere ligação para a fila configurada na linha same => n,Goto(to-fila,${EXTEN},1).

hangupContext​

O contexto hangup é utilizado quando a ligação chega ao fim do fluxo e deve ser desligada.

Ações realizadas no contexto​

  1. Busca das configurações do contexto com a rota GET/voicebot/config.
  2. Execução de áudios configurados no contexto. Alguns campos do mailing podem ser configurados nas variáveis leitura_tts_0? do contexto e os exten datahumanizada, valorhumanizado ou tts são utilizados na verbalização quando necessário.
OrdemConfiguração do contexto
1audio_01
2audio_02
3leitura_tts_01
4audio_03
5leitura_tts_02
6audio_04
7leitura_tts_03
8audio_05
9audio_06
10regra_dia
11grupo_dia
12audio_07
13audio_08
14audio_09
  1. Encerra a chamada com o contexto h.

passbyContext​

O contexto passby é utilizado quando o fluxo segue para apenas um destino. O destino do fluxo é configurado no contexto e ao final da execução do passby ela é direcionada para o contexto configurado.

Ações realizadas no contexto​

  1. Busca das configurações do contexto com a rota GET/voicebot/config.
  2. Execução de áudios configurados no contexto. Alguns campos do mailing podem ser configurados nas variáveis leitura_tts_0? do contexto e os exten datahumanizada, valorhumanizado ou tts são utilizados na verbalização quando necessário.
OrdemConfiguração do contexto
1audio_01
2audio_02
3leitura_tts_01
4audio_03
5leitura_tts_02
6audio_04
7leitura_tts_03
8audio_05
9audio_06
10regra_dia
11grupo_dia
12audio_07
13audio_08
14audio_09
  1. Segue o fluxo para o contexto e exten configurado.

confirmationContext​

O contexto confirmaion é utilizado para perguntar ao interlocutor e confirmar a resposta com um campo presente no mailing.

Ações realizadas no contexto​

  1. Busca das configurações do contexto com a rota GET/voicebot/config.
  2. Execução de áudios configurados no contexto. Alguns campos do mailing podem ser configurados nas variáveis leitura_tts_0? do contexto e os exten datahumanizada, valorhumanizado ou tts são utilizados na verbalização quando necessário.
OrdemConfiguração do contexto
1audio_01
2audio_02
3leitura_tts_01
4audio_03
5leitura_tts_02
6audio_04
7leitura_tts_03
8audio_05
9audio_06
10regra_dia
11grupo_dia
12audio_07

a. O audio_07 é reproduzido com BackgroundDetect(). Essa função do asterisk permite a interrupção do áudio e iniciar imediatamente a gravação da resposta do interlocutor. Nesse caso o exten talk é acionado.

  1. Gravação da resposta do interlocutor. A resposta é gravada em um arquivo temporário em /tmp com o nome igual ao uniqueid da chamada. O tempo máximo da gravação é configurado na variável tempo_gravacao, o mínimo é sempre de 2 segundos.
  2. O áudio gravado é transcrito pelo google utilizando a rota POST/google/speech.
  3. Reprodução dos últimos áudios configurados para o contexto (audio_08 e audio_09).
  4. Realizado a confirmação da transquição com o campo do mailing configurado através da rota GET/voicebot/field-confirmations.
  5. Decide o destino do fluxo do agente virtual através da rota GET/voicebot/field-confirmations.

validationContext​

O contexto validation é utilizado para testar se os campos do mailing foram preenchidos. Esse contexto pode deinir vários destinos de acordo com a presença de valores nos campos configurados.

Ações realizadas no contexto​

  1. Busca das configurações do contexto com a rota GET/voicebot/config.
  2. Execução de áudios configurados no contexto. Alguns campos do mailing podem ser configurados nas variáveis leitura_tts_0? do contexto e os exten datahumanizada, valorhumanizado ou tts são utilizados na verbalização quando necessário.
OrdemConfiguração do contexto
1audio_01
2audio_02
3audio_03
4audio_04
5audio_05
6audio_06
7audio_07
8audio_08
9audio_09
  1. Decide o destino do fluxo do agente virtual através da rota GET/voicebot/lead-validations de acordo com os campos do mailing recebidos e as configurações do contexto.

Versionamento​

v1.0.0​

27/04/2020 - Commit: b119155

Versão inicial do voicebot Smart NX.

v1.0.1​

07/07/2020 - Commit: dba0d1f

Hotfix: Gravação da ligação não é iniciada se houver erro na busca do início do voicebot.

v1.0.2​

09/07/2020 - Commit: 9b2df30

Hotfix: Regra para a execução da cron somente se a data de atualização não for o dia atual.

v1.0.3​

10/07/2020 - Commit: ff1b1da

Hotfix: Adicionando coluna de data de início da cron.

v1.0.4​

14/08/2020 - Commit: 8074933

Hotfix: Contenção de erro na rota de envio de áudio.

v1.1.0​

05/10/2020 - Commit: a2c5c24

Features:

  • Criação da tabela voicebot para armazenar as configurações gerais do voicebot.
    • Configuração que permite gravar as tabulações intermediárias do voicebot fornecendo uma lista de tabulações utilizadas pelo voicebot em cada ligação.
    • Configuração que permite gravar
  • Criação do módulo info com rota para informar a versão do voicebot.
  • Criação do módulo page fornecendo uma página web com informações básicas e configurações gerais do voicebot.
  • Criação do contexto request com integração de tabulação Tivea específico para cliente.
  • Humanização dos valores monetários e datas em todos os contextos.
  • Atualização da base de conhecimento da instalação.

Refactor:

  • Otimização dos logs da tabela request_log na tabela vb_compiled_log.
  • Otimização de acesso ao banco com o cálculo dos dias de vencimento.
  • Refatoração e limpeza de códigos não utilizados.
  • Padronização das ações de finalização de chamadas na rota /end-calls.
  • Padronização de retorno para o asterisk. Todas as rotas devem retornar a variável status=ok.

Documents: Atualização do README.ME.

v1.1.1​

20/10/2020 - Commit: b586795

Hotfix: Correção dos minutos no registro das promessas.

v1.1.2​

20/10/2020 - Commit: 65d045c

Hotfix: Define valores padrões para os recursos de gravar decisões e ações automáticas.

v1.1.3​

28/10/2020 - Commit: 2405cd3

Hotfix: Atualização do conjunto de áudios do robô para eliminar nome errado.

v1.1.4​

23/12/2020 - Commit: ad1a52f

Hotfix: Seleção redundante de crons a serem executadas, tratando as duplicatas.

v1.1.5​

28/12/2020 - Commit: 36073c9

Hotfix: Campo do início da execução das crons iniciado automaticamente, quando nulo.

v1.1.6​

22/02/2021 - Commit: 4930fc4

Hotfix: Correção na validação de campos inteiro e string.

v1.1.7​

23/03/2021 - Commit: 00cefc8

Hotfix: Tratamento de dígito inválido no DMTF.

v1.1.8​

08/04/2021 - Commit: 7d91002

Hotfix: Inclusão da variável DATA4 (e_data4) na verbalização humanizada do robô.

v1.1.9​

09/04/2021 - Commit: 51bf44f

Hotfix: Inclusão da data de hoje na validação.

v1.1.10​

12/05/2021 - Commit: ebd1a6a

Hotfix: Melhora no tratamento de erro das funções de finalização de chamada e tratamento da função de gravar decisões intermediárias.

v1.2.0​

14/06/2021 - Commit: 96d2b94

Feature: Disponibiliza rota de fornecimento de logs de reconhecimento do robô.

Refactor: Refatoração de códigos.

v1.2.1​

15/06/2021 - Commit: 87acdc0

Hotfix: Inclusão da variável VALOR4 (e_monetario4) na verbalização humanizada do robô.

v1.3.0​

24/06/2021 - Commit: bd7cc43

Feature:

  • Adicionado integração dinâmica (requestContext) suportando Tivea e Wedoo.
  • Adição do contexto de confirmação de CPF (cpfContext).
  • Adição do contexto de NPS por dígito (npsContext).
  • Adição do tempo máximo de ligação do robô. Padrão: 6 minutos. Hotfix: Correção no envio de variáveis na confirmação de campos do lead (confirmationContext). Refactor:
  • Correção na impressão de requisições do Asterisk para auxiliar no debug.
  • Eliminação de contexto depreciado: dtmfMultimaisContext
  • Eliminação de módulos depreciados
    • PBX
    • CronJob

v1.3.1​

15/06/2021 - Commit: 43febcc

Hotfix: Correção na tabulação automática do parceiro Tivea utilizado com o contexto de request.