Central telefônica open source · agentes de IA · na sua VPS
A ligação não é o produto. É o começo de um trabalho.
O DeskVoice atende o telefone com um agente de IA que executa ferramentas durante a conversa, pede aprovação a uma pessoa quando precisa, transfere quando é o caso e deixa tarefas rodando depois que a chamada termina.
- Licença MIT
- Sem versão paga
- Banco de dados na sua VPS
v0.2.0 Fundação em construção. Veja até onde cada capacidade foi provada.
- Marina, na linha
Tenho uma limpeza de pele marcada para quinta às duas da tarde e preciso remarcar. E queria saber se consigo um desconto fechando o pacote de três sessões.
- Lia, agente da recepção
Claro, Marina. Vou deixar o pedido de remarcação anotado para a recepção confirmar o novo horário com você.
- notify_human
A recepção recebe o aviso no painel: remarcar de quinta às 14h para sexta de manhã.
- Lia
Sobre o desconto no pacote, eu não posso decidir sozinha.
- request_approval
“Posso dar 10% de desconto no pacote de três sessões?” Uma pessoa responde pelo painel, com prazo, enquanto a Marina espera na linha.
- Lia
Obrigada por aguardar, Marina. Já tenho a resposta da responsável.
- transfer_to_human
A ligação vai para a recepção. O resumo do que já foi dito fica no painel.
- depois da chamada
Resumo, avisos e tarefas de acompanhamento entram na fila. O custo fica registrado na linha do tempo.
pnpm install && pnpm demo a executa no seu computador, sem chave de IA e sem operadora.O problema
Um robô que atende bem e não faz nada é uma secretária eletrônica cara.
Quando alguém liga para uma empresa, quer que algo aconteça: marcar, remarcar, saber onde está o pedido, falar com a pessoa certa. A conversa por voz é só a parte audível.
O trabalho de verdade é o que acontece durante e depois: consultar um sistema, avisar alguém, pedir uma autorização, registrar o que foi combinado, cumprir o combinado. O DeskVoice existe para esse resto. A tese inteira está em VISION.md.
Como trabalha
Durante a ligação, com uma pessoa no meio, e depois que desliga.
- durante
O agente executa ferramentas no meio da conversa
Avisar alguém, pedir aprovação, transferir, chamar um webhook. Cada ferramenta é um arquivo, e cada uso vira um evento na linha do tempo da chamada.
Ver as ferramentas no código - no meio
Uma pessoa decide, sem a ligação cair
O agente pergunta “posso dar este desconto?” a alguém de verdade enquanto o cliente espera. Se ninguém responder no prazo, vale a resposta padrão que o dono definiu.
Ler a doutrina do sistema vivo - depois
O trabalho continua quando a chamada termina
Resumo, avisos e tarefas de acompanhamento entram numa fila e são executados por um processo separado. Toda chamada termina com um desfecho registrado.
Ver as rotinas no código
Silêncio é defeito
Se o modelo de IA cai, quem ligou ouve um sinal de aviso e é transferido, ou a chamada é encerrada. A tela mostra o que houve. Uma mensagem gravada no lugar do sinal ainda não existe: está em SECURITY.md.
Custo à vista
Cada chamada mostra quanto custou, e cada agente tem um teto de custo e de duração por chamada.
Configuração tem tela
Tronco, número, chave de IA e agente se configuram pelo painel. Nenhum recurso exige SSH para ser ligado.
O caminho de uma ligação, da operadora ao painel, está em ARCHITECTURE.md.
Provas
Até onde cada capacidade foi provada.
O DeskVoice é uma fundação recém-lançada. Para ninguém instalar esperando o que ainda não foi provado, o repositório mantém esta tabela. O site a lê do README: quando uma prova muda lá, muda aqui.
Provado numa instalação real 4
Rodou numa VPS de teste, do jeito e até o ponto que a linha descreve.
- Instalar numa VPS pelo kit de instalaçãoProvado numa instalação real, sem domínio
- Painel e voz do navegador pelo mesmo endereço, a entrada única do CaddyProvado numa instalação real, sem domínio
- Conversar por voz com o agente pela tela "Falar com o agente"Provado numa instalação real com o motor OpenAI Realtime, por um cliente de teste que faz o papel do navegador com fala gravada. Ainda não por um navegador com microfone
- Motor de voz OpenAI RealtimeProvado numa instalação real, na conversa pela tela "Falar com o agente" descrita acima
Provado em simulação 5
Coberto por teste de ponta a ponta com o motor simulado, que percorre a chamada inteira sem operadora e sem chave.
- Conversa da chamada: saudação, falas, ferramentas, encerramentoProvado em simulação
- Avisar um humano e pedir aprovação no meio da chamada, com prazo e resposta padrãoProvado em simulação
- Linha do tempo de cada chamada, evento por evento, com custoProvado em simulação
- Tarefas depois que a ligação termina (resumo, avisos, tarefas de acompanhamento)Provado em simulação
- Teto de custo e de duração por chamadaProvado em simulação
Testado, sem prova completa 4
Fora das três categorias do README. Leia a linha: ela diz o que foi testado e o que falta.
- Painel web em português, inglês e espanholRotas testadas com banco real; telas conferidas em português
- Conectar um WhatsApp por QR Code (Configurações → WhatsApp) e enviar por ele os avisos e as mensagens do agenteO serviço não vem instalado: instala-se pela tela, e custa cerca de 360 MB de memória e 3,2 GB em disco (medido). Rotas testadas com banco real e com um serviço de WhatsApp falso; instalar e remover pelo agente, com Docker simulado. Ainda sem prova com um número real: nenhum QR Code foi lido e nenhuma mensagem saiu. É um cliente não oficial do WhatsApp; veja o guia
- Atualização, checagem de saúde, backup e restauraçãoTestados com Docker simulado; backup e restauração conferidos à mão num Postgres real
- Atualizar pela tela (Configurações → Versão e atualização), por um agente do kit no servidorRotas testadas com banco real; agente e agendamento testados com Docker e systemd simulados. Ainda sem prova numa instalação real
Aguardando prova real 7
Implementado e testado contra servidores falsos, mas ainda sem uma ligação feita por operadora real.
- Painel com domínio e HTTPSAguardando prova real
- Atender ligação recebida por uma linha de operadora (tronco SIP)Aguardando prova real
- Transferir a ligação para uma pessoaAguardando prova real (o caminho no Asterisk foi conferido, sem operadora)
- Motor de voz Gemini LiveAguardando prova real (testado contra servidor falso, sem chave)
- Enviar WhatsApp durante a chamada, por conectorAguardando prova real
- Chamar um webhook durante a chamadaAguardando prova real (sem um receptor de verdade)
- Ligações feitas pelo agenteAguardando prova real, e desligado de fábrica. Veja "Ligações de saída", abaixo
Fez a primeira ligação real? Conte como foi numa issue: é a contribuição mais valiosa neste momento. O que ainda não existe e o que está aberto para a comunidade está no roadmap.
Instalação
Uma linha na sua VPS. O resto é pela tela.
curl -fsSL https://raw.githubusercontent.com/DeskLabs-OpenSource/DeskVoice/main/install/get.sh | bashO instalador confere a máquina e a rede, faz poucas perguntas, gera todos os segredos, sobe os serviços, cria o primeiro usuário e mostra o endereço do painel. Você não edita variável de ambiente à mão.
Abrir o guia de instalação- Uma VPS com Ubuntu 22.04 ou mais novo. Qualquer VPS com Docker serve.
- Um domínio apontado para a VPS. Opcional para testar.
- Um tronco SIP com um número, da operadora de sua escolha.
- Uma chave de IA de voz: Gemini ou OpenAI.
- Ainda sem nada disso?
pnpm install && pnpm demoroda uma chamada inteira no seu computador.
Custos
O software é gratuito. Você paga três coisas, direto ao fornecedor.
- 01
A VPS
O servidor onde o DeskVoice e o banco de dados rodam. É seu.
- 02
A telefonia
Depende do tronco que você contratar com a operadora.
- 03
A IA de voz
Paga por uso ao provedor do modelo. O painel mostra o custo medido de cada chamada.
Não existe versão paga nem recurso travado. Como estimar a sua conta está em docs/guides/custos.md.
Limites
Ligações de saída nascem desligadas.
O agente pode fazer ligações, e o recurso vem desligado. Quem é dono da instalação liga pela tela, depois de declarar a finalidade. O DeskVoice não foi feito para disparo em massa e não aceita contribuição que facilite isso. Leia o guia de conformidade no Brasil antes de ligar o recurso.
- Teto diário de chamadas por linha
- Lista de não ligar
- Janela de horário
- Limite de tentativas por pessoa
- Aviso de gravação no início da chamada
Quem constrói
Construído em público, com a comunidade.
O DeskVoice foi criado por Rafael Melgaço e é irmão do DeskcommCRM. Um não precisa do outro. Crédito é regra: quem contribui mantém a autoria do commit e tem o nome nas notas da versão.
Perguntas frequentes
O que costumam perguntar antes de instalar.
Preciso saber programar para instalar?
Programar, não. Você precisa abrir um terminal no servidor e colar um comando; o instalador faz poucas perguntas e não pede edição de arquivo. Se você usa um assistente de código, ele conduz a instalação pela skill deskvoice-instalar. O caminho completo está em Instalar.
Preciso do DeskcommCRM para usar o DeskVoice?
Não. São sistemas independentes. O motivo da separação está em uma decisão registrada.
Já dá para atender ligações de uma operadora?
O caminho está implementado e testado contra um Asterisk de verdade, mas a ligação por operadora real ainda aguarda prova. A tabela de provas mostra o estado de cada capacidade.
Onde ficam os dados das ligações?
Num Postgres dentro da sua VPS, e o sistema não depende de serviço de nuvem para subir. Durante a chamada, a conversa passa pelo provedor de IA que você contratou, sob os termos dele. Veja o guia de conformidade no Brasil.
O DeskVoice grava o áudio das ligações?
Ainda não. A fundação guarda a transcrição e a linha do tempo de eventos. Gravação com retenção configurável está no roadmap, sem data.
Posso instalar para clientes e cobrar por isso?
Pode. A licença é MIT, e há um guia para quem implementa.