Para usar a telefonia TotalVoice no Mavibot, você precisa obter um Access Token no painel da TotalVoice e inseri-lo nas configurações de integração. A TotalVoice é um serviço de telefonia brasileiro que agora faz parte do grupo Zenvia.
O bot pode conectar um funcionário a um cliente, transferir e encerrar chamadas, recuperar gravações de chamadas e enviar eventos de chamada para a conversa. A TotalVoice também fornece o custo de cada chamada.
Obtendo os dados necessários
- Crie uma conta Zenvia Voice e adicione créditos ao seu saldo.

- Faça login no painel. No canto inferior esquerdo da tela principal, ao lado de Access Token, clique no ícone de copiar.
Access Token é a única chave que fornece acesso a toda a sua conta, incluindo fazer chamadas pagas. Não o publique nem o compartilhe fora da sua empresa.
Conexão
Nas configurações de telefonia, selecione TotalVoice e insira:
- Access Token — a chave do painel da TotalVoice.
-
Número de exibição para o cliente — o número que o cliente verá, no formato
+551140028922. Este campo é opcional. Se deixado vazio, o número padrão da sua conta TotalVoice será usado.


Após salvar, uma URL de notificação aparecerá na página de conexão. Você precisa adicioná-la ao painel da TotalVoice — veja a próxima seção.
A integração agora está conectada. Para desconectá-la, limpe o campo Access Token e salve as configurações.
Configuração de notificações
Diferente de outras integrações de telefonia, a URL de notificação deve ser configurada manualmente porque a TotalVoice não fornece uma maneira para o Mavibot fazer isso automaticamente.
- Copie a URL mostrada na página de conexão.

- No painel da TotalVoice, abra Desenvolvedores → Configurações da API.
- Cole a mesma URL em todos os três campos de webhook:
- Status Tempo Real — mudanças de status da chamada enquanto ela está em andamento;
- Chamada - Fim — fim de uma chamada;
- DID - Fim de Chamada — fim de uma chamada recebida no seu número.
⏳ As notificações podem levar até 20 minutos para começar a chegar após salvar as configurações. Esta é uma limitação da TotalVoice. Se nenhum evento aparecer na conversa imediatamente após a configuração, basta aguardar.
Se você regenerar seu Access Token, a URL de notificação mudará. Salve o novo token no Mavibot e atualize a URL no painel da TotalVoice, caso contrário, os eventos de chamada pararão de chegar.
Funcionários
Nas configurações do funcionário, insira o número TotalVoice do funcionário.



Você pode usar um ramal interno (
ramal, geralmente 3–4 dígitos) ou um número de celular comum no formato+5511987654321. Esta é uma das poucas integrações onde o formato é flexível: se o funcionário não usa um ramal de PABX interno, insira o número do celular dele.
Ligando do cartão do cliente
Um botão de chamada aparecerá ao lado do número de telefone do cliente no cartão da conversa. A TotalVoice primeiro liga para o funcionário, e somente depois que o funcionário atende, ela liga para o cliente.

Esta ordem é intencional: o cliente não ouvirá silêncio na linha porque o funcionário já está conectado quando o telefone do cliente começa a tocar.
Funções da Calculadora
Chamada de Funcionário para Cliente
totalvoice_employee_call(client_phone, employee_number, bina, gravar_audio)
Parâmetros:
-
client_phone— o número de telefone do cliente no formato+5511987654321. Obrigatório. -
employee_number— o número do funcionário: um ramal interno ou um número de celular. Obrigatório. -
bina— o número que o cliente verá. Opcional. Se omitido, o número das configurações de conexão é usado. -
gravar_audio— se deve gravar a chamada. Opcional. A gravação está habilitada por padrão.
Transferir Chamada
totalvoice_transfer_call(number, call_id, leg)
Parâmetros:
-
number— o número para o qual a chamada deve ser transferida. Obrigatório. -
call_id— o identificador da chamada. Opcional. Se omitido, a chamada mais recente do cliente é usada. -
leg— qual lado da chamada transferir:destino(o cliente, valor padrão) ouorigem(o funcionário).
Encerrar Chamada
totalvoice_hangup_call(call_id)
Parâmetros:
-
call_id— o identificador da chamada. Opcional. Se omitido, a chamada mais recente do cliente é usada.
Obter Link de Gravação da Chamada
totalvoice_get_record_link(call_id)
Normalmente, o link de gravação é recebido automaticamente com o evento de fim de chamada. Esta função é útil se a notificação não foi recebida ou se você precisa de uma gravação de uma chamada mais antiga.
Parâmetros:
-
call_id— o identificador da chamada. Opcional. Se omitido, a chamada mais recente do cliente é usada.
Callbacks Durante uma Chamada
Conforme a chamada progride, callbacks são enviados para a conversa no seguinte formato:
totalvoice_call_event atendida
Eventos possíveis:
| Evento | Quando é acionado |
|---|---|
chamando |
A chamada está tocando |
preparando |
A linha está sendo preparada para conexão |
atendida |
A chamada foi atendida |
sem_resposta |
Sem resposta |
ocupado |
Ocupado |
cancelada |
A chamada foi cancelada |
congestionado |
Congestionamento na rede da operadora |
falha |
A chamada não pôde ser completada |
nao_existe |
O número não existe |
Os nomes dos status são recebidos em português porque esses são os nomes de status usados pela TotalVoice.
Um cenário típico de "sem resposta → enviar uma mensagem no mensageiro" pode ser construído verificando a variável totalvoice_call_answered.
As notificações de status de chamada são enviadas no máximo uma vez a cada 2 segundos por chamada. Para chamadas muito curtas, alguns status intermediários podem não chegar a tempo. O evento de fim de chamada é sempre enviado.
Variáveis do Cliente Após uma Chamada
| Variável | Valor |
|---|---|
totalvoice_call_id |
Identificador da chamada |
totalvoice_call_status |
Status da chamada conforme definido pela TotalVoice |
totalvoice_call_answered |
1 — a chamada foi atendida, 0 — não foi |
totalvoice_call_duration |
Duração da chamada em segundos |
totalvoice_call_price |
Custo da chamada em reais brasileiros |
totalvoice_hangup_reason |
Motivo do fim da chamada |
totalvoice_record_link |
Link para a gravação da chamada |
Duração significa tempo real de conversa, excluindo o tempo gasto esperando a chamada ser atendida. Lembre-se de que a TotalVoice calcula a cobrança de forma diferente: o tempo faturável é arredondado para o próximo minuto inteiro, então uma chamada de 24 segundos será cobrada como um minuto. Para verificar cobranças, use o relatório de faturamento no painel da TotalVoice em vez desta variável.
Gravações de Chamadas
A gravação é configurada separadamente para cada chamada e está habilitada por padrão. Você pode desativá-la para uma chamada específica usando o parâmetro gravar_audio na função de chamada.
Quando a chamada termina, o link de gravação é recebido com o evento e salvo na variável totalvoice_record_link. Você não precisa solicitá-lo separadamente.
A gravação de chamadas é regulamentada por lei. No Brasil, está sujeita aos requisitos da LGPD: o cliente deve ser informado de que a chamada está sendo gravada, e deve haver uma base legal para armazenar os dados. O proprietário da conta TotalVoice é responsável por cumprir esses requisitos.
Solução de Problemas
| Erro | Causa / Solução |
|---|---|
| A chamada não é criada e a mensagem de erro está em português | A TotalVoice retorna o motivo como texto. As causas mais comuns são saldo insuficiente ou formato de número de telefone inválido. |
| As chamadas funcionam, mas nenhum callback aparece na conversa | A URL de notificação não foi adicionada ao painel da TotalVoice, não foi adicionada a todos os três webhooks, ou 20 minutos não se passaram desde a configuração. |
| Tudo funcionava antes, mas os eventos pararam de repente | O Access Token foi regenerado, o que mudou a URL de notificação. Salve o novo token no Mavibot e atualize a URL no painel da TotalVoice. |
| "Número TotalVoice não especificado" | O número TotalVoice do funcionário está faltando nas configurações dele. |
Status nao_existe
|
O número do cliente não existe. Verifique o formato. Números de celular brasileiros usam +55 + DDD + 9 dígitos. |
Status congestionado
|
Há um problema com a rede da operadora e não está relacionado ao número do cliente. Se o problema persistir, entre em contato com o suporte da TotalVoice. |
| Sem link de gravação | A chamada foi criada com gravação desativada, ou a chamada não foi atendida. |