Manual do BitVoice
Sumário
- Parte 1. Introdução
- 1. Introdução
- 2. Quão maduro é cada parte
- 3. Extensões
- 4. Conectando telefones
- 5. Telefones Skinny e gateways MGCP
- 6. Cartões de telefonia
- 7. Troncos
- 8. Roteamento de chamadas
- 9. Conjuntos de PIN
- 10. Pesquisa de ID do chamador
- 11. Chamadas de emergência
- 12. Locais e 911 de escritório
- 13. Saúde
- 14. Configurações
- 15. As telas no seu idioma
- Parte 2. Para onde as chamadas vão
- 16. Fluxo de chamada
- 17. Grupos de toque
- 18. Filas
- 19. Discador de saída
- 20. Sons: prompts, idiomas e música de espera
- 21. Menus (atendimento automático)
- 22. Diretório de discagem por nome
- 23. Discagem (DISA)
- 24. Robôs de voz (AudioSocket)
- 25. Toggles de dia/noite
- 26. Cronogramas
- 27. Scripts (JavaScript e Lua)
- 28. Recepcionista de IA, triagem de correio de voz e perguntas
- 29. Caixa de correio de voz
- 30. Chamadas de retorno
- 31. Links de chamada e chamada de site
- Parte 3. Chamadas diárias
- 32. Códigos de recurso, encaminhamento e discagens rápidas
- 33. O portal do funcionário
- 34. Salas de conferência
- 35. Página e alto-falantes
- 36. Hot desking
- 37. Chamadas de hotel e despertador
- 38. Contatos em todos os telefones
- 39. Calendários e não perturbe
- 40. Aplicativos móveis
- 41. Chamadas de vídeo
- 42. Fax: envio e recebimento, máquinas de fax e telefones analógicos
- 43. Caixa de entrada: chat da web, WhatsApp e Messenger
- 44. Texto de negócios (SMS)
- 45. Transferência de informações
- Parte 4. Clientes e visão geral
- 46. Chamadas ao vivo
- 47. Histórico de chamadas
- 48. Linha do tempo do cliente
- 49. CRM: cartões de chamador e registro de chamadas
- 50. Percepção de chamada para supervisores
- 51. Gravação de chamada e pagamentos com cartão
- 52. Consentimento de gravação
- 53. Qualidade da chamada
- 54. Custos e orçamentos
- 55. Reputação do ID do chamador e chamadas com marca
- 56. Proteção contra spam e STIR/SHAKEN
- Parte 5. Executando o BitVoice
- 57. Administradores
- 58. Login único
- 59. Diretório da empresa (Active Directory e LDAP)
- 60. Segurança
- 61. Alterações, backups e importação
- 62. Atualizações
- 63. Vários servidores como um sistema de telefone
- 64. Onde os dados são mantidos (SQLite ou PostgreSQL)
- 65. Hospedando outras organizações
- 66. Codecs e som
- 67. Microsoft Teams (Roteamento Direto)
- 68. Importar
- 69. Configuração como código
- 70. Compatibilidade com Asterisk (AMI, ARI e AGI)
- 71. Assistentes de IA (MCP)
- 72. Arquivo
- 73. Retenções legais
- 74. Métricas: Prometheus, OpenTelemetry, Grafana, SNMP e registros de chamadas
- 75. Gerador de chamadas
- 76. Rastreamento de SIP
- Parte 6. Segurança pública: o laboratório de rastreamento
Introdução
De uma nova instalação a um sistema de telefone funcionando: extensões, telefones, uma empresa de telefonia, para onde as chamadas vão, chamadas de emergência a partir de seus escritórios e como saber se tudo está pronto.
Introdução
/O BitVoice é um sistema de telefone completo em um programa: a central que os telefones se conectam, os menus e filas que os chamadores passam, correio de voz, gravação, salas de conferência, faxes e as conexões com as empresas de telefone. Tudo é configurado no navegador, nas telas que este manual descreve. Não há arquivo de configuração para editar e nada mais para instalar.
O que você precisa
- Um computador para executá-lo: um servidor de escritório pequeno, uma máquina virtual, uma instância na nuvem ou, para uma primeira olhada, o seu próprio laptop. Linux, macOS e Windows funcionam. Um Raspberry Pi 4 executa um escritório pequeno.
- Telefones: telefones de mesa da Yealink, Poly, Grandstream ou Snom são configurados automaticamente; qualquer outro telefone SIP ou softphone funciona com as suas próprias configurações; e todos os navegadores são um telefone também.
- Um tronco (uma conta com uma empresa de telefone) para chamar números externos e ser chamado. Você pode começar sem um: extensões chamam umas às outras e o teste de eco.
O primeiro início
Inicie o BitVoice e abra o endereço que ele imprime (em uma área de trabalho, ele abre o navegador em si). A interface web é HTTPS apenas, neste computador também. Até que você instale um certificado próprio (Configurações, Certificado), o BitVoice usa um que ele mesmo criou, então o navegador avisa uma vez: escolha continuar para o site. O assistente de configuração pergunta quatro coisas: o nome e o país da organização, a senha do primeiro administrador, as primeiras extensões e a sua empresa de telefone, se você tiver uma. O país define os números de emergência, os tons que os chamadores ouvem e a forma como os números de telefone são escritos.
A primeira hora
- Extensões: uma por pessoa ou mesa. Cada uma tem um número e uma senha SIP. Abrir Extensões (capítulo 3)
- Telefones: conecte um telefone de mesa, um softphone ou o telefone do navegador a cada extensão. Abrir Telefones (capítulo 4)
- Tronco: a conta da sua empresa de telefone, para que você possa chamar números externos e ser chamado. Abrir Troncos (capítulo 7)
- Roteamento de chamadas: para onde as chamadas de fora vão (uma pessoa, um grupo de toque, um menu), e qual tronco as chamadas externas usam. Abrir Roteamento de chamadas (capítulo 8)
- Saúde informa o que ainda está faltando, as chamadas de emergência primeiro. Abrir Saúde (capítulo 13)
Em seguida, faça uma chamada de teste: de qualquer telefone, discar *43, o teste de eco. Você ouve a si mesmo de volta, o que prova que o som funciona nos dois sentidos.
Instalando em um comando
Em um servidor Linux (Ubuntu, Debian, RHEL, Fedora, Alpine com systemd) ou um Mac:
curl -fsSL https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.sh | sh
No Windows, no PowerShell:
irm https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.ps1 | iex
Baixa a versão mais recente para o computador, verifica-a contra as somas SHA-256 da versão e a assinatura de lançamento da BioDream (com OpenSSL 3, ou com o ssh-keygen do OpenSSH, que o Windows 10 e 11, macOS e Ubuntu 20.04 possuem; o ssh-keygen verifica lançamentos a partir da v0.1.14), e instala-a como um serviço que inicia sozinho:
- Linux:
/usr/local/bin/bitvoice, um usuário do sistemabitvoice, dados em/var/lib/bitvoice, o serviço systemdbitvoicecom a interface web na porta 443. Quando o ufw ou firewalld estiver ativado, ele abre as portas 443, SIP (5060, 5061) e as portas de áudio das chamadas (10000 a 20000 UDP). Ele imprime o endereço para abrir e o código de configuração que o assistente pede de outro computador. - macOS: BitVoice na pasta Aplicativos (
~/Applications/BitVoice.app), iniciado quando você faz login, a interface web na porta 8443, dados em~/Library/Application Support/BitVoice(aberto apenas para você) e logs em~/Library/Logs/BitVoice(bitvoice.log, mantido abaixo de 10 MB). Abra o BitVoice a partir do Launchpad ou Spotlight para acessar a interface web; quando ele foi interrompido, isso o inicia novamente. Ele é executado sobcaffeinate, para que o Mac não vá para o modo de suspensão enquanto o BitVoice estiver em execução: um Mac em modo de suspensão não atende chamadas, e até mesmo seus curtos períodos de manutenção em modo de suspensão param tudo por vários segundos. A tela ainda pode desligar. Execute manualmente, usecaffeinate -i -s ./bitvoicepara o mesmo. Para um Mac que atende chamadas enquanto ninguém está conectado, instale comsudo(curl -fsSL https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.sh | sudo sh): então o BitVoice está em/Applications, inicia com o Mac, executa como um usuário oculto próprio (_bitvoice), serve a interface web na porta 443, mantém seus dados em/Library/Application Support/BitVoicee seus logs em/Library/Logs/BitVoice, e o firewall do Mac, quando ativado, permite que ele aceite conexões. Um dos dois por Mac: o instalador recusa o outro enquanto um estiver presente. Quando o firewall do Mac estiver ativado, um BitVoice instalado para você pede uma vez se pode aceitar conexões de entrada: permita, para que os telefones possam se conectar. Se algo já estiver usando a porta, o instalador nomeia e para (escolha outro comBITVOICE_HTTPS=:8444).sh install.sh --uninstall(comsudopara o próprio Mac) remove e mantém os dados;--purgeremove os dados e logs também. Testado no macOS 26 (Apple silicon), instalado para uma pessoa: instalado, assinatura verificada com o próprio ssh-keygen do Mac, uma segunda inicialização nos mesmos dados recusada, de volta após o programa ser morto, iniciado novamente a partir do aplicativo, atualizado no local, um programa alterado recusado, uma porta em uso recusada, desinstalado mantendo os dados, reinstalado neles e purgado com nada deixado. A instalação para o Mac inteiro (sudo) é testada em cada alteração nas máquinas macOS do GitHub (Apple silicon): executando como_bitvoicena porta 443, uma instalação de usuário ao lado recusada, de volta após o programa ser morto, atualizado, purgado com nada deixado (o usuário oculto também). Os Macs Intel não foram testados ainda. - Windows: como administrador,
C:\Program Files\BitVoice, iniciado com o Windows, dados emC:\ProgramData\BitVoice, e uma regra de firewall para redes privadas e de domínio; caso contrário, para você apenas, iniciado quando você faz login. Ele funciona no Windows PowerShell 5.1 (o que o Windows Server tem) e no PowerShell 7, e no 5.1 iniciado de dentro do 7. O BitVoice escreve seu log embitvoice.logna pasta de dados (mantido abaixo de 10 MB, a parte mais antiga embitvoice.log.1), e o instalador imprime o código de configuração que o assistente pede de outro computador. O Windows chama uma nova Wi-Fi ou rede de Pública até ser informado de outra forma, e a regra de firewall permite que nada entre lá: para uma rede doméstica ou de escritório, o instalador diz como torná-la Privada (Configurações, Rede e internet, Propriedades da rede); para um servidor de nuvem, ele imprime a regra para adicionar (abrir as portas no firewall do provedor também). Instalado como administrador, a pasta de dados é legível apenas por administradores (ela contém o banco de dados e as chaves), e o menu Iniciar do BitVoice abre a interface web; instalado para você, o menu Iniciar inicia o BitVoice, ou o abre quando ele já estiver em execução. De qualquer forma, ele está em Configurações, Aplicativos, Aplicativos instalados, que o remove e pergunta se deve remover seus dados também. Testado no Windows 11 (como administrador e não) e no Windows Server 2022 na Amazon EC2: instalado, acessado de fora, executado novamente após uma reinicialização. - Testado em: Ubuntu 24.04 e 20.04, Debian 12 e Fedora 42 (cada um com systemd): instalado, assinatura verificada, uma segunda inicialização nos mesmos dados recusada, de volta após o programa ser morto, atualizado no local, um programa alterado recusado, desinstalado mantendo os dados, reinstalado neles e purgado com nada deixado.
- Linux em um servidor de nuvem: o endereço que ele imprime é o próprio endereço privado da máquina; o instalador diz isso. Abra o servidor por seu endereço público ou nome, com as portas 443, SIP e áudio abertas no firewall do provedor.
Execute o mesmo comando novamente para atualizar (ou use Atualizações (capítulo 62)). sh -s -- --version v0.1.5 (após o pipe) escolhe uma versão; --uninstall remove o programa e o serviço e mantém os dados, --purge remove os dados também. No Windows, salve o script e execute .\install.ps1 -Version v0.1.5, -Uninstall ou -Purge, ou remova em Aplicativos instalados. Para um servidor mantido fora da internet, copie o arquivo da versão e SHA256SUMS para uma pasta e defina BITVOICE_FROM para ele.
Onde ele é executado
BitVoice é executado em Linux, macOS e Windows.
| Sistema | Como iniciá-lo | Onde estão seus dados |
|---|---|---|
| Linux | ./bitvoice (ou o serviço systemd na versão) | ~/.config/BitVoice |
| macOS | ./bitvoice | ~/Library/Application Support/BitVoice |
| Windows | clique duplo em bitvoice.exe | %APPDATA%\BitVoice |
No Windows, mantenha a janela aberta enquanto utiliza o BitVoice (fechá-la pára o BitVoice), e quando o Windows perguntar se pode utilizar a rede, permita redes privadas para que os telefones possam se conectar. -data coloca os dados em qualquer outro local; -https e -sip escolhem os endereços e portas; -log FILE também escreve tudo o que imprime para um ficheiro, para um computador onde ninguém vê a sua janela.
As portas que ele usa
| Porta | Para que |
|---|---|
| 5060 UDP e TCP | SIP: telefones e troncos |
| 5061 TCP | SIP sobre TLS (sinalização criptografada) |
| 4569 UDP | Troncos IAX2, apenas após configurar um |
| 1720 TCP | Troncos H.323, apenas após configurar um |
| 2000 TCP | Telefones Skinny (SCCP), apenas quando ativado |
| 2727 UDP | Gateways MGCP, apenas quando ativado |
| 10000–20000 UDP | Som das chamadas (RTP), configurado em Configurações |
| 8443 TCP | Esta interface web, apenas HTTPS (HTTP simples é redirecionado para HTTPS) |
Se outro sistema de telefonia já estiver usando a porta 5060, o BitVoice usa a próxima porta livre e a tela de Saúde informa sobre isso.
Tudo na interface web
Cada configuração tem uma tela, e cada tela tem um capítulo aqui. Nada precisa de um arquivo de configuração, uma linha de comando ou uma ferramenta adicional. Para automação, as mesmas telas são uma API REST, e a configuração pode seguir um arquivo no Git (Configuração como código (capítulo 69)), mas nenhuma delas é necessária.
Para que serve o BitVoice
BitVoice é, em primeiro lugar, um sistema de telefonia para escritórios e centros de contato, e um serviço de telefonia hospedado para provedores: tudo nas primeiras cinco partes deste manual. O perfil de ponto de atendimento de emergência 911, a console de despacho de rádio e os Serviços Centrais NG911 são uma pista de laboratório e parceiro de design separada (Segurança pública (capítulo 77)): elas estão fora do menu até serem ativadas nas Configurações e não são certificadas para uso ao vivo. Chamadas de emergência de seus próprios telefones não fazem parte dessa pista; elas funcionam em todos os sistemas de telefonia desde o início.
Encontrando o seu caminho
- Pressione ⌘K (Ctrl+K) em qualquer lugar para saltar para uma ecrã, ou digite o nome ou número de uma extensão para abri-la.
- Num telefone, o menu está por trás do botão ☰ no canto superior esquerdo (e a pesquisa ao lado, no canto superior direito); escolher uma página fecha-a novamente.
- Cada ecrã tem um link Ajuda no canto superior direito que abre o seu capítulo deste manual.
- Alterações mantém todas as versões da configuração: pode ver o que foi alterado e desfazer.
- Três temas (Meia-Noite, Escuro e Claro) estão no pé do menu.
Quão maduro é cada parte
Quão longe cada parte foi comprovada, claramente. Testado em campo: executado contra sistemas reais sobre uma rede real (Amazon EC2, a internet, serviços reais de provedores). Verificado contra uma referência: testado contra uma implementação independente ou os próprios dados do padrão. Testado por software: apenas os testes e testes de navegador do BitVoice, não ainda com equipamentos ou contas reais. Laboratório: partes de segurança pública, não certificadas.
| Área | Maturidade | O que se baseia |
|---|---|---|
| Troncos SIP: registro, chamadas para dentro e para fora, identificador de chamador, ocupado, teclas (RFC 4733) | Testado em campo | um carrier comercial, SIP.US (conta de demonstração, a partir do EC2): registro e chamadas para fora para a rede telefônica pública sobre UDP e sobre TLS com o certificado do carrier verificado; MOS 4.39, sem perda. Chamadas para dentro a partir da rede telefônica pública: T38Fax (chamadas de fax para o seu número, registro sobre UDP). Asterisk como o carrier através da internet no EC2; MOS 4.4. Kamailio 5.7 (registro com assinatura de digest sobre TLS, chamadas em ambos os sentidos, teclas) e FreeSWITCH 1.11 (TLS e SRTP, chamadas em ambos os sentidos, G.722 para G.711) como o extremo distante; MOS 4.39 |
| Telefones de mesa sobre SIP | Testado em campo | Asterisk como um telefone de mesa através da internet. Telefones de mão Yealink, Poly ou Grandstream reais não foram testados ainda |
| Telefone de navegador (WebRTC) | Testado em campo | de fora para o EC2; testes do navegador Chromium com som em ambos os sentidos |
| Dois servidores, um PostgreSQL, failover | Testado em campo | kill -9 e parada planejada no EC2: a chamada continua, a linha do provedor se move |
| Instalação de um comando | Testado em campo | Ubuntu 24.04 (x86, Arm), Debian 12, Amazon Linux 2023, Windows Server 2022, Windows 11 (como administrador e não, no PowerShell 5.1 e 7), Ubuntu 20.04 e Fedora 42 em contêineres, macOS 26 no Apple silicon (para uma pessoa, e com sudo para o whole Mac em CI); de volta após uma reinicialização |
| Capacidade | Testado em campo | 2.000 chamadas de uma vez, sem perda, MOS 4.41, em um 16-vCPU c7i.4xlarge (cerca de 10 vCPUs ocupados); 200 de uma vez em c7g.large, c7i.large, t4g.small, um M4 e o Lightsail nano. Em 2.000: jitter 4,0 ms para 95% das chamadas, maior lacuna entre pacotes 74 ms, maior pausa de coleta de lixo 4,2 ms |
| Migração do FreePBX (Importação) | Testado em campo | um backup real do FreePBX 17.0.33 (70 MB) importado inteiro; outros a partir dos próprios formatos do FreePBX |
| Transcrições de IA, resumos, recepcionista | Testado em campo | um modelo real por meio do OpenRouter |
| Fatos e resumos sem um modelo de linguagem | Testado em software | chamadas de 911 inventadas apenas: 23 de 43 fatos (53%) no conjunto selado, 3 fatos que ninguém esperava; 41/41 treinamento, hold-out 27/40 frio. Nunca medido em chamadas reais. |
| Fala para texto neste servidor (whisper) | Testado em campo no macOS e Linux | whisper-server 1.9.5 executado pelo BitVoice: em um Mac, e no Ubuntu no EC2 (x86-64), onde ele escreveu as transcrições de chamadas ao vivo e de correio de voz no campo de teste do aplicativo de telefone; downloads para cada plataforma construídos e testados em CI |
| Arquivamento para S3, segredos do AWS Secrets Manager | Testado em campo | AWS real, nosso próprio SigV4 |
| Monitoramento SNMP e armadilhas | Testado em campo | snmpwalk e snmptrapd do net-snmp |
| Let's Encrypt | Testado em campo | emite e renova o certificado da demonstração pública |
| Imagens de máquina (AWS) e configuração como código | Testado em campo | uma imagem do EC2 construída por deploy/cloud/build-images.sh a partir do Ubuntu 24.04: cada servidor a partir dela começa novo; deploy/terraform com OpenTofu 1.13 (criar, alterar, sem deriva, destruir). Imagens do Azure não tentadas |
| Troncos IAX2 | Verificado contra uma referência | Asterisk 23 |
| ICE completo atrás de NAT (cliente STUN e TURN) | Verificado contra uma referência | agente ICE do Chromium (candidatos de host e relé apenas), softphones JsSIP com a oferta do BitVoice, coturn 4.18 e o próprio servidor TURN do BitVoice como relés, nomes de host mDNS do Chromium resolvidos. Não tentado ainda a partir de um servidor atrás de um roteador NAT real |
| Reinicialização do ICE (um telefone mudando de rede durante uma chamada) | Verificado contra uma referência | Chromium reiniciando o ICE em uma chamada de telefone de navegador (BitVoice como ICE-lite e como um agente completo) e SIP.js 0.21 reiniciando por re-INVITE sobre SIP sobre WebSocket: novas credenciais em ambos os sentidos, um novo par de candidatos, som a cada meio segundo durante a reinicialização. Não tentado ainda em um telefone que realmente se move de Wi-Fi para uma rede móvel |
| Histórico de SIP e Diversion (chamadas encaminhadas) | Verificado contra uma referência | PJSIP do Asterisk 20 em ambos os sentidos: chamadas encaminhadas do Asterisk lidas pelo BitVoice, e encaminhamentos do BitVoice lidos pelo REDIRECTING() do Asterisk a partir do Histórico de Informações apenas e da Diversion apenas; entradas do RFC 7044 mantidas e estendidas em um encaminhamento. Não tentado ainda com um carrier ou Teams enviando-os |
| Diretório da empresa (LDAP, Active Directory) | Verificado contra uma referência | OpenLDAP 2.4 (StartTLS e LDAPS, 1.203 pessoas lidas por meio de paginação além do limite de 1.000, grupos, entrada) e Active Directory do Samba 4 (LDAPS, paginação além de 1.000, contas desabilitadas excluídas, grupos aninhados para grupos de chamada e funções). Não tentado contra o controlador de domínio do Windows Server da Microsoft |
| ARI (Asterisk REST Interface) | Verificado contra uma referência | cada operação do ARI publicado do Asterisk chamado e sua resposta verificada contra os campos necessários do modelo; ari-client 2.2.0, biblioteca JavaScript do Asterisk, lendo /ari/api-docs e executando um aplicativo |
| Salas de vídeo de todos (SFU, simulcast) e compartilhamento de tela | Verificado contra uma referência | Três navegadores Chromium em uma sala, cada um enviando três tamanhos (simulcast VP8) e recebendo os outros dois; tamanhos trocados em quadros-chave à medida que os azulejos crescem e diminuem. Câmeras e uma tela compartilhada (própria captura de tela do Chromium) em uma sala H.264. Não tentado ainda com Firefox ou Safari, sobre a internet, ou com mais de três câmeras; simulcast H.264 escolhe camadas pela ordem do navegador apenas. |
| AGI e FastAGI (Asterisk Gateway Interface) | Verificado contra uma referência | resposta de cada comando comparada com a do Asterisk 20.6 sobre FastAGI; um servidor FastAGI escrito com pyst2 executando uma chamada; áudio EAGI para um programa. Não tentado ainda com um IVR de produção |
| Assistentes de IA sobre MCP | Verificado contra uma referência | SDK oficial MCP TypeScript (1.32.2) como o cliente: ferramentas listadas e chamadas com um token de API sobre HTTP Transmissível (protocolo 2025-11-25), e sua entrada OAuth de ponta a ponta (descoberta, registro, PKCE, token, atualização); a página de consentimento no Chromium; a ponte stdio contra um servidor de teste. Não tentado ainda com Claude, ChatGPT ou outro assistente em si, que precisa de um servidor acessível pela internet com um certificado confiável. |
| Microsoft 365 e Google Workspace (contatos e calendários) | Testado em software | contra substitutos do Microsoft Graph (usuários, contatos da organização, calendário getSchedule, token de credenciais do cliente) e da API de Pessoas do Google, calendário freeBusy e token JWT-portador, escritos a partir de suas especificações publicadas; os substitutos verificam o que o BitVoice envia (a assinatura e as alegações do JWT, paginação, corpos de solicitação). Não tentado ainda com um locatário real do Microsoft 365 ou domínio do Google Workspace. |
| As telas em 14 idiomas | Testado em software | cada pedaço de texto que as telas mostram (cerca de 5.000, do código: texto JSX, strings e mensagens do servidor) traduzido por máquina pelo Llama 3.3 70B para 13 idiomas, 99% mantidos pelas verificações (os mesmos espaços reservados, endereços e códigos intocados); alemão desenhado por meio dos testes do navegador (entrada, menu, pesquisa, um formulário, de volta para o inglês). Não revisado por uma pessoa em nenhum idioma. |
| Troncos H.323 | Verificado contra uma referência | H323Plus 1.28 (seu simph323 reproduzindo e gravando arquivos WAV) no EC2: chamadas em ambos os sentidos com Fast Connect e G.711, cada extremo ouvindo o tom do outro, MOS 4.39; configuração de chamada também com o chan_ooh323 do Asterisk (cujo próprio som está quebrado no Asterisk 22) |
| SIP sobre WebSocket | Verificado contra uma referência | JsSIP e SIP.js |
| Codecs: GSM, G.726, iLBC, MP3 de música de espera | Verificado contra uma referência | ffmpeg, o programa de referência RFC 3951 e minimp3, amostra por amostra |
| Codecs: G.711, G.722, G.729, Opus, Speex | Verificado contra uma referência | G.711 e G.722 byte por byte e amostra por amostra com spandsp; decodificador G.729 amostra por amostra em todos os sete vetores de teste do Anexo A da ITU (bcg729 não é), seu codificador interfuncionando com bcg729 na mesma qualidade (G.729 não exige que os codificadores correspondam); pacotes Opus decodificados pelo libopus 1.6.1 e pacotes libopus decodificados como o libopus faz; pacotes Speex e som idênticos ao libspeex 1.2.1; chamadas Opus com o aplicativo Android |
| Codecs: AMR-NB, AMR-WB | Verificado contra uma referência, com uma lacuna conhecida | decodificador AMR-WB como o opencore-amr amostra por amostra, e nas sequências de teste TS 26.174 da 3GPP coincide com o decodificador da 3GPP em 167 de 198 e nunca está abaixo dele; codificador AMR-NB quadro por quadro com opencore-amr, mas seu decodificador está perto, não exato (cerca de 31 dB do opencore). Ambos vêm das bibliotecas goamr fixadas |
| Codecs transportados intocados: G.722.1 (Siren 7), G.722.1C (Siren 14), G.719, Codec2 | Testado em software | testes próprios: oferecidos com sua taxa de bits ou modo, respondidos, pacotes em ambos os sentidos byte por byte; não convertidos (nenhum código de referência gratuito que o BitVoice possa enviar para G.722.1 e G.719). Não tentado ainda com um sistema de sala real Polycom ou |
| ISDN PRI e BRI, T1/E1 | Verificado contra uma referência | libpri (do Asterisk), ambos os lados; e no EC2 por meio do driver de kernel DAHDI 3.4 real (duas spans ligadas juntas no kernel, chan_dahdi do Asterisk 20 como a empresa de telefone): chamadas em ambos os sentidos com números e nomes, todos os 23 canais de uma vez, MOS 4.39. Nenhum cartão físico ou linha tentada |
| MFC-R2, E&M | Verificado contra uma referência | OpenR2; tons MF por meio de nossos próprios testes. Nenhum cartão real ou linha tentada |
| SS7 (ISUP, MTP, conjuntos de links de vários links com troca) | Verificado contra uma referência | libss7 (biblioteca chan_dahdi do Asterisk), ITU e ANSI. Nenhum link de carrier real tentado |
| Fax (T.30, T.38) | Testado em campo | um carrier de fax, T38Fax (teste gratuito, a partir do EC2): BitVoice enviando um fax sobre a rede telefônica pública para o seu próprio número e recebendo-o, ambos sobre T.38 (2 páginas, 14.400 bit/s, as páginas chegaram intactas; registro com nome de usuário e senha); e passando um fax entre uma máquina de fax em um gateway (Asterisk com spandsp, representando um) e T38Fax, para fora e para dentro, 2 páginas a 14.400 bit/s em ambos os sentidos: uma vez tudo em G.711 (o gateway recusando T.38) e uma vez mudado para T.38 em ambos os lados. spandsp (por meio do Asterisk 20) no EC2: recebendo e enviando sobre T.38 com correção de erros, e passando faxes entre duas outras máquinas sobre T.38 e sobre G.711. Nenhum gateway de fax de hardware tentado, e T38Fax nunca solicitou T.38 em si, então um comutador do carrier recusado pelo gateway não foi visto |
| Provisionamento: Yealink, Poly, Grandstream, Snom, Fanvil, Cisco, Mitel, Sangoma, Algo, CyberData | Testado em software | os formatos documentados dos fornecedores; não em aparelhos de mão reais |
| Telefones Skinny (SCCP) e gateways MGCP | Verificado contra uma referência | Skinny: telefones a partir da biblioteca mwicat/sccp de código aberto, cada mensagem lida pelo dissector do Wireshark, tamanhos como o chan_skinny do Asterisk; MGCP: gateway MGCP do Yate (reinicialização, respostas provisórias, confirmações; ele não tem portas analógicas, então nenhuma chamada). Nenhum hardware de telefone ou gateway Cisco tentado |
| Roteamento Direto do Microsoft Teams | Testado em software | contra um proxy do Microsoft simulado seguindo as regras de SIP de Roteamento Direto publicadas da Microsoft (OPÇÕES, Contato, user=phone, certificado do cliente, transferências que os Teams solicitam por meio de REFER com x-m e x-t); nenhum locatário do Teams tentado: a Microsoft não oferece nenhum gratuitamente (licenças de telefone dos Teams) |
| Hotel (FIAS) | Verificado contra uma referência | cada registro que o BitVoice envia verificado contra a especificação FIAS 2.20.23 publicada pela Oracle (início de link, registros de link, postagens, respostas de despertar); testes próprios. Não tentado ainda contra o Opera em si |
| Mensagens de texto, WhatsApp, Messenger, chat da web | Verificado contra uma referência (Twilio, Telnyx, Bandwidth, Vonage, TextMagic, WhatsApp) | mensagens de texto por meio do Twilio, Telnyx, Bandwidth, Vonage e TextMagic, e mensagens de texto, modelos e listas de modelos do WhatsApp, contra mocks construídos a partir das especificações OpenAPI publicadas dos provedores (Stoplight Prism, recusando qualquer coisa que a especificação não permita; a especificação do TextMagic é a que seu próprio cliente é gerado). A Vonage mostrou que a chave pertence ao HTTP Básico, não mais no formulário. O SignalWire fala a API do Twilio; o Plivo, Flowroute, VoIP.ms e Messenger publicam nenhuma especificação e são verificados contra substitutos escritos a partir de sua documentação. Nenhuma conta ao vivo tentada |
| Cartões de chamador do CRM, Azure Blob, Azure Key Vault | Verificado contra uma referência | EspoCRM (um CRM de código aberto real, no Docker) para cartões de chamador; emulador Azurite da Microsoft para uploads de Blob (SAS de contêiner, recusas); Lowkey Vault para Key Vault com uma identidade gerenciada. Não tentado ainda contra o Azure em si ou um CRM hospedado |
| Tela de spam: teste de robô, chamadores desconhecidos, banco de dados de spam, *32, sugestões | Testado em software | testes próprios do BitVoice: um provedor ligando sobre SIP e pressionando teclas (RFC 4733) no teste de robô, passando e falhando nele; chamadores conhecidos, sempre permitidos e de chamada de volta de emergência tocando ao mesmo tempo; o banco de dados de spam contra um substituto que responde da maneira que o Twilio documenta seu Lookup com o add-on Nomorobo (nenhuma conta do Twilio tentada); *32 a partir de um telefone de mesa; sugestões a partir de registros de chamadas; as configurações por meio dos testes do navegador. Não tentado ainda contra robocalls reais ou um banco de dados pago |
| Aplicativos iPhone e Android | Testado em campo (Android) | Android: um Google Pixel 8 (Android 16, Wi-Fi) com a compilação de lançamento assinada contra o BitVoice no EC2 com um certificado Let's Encrypt: emparelhado por link, tocou com a notificação de chamada do Android, atendido a partir dele, áudio em ambos os sentidos, manteve a conexão com a tela desligada e em segundo plano (sua notificação de chamada em andamento, Desligar); sem push, não toca em segundo plano. Um Google Pixel 11 (Android 17) na AWS Device Farm: emparelhado, tocou, atendido, ligou; Opus, MOS 4.1. iPhone: o aplicativo (SwiftUI, CallKit, PushKit VoIP) compila contra o SDK atual (Xcode 27) e o servidor assina pushes VoIP da Apple (APNs, ES256); as mesmas correções de dispositivo real que o Android e uma lista da App Store (ios/AppStore) estão incluídas. Ambos os aplicativos são uma extensão completa: transferência (cega, sobre REFER), espera e uma segunda chamada, teclado e mute, com Recentes, correio de voz visual (com transcrições), uma lâmpada de ocupado da Equipe, Contatos, o Chat da equipe (colegas com presença, mensagens diretas e salas, com uma notificação em segundo plano e um push quando o aplicativo está fechado), um seletor de sala de vídeo (listas as salas SFU com quem está em cada uma, participa como a extensão, mostrado como uma chamada de vídeo na tela de chamada de telefone) e uma transcrição de IA ao vivo na chamada (AI.LiveCallTranscripts); transferência, espera, a transcrição ao vivo, o chat alcançando um colega, a lista de salas, uma sala participada por um telefone e o chat push moldam cada um coberto por um teste de nível de motor, API ou navegador. No Pixel 8 (2026-10-30, compilação de depuração, EC2 com Let's Encrypt): tocou e atendeu a partir da notificação, manteve e retomou (o estado de chamada do Android segue), ligou para fora no sistema de chamada do Android, Opus em ambos os sentidos com MOS 4.38 e sem perda; entrou em uma sala de vídeo com sua câmera (solicitada na primeira utilização) e viu uma câmera de desktop, ambos ao vivo; uma mensagem de chat em segundo plano notificou e abriu o Chat. Espera e transferência atingem a tela de chamada nativa (CallKit, Telecom). Não executado ainda em um iPhone ou submetido: push, a tela de chamada do sistema e assinatura precisam de nossa própria conta de desenvolvedor da Apple |
| Perfil 911, console de rádio, Serviços principais NG911, vídeo do chamador | Laboratório | esquemas e dados de amostra da NENA, Wireshark, spandsp, OpenSSL, ExifTool, ffmpeg, uma captura NIST P25 (seus quadros de voz IMBE desempacotados como o mbelib desempacota-os: mesma altura, harmônicos, voz e amplitudes); nunca em um ESInet ao vivo, sistema P25 ou CAD PSAP, e não certificado |
| Voz de taxa reduzida P25 Fase 2 (AMBE+2) | Não oferecido | patenteado até 2028 |
| Assinaturas Ed448 (NENA) | Não oferecido | não está na biblioteca padrão do Go, e o BitVoice não escreve criptografia por conta própria; Ed25519 é usado |
| Transferência de sinal SS7 (STP), SCCP e TCAP | Verificado contra uma referência | OsmoSTP 2.3.0 sobre M3UA/TCP com o usuário de eco SCCP do libosmo-sigtran por trás dele: UDT e XUDT em ambos os sentidos, UDTS retornados, tradução de título global por meio do STP, um comutador em um conjunto de links alcançando o eco sobre IP; TCAP contra libosmo-asn1-tcap em ambos os sentidos. ITU apenas; nenhum SCTP, SCCP orientado a conexão ou gerenciamento de SCCP; nenhum carrier real tentado |
| Variante MFC-R2 China (China Nº 1) | Testado em software | cada sinal de uma chamada verificado contra as tabelas e sequências de chamadas publicadas da Cisco (KA, KD, Grupo B pelo KD enviado, C e D bits 11). A variante China do OpenR2 discorda de si mesmo, então não há programa para testar contra; nenhuma linha real tentada |
| ALI sobre PAM ou E2 | Não oferecido | PAM é o próprio protocolo da Intrado com nenhuma especificação publicada; E2 (J-STD-036, NENA 05-001) é executado entre um centro de posicionamento móvel e o banco de dados ALI, não para um PSAP. O BitVoice fala as ligações de solicitação e texto ALI e HELD em vez disso |
Extensões
/extensionsUma extensão é um número para uma pessoa ou uma secretária. Os telefones se conectam com o número da extensão e sua senha SIP; as chamadas para o número tocam todos os telefones conectados como ela, ao mesmo tempo.
Adicionar uma extensão
- Abra Extensões (capítulo 3) e pressione Adicionar extensão. O próximo número livre e uma senha SIP forte são preenchidos.
- Insira o nome da pessoa (exibido em outros telefones quando eles ligam) e e-mail (para correio de voz por e-mail).
- Preencha a localização 911: o local, andar e sala. Ela é enviada com chamadas de emergência.
- Escolha o que acontece Se ninguém atender: correio de voz por padrão, ou outra extensão, um grupo ou um menu.
- Salve. A extensão pode se conectar imediatamente.
Os campos
| Campo | O que ele faz |
|---|---|
| Número | 2 a 8 dígitos; nenhum outro número de extensão, grupo, fila ou código de recurso pode ter ele |
| Senha SIP | o que o telefone se conecta com; pelo menos 12 caracteres; Gerar cria uma nova |
| Tocar por | segundos antes de Se ninguém atender acontecer (25 por padrão) |
| ID de chamador externo | o número exibido nas chamadas externas; vazio usa o do tronco |
| Pode ligar para números externos | desligado mantém o telefone em chamadas internas e números de emergência |
| Gravar chamadas | quando as Configurações gravam apenas extensões selecionadas |
| Mesa quente | um telefone compartilhado que se torna quem se conecta nele |
| Criptografar chamadas para este telefone | criptografia de mídia (SRTP); use com TLS para manter as chaves privadas |
| Departamento | agrupa os custos de chamadas desta extensão |
Seguir-me, pegar e intercom
O tratamento de chamadas de cada pessoa está em sua própria caixa na extensão:
- Seguir-me toca mais números quando os telefones aqui não são atendidos: um celular, outra secretária. Eles tocam um após o outro, ou todos juntos, por seu próprio tempo de toque. Com Números externos pressionem 1 para atender a chamada ativado, quem atende em um celular pressiona 1 primeiro, para que a própria caixa de correio de voz do celular nunca atenda a chamada. Veja Códigos de recurso (capítulo 32).
- Grupo de pegar: qualquer pessoa no mesmo grupo atende as chamadas em espera desta extensão discando
*8. - Permitir intercom:
*80e este número atende no alto-falante sozinho. Desligue-o para pessoas que nunca querem isso. - Discos de velocidade próprios: códigos curtos para esta pessoa apenas, discados após
*0.
Encaminhamento agora
Abaixo das configurações, Encaminhamento agora mostra e altera o que a pessoa configurou do seu telefone ou do portal de funcionários: não perturbe e encaminhamento de todas as chamadas, de chamadas enquanto ocupado e de chamadas não atendidas. Esses são estados ao vivo, não configuração: alterá-los não cria uma revisão.
O que está conectado
- Telefone: um telefone de secretária, softphone ou aplicativo.
- Estação de porta: um interfone em uma porta. Quem atende pressiona o código de chave, ou Abrir porta em Chamadas ao vivo. Com um endereço de controlador de porta, o BitVoice chama esse endereço (2N, Axis, Akuvox, placas de relé); sem um, o código é enviado para a estação, que abre a porta sozinha.
- Alto-falante: as chamadas para ele são atendidas imediatamente e ouvidas no alto-falante.
- Porta de adaptador analógico: um telefone antigo, fax ou painel de alarme em um adaptador. As chamadas usam apenas G.711, que os faxes precisam.
Dispositivos conectados
Uma extensão aberta mostra todos os dispositivos conectados como ela: a marca e modelo do telefone, como ele se conecta (UDP, TCP, TLS ou navegador) e desde quando. O endereço e porta para dar a um telefone são exibidos lá também.
Conectando telefones
/phonesQualquer telefone ou aplicativo SIP funciona: aponte para o endereço e porta 5060 do servidor, com o número da extensão como usuário e sua senha SIP. Telefones de mesa dos quatro principais fabricantes são configurados automaticamente, então ninguém digita uma senha no teclado do telefone.
Configuração automática (provisionamento)
- Em Telefones (capítulo 4) pressione Adicionar telefone e insira o endereço MAC do telefone (na etiqueta por baixo) e a extensão a que pertence.
- Escolha a marca: Yealink, Poly, Grandstream (incluindo os adaptadores analógicos HT), Snom, Fanvil, Cisco, Mitel, Sangoma, Algo ou CyberData.
- Informe ao telefone onde está o BitVoice: no seu servidor DHCP, defina a opção 66 para o endereço de provisionamento mostrado na tela, para que todos os telefones na rede o encontrem sozinhos; ou digite o mesmo endereço na página web do próprio telefone, em provisionamento automático.
- Reinicie o telefone. Ele busca seu arquivo sobre HTTPS, faz login e as teclas de linha mostram quem está no telefone.
HTTPS ou HTTP simples. Os telefones buscam seus arquivos sobre HTTPS quando podem. Alguns telefones mais antigos não podem usar HTTPS de forma alguma, e muitos não confiam no certificado que o BitVoice criou por si mesmo; para esses, a tela também exibe um endereço http:// simples na mesma porta. O HTTP simples é apenas para esses arquivos: todas as outras páginas ainda vão para HTTPS. Sobre HTTP simples, a senha SIP do telefone cruza a rede não criptografada, então mantenha-o em uma rede de escritório confiável, ou instale um certificado de uma autoridade e ative HTTPS apenas para telefones.
O arquivo contém a extensão, sua senha, o fuso horário, os codecs, teclas de lâmpada ocupada e o endereço deste servidor. O provisionamento é protegido por um nome de usuário e senha que os telefones recebem uma vez.
| Fabricante | Modelos testados | O que ele obtém |
|---|---|---|
| Yealink | T3x, T4x, T5x | conta, teclas BLF, tempo, codecs |
| Poly | VVX, Edge E | o mesmo, no formato próprio da Poly |
| Grandstream | GRP, GXP, HT802/814 | conta por porta em adaptadores |
| Snom | D7xx | conta, teclas, tempo |
Esses fabricantes também são provisionados, com arquivos escritos a partir do formato documentado de cada fabricante, mas ainda não testados em seus dispositivos (a tela Telefones os marca como não testados):
| Marca | Modelos | Ficheiro que o dispositivo pede |
|---|---|---|
| Fanvil | Série X e V | o seu endereço MAC .cfg |
| Cisco | 6800, 7800, 8800 multiplataforma (3PCC), adaptadores SPA | o seu endereço MAC .xml (o firmware empresarial precisa do firmware multiplataforma primeiro) |
| Mitel (Aastra) | 6800, 6900 SIP | o seu endereço MAC .cfg, em maiúsculas |
| Sangoma | Série S | o ficheiro no formato Fanvil |
| Algo | altifalantes de paginação, strobes, adaptadores | algop e o seu endereço MAC .conf |
| CyberData | altifalantes, intercomunicadores, adaptadores de paginação | o seu endereço MAC .xml |
Cada um recebe a sua conta, o servidor (e o servidor de backup, com vários servidores), o transporte e a criptografia, e o número de correio de voz onde o tem. Defina as extensões dos altifalantes Algo e CyberData para Altifalante de teto para que as chamadas para eles sejam atendidas imediatamente.
Phones without provisioning
Softphones and other makes take the same three things: server (this computer's address, port 5060, or 5061 with TLS), user (the extension number) and password (its SIP password). Health lists phones that tried a wrong password; after a few tries the address is banned for a while (see Security (capítulo 60)).
O telefone do navegador
O ícone do telefone no fundo de cada ecrã torna este navegador num telefone para uma extensão, com o seu microfone e altifalantes. Ele utiliza WebRTC: o som é criptografado de ponta a ponta e funciona através da maioria dos firewalls sem qualquer configuração.
Other WebRTC softphones (SIP over WebSocket)
Softphones and web apps built on JsSIP, SIP.js and similar libraries speak SIP over WebSocket (RFC 7118). Switch on SIP over WebSocket in Settings (capítulo 14) and point them at wss://<this server's name>:<web port>/ws, with the extension number as the user and its SIP password. BitVoice ends their WebRTC sound itself (ICE, DTLS-SRTP, Opus or G.711), so they reach every phone, trunk and feature as desk phones do: calls both ways, keys pressed, hold, transfers by the other party, busy lamps and message-waiting. Settings shows how many are connected.
O WebSocket não precisa de um seu próprio início de sessão: o softphone inicia sessão com SIP, e os inícios de sessão com falha e demasiados pedidos são contados para o seu próprio endereço, como para qualquer telefone. Uma página de softphone servida a partir de outro site deve confiar no certificado deste servidor (use Let's Encrypt), e o Chrome actual pergunta ao utilizador antes de uma página web pública poder alcançar um servidor na rede local.
Testado com duas bibliotecas independentes, JsSIP 3.13 e SIP.js 0.21: dois softphones de cada um registam, chamam um ao outro e ouvem um ao outro através do BitVoice. Outros softphones (cliente web do Linphone, Zoiper) falam o mesmo protocolo, mas não foram testados.
TURN, para redes que bloqueiam UDP
Algumas redes (hotéis, Wi-Fi para convidados, firewalls de empresa estritos) não permitem UDP ou escondem computadores atrás de NATs que o WebRTC não pode atravessar. Para esses, ative o servidor TURN em Configurações (capítulo 14): o BitVoice executa então seu próprio servidor TURN (RFC 8656) na porta 3478 (UDP e TCP) e, com o certificado deste servidor, na porta 5349 sobre TLS. Os telefones do navegador, o telefone da equipe e os links de chamada recebem credenciais de curta duração para ele e o usam quando não podem alcançar as portas de mídia diretamente; o som ainda está criptografado de ponta a ponta, e o BitVoice o retransmite apenas para seus próprios endereços, então ninguém pode usá-lo para alcançar qualquer outra coisa.
Abra a porta TURN, a porta TLS e as portas de retransmissão (49152 a 49407, a menos que você as altere) no firewall. O TURN sobre TLS precisa de um certificado que os navegadores confiem no nome que usam, como um do Let's Encrypt (capítulo 14): até que haja um, o BitVoice não o oferece aos navegadores (eles tentarão, falharão e esperarão), e o oferece assim que o certificado chega; defina sua porta para 443 em um servidor com um endereço sobrando para passar pelos firewalls que permitem apenas HTTPS.
Alteração de rede durante uma chamada
Um telefone que muda para outra rede durante uma chamada (saindo da Wi-Fi do escritório para uma rede móvel, ou um laptop de uma Wi-Fi para outra) obtém um novo endereço, e o caminho antigo deixa de transportar som. Telefones baseados em navegador e os aplicativos BitVoice notam automaticamente: quando o navegador diz que sua rede mudou, ou o caminho da chamada deixa de responder por dois segundos, o telefone reinicia o ICE (RFC 8445 9). Ele oferece novas credenciais ICE para a chamada que está em andamento, o BitVoice responde com novas credenciais próprias e verifica o novo caminho, e a chamada se move para ele sem precisar ser discada novamente. O processo de criptografia continua com as mesmas chaves. Enquanto isso acontece, a chamada exibe Reconectando…; em um caminho que ainda funciona, não há lacuna, pois o caminho antigo transporta a chamada até que o som comece no novo caminho. Telefones SIP sobre WebSocket (JsSIP, SIP.js) fazem o mesmo por meio de re-INVITE com novas credenciais ICE. Nada precisa ser ativado, com o BitVoice como ICE-lite ou atrás de NAT.
BitVoice atrás de NAT
O servidor TURN acima ajuda os navegadores em redes estritas a alcançar um BitVoice que tem um endereço público. Quando o próprio BitVoice não tem um (em um escritório atrás de um roteador sem encaminhamento de porta, ou em uma rede de nuvem sem um endereço público na máquina), ative Este servidor está atrás de NAT em BitVoice atrás de NAT em Configurações (capítulo 14). O BitVoice então participa integralmente do ICE (RFC 8445) em vez de responder em um endereço (ICE-lite):
- Ele oferece aos navegadores seus próprios endereços, seu endereço público como os servidores STUN o veem, e relays nos servidores TURN que ele se conecta (UDP; um nome de usuário e senha cada), e verifica cada par de endereços com o navegador, como o navegador faz.
- Relay todas as chamadas através do TURN envia todos os meios de comunicação do navegador através dos servidores TURN, para redes que exigem isso.
- Encontrar meus endereços pede aos servidores como uma chamada faria e lista o que o BitVoice oferecerá: seus próprios endereços, o público visto através do STUN (um servidor STUN que não responde é dito assim), e seus relays.
- Ele funciona para o telefone do navegador, links de chamada, o teste de eco e softphones SIP-over-WebSocket, em qualquer papel: o BitVoice responde a uma oferta do navegador, e oferece a um softphone que ele toca. Navegadores que escondem seus endereços atrás de nomes mDNS (
name.local) são resolvidos na rede local, e o endereço do navegador como o servidor web o viu é liberado através dos relays desde o início. - Desativado por padrão; ele adiciona um momento a cada chamada enquanto os servidores respondem (no máximo um segundo e meio). O vídeo do chamador usa ICE-lite de qualquer forma.
O telefone da equipe
Abra #/phone em qualquer navegador de computador ou móvel: as pessoas se conectam com sua extensão e senha SIP, sem uma conta de administrador. É um telefone completo: discar, atender, segurar, transferir e o teclado. Para seu próprio encaminhamento e correio de voz, eles usam o portal da equipe em #/me (veja O portal da equipe (capítulo 33)).
Os aplicativos móveis
Os aplicativos BitVoice para iPhone e Android são pareados a partir da página da extensão com um código QR. As chamadas acordam o aplicativo por meio dos serviços de push da Apple e do Google, então ele toca mesmo quando está fechado (uma vez que o push esteja configurado; veja abaixo).
Telefones Skinny e gateways MGCP
/desk-phonesTelefones e gateways que não falam SIP ainda podem ser usados. Telefones Skinny e gateways MGCP (abaixo de Chamadas) aceitam dois protocolos mais antigos:
- Skinny (SCCP): telefones de secretária Cisco que executam firmware SCCP (79xx, 69xx, 89xx). Adicione cada telefone pelo seu endereço MAC e escolha sua extensão; ative Aceitar telefones Skinny e aponte o telefone para o BitVoice (porta TCP 2000) em seu arquivo de configuração TFTP ou menu.
- MGCP (RFC 3435): gateways cujas portas o BitVoice controla uma a uma, como adaptadores de telefone analógico e cartões de linha. Adicione o gateway pelo nome de domínio que ele usa nos nomes de ponto de extremidade (aaln/1@nome), seu endereço e a extensão de cada linha; configure o agente de chamadas do gateway para o BitVoice (porta UDP 2727).
Cada telefone Skinny ou linha MGCP é um dispositivo a mais de sua extensão: ele toca com os outros telefones da extensão, faz chamadas como a extensão e é exibido nos dispositivos da extensão. A página mostra o estado de cada um.
O que funciona
- Skinny: registo, a linha e o seu número no ecrã, tom de discagem, discagem (o número vai após uma pausa ou #, ou de imediato a partir do teclado do telefone quando levantado após a discagem), tom de chamada, toque com identificador de chamador, atender e desligar pelo auscultador, altifalante ou teclas soft (NewCall, Redial, Answer, EndCall), tons de ocupado e de reorder.
- MGCP: tom de discagem, dígitos recolhidos pelo gateway com um mapa de dígitos, toque com identificador de chamador (tocado sem ele quando o gateway recusa o identificador de chamador), tom de chamada, tons de ocupado e de reorder, e a ligação de áudio (CRCX, DLCX). Um gateway que reinicia (RSIP) tem os seus portos configurados novamente.
- O áudio é G.711 µ-law em ambos; o BitVoice converte para o que a outra parte utiliza.
Segurar, transferir e conferenciar são feitos a partir de outros telefones da extensão por agora, e a segunda linha de um telefone Skinny não é utilizada.
Segurança
Nenhum dos protocolos tem palavras-passe. Telefones Skinny são aceites apenas da rede local e apenas quando listados; comandos MGCP são obedecidos apenas a partir do endereço do gateway (ou, sem um, a partir da rede local). Mantenha ambos os portos fora da internet.
Um gateway que ainda está trabalhando em um comando pode responder "100 Trying" primeiro: o BitVoice então espera mais tempo antes de enviar o comando novamente e confirma a resposta final (000), como o RFC 3435 pede. Uma porta que o gateway não vai monitorar mostra a recusa do próprio gateway na página, como o gateway recusou-se a monitorar a porta: 507 Função não suportada de um gateway de mídia sem portas analógicas.
Como eles são testados
- Skinny: dois telefones construídos a partir de uma implementação Skinny separada (a biblioteca mwicat/sccp de código aberto) se registram, ligam um para o outro, respondem e desligam; um telefone não listado é recusado. O dissector Skinny do Wireshark lê todas as mensagens que o BitVoice envia sem falhas, e as mensagens têm os tamanhos completos que o chan_skinny do Asterisk envia para os telefones Cisco.
- MGCP: contra o gateway MGCP do Yate (reinicialização, respostas provisórias, confirmações, recusas) e o gateway de teste próprio do BitVoice para chamadas completas. O gateway do Yate não tem portas analógicas, então nenhuma chamada foi feita através dele.
Cartões de telefonia
/cardsUm cartão de telefonia no computador do BitVoice (Digium, Sangoma, OpenVox e outros cartões com drivers DAHDI do Linux) pode transportar telefones analógicos e linhas de companhias de telefone. Um programa separado, bitvoice-dahdi, conduz o cartão e junta os seus portos ao BitVoice sobre a ligação de rede do próprio computador, por isso o BitVoice em si nunca toca no driver do kernel e um problema de cartão não pode parar o sistema de telefone.
Configurando
- Instale os drivers DAHDI e configure os portos como de costume em /etc/dahdi/system.conf (
fxoks=1-4para portos com telefones,fxsks=5-8para portos com linhas, e os tons do país emloadzoneedefaultzone), então executedahdi_cfg. - Em Cartões de telefonia (sob Chamadas) ative Usar cartões de telefonia. Um token é criado; copie-o para um ficheiro que apenas o root possa ler, como /etc/bitvoice/cards.token.
- Adicione cada porto pelo seu número de canal DAHDI: um porto telefone (FXS, um telefone, fax ou telefone de porta conectado) com a sua extensão, ou um porto linha (FXO, uma linha de companhia de telefone) com o número da linha. Escolha A-law para a Europa e a maior parte do mundo, µ-law para a América do Norte e o Japão.
- Para linhas, adicione um tronco com o protocolo Linhas de cartões de telefonia em Troncos, e encaminhe números para ele como para qualquer tronco; rotas de entrada correspondem a cada número de linha.
- Inicie
bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.tokencomo um utilizador de serviço que possa abrir /dev/dahdi. Ele está no download do Linux ao lado do bitvoice. A página mostra se está a ser executado e o estado de cada porto; alterações atingem-no dentro de dez segundos. Um canal que outro programa ainda mantém (ou um que dahdi_cfg ainda não configurou) é tentado novamente a cada dois segundos, por isso a ordem em que as coisas começam não importa.
O que funciona
- Telefones: tom de discagem, discagem (dígitos são ouvidos pelo detector de tons do BitVoice; o número vai após uma pausa ou #), tom de chamada, tons de ocupado e de congestionamento a partir da zona de tons do cartão, toque para chamadas de entrada, e teclas pressionadas durante uma chamada (enviadas como eventos RFC 4733 também).
- Linhas: uma linha de chamada toca o seu número aqui e é atendida quando a chamada é; chamadas de saída tomam uma linha livre, esperam pelo tom de discagem da central e discam o número como tons. O fim da ligação do outro lado é notado quando a linha o relata (corrente de loop ou polaridade, dependendo da linha). Linhas analógicas não dizem quando o outro lado atende, por isso uma chamada de saída conta como atendida uma vez que o número é discado.
- O som é G.711 para e a partir do cartão; o BitVoice converte para o que a outra parte utiliza.
Linhas digitais: T1 e E1 PRI
Uma linha T1 (23 chamadas de uma vez) ou E1 (30) como taxa primária ISDN é conectada a um cartão digital (série TE da Digium/Sangoma, série D da OpenVox e similares). O BitVoice fala o próprio PRI (Q.921 no canal D, e controlo de chamada Q.931), por isso cada chamada chega com o número discado e o identificador de chamador, sai com o identificador de chamador da extensão, e a companhia de telefone diz quando o outro lado atende, toca ou está ocupado.
- Em /etc/dahdi/system.conf, configure a span para PRI como de costume (
span=1,1,0,esf,b8zs,bchan=1-23,hardhdlc=24para uma T1;span=1,1,0,ccs,hdb3,crc4,bchan=1-15,17-31,hardhdlc=16para uma E1), e executedahdi_cfg. - Em Linhas digitais em Cartões de telefonia (capítulo 6), adicione a span: T1 ou E1, o seu primeiro canal DAHDI, se o BitVoice é o PBX na linha da companhia de telefone (o usual) ou na rede (outro PBX se conecta ao BitVoice como se à companhia de telefone), e o tipo de comutador que a companhia de telefone lhe deu.
- Adicione o tronco do cartão em Troncos se ainda não existir, e rotas de entrada para os números (DIDs) que a companhia de telefone envia.
Chamadas de saída tomam um PRI primeiro, as linhas analógicas depois; um número ocupado, um número errado ou nenhum canal livre retorna como ocupado, não encontrado ou indisponível, como a rede diz. A página mostra se o canal D de cada span está ativo e quantos dos seus canais estão em chamadas. Canais T1 configurados com sinalização de bit roubado (fxsks, fxoks) funcionam como os portos analógicos acima.
Nomes, encaminhamentos e transferências. O nome do chamador vem com a chamada (do elemento Display, ou no ISDN-2 Nacional, do nome que a rede envia como uma facilidade) e os telefones o exibem; as chamadas de saída enviam o nome da extensão do mesmo modo. O número de que uma chamada foi encaminhada vem como seu número de redirecionamento (o BitVoice o repassa como Diversion do SIP, com o motivo: ocupado, sem resposta, incondicional), e quando o encaminhamento de uma extensão envia uma chamada para fora na PRI, o número da extensão vai com ele como número de redirecionamento, para que o extremo remoto e a companhia telefônica saibam de quem é a chamada. Quando uma chamada de fora é atendida, o BitVoice informa à rede o número que atendeu (o número conectado).
Ative Transferências através da companhia telefônica em um span (lado do usuário, ISDN-2 Nacional, 5ESS, DMS-100 ou EuroISDN) e, quando alguém transfere um chamador nessa linha para outro número na mesma linha, o BitVoice pede à rede para unir as duas chamadas ela mesma: Transferência de dois canais B no ISDN-2 Nacional e linhas 5ESS, transferência de enlace de tronco na Nortel DMS-100, transferência de chamada explícita (o chamador é colocado em espera, então unido) no EuroISDN. Um DMS-100 fornece um identificador de transferência apenas para chamadas que o BitVoice realiza, então lá uma das duas chamadas deve ser uma chamada de saída (o caso comum: um chamador encaminhado ou transferido para um número de fora). Ambos os canais são liberados assim que a rede os uniu. A linha precisa do serviço (peça à companhia telefônica "transferência de dois canais B" ou "ECT"); se a rede se recusar, a transferência ainda funciona, através do BitVoice, usando ambos os canais como antes. Em um span onde o BitVoice é o lado da rede, outro PBX pode pedir ao BitVoice para unir duas de suas chamadas; o BitVoice recusa (não é um comutador), e o PBX mantém as chamadas ele mesmo.
Tentando sem um cartão
Os spans dinâmicos próprios do DAHDI podem substituir um cartão: dois spans unidos dentro do kernel, o BitVoice em um e outro PBX (o chan_dahdi do Asterisk, por exemplo) como a companhia telefônica no outro. Carregue dahdi, dahdi_dynamic e dahdi_dynamic_loc, e em /etc/dahdi/system.conf:
dynamic=loc,1:0,24,0 dynamic=loc,1:1,24,0 bchan=1-23 dchan=24 bchan=25-47 dchan=48
Deixe o último número (temporização) em 0 em ambos: o temporizador próprio do DAHDI os impulsiona. Spans que são a fonte de temporização um do outro só ticam quando o outro envia, e o canal D vem e vai. Adicione o span 1 aqui como um T1 (primeiro canal 1), e configure o outro PBX como o lado da rede nos canais 25 a 48.
Taxa básica ISDN (BRI)
Um BRI transporta duas chamadas de uma vez (B1 e B2) e é comum na Europa para pequenos escritórios; também conecta telefones de mesa ISDN. Cartões BRI (Digium B410P, os cartões baseados em HFC da OpenVox, Junghanns e outros) funcionam através do DAHDI como os cartões PRI: em /etc/dahdi/system.conf, o span é span=1,1,0,ccs,ami com bchan=1-2 e hardhdlc=3. Adicione-o em Linhas digitais com BRI como o tipo de linha; seus canais são B1, B2 e, em seguida, o canal D.
- O BitVoice é o PBX (lado do usuário), ponto a ponto: uma linha PBX da companhia telefônica (o *Anlagenanschluss* da Alemanha): as chamadas de entrada transportam o número discado, as chamadas de saída transportam o número da extensão.
- Lado do usuário, multiponto: uma linha compartilhada com outros dispositivos (*Mehrgeräteanschluss*): o BitVoice pede à rede seu próprio TEI (identificador de terminal) e atende chamadas para a linha ao lado de outros dispositivos nela; a companhia telefônica envia o número discado (o MSN), que as rotas de entrada correspondem.
- O BitVoice é a rede, multiponto: os telefones ISDN se conectam ao cartão S-bus como a uma linha da companhia telefônica. Cada um pede ao BitVoice um TEI; uma chamada para o barramento toca todos os telefones nele, o primeiro a atender pega a chamada e os outros param de tocar. Números discados dígito a dígito (como os telefones ISDN discam) são coletados até o telefone dizer que está completo, # for pressionado ou nenhum dígito chegar por quatro segundos. Roteie os números para e do barramento com o tronco do cartão como para qualquer linha.
Nomes, encaminhamentos, transferências no EuroISDN (transferência de chamada explícita) e conselho de cobrança funcionam em um BRI como em um PRI.
Troncos E&M em um T1
Um T1 cujos canais são configurados como E&M (sinalização de bit roubado: e&m=1-24 em /etc/dahdi/system.conf) fornece 24 troncos, cada um sinalizado por si só: linhas de ligação a outro PBX, bancos de canais e troncos de grupo de recursos de longa distância. Em Linhas digitais, adicione um T1 e defina Sinalização como E&M, então:
- Sinal de início: Início com piscar (o usual: o extremo remoto pisca quando está pronto para o número, e o BitVoice pisca de volta em uma chamada de entrada), Início imediato (o número segue a apreensão imediatamente), Discagem atrasada (o extremo remoto sai do gancho enquanto se prepara, então volta ao gancho), ou Grupo de recursos D (início com piscar com números MF, o número do chamador enviado primeiro: KP 00 ANI ST, então KP número ST; o ANI se torna o ID do chamador).
- Números enviados como: DTMF ou MF (MF R1, KP número ST) como a maioria dos troncos de transportadora deseja.
- Número quando nenhum é enviado: o que uma chamada de entrada atinge se o extremo remoto apreende o tronco sem discar (uma linha direta para a mesa da frente, por exemplo).
Uma chamada de saída ocupa um tronco livre, o reserva, aguarda o sinal de início (a falta de um aceno dentro de cinco segundos é considerada como "sem aceno" e a chamada falha), envia o número e é atendida quando o extremo distante sai do gancho (supervisão de resposta). Uma chamada de entrada é atendida indo para fora do gancho quando a extensão atende.
Troncos CAMA (911, laboratório). Um PSAP ainda alimentado por um roteador seletivo de 911 sobre troncos CAMA define Sinal de início como CAMA (tronco 911). O roteador reserva, BitVoice acena e o roteador envia o número do chamador (ANI) em MF: CAMA melhorado como KP, dois dígitos de informação e todos os dez dígitos, ST; CAMA tradicional como KP, um dígito de plano de numeração e sete dígitos, ST. Para CAMA tradicional, liste sob Códigos de área para NPD 0 a 3 o código de área que cada dígito de plano de numeração representa (a folha de configuração do seu roteador os tem); um dígito acima de 3 significa que o roteador não conseguiu identificar a linha. Cada chamada vai para a rota de entrada para 911 como uma chamada de 911, com o ANI como seu número de retorno, e BitVoice procura sua localização por esse número (veja chamadas de 911 (capítulo 77), Pesquisa de localização (ALI)). Os dígitos de informação são exibidos na chamada como CAMA (II 00).
MFC-R2 em uma E1
Na América Latina, em partes da Ásia e da África, as linhas E1 são frequentemente MFC-R2 em vez de ISDN: 30 circuitos, cada um com seus sinais de linha nos bits A e B do timeslot 16 (ITU-T Q.421) e seu número, a categoria do chamador e o número do chamador trocados em tons de multifrequência forçada (Q.441), para a frente e para trás. Configure a span como CAS em /etc/dahdi/system.conf (span=1,1,0,cas,hdb3, cas=1-15:1101, cas=17-31:1101, dchan removido), então, em Linhas digitais, adicione uma E1, defina Sinalização como MFC-R2 e escolha a Variante do país: ITU-T, Argentina, Brasil, China, Colômbia, República Tcheca, Equador, México, Filipinas ou Venezuela. Cada país atribui alguns sinais de forma diferente (o que significa ocupado, como o final do número é indicado, o Grupo C extra do México); a variante contém esses. A China Nº 1 pede a classe do chamador (KA) e o número após o número discado, envia o tipo de chamada (KD: 3, uma chamada local) por último, lê ocupado e ocioso pelo KD que enviou e define os bits C e D ambos para 1: lá, escreva cas=1-15:1111 e cas=17-31:1111.
Cada circuito transporta chamadas em ambos os sentidos. Uma chamada que chega atinge as rotas de entrada com o número discado e o número do chamador (números ocultos chegam como anônimos); uma extensão ocupada ou um número errado é sinalizado de volta como ocupado ou não alocado, como a variante diz. Uma chamada que sai envia o número e o ID do chamador da extensão, ou o sinal "número oculto" quando o chamador oculta-o.
A sinalização MFC-R2 é testada contra OpenR2 (a biblioteca R2 usada pelo chan_dahdi do Asterisk), em todas as variantes oferecidas e em ambos os sentidos, incluindo uma chamada recusada como ocupada; E&M contra os canais simulados próprios do BitVoice.
SS7
Um operador pode entregar T1s ou E1s sinalizados por SS7 em vez de ISDN: os circuitos de voz transportam chamadas, cada um nomeado por um código de identificação de circuito (CIC), e um timeslot transporta o link de sinalização para o ponto de transferência de sinal ou switch do operador, sobre o qual ISUP configura as chamadas. BitVoice é então um ponto de sinalização por si só, com um código de ponto atribuído pelo operador. Em /etc/dahdi/system.conf, configure a span como canais claros com o timeslot de sinalização como mtp2 ou hardhdlc (timeslot 16 em um E1, 24 em um T1). Sob Linhas digitais, adicione a span, defina Sinalização como SS7 (ISUP) e forneça:
- Variante SS7: ANSI (América do Norte; códigos de ponto rede-cluster-membro, como 245-16-1) ou ITU-T (maior parte do mundo; códigos de ponto zona-área-ponto, como 1-10-2, ou um número simples).
- Nosso código de ponto e Código de ponto adjacente, a Rede (nacional, o usual, ou internacional), o Código de link de sinalização (SLC, 0 a menos que informado de outra forma), e o Primeiro CIC: o código do primeiro canal de voz da span, os outros seguindo em ordem. Todos esses vêm do operador.
Conjuntos de links de vários links. Spans com a mesma variante, códigos de ponto e rede são um conjunto de links (até 16 links): o link de sinalização de cada span é um de seus links e precisa de seu próprio Código de link, e todos os circuitos de cada span pertencem a ele (seus CICs podem não se sobrepor). O tráfego é compartilhado entre os links em serviço pelas mensagens SLS, então as mensagens de uma chamada permanecem em um link. Quando um link falha (o teste de link não é respondido ou as mensagens não são reconhecidas), seu tráfego é transferido para os outros (Q.704: COO e COA, as mensagens que o extremo distante não recebeu enviadas novamente em outro link; ou, sem resposta no tempo, por tempo), as chamadas em cada span continuam e Cartões de telefonia diz quantos links estão em serviço e como o estado desse span está. Quando o link está de volta e testado, seu tráfego é transferido de volta (CBD e CBA). Apenas quando todos os links estão down é que o conjunto de links está down. Testado contra libss7 com dois links, um cortado no meio de uma chamada: libss7 aceita mensagens de gerenciamento de rede apenas no link que seu SLS nomeia, então uma mensagem de transferência sobre o link cortado (enviada no outro, como Q.704 tem) é descartada lá, e ambos os lados transferem por tempo, o que funciona; entre dois fins do BitVoice, vai por COO e COA.
Quando a ligação é estabelecida, o BitVoice alinha-a (nível MTP 2, com o período de prova de emergência como um conjunto de links único), prova-a com o teste de link (SLTM/SLTA), troca o tráfego de reinício permitido e redefine cada circuito (GRS). As chamadas que chegam atingem as rotas de entrada com o número discado, o número do chamador (com os números ocultos como anônimos), o número de onde a chamada foi encaminhada e, no ANSI, o nome do chamador; as chamadas que saem transportam o ID e o nome do chamador da extensão. O bloqueio ou reinício de circuitos pelo transportador é obedecido. No caso de disputa dual, o extremo com o código de ponto mais alto mantém os circuitos pares, como diz o Q.764, e o BitVoice assume os circuitos que mantém primeiro.
O SS7 é testado contra a biblioteca libss7 (a biblioteca SS7 usada pelo chan_dahdi do Asterisk), ITU e ANSI: alinhamento, teste de link, reinício de tráfego, reinicialização de circuito, chamadas em ambos os sentidos com números e nomes, liberação, ocupado e bloqueio; e o BitVoice contra si mesmo com quadros perdidos no link (reenviados pelo correção de erros do MTP2) e uma disputa dual. A transferência de sinal (sendo um STP para outros) e SCCP/TCAP (consultas de portabilidade de número, tradução de toll-free) não são oferecidas: um PBX é um ponto de extremidade, e esses são do transportador.
Ponto de transferência de sinal (STP). O bitvoice-dahdi também pode ser um STP para seus conjuntos de links ITU SS7: ative Ponto de transferência de sinal (SS7) abaixo das linhas digitais. Seu Código do ponto STP é o próprio das spans. Com Passar mensagens para outros códigos de ponto, uma mensagem de um conjunto de links para o ponto adjacente de outro vai para esse conjunto de links, e uma para qualquer outro código de ponto vai para o STP IP (M3UA): um STP IP ou gateway de sinalização em host:porta, alcançado sobre M3UA (RFC 4666) sobre TCP, cujas mensagens para os pontos dos conjuntos de links voltam do mesmo jeito (o BitVoice registra seu código de ponto e os que estão atrás dele, a menos que um Contexto de roteamento seja fornecido). Tradução de título global envia mensagens SCCP endereçadas ao STP por título global para o código de ponto e subsistema do prefixo mais longo correspondente, como um relé SCCP faz. Uma mensagem que não pode ser entregue volta para o remetente como um UDTS ou XUDTS quando solicitou isso: sem tradução, sem rota (falha MTP), sem subsistema aqui, ou seu contador de saltos esgotado. O status do STP mostra o link M3UA e quantas mensagens ele passou, traduziu e devolveu. Seu SCCP (UDT, XUDT, UDTS, XUDTS) e TCAP (Iniciar, Continuar, Fim, Abortar, diálogos e componentes) são verificados contra o Osmocom: OsmoSTP sobre M3UA, o usuário de eco SCCP da libosmo-sigtran atrás dele e o codificador TCAP da libosmo-asn1-tcap de ambas as maneiras. O SCTP não é oferecido (o Go não tem): o M3UA vai sobre o TCP, que o OsmoSTP e muitos STPs IP aceitam. O SCCP orientado a conexão, os conjuntos de links ANSI e a gestão SCCP (SST, SSA) não são oferecidos.
Aviso de cobrança. Em uma linha EuroISDN, ative Aviso de cobrança e o BitVoice pedirá à empresa de telefonia, a cada chamada que sai, para informar o custo: durante a chamada (AOC-D) e no final da chamada (AOC-E), em dinheiro ou em unidades de cobrança. O último valor é registrado no histórico da chamada (cobrado EUR 1,50 em Histórico, e ao lado da chamada em Custo); quando está na sua moeda (definida em Custo), é o custo da chamada, em vez do valor das taxas do tronco. A empresa de telefonia deve oferecer o serviço na linha. Troncos SIP podem enviar o mesmo aviso, como o XML AOC 3GPP em um INFO ou BYE, e o BitVoice o mantém da mesma forma.
O código PRI é testado contra a biblioteca libpri (a biblioteca ISDN usada pelo Asterisk), tanto como lado do usuário quanto como lado da rede, para chamadas National ISDN-2 e EuroISDN, nomes, redirecionamento e números conectados, transferência de chamada explícita, Transferência de dois canais B e solicitações de link de tronco DMS-100 (com o PBX do libpri unido ao BitVoice como DMS-100), e aviso de cobrança em ambos os sentidos; e no BRI, ponto a ponto e multiponto, como terminal e como rede (atribuição TEI, chamadas transmitidas para o barramento, números discados dígito a dígito).
Ainda não: ID do chamador exibido em telefones analógicos ou lido de linhas analógicas, flash de gancho e cancelamento de eco além do que o próprio cartão faz.
Troncos
/trunksUm tronco é sua conta com uma empresa de telefone. Ele transporta chamadas para e de números externos. A maioria são troncos SIP; um servidor Asterisk ou FreePBX, ou um provedor IAX2, pode ser alcançado com IAX2 em vez disso.
Adicionar um tronco SIP
- Em Troncos (capítulo 7) pressione Adicionar tronco.
- Insira o servidor do provedor que a sua empresa de telefonia forneceu (
sip.provider.com), e a porta se não for 5060. - Insira o nome de usuário e senha, e ative Registrar se o provedor disser para fazer (a maioria faz).
- Salve. Dentro de alguns segundos o tronco mostrará registrado; se não, o motivo será exibido ao lado dele.
O juiz de saúde do tronco
Com dois ou mais troncos em uma rota de saída, o BitVoice julga a cada 15 segundos se cada um está sendo usado em seu lugar ou tentado após os outros troncos. Um tronco se move para trás dos outros quando o provedor para responder aos controles de manutenção, ou quando as últimas chamadas para fora falharam uma após a outra no lado do provedor (Chamadas com falha consecutivas dentro de Dentro (minutos), Configurações, Juiz de saúde do tronco), e outro tronco está funcionando. Ele não é movido por uma falha de controle de manutenção sozinho enquanto as chamadas através dele ainda estão passando; e quando todos os troncos falham ao mesmo tempo, a causa mais provável é a própria ligação à internet do sistema, então nada é movido. Uma alteração precisa de dois julgamentos consecutivos (30 segundos), então um tronco nunca oscila. Um tronco nunca é removido por completo: ele ainda é tentado quando os outros falham, então uma chamada de emergência sempre tem todos os meios de saída. A página do tronco mostra o julgamento e seus motivos; uma chamada que saiu por outro caminho diz isso em seu registro.
- Adicione uma rota de entrada para o seu número e uma rota de saída que use este tronco (Roteamento de chamadas (capítulo 8)).
| Field | What it does |
|---|---|
| Transport | UDP (usual), TCP, or TLS for encrypted signalling |
| Register | sign in every few minutes, so the provider knows where to send calls |
| Authentication username | only when the provider gives a separate one |
| From domain | the domain in the caller's address, when the provider asks for one |
| Caller ID | the number shown on calls out; an extension's own caller ID wins |
| Also accept calls from | the provider's other addresses or networks that send calls in. Calls from this computer by phones registered here, and the built-in call generator's, are never taken as the trunk's, even when it allows 127.0.0.1 |
| Calls at once | the limit your plan allows; calls beyond it go to the next trunk in the route |
| Encrypt media | SRTP, for providers that support it. A provider that answers without it still gets the call, unencrypted, and Call history marks the call Not encrypted |
| Require encryption | (with Encrypt media) refuse what the provider will not encrypt: a call out it answers without SRTP is hung up, and a call in it sends without SRTP is refused; Call history says why |
| Codecs | leave it on *same as Settings*, or choose what this provider supports, best first |
| Rates | what calls cost by number prefix, for Costs (capítulo 54) |
Provedores de nuvem
Iniciar a partir de preenche Microsoft Teams Direct Routing, Amazon Chime SDK Voice Connector ou Azure Communication Services, com uma nota sobre o que configurar no lado deles. As equipes são descritas em seu próprio capítulo (Microsoft Teams (capítulo 67)).
Troncos IAX2 para Asterisk e FreePBX
Escolha IAX2 como o protocolo para se juntar a outro servidor Asterisk ou FreePBX, ou um provedor IAX2. O IAX2 transporta sinalização e som em uma porta UDP, 4569, o que o torna fácil de passar por firewalls.
- Endereço do servidor: o outro servidor. Deixe-o vazio quando o outro servidor se registra no BitVoice em vez disso (uma filial atrás de um endereço que muda); então o nome de usuário e a senha são os que ele se registra com.
- Nome de usuário e senha: os mesmos em ambos os lados. O BitVoice responde e lida com desafios MD5 e tokens de chamada.
- Registro: entrar no outro servidor, para que ele possa enviar chamadas aqui.
No lado Asterisk, um peer como este é tudo o que é necessário:
[bitvoice] type=friend host=dynamic secret=the shared password context=from-bitvoice
A porta IAX2 4569 é aberta apenas quando o primeiro tronco IAX2 é adicionado, então um Asterisk em execução no mesmo computador o mantém até então.
Troncos H.323
Escolha H.323 como o protocolo para gateways, PBXs e sistemas de videoconferência mais antigos que falam H.323, mas não SIP. Forneça o endereço do gateway (porta 1720); as chamadas são aceitas apenas a partir dele. As chamadas são configuradas com Conexão Rápida e G.711 (lei µ ou A; a lista de codecs do tronco pode restringi-la a um), e o som vai diretamente entre o gateway e as portas de mídia do BitVoice. O BitVoice converte para o que a outra parte usa.
O H.323 aqui é deliberadamente pequeno: nenhum gatekeeper (RAS), nenhum H.245 (então um gateway que não usa Conexão Rápida não recebe chamada e é informado disso), nenhum vídeo, nenhuma segurança H.235. O ID do chamador vem do número de chamada Q.931 ou do alias de dígitos discados do chamador, o nome vem do display ou do ID H.323. O H.225.0 e a codificação H.245 do BitVoice foram verificados contra um codificador ASN.1 independente, mas ainda não contra hardware de gateway.
Chamadas encaminhadas
Quando uma chamada chega a você já encaminhada (alguém encaminhou o seu número ou um usuário do Teams), o provedor informa isso com History-Info (RFC 7044) ou Diversion (RFC 5806). O BitVoice lê ambos: Histórico de chamadas (capítulo 47) mostra encaminhado por o número que o encaminhou, com o número original discado e o motivo na dica, o rastro da chamada diz em palavras e o registro da chamada mantém essas informações (forwardedFrom, original, forwardReason). Quando o provedor solicita que o histórico seja privado, os números não são mantidos.
Quando uma extensão encaminha uma chamada para fora através de um tronco (encaminhar tudo, quando ocupado, quando ninguém atende), o provedor é informado sobre qual extensão encaminhou e por quê, para que possa mostrar o seu número e cobrar a conta certa: por padrão com ambos os cabeçalhos e com o histórico da chamada mantido e o encaminhamento adicionado. Um provedor confuso com um deles pode ser configurado para o outro sob o Avançado do tronco, Chamadas encaminhadas dizem de quem são com. Em um cartão de telefonia T1/E1, qualquer um dos cabeçalhos se torna o número de redirecionamento da rede.
O que o status significa
| Status | Significado |
|---|---|
| registered | conectado; chamadas podem chegar |
| ready | não se registra, ou IAX2 aguardando chamadas |
| unreachable | o nome do servidor não está no DNS, ou nada responde |
| failed | o provedor recusou o registro; o motivo é mostrado |
| standby | servidores compartilham este tronco um de cada vez e outro o mantém |
Roteamento de chamadas
/routesO roteamento de chamadas decide duas coisas: para onde as chamadas de fora vão, pelo número discado, e qual tronco as chamadas para números de fora usam.
Rotas de entrada
Cada rota de entrada corresponde ao número que foi discado (ou qualquer número) e envia a chamada para um destino: uma extensão, grupo de toque, fila, menu, agenda, script, sala de conferência, recepcionista de IA ou correio de voz. Números correspondem em qualquer forma: +1 212 555 0100, 2125550100 e 12125550100 são o mesmo.
- Uma rota para um número ganha sobre uma rota para qualquer número.
- Uma rota pode ser limitada a um tronco, para números que dois provedores ambos enviam.
- Com o modo de emergência ativado (Configurações), cada chamada de entrada vai para um lugar em vez, independentemente do que as rotas dizem: uma evacuação, um fechamento, um incidente.
Rotas de saída
Rotas de saída correspondem ao que as pessoas discam, por padrão, e enviam para troncos em ordem: se o primeiro estiver inativo ou cheio, o próximo é tentado.
| Padrão | Corresponde |
|---|---|
X | qualquer dígito |
Z | 1 a 9 |
N | 2 a 9 |
[1-5] | um de um conjunto |
. no final | um ou mais dígitos adicionais |
NXXNXXXXXX | um número norte-americano de dez dígitos |
1NXXNXXXXXX | o mesmo com 1 na frente |
011. | uma chamada internacional dos EUA |
- Remover remove dígitos do início (um 9 discado para uma linha externa); Adicionar na frente coloca alguns (um código de país).
- A ordem importa: a primeira rota cujo padrão corresponde é usada. Arraste rotas para alterar a ordem.
- Números de premium (900 e similares) são recusados a menos que uma rota os nomeie.
Números de emergência
Os números de emergência sempre funcionam. Uma rota que nomeia o número exatamente é usada primeiro; com nenhuma, todos os troncos funcionais são tentados em sequência. Uma chamada para eles nunca é recusada por limites de extensão, limites de organização hospedada ou rota faltante. Saúde avisa quando nenhum tronco pode transportá-los.
Conjuntos de PIN
/pin-setsUm conjunto de PIN (capítulo 9) é uma lista de PINs que uma rota de saída pede antes de fazer a chamada: para manter as chamadas internacionais ou de longa distância para pessoas com um PIN, ou para cobrar chamadas para clientes e projetos pelo seu código.
- Adicionar conjunto de PIN e listar seus PINs (4 a 10 dígitos cada).
- Ative Manter o PIN no registro de chamada para escrever o PIN usado em cada registro de chamada como seu código de conta (a coluna accountcode das saídas de registro de chamada CSV, syslog e PostgreSQL, e
accountna API). - Na Rota de chamada (capítulo 8), abra uma rota de saída e escolha o conjunto em Pedir um PIN.
Os chamadores que discam um número que a rota pegue ouvem "Por favor, insira seu PIN, então pressione a tecla de hash", inserem-no e a chamada é feita. Três PINs errados terminam a chamada, e a tentativa é registrada como um evento de segurança. Números de emergência nunca pedem um PIN, independentemente da rota que tomem, e as chamadas encaminhadas e os números de follow-me não são pedidos: apenas pessoas que discam de um telefone.
Pesquisa de ID do chamador
/lookupsMuitas empresas de telefonia enviam o número do chamador, mas não o nome. O BitVoice primeiro procura na contatos da empresa (capítulo 38); após isso, uma rota de entrada pode pedir uma pesquisa de ID do chamador (capítulo 10):
- Um endereço web: o seu CRM ou qualquer serviço que responde com o nome. Coloque
{number}onde o número deve ser (https://crm.example.com/api/callers?phone={number}). Uma resposta em texto simples fornece o nome na primeira linha; para JSON, forneça o campo de nome como um caminho pontilhado (data.contact.name; um número entra em uma lista, como emresults.0.name). A autenticação básica é opcional. - OpenCNAM: o banco de dados de nomes de chamadores norte-americanos, com o seu SID da conta e token de autenticação.
Escolha a pesquisa em uma rota de entrada na Rota de chamada (capítulo 8) (Pesquisa de ID do chamador). Os telefones exibem o nome enquanto tocam, e ele vai para o registro de chamada.
Uma pesquisa nunca retarda uma chamada: o BitVoice aguarda no máximo o seu tempo de espera (1,5 segundos, a menos que você mude, 5 no máximo) e, em seguida, toca sem um nome. As respostas são mantidas por um dia (ou por quanto tempo você definir, ou nunca com -1), para que um chamador regular não seja pesquisado em cada chamada; os números que o serviço não conhece são solicitados novamente após uma hora. Tente na página de pesquisa pede um número de uma vez, com as configurações salvas.
Chamadas de emergência
Os números de emergência sempre são feitos, a partir de cada extensão, mesmo aquelas que não podem chamar números externos. Este capítulo é sobre chamadas de emergência feitas a partir dos telefones que o BitVoice executa: uma empresa que chama 911. Atender chamadas de 911 é o perfil 911 (capítulo 77).
O que o BitVoice faz em cada chamada de emergência
- Rota-a, sempre: uma rota que nomeia o número primeiro; com nenhuma, cada tronco funcionando por vez. Limites nunca param: uma extensão que não é permitida chamar números externos, uma organização hospedada em seu limite de chamadas ou suspensa, um tronco em seu limite de canal.
- Envia onde o chamador está: com Enviar o endereço do chamador ativado (Configurações), a chamada transporta o endereço cívico do local, andar e sala para o provedor como PIDF-LO.
- Diz às pessoas no local (Lei de Kari nos EUA): as extensões sob Notificar recebem uma mensagem em seus telefones, cada tela de BitVoice aberta exibe um alerta e os endereços sob Também e-mail recebem um e-mail com o nome do chamador, extensão, local, andar e sala, para que alguém possa encontrar os respondentes na porta.
- Deixa a chamada de volta: por uma hora após uma chamada de emergência, as chamadas de entrada nunca são recusadas, para que o ponto de atendimento possa sempre ligar de volta.
Configurando
- Verifique os números de emergência em Configurações (capítulo 14) (definidos por país: 911 e 933 nos EUA).
- Adicione cada prédio em Locais (capítulo 12), com seu endereço de rua e as redes que seus telefones usam.
- Dê a cada extensão seu local, andar e sala.
- Certifique-se de que uma rota de saída e um tronco transportem chamadas de emergência; Saúde (capítulo 13) avisa quando nenhum pode.
- Preencha Notificar e Também e-mail.
- Discar
933(nos EUA) para ouvir o endereço que o provedor tem.
Trabalhadores remotos
Um telefone que se registra fora das redes do seu local é um trabalhador remoto: a página do seu telefone pergunta onde ele está, e esse endereço é usado em vez disso. Os alertas dizem quando não foi confirmado.
Modo de emergência
Uma coisa diferente: um interruptor que envia todas as chamadas recebidas para um local (evacuação, fechamento, incidente). Defina para onde as chamadas vão, um código opcional como *55 e as extensões permitidas para discá-lo em Configurações (capítulo 14); ative-o no Painel (capítulo 1), ou discando o código (tons ascendentes para ativar, tom baixo para desativar). Uma barra vermelha é exibida em todas as telas enquanto estiver ativo.
Locais e 911 de escritório
/sitesUm local é um prédio: seu endereço de rua e as redes que seus telefones usam. Locais são como uma chamada de emergência diz onde o chamador está, até o andar e quarto. Nos EUA, a Lei Kari e a Lei RAY BAUM'S exigem exatamente isso dos sistemas de telefone de negócios.
Adicionando um local
Em Locais (capítulo 12), pressione Adicionar:
| Campo | O que é |
|---|---|
| Nome | o que as pessoas o chamam: Escritório principal |
| Rua, Cidade, Estado ou província, Código postal, País | o endereço cívico para o qual os respondentes são enviados |
| Redes | os intervalos de endereços que seus telefones usam, como 10.1.0.0/16; um por linha |
Em seguida, em cada extensão, forneça seu local, andar e quarto. Saúde (capítulo 13) lista extensões sem localização.
Como o local de um telefone é encontrado
- Um telefone que se registra a partir de uma das redes de um local está naquele local, com o andar e quarto da sua extensão.
- Uma estação de trabalho remota carrega o local, andar e quarto da própria estação, não da pessoa conectada (Trabalho remoto (capítulo 36)).
- Um telefone que se registra de fora de todas as redes de um local é um trabalhador remoto. Na primeira registro capaz de emergência de um novo local, o usuário é solicitado a confirmar seu endereço na página do telefone; as chamadas de emergência então carregam esse endereço.
- Se um trabalhador remoto nunca confirmou, a chamada ainda é feita, com o local usual da extensão, e os alertas dizem que o endereço não foi confirmado.
Alertas no local
Com Email quando alguém liga para 911 definido em Configurações, as pessoas nomeadas recebem o nome do chamador, extensão, local, andar e quarto assim que uma chamada para um número de emergência começa, para que alguém possa encontrar os respondentes na porta. As extensões Notificar recebem uma mensagem em seus telefones, e todas as telas do BitVoice abertas mostram um alerta. Veja Chamadas de emergência (capítulo 11).
Saúde
/healthSaúde diz se o sistema está pronto para chamadas e, se não, o que fazer. Cada linha diz o que está errado em palavras simples e vincula à tela onde é corrigido. Verifique após cada alteração de qualquer tamanho.
O que é verificado
| Verificação | Por que é importante |
|---|---|
| Chamadas de emergência podem sair | uma rota e um tronco funcionando transportam os números de emergência |
| Extensões sem localização de emergência | suas chamadas de 911 não teriam andar ou sala |
| O serviço de telefone | o SIP está ouvindo e em qual porta |
| Telefones não conectados | extensões que ninguém se conectou como |
| Troncos | registrados, ou o motivo pelo qual não estão |
| Menus sem prompt gravado | os chamadores ouviriam silêncio |
| O fuso horário | os cronogramas seguem-no |
| Gravações e sua retenção | espaço em disco e quanto tempo as gravações são mantidas |
| Certificados | quando o certificado TLS expira |
| Cofres de chaves | segredos que um cofre não pode ler |
| Outros servidores | quando vários compartilham um banco de dados, se cada um está em execução |
Problemas são coloridos: vermelho impede chamadas (nenhuma rota de emergência), âmbar deve ser examinado (um telefone não conectado) e cinza é para informações.
Configurações
/settingsConfigurações contém tudo sobre o sistema como um todo. Cada seção salva por si mesma, e cada salvamento é uma revisão em Alterações (capítulo 61).
| Seção | O que está lá |
|---|---|
| Sistema | nome, país, fuso horário, idioma, o endereço público que os telefones e provedores veem |
| Números | o teste de eco, números de correio de voz e estacionamento, e os números de emergência |
| Codecs | os codecs que os telefones podem usar, melhores primeiro (Codecs (capítulo 66)) |
| Gravação de chamadas | desligada, todas as chamadas, ou extensões selecionadas; regras de consentimento; quanto tempo as gravações são mantidas |
| Som | limpeza para correio de voz e durante chamadas |
| Proteção | banimentos após tentativas de entrada falhas, redes confiáveis, chamadas por extensão, números premium |
| Emergência | enviar o endereço do chamador, quem é notificado, quem é enviado por e-mail, modo de emergência |
| IA | o serviço de IA, modelos e quais recursos de IA estão ativados (IA (capítulo 28)) |
| Entrada única | o provedor de identidade (Entrada única (capítulo 58)) |
| Compatibilidade com Asterisk | AMI e ARI para programas escritos para Asterisk (Compatibilidade com Asterisk (capítulo 70)) |
| Assistentes de IA (MCP) | se os assistentes de IA, como Claude ou ChatGPT, podem se conectar e se podem agir (Assistentes de IA (capítulo 71)) |
| Microsoft 365 e Google Workspace | pessoas e contatos compartilhados para Contatos, e calendários para quem está ausente (Contatos (capítulo 38), Calendários (capítulo 39)) |
| Aplicativos móveis | o serviço de push que acorda os aplicativos |
| o servidor de e-mail para correio de voz, faxes e alertas | |
| Cofres de chaves | segredos mantidos no AWS Secrets Manager ou no Azure Key Vault |
| Configuração a partir do Git | manter a configuração em sincronia com um arquivo em um repositório |
| Banco de dados | SQLite ou PostgreSQL (Banco de dados (capítulo 64)) |
| Certificado | o certificado para esta interface e SIP sobre TLS: do Let's Encrypt, instalado manualmente ou do próprio BitVoice |
Senhas e chaves nunca são mostradas novamente uma vez salvas; deixe-as vazias para mantê-las. Visualizadores veem Configurações com todos os segredos removidos.
O certificado e o Let's Encrypt
O BitVoice começa com um certificado que ele mesmo criou, que os navegadores e telefones alertam sobre. Para um servidor com um nome público, ative Let's Encrypt em Certificado: insira os nomes (pbx.example.com), opcionalmente um endereço de e-mail e aplique. O BitVoice obtém um certificado gratuito do Let's Encrypt, usa-o imediatamente para a interface web, SIP sobre TLS e Teams e o renova cerca de 30 dias antes de expirar (certificados do Let's Encrypt duram 90 dias ou menos). A linha de status diz quando foi emitido, quando renova e, se falhou, por quê; ele tenta novamente após uma hora, então menos frequentemente, dentro dos limites do Let's Encrypt. Verificar agora tenta imediatamente.
O Let's Encrypt deve alcançar o servidor sob cada nome a partir da internet, para provar que é seu:
- http-01 (a escolha, a menos que a interface web esteja na porta 443): um pedido para a porta 80. O BitVoice responde na porta 80 ele mesmo (no Linux, precisa da permissão para abrir portas de baixo nível, como
setcap cap_net_bind_service=+ep bitvoice), ou encaminha a porta 80 no roteador para a porta da interface web, que também responde. Qualquer outra coisa que chega na porta 80 é enviada para o HTTPS, apenas para os nomes do certificado. Quando o BitVoice não pode abrir a porta 80, a caixa do Let's Encrypt diz por quê em âmbar e o que permite (a linha exatasetcappara este programa, ou a capacidadeAmbientCapabilities=CAP_NET_BIND_SERVICEdo systemd; ou outro programa já ocupa a porta). Testar os nomes pede então cada nome para um arquivo de teste sobre a internet, como o Let's Encrypt faria, e diz para cada um se alcançou o BitVoice, alcançou algo mais ou não está no DNS. Alguns roteadores não fazem o loop do próprio endereço público de volta para o interior (nenhum hairpin NAT): lá, o teste falha de dentro, embora o Let's Encrypt, de fora, tenha sucesso. - tls-alpn-01: uma conexão TLS para a porta 443, respondida na porta própria da interface web: para um servidor cuja interface web está na porta 443.
Outras autoridades ACME que não precisam de vinculação de conta (um step-ca próprio de uma empresa, o serviço de teste do Let's Encrypt) são escolhidas em Autoridade. Nomes wildcard precisam de provas DNS, que o BitVoice não faz: instale esses certificados manualmente. Cada servidor de um cluster recebe seu próprio certificado.
As telas no seu idioma
As telas do BitVoice estão disponíveis em inglês e em mais treze idiomas: Deutsch, Français, Español, Italiano, Português, Nederlands, Polski, Svenska, Dansk, Norsk bokmål, Suomi, 日本語 e 简体中文.
Escolhendo um
Cada navegador tem seu próprio idioma: escolha-o no menu (a lista de idiomas ao lado dos temas), na página de entrada ou na primeira página do assistente de configuração. Até que você escolha, o BitVoice usa o idioma do próprio navegador quando ele é um desses, caso contrário, inglês. A escolha é mantida apenas neste navegador: duas pessoas em um servidor podem trabalhar cada uma no seu próprio idioma.
Tudo nas telas é traduzido: o menu, títulos, botões, dicas, mensagens do servidor e os nomes que os leitores de tela anunciam. A busca (⌘K) encontra uma página pelo seu nome no seu idioma ou em inglês. Mantidos como estão: o que as pessoas digitam (nomes, números, notas), endereços, códigos, scripts nos editores e nomes de produtos e protocolos. Datas e números seguem as configurações do próprio navegador.
Como é traduzido e quão bem
As traduções são feitas por uma máquina (um grande modelo de linguagem), para cada parte de texto que as telas mostram, cerca de 5.000 delas; nenhuma foi verificada por uma pessoa. Algumas frases que as telas constroem a partir de peças (um número e uma palavra) podem ser lidas de forma desajeitada, e um termo pode ser traduzido de duas maneiras em dois lugares. Qualquer coisa sem tradução, como uma tela mais nova do que as traduções, permanece em inglês.
Ajuda mantém este manual em inglês, como escrito, com um link no topo de cada capítulo para o mesmo capítulo traduzido inteiro (também por máquina) em bitvoice.org.
O lado do telefone é separado: o que os chamadores ouvem (prompt, menu de correio de voz) está no idioma de prompt padrão (Sons (capítulo 20)), a menos que uma extensão ou uma fila tenha um idioma próprio.
Para onde as chamadas vão
Os blocos de construção que os chamadores passam: grupos e filas, menus e horários, scripts e o recepcionista de IA, correio de voz e o diagrama que mostra tudo.
Fluxo de chamada
/flowVerifique cada situação
Verifique cada situação, no topo do Fluxo de chamadas (capítulo 16), testa todo o seu plano de chamadas em cada situação que pode estar, não uma amostra:
- cada combinação de aberto e fechado que seus horários realmente atingem ao longo do próximo ano (cada feriado incluído), encontrado em intervalos de 15 minutos;
- cada combinação de alternâncias dia/noite (ou, com mais de seis, cada uma alternada sozinha);
- cada rota de entrada, e cada tecla que um chamador pode pressionar em cada menu, cada "se ninguém atender" e cada tempo de espera em fila ao longo do caminho;
- cada extensão discando cada número de emergência.
It lists what it finds, the worst first: a call goes nowhere (a group with nobody to ring and nowhere to go next), a loop, works, but look at it (a queue with no agents), nothing routes to it (a menu or schedule no call reaches), a branch no situation takes (a schedule that is never closed, so its closed side is never used), and emergency calls rest on one trunk (if it fails, they cannot get out). Each finding names the situations that show it: the time and which schedules were open, the toggles switched over, and the path (a call to +12125550100 → Press 2 (Billing) → No answer). Try this call fills Try a call below with that exact situation and traces it.
O mesmo verificador é executado em alterações antes de serem feitas: uma proposta de Perguntar em palavras simples e o Restaurar esta revisão antiga ambos listam o que a alteração quebraria que funciona hoje.
Tente uma chamada
Insira quem liga (uma extensão ou um número externo), o que eles discam e quando, e pressione Tente. O BitVoice segue a chamada exatamente como faria para uma chamada real, sem tocar nenhum telefone: a rota de entrada, os horários nesse momento, os scripts de roteamento (eles são executados em seu sandbox), menus, grupos e filas, e o que acontece se ninguém atender. O caminho que essa chamada segue é marcado; outros caminhos (as teclas de um menu, o outro lado de um horário) podem ser abertos. Verde significa que funciona, âmbar significa olhe para isso (um telefone não conectado, um script caindo), vermelho significa que a chamada falha ali. Marque Suponha que todos os telefones estejam conectados para ver o plano como projetado, em vez de como está agora; Chega em seleciona o tronco para rotas que apenas levam um.
O diagrama
O diagrama mostra para onde vão as chamadas de fora, caixa por caixa: cada rota de entrada, então os menus, grupos, filas, horários, scripts e pessoas para as quais elas levam.
Clique em uma caixa (ou Tab para ela e pressione Enter) para alterar para onde as chamadas vão a partir dela: o destino de uma rota, o Se ninguém atender de uma extensão ou grupo, os destinos abertos e fechados de um horário, as teclas de um menu (adicionar ou remover teclas ali), o fallback de um script ou a pessoa de um recepcionista. Salvar verifica a alteração como qualquer outra e cria uma revisão. Abrir seu editor completo vai para a página do item. Adicionar rota de entrada adiciona uma rota sem sair do diagrama.
Grupos de toque
/ring-groupsUm grupo de toque é um número que toca várias extensões: uma equipe de vendas, a recepção e seu backup, todos na oficina.
Estratégias de toque
- Todos de uma vez: todos os telefones dos membros tocam juntos, e o primeiro a atender pega a chamada. Os outros param de tocar.
- Um após o outro: cada membro toca por um tempo de toque do grupo, na ordem listada. Mova membros com as setas, ou Alt+↑ e Alt+↓.
Membros que estão ausentes (em uma reunião no calendário ou com não perturbe ativado) são pulados; o grupo toca os outros. Membros com o aplicativo móvel são acordados por um push e também tocados.
Se ninguém atender
Quando ninguém atende dentro do tempo de toque, a chamada vai para Se ninguém atender: a caixa de correio de um membro, uma fila, um menu, outro grupo. Com nada definido, toca até o chamador desistir.
Grupos, filas ou pickup?
| Uso | Quando |
|---|---|
| Um grupo de toque | algumas pessoas, qualquer uma das quais pode atender a chamada, e a chamada deve tocar agora |
| Uma fila | os chamadores podem ter que esperar por alguém livre, e devem ouvir sua posição |
| Um grupo de pickup | cada pessoa tem suas próprias chamadas, mas colegas de trabalho podem atender por eles |
Filas
/queuesUma fila mantém os chamadores em ordem, com música, e toca o próximo agente livre. É o coração de um centro de contato e útil em qualquer escritório onde as chamadas chegam mais rápido do que as pessoas podem atendê-las.
Como as chamadas são oferecidas
| Estratégia | Quem é chamado |
|---|---|
| O mais tempo ocioso | o agente livre que esperou mais tempo desde a sua última chamada |
| Rodízio | cada agente livre por vez, continuando do último |
| Tocar todos | todos os agentes livres ao mesmo tempo |
| Menos chamadas | o agente livre que atendeu menos chamadas hoje |
| Em ordem (linear) | sempre do topo da lista: o primeiro agente livre |
| Aleatório | qualquer agente livre, por acaso |
| Aleatório ponderado | por acaso, agentes com uma penalidade mais baixa com mais frequência |
- Ordem: a lista de agentes está em ordem; mova-os para cima e para baixo. Em ordem e Rodízio seguem isso.
- Penalidades classificam agentes (0 a 100, 0 quando vazio): as chamadas são oferecidas aos agentes livres com a penalidade mais baixa, e um agente com uma penalidade mais alta é chamado apenas quando ninguém com uma penalidade mais baixa está livre. Use-as para uma linha de primeira linha e uma linha de transbordo em uma fila.
- Peso classifica filas que compartilham agentes: enquanto uma fila com um peso mais alto tem alguém esperando, seus agentes atendem os chamadores dessa fila primeiro.
- Encerramento dá um tempo ao agente após uma chamada antes da próxima.
- Tempo de espera mais longo: os chamadores que esperam mais vão para o destino de tempo limite da fila. 0 espera para sempre.
- Música de espera: os chamadores ouvem a música da fila (qualquer classe de Sons (capítulo 20)), a música do sistema ou o tom da fila.
- Diga aos chamadores em espera o seu lugar na fila e o tempo de espera esperado (o tempo de espera médio dos chamadores atendidos hoje, em minutos), a cada tantos segundos, na língua da fila. As palavras vêm dos prompts da fila em Sons (capítulo 20); até que esses sejam gravados, nada é dito.
A tela Filas é um quadro de avisos em tempo real: quem está esperando, por quanto tempo e o estado de cada agente.
Agentes
Os agentes discam *45 para entrar ou sair de todas as filas e *46 para pausar (uma pausa) e retomar; os agentes pausados e deslogados não são oferecidos chamadas. O quadro de avisos tem os mesmos botões e mostra por que um agente pausou.
| Estado | Significado |
|---|---|
| disponível | livre; será oferecido o próximo chamador |
| tocando | sendo oferecido uma chamada |
| ocupado | em uma chamada |
| encerramento | acabou de terminar; o tempo de encerramento está rodando |
| pausado | em uma pausa, com o motivo dado |
| ausente | em uma reunião ou de folga, do seu calendário |
| deslogado | não está atendendo chamadas de fila |
Supervisores
Em Chamadas ao vivo (capítulo 46), Supervisionar toca o telefone de um supervisor; quando eles atendem, eles ouvem (não é ouvido por ninguém), sussurram (ouvido apenas pelo agente) ou intrometem (ouvido por ambos), e podem alternar entre eles durante a chamada.
Filas fixas e VIPs
Ative Fixo em uma fila e um chamador que retorna (um atendido nos últimos 30 dias, ou quantos você definir) é oferecido primeiro ao agente que o atendeu da última vez, se esse agente estiver livre; se eles não atenderem, a fila continua como de costume. Os chamadores VIP, no final das Filas, vão para o início de cada fila que eles chamam, após qualquer VIP que já esteja esperando, e são marcados como VIP no quadro.
Discador de saída
/dialerO discador de saída (capítulo 19) chama listas de contatos para os agentes de uma fila (capítulo 18): renovações, lembretes de compromissos, cobranças, pesquisas. Cada campanha tem sua fila, sua lista e sua forma de chamar:
| Modo | Como chama |
|---|---|
| Visualização | um agente pede o próximo contato, vê seus detalhes, então chama (o telefone do agente toca primeiro) ou pula |
| Progressivo | uma chamada para cada agente livre |
| Potência | um número fixo de chamadas para cada agente livre (1 a 3) |
| Previsão | o BitVoice ajusta as chamadas por agente, avançando enquanto poucas chamadas são abandonadas e recuando à medida que a taxa de abandono se aproxima do limite |
- Adicionar campanha: sua fila, seu ID do chamador (o número que os contatos veem), as horas em que as chamadas podem ser feitas em um fuso horário, quanto tempo o telefone de um contato toca, quantas tentativas e quão distantes.
- Abra Contatos e Adicionar uma lista: um arquivo CSV com uma linha de cabeçalho e uma coluna chamada
number(ouphone);namee quaisquer outras colunas são exibidas ao agente em visualização. Números duplicados e inválidos são ignorados. - Grave a mensagem (na campanha): quem está ligando e por quê, e "pressione 9 se você não quiser essas chamadas". Ela é reproduzida para uma pessoa atendida quando nenhum agente está livre, e, se você escolher, após a saudação de uma secretária eletrônica.
- Inicie. Ela chama apenas dentro de suas horas e para de chamar quando é pausada ou nada está pendente.
Pessoas e máquinas. O BitVoice ouve os primeiros segundos após uma resposta: uma longa saudação ininterrupta é uma secretária eletrônica; um breve "alô?" e uma pausa é uma pessoa. Uma máquina pode ser desligada (e tentada novamente), deixar a mensagem ou ser passada para um agente como qualquer outra pessoa. Quando em dúvida, considera a resposta como de uma pessoa.
Chamadas abandonadas. Uma pessoa atendeu quando nenhum agente está livre em dois segundos ouve a mensagem e é contada como abandonada. Com discagem preditiva, se a proporção de chamadas abandonadas sobre as últimas cem respostas ultrapassa o limite da campanha (3%, a menos que você o altere, a regra dos EUA), a campanha disca uma chamada por agente livre até que esteja abaixo. A campanha exibe sua taxa de abandono, chamadas em espera e agentes livres em tempo real.
Não ligar. Nenhuma campanha liga para um número na lista de não ligar, independentemente de qual lista tenha vindo; qualquer pessoa que pressione 9 durante a mensagem é adicionada imediatamente. Adicione números manualmente ou por meio da API (POST /api/dnc). Para o registro nacional (nos EUA, o Registro Nacional de Não Ligar da FTC: baixe os códigos de área que você liga como um arquivo plano), escolha o arquivo em Registro Nacional e Importar: cada linha com um número conta (212,5550100 como a FTC os escreve, ou um número por linha), cabeçalhos e linhas quebradas são ignorados e contados. Com Substituir a última importação ativado, os números da importação anterior são removidos primeiro, para que um número que tenha saído do registro possa ser ligado novamente; números adicionados manualmente ou pressionando 9 sempre permanecem. O registro deve ser atualizado pelo menos a cada 31 dias (regras dos EUA); a página conta a lista e quanto dela veio do registro. A API é POST /api/dnc/import?replace=1 com o arquivo como corpo.
Sons: prompts, idiomas e música de espera
/soundsSons (capítulo 20) contém tudo o que o BitVoice diz ou toca para os chamadores, exceto saudações e prompts de menu, que são gravados onde são usados.
Prompts, em todos os idiomas
Um prompt é uma coisa que o BitVoice diz: "Por favor, insira seu PIN", "Seu lugar na fila é", os dígitos que ele lê. O diretório de discagem por nome, discagem (DISA), chamadas de despertar e anúncios de fila falam com eles. O BitVoice tem as palavras de cada prompt em inglês, espanhol, francês, alemão, italiano, português, holandês e polonês; números são lidos dígito a dígito, o que soa da mesma forma em cada.
- Os chamadores ouvem define o idioma para todos. Uma fila, um número de discagem, um diretório ou uma extensão pode escolher outro.
- Cada prompt pode ser gravado no navegador, carregado (qualquer arquivo de áudio; é convertido em áudio de telefone) ou feito pelo serviço de fala: com um modelo de fala definido em Configurações, AI, um botão cria cada prompt de um idioma a partir de suas palavras. Prompts já gravados são mantidos, a menos que você peça para substituí-los.
- Adicionar um idioma para qualquer outro idioma (um código como sv, ja ou pt-BR); seus prompts são gravados ou carregados, com as palavras em inglês mostradas como um guia.
- Um prompt faltando em um idioma é reproduzido no idioma padrão, então em inglês; com nenhum gravado, os chamadores ouvem um tom curto, para que cada recurso funcione antes que um único prompt seja gravado.
Música de espera
A música de espera é agrupada em classes (Calm, Jazz, Ofertas de vendas…), cada uma uma lista de faixas reproduzidas uma após a outra, do início ou embaralhadas. Faixas de até quinze minutos em qualquer formato que o navegador leia podem ser carregadas; arquivos MP3 e WAV também podem ser enviados diretamente para a API (PUT /api/music/{class}/{name}), e o BitVoice decodifica MP3 por si mesmo (MPEG-1, 2 e 2.5 Layer III, com um decodificador que fornece as mesmas amostras que o minimp3).
Rádio na internet. Uma classe pode reproduzir um fluxo em vez de suas faixas: insira o endereço de um fluxo MP3 (Icecast, Shoutcast, maioria das rádios na internet) em Rádio na internet. O BitVoice se conecta quando o primeiro chamador é colocado em espera com essa classe, reproduz um fluxo para todos que estão esperando e se desconecta meio minuto após o último deixar. Enquanto o fluxo não pode ser alcançado, as faixas da própria classe são reproduzidas (ou o tom de espera, sem faixas), e a classe mostra o motivo.
| Quem ouve | Qual música |
|---|---|
| alguém colocado em espera | a música escolhida na extensão da pessoa que está segurando, caso contrário a padrão |
| um chamador estacionado | a música da pessoa que o estacionou, caso contrário a padrão |
| um chamador esperando em uma fila | a música da fila, caso contrário a padrão |
| um chamador esperando por um líder de conferência | a padrão |
Padrão para todos pode ser o tom de espera, então nada muda até que você escolha uma música. Escolher o tom de espera em uma fila ou extensão mantém o tom lá.
Diretório de discagem por nome
/directoriesUm diretório de discagem por nome (capítulo 22) permite que os chamadores alcancem alguém sem saber o número: eles digitam as primeiras letras do nome no teclado (2 para ABC, 3 para DEF, até 9 para WXYZ) e são conectados.
- Adicionar diretório, nomeie-o e dê-lhe um número (411, por exemplo) ou deixe o número vazio e use-o como uma opção de menu.
- Escolha o que os chamadores digitam: o sobrenome (o usual), o nome ou qualquer um.
- Escolha quem está listado, ou ninguém para listar todos com um telefone.
Os chamadores ouvem "Por favor, digite as primeiras três letras do nome da pessoa". Uma correspondência é conectada imediatamente. Várias são lidas, oito de cada vez: o nome de cada pessoa, então "para chamar essa pessoa, pressione 1", 2 e assim por diante, com 9 para mais nomes. Sem correspondência: "Ninguém corresponde", e eles tentam novamente (três tentativas).
Nomes falados: grave o nome de cada pessoa na sua extensão (Nome falado: grave no navegador ou faça upload de um arquivo), e o diretório o diz; até então, ele lê o número da extensão. As palavras do próprio diretório vêm dos prompts de som em Sons (capítulo 20), no seu idioma.
Discagem (DISA)
/dial-inUma discagem (capítulo 23) (DISA, "acesso direto ao sistema de entrada") permite que alguém ligue de fora, prove quem é e ligue novamente através do escritório: a chamada sai com o ID do chamador do escritório, suas rotas e suas taxas, como se estivesse na sua mesa.
- Adicionar discagem, e defina um PIN (4 a 10 dígitos), os números permitidos para usá-lo (Apenas a partir desses números), ou ambos. Um dos dois é necessário.
- Escolha a extensão das quais as chamadas são feitas como: sua permissão de chamada externa, ID do chamador e rotas de saída se aplicam. Ela deve ser permitida para chamadas externas.
- Dê-lhe um número para discar dentro e envie um número de telefone para ele em Roteamento de chamadas (capítulo 8) (escolha a discagem como destino).
Os chamadores ouvem "Por favor, digite seu PIN, então pressione a tecla de hash", então "Por favor, digite o número para chamar, então pressione a tecla de hash", e são conectados. As palavras vêm dos prompts de discagem em Sons (capítulo 20).
Robôs de voz (AudioSocket)
/voice-botsUm robô de voz (capítulo 24) é um programa de sua própria autoria (um agente de IA, um IVR de reconhecimento de fala, um gravador) que atende chamadas por meio do AudioSocket, o protocolo simples que o Asterisk usa: o BitVoice atende a chamada, abre uma conexão TCP com o robô e envia o UUID da chamada, então o som do chamador como quadros de 20 ms de áudio linear de 8 kHz e 16 bits e cada tecla pressionada; qualquer som que o robô envie de volta é reproduzido para o chamador. Robôs e conectores de serviços de fala escritos para o AudioSocket do Asterisk funcionam com o BitVoice sem alterações.
- Adicionar robô de voz: seu nome, o endereço do robô (
10.0.0.9:9092) e, opcionalmente, um número para discar para ele. - Escolha para onde o chamador vai se o robô não puder atender a chamada, ou interrompê-la (uma pessoa, uma fila, caixa de voz): necessário, para que nenhum chamador seja nunca largado porque um robô está inativo.
- Envie chamadas para ele a partir de Roteamento de chamadas (capítulo 8), uma opção de menu, um cronograma ou um toggle.
Quando o robô envia um hang-up do AudioSocket, a chamada termina; quando o chamador desliga, o robô recebe um. Um robô que não pode ser alcançado dentro de três segundos, ou cuja conexão é interrompida sem um hang-up, passa o chamador para o fallback e o fracasso é registrado.
Para trazer um programa para uma chamada já em andamento (um transcritor de escuta, um assistente que sussurra para ninguém), use a mídia externa do ARI: veja Compatibilidade com o Asterisk (capítulo 70).
Toggles de dia/noite
/togglesUm toggle de dia/noite (capítulo 25) é um interruptor para um fluxo de chamadas (o FreePBX chama de controle de fluxo de chamadas). Chamadas enviadas para ele vão para o seu destino normal, ou para o outro enquanto alguém o comuta: o escritório fecha mais cedo por causa de uma tempestade, alguém discar *281 ao sair, e as chamadas vão para a caixa de voz até que seja comutado novamente de manhã. Ele permanece como foi deixado, através de reinicializações.
- Adicionar toggle, dê-lhe um código (1 a 3 dígitos: discado após
*28) e escolha para onde as chamadas vão normalmente e quando comutadas. Qualquer lado pode ser um cronograma, para que um toggle possa ficar na frente dos horários de funcionamento e substituí-los. - Escolha quem pode comutá-lo de um telefone (nenhum escolhido permite que qualquer extensão o faça).
- Envie chamadas para ele a partir de Roteamento de chamadas (capítulo 8), uma opção de menu ou um cronograma, como qualquer outro destino.
Comute-o discando *28 e seu código (um tom ascendente: comutado; um tom descendente: de volta ao normal), com o interruptor ao lado na página Toggles, ou por meio da API (POST /api/toggles/{id}/state). Uma chave de lâmpada ocupada que observa *281 é acesa enquanto esse toggle estiver comutado, para que a pessoa que fecha o escritório possa vê-lo de sua mesa. O código do toggle em si está em Códigos de recurso (capítulo 32).
Cronogramas
/schedulesUm cronograma envia chamadas de uma maneira quando você está aberto e de outra quando está fechado. Aponte uma rota de entrada para um cronograma e o cronograma para o menu (aberto) e caixa de voz (fechado).
Horário de funcionamento
Cada linha de horas é um conjunto de dias e um horário de e para. Várias linhas são permitidas: segunda a sexta 9:00 às 17:00 e sábado 10:00 às 13:00. Horários podem cruzar a meia-noite (22:00 às 06:00) para turnos noturnos.
Feriados
Feriados contam como fechado o dia todo, independentemente do que os horários digam. Adicione cada data com um nome; o nome é exibido em Fluxo de chamada (capítulo 16) quando você tenta uma chamada nesse dia.
Fuso horário
O fuso horário é o configurado em Configurações. Quando os relógios mudam, os cronogramas seguem o horário local.
Scripts (JavaScript e Lua)
/scriptsUm script decide para onde uma chamada vai quando menus, cronogramas e grupos não são suficientes: chamadores de uma área para um escritório, números VIP diretamente para uma pessoa, uma decisão a partir de seus próprios dados. Ou, configurado para Executa a chamada inteira, ele atende a chamada e a executa, como um dialplan ou script AGI do Asterisk: prompts e fala, teclas, gravações, toques para pessoas, passando adiante (abaixo). Os scripts são escritos em JavaScript ou Lua em Scripts (capítulo 27).
Seguro por design
- Um script de roteamento é executado por no máximo 200 ms. Se ele falhar ou demorar muito, a chamada vai para o fallback do script, então um erro nunca perde uma chamada. (Scripts de chamada têm seus próprios limites abaixo.)
- Ele é executado em uma sandbox: ele não pode alcançar a rede ou o disco. Um script de roteamento apenas escolhe; um script de chamada pode fazer apenas as etapas listadas abaixo, para a sua própria chamada.
- Chamadas de emergência nunca executam scripts.
O que um script vê
call tem:
| Campo | O que é |
|---|---|
from, fromName | o número e o nome do chamador |
to | o número discado |
direction | inbound ou internal |
trunk | o tronco pelo qual entrou |
weekday, hour, minute | a hora atual (0 é domingo) |
date | YYYY-MM-DD |
What it returns
A destination, {type, target}: type is extension, ringgroup, queue, menu, schedule, voicemail or hangup, and target is its number. Returning nothing uses the fallback. log("text") writes to the script's run list.
JavaScript
if (call.from.startsWith("212")) {
log("New York caller")
return { type: "ringgroup", target: "600" }
}
if (call.weekday === 0 || call.weekday === 6) return { type: "voicemail", target: "100" }
Lua
if string.sub(call.from, 1, 3) == "212" then
log("New York caller")
return { type = "ringgroup", target = "600" }
end
if call.weekday == 0 or call.weekday == 6 then
return { type = "voicemail", target = "100" }
end
Usando um script
Aponte uma rota de entrada, uma tecla de menu ou um cronograma para o script, como para qualquer destino. Testar executa-o com uma chamada que você descreve, sem realizar a chamada; a lista de execução mostra cada execução real com sua decisão, tempo gasto e qualquer erro. O fluxo de chamada (capítulo 16) também executa scripts quando você tenta uma chamada.
Scripts que executam a chamada inteira
Escolha Executa a chamada inteira. O script então atende a chamada e vai de cima para baixo, cada etapa esperando até que seja concluída:
| Etapa | O que faz |
|---|---|
play(name) | reproduz um prompt dos Sons (capítulo 20) no idioma do chamador (goodbye, digit-5...), digits:1234, ou um tom: beep, confirm, error, off, hold. Um prompt não gravado ainda é um beep. |
say(text) | fala as palavras com o serviço de fala nas Configurações, IA (um beep sem um) |
collect({max, timeout, interDigit, end, say, prompt}) | coleta teclas: no máximo max (32), esperando timeout segundos para a primeira (5) e interDigit para cada próxima (3), até end (#). say ou prompt pergunta primeiro. Retorna as teclas, "" quando nenhuma. |
record({box, seconds, beep}) | grava uma mensagem na caixa de correio de uma extensão, até # ou o tempo; retorna os segundos |
wait(seconds) | espera, retornando uma tecla pressionada |
dial(destination, ringSeconds) | toca com o chamador ouvindo o sinal de chamada. Atendido: eles conversam e o script é concluído (true). Não atendido: false, e o script continua. |
transfer(destination) | transfere a chamada; o script é concluído |
hangup() | termina a chamada |
log(text) | escreve na lista de execução |
Um destino é um número (uma extensão, grupo de toque ou fila aqui, caso contrário um número externo através das rotas de saída; nunca um número de emergência) ou {type, target} como acima. Uma tecla pressionada durante um som interrompe-o; play e say retornam a tecla e a próxima collect começa com ela. Retornar um destino envia a chamada para lá.
const k = collect({ max: 1, timeout: 5, say: "Press 1 for sales, 2 for support." })
if (k === "1") return { type: "ringgroup", target: "600" }
if (k === "2") {
if (dial("101", 20)) return
say("Nobody is free. Leave a message after the tone.")
record({ box: "101" })
hangup()
}
Lua tem as mesmas etapas (collect{max = 1}). Dê ao script um Número para discar para chamá-lo de uma extensão.
Seus limites mantêm a chamada segura: o próprio código do script pode ser executado no máximo um quarto de segundo entre duas etapas; uma chamada leva no máximo 1.000 etapas; e o script inteiro para após o seu Tempo de execução mais longo (10 minutos, a menos que você especifique, 60 no máximo). Quando ele falha, é interrompido ou termina sem desligar ou transferir a chamada, a chamada vai para o seu Fallback; um chamador que desliga interrompe-o imediatamente. Tentar executa o script com as teclas que você diz que o chamador pressiona e lista cada etapa, sem realizar a chamada.
Recepcionista de IA, triagem de correio de voz e perguntas
/receptionistsRecursos de IA usam o serviço de IA definido em Configurações (capítulo 14): um serviço compatível com o OpenAI (OpenRouter por padrão) ou um que você execute por si mesmo. O que eles precisam é enviado para lá, então escolha um serviço que você confie com as chamadas; para um centro de chamadas de emergência, sua própria nuvem governamental conta como local.
Recepcionista de IA
Escolha um recepcionista como para onde as chamadas vão: uma rota, uma opção de menu ou Se ninguém atender de uma extensão. Ele diz que é automatizado, atende apenas a partir de Informações aprovadas, toma uma mensagem, agenda um retorno de chamada (veja Retornos de chamada (capítulo 30)), ou transfere para Uma pessoa é. Pressionar 0 ou pedir por uma pessoa sempre alcança alguém, e assim também faz qualquer problema com o serviço de IA ou o modelo de fala: os chamadores nunca ficam presos com ele.
Modelos
Modelo faz o trabalho de texto: resumos, respostas do recepcionista e perguntas em palavras simples. Transformar fala em texto precisa de um modelo que aceite áudio; defina-o como Modelo de fala para texto (por exemplo, google/gemini-2.5-flash no OpenRouter) para usar um modelo apenas de texto para o restante, como meta-llama/llama-3.3-70b-instruct.
Fala para texto no prédio
A fala pode ser escrita sem nenhum modelo de linguagem: um reconhecedor de fala (whisper) ouve o áudio e escreve o que foi dito, nada mais. Quem escreve a fala, nas configurações de IA, tem três opções:
- O modelo acima: o áudio vai para o serviço de IA, cujo modelo deve aceitar áudio.
- Este servidor: o BitVoice executa o whisper por si mesmo. Escolha um Modelo whisper e salve: o BitVoice busca-o uma vez do projeto whisper.cpp (
baseé 60 MB;small,mediumelarge-v3-turbosão mais precisos e mais lentos; todos entendem cerca de 100 idiomas), verifica-o contra seu SHA-256 publicado e inicia owhisper-serverdo whisper.cpp em 127.0.0.1 ao lado dele, reiniciando-o se ele parar. O áudio dos chamadores nunca deixa o computador e nada é pago por chamada. Owhisper-server(licença MIT) vem nos downloads do BitVoice ao lado do programa, e os instaladores o colocam ao lado do BitVoice; o BitVoice também encontra um instalado por si mesmo (brew install whisper.cpp). As configurações mostram onde ele está (buscando o modelo, iniciando, executando ou por que não está), e assim também faz Saúde (capítulo 13). Enquanto ele não estiver em execução, as transcrições falham e dizem por quê: elas nunca são enviadas para outro lugar em vez disso. - Um serviço de fala para texto: o
whisper-serverdo whisper.cpp em outro computador no prédio (http://192.168.1.20:8178/inference), para uma máquina com GPU que serve vários servidores BitVoice, ou qualquer serviço OpenAI compatível…/audio/transcriptions(com Seu modelo, como whisper-1, e Sua chave). Ohttpsimples é aceito apenas para este computador ou um endereço de rede privada; qualquer outra coisa deve serhttps. Para executá-lo:whisper-server -m ggml-base-q5_1.bin --host 0.0.0.0 --port 8178 -l auto.
Whichever writes it down, every transcript goes there: voicemail, recorded calls, live 911 calls and receptionists hearing callers. Without the model, the Model may be left empty: transcripts are written, summaries are written from the facts the call said (below), and what needs a language model (action items, voicemail triage, call insight, receptionists' replies, asking in plain words) is left out. Notes a recogniser makes about what it heard, such as [BLANK_AUDIO] or (silence), are dropped, so a quiet stretch never reads as though something was said.
Fatos mencionados na chamada (sem modelo de linguagem)
Toda transcrição também é lida por regras, sem modelo de linguagem, para os fatos que um atendente de chamadas anota: o que aconteceu, onde, quantas pessoas estão feridas (ou que ninguém está), condições (respiração, acordado, sangramento...), perigos (fogo, fumaça, gás, armas, produtos químicos, combustível), veículos, quem é o chamador em relação à pessoa necessitada e um número de telefone para retorno. Cada fato é mostrado com a sentença de onde veio e o lado que o disse, na transcrição Fatos mencionados na chamada. Sem um modelo, o resumo é escrito a partir desses fatos apenas e diz isso.
- Nada é adicionado que ninguém tenha dito. "Ninguém está ferido" é um fato por si só; um chamador que passa as palavras de outra pessoa ("ela diz que ele não está respirando") é marcado relatado; "24 Pine Lane. Não, desculpe, 42" mantém 42; um simples "não" responde à pergunta feita logo antes.
- É fiel, não completo: palavras que não conhece são perdidas. Em três conjuntos de chamadas de emergência 911 inventadas (nenhuma palavra real de um chamador), encontra:
| Conjunto | Fatos encontrados | Fatos encontrados que ninguém esperava |
|---|---|---|
| Treinamento (as regras foram escritas a partir dele) | 41 de 41 | 0 |
| Hold-out, pontuado frio, antes de qualquer regra ser escrita a partir dele | 27 de 40 (67%) | 2 |
| Hold-out, após uma segunda rodada de regras escritas a partir de seus erros | 40 de 40 | 0 |
| Selado, pontuado frio (nenhuma regra é escrita a partir dele) | 23 de 43 (53%) | 3 |
A pontuação selada é a que se pode esperar em chamadas que não viu, e os três conjuntos foram escritos pelas mesmas pessoas que as regras, então chamadas reais provavelmente farão pior. Leia os fatos ao lado da transcrição, nunca em vez dela.
Modelos maiores precisam de mais processador: um servidor que escreve muitas chamadas ao mesmo tempo deve começar com base, ou usar uma máquina com GPU como um serviço de texto-para-fala para o prédio. Em computadores Apple, o whisper usa a GPU.
Triagem de caixa de voz
Com Transcrever e resumir caixa de voz ativado, cada mensagem também é marcada como urgente, normal ou baixa prioridade, com seu tipo (vendas, suporte, faturamento...). Mensagens urgentes levantam um alerta em todas as telas de administrador.
Descreva em palavras simples
Na Alterações (capítulo 61), descreva uma alteração ("enviar chamadas de vendas para a caixa de voz após as 17h"). O AI propõe, o BitVoice verifica como qualquer outra alteração e mostra exatamente o que mudaria. Nada muda até que você pressione Aplicar, e se torna uma revisão que você pode restaurar. As senhas nunca são enviadas para o AI.
Caixa de correio de voz
/voicemailCada extensão pode ter uma caixa de correio. Chamadores que não são atendidos ouvem a saudação e deixam uma mensagem; a pessoa ouve na sua telefone, lê na tela ou recebe por e-mail.
Ativando-a
Na extensão, ative Caixa de correio de voz. Se ninguém atender é então definido para a caixa de correio. Dê-lhe um PIN (4 a 10 dígitos): ele abre a caixa de correio de outro telefone e assina a pessoa no portal de funcionários e em estações de trabalho quentes.
| Configuração | O que faz |
|---|---|
| Mensagem mais longa | 10 a 900 segundos (180 por padrão) |
| E-mail de novas mensagens | para o endereço de e-mail da extensão, com a mensagem anexada |
| Saudação | gravada no navegador, carregada ou gravada do telefone; sem uma, os chamadores ouvem um beep |
Ouvindo
- Do próprio telefone da extensão, disque
*97: as mensagens são reproduzidas em ordem, das mais recentes para as mais antigas; as teclas reproduzem, excluem ou mantêm cada uma. - De qualquer outro telefone, disque
*97, insira o número da caixa de correio e seu PIN. - Em Caixa de correio de voz (capítulo 29) (administradores) ou no portal de funcionários (a pessoa): reproduzir, marcar como ouvida, excluir.
- A luz de mensagem do telefone está acesa enquanto houver mensagens novas.
Com IA
Com Transcrever e resumir caixa de correio de voz ativado (Configurações, IA), cada mensagem é escrita, resumida em uma linha e marcada como urgente, normal ou baixa prioridade com seu tipo (vendas, suporte, faturamento). Mensagens urgentes levantam um alerta em cada tela de administrador. Veja IA (capítulo 28).
Limpeza de som
Limpeza de som (Configurações) remove o ruído de fundo constante e equaliza os níveis à medida que as mensagens são salvas, para que uma mensagem de um carro ou de uma rua movimentada seja mais fácil de ouvir.
Chamadas de retorno
/callbacksPessoas que solicitaram ser chamadas de volta. Um recepcionista de IA agenda uma quando um chamador solicita: coleta o nome, o número para chamar (oferecendo o número que está chamando), um bom horário e do que se trata, lê para eles e agenda apenas quando o chamador concorda. Nunca promete um horário exato. Administradores também podem adicionar chamadas de retorno manualmente.
Uma nova chamada de retorno mostra um alerta em todas as telas abertas e é enviada por e-mail para o proprietário da caixa de correio Receber mensagens para do recepcionista quando essa extensão tiver um endereço de e-mail e o e-mail estiver configurado em Configurações.
Para chamar de volta, escolha sua extensão e pressione Chamar de volta: seu telefone toca primeiro e, quando você atende, o BitVoice chama o número para você, com suas rotas normais e ID do chamador. Em seguida, adicione uma nota, se desejar, e pressione Concluído (ou Cancelar). Chamadas de retorno concluídas são mantidas abaixo das abertas e podem ser reabertas.
Links de chamada e chamada de site
/call-linksUm link de chamada é um endereço web que toca seu negócio a partir de qualquer navegador: nenhum número de telefone, nenhum aplicativo. Coloque-o em uma assinatura de e-mail, imprima seu código QR em um folheto ou em uma janela de loja, ou cole o botão do site em seu site.
Na Ligações de chamada (capítulo 31), adicione um link, escolha para onde as chamadas vão (uma extensão, um grupo, uma fila, um menu, o recepcionista de IA, um horário ou caixa de voz), e guarde: a página mostra o seu endereço e código QR. O chamador vê o título e as palavras que definiu, fornece o seu nome se lhe for solicitado, permite o microfone e prima Ligar agora; o teclado funciona para menus. Quem atende vê Web: e o nome do chamador.
Desligue Aberto para fechar a linha (a página diz isso). Chamadas de uma vez limita quantas pessoas podem chamar através de um link (5, a menos que seja definido). O endereço contém uma parte aleatória longa, então não pode ser adivinhado; endereços errados repetidos são bloqueados como tentativas de entrada falhas. Os microfones dos chamadores precisam que a página seja servida sobre HTTPS, então distribua o endereço HTTPS.
Chamadas diárias
O que as pessoas fazem em seus telefones todos os dias e o que elas configuram para si mesmas: encaminhamento, follow-me, pickup, salas de conferência, paging, mesas quentes, faxes e textos.
Códigos de recurso, encaminhamento e discagens rápidas
/codesOs códigos de recurso são o que as pessoas discam em seus telefones para alterar suas próprias configurações e alcançar recursos. Eles funcionam em todos os telefones, telefone de mesa ou softphone, sem nada configurado no próprio telefone. Um tom crescente significa feito; um tom decrescente significa recusado.
Os códigos de uma olhada
| Código | O que ele faz |
|---|---|
*72 | encaminhar cada chamada (em seguida, o número e #, ou o número diretamente após: *722125550199) |
*73 | parar de encaminhar cada chamada |
*90 / *91 | encaminhar quando em uma chamada / parar |
*52 / *53 | encaminhar quando não atendido / parar |
*78 / *79 | não perturbe ligado / desligado |
*76 | alternar não perturbe (tom ascendente: agora ligado) |
*21 | alternar siga-me ligado e desligado |
*8 | atender uma chamada que toca no seu grupo de recolha |
** e uma extensão | atender a chamada que toca nessa extensão |
*80 e uma extensão | intercom: esse telefone atende no seu alto-falante |
*0 e um código | um disco de velocidade |
*62 | chamada de despertar: ouça, reserve uma (quatro dígitos, como 0630) ou cancele (estrela) |
*68 e um dígito | status da sala, para limpeza em hotéis |
*28 e um código de alternância | alternar uma alternância dia/noite (capítulo 25) sobre, ou de volta |
*32 | bloquear o último chamador: o último número externo que tocou este telefone vai para a lista de bloqueio (Proteção contra spam (capítulo 56)) |
*43 | o teste de eco |
*97 | sua caixa de correio de voz |
70 | estacionar uma chamada (transferi-la aqui); 71 a 79 a recolhem |
*45 / *46 | agentes de fila: entrar ou sair / pausar ou retomar |
*33 / *34 | entrar ou sair em uma secretária |
*7 / *8 durante uma chamada | pausar e retomar a gravação (pagamentos com cartão) |
Encaminhamento
*72encaminha cada ligação. Discar, ouvir um tom, então discar o número e #. Ou discar o número direto após o código.*90encaminha ligações que chegam enquanto você está em uma ligação.*52encaminha ligações que você não atende dentro do seu tempo de toque.*73,*91e*53cancelam-nas.
Encaminhar para outra extensão usa as configurações próprias daquela extensão (sua caixa de voz, seu siga-me), até quatro saltos, então duas pessoas encaminhando uma para a outra não podem criar um loop. Encaminhar para um número externo passa pelas rotas de saída, como se a pessoa tivesse discado, e precisa que a extensão seja permitida a ligações externas.
O encaminhamento é um estado ao vivo, não uma configuração: definir isso não faz uma revisão, e é mantido durante as reinicializações. Extensões (capítulo 3) e o portal do staff mostram e alteram isso também.
Não perturbar
*78 ligado, *79 desligado, *76 troca. Com não perturbar ligado, as chamadas vão para a caixa de voz, ou para o destino de não atendimento da extensão. Não perturbar definido manualmente vence sobre o calendário (Calendários (capítulo 39)). Chamadas de emergência ainda tocam.
Siga-me
*21 alterna o follow-me ligado e desligado, para extensões que têm números follow-me definidos (na extensão, ou no portal do staff). A mesa toca primeiro por seu tempo de toque, então os números follow-me, um após o outro ou todos juntos. Em um número externo com press 1 ativado, a pessoa ouve um tom e pressiona 1 para atender a chamada; uma caixa de voz ou um silêncio nunca o faz, e após 15 segundos a chamada é encaminhada.
Atendendo a chamada de outra pessoa
*8atende a chamada mais antiga que toca para alguém no seu grupo de atendimento (definido em cada extensão; os nomes são comparados sem considerar letras maiúsculas e minúsculas).**e uma extensão atende uma chamada que toca para essa extensão:**101.
Intercom
*80 e uma extensão chamam com auto-resposta: o telefone atende no alto-falante, e ambos os lados conversam. Yealink, Grandstream e Snom lêem o cabeçalho Call-Info do BitVoice, Poly lê Alert-Info; alguns telefones precisam que o intercom seja permitido nas suas próprias configurações. Uma extensão pode recusar o intercom; então a chamada toca como de costume. Estações de porta nunca aceitam intercom.
Discagens rápidas
*0 e um código discam um número salvo: *05. As discagens rápidas da empresa estão nesta página; cada pessoa pode ter as suas próprias na sua extensão ou no portal do staff, e as suas têm prioridade sobre as da empresa com o mesmo código. Os códigos são de 1 a 3 dígitos.
Alterando os códigos
Cada código pode ser alterado em Códigos de recurso (capítulo 32), ou desativado com a palavra off. Dois recursos não podem compartilhar um código, e nenhum código pode ser o número de uma extensão ou de um grupo: o BitVoice informa qual deles está em conflito. Os números de eco, caixa de voz e estacionamento estão em Configurações (capítulo 14).
O portal do funcionário
O portal do funcionário permite que todos cuidem de suas próprias chamadas sem um administrador: não perturbe, encaminhamento, siga-me, discagens rápidas, correio de voz e sua saudação, seu PIN e uma lista de suas próprias chamadas. Está em #/me no endereço do servidor e vinculado à página de entrada.
Entrar
As pessoas entram com seu número de extensão e seu PIN de correio de voz: o mesmo PIN que abre seu correio de voz de um telefone e as faz entrar em mesas quentes. Uma extensão sem um PIN não pode entrar; um administrador define um na extensão.
Tentativas erradas repetidas de um endereço bloqueiam-no por dez minutos. Uma sessão do portal alcança apenas as configurações da pessoa: nunca outra extensão, a configuração ou as gravações de alguém.
O que as pessoas podem fazer
| Guia | O que está lá |
|---|---|
| Para onde vão as chamadas | não perturbe; encaminhamento de cada chamada, quando ocupado e quando não atendido; números de siga-me; discagens rápidas próprias |
| Correio de voz | mensagens para tocar e excluir, com transcritos e resumos quando a IA está ativa; gravar ou carregar a saudação |
| Suas chamadas | as chamadas próprias da pessoa, mais recentes primeiro, sem gravações |
| PIN | alterar o PIN, fornecendo o atual |
Encaminhamento e não perturbe definidos aqui são os mesmos que os definidos do telefone com códigos de recurso (Códigos de recurso (capítulo 32)): qualquer um que tenha sido definido por último está em vigor. Números de siga-me e discagens rápidas são parte da configuração da extensão, então alterá-los cria uma revisão em Alterações (capítulo 61), registrada como própria da pessoa.
Chat e presença
A aba Chat do portal lista os colegas com o seu estado atual: disponível, em uma chamada, tocando, ausente (não perturbe, uma reunião ou tempo de folga do seu calendário, com o motivo) ou offline (nenhum telefone conectado), e o estado que eles digitaram ("Almoçando, volto às 14"). Escolha alguém para enviá-los uma mensagem; as mensagens chegam imediatamente, e um número ao lado do nome conta as mensagens não lidas. Salas de equipe (Configurações, Chat da equipe) são conversas para um grupo, ou para todos quando uma sala não lista membros.
As mensagens são vistas apenas pelas pessoas na conversa: os administradores gerenciam as salas, nunca as leem. Configurações, Chat da equipe desativa o chat e define por quanto tempo as mensagens são mantidas (0 mantém as mil mais recentes de cada conversa).
Salas de conferência
/conferencesUma sala de conferência é um número que as pessoas discam para conversar todas juntas. O pessoal da equipe discam para ela a partir de suas mesas; os chamadores externos a alcançam por meio de uma rota de entrada ou uma opção de menu que aponta para a sala.
Configurando uma sala
- Abra Salas de conferência (capítulo 34) e pressione Adicionar sala de conferência.
- Dê um número (qualquer número livre, 500 por padrão) e um nome.
- Opcionalmente, defina um PIN. Os chamadores ouvem um tom, digitam o PIN e pressionam #. Três PINs errados e a chamada termina.
- Opcionalmente, defina um PIN de líder, diferente do PIN. Quem o digita se junta como líder.
- Para permitir que os chamadores externos entrem, aponte uma rota de entrada (ou uma tecla de menu) para a sala.
Opções
| Opção | O que ela faz |
|---|---|
| Aguardar o líder | todos os outros ouvem o tom de espera até que um líder se junte; quando o último líder deixa a sala, a sala fecha e todos são desligados. Precisa de um PIN de líder. |
| Membros se juntam em mudo | para briefings e palestras: líderes falam, membros ouvem. Um membro pressiona 1 para pedir para falar, e um líder o desmuta. |
| Gravar a sala | toda a sala é mantida como uma gravação em Histórico de chamadas (capítulo 47), a menos que a gravação esteja desativada para todo o sistema |
| Tons quando as pessoas se juntam e saem | ativado por padrão |
| Maior número de pessoas ao mesmo tempo | 50 por padrão, até 200 |
Teclas durante uma chamada
1muda e desmuda você mesmo (em uma sala onde os membros estão mudos, pede para falar).2, para um líder, trava a sala para que ninguém mais possa se juntar, e a destrava.
Enquanto uma sala está em uso
A página mostra cada sala em uso: quem está dentro, quem está falando (a luz verde), quem está mudo, quem pediu para falar e quem ainda está aguardando o líder. Um administrador pode mudar ou desmudar qualquer um, remover alguém e travar ou destravar a sala.
Todos em uma sala ouvem todos os outros que não estão mudos, misturados pelo BitVoice; cada telefone pode usar seu próprio codec. Um registro de chamada é mantido para cada chamada de cada pessoa, e um para a sala em si com seu comprimento e gravação.
Áudio HD
Ative Áudio HD em uma sala (novas salas têm isso ativado) e ele é misturado em 16 kHz em vez de 8: as pessoas em telefones de banda larga (G.722, Opus, o telefone do navegador) ouvem umas às outras em HD, com a nitidez de uma chamada moderna, enquanto as pessoas em telefones comuns (G.711, celulares por meio de um provedor) ouvem a mesma sala como de costume. A visão ao vivo marca a sala e cada membro que está em HD. O HD precisa do G.722 entre os codecs que os telefones usam (é o primeiro na lista do sistema, Configurações, Codecs). As gravações da sala permanecem em qualidade de telefone.
Salas de vídeo
Defina Vídeo em uma sala e os telefones de vídeo (e os softphones) que se juntam a ela enviam sua câmera e veem uma imagem, alternada à medida que as pessoas falam, como no ConfBridge do Asterisk:
- Siga o falante: todos veem quem falou por um segundo, uma vez que o que está na tela esteve quieto por um segundo; a pessoa na tela vê a anterior.
- Mostre o líder: todos veem o líder (que se junta com o PIN de líder); o líder vê quem falou por último.
- Grade: todos veem todos ao mesmo tempo, lado a lado (uma imagem preenche a tela, duas lado a lado, então 2 por 2 e 3 por 3, até nove), cada pessoa em seu próprio lugar na ordem em que se juntaram, incluindo eles mesmos.
O BitVoice alterna as imagens sem decodificá-las, então isso custa quase nada, e ele pede a cada novo telefone de imagem um quadro completo (RTCP PLI e FIR, e o SIP INFO picture-fast-update que a maioria dos telefones de mesa responde) para que a troca seja exibida imediatamente. O vídeo de cada membro usa o codec de vídeo da sala (H.264, a menos que você escolha VP8); um telefone sem ele se junta com som apenas. Cada visualizador recebe um fluxo estável (uma fonte, seu próprio tipo de payload), quem está na tela. A visão ao vivo marca quem tem vídeo e quem está na tela.
Uma grelha é feita de forma diferente: o BitVoice fornece cada imagem ao ffmpeg no servidor, que as decodifica, coloca em uma imagem de 1280 por 720 a 15 quadros por segundo e as codifica uma vez para todos. Instale o ffmpeg (Configurações, Conversão de vídeo, indica se foi encontrado); sem ele, uma sala de grelha segue o orador em vez disso, e a tela da sala indica isso. Cada imagem custa tempo de processador: em um servidor pequeno, mantenha as grelhas em apenas algumas salas de cada vez. Apenas os membros cuja câmera está enviando são exibidos: alguém que se junta sem vídeo ou cuja câmera para deixa a grelha (ela nunca congela em uma câmera estática), e a grelha é refeita dentro de alguns segundos quando isso muda, com uma breve pausa na imagem. O décimo membro e subsequentes são ouvidos, mas não exibidos. A vista ao vivo marca o tamanho da grelha e quem está na grelha.
Vídeo de todos (navegadores)
Escolha Vídeo de todos e a sala obtém sua própria página (Salas de conferência, Abrir a sala de vídeo, ou #/video-room/NUMBER). Cada pessoa lá pressiona Juntar-se com a minha câmara: o navegador envia sua câmara uma vez, em três tamanhos (simulcast), e recebe cada outra câmara em sua própria imagem. O BitVoice encaminha as imagens como elas vieram, nunca decodificando-as (uma unidade de encaminhamento seletivo, SFU), então custa pouco tempo de processador; o upload de cada navegador e o download de cada visualizador são o que limitam uma sala, então pode ter até 16 câmaras.
- A imagem grande obtém o tamanho completo daquela câmara, as pequenas imagens o tamanho pequeno; Tornar grande troca-os, e a troca acontece na próxima imagem completa do novo tamanho, que o BitVoice pede de uma vez (RTCP PLI).
- Um navegador que está com pouco upload para de enviar seu tamanho maior; os visualizadores então obtêm o tamanho maior que ainda está vindo.
- O som é a conferência da sala como sempre: juntar-se a chamadas a sala no telefone do navegador, e qualquer pessoa que discar a sala de um telefone é ouvida e ouve todos. Telefones de vídeo que discam vêem quem fala.
- Uma sala com um PIN pede por ele na página. A página precisa de um login no BitVoice.
Compartilhar uma tela: prima Compartilhar minha tela e escolha uma tela, uma janela ou uma aba de navegador no seletor de navegador. Todos na sala veem como a grande imagem, abaixo do seu nome, com texto mantido nítido (a taxa de imagem cai em vez disso quando a rede é curta). Você não precisa se juntar com sua câmera primeiro. Parar de compartilhar, ou a barra Parar de compartilhar do navegador, termina-o.
- Uma sala mostra uma tela compartilhada de cada vez: enquanto alguém compartilha, o botão dos outros aguarda e diz quem está compartilhando. Uma tela compartilhada não conta para as 16 câmeras.
- Alguém mais pode ser feito a grande imagem com Tornar grande, como com câmeras; a tela permanece na sala.
- A imagem da tela apenas, nunca seu som: o som da sala permanece sua conferência.
- Telefones que não podem compartilhar uma tela (a maioria dos navegadores de telefone) mostram o botão cinza. Telefones de mesa e outros telefones de vídeo que discam a sala não veem telas compartilhadas; veem quem fala.
Página e alto-falantes
/pagingPágina fala por meio de muitos telefones de uma vez: discar um número de página, e cada telefone no grupo atende no alto-falante sozinho. Use-o para anúncios para um armazém, uma escola, uma loja.
Configuração de um grupo de paging
- Na Paging (capítulo 35) pressione Adicionar grupo de paging e atribua-lhe um número (800 por predefinição) e um nome.
- Escolha os telefones. Altifalantes sobrepostos configurados como extensões (tipo Altifalante sobreposto) também podem ser membros.
- Opcionalmente, um endereço multicast e porta.
Multicast
O Multicast também envia a página para um endereço multicast e porta (239.0.1.10:5000), como G.711 µ-law, que os altifalantes sobrepostos e muitos telefones de secretária podem ouvir sem uma chamada cada. Um grupo pode ter apenas um endereço multicast. Ele funciona em uma rede: os roteadores não passam multicast a menos que sejam configurados para isso.
Paging e intercom
| Paging | Intercom | |
|---|---|---|
| Quem ouve | todos no grupo | uma extensão |
| Retorno de chamada | não, apenas uma via | sim, duas vias |
| Como | discar o número do grupo | *80 e a extensão |
Os telefones que não atendem a uma página por si mesmos dentro de alguns segundos são excluídos, para que um telefone sem auto-resposta nunca retarde uma página. Alguns telefones precisam de auto-resposta (intercom) permitida nas suas próprias configurações.
Hot desking
/phonesUm hot desk é um telefone compartilhado que se torna de quem se conecta a ele: para escritórios onde as pessoas não têm mesas fixas. Crie um ativando Hot desk na extensão do telefone configurado (a extensão própria da mesa, como 900 Mesa 3).
Conectando e desconectando
- No telefone, discar
*33e aguardar o tom. - Digitar a extensão e #, e aguardar o tom.
- Digitar o PIN de correio de voz e #. Um tom ascendente significa que você está conectado; um tom descendente significa que foi recusado.
A partir daí, as chamadas para a sua extensão tocam essa mesa, bem como os outros telefones, e as chamadas que você faz a partir dela mostram o seu número e nome e contam como suas nos Custos. Conectar-se a outra mesa o move para lá. *34 o desconecta. Cinco tentativas erradas bloqueiam a mesa por dez minutos.
Gerenciando hot desks
Em Telefones (capítulo 4), Hot desks mostra quem está conectado onde; os administradores podem conectar alguém (sem o PIN) ou desconectar. Os códigos e um horário todos os dias, quando todos são desconectados, estão em Configurações. As conexões são mantidas após reinicializações.
Chamadas de hotel e despertador
/hotelChamadas de despertador
Qualquer pessoa pode reservar uma chamada de despertador: hóspedes, turnos noturnos, pessoas de plantão. A partir de seu próprio telefone, eles discam *62: o BitVoice diz o horário definido (se houver), então eles entram o horário como quatro dígitos (0630), ou pressionam a tecla estrela para cancelar. Na página Hotel (capítulo 37), um administrador reserva uma para qualquer extensão, uma vez ou todos os dias.
No momento, o telefone toca com o nome do sistema; atendido, ouve-se "Bom dia. Este é o seu despertador." (o prompt de despertar em Sons (capítulo 20), no idioma do hóspede ou da extensão). Não atendido, é tentado novamente (3 tentativas, 5 minutos aparte, ambos configurados em Configurações na página), e após a última a extensão recepção pode ser chamada. Com vários servidores, apenas um faz chamadas de despertar.
Quartos de hóspedes
Ative Quarto de hóspede na extensão do telefone de cada quarto. No Hotel, cada quarto mostra seu hóspede, chamada de despertar e status do quarto, com botões Check-in e Check-out.
- Bares de quartos vagos: quartos sem ninguém checkado chamam apenas extensões e números de emergência. Chamadas de emergência sempre funcionam.
- Limpar ao check-out: exclui a caixa de voz do quarto e cancela sua chamada de despertar, encaminhamento e não perturbe, pronto para o próximo hóspede.
- O idioma de um hóspede (do check-in) é o idioma em que os prompts do quarto são ditos.
- Status do quarto: a equipe de limpeza discar
*68e um dígito do telefone do quarto (*683); o sistema do hotel decide o que cada dígito significa.
The hotel system (PMS)
- FIAS: BitVoice connects to the FIAS interface of the hotel system (Oracle Opera and the many systems that speak FIAS) at its address and port. It receives check-ins, room moves, check-outs and wake-up bookings, and sends wake-up results, room status and call charges. While the link is down, what it would send waits and goes when it is back; the page says whether it is linked. The records follow Oracle's FIAS 2.20.23 specification: BitVoice describes itself as a phone system (IF PB), call charges are direct charges (PT C) with the amount in the currency's smallest unit and the dialled digits without + or spaces, and a wake-up result repeats the booked time to the second, so the hotel system can match it to its request.
- REST API: the hotel system calls
POST /api/hotel/rooms/<room>/checkin(name, account, language),/checkout, andPUT /api/wakeups/<room>, with an API key from Settings, Automation. Charges are posted as JSON to the address you give. - Charge calls: answered outside calls from occupied rooms go on the guest's bill, at the trunk's rates (from Costs (capítulo 54)) plus the markup.
Contatos em todos os telefones
/contactsContatos é o diretório da empresa: os fornecedores, clientes e outros escritórios que as pessoas chamam. Cada telefone lista-o ao lado das extensões, e quando um desses números toca, os telefones e o cartão do chamador mostram o nome do contato (quando o provedor não enviou nenhum). Um número coincide independentemente de como está escrito: +1 212 555 0100 e 2125550100 são a mesma linha.
Adicionando contatos
Adicionar contato para um de cada vez, com tantos números (trabalho, móvel, casa, outro) quanto eles tiverem. Importar leva uma planilha salva como CSV cuja primeira linha nomeia as colunas: nome, empresa, trabalho (ou telefone), móvel, casa, outro, e-mail, notas. O BitVoice verifica todo o arquivo primeiro e diz quais linhas estão erradas; um contato com o mesmo nome que um existente é atualizado em vez de adicionado duas vezes, e Substituir todos os contatos começa a lista de novo. Exportar baixa a lista como CSV.
Em telefones de mesa
Telefones configurados por Telefones (capítulo 4) (provisionamento) recebem o diretório sem mais configuração:
- Yealink: um diretório remoto nomeado Empresa, atualizado a cada hora.
- Grandstream: a transferência do diretório, a cada hora.
- Polycom: o arquivo de diretório, lido quando o telefone é iniciado.
- Snom: a lista é escrita nas configurações do telefone, então é atualizada quando o telefone verificar as configurações novamente.
No telefone do navegador
Contatos sob o teclado encontra um nome ou número e o coloca pronto para chamar.
A partir do Microsoft 365 ou do Google Workspace
O BitVoice pode manter os Contactos em sincronia com o diretório da sua organização: todos os que têm um número de telefone e os contactos partilhados (contactos da organização do Exchange ou contactos de domínio partilhados do Google). Em Definições (capítulo 14), Microsoft 365 e Google Workspace, escolha o serviço, forneça o que é necessário e prima Verificar agora: ele entra, conta as pessoas e diz quais extensões correspondem a uma pessoa por e-mail. Guarde, e os Contactos são preenchidos dentro de meio minuto; depois, a cada meia hora, ou de imediato com Sincronizar contactos agora.
Microsoft 365 (um registo de aplicação; você precisa ter permissão para conceder consentimento de administrador):
- No centro de administração Entra, Registos de aplicação, Novo registo: nomeie-o BitVoice, inquilino único, sem endereço de redirecionamento.
- Permissões de API, Adicionar permissão, Microsoft Graph, Permissões de aplicação:
User.Read.All,OrgContact.Read.AlleCalendars.ReadBasic. Em seguida, Conceder consentimento de administrador. - Certificados e segredos, Novo segredo do cliente: copie o seu valor (exibido uma vez).
- No BitVoice: o ID do diretório (inquilino), o ID do aplicativo (cliente) e o segredo. Um segredo expira (a Microsoft oferece até dois anos): quando expira, o cartão diz que o segredo foi recusado; crie um novo e cole-o.
Google Workspace (uma conta de serviço; você precisa ser um superadministrador):
- No Google Cloud, em um dos seus projetos: ative a API de Pessoas e a API do Google Calendar, crie uma conta de serviço e adicione uma chave (JSON) a ela.
- No console de administração do Google, Segurança, Controle de acesso e dados, Controles de API, Delegação de domínio, Adicionar novo: o ID do cliente da conta de serviço, com os âmbitos
https://www.googleapis.com/auth/directory.readonly,https://www.googleapis.com/auth/calendar.freebusy. - No BitVoice: o arquivo da chave e o e-mail de um administrador para a conta de serviço agir como.
O que é importado:
- O número de trabalho e móvel de uma pessoa, nome, e-mail e seu título e departamento como notas de contato; o nome da organização como sua empresa. Pessoas sem número são excluídas (um contato precisa de um); contas desativadas são excluídas.
- Contatos do serviço são marcados com o seu nome e são alterados lá: alterar ou remover um aqui é recusado, pois a próxima sincronização anularia isso. Contatos criados aqui ou importados de uma planilha são deixados em paz.
- O BitVoice só lê. Seu acesso são as permissões de leitura acima e o segredo ou chave é mantido com os outros segredos: os visualizadores nunca o veem e as exportações para o Git o excluem.
Calendários e não perturbe
/extensionsUma extensão pode seguir o calendário da pessoa: durante reuniões e tempo de folga, as chamadas são encaminhadas para a caixa de correio de voz ou são encaminhadas (para outra extensão ou um celular), em vez de tocar um telefone que ninguém atenderá. Grupos de toque tocam os outros enquanto isso, e nas filas o agente aparece como Ausente.
Na extensão, Calendário e não perturbe, cole o endereço privado do calendário:
- Outlook: Configurações, Calendário, Calendários compartilhados, Publicar um calendário; escolha o calendário e "Pode visualizar todos os detalhes", então copie o link ICS.
- Google Calendar: Configurações, o calendário à esquerda, então Endereço secreto no formato iCal.
Verificar o lê de uma vez e lista os próximos horários ocupados. O BitVoice lê cada calendário a cada cinco minutos. Tempo de folga (eventos de todo o dia e "fora do escritório" do Outlook) sempre conta; reuniões contam quando Reuniões contam como ocupado está ativado; eventos marcados como livres nunca contam, nem os cancelados. Reuniões recorrentes, com ocorrências puladas e movidas, são compreendidas. Se um calendário não puder ser lido, a Saúde diz isso.
Não perturbe agora impede que a extensão toque até ser desligado, independentemente do que o calendário diga. A lista de extensões mostra quem está ausente e até quando.
O endereço privado funciona como uma senha: qualquer pessoa com ele pode ler aquele calendário, então é mantido com os outros segredos.
Todos os calendários de uma vez: Microsoft 365 e Google Workspace
Em vez de um endereço privado por extensão, o BitVoice pode ler o calendário de cada pessoa a partir do Microsoft 365 ou do Google Workspace: configure-o uma vez em Definições (capítulo 14), Microsoft 365 e Google Workspace (veja Contactos (capítulo 38) para os passos), com Calendários indicam quem está ausente ativado. Cada extensão é associada à sua pessoa pelo seu e-mail; uma com um endereço privado próprio usa esse em vez disso. As definições da extensão aqui (Reuniões contam como ocupado, Enquanto ocupado, chamadas) aplicam-se como com um endereço privado.
- Microsoft 365 distingue reuniões de tempo de folga: uma reunião marcada como fora do escritório conta como tempo de folga; reuniões tentativas e tempo marcado como livre ou trabalhando em outro local nunca param o toque do telefone. Uma reunião privada é exibida como "Em uma reunião", sem o seu título.
- Google Workspace fornece horários ocupados sem dizer por quê, por isso eles sempre contam como reuniões.
- Os calendários são lidos a cada cinco minutos e imediatamente quando as definições mudam. Uma extensão cujo e-mail o serviço não conhece diz isso na sua seção de calendário.
Aplicativos móveis
Os aplicativos BitVoice para iPhone e Android tornam um telefone móvel um dos telefones de uma extensão. Ele toca como um telefone de mesa, na tela de chamada do próprio telefone, mesmo quando o aplicativo está fechado.
Configurando push
Um aplicativo fechado é acordado para chamadas por uma mensagem de push. Em Configurações (capítulo 14), Aplicativos móveis, escolha um:
| Push | O que você precisa |
|---|---|
| Relay de push | o relay da BioDream (com hospedagem ou suporte) ou o seu próprio bvpush: o Endereço do relay, ID da chave e Segredo |
| Aplicativos próprios | suas próprias compilações: para Apple, o ID da equipe, ID do pacote, ID da chave e Chave (.p8); para Google, a conta de serviço do Firebase (JSON) |
Defina Endereço que os aplicativos usam para o endereço https deste servidor como ele é alcançado de qualquer lugar, não apenas do escritório.
Emparelhando um telefone
- Abra a extensão e pressione Adicionar um telefone.
- Escaneie o código QR no aplicativo. O código funciona uma vez, por dez minutos.
Quando uma chamada chega
O BitVoice acorda o aplicativo; ele se conecta, toca na tela de chamada do próprio telefone e é atendido como qualquer outro telefone da extensão: grupos de toque e filas tocam com os outros telefones da extensão. A página da extensão lista seus telefones emparelhados, se cada um Pode ser acordado para chamadas, quando foi visto e acordado pela última vez, e qualquer problema de push. Desemparelhar para o telefone parar de tocar imediatamente, para um telefone perdido.
Em uma chamada
O aplicativo é uma extensão completa, não apenas um discador:
- Transferir um chamador para outra extensão ou um número externo (o próprio Transfer da tela da chamada, ou o botão do aplicativo). Para o número de estacionamento, ele estaciona a chamada.
- Segurar e retomar, a partir da tela da chamada ou do aplicativo; chamadores segurados ouvem a música de segurar onde ela é definida.
- Uma segunda chamada: discar enquanto a primeira está em segurança, e alternar entre elas.
- Teclas de tom (DTMF) durante a chamada, e Mudo.
As outras abas
- Recentes: chamadas para e da esta extensão, mais recentes primeiro, toque para ligar de volta (chamadas perdidas se destacam).
- Caixa de voz: cada mensagem com sua transcrição (capítulo 29) onde a IA escreve uma, reproduzir, ligar de volta ou excluir.
- Equipe: quem está livre, em uma chamada, tocando ou ausente (uma lâmpada de ocupado), para ligar para eles ou transferir a chamada atual para eles.
- Contatos: o diretório da empresa, para encontrar um nome e ligar para ele.
- Chat: o chat da equipe (Chat e presença), colegas com sua presença e mensagens diretas, e salas de equipe, dentro do telefone. Uma nova mensagem enquanto o aplicativo está em segundo plano é exibida como uma notificação, e tocá-la abre o Chat; quando o aplicativo está fechado, ela vem pelo mesmo push que as chamadas.
- Participar de uma sala de vídeo: escolher uma das salas de vídeo (capítulo 34) (ela lista-as, com quantas pessoas estão em cada uma agora). Ela abre sobre o telefone, que continua em execução embaixo, e você se junta como sua extensão: nenhum login de administrador é necessário. Na primeira vez, o telefone pede a câmera. Sair, ou Voltar no Android, retorna ao telefone; o som da sala permanece como uma chamada de vídeo nele até que você desligue. O telefone exibe a sala como uma chamada de vídeo em sua própria tela de chamada enquanto você está nela.
- Chamadas que você faz vão para o sistema de chamadas do próprio telefone também (CallKit no iPhone, Telecom do Android), então Bluetooth, um carro ou um relógio as mostram, e uma chamada móvel que chega enquanto isso sabe delas.
Transcrição ao vivo em uma chamada
Com Escrever chamadas ao vivo ativado (Configurações (capítulo 14), IA), cada lado de uma chamada é escrito enquanto é falado e exibido no telefone enquanto a chamada está em andamento. O áudio vai para o serviço de reconhecimento de fala (em seu próprio computador, onde isso é configurado) ou o serviço de IA enquanto a chamada dura. É a mesma escrita que transcrições ao vivo de 911 (capítulo 13), para chamadas comuns.
Chamadas de vídeo
/settingsQuando ambos os telefones em uma chamada enviam vídeo (telefones de vídeo, softphones, campainhas de vídeo), a imagem passa entre eles através do BitVoice. Nada a configurar: está ativado, a menos que Configurações → Chamadas de vídeo esteja desativado.
- O BitVoice retransmite o vídeo como está, em uma porta própria para cada telefone, para que os telefones nunca aprendam os endereços um do outro. Com um codec em comum (quase todos os telefones de vídeo têm H.264) ele nunca decodifica o vídeo; sem um, ele pode converter (abaixo). Quando eles numeram o mesmo codec de forma diferente, o BitVoice renomeia-o no caminho.
- A imagem é criptografada (SRTP) para cada telefone que criptografa seu som.
- Um pedido de um telefone para uma nova imagem (após pacotes perdidos) atinge o outro telefone, para que a imagem se recupere em um momento.
- Uma câmera ligada durante uma chamada (um botão de vídeo de um softphone) também funciona: o outro telefone é perguntado primeiro, e a imagem começa quando ele diz sim.
- Um telefone sem vídeo, ou uma chamada para um número externo, obtém somente som. Em espera ou enquanto estacionado a imagem pausa, e retorna quando a chamada retorna. Após uma transferência, ela continua apenas quando a nova parte envia vídeo também.
- O vídeo usa muito mais da rede do que o som (cerca de 0,5 a 2 Mbit/s por chamada em cada direção): permita isso em links lentos e na faixa de porta de mídia.
Convertendo vídeo
Telefones e aplicativos que compartilham um codec de vídeo (a maioria usa H.264) obtêm o vídeo um do outro como está. Quando duas partes não têm nenhum codec em comum (um telefone de mesa com apenas H.264 e um navegador com apenas VP8), ative Converter vídeo entre H.264 e VP8 nas Configurações: o BitVoice oferece então ambos os codecs, responde a cada parte no seu próprio codec e converte cada caminho com ffmpeg, que deve ser instalado no servidor (apt install ffmpeg, brew install ffmpeg; ou forneça o caminho). A conversão custa cerca de um núcleo de processador por chamada e adiciona um pequeno atraso, então está desativado por padrão e usado apenas quando necessário. As Configurações dizem se o ffmpeg foi encontrado.
Fax: envio e recebimento, máquinas de fax e telefones analógicos
/faxesMáquinas de fax, telefones analógicos, telefones de porta e linhas antigas se conectam por meio de um gateway SIP (ou um cartão de telefonia no computador do BitVoice: veja Cartões de telefonia (capítulo 6)): um ATA (Grandstream HT série, para um ou dois telefones analógicos ou um fax), ou um gateway maior (Patton SmartNode, AudioCodes MediaPack e Mediant) para muitas portas analógicas, uma linha ISDN (BRI/PRI) ou linhas analógicas antigas (FXO). Cada porta se registra no BitVoice como uma extensão, como um telefone.
Receber faxes sem uma máquina de fax. Em Faxes, adicione um número de fax (300, por exemplo), com os endereços de e-mail para onde cada fax é enviado. Em seguida, em Encaminhamento de chamadas (capítulo 8), envie as chamadas de um número de telefone para ele. O BitVoice atende como uma máquina de fax, alterna a chamada para T.38 e recebe o fax; cada fax se torna um PDF, mantido em Faxes (Visualizar, PDF) e enviado por e-mail. Um fax que é interrompido no meio mantém as páginas que chegaram e informa sobre isso. Cada fax na lista mostra a identidade da máquina que enviou ou recebeu quando for diferente do número e a velocidade com que as páginas foram enviadas (14.400 bit/s é a mais rápida; uma máquina cujos faxes continuam falhando em uma velocidade baixa geralmente tem uma linha de má qualidade). Isso requer um provedor que suporte T.38 (a maioria o faz); um fax enviado como som não pode ser recebido desta forma. Testado com T38Fax, um operador de fax: registre o tronco com seu nome de usuário e senha em sip.t38fax.com, porta 5080 (UDP); permita UDP de suas redes (8.34.182.0/24 e 8.20.91.0/24) através de qualquer firewall na frente do BitVoice.
Enviar um fax. Em Faxes, Enviar um fax: escolha o número de fax de onde ele é enviado, digite o número para enviar, escreva uma nota, se desejar (ela se torna a primeira página), e adicione documentos. Arquivos de texto e imagens (PNG, JPEG, GIF) funcionam em todos os lugares. PDF precisa do poppler no servidor (apt install poppler-utils, apk add poppler-utils, brew install poppler); Word, Excel, OpenDocument e RTF precisam do LibreOffice também. A página informa quais o servidor pode fazer. Cada página recebe uma linha de cabeçalho, como as máquinas de fax imprimem: a hora, o nome do número de fax, sua identidade e a contagem de páginas. A chamada é feita a partir dos dígitos da identidade (+1 212 555 0300 liga de +12125550300), ou a partir do próprio número de fax quando a identidade não é um número. As páginas são do tamanho carta nos EUA e A4 em outros lugares, com base no país em Configurações.
O BitVoice liga para o número por meio de suas rotas de saída, como uma extensão faria, e envia na taxa mais rápida que a linha suporta (14.400 bit/s, mais lento se a linha for ruim). Faxes de um número de fax são enviados um de cada vez. Um número ocupado ou que não atende é tentado novamente cinco minutos depois, três vezes no total. Faxes enviados são listados com os recebidos: Enviado, Aguardando envio, Falhou (com Tentar novamente), ou Parcialmente enviado quando a linha quebrou após algumas páginas.
Email para fax. Abaixo da lista, configure uma caixa de correio para o BitVoice ler (IMAP sobre TLS, porta 993; para caixas de correio do Google e Microsoft, use uma senha de aplicativo), então Testar e Salvar. Qualquer pessoa autorizada a enviar escreve para essa caixa de correio com o número de fax no assunto (Fax 212 555 0199), ou para um endereço de email com o sinal de mais (fax+2125550199@example.com) se o servidor de email aceitar. Anexos se tornam as páginas e as próprias palavras do email se tornam a nota de capa (a assinatura e o email citado são deixados de fora). Ele é enviado a partir do número de fax que lista o remetente: seus endereços Enviar cada fax para podem sempre enviar, e Também pode enviar faxes por email adiciona outros (endereços inteiros, ou @example.com para um domínio). O remetente recebe um email quando o fax for enviado, ou por que não pôde ser enviado.
O email é fácil de falsificar, então o BitVoice envia um fax apenas quando o servidor de email do remetente confirmou que a mensagem realmente veio do domínio do remetente (DKIM, SPF ou DMARC, na linha Authentication-Results que ele adiciona). Outras mensagens são descartadas sem resposta. Ative Aceitar email que o domínio do remetente não atestou apenas para uma caixa de correio que nenhum email externo possa alcançar.
Máquinas de fax em gateways. O BitVoice transporta fax sobre T.38, o padrão de fax para a internet: quando o gateway ouve um tom de fax, ele alterna a chamada para T.38, o BitVoice pede ao outro lado (seu provedor ou outro gateway) para alterar também e passa o fax entre eles. Se o outro lado não puder fazer T.38, a chamada permanece em G.711 e o fax é enviado como som, o que funciona em uma rede boa. Chamadas ao vivo mostram fax (T.38) enquanto um fax está sendo transmitido.
Para faxes confiáveis:
- Use T.38 no gateway e escolha um provedor que o suporte.
- Faça a extensão da porta ser uma Porta de adaptador analógico (Extensões, Tipo): o BitVoice então oferece apenas G.711, que os faxes enviados como som precisam.
- Na porta de fax do gateway: Modo de Fax T.38, apenas PCMU ou PCMA, cancelador de eco de linha desligado, chamada em espera desligada e um buffer de jitter fixo e alto.
Caixa de entrada: chat da web, WhatsApp e Messenger
/inboxA Caixa de Entrada (capítulo 43) contém todas as conversas escritas em uma lista: a caixa de chat no seu site, WhatsApp, Facebook Messenger e textos (capítulo 44). Qualquer pessoa conectada à interface web pode responder; a primeira a responder assume a conversa (qualquer pessoa pode passá-la adiante com Respondido por), e Fechar a arquiva até que a pessoa escreva novamente. As conversas não lidas são contadas, e a lista é atualizada automaticamente.
A caixa de chat do seu site
Em Canais, ative Chat da web, escolha seu título, cor e primeira linha, e coloque a linha que ela mostra nas páginas do seu site:
<script src="https://pbx.example.com:8443/webchat.js" async></script>
Ela desenha um botão de chat no canto de cada página; visitantes escrevem (com seu nome, se quiserem) e veem suas respostas à medida que chegam. A conversa permanece no navegador deles, então continua à medida que se movem entre páginas. Liste seus sites em Apenas nesses sites para que a caixa não funcione em outros lugares. Visitantes devem alcançar o endereço deste servidor da internet, com um certificado que os navegadores confiam (Let's Encrypt (capítulo 14)). Dez novos chats de um endereço em dez minutos é o máximo que o BitVoice aceita.
Números de negócios do WhatsApp na API da Nuvem da Meta. No site de desenvolvedores da Meta, crie um aplicativo com o WhatsApp, adicione seu número e crie um usuário do sistema com um token de acesso permanente. Em Canais, ative o WhatsApp e forneça o ID do número de telefone e o ID da conta de negócios (ambos da configuração da API), o token de acesso e o segredo do aplicativo, então salve. Na configuração do WhatsApp do aplicativo, defina o webhook: o endereço de callback e o token de verificação que o BitVoice mostra, inscrito em *mensagens*.
O WhatsApp permite que você responda livremente por 24 horas após a última mensagem do cliente; após isso, aceita apenas modelos de mensagem aprovados no Gerenciador do WhatsApp. A caixa de resposta então se transforma em um seletor de modelo: escolha um modelo (ele lista os modelos da sua conta, com idioma e tipo), preencha os valores ({{1}}, {{2}} ...), verifique a pré-visualização, que é o que o cliente lerá, e Enviar modelo. Modelos que a caixa de entrada não pode preencher são listados em cinza com o motivo: um com um cabeçalho de imagem, vídeo ou documento, um parâmetro nomeado no cabeçalho ou um link de botão; e aqueles que ainda não foram aprovados. Crie modelos no Gerenciador do WhatsApp; a Meta revisa cada um, geralmente em minutos.
Facebook Messenger
Para uma Página do Facebook: no aplicativo da Meta, adicione o Messenger, conecte a página e crie um token de acesso da página. Em Canais, forneça o ID da página, o token de acesso da página e o segredo do aplicativo; então defina o webhook (o endereço e o token de verificação mostrados), inscrito em *mensagens* e *messaging_postbacks*. Respostas são permitidas por 24 horas após a última mensagem da pessoa. A partir daí até 7 dias, o Messenger aceita respostas escritas por uma pessoa (enviadas com a tag *agente humano* da Meta: o aplicativo precisa da permissão de Agente Humano da Meta, solicitada na Revisão do Aplicativo); a saudação automática nunca é enviada então. Após 7 dias, a caixa de entrada não aceita resposta até que eles escrevam novamente.
Cada webhook é verificado com o segredo do aplicativo (assinatura da Meta) antes que o BitVoice acredite nele, e uma mensagem que a Meta envia duas vezes é mantida uma vez. Imagens, notas de voz e outros anexos são mostrados como o que são ("[imagem]"); abra-os nos aplicativos próprios da Meta.
Saudação automática, quando definida, responde à primeira mensagem de cada conversa nova imediatamente.
Texto de negócios (SMS)
/textsEnvie e receba mensagens de texto de seus números de negócios em Textos. Textos passam por um provedor de texto. Integrado: TextMagic, Twilio, SignalWire, Telnyx, Bandwidth, Vonage, Plivo, Flowroute e VoIP.ms, mais Seu próprio webhook para qualquer outro serviço ou um gateway próprio. Qualquer número de contas de provedor pode ser usado ao mesmo tempo: cada número diz qual provedor o transporta.
Configurando
- No portal do provedor, encontre os detalhes da API da conta. O formulário pede exatamente o que o provedor chama deles (Twilio: ID da conta e token de autenticação; Telnyx: uma chave de API; Bandwidth: usuário de API, senha, ID da conta e ID do aplicativo de mensagens; SignalWire: também o endereço do seu espaço) e diz onde encontrá-los.
- Em Textos, Configuração de texto, adicione o provedor com eles e salve. O BitVoice mostra um endereço para textos recebidos: defina-o no provedor como o local para onde as mensagens recebidas são enviadas (seu callback, webhook ou URL de mensagem). Para VoIP.ms, adicione
?from={FROM}&to={TO}&message={MESSAGE}&id={ID}ao final. Comprovantes de entrega enviados para o mesmo endereço são ignorados. O BitVoice deve ser acessível da internet ali. - Adicione cada número que você envia texto (com seu código de país), o provedor que o transporta e as extensões para informar por e-mail quando um texto chegar.
10DLC EUA
Os operadores de telecomunicações nos EUA bloqueiam mensagens de texto de números de negócios comuns que não estão registrados. Registre sua marca e, em seguida, uma campanha com seu provedor de mensagens de texto; a lista de verificação em Textos acompanha onde elas estão e avisa quando sua mensagem de exemplo não contém as palavras de opt-out que os operadores esperam.
Conversas
Cada conversa mostra quem é (dos Contatos), mensagens de texto não lidas e a thread. Enter envia; o contador mostra quantas mensagens de texto uma mensagem longa leva. Quando alguém responde STOP, nada mais pode ser enviado para eles a partir desse número até que eles respondam START. As mensagens de texto recebidas também aparecem como um aviso no BitVoice.
Transferência de informações
/settingsPara que um chamador nunca tenha que se repetir: com Brief quem recebe uma chamada transferida em (Configurações, IA), quando uma chamada é transferida, o BitVoice escreve um resumo de duas frases da chamada até o momento (quem está ligando, o que eles querem, qualquer coisa já prometida) para a pessoa que a recebe. Ele aparece no seu telefone de navegador com a chamada em espera, em Chamadas ao vivo (capítulo 46), e como um texto na tela do telefone da secretária (para telefones que mostram mensagens SIP).
Funciona da mesma forma quando o recepcionista de IA entrega um chamador a uma pessoa: as informações vêm do que o chamador disse ao assistente.
Isso precisa do serviço de IA e de um modelo de conversão de fala em texto (Configurações, IA), e o áudio da chamada até agora (até cinco minutos) é enviado para esse serviço para ser transcrito. Um resumo leva alguns segundos, então pode aparecer logo após o início da chamada.
Clientes e visão geral
Sabendo quem ligou e como foi: as chamadas ao vivo e o histórico, a linha do tempo do cliente, CRMs, gravações e consentimento, qualidade, custos e reputação do ID do chamador.
Chamadas ao vivo
/callsChamadas ao vivo mostra todas as chamadas em andamento, atualizadas à medida que acontecem: quem ligou para quem, por quanto tempo está acontecendo, seus codecs e qualidade.
O que os administradores podem fazer
| Ação | O que faz |
|---|---|
| Desligar | termina a chamada para ambos os lados |
| Abrir a porta | para uma chamada de uma estação de porta |
| Pausar gravação | para um número de cartão: o trecho pausado é silencioso na gravação e marcado na história (Gravação de chamada (capítulo 51)) |
| Ouvir | ouvir a chamada silenciosamente |
| Sussurrar | falar com o agente apenas; o chamador não ouve |
| Intervir | juntar-se à chamada; todos ouvem você |
Para ouvir, sussurrar ou intervir, pressione Supervisionar, escolha o telefone a usar em De telefone e pressione Tocar para mim: seu telefone toca, e quando você atende, você se junta à chamada. Você pode alternar entre ouvir, sussurrar e intervir enquanto está nela.
O que mais é mostrado
- Um cartão de chamador enquanto uma chamada externa toca (do seu CRM, ou chamadas anteriores; veja CRM (capítulo 49)).
- O briefing escrito para a pessoa para a qual a chamada foi transferida (Transferências de briefing (capítulo 45)).
- O veredicto da identificação do chamador: Verificado, Parcialmente verificado ou Não verificado (Proteção contra spam (capítulo 56)).
- Com vários servidores, chamadas nos outros também, somente leitura: desligar ou ouvir no servidor que tem a chamada.
Quando uma chamada termina, ela é movida para Histórico de chamadas (capítulo 47).
Histórico de chamadas
/historyTodas as chamadas concluídas: quem ligou para quem, quando, por quanto tempo e como terminou. Classifique as colunas, reproduza gravações (uma pausa para números de cartão é marcada) e baixe a lista como CSV. Quanto tempo os registros são mantidos é definido em Configurações, Gravação de chamada; uma retenção legal (capítulo 73) os mantém por mais tempo.
Como foi encaminhado
Em cada resultado de chamada, Como foi encaminhado lista, em palavras simples e em ordem, o que decidiu para onde a chamada foi: a rota de entrada que a recebeu, se um cronograma estava aberto ou fechado e o horário, um toggle ativado, o que um script de roteamento escolheu (ou que seu fallback recebeu a chamada), as teclas pressionadas em um menu, quem estava ausente, quem não tinha um telefone conectado, quem não atendeu, a rota de saída e os troncos utilizados (e um tronco que o juiz de saúde moveu para trás dos outros), o julgamento do guardião de fraude de toll, e, para uma chamada gravada cujas partes estão sob regras de consentimento diferentes, qual regra se aplicou.
Qualidade, som e criptografia
A coluna Qualidade mostra a pontuação de cada chamada atendida (MOS, em 5) e duas marcas quando se aplicam:
- Nenhum som de um lado: a chamada se conectou, mas nada nunca chegou daquele telefone ou provedor (chamadas com menos de 5 segundos, faxes, chamadas em espera e paging são excluídas). Veja Qualidade de chamada (capítulo 53) para o que verificar.
- Não criptografada: o BitVoice solicitou criptografia (SRTP) e aquele lado respondeu sem ela. Criptografada significa que o som foi criptografado com cada lado que enviou algum. Para recusar chamadas não criptografadas de um provedor, ative Exigir criptografia no tronco dele.
Transcrições e busca
Com a IA ativada e Transcrever chamadas gravadas ativado (Configurações, IA), cada chamada gravada é escrita, com um resumo curto e seus itens de ação: o que alguém concordou ou foi solicitado a fazer. Cada lado da chamada é escrito separadamente a partir da gravação, então a transcrição mostra quem disse o quê e quando. O botão de transcrição ao lado de uma gravação a abre; os administradores também podem transcrever uma chamada única ou transcrevê-la novamente.
Buscar o que foi dito encontra chamadas por palavras de suas transcrições, resumos e itens de ação. Apenas chamadas gravadas são transcritas. Uma transcrição é excluída com sua gravação, e ler ou buscar transcrições é anotado no registro de auditoria, como reproduzir uma gravação.
Linha do tempo do cliente
/timelineA linha do tempo do cliente mostra tudo com um número de telefone nos últimos 12 meses, mais recente primeiro, para que quem atende saiba a história toda.
O que mostra
| Item | Com |
|---|---|
| Chamadas | quem atendeu, quanto tempo durou, e com uma transcrição, resumo, gravação e transcrição |
| Correios de voz | resumos |
| Textos | ambos os sentidos |
| Retornos de chamada | solicitados e se foram feitos |
| Notas | notas da equipe própria |
Um número coincide independentemente de como está escrito: +1 212 555 0100 e 2125550100 são o mesmo.
Abrindo
A partir de um cartão de chamador (Linha do tempo), de Contatos, de uma chamada de entrada no histórico de chamadas, de uma conversa de texto, ou digite um número no topo da Linha do tempo (capítulo 48).
Notas
Administradores podem Adicionar uma nota para a equipe: ela aparece na linha do tempo para todos, com quem a escreveu e quando, e pode ser removida.
CRM: cartões de chamador e registro de chamadas
/settingsConecte um sistema de cliente em Configurações (capítulo 14), CRM. Ele funciona com qualquer sistema que tenha um endereço web, sem código escrito para cada produto.
Cartões de chamador
Enquanto uma chamada de fora toca, Chamadas ao vivo mostra um cartão: quem é (do seu CRM, ou o nome da extensão), quantas vezes eles ligaram nos últimos 90 dias, qualquer callback (capítulo 30) que eles estejam aguardando e o resumo da última chamada transcrita. O telefone do navegador mostra um cartão mais curto para a pessoa que atende: quem é, chamadas anteriores e callbacks aguardando, mas não os resumos de chamadas de outras pessoas.
Para o nome, defina Endereço de pesquisa: o BitVoice o pergunta (GET) com o número do chamador no lugar de {number}, enviando Cabeçalho de pesquisa com seu valor (uma referência de cofre funciona), e espera JSON com nome, empresa, url e notas; 404 significa desconhecido. Respostas são mantidas por cinco minutos. Link para abrir no CRM coloca um link para o chamador no cartão. Use Pesquisar para tentar um número antes de salvar.
A CRM's own answer
Most CRMs answer a search in their own shape, usually a list of matches, not BitVoice's {"name": ...}. Open Answer fields and say where each part is, as a dotted path: a name steps into an object and a number into a list, so list.0.name is the first match's name. Link to the contact may be a path to a link the CRM gives, or a web address with paths in braces, such as https://crm.example.com/#Contact/view/{list.0.id}. An empty field reads BitVoice's own name for it. A search that finds nobody is the same as 404: the card says the caller is not known. Try a number with Look it up before saving.
Por exemplo, o EspoCRM (testado contra um EspoCRM real): crie um usuário de API (Administração, usuários de API, autenticação por chave de API) com um papel que possa ler contatos e contas, então configure:
- Endereço de pesquisa:
https://crm.example.com/api/v1/Contact?select=name,accountName,description&maxSize=1&where%5B0%5D%5Btype%5D=equals&where%5B0%5D%5Battribute%5D=phoneNumber&where%5B0%5D%5Bvalue%5D={number} - Cabeçalho de pesquisa
X-Api-Key, seu valor é a chave do usuário de API - Campos de resposta: nome
list.0.name, empresalist.0.accountName, notaslist.0.description, linkhttps://crm.example.com/#Contact/view/{list.0.id}
O EspoCRM mantém números em formato internacional (+15405550117), como o BitVoice os passa. Outros CRMs funcionam da mesma maneira com seu próprio endereço de pesquisa e nomes de campo; verifique o formato de sua resposta na documentação de API deles, ou com Pesquisar, cuja mensagem nomeia o que encontrou.
Registo de chamadas
Defina Endereço do registo de chamadas e Segredo de assinatura, e cada chamada é enviada para lá quando termina (evento call.ended), novamente com o seu resumo, ações e transcrição uma vez transcrita (call.summarized), e cada callback agendado (callback.new). Cada POST contém X-BitVoice-Event, X-BitVoice-Timestamp e X-BitVoice-Signature: sha256= seguido pelo HMAC-SHA256, com o segredo, do timestamp, um ponto e o corpo. Uma entrega falhada é tentada quatro vezes em cerca de um minuto; se ainda falhar, Health diz isso. Enviar um evento de teste verifica o endereço e o segredo.
Percepção de chamada para supervisores
/qualityPara centros de contato: evidências de como as chamadas foram, para um supervisor ouvir, nunca uma pontuação automática.
Na Transcrição de uma chamada, Como foi mostra, medido apenas pelo som da gravação: quanto cada lado falou, o trecho mais longo de cada lado, quantas vezes cada lado começou a falar sobre o outro, quanto tempo ambos falaram ao mesmo tempo e o silêncio (um longo silêncio é frequentemente uma espera ou ar morto).
Com Anote como cada chamada transcrita foi ativado (Configurações, IA), a IA também lê a transcrição e diz como o chamador parecia no início e no final, e lista até seis momentos: Foi bem, Veja (falar sobre o chamador, uma longa espera, uma resposta confusa), Não respondido (uma pergunta que o chamador fez e não obteve resposta) e Prometido (algo que alguém disse que faria), cada um com o tempo e as palavras ditas, para que você possa ir diretamente para ele. Um administrador pode solicitá-lo em qualquer chamada transcrita com Veja esta chamada.
Em Qualidade da chamada (capítulo 50), Conversas, por quem as atendeu resume as chamadas transcritas do período por pessoa: sua participação na conversa, seu turno mais longo, quantas vezes falou sobre o chamador, tempo de silêncio, chamadas que terminaram com o chamador insatisfeito e os momentos marcados. Use-o para escolher chamadas para ouvir, não para classificar pessoas.
Notas de treinamento são suas próprias palavras sobre uma chamada, no momento em que são sobre: em Como foi, escreva o Momento (1:05, ou deixe vazio para o início) e a Nota de treinamento, e pressione Adicionar nota. Notas são listadas na ordem da chamada com quem as escreveu e quando; administradores escrevem e removem, visualizadores leem com a transcrição, e adicionar ou remover uma é anotado no registro de auditoria. Elas vão com a gravação, então sua retenção e seguranças legais também as cobrem. Notas de treinamento em Qualidade de chamada as conta por pessoa.
Gravação de chamada e pagamentos com cartão
A gravação é configurada em Configurações (capítulo 14), Gravação de chamada: desativada, todas as chamadas ou apenas as chamadas das extensões marcadas Gravar chamadas. As gravações são reproduzidas a partir do Histórico de chamadas (capítulo 47), e com a IA ativada, elas são escritas e resumidas.
Informar as pessoas
Alguns lugares precisam que todos os participantes de uma chamada sejam informados de que ela está sendo gravada: Anunciar, Sinal sonoro e regras por região estão em Consentimento de gravação (capítulo 52).
Pagamentos com cartão (PCI DSS)
Os números de cartão não devem ser armazenados em gravações. Antes que o chamador leia um em voz alta, a pessoa na extensão pressiona *7; *8 retoma. Pausar gravação em Chamadas ao vivo (capítulo 46) faz o mesmo. O trecho pausado é silencioso na gravação e listado no histórico de chamadas, para que um auditor possa ver onde e por quanto tempo.
Salas de conferência
Uma sala com Gravar a sala ativado é mantida como uma gravação de toda a sala (Salas de conferência (capítulo 34)).
Quanto tempo as coisas são mantidas
As configurações definem por quantos dias as gravações, o histórico de chamadas e a caixa de voz são mantidos; os mais antigos são excluídos dentro de uma hora. Qualquer coisa sob uma retenção legal (capítulo 73) é mantida independentemente de sua idade. O arquivo (capítulo 72) pode manter cópias em outro lugar.
Administradores e visualizadores podem reproduzir gravações e ler transcrições; apenas administradores podem transcrever uma chamada ou transcrevê-la novamente. Reproduzir uma gravação ou ler sua transcrição é anotado no registro de auditoria.
Consentimento de gravação
/settingsAlguns lugares permitem que uma chamada seja gravada quando uma pessoa nela sabe; outros precisam que todos sejam informados, ou que concordem. Em Configurações, Gravação de chamadas, escolha como as pessoas em uma chamada gravada são informadas:
- Sem aviso.
- Anunciar: ao atender a chamada, ambos os lados ouvem o aviso (grave-o no mesmo lugar, por exemplo "Esta chamada é gravada para treinamento e qualidade"), e a gravação começa apenas após a reprodução. Até que uma seja gravada, três sinais sonoros são reproduzidos, e Saúde diz isso.
- Sinal sonoro: um tom curto para ambos os lados a cada 15 segundos enquanto a chamada é gravada.
Regras escolhem pelo número externo (o chamador nas chamadas de entrada, o número discado nas chamadas de saída), correspondência mais longa primeiro: por exemplo, números que começam com 1415 (Califórnia) Anunciar, 49 (Alemanha) Nunca gravar, tudo o mais como acima. Uma regra Sem aviso grava sem um; Nunca gravar deixa essas chamadas fora da gravação completamente. Chamadas entre extensões seguem a configuração principal.
O seu próprio número também conta: as regras são aplicadas tanto ao número externo quanto ao seu (o número chamado nas chamadas de entrada, o seu ID de chamador nas chamadas de saída), e a mais protetora delas vence (Nunca gravar antes de Anunciar antes de Sinal antes de Sem aviso). Portanto, um escritório em um local que precisa do consentimento de todas as partes anuncia quem ele chama, onde quer que estejam. Quando as partes estão sujeitas a regras diferentes, o registro da chamada no Histórico de chamadas (capítulo 47) diz qual regra foi aplicada e por quê.
A gravação também pode ser pausada durante uma chamada com o código de pausa (pagamentos com cartão). Nada disso é aconselhamento jurídico: verifique as leis onde você e seus chamadores estão.
Qualidade da chamada
/qualityComo as chamadas soaram nos últimos dia, semana, mês ou 90 dias, a partir do som que o BitVoice recebeu em cada lado de cada chamada. Os telefones são agrupados por seu local (capítulo 12) (ou "sem local"), e as chamadas de fora pelo linha do provedor que elas entraram.
Cada localização mostra as suas chamadas, a sua pontuação média (MOS, sobre 5: acima de 4 é bom, abaixo de 3,6 soa pobre), a percentagem de pacotes de som que nunca chegaram e jitter (atraso irregular). Abaixo disso, o BitVoice diz o que está errado em palavras simples, por exemplo "Perda de pacotes na rede da sede: 3,2% do som nunca chegou, principalmente entre 14h00 e 16h00", com o que verificar. O gráfico de barras mostra o som perdido por hora do dia.
O diagnóstico compara as duas metades das mesmas chamadas: o som dos telefones do local e o som do provedor que as mesmas chamadas passaram. Quando a outra metade chegou limpa, a perda está do lado deste local e diz isso; quando ambas as metades perderam som, o local não é o único culpado e aponta o que as chamadas compartilham, o link de internet próprio do sistema. Se todos os locais perderem som ao mesmo tempo, a causa é semelhante ao que compartilham. Como isso foi trabalhado lista os motivos, passo a passo (o livro de regras de qualidade de chamada, veja Segurança (capítulo 60), "Como o BitVoice decide"). Locais com menos de três chamadas não são julgados. A qualidade por chamada também está em Histórico de chamadas (capítulo 47) (a coluna Qualidade) e, enquanto as chamadas estão ativas, em Chamadas ativas (capítulo 46).
Uma chamada que conectou, mas não recebeu nenhum som de um lado é contada à parte, em sem som, e colocada primeiro: não é som pobre, mas som que nunca chegou, quase sempre um firewall ou roteador NAT que deixa o SIP passar e mantém a mídia fora. O conselho do local diz o que verificar (para um provedor, seus intervalos de endereços de mídia).
Custos e orçamentos
/costsO BitVoice preços cada chamada com base no que o seu provedor cobra, e mostra o gasto do mês por departamento, pessoa e tronco, com as chamadas mais caras.
Preços
Em Troncos (capítulo 7), abra um tronco e seus Preços de chamada. Cada preço cobre números que começam com alguns dígitos, como o número é enviado ao provedor (apenas dígitos, então 44 para o Reino Unido, 1900 para taxas premium dos EUA); a correspondência mais longa vence, e um preço sem dígitos cobre todos os outros números. Forneça o preço por minuto, qualquer taxa por chamada atendida, o passo de faturamento (60 segundos para minutos inteiros, 6 ou 1 para mais fino) e qualquer mínimo. Chamadas de entrada, por minuto é para números de tarifa zero que você paga para receber. Qual seria o custo verifica um número antes de alguém discá-lo. A moeda é definida em Custos.
O custo de uma chamada é fixado quando ela termina, com os preços do momento; alterar um preço não altera chamadas passadas. Custos diz quantas chamadas de saída atendidas não tiveram preço.
Departamentos e orçamentos
Dê às extensões um Departamento (na extensão). Em Custos, adicione um orçamento para cada chamada ou para um departamento: um alerta aparece no BitVoice, e é enviado por e-mail para o endereço do orçamento e o endereço de alerta, em 80% e novamente em 100% do mês.
O alarme
Chamadas de saída custam mais do que isso em uma hora dispara um alarme quando as chamadas de saída ultrapassam esse valor dentro de qualquer hora. Uma sequência repentina de chamadas caras é o sinal usual de fraude de tarifa (senha de telefone roubada): verifique o Histórico de chamadas, então desabilite a extensão ou o tronco.
Reputação do ID do chamador e chamadas com marca
/reputationAs empresas de telefone executam filtros de spam que podem rotular um número de negócios como "Spam provável", ou bloqueá-lo, e então quase ninguém atende. Reputação do ID do chamador observa cada número que você chama, a partir de suas próprias chamadas, e diz em palavras simples como ele está:
- Atendido: a parcela de chamadas atendidas, e o que era no período anterior. Uma queda de metade, ou abaixo de 20%, é o sinal usual de uma nova etiqueta.
- Desligado imediatamente: chamadas atendidas que terminaram dentro de 10 segundos.
- Recusado como spam: chamadas que um filtro de um transportador recusou (SIP 608) ou que a pessoa marcou como indesejado (607). Uma 608 significa que o número é rotulado.
- Uso pesado: mais de cerca de 150 chamadas por dia a partir de um número é o que os robocallers fazem, e os filtros notam.
Números com menos de 20 chamadas são mostrados como muito poucos para julgar.
Seus números de saída dá a cada número um nome (enviado como o nome do chamador), um motivo para a chamada e um logotipo (uma imagem https://). Em um tronco com Enviar identificação de chamador personalizada ativado, o logotipo e o motivo são enviados como dados de chamada ricos (RFC 9796 Call-Info); os operadores que suportam chamadas personalizadas os exibem no telefone chamado. A maioria dos telefones exibe o nome do banco de dados de nome do chamador (CNAM) em vez disso, que é definido pelo seu provedor: pergunte a eles. Assistir coloca um aviso na saúde quando um número assistido começa a parecer rotulado.
A página também diz o que fazer quando um número é rotulado.
Proteção contra spam e STIR/SHAKEN
/settingsNos EUA e no Canadá, o provedor que inicia uma chamada assina o ID do chamador (STIR/SHAKEN): A quando ele sabe que o chamador pode usar o número, B quando ele sabe quem é o chamador, mas não o número, C quando ele apenas passou a chamada adiante. Seu provedor informa ao BitVoice seu veredito (verstat) ou passa o cabeçalho de Identidade assinado, que o BitVoice verifica por si mesmo: a assinatura, que é menor que um minuto, e que nomeia os números desta chamada. O veredito é exibido como Verificado, Parcialmente verificado, Não verificado ou Não verificado em Chamadas em andamento e no Histórico de chamadas.
Em Configurações, Proteção contra spam, escolha o que acontece quando um ID do chamador falha na verificação (toque, toque rotulado ou recusar), quando não é verificado, e quando o número é retido. Uma chamada rotulada toca com Spam? (ou seu próprio rótulo) antes do nome do chamador. Números bloqueados são recusados; uma entrada que termina em * bloqueia uma faixa (+1900* é todo o número de taxa premium dos EUA). Números sempre permitidos nunca são recusados ou rotulados. No Histórico de chamadas, o botão de bloqueio ao lado de um chamador os adiciona à lista; chamadas recusadas são listadas como Bloqueadas.
Dentro de uma hora de uma chamada de emergência de qualquer extensão, nenhuma chamada é recusada (as bloqueadas tocam rotuladas em vez disso), caso seja o serviço de emergência a ligar de volta. Uma chamada de 911 (a partir da ESInet ou de um tronco CAMA) nunca é recusada ou atrasada pela triagem.
Chamadores que o BitVoice não conhece
Um chamador é conhecido quando o número é sempre permitido, nos contactos (capítulo 38), foi chamado a partir daqui nos últimos 12 meses, ou passou no teste de robô nos últimos 90 dias. Números são combinados independentemente de como estão escritos (com ou sem o código de país, 1, 0 ou +). Em Chamadores que o BitVoice não conhece, escolha o que acontece a todos os outros:
| Escolha | O que o chamador recebe |
|---|---|
| Tocar como habitual | a chamada toca como qualquer outra (o padrão) |
| Teste de robô primeiro | o BitVoice atende e diz "Para ser conectado, por favor pressione" e um dígito, que muda a cada chamada. A tecla certa os coloca em contacto com o local para onde a chamada estava a ser dirigida; qualquer outra coisa, ou nada (duas vezes), e eles vão para Chamadores que falham no teste vão para, ou ouvem adeus. Os robocallers não pressionam a tecla |
| Enviar para outro local | nada toca: eles vão diretamente para o local escolhido, uma caixa de correio de voz, por exemplo |
O teste de robô precisa das suas palavras: em Sons (capítulo 20), grave ou crie (com um serviço de fala) os prompts de triagem e os números de 1 a 9 na língua dos chamadores. Até que sejam gravados, essas chamadas tocam como habitual (um chamador não pode passar num teste que não pode ouvir), e a Saúde diz isso. Um chamador que passa conta como conhecido durante 90 dias. O teste atende a chamada, por isso o fornecedor do chamador começa a cobrar a partir desse momento, como por qualquer chamada atendida. O histórico de chamadas mostra o resultado de cada chamada (passou, falhou, enviado) e o rasto de porquê diz o que aconteceu.
Uma base de dados de spam
O BitVoice pode perguntar a um serviço de reputação sobre cada chamador desconhecido antes de a chamada tocar. Usar Nomorobo através do Twilio preenche o Twilio Lookup com a pontuação de spam do Nomorobo (instale o add-on do Nomorobo na sua conta do Twilio, em seguida, insira o SID da conta e o token de autenticação); qualquer outro serviço que responda em JSON também funciona: forneça o seu endereço com {e164} (+12125550142) ou {number} (como o fornecedor o enviou), onde está o seu veredicto (Campo de veredicto, um caminho pontilhado), e quando significa spam (uma pontuação igual ou superior a Spam na pontuação, verdadeiro, ou o texto em Ou spam quando o texto é, como BLOCK). Escolha o que acontece a um chamador que ele chama de spam: tocar rotulado, o teste de robô ou recusado.
- Estes serviços cobram por consulta. Chamadores conhecidos nunca são consultados, e cada resposta é mantida por um dia (Manter respostas).
- Um serviço lento ou quebrado nunca retarda uma chamada: após Esperar no máximo (1,5 segundos, a menos que mude), a chamada toca como se a resposta fosse "não spam".
- Testar pergunta sobre um número agora (e é cobrado como qualquer consulta).
Bloquear o último chamador
Imediatamente após uma chamada indesejada, disque *32 (Códigos de funcionalidade (capítulo 32)) a partir do telefone que tocou: o último número externo que tocou essa extensão nos últimos dias vai para a lista de bloqueio, e o telefone lê o número novamente. Um número sempre permitido não é bloqueado, e o telefone diz isso. Cada um está no registo de auditoria, com quem o bloqueou.
Sugestões a partir das suas chamadas
O BitVoice lê os últimos 30 dias de chamadas de fora para números que ligam repetidamente e são rejeitados imediatamente: três chamadas ou mais, quase todas elas dentro de 10 segundos, ou dois testes de robô falhados, e nunca uma conversa real (alguém falando 30 segundos ou mais). Números conhecidos são excluídos. Cada um vem com o porquê; Bloquear coloca-o na lista de bloqueio e Não é spam significa que nunca é sugerido novamente. Nada é bloqueado até que uma pessoa o diga.
Para verificar certificados contra as autoridades STI, cole os certificados em Autoridades de certificação STI; sem eles, o BitVoice verifica se a chamada foi assinada com o certificado que ela nomeia, mas não quem emitiu esse certificado.
Assinatura das suas chamadas
A maioria dos fornecedores assina as chamadas dos seus clientes. Se o seu fornecedor o permitir (ou você é um fornecedor que executa o BitVoice), ative a opção Assinar ID do chamador no tronco (Troncos (capítulo 7)) e forneça o seu certificado STI (de uma autoridade de certificação STI, com o token de código do seu fornecedor de serviços) e a sua chave privada (P-256). Cada chamada que sai pelo tronco leva, então, um cabeçalho de Identidade assinado (ES256, como exigido pelo SHAKEN).
- Endereço do certificado (x5u) é onde o lado chamado busca o certificado. Deixe-o vazio e o BitVoice publica-o em
/stir/<trunk>.pemno endereço público (Configurações), que deve ser acessível da internet via HTTPS. - Atestado: automático fornece A quando uma extensão chama com um dos números deste sistema (um número roteado, ou um ID do chamador configurado na trunk ou na extensão), B quando uma extensão chama com qualquer outro número, e C para chamadas passadas de fora (um chamador encaminhado). Ou fixe-o em A, B ou C.
- O histórico de chamadas marca cada chamada assinada com assinado A, B ou C. Uma chamada nunca é interrompida porque não pôde ser assinada; o motivo está no log.
Executando o BitVoice
Mantendo a segurança e funcionamento: administradores e entrada, segurança, alterações e atualizações, vários servidores, organizações hospedadas, codecs, Equipas, importação, automação e as ferramentas para encontrar falhas.
Administradores
/usersOs administradores são as pessoas que entram neste interface web. Funcionários que apenas cuidam de suas próprias chamadas usam o portal de funcionários em vez disso e não precisam de conta aqui (O portal de funcionários (capítulo 33)).
Funções
| Função | Pode |
|---|---|
| Administrador | alterar qualquer coisa, reproduzir gravações, ver a existência de cada campo secreto (nunca seu valor) |
| Visualizador | ver tudo, alterar nada; segredos são ocultados |
Uma alteração de função ou de senha sai a pessoa de todos os lugares ao mesmo tempo.
Entrada de dois passos
Cada pessoa ativa a entrada de dois passos para si mesmo: Configurar mostra uma chave para um aplicativo de autenticação; inserir o código que ele mostra a ativa. A partir daí, a entrada pede um código, além da senha. Desativá-la precisa da senha.
Entrada única
Com a entrada única (Configurações), as pessoas entram com a conta da organização (Microsoft Entra, Google, Okta, qualquer provedor OpenID Connect), e uma conta é criada para elas na primeira vez. Veja Entrada única (capítulo 58).
Tokens de API
Programas (Terraform, scripts) usam tokens de API em vez de uma senha: feitos nesta página, mostrados uma vez e revogados a qualquer momento. Cada token é um administrador ou um visualizador. Um token feito com Nomeia a pessoa que age em nome (para um CAD) pode enviar X-BitVoice-On-Behalf-Of com o nome da pessoa, e os registros então nomeiam essa pessoa ao lado do token (Chamadas de 911 (capítulo 77)).
Login único
O login único permite que as pessoas entrem no BitVoice com sua conta de trabalho, por meio de qualquer provedor OpenID Connect: Microsoft Entra ID, Google, Okta, Keycloak e outros. Sair da organização, então, remove o acesso aqui também.
Configuração
Em Configurações (capítulo 14), Autenticação única:
- Registe uma aplicação com o fornecedor, com o Endereço de redirecionamento mostrado aqui.
- Preencher para um fornecedor define o Emissor para os comuns; copie o ID do cliente e Segredo do cliente do fornecedor.
- Nomeie os Grupos de administradores e Grupos de visualizadores do fornecedor. Reivindicação de grupos é onde o fornecedor os coloca (
groupsa menos que definido). - Opcionalmente altere o Texto do botão na página de entrada.
- Ative Usar autenticação única.
Como funciona
- A conta aqui é criada na primeira entrada; os grupos definem o papel em cada entrada, então mover alguém entre grupos no fornecedor altera seu papel aqui.
- Alguém em nenhum tipo de grupo é recusado e a recusa está no registro de auditoria.
- Com Também permitir senhas desativado, senhas funcionam apenas neste computador, então uma interrupção do fornecedor nunca o bloqueia.
Diretório da empresa (Active Directory e LDAP)
O BitVoice pode ler o diretório da sua empresa, Active Directory ou outro servidor LDAP (OpenLDAP, Samba, 389 Directory Server, FreeIPA): pessoas com um número de telefone se tornam extensões, grupos de diretório preenchem grupos de chamada e as pessoas entram na interface web com a senha do diretório. O BitVoice apenas lê o diretório; nunca grava nele.
Conexão
Em Configurações (capítulo 14), Diretório da empresa:
- Escolha Active Directory ou OpenLDAP ou outro servidor LDAP: define quais atributos são lidos (sAMAccountName ou uid para o nome de entrada, displayName ou cn, mail, telephoneNumber). Altere qualquer um deles na sua caixa.
- Servidor:
ldaps://dc1.example.com(porta 636), ouldap://...com StartTLS ativado. O LDAP simples é recusado, a menos que o servidor seja este computador, porque as senhas cruzariam a rede sem criptografia. Quando o certificado do servidor vem de sua própria autoridade de certificação, cole a autoridade em Autoridade de certificação da empresa. - Conta de leitura e Sua senha: uma conta permitida para ler pessoas e grupos (
reader@example.comno Active Directory). A senha pode ser uma referência ao cofre de chaves (Configurações, Cofres de chaves). - DN base: onde as pessoas e grupos estão (
dc=example,dc=com). Quais pessoas limita-as com um filtro LDAP; no Active Directory, contas desativadas são sempre excluídas. - Testar entra com a conta de leitura e lê todos, alterando nada: mostra quantas pessoas encontrou, quantas têm um número e a extensão que cada uma receberia.
Extensões e grupos de chamada
- Com Criar e atualizar extensões ativado, cada pessoa com um número recebe uma extensão: os últimos Dígitos mantidos (4 de
+1 212 555 0123é 0123; 0 mantém todos os dígitos, que devem ser então 2 a 8). Novas extensões recebem uma senha SIP e correio de voz com um PIN aleatório; o nome e e-mail da pessoa vêm do diretório. - O diretório é dono de uma extensão que criou: seu número, nome e e-mail seguem o diretório em cada sincronização. Tudo o mais (dispositivos, encaminhamento, configurações de correio de voz) é seu.
- Uma extensão que você criou manualmente nunca é assumida, a menos que tenha o nome ou e-mail daquela pessoa. Duas pessoas com o mesmo número, um número que a extensão de outra pessoa já tem, ou um número de comprimento errado é listado em Verificar, e nada é alterado para elas.
- Com Desligar as extensões de pessoas que saíram ativado, uma extensão criada pelo diretório é desligada quando a pessoa sai, é desativada ou perde seu número, e volta a ser ligada quando elas retornam.
- Grupos de chamada preenchidos a partir de grupos de diretório: cada linha coloca as extensões dos membros de um grupo em um grupo de chamada (no Active Directory, grupos aninhados contam). Um grupo com ninguém que tenha uma extensão deixa o grupo de chamada como estava.
- O diretório é lido a cada Ler a cada minutos (60 por padrão) e imediatamente com Sincronizar agora. Cada sincronização que altera algo é uma revisão (capítulo 61) nomeada "Sincronização do diretório da empresa", então pode ser desfeita; o relatório da última sincronização é mostrado abaixo do botão.
Entrada
Com Pessoas entram aqui com seu nome de diretório e senha ativado, a página de entrada aceita nomes de diretório e senhas, bem como contas próprias do BitVoice:
- Membros de Grupos de administradores entram como administradores, de Grupos de visualizadores como visualizadores (com nenhum grupo de visualizadores, qualquer outra pessoa no diretório). Grupos são nomeados por seu nome (cn) ou DN; no Active Directory, grupos aninhados contam. Alguém em nenhum grupo desses é recusado.
- A conta aqui é criada na primeira entrada e seu papel segue os grupos em cada entrada. Nunca assume uma conta do BitVoice com o mesmo nome.
- Uma senha vazia é sempre recusada (o LDAP aceitaria como uma entrada anônima), uma conta desativada não pode entrar e os nomes são escapados antes de atingir o diretório.
- A autenticação de dois passos pode ser adicionada a essas contas como a qualquer outra.
Segurança
/securityUm sistema de telefone na internet é atacado em horas: scanners tentam senhas em todas as portas SIP, e um sistema invadido gera chamadas para números premium. O BitVoice é projetado para resistir a isso por padrão, em camadas.
Contra adivinhação de senhas
- Endereços que continuam falhando ao entrar são banidos por um tempo (Configurações, Proteção): por padrão, dez falhas em um minuto banem o endereço por uma hora. Endereços banidos são listados em Segurança (capítulo 60) e podem ser desbanidos.
- Redes confiáveis nunca são banidas: sua rede de escritório.
- Senhas SIP são geradas, com pelo menos 12 caracteres, uma por extensão. Um telefone que entra como uma extensão nunca pode registrar outra.
- Um scanner que é banido não recebe resposta alguma, então não aprende nada.
Contra fraude
- Extensões podem chamar números externos apenas quando permitidas.
- Números de tarifa premium são recusados, a menos que uma rota os nomeie.
- O guardião de fraude de tarifa (abaixo) julga cada chamada para fora do país antes de ser realizada.
- Custos (capítulo 54) alerta sobre orçamentos e gastos descontrolados: muitas chamadas para um país em uma hora.
- Cada extensão pode ter no máximo quatro chamadas ao mesmo tempo (Configurações, Proteção).
O guardião de fraude de tarifa
Ative-o em Configurações, Guardião de fraude de tarifa. Cada chamada para fora do país (por +, 00 ou 011, e os lugares que compartilham +1 com a América do Norte, mas são outros países, como a Jamaica, um destino clássico de fraude de tarifa) é então julgada antes de ser realizada:
| Situação | O que ele faz |
|---|---|
| Uma chamada para o exterior para um país que essa extensão ligou nos últimos 90 dias | deixa passar |
| Uma primeira chamada para esse país em 90 dias | deixa passar e relata |
| Uma primeira chamada para lá fora do Horário de trabalho, ou realizada de fora (um dial-in, um encaminhamento) | pede o PIN solicitado (com nenhum escolhido, recusa) |
| Mais de Chamadas para o exterior em 10 minutos de uma extensão | recusa |
| Uma primeira chamada para o exterior enquanto alguém está adivinhando senhas (três falhas seguidas de um endereço, ou um banimento, na última hora) | recusa |
| Um número de emergência | sempre deixa passar |
Países sempre permitidos (códigos de discagem, como 44) e Exceções (uma extensão isenta até um dia, para uma viagem) tiram "primeira chamada" e "fora do horário"; nunca isentam muitas chamadas em um curto período ou um ataque, porque uma senha roubada parece aprovada também. Se o histórico de chamadas não puder ser lido, o guardião não sabe se uma chamada é a primeira, e algo não medido nunca é considerado seguro: pede o PIN. Cada julgamento é listado em Segurança (capítulo 60) com suas razões e está no registro da chamada em Histórico de chamadas (capítulo 47).
Como o BitVoice decide
Os juízes do BitVoice (o guardião de fraude de tarifa, o juiz de saúde de tronco, o diagnóstico de qualidade de chamada e a verificação de localização de chamador de 911) seguem cada um um livro de regras: fatos que são medidos, conclusões que eles suportam, as exceções que anulam uma conclusão e as escolhas. Como o BitVoice decide, em Segurança (capítulo 60), mostra cada livro de regras. As regras que os juízes mantêm:
- Cada resposta vem com suas razões: o que foi mantido, o que foi argumentado contra ele e o que anulou isso.
- Algo que ninguém mediu é desconhecido, nunca "não". Quando algo desconhecido pode mudar a resposta, o juiz toma sua escolha cautelosa e diz o que não pôde medir.
- "Não determinado" é uma resposta: quando as regras deixam uma situação indecisa, o juiz toma sua escolha cautelosa e diz isso.
- Cada livro de regras é verificado em todas as combinações de seus fatos antes de ser usado (quando o BitVoice inicia, e por seus testes): nunca duas escolhas ao mesmo tempo, e cada regra alcançável. A tela mostra quantas situações cada um foi verificado.
Criptografia
- TLS criptografa a sinalização (porta 5061), então senhas e números não são legíveis na rede.
- SRTP criptografa o som das chamadas; o telefone do navegador e os aplicativos sempre o usam.
- A interface da web tem HTTPS na porta 8443 com seu próprio certificado, ou um que você instala.
Quem pode fazer o quê
- Administradores alteram tudo; visualizadores veem tudo, mas não alteram nada; staff usa o portal para suas próprias chamadas apenas.
- Ative sign-in de dois passos para cada administrador (Administradores (capítulo 57)): um código de um aplicativo de autenticador.
- Sign-on único (capítulo 58) assina pessoas no seu provedor de identidade.
- O registro de auditoria registra cada ação administrativa e quem a fez, e não pode ser editado.
Alterações, backups e importação
/changesCada alteração salva é uma revisão: numerada, com quem a fez, quando e um resumo de uma linha. Nada na configuração é jamais perdido.
Comparando e restaurando
- O que mudou mostra a diferença entre uma revisão e a anterior, campo a campo.
- Restaurar mostra o que a restauração mudaria e pergunta primeiro. A restauração é ela mesma uma nova revisão, então também pode ser desfeita.
Exportar e importar
- Exportar baixa a configuração inteira como um arquivo (segredos omitidos, a menos que você peça por eles).
- Importar visualiza as alterações de um arquivo antes de aplicá-las.
- Importar (capítulo 68) também lê configurações do FreePBX e Asterisk, listas de usuários do 3CX e as exportações CSV do Cisco Unified CM, Avaya e Mitel.
- Arquivar (capítulo 72) copia backups, gravações e correio de voz para o Amazon S3 ou Azure.
Alterações feitas ao mesmo tempo
Dois administradores editando a mesma coisa ao mesmo tempo não podem sobrescrever um ao outro: a segunda salvamento é recusada com uma mensagem para recarregar, e nada é perdido.
Atualizações
/updatesAtualizar o BitVoice é um clique, e seguro: ele verifica a nova versão, a instala ao lado da antiga e volta à anterior se a nova não permanecer ativa.
Instalando uma atualização
- Baixe a nova versão e desempacote-a. Ao lado do programa está sua assinatura da BioDream:
bitvoice.sig, oubitvoice.exe.signo Windows. - Em Atualizações (capítulo 62), faça upload do programa e do arquivo
.sig. - Pressione Instalar. Por padrão, o BitVoice aguarda até que não haja chamadas em andamento; você também pode instalar imediatamente.
- O BitVoice reinicia na nova versão. Com vários servidores, as chamadas em andamento são transferidas para outro servidor e continuam.
Voltando
A versão que você deixou é mantida: Voltar retorna a ela em um clique. Uma nova versão que falha em iniciar duas vezes, ou não permanece ativa por um minuto, é substituída pela anterior por si mesmo.
Assinaturas
Cada lançamento a partir da v0.1.3 carrega a chave de lançamento da BioDream. Uma compilação dessas instala apenas programas assinados com essa chave: um arquivo não assinado, um assinado por outra pessoa, ou um alterado por um único byte é recusado com a assinatura não corresponde. A página diz se essa compilação verifica (Requerido) ou não.
| Você executa | Atualizações aceita |
|---|---|
| uma versão, v0.1.3 ou posterior | apenas programas assinados pela BioDream |
| v0.1.2 ou anterior, ou uma compilação sua | qualquer programa: com nenhuma chave, um arquivo .sig não pode ser verificado e é ignorado |
Vários servidores como um sistema de telefone
/serversDois ou mais servidores BitVoice que compartilham um banco de dados PostgreSQL funcionam como um sistema de telefone:
- Uma chamada atinge um telefone independentemente do servidor em que esteja registrado: grupos de toque, filas, transferências para uma extensão e chamadas de linhas de provedor tocam telefones em todos os servidores.
- Configurações alteradas em um servidor se aplicam a todos dentro de cinco segundos; usuários, contatos, histórico de chamadas, transcrições de gravações e textos são compartilhados.
- Lâmpadas de ocupado (BLF) mostram telefones em todos os servidores tocando e ocupados; estacionamento de chamadas é compartilhado, então uma chamada estacionada em um servidor pode ser atendida a partir de um telefone em outro; paginas atingem telefones em todos os servidores; textos atingem telefones de mesa onde quer que estejam registrados.
- Um agente de fila em uma chamada em um servidor conta como ocupado nos outros, e o limite de canal de uma linha de provedor conta chamadas em todos os servidores.
- Chamadas ativas em cada servidor lista as chamadas nos outros também (somente leitura: desligar ou ouvir na chamada no servidor que tem a chamada).
- O registo de chamada é escrito uma vez, pelo servidor que tem o chamador, e uma chamada é gravada lá também.
Configurando
- Mova os dados do primeiro servidor para o PostgreSQL: Configurações, Banco de dados.
- Inicie cada outro servidor com o mesmo banco de dados:
bitvoice -database postgres://…(ou a variável de ambiente BITVOICE_DATABASE). Ele se junta imediatamente; Servidores lista-o. - Em Servidores, verifique onde cada servidor é alcançado (seu endereço e porta SIP na rede que os servidores compartilham), e dê um nome a cada um. Servidores que são alcançados da internet em um endereço próprio (servidores de nuvem com IPs públicos, sem endereço compartilhado) também recebem Seu próprio endereço público: provedores e telefones externos são informados disso, então, quando um servidor assume uma chamada, o som do provedor a segue. Deixado vazio, um servidor usa o endereço público nas Configurações.
- Informe os telefones sobre como encontrar os servidores (abaixo).
- Linhas de provedor (abaixo).
Como os telefones encontram os servidores. Telefones configurados pelo BitVoice (Yealink, Polycom, Grandstream) são dados como um servidor de backup em execução por si mesmos. Para os outros, Snom e telefones configurados manualmente, use um dos seguintes em Servidores:
- Um nome DNS para cada servidor: um nome como pbx.example.com com registros SRV (_sip._udp, _sip._tcp, _sips._tcp) listando cada servidor. Telefones configurados pelo BitVoice recebem o nome, e Servidores verifica os registros contra os servidores em execução, lista o que está faltando e fornece os registros para criar, prontos para copiar.
- Um endereço compartilhado: um endereço não utilizado na rede dos servidores, como 192.168.1.50/24. Um servidor em execução mantém o endereço por vez e informa a rede imediatamente (ARP gratuito); se ele parar, o próximo servidor assume o endereço dentro de segundos, continua as chamadas e atende os telefones no mesmo endereço, sem que eles precisem registrar novamente. Ele precisa do Linux e das permissões NET_ADMIN e NET_RAW (em um contêiner:
--cap-add NET_ADMIN --cap-add NET_RAW), e os servidores em uma rede. Reinicie cada servidor após configurá-lo.
Linhas de provedor. Em cada tronco, Compartilhado entre servidores diz como:
- Cada servidor usa: cada servidor se registra e faz suas próprias chamadas. Para provedores que permitem várias registros em uma conta, ou nenhum.
- Um servidor de cada vez: um servidor se registra e carrega a linha; os outros a mostram como Em espera, mantida por aquele servidor e enviam suas chamadas por meio dele. Se ele parar, o próximo servidor se registra dentro de segundos. Para provedores que permitem uma registro por conta.
Quando um servidor para
- Chamadas continuam. Cada servidor mantém uma nota de suas chamadas no banco de dados; quando um para, um servidor em execução assume cada chamada dentro de segundos, move o som para si mesmo e informa ambas as extremidades (um re-INVITE). Há uma lacuna de alguns segundos no som. Uma parada planejada (uma atualização, uma reinicialização) transfere chamadas imediatamente, sem lacuna.
- Uma chamada cujo telefone está registrado no servidor que assume a chamada é continuada lá sem perturbar aquele telefone: apenas a outra parte é movida.
- Seus telefones continuam por meio do servidor de backup, o nome DNS ou o endereço compartilhado.
- Um servidor que apenas reinicia (uma atualização, uma reinicialização) ainda sabe onde seus próprios telefones estão registrados: ele os mantém em sua pasta de dados (
registrations.json), então as chamadas atingem-os antes que eles se registrem novamente. - Health e Servidores o mostram como parado; quando ele volta, ele não assume nada de volta do servidor que assumiu.
Entre servidores. Os servidores alcançam-se mutuamente na porta SIP sobre TCP, ou TLS quando têm um certificado (cada um aceita apenas o certificado que o outro publicou, e o som entre eles é então criptografado com SRTP), e enviam som para as portas de mídia um do outro (UDP, a faixa em Configurações). As chamadas entre servidores são assinadas com um segredo que compartilham no banco de dados, e apenas aceitas de um membro em execução no seu próprio endereço. Um firewall entre eles deve permitir que essas portas passem.
Tente primeiro: o laboratório. O BitVoice vem com um laboratório que executa dois servidores, seu banco de dados e telefones de teste em um computador com Docker, cada um em um endereço próprio: deploy/lab/run.sh up constrói e inicia-o e define o endereço compartilhado; run.sh call chama entre telefones em servidores diferentes; run.sh failover mata o servidor que transporta uma chamada através do endereço compartilhado e verifica se a chamada continua (o som retorna em cerca de cinco segundos); run.sh impaired chama de um telefone em uma ligação ruim (atraso, jitter e 5% de perda) e verifica a qualidade da chamada que o BitVoice relata; run.sh down remove-o. As páginas dos servidores estão em https://127.0.0.1:18501 e :18502 (usuário admin).
Onde os dados são mantidos (SQLite ou PostgreSQL)
/settingsO BitVoice mantém suas configurações e versões salvas, usuários, contatos, registros de chamadas, log de auditoria, textos, notas e transcrições em um banco de dados. Gravações e correio de voz permanecem como arquivos de som na pasta de dados.
Este arquivo próprio do servidor (SQLite, o padrão): um arquivo único, bitvoice.db na pasta de dados, com nada a instalar. Faça backup da pasta de dados e você terá tudo.
PostgreSQL: para vários servidores BitVoice compartilhando um conjunto de dados, ou para relatórios em ferramentas como Power BI, Grafana ou Metabase. Em Configurações, Banco de Dados, Mover os dados para o PostgreSQL: crie um banco de dados vazio e um usuário que o possui, insira o endereço (postgres://usuário:senha@host:5432/banco_de_dados), pressione Testar, então Copiar os dados e reiniciar no PostgreSQL. Tudo é copiado de uma vez (tudo ou nada) e o BitVoice reinicia nele; o arquivo antigo permanece onde estava. Mover de volta para o arquivo próprio do servidor funciona da mesma maneira. Movimentos são recusados enquanto as chamadas estão em andamento.
Os servidores que compartilham um banco de dados PostgreSQL veem as alterações de configuração uns dos outros dentro de cinco segundos. Cada um ainda atende seus próprios telefones e chamadas; para que um segundo servidor assuma os telefones de um primeiro, os telefones precisam dos dois endereços (ou um endereço que se move).
O banco de dados também pode ser nomeado quando o BitVoice é iniciado, com -database postgres://… ou a variável de ambiente BITVOICE_DATABASE; ele é então alterado lá, não em Configurações.
Instalações mais antigas: na primeira inicialização desta versão, o BitVoice copia seus arquivos JSON antigos para o banco de dados e os move para pre-database na pasta de dados.
Hospedando outras organizações
/tenantsUm BitVoice pode hospedar várias organizações. Cada uma é um sistema telefônico próprio: seus próprios ramais, números, troncos, rotas, administradores, caixa de voz, gravações e histórico de chamadas. Nenhuma organização pode ver a de outra. Elas compartilham apenas a porta SIP, a porta IAX2 e as portas de mídia deste servidor.
Quando usá-lo
- Um provedor, ou uma empresa de TI, executando sistemas telefônicos para muitos clientes pequenos em um servidor.
- Um grupo de escritórios ou clínicas que desejam sistemas separados, administrados separadamente, em hardware compartilhado.
- Vários pontos de atendimento compartilhando um sistema, cada um mantendo seus próprios atendentes e registros.
O sistema principal é uma organização também: a que este servidor foi configurado como. Seus administradores gerenciam os outros.
Adicionando uma organização
- Abra Organizações (capítulo 65) e pressione Adicionar organização.
- Forneça seu nome e um nome curto (letras minúsculas, dígitos e hifens). O nome curto é parte do seu endereço web,
/t/acme/, e do registro de seus telefones,acme.100. Ele não pode ser alterado posteriormente. - Opcionalmente forneça seu próprio domínio, como
pbx.acme.example, apontado para este servidor. Os telefones se registram nesse domínio, e seus administradores abrem em um navegador. - Defina seu primeiro administrador: um nome de usuário e uma senha com pelo menos 12 caracteres, e seu país.
- Opcionalmente defina limites.
A organização começa imediatamente com um sistema telefônico vazio, pronto para seu administrador configurá-lo como descrito em Introdução (capítulo 1).
Como as chamadas encontram a organização certa
| Uma solicitação | vai para |
|---|---|
de um telefone que se registra em pbx.acme.example | a organização com esse domínio |
de um telefone que se conecta como acme.100 | Acme, ramal 100 |
| de um provedor, para um número | a organização cujo tronco é e cuja rota de entrada tem esse número |
| qualquer outra coisa | o sistema principal |
Então, duas organizações podem ter ambos o ramal 100, e várias podem compartilhar uma conta de provedor com números diferentes.
Onde estão seus dados
No SQLite, cada organização tem sua própria pasta em tenants/ na pasta de dados, com seu próprio arquivo de banco de dados. No PostgreSQL, cada uma tem seu próprio esquema no mesmo banco de dados (tenant_acme). Backups, arquivos e exportações são por organização.
Limites
| Limite | O que acontece ao atingi-lo |
|---|---|
| Ramais | adicionar um mais é recusado com uma mensagem |
| Chamadas simultâneas | novas chamadas são recusadas (503) até que uma termine |
| Armazenamento | novas gravações e caixa de voz não são mantidas |
| Solicitações de IA por dia | transcrições, resumos e a recepcionista de IA param até a meia-noite UTC |
0 é sem limite. Chamadas de emergência nunca são recusadas: uma organização em seu limite de chamadas, ou suspensa, ainda pode ligar para 911 e ser chamada de volta.
Abrindo uma organização
Abrir conecta-se à sua interface web como o provedor, sem sua própria conta; ela aparece em seu registro de auditoria como o provedor. Seus administradores se conectam em seu próprio endereço com suas próprias contas. Cada organização tem seu próprio cookie de conexão, então estar conectado a uma nunca conecta ninguém a outra.
As organizações nunca veem as telas deste servidor: atualizações, o banco de dados, os outros servidores, o certificado, a traça SIP (que mostra as mensagens de cada organização), o gerador de chamadas ou esta lista.
Suspensão e remoção
Suspenso para sign-ins e cada chamada, exceto chamadas de emergência; nada é excluído. Remover para a organização e move sua pasta para o lado (tenants/.removed-<name>-<time>), então um erro pode ser desfeito manualmente.
Codecs e som
Um codec é como o som é convertido em dados em uma chamada. Telefones, navegadores e operadoras cada um suporta alguns; o BitVoice converte entre qualquer dois de seus codecs quando duas partes diferem, para que todos possam se comunicar. Quando ambos usam o mesmo codec, o som passa sem alterações.
Os codecs
| Codec | Som | Largura de banda | Usado por |
|---|---|---|---|
| G.722 | HD (largura de banda ampla) | 64 kbit/s | a maioria dos telefones de mesa: a melhor escolha entre eles |
| G.711 µ-law | telefone | 64 kbit/s | América do Norte e Japão; todas as operadoras |
| G.711 A-law | telefone | 64 kbit/s | o resto do mundo |
| Opus | HD, lida com perda | 24 kbit/s | navegadores e aplicativos móveis |
| G.729 | telefone, um pouco mais áspero | 8 kbit/s | links finos, algumas operadoras |
| G.726 (40 kbit/s) | telefone; transporta tons de modem melhor do que as taxas G.726 | 40 kbit/s | gateways, alguns sistemas DECT |
| G.726 (32 kbit/s) | próximo ao telefone | 32 kbit/s | bases DECT, gateways mais antigos |
| G.726 (24 kbit/s) | entre 32 e 16 | 24 kbit/s | alguns sistemas DECT |
| G.726 (16 kbit/s) | áspero | 16 kbit/s | links muito finos |
| AMR-WB (G.722.2) | HD | 6,6 a 23,85 kbit/s | voz HD de redes móveis, interconexões VoLTE |
| AMR | telefone, móvel | 4,75 a 12,2 kbit/s | redes móveis, algumas operadoras e gateways |
| iLBC | telefone, lida com perda | 13,3 ou 15,2 kbit/s | softphones e aplicativos mais antigos |
| Speex | telefone | 15 kbit/s (2,15 a 24,6) | softphones mais antigos, links para outros sistemas Asterisk |
| GSM | mais áspero | 13 kbit/s | softphones e gateways mais antigos |
| G.723.1 | áspero; convertido apenas com ffmpeg | 5,3 ou 6,3 kbit/s | telefones de vídeo e gateways muito antigos |
| G.722.1 (Siren 7) | largura de banda ampla, transportado sem alterações | 24 ou 32 kbit/s | telefones Polycom, telefones de vídeo e conferência |
| G.722.1C (Siren 14) | super-largura de banda, transportado sem alterações | 24 a 48 kbit/s | telefones de conferência, sistemas de sala |
| G.719 | faixa completa, transportado sem alterações | 32 a 128 kbit/s | sistemas de sala de telepresença |
| Codec2 | largura de banda muito baixa, transportado sem alterações | 0,7 a 3,2 kbit/s | links de rádio, gateways de rádio amador |
As configurações listam os codecs que os telefones podem usar, em ordem de prioridade; cada trunk pode ter sua própria lista. As portas de adaptadores analógicos sempre usam G.711, que é necessário para faxes, modems e painéis de alarme.
G.722.1, G.722.1C, G.719 e Codec2 são transportados sem alterações entre duas partes que os usem, com a taxa de bits ou modo mantido na oferta (o BitVoice não os converte, então uma chamada entre um deles e um telefone sem ele usa outro codec que ambos tenham). Coloque-os em uma lista, acima do G.711, onde os sistemas de sala ou telefones de conferência devem manter a faixa de som quando se comunicam entre si. As listas nomeiam o G.722.1 a 32 kHz como G7221C, embora o SDP chame ambos de G7221.
G.723.1 passa sem alterações entre duas partes que o usem. Para permitir que um dispositivo somente G.723.1 se comunique com qualquer outro, ative Converter G.723.1 com ffmpeg nas Configurações e instale o ffmpeg (apt install ffmpeg, brew install ffmpeg): o BitVoice então executa o ffmpeg como um programa separado para cada direção que precise ser convertida (ouvida em qualquer taxa, enviada a 6,3 kbit/s, a taxa que o codificador do ffmpeg produz), cerca de 60 ms depois dos outros codecs, e o interrompe alguns segundos após a chamada. O BitVoice não contém código G.723.1 próprio: o código de referência da ITU não tem licença que permita incluí-lo, e o ffmpeg é instalado e executado por conta própria.
O que custa a conversão
A conversão consome tempo de processador, apenas em chamadas onde os dois lados diferem. Por chamada, cerca de 0,3 ms de um núcleo a cada 20 ms para o Opus e 0,12 ms para o G.729 (algumas 60 e 170 chamadas convertidas por núcleo); o G.726 e o GSM custam menos do que o G.729; o G.711 e o G.722 quase nada. O G.729 é enviado sem a Anexo B (sem quadros de silêncio).
Limpeza de som
A limpeza de som (Configurações) reduz o ruído de fundo constante e equaliza os níveis, para correio de voz e, se desejar, durante as chamadas.
Microsoft Teams (Roteamento Direto)
/trunksO BitVoice pode ser o controlador de borda de sessão (SBC) para um locatário do Microsoft Teams, para que os usuários do Teams chamem as extensões do BitVoice e suas linhas de telefone, e o BitVoice toque os usuários do Teams.
O que você precisa: um nome público para este servidor em um domínio que o seu locatário do Microsoft 365 verificou (sbc.example.com), a porta 5061 aberta em ambos os sentidos para as redes da Microsoft 52.112.0.0/14 e 52.120.0.0/14, e um certificado para esse nome de uma autoridade pública. Os usuários do Teams precisam de uma licença do Phone System.
Etapa
- Configurações, Certificado: instale o certificado e sua chave privada (PEM). Ele é usado imediatamente, para esta interface e para SIP sobre TLS, e o BitVoice o apresenta à Microsoft.
- Trunks, Adicionar, comece com Microsoft Teams: insira o nome público do servidor. A gaveta diz se o certificado o cobre.
- Copie o PowerShell que a gaveta mostra e execute como administrador do Teams: ele adiciona o SBC (New-CsOnlinePSTNGateway), uma rota de voz e política, e uma regra de plano de discagem para que números de extensão curtos alcancem o BitVoice como discado; então dê a cada usuário do Teams a política e seu número.
- Para tocar usuários do Teams a partir do BitVoice, adicione uma rota de saída para seus números através da trunk do Teams. O Teams encontra seus usuários apenas por números com + e o código de país: se as pessoas discam para eles sem, coloque + e o código de país no Prepend da rota (o rastro de motivo da chamada diz isso quando uma sai sem).
Quando um utilizador do Teams transfere uma chamada, a Microsoft pede ao BitVoice para a colocar (um REFER com o nome do seu próprio proxy, com o número ou o ID do utilizador do Teams): o BitVoice chama de volta exatamente o que a Microsoft nomeou, com o Referred-By que a Microsoft forneceu, para que uma transferência para outro utilizador do Teams funcione tão bem como uma para um número de telefone. O BitVoice nunca envia um cabeçalho Replaces para a Microsoft, que o recusa.
O BitVoice envia OPÇÕES da Microsoft a cada minuto com o nome do SBC no Contato, como a Microsoft exige, e tenta sip, sip2 e sip3.pstnhub.microsoft.com em sequência. A mídia é sempre criptografada (SRTP). A saúde avisa quando o certificado não cobre o nome, é autoassinado ou termina em breve, e quando a Microsoft para de responder.
Isso segue os requisitos de SBC publicados da Microsoft e é testado contra um proxy simulado da Microsoft; o BitVoice não está na lista de SBCs certificados da Microsoft.
Importar
/importTraz extensões, grupos de chamada, filas e troncos do FreePBX, Asterisk ou 3CX; e pessoas, grupos de caça e chamada, troncos SIP, números de entrada e padrões de discagem da Cisco, Avaya e Mitel. Faça o upload dos arquivos exportados, vários de uma vez (um .zip ou .tar deles também funciona); o BitVoice mostra exatamente o que mudaria antes que qualquer coisa seja aplicada, e a importação se torna uma revisão que pode ser desfeita em Alterações (capítulo 61).
Migrando do FreePBX
O melhor arquivo é um backup do FreePBX: ele contém tudo, incluindo senhas SIP.
- No FreePBX: Admin → Backup & Restore → Adicionar Backup. Marque pelo menos Core, Grupos de chamada, Filas e Correio de voz (todos os módulos está bem), salve e Execute.
- Baixe o backup da linha (o arquivo é nomeado como
20261001-100000-1790000000-17.0.19-1234567.tar.gz). - Instale o BitVoice no novo servidor e finalize a configuração com uma extensão que o FreePBX não usa (digamos 199) e sem linha telefônica: a importação traz as linhas.
- Em Importar (capítulo 68), solte o .tar.gz como está. Leia a pré-visualização: os avisos listam tudo o que não pode ser transferido.
- Escolha Adicionar. É uma revisão em Alterações (capítulo 61): desfaça-a se algo parecer errado e importe novamente.
- Mova os telefones: aponte cada um para o BitVoice (ou provisione-os a partir de Telefones (capítulo 4)), com o mesmo número de extensão e senha SIP que tinham.
- Teste as chamadas de entrada e saída, então mova o registro do carrier (ou a portabilidade do número) por último.
Testado em um sistema real: um FreePBX 17.0.33 (a instalação oficial do Debian 12) com quatro extensões e correio de voz, um tronco PJSIP que se registra, duas rotas de saída (uma com um prefixo de discagem), um grupo de chamada, uma fila com penalidades e três DIDs, backup feito pelo Backup & Restore com todos os módulos marcados. O backup é de 70 MB, quase todo ele arquivos de som e histórico de chamadas: o BitVoice lê como vem e mantém apenas a configuração, então um backup de até 512 MB é enviado. Tudo o que está acima veio: as senhas, os PINs e e-mails do correio de voz, o registro e codecs do tronco, as rotas com seus prefixos, a caixa de correio de voz do grupo de chamada quando não atendido, as penalidades e DIDs do grupo, da fila e da extensão.
O que é transferido:
- Extensões: o número, nome, ID do chamador de saída, tempo de toque e senha SIP (o BitVoice cria uma nova quando a do FreePBX é mais curta que 12 caracteres: re-insira-a no telefone). Correio de voz com seu PIN e endereço de e-mail (e se as mensagens são enviadas anexadas).
- Troncos: contas de carrier PJSIP e chan_sip: servidor, porta, nome de usuário, senha, registro, domínio de origem, codecs, ID do chamador, limite de canal. Troncos desligados permanecem desligados. Troncos DAHDI se tornam o tronco de cartões de telefonia.
- Rotas de saída, na ordem do FreePBX: cada padrão de prefixo se torna dígitos dropados, seus dígitos pré-adicionados. Uma rota cujos padrões dropam ou adicionam dígitos diferentes se torna uma rota do BitVoice para cada.
- Grupos de chamada: membros, tempo de toque, toque-tudo ou um-depois-do-outro (caça, memória de caça, primeiro disponível), e para onde as chamadas não atendidas vão.
- Filas: membros com suas penalidades, estratégia (toque-tudo, menos recente, menos chamadas, rodízio, linear, aleatório), tempo de toque, tempo de finalização e espera mais longa.
- Rotas de entrada: cada DID para sua extensão, grupo de chamada, fila, caixa de correio de voz ou desligar.
O que não é e é dito na pré-visualização: IVRs, condições de tempo, anúncios, siga-me, troncos personalizados e contextos, correspondência de ID do chamador em rotas e números externos em grupos de chamada. Construa-os em Menus (capítulo 21), Agendamentos (capítulo 26) e Siga-me da extensão. Backups mais antigos (FreePBX 13 e antes) e um mysqldump asterisk simples do banco de dados do FreePBX são lidos da mesma forma.
Outros sistemas
Onde cada exportação é:
- FreePBX (apenas extensões): Admin → Bulk Handler → Export → Extensões (CSV).
- Asterisk: pjsip.conf ou sip.conf.
- 3CX: Utilizadores → Exportar (CSV).
- Cisco Unified CM: Administração em massa → Telefones → Exportar Telefones, todos os detalhes; ou Utilizadores → Exportar Utilizadores. O primeiro número de cada telefone torna-se a extensão, com o nome ou rótulo da linha como nome.
- Avaya IP Office: Gerente → Ficheiro → Importar/Exportar → Exportar, Utilizadores.
- Avaya Communication Manager:
list stationguardado como CSV; estações virtuais e VDNs são omitidas. - Mitel MiVoice Business: Gestão de Dados do Sistema → Configuração de Utilizadores e Dispositivos → Exportar.
Grupos e rotas. Faça o upload com o ficheiro de pessoas, para que os membros de cada grupo sejam encontrados por número ou por nome:
- Cisco Unified CM: Administração em massa → Importar/Exportar → Exportar, com Grupo de Linha, Lista de Caça, Piloto de Caça, Tronco SIP e Padrão de Rota selecionados; faça o upload do .tar como vem. Cada piloto de caça torna-se um grupo de chamada com os membros da lista de caça do grupo de linhas, Top Down e Circular como um após o outro, Broadcast como todos de uma vez, o tempo limite de reversão do RNA como tempo de chamada. Os padrões de rota tornam-se rotas de saída:
9.[2-9]XXXXXXcom PreDot é o padrão9[2-9]XXXXXXdropando o 9;!torna-se um ponto final. Padrões que usam@(o plano nacional) são listados para serem escritos à mão. - Avaya IP Office: exporte Grupo de Caça, bem como Utilizadores (ambos são CSV sem linha de cabeçalho). O modo de grupo é todos de uma vez; Caça, Rotação e Espera Mais Longa tocam um após o outro.
- Avaya Communication Manager:
list hunt-groupguardado como CSV, com os membros em uma coluna Membros ou em um ficheiro de membros separado. - Mitel MiVoice Business: Grupos de Chamada e Atribuição de Grupo de Chamada (Cascade é um após o outro, Ring All é todos de uma vez), e Grupos de Caça.
Troncos a partir dessas exportações vêm desligados e sem senhas, pois as exportações não as transportam. Rotas saem no tronco importado com o mesmo nome; uma rota cujo tronco não esteja aqui é omitida e relatada. Toque rotativo e mais longo ocioso é mais próximo de uma fila do que de um grupo de chamada: a pré-visualização diz isso, para que você possa torná-lo um.
Essas exportações (todas, exceto um backup do FreePBX) não contêm senhas SIP, então cada extensão obtém uma nova; PINs de correio de voz, nomes e endereços de e-mail vêm quando a exportação os tem. Telefones Cisco, Avaya H.323/DCP e Mitel executam o software próprio do fabricante e não podem ser configurados pelo BitVoice: a importação diz quantos foram listados. Telefones Cisco podem ser redefinidos com o firmware multiplataforma (SIP) da Cisco; telefones Avaya J100 e Mitel 6800/6900 podem se registrar no BitVoice manualmente no modo SIP.
Configuração como código
Tudo o que as telas fazem passa pela API REST do BitVoice, por isso qualquer coisa pode ser scriptada, mantida no Git ou gerenciada com o Terraform. A API é descrita para ferramentas em /api/openapi.json (/api/openapi.json).
Tokens de API
Criados em Administradores (capítulo 57): um por programa, somente leitura ou capaz de alterar tudo. Envie-o como Authorization: Bearer bv_.... Ele é exibido uma vez; revogue-o quando não for mais necessário. As alterações de um token são exibidas em Alterações e no registro de auditoria sob seu nome.
curl -H "Authorization: Bearer bv_..." https://pbx.example.com/api/extensions
Terraform ou OpenTofu
O repositório deploy/terraform mostra extensões, grupos de toque e rotas gerenciados com o provedor REST genérico: o plano mostra o que mudaria, aplicar faz a mudança. O provedor verifica o certificado do BitVoice; enquanto o BitVoice ainda utiliza seu próprio certificado autoassinado, obtenha um do Let's Encrypt (Configurações, Certificados) ou defina bitvoice_insecure = true em uma rede de confiança (no Linux, SSL_CERT_FILE apontando para o certificado do BitVoice também funciona). Os recursos são combinados pelo id que o BitVoice fornece a eles, por isso um segundo plano não mostra alterações até que o arquivo ou as telas alterem algo.
Configuração a partir do Git
Em Configurações (capítulo 14), Configuração a partir do Git, o BitVoice lê a configuração de um arquivo em um repositório a cada poucos minutos e mostra o que difere ou faz as alterações. Inicie o arquivo com Exportar para Git, que deixa de fora as senhas; o BitVoice mantém as suas, por isso os segredos nunca vão para o repositório.
Compatibilidade com Asterisk (AMI, ARI e AGI)
Ferramentas escritas para Asterisk podem controlar o BitVoice: CRMs, painéis de visualização, botões de discagem por clique, controladores de gravadores de chamadas. Ative em Configurações (capítulo 14), Compatibilidade com Asterisk. Ferramentas veem chamadas como canais nomeados como PJSIP/100-..., como no Asterisk.
AMI
A interface de gerenciamento na porta TCP 5038 (AMI ouve em: este computador apenas por padrão). Suportado:
| Tipo | Nomes |
|---|---|
| Ações | Login (plano ou desafio MD5), Ping, Eventos, Filtro, ListaComandos, CoreShowChannels, Status, CoreStatus, CoreConfigurações, PJSIPShowEndpoints, EstadoExtensão, ListaEstadoExtensão, ListaEstadoDispositivo, Getvar, Originate, Redirecionar, TransferênciaCega, Desligar, Logoff |
| Filas | QueueStatus, QueueSummary, QueuePause, QueueAdd e QueueRemove (eles assinam um agente em, ou fora, de todas as suas filas), Agentes |
| Outros | ChamadasEstacionadas; ConfbridgeListRooms, ConfbridgeList, ConfbridgeKick, ConfbridgeMute, ConfbridgeUnmute, ConfbridgeLock, ConfbridgeUnlock; ContagemCaixaPostal, StatusCaixaPostal; PauseMonitor, UnpauseMonitor; EventoUsuário; Recarregar (nada para recarregar: as alterações são aplicadas imediatamente) |
| Eventos | Newchannel, Newstate, Hangup, DialBegin, DialEnd, Hold, Unhold, PeerStatus, ContactStatus, MessageWaiting, ConfbridgeJoin, ConfbridgeLeave, ConfbridgeEnd, EventoUsuário |
Filtro mantém apenas os eventos que uma expressão regular combina (Event: Newchannel), ou os descarta com ! primeiro, como no Asterisk. Não há linha de comando do Asterisk: Comando responde com um erro.
ARI
Em /ari/, com autenticação básica ou ?api_key=user:secret:
| Solicitação | O que faz |
|---|---|
GET /ari/channels | as chamadas em andamento |
POST /ari/channels?endpoint=PJSIP/100&extension=5551234 | toca 100, então chama o número |
DELETE /ari/channels/{id} | desliga |
POST /ari/channels/{id}/redirect?endpoint=PJSIP/102 | envia a chamada para 102 |
/ari/endpoints, /ari/bridges, /ari/asterisk/info | telefones, pontes, versão |
/ari/events | um WebSocket de eventos |
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=rtp&format=ulaw | um canal enviando som para um programa por RTP (ulaw ou alaw sobre UDP); sua porta local está no UNICASTRTP_LOCAL_PORT do canal |
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=audiosocket&transport=tcp&format=slin&data=<uuid> | o mesmo por AudioSocket |
POST /ari/bridges/{call}/addChannel?channel={id} | o canal de mídia externa se junta a uma chamada: ele ouve ambas as partes e ambas o ouvem; com role=listener ninguém o ouve (para transcrição ao vivo) |
POST /ari/bridges/{call}/removeChannel?channel={id} | ele deixa a chamada; as duas partes falam diretamente novamente |
Um canal de mídia externo não adicionado a uma chamada dentro de um minuto é fechado.
Aplicativos ARI
Um aplicativo ARI (Asterisk's Stasis()) executa chamadas a partir do seu próprio programa. Adicione-o em Aplicativos ARI em Configurações, compatibilidade Asterisk: um nome, um número de extensões opcional para discar, e um fallback. Em seguida, envie chamadas para ele como qualquer destino: uma rota de entrada, uma tecla de menu, um cronograma.
Seu programa se conecta a /ari/events?app=NAME (um WebSocket, com o login em ?api_key=user:secret). Cada chamada que atinge o aplicativo é atendida e chega como StasisStart, com o canal; o programa então o executa:
| Solicitação | O que faz |
|---|---|
POST /ari/channels/{id}/play?media=sound:goodbye,digits:42 | reproduz prompts de Sons (sound:), digits:, number:, tone:beep ou uma gravação armazenada (recording:); PlaybackStarted e PlaybackFinished seguem. DELETE /ari/playbacks/{id} para ele. |
POST /ari/channels/{id}/record?name=msg1&maxDurationSeconds=60&maxSilenceSeconds=5&beep=true&terminateOn=%23 | grava (wav) em gravações armazenadas; RecordingStarted e RecordingFinished. POST /ari/recordings/live/{name}/stop termina, DELETE descarta. |
GET /ari/recordings/stored, .../{name}, .../{name}/file, DELETE .../{name} | as gravações armazenadas |
POST /ari/channels/{id}/dtmf?dtmf=123 | envia teclas para o chamador |
GET/POST /ari/channels/{id}/variable?variable=X&value=Y | as variáveis do canal |
POST /ari/bridges?bridgeId=room1, .../addChannel?channel=a,b, .../removeChannel, .../play, DELETE | pontes de mistura: todos em uma ouvem todos os outros |
POST /ari/channels/{id}/continue?extension=101 | deixa a chamada: para essa extensão, grupo de toque ou fila, caso contrário o fallback |
DELETE /ari/channels/{id} | desliga |
POST /ari/channels?endpoint=PJSIP/101&app=NAME | toca 101; atendido, ele entra no aplicativo |
GET /ari/applications | os aplicativos, se um programa está conectado e seus canais |
POST /ari/channels/{id}/mute?direction=in, DELETE .../mute | silencia o que o chamador diz (in), o que ele ouve (out) ou ambos |
POST/DELETE /ari/channels/{id}/hold, .../moh, POST .../silence | música de espera para o chamador (ChannelHold, ChannelUnhold), ou silêncio |
GET/POST /ari/channels/{id}/variables | várias variáveis de uma vez (ChannelVarset) |
POST /ari/channels/{id}/move?app=other | passa o canal para outro aplicativo (StasisEnd, então StasisStart lá; ApplicationMoveFailed quando nenhum programa o executa) |
POST /ari/channels/{id}/snoop?spy=in&app=NAME | um canal de escuta em um aplicativo que ouve o que o chamador diz, para gravá-lo (POST /ari/channels/{snoop}/record) |
POST /ari/channels/create?endpoint=PJSIP/101&app=NAME, então POST .../dial | um canal que espera até ser discado; eventos Dial contam como a chamada está indo, e ele entra no aplicativo quando atendido |
GET /ari/channels/{id}/rtp_statistics | pacotes e bytes enviados e recebidos, perda e jitter |
POST /ari/playbacks/{id}/control?operation=pause | pausa, retomada, reinicialização, reverso e avanço (três segundos) |
POST /ari/bridges/{id}/moh, .../record, .../variable, .../play/{playbackId} | música de espera para uma ponte, gravando sua mistura, suas variáveis |
POST /ari/recordings/stored/{name}/copy, POST/DELETE /ari/recordings/live/{name}/pause, .../mute | copia uma gravação; pausa ou silencia uma ao vivo |
POST /ari/applications/{app}/subscription?eventSource=deviceState:Custom:lamp, PUT .../eventFilter | assinaturas (canal:, ponte:, endpoint:PJSIP/100, deviceState:) e filtros de eventos ({"disallowed": [{"type": "ChannelVarset"}]}) |
GET /ari/deviceStates, PUT /ari/deviceStates/Custom:lamp?deviceState=INUSE | estados dos telefones (PJSIP/100: NOT_INUSE, INUSE, RINGING, UNAVAILABLE) e personalizados que os programas mantêm (DeviceStateChanged); estado do telefone também chega como EndpointStateChange |
GET /ari/mailboxes, PUT /ari/mailboxes/{name}?newMessages=1&oldMessages=0 | contagens de caixa de voz das extensões (100@default), e caixas de correio que um programa mantém por conta própria |
GET /ari/sounds | os prompts de Sons, nas línguas em que foram gravados, e os sons carregados para scripts AGI |
PUT /ari/endpoints/sendMessage?to=pjsip:100&body=Hi | um texto na extensão 100 dos telefones |
POST /ari/events/user/{name}?application=NAME | um evento de usuário para um aplicativo (ChannelUserevent) |
GET /ari/asterisk/ping, GET/POST /ari/asterisk/variable, GET /ari/asterisk/modules | ping, variáveis globais e partes do BitVoice nomeadas como os módulos que representam |
O BitVoice responde a todas as operações do ARI publicado pelo Asterisk (o seu conjunto de testes chama cada uma e verifica se o que é retornado tem os campos que a descrição do Asterisk exige). Algumas não têm nada a ver aqui e respondem com 501 e o motivo: módulos carregáveis (o BitVoice é um programa), configuração dinâmica do Sorcery (o BitVoice é configurado na sua interface web), canais de log, fontes de vídeo de pontes (as pontes do ARI transportam som), envio de REFER para telefones e reclamação de chamadas de difusão. Um espião só ouve o chamador (spy=in), e o whisper não é oferecido: faça uma ponte de um canal com o deles para falar com eles. Eventos de canal para cada chamada (ChannelCreated, ChannelStateChange, ChannelDestroyed) vão para cada programa, como no Asterisk com subscribeAll=true. Bibliotecas do ARI que lêem a interface do servidor (ari-client e outras) encontram-na em /ari/api-docs/resources.json. Quais programas mantêm agora, em Aplicativos do ARI em Configurações, mostra os aplicativos, estados de dispositivos personalizados, caixas de correio, variáveis globais e pontes que os programas estabeleceram.
Teclas pressionadas chegam como ChannelDtmfReceived; um chamador que desliga como StasisEnd. Quando nenhum programa está conectado, a chamada vai para o fallback; quando a última conexão de um programa é fechada, as chamadas vão para lá também após cinco segundos (tempo para reconectar). Para lógica de chamada sem um programa próprio, use Scripts (capítulo 27) que executam a chamada inteira; para entregar o áudio a um programa, Voice bots (capítulo 24).
Scripts AGI
Um script AGI (Asterisk's AGI() e EAGI()) executa um comando de chamada por comando, então IVRs e integrações escritas para o Asterisk (phpagi, pyst2, Asterisk-Java, qualquer servidor FastAGI) continuam funcionando. Adicione-o em Scripts AGI em Configurações, compatibilidade com o Asterisk:
| Campo | O que é |
|---|---|
| Nome do script | como os destinos o nomeiam |
| Endereço | um servidor FastAGI, agi://host:4573/script?x=1 (porta 4573 quando nenhuma é fornecida), hagi://domain/script para os servidores nos registros SRV _agi._tcp do domínio, tentados em ordem de prioridade, ou o nome do arquivo de um programa na pasta Programas AGI |
| Argumentos | passados como agi_arg_1, agi_arg_2 … |
| Número para discar | opcional: extensões discam como qualquer número |
| Fallback | para onde a chamada vai quando o script termina sem escolher um número, ou não pode ser alcançado |
| Execução mais longa | um script que executa por mais tempo é interrompido (padrão de uma hora) |
| EAGI | para um programa: o áudio do chamador (8 kHz, 16 bits assinados, little-endian) no descritor de arquivo 3. Linux e macOS |
Testar conecta-se ao servidor (ou verifica se o programa está lá e é executável) sem enviar uma chamada. Em seguida, envie chamadas para ele como qualquer destino.
O BitVoice atende a chamada, envia as variáveis agi_ (agi_network_script, agi_callerid, agi_dnid, agi_extension, agi_language …) e executa os comandos, respondendo como o Asterisk 20 (o conjunto de testes compara cada resposta com uma gravação do Asterisk):
| Comandos | Notas |
|---|---|
| ANSWER, HANGUP, CHANNEL STATUS, NOOP, VERBOSE | HANGUP com apenas um nome de canal termina a chamada do próprio script |
| STREAM FILE, CONTROL STREAM FILE, GET OPTION, GET DATA, WAIT FOR DIGIT | teclas de escape, deslocamentos de amostra e endpos como no Asterisk; avanço rápido, rebobinamento e pausa no CONTROL STREAM FILE |
| SAY DIGITS, SAY NUMBER, SAY ALPHA, SAY PHONETIC, SAY DATE, SAY TIME, SAY DATETIME | com um serviço de fala nas Configurações, AI eles são falados; sem, os dígitos são ditos a partir dos Sons |
| RECORD FILE | s=N silêncio, um beep, teclas de escape; o arquivo fica na biblioteca de sons |
| SET VARIABLE, GET VARIABLE, GET FULL VARIABLE | CALLERID(num), CALLERID(name), EXTEN, UNIQUEID, CHANNEL … e expressões ${NAME} |
| DATABASE GET, PUT, DEL, DELTREE | banco de dados do Asterisk (AstDB), mantido pelo BitVoice e mostrado em Banco de dados AGI |
| SET CALLERID, SET EXTENSION, SET CONTEXT, SET PRIORITY, SET AUTOHANGUP, SET MUSIC | SET EXTENSION é para onde a chamada vai quando o script termina |
| SPEECH CREATE … SPEECH RECOGNIZE | usa o reconhecimento de fala das Configurações, AI: o resultado é o que o chamador disse, como text0, para o script comparar; gramáticas são aceitas e não usadas |
| EXEC | Answer, Hangup, Playback, Background, Read, Set, MSet, SayDigits, SayNumber, SayAlpha, Wait, Dial (toca cada número por vez; DIALSTATUS), Goto, VoiceMail, Queue, MusicOnHold, Record, NoOp, Verbose, Log. Outros respondem -2, como o Asterisk faz para um aplicativo ausente |
O BitVoice não tem um plano de discagem: onde um script iria continuar no plano de discagem do Asterisk (SET EXTENSION, EXEC Goto), a chamada vai para esse número aqui (uma extensão, grupo de toque, fila, menu ou um número externo através das rotas de saída) quando o script termina. Scripts nunca chamam números de emergência. Quando o chamador desliga, um script FastAGI recebe HANGUP e um programa SIGHUP; apenas comandos permitidos em um canal morto são executados (511 para os outros), e a conexão é fechada 30 segundos depois se o script continuar. Cada execução é mostrada em Últimas execuções com suas linhas VERBOSE e vai para o fluxo de eventos como agi.ran.
Sons para scripts AGI. Scripts reproduzem sons pelos nomes que usam no Asterisk: faça upload deles em Sons para scripts AGI com uma pasta (custom/welcome; es/custom/welcome para chamadores em espanhol). WAV, MP3 e .gsm, .ulaw, .alaw, .sln e .sln16 do Asterisk são aceitos; um caminho como /var/lib/asterisk/sounds/en/custom/welcome.gsm encontra custom/welcome. Os digits/0–digits/9, beep, silence/N e alguns outros (vm-goodbye, invalid, please-hold) do Asterisk reproduzem os próprios prompts e tons do BitVoice. O que os scripts gravam é mantido na mesma biblioteca, marcado gravado por um script, por dias que você escolher (30 por padrão). A biblioteca mantém até 1 GB.
Programas. Um programa é executado neste servidor com os direitos do BitVoice, por isso nunca é carregado através da web: copie-o para a pasta Programas AGI mostrada na tela (DATA/agi-bin) e torne-o executável. Ele recebe apenas PATH e AST_AGI_DIR do ambiente, é executado nessa pasta e o que ele escreve para o erro padrão vai para o log do servidor. O FastAGI envia comandos em TCP simples: mantenha o servidor neste computador ou em uma rede privada.
Logins
Cada login tem um Nome de usuário e Segredo. Logins são somente leitura a menos que marcados Pode alterar chamadas. Mantenha o AMI neste computador, a menos que a ferramenta seja executada em outro local: o AMI é simples, TCP não criptografado.
Assistentes de IA (MCP)
Um assistente de IA, como Claude, ChatGPT, Gemini ou Cursor, pode usar o BitVoice por meio do Protocolo de Contexto de Modelo (MCP), a forma padrão como os assistentes alcançam outros programas. Pergunte em palavras simples: quem ligou esta manhã e alguém retornou a ligação, o que o chamador do dentista disse, por que a ligação das 9 horas foi para a caixa de voz, se a linha do provedor está fora do ar. Com a sua permissão, também pode realizar uma ligação, enviar um texto ou desligar uma ligação.
BitVoice is the MCP server, at https://YOUR-SERVER/mcp (Streamable HTTP; the address shows in Settings). Nothing goes to any AI service unless an assistant you connected asks for it, and then only what it asked for.
Ativando
Em Configurações (capítulo 14), Assistentes de IA (MCP):
- Permitir que os assistentes de IA se conectem: desativado por padrão. Desativado,
/mcpnão responde nada, exceto que está desativado. - Permitir que os assistentes ajam: desativado por padrão. Desativado, os assistentes apenas leem, independentemente do token. Ativado, um assistente cujo token pode alterar coisas também obtém as ferramentas que agem.
O cartão mostra o endereço e as configurações prontas para serem copiadas para os assistentes comuns e lista todas as ferramentas.
O que um assistente pode fazer
Leitura (qualquer token):
- chamadas_atuais: as chamadas em andamento agora.
- histórico_de_chamadas: chamadas passadas, pesquisadas por número ou nome, por direção e a partir de um tempo, com o motivo pelo qual cada uma foi para onde foi.
- extensões: nomes, números, departamentos, e-mail; nunca a senha de um telefone.
- telefones_conectados: quais telefones estão registrados, de onde.
- caixa_de_voz, transcritos_de_pesquisa: mensagens e o que foi dito em chamadas gravadas.
- filas, trunk, saúde: filas agora, as linhas do provedor, as próprias verificações do BitVoice.
- diretório, mensagens_de_texto: o livro de telefones da empresa e conversas de texto.
Ação (com Permitir que os assistentes ajam e um token que pode alterar coisas):
- realizar_chamada: clique para chamar. O telefone da extensão toca primeiro; quando alguém atende, o BitVoice chama o número para eles, como se tivessem discado, então as rotas, a identificação do chamador e os limites deles se aplicam.
- enviar_texto: uma mensagem de texto de um dos números de texto da organização.
- desligar_chamada: termina uma chamada em andamento.
Cada ferramenta é uma das próprias rotas da API, executada como o assistente: ele vê e altera exatamente o que o seu token pode, as mesmas verificações se aplicam e as alterações estão no registro de auditoria sob o seu nome. Uma resposta é limitada a cerca de 60.000 caracteres; o assistente é informado para reduzir a pesquisa quando uma é cortada.
Conectando um assistente
Assistentes que entram (conectores personalizados Claude.ai e ChatGPT, e outros): adicione um conector com o endereço do BitVoice. O assistente abre o login do BitVoice no seu navegador; faça login como de costume (senha, dois passos, login único), e a página diz qual assistente pede e para onde ele retorna. Um administrador pode permitir que ele aja ou Apenas permitir que ele leia; o assistente de um visualizador apenas lê. Não permitir o envia embora com nada. O acesso então está em Administradores (capítulo 57), tokens da API, como Assistente de IA, conectado: ele funciona em /mcp apenas, nunca para o restante da API, dura uma hora de cada vez e se renova por até 30 dias de não ser usado. Revogar termina imediatamente. Esses assistentes alcançam o BitVoice a partir de seus próprios servidores, então ele precisa de um endereço acessível pela internet e um certificado que eles confiem (Let's Encrypt, em Certificado (capítulo 14)).
Assistentes que recebem um token (Claude Code, Cursor, VS Code e outras ferramentas que aceitam um endereço e um cabeçalho): crie um token da API em Administradores (capítulo 57), apenas leitura, a menos que ele deva agir, e forneça-o como Authorization: Bearer bv_...:
claude mcp add --transport http bitvoice https://pbx.example.com:8443/mcp --header "Authorization: Bearer bv_..."
Assistentes que iniciam um programa (Claude Desktop, e outros que aceitam um comando): o programa BitVoice carrega uma ponte, bitvoice mcp, que passa cada mensagem para o servidor via HTTPS. Forneça o endereço do servidor e o token:
{ "mcpServers": { "bitvoice": { "command": "bitvoice", "args": ["mcp", "-url", "https://pbx.example.com:8443"], "env": { "BITVOICE_TOKEN": "bv_..." } } } }
Com o certificado próprio do BitVoice (não um de uma autoridade), a ponte o recusa e imprime o seu SHA-256: verifique se é o certificado do seu servidor, então adicione "-pin", "THAT-SHA256" aos argumentos. Apenas esse certificado é aceito então.
Seguro para deixar ativado
- Apenas tokens: um login de navegador para o BitVoice nunca alcança
/mcp, e uma página em outro site é recusada (Origem), então uma página da web não pode usar uma conexão de assistente. - Os assistentes podem estar errados. Forneça-lhes um token apenas de leitura, a menos que eles precisem agir; qualquer coisa que eles fizeram está no registro de auditoria, e realizar uma chamada sempre toca o telefone de uma pessoa primeiro.
- Entrada por OAuth 2.1, como o MCP especifica: o assistente se registra (clientes públicos apenas, com PKCE), retorna apenas para os endereços que ele registrou (https, ou http para o seu próprio computador), e um código é válido por uma vez, por um minuto.
- Uma organização hospedada no BitVoice de outra pessoa fornece tokens para os seus assistentes; a entrada por OAuth lá ainda não foi tentada.
Arquivo
/archiveO arquivo mantém cópias de gravações, correio de voz e configuração em outro local: um bucket Amazon S3 (ou qualquer loja compatível com S3) ou um contêiner de armazenamento de blobs do Azure. Se o disco deste servidor for perdido, o arquivo ainda os terá.
Configurando
- Em Arquivo (capítulo 72), escolha Onde arquivar: Amazon S3 ou Azure.
- Para S3: o Bucket, sua Região, uma Pasta no bucket opcional e Ponto de extremidade (para lojas compatíveis com S3), e um ID de chave de acesso e Chave de acesso secreta. Copiar a política fornece a única permissão necessária para o BitVoice se conectar ao usuário ou função.
- Para Azure: uma URL de contêiner SAS com permissão de gravação e uma Pasta no contêiner opcional.
- Escolha o que copiar além da configuração: Gravações de chamadas, Correio de voz ou ambos.
O que acontece
A cada dez minutos, o BitVoice copia novas gravações e mensagens que ainda não estão no arquivo, e uma vez por dia, uma cópia datada da configuração (config/2026-10-13.json). A página mostra a última execução, o último sucesso e qualquer erro.
Excluir algo aqui (por retenção ou manualmente) não exclui a cópia do arquivo: defina as regras de ciclo de vida do bucket ou contêiner para determinar por quanto tempo o arquivo mantém as coisas.
Retenções legais
/holdsUma retenção legal mantém registros de chamadas, gravações e correio de voz que um assunto possa precisar e impede que alguém os exclua, até que seja liberada. Use-a quando um advogado solicita que os registros sejam preservados.
Adicionar uma retenção
Em Retenções legais (capítulo 73), pressione Adicionar:
| Campo | O que é |
|---|---|
| Nome | o que o assunto é chamado |
| Motivo | por que, para o registro |
| Números | as extensões e números externos que abrange (101, +15551234567), ou Tudo |
| De, Até | as datas que abrange; vazio para nenhum limite |
Enquanto uma retenção estiver ativa
- A retenção deixa o que abrange em paz, independentemente da idade.
- Ninguém pode excluir uma chamada, gravação ou correio de voz retido, incluindo administradores.
- Chamadas retidas mostram um cadeado em Histórico de chamadas (capítulo 47).
Liberar
Liberar torna o que a retenção manteve sujeito às configurações de retenção novamente: coisas mais antigas do que a retenção são excluídas na próxima limpeza. Retenções liberadas permanecem listadas, com quando e por quem, e adicionar e liberar retenções está no registro de auditoria.
Métricas: Prometheus, OpenTelemetry, Grafana, SNMP e registros de chamadas
/settingsPrometheus coleta /metrics no endereço web. Crie um token de API em Administradores (um token de visualizador é suficiente) e forneça-o ao Prometheus como seu token de portador:
scrape_configs:
- job_name: bitvoice
scheme: https
authorization: { credentials: bv_... }
static_configs: [{ targets: ['pbx.example.com'] }]
Ele lê chamadas em andamento (por estado), chamadas concluídas (por direção e resultado), tempo de conversa, telefones registrados, o estado e o tempo de ida e volta de cada tronco, chamadores aguardando e agentes em cada fila, pacotes de som recebidos e perdidos, um histograma de pontuações de qualidade de chamada (MOS) e callbacks agendados. Os contadores reiniciam a partir de zero quando o BitVoice é reiniciado, como o Prometheus espera.
OpenTelemetry: em Configurações, Métricas, insira o endereço OTLP/HTTP de um coletor (e um cabeçalho, como Autorização, com seu valor) para ter as mesmas medições enviadas a cada minuto (ou com a frequência que você definir, a partir de 15 segundos). Enviar agora verifica as configurações salvas.
Painel de Grafana baixa um painel pronto para uso: importe-o no Grafana e escolha sua fonte de dados do Prometheus.
SNMP
Para sistemas de monitoramento que falam SNMP (Zabbix, PRTG, LibreNMS, Nagios, SolarWinds), ative o agente SNMP em Configurações. Ele responde a GET, GETNEXT e GETBULK do SNMPv2c, somente leitura, na porta UDP 161 (ou outra que você escolher: a porta 161 precisa da permissão para abrir portas de baixo nível no Linux) e somente das redes que você lista. Escolha uma comunidade que não seja pública ou privada: é uma senha que cruza a rede em claro.
Ele serve o grupo de sistema padrão (sysDescr, sysUpTime, sysContact, sysName, sysLocation) e os valores próprios do BitVoice sob o OID base: chamadas em andamento e em chamada, telefones registrados, troncos ativos e configurados, chamadores aguardando, chamadas concluídas, segundos de conversa, pacotes perdidos, qualidade de chamada média, uma tabela de troncos (nome, ativo ou inativo, latência) e uma tabela de filas (aguardando, agentes, atendidas, abandonadas). Baixe BITVOICE-MIB ao lado das configurações para que seu sistema de monitoramento carregue. A BioDream LLC ainda não tem um número de empresa, então o OID base padrão está no espaço experimental do Net-SNMP; coloque um sob seu próprio número de empresa para mantê-lo estável.
Armadilhas (SNMPv2) são enviadas a cada receptor que você lista quando um tronco cai ou volta, uma chamada de emergência é feita ou um servidor de um cluster para de responder. O SNMPv3 ainda não é suportado.
Registros de chamadas em outro lugar
Além do histórico de chamadas, cada registro pode ir, ao final da chamada, para:
- Syslog (RFC 5424, como JSON) sobre UDP, TCP ou TLS, para um servidor de log ou um SIEM.
- Um arquivo CSV por dia, com as colunas do Master.csv do Asterisk, para que as ferramentas de relatórios e faturamento feitas para o Asterisk as leiam. Baixe os arquivos no final do Histórico de chamadas (capítulo 47). Células que uma planilha executaria como fórmula são escritas com segurança.
- Uma tabela PostgreSQL em outro banco de dados, criada pela primeira vez com as colunas do
cdrdo Asterisk (calldate, clid, src, dst, duration, billsec, disposition, uniqueid…) mais as direção, tronco, custo e MOS do BitVoice. Cada chamada é escrita uma vez.
Enviar um registro de teste tenta o servidor de syslog e o banco de dados com as configurações salvas.
Gerador de chamadas
/loadtestO gerador de chamadas coloca chamadas reais com áudio real no BitVoice a partir deste computador: para ver quantas chamadas um servidor suporta e quão bem, ou para verificar após uma alteração que as chamadas ainda vão para onde devem.
Executar um teste
| Definição | O que é |
|---|---|
| Número para ligar | um número dentro do BitVoice: uma extensão, um grupo, uma fila, um menu |
| Chamadas vêm de | o número do chamador que as chamadas exibem |
| Atender como | uma extensão que o gerador atende por si mesmo; ou ninguém, quando o número atende por si mesmo (um menu, o teste de eco) |
| Chamadas | quantas no total |
| De uma vez | o máximo em andamento juntos, até 2.000. Cada chamada retransmitida utiliza portas de mídia de Mídia de e Mídia para (Configurações): o padrão 10000-20000 suporta cerca de 1.800, então amplie-o para mais |
| Novas por segundo | quão rápido elas começam |
| Cada duração (s) | quanto tempo cada conversa dura |
Ler os resultados
| Resultado | O que indica |
|---|---|
| Atendido, Falhou | e Por que as chamadas falharam, por motivo |
| Tempo de atendimento, mediana e 95% | quanto tempo os chamadores esperaram |
| Áudio perdido | a parcela de pacotes de som que nunca chegaram |
| Pontuação de áudio | uma estimativa do som (MOS): 4 ou mais é bom, abaixo de 3,6 é ruim |
| Jitter, 95% das chamadas | quão irregularmente o som voltou (jitter de interarrival da RFC 3550, média por chamada); os telefones suavizam até cerca de 20 ms |
| Maior lacuna, pior chamada | a maior espera entre dois pacotes de som em qualquer chamada; eles chegam a cada 20 ms, então uma paralisação do servidor é mostrada aqui |
| Pausas de memória, pausa mais longa | quão frequentemente e por quanto tempo no máximo a execução do Go pausou tudo para organizar a memória durante a execução |
| Chamadas em andamento ao longo do tempo | um gráfico da carga |
Rastreamento de SIP
/traceO rastreamento de SIP mostra as mensagens que o BitVoice envia e recebe, ao vivo: o primeiro lugar para procurar quando um telefone não se registra ou uma chamada falha, e o que o suporte do provedor pedirá.
Encontrar uma mensagem
O BitVoice mantém as últimas 2.000 mensagens na memória (nada é escrito no disco e elas desaparecem após uma reinicialização). Digite parte de um número, um endereço ou um Call-ID no filtro. Pressione Atualizar para as mensagens mais recentes.
Escolha uma mensagem para vê-la em detalhes e, ao lado dela, o fluxo de chamada: todas as mensagens da mesma chamada em ordem, entre o telefone, o BitVoice e o provedor, como na figura.
Lendo um rastreamento
| Você vê | Geralmente significa |
|---|---|
| REGISTER respondido 401, então nada | o telefone não tem a senha, ou tem a senha errada |
| REGISTER respondido 403 | o endereço está banido, ou o telefone faz login como outra extensão |
| INVITE respondido 404 | nenhuma rota corresponde ao número discado (Roteamento de chamadas (capítulo 8)) |
| INVITE respondido 403 pelo provedor | o provedor recusa o ID do chamador ou o número |
| 486 | o outro lado está ocupado |
| 488 | os dois lados não têm codec em comum (Codecs (capítulo 66)) |
| 200 OK, então BYE após cerca de 30 segundos | o ACK nunca chegou: um roteador no meio reescreve ou dropa mensagens (desative o "SIP ALG" dele) |
| Uma chamada se conecta, mas ninguém ouve nada | o som está bloqueado: verifique o endereço público em Configurações, e as portas de mídia no firewall |
Segurança pública: o laboratório de rastreamento
O perfil do ponto de resposta 911, a consola de despacho de rádio e os Serviços Core NG911. São um laboratório e uma trilha de parceiro de design: construído e testado contra capturas gravadas, dados de amostra e substitutos, mas não certificado para 911 ao vivo ou despacho de rádio e ainda não tentado com um ESInet ao vivo, sistema P25 ou CAD. Estão fora do menu até serem ativados nas Configurações. Chamadas de emergência dos seus próprios telefones (Introdução) não fazem parte desta trilha: fazem parte de todos os sistemas de telefone.
Chamadas de 911 (o perfil de 911)
/psapO BitVoice atende chamadas de 911 como um sistema de tratamento de chamadas de um PSAP: as chamadas da rede de serviços de emergência (a ESInet, NENA i3) chegam com a localização do chamador e os dados da rede, o atendente vê-os imediatamente e o CAD é informado quando a chamada é atendida.
Configuração.
- Em Troncos (capítulo 7), adicione o tronco do seu provedor ESInet (ou o ESRP do núcleo NG911) e ative Do ESInet.
- Em Encaminhamento de chamadas (capítulo 8), envie as chamadas para os seus atendentes: uma fila, ou um grupo de chamada.
- Em Chamadas 911, insira o ID da sua agência (um domínio, como
psap.county.example.gov) e o que o CAD aceita: o endereço e a porta do ouvinte ALI e o endereço EIDO.
Quando uma chamada 911 toca, ela aparece em Chamadas 911 com:
- o endereço que a rede enviou (localização cívica), e a posição com a incerteza (dentro de tantos metros), desenhada no mapa com o seu círculo de incerteza (uma vez que um mapa é definido, abaixo), e um link para o OpenStreetMap;
- o provedor, o tipo de serviço (sem fio, VoIP, residencial, comercial), o dispositivo e o assinante, quando a chamada os trouxe (Dados adicionais, RFC 7852);
- qualquer coisa que deu errado ao ler.
A localização vem na chamada (por valor), ou como uma referência que o BitVoice busca com HELD. Uma chamada com uma referência tem Rebid de localização: o BitVoice pede novamente, para um chamador que está se movendo ou cuja primeira fixação foi grosseira.
Quando uma rebid muda a localização, a verificação de localização diz qual mostrar primeiro, e por quê: a nova localização como regra; a primeira quando foi uma fixação precisa do dispositivo (GPS, dentro de 100 m) menos de dois minutos antiga e a nova é mais grosseira; e ambas quando duas localizações discordam por mais do que a sua incerteza permite, para que o atendente pergunte ao chamador. A primeira localização permanece na chamada de qualquer forma.
Quando um atendente atende, o CAD recebe, cada um por si só, para que um CAD que esteja inativo nunca retarde a chamada:
- o derramamento ALI: o bloco de texto que os sistemas CAD lêem (número de retorno, classe de serviço, endereço, posição e incerteza, provedor), enviado sobre TCP;
- o EIDO, o documento de incidente da NENA-STA-024, por HTTPS POST (com um token de portador, se definido). EIDO em uma chamada o mostra. O endereço deve ser
https, ou simpleshttpapenas para um CAD neste mesmo computador (http://127.0.0.1:…): um EIDO carrega a localização do chamador e o token, então nunca cruza uma rede sem criptografia, uma rede privada incluída. O mesmo se aplica a Enviar eventos de rádio para CAD em. Salvar qualquer outro endereçohttpsimples é recusado; um salvo por uma versão mais antiga permanece, para que o BitVoice ainda inicie e outras alterações ainda sejam salvas, mas nada é enviado para ele e Saúde (capítulo 13) o mostra em vermelho até que seja alterado.
O próprio derramamento ALI é TCP simples, pois os ouvintes CAD legados o aceitam, então não pode ser exigido que seja criptografado. Quando ele vai para outro computador, a Saúde avisa: mantenha esse caminho fora de qualquer rede compartilhada, com um link serial direto (serial:/dev/…) ou uma VPN ou circuito privado para o CAD. Defina ID da agência também: os EIDOs e o nome do log i3 nomeiam a agência por ele, e Saúde (capítulo 13) avisa enquanto ele está vazio.
Uma chamada 911 nunca é recusada. Uma chamada de voz da ESInet (ou um tronco CAMA) cuja rota de entrada a afastaria, porque a rota desliga, toca um grupo com ninguém nele ou não existe, ou que ninguém atende, toca todos os atendentes em vez disso: todas as extensões habilitadas, e qualquer telefone que se conecte enquanto ela toca, até que alguém atenda ou o chamador desligue. Uma chamada de texto espera nessa tela do mesmo jeito. Como foi roteada da chamada diz o que aconteceu, e Saúde (capítulo 13) avisa sobre essa rota para que possa ser corrigida. Apenas chamadas de teste (urn:service:test.sos) e chamadas que não são chamadas 911 mantêm a recusa da rota.
Nem cai por uma transferência. Quando um atendente transfere uma chamada 911 e a transferência não pode se conectar, porque a extensão não tem um telefone conectado ou ninguém atende, a chamada volta para aquele atendente enquanto ele ainda está na linha. Se ele já desligou (a maioria dos telefones de mesa o faz logo após uma transferência cega), todos os atendentes tocam em vez disso, até que um atenda. Uma chamada 911 nunca é passada para a caixa de correio de voz da extensão ou outro destino de não atendimento, e o rastro de roteamento diz o que aconteceu. Em qualquer chamada, um telefone que desliga logo após pedir uma transferência libera apenas ele mesmo: a transferência continua.
Um chamador que desapareceu. Quando um lado de uma chamada para de enviar som por um minuto (um telefone que perdeu energia ou sinal não envia nenhum desligamento) enquanto o outro lado ainda envia, a chamada é encerrada com o motivo *o áudio do chamador parou* (ou de quem era), no registro da chamada e no evento call.ended que o CAD ouve (cause, endedBy). Um lado em espera, faxando, ou que disse que envia nada (um alto-falante de paging) nunca é encerrado dessa forma. O silêncio ainda envia pacotes, então um chamador que não pode falar mantém a chamada ativa.
Live transcripts. With Write out 911 calls live on (Settings, AI), each side of an answered 911 call is written out as it is spoken, by the speech-to-text service when one is set (so the audio stays in the building (capítulo 28)), else by the AI service, cut where the speaker pauses, and shown under the call as Live transcript. CAD gets each piece as a call.transcript event: {"call": id, "lines": [{"speaker": "Caller", "side": "caller", "text": "…", "second": 12.4}]}. The calls' audio goes to the AI service while they last, recorded or not. The recording's own transcript still comes when the call ends.
CAD dispatchers by name. A CAD acting through one API token can name the dispatcher behind each request: make the token with Names the person it acts for (Administrators, API tokens) and send X-BitVoice-On-Behalf-Of: <the person's name>. The exposure log, text calls taken, calls ended and the audit log then name that person with the token (*Dana Ruiz via bitdispatcher CAD*). From any other token the header is ignored.
Vídeo e fotos do chamador. Em uma chamada de 911, Enviar link de vídeo para o chamador cria um link que apenas essa chamada pode abrir: enviado por texto para o chamador a partir do número em Enviar link a partir de, ou lido em voz alta. Quando não é possível enviar por texto (nenhum número de texto é definido, ou o chamador não enviou nenhum número), a tela e a API problem dizem por quê. O chamador abre em seu navegador de telefone (sem aplicativo): Compartilhar vídeo ao vivo envia a câmera traseira ao vivo (WebRTC, WHIP: RFC 9725), e Enviar fotos ou vídeos envia o que já foi capturado, incluindo arquivos de câmera de ação e dashcam. Na chamada:
- vídeo ao vivo mostra AO VIVO; Assistir ao vídeo do chamador reproduz embaçado, e Revelar (pode ser perturbador) mostra; Embaçar novamente esconde;
- cada arquivo mostra seu tamanho, quando foi capturado (pelo relógio da câmera), onde (a partir do GPS, quando disponível), e seu SHA-256, capturado à medida que chega, para que uma cópia possa ser mostrada mais tarde como sendo o mesmo arquivo; Revelar abre; Manter como evidência mantém os arquivos da chamada além do período de retenção;
- o link de visualização abaixo (WHEP) permite que CAD, tela de uma unidade ou outra posição assistam ao mesmo vídeo ao vivo, sem precisar entrar: trate como uma chave.
Vídeo nunca é capturado das chamadas: cada vídeo ao vivo tem suas próprias portas, este servidor aceita no máximo Vídeos ao vivo simultâneos (4, a menos que definido), cada um solicitado a permanecer abaixo de Taxa de bits de vídeo, e vídeo que para por dez segundos é encerrado. Os telefones dos chamadores devem alcançar este servidor em Endereço de link (https) e suas portas de mídia (UDP). Arquivos são mantidos Manter arquivos e log de exposição dias (em branco: até serem excluídos), chamadas mantidas à parte.
Gravar o vídeo ao vivo. Com Gravar vídeo ao vivo do chamador ativado, o vídeo ao vivo do chamador é mantido com as fotos e clipes como um arquivo por trecho de vídeo: as mesmas imagens que o telefone enviou, não convertidas, em um arquivo IVF (H.264 ou VP8 com cada imagem em seu próprio tempo), hash enquanto é escrito. Uma imagem danificada por um pacote perdido é deixada de fora em vez de ser mantida quebrada, e o telefone é solicitado a enviar uma imagem completa para continuar. Revelar reproduz (a partir de uma cópia em WebM ou MP4 que o ffmpeg cria, as mesmas imagens em outro contêiner; sem ffmpeg apenas o original é baixado); Baixar o original fornece o arquivo que o hash é.
Para o CAD. O EIDO (NENA-STA-021) enviado para o CAD nomeia cada foto, clipe e gravação, e o vídeo ao vivo enquanto dura, como dados adicionais por referência: urlPurpose é caller-photo, caller-video, caller-video-recording ou caller-video-live, e additionalDataByReferenceUrl é o arquivo em /m/{viewToken}/{n} ou o vídeo ao vivo em /whep/{viewToken}. O BitVoice envia o EIDO para o CAD novamente quando um arquivo chega ou o vídeo ao vivo começa ou para. Os links usam Endereço de link (ou o endereço público deste servidor); sem nenhum deles, o EIDO não nomeia nenhum mídia. Cada busca através deles está no log de exposição. O fluxo de eventos diz o mesmo (GET /api/events: call.media, call.video). Os EIDOs do BitVoice são verificados contra o esquema de EIDO publicado pela NENA.
Links que não existem são adivinhados em um ritmo não mais rápido do que os logins: um endereço que continua tentando é afastado por um tempo. Arquivos de chamadores são servidos em uma sandbox, nunca como uma página deste servidor.
Exposição. Cada revelação de um vídeo ao vivo e cada abertura de uma foto ou clipe é contada em Exposição em chamadas de 911: quem, quantas vezes, em quantas chamadas. É para supervisores e o programa de bem-estar do centro.
Vídeo que um telefone envia na própria chamada de 911 (vídeo SIP sobre o ESInet) pode ser assistido da mesma forma: Assistir o toma como a fonte quando não há vídeo de link ao vivo.
Chamadas com apenas um número. Uma chamada de 911 que traz um número de callback e nenhuma localização (de um tronco CAMA, ou uma chamada ESInet cuja localização não veio) pode ser pesquisada: forneça Pesquisa de localização (ALI) o endereço da interface HELD do seu banco de dados ALI ou servidor de localização (RFC 5985, solicitado por número de telefone como o RFC 6155 tem). O BitVoice solicita à medida que a chamada chega, sem segurá-la, e a localização aparece na chamada quando a resposta chega; a chamada diz quando a pesquisa falhou e por quê.
A ligação ALI legada. Sem um servidor HELD, o BitVoice pode pedir a um controlador ALI ou à ligação de dados do banco de dados ALI, do jeito antigo: envia um pedido e lê o registo como texto, sobre a rede (endereço da ligação ALI host:porta) ou de uma porta serial (serial:/dev/ttyUSB0?baud=9600&parity=none, com bits e stop também; um adaptador serial USB funciona; no Linux e no macOS, não no Windows: aí, use um conversor serial-rede e o seu endereço). Pedido é o que enviar: {ani10} o número de callback de dez dígitos, {ani7} os seus últimos sete, {pos2} a posição, STX e ETX ({ani10} quando em branco). A resposta é lida até o seu ETX. Os layouts ALI diferem entre prestadores de serviços e estados, por isso coloca cada campo: a sua linha, a sua coluna e o seu comprimento (0: até ao fim da linha), a partir de uma impressão de uma tela ALI; Rua (linha inteira) divide uma linha de rua em partes, ou coloca as partes uma a uma. Cole um registo de exemplo e Leia o exemplo para ver as linhas com uma régua de colunas e o que cada campo lê; Pergunte pergunta à ligação em si por um número. O endereço e a posição do registo tornam-se a localização da chamada, o seu nome o nome do chamador, e a sua classe de serviço é exibida na chamada. Protocolos que não sejam um pedido e uma resposta de texto (PAM, E2 e os próprios dos outros fornecedores) não são falados: precisam de um gateway.
ALI derramado sobre uma porta serial. ALI derramar para também aceita uma porta serial (serial:/dev/ttyS0?baud=9600), para um CAD que lê o derrame de um cabo serial.
O mapa. Em Mapa nas configurações de 911, dê ao BitVoice os seus azulejos de mapa: um ficheiro .mbtiles de azulejos raster (PNG, JPEG ou WebP) neste servidor, para um mapa que funciona sem internet (a sua equipa de GIS, TileMill, gdal2tiles ou um fornecedor de azulejos faz um para a sua área), ou um servidor de azulejos com {z}, {x} e {y} no seu endereço (o do seu condado, ou um comercial: atente aos termos; os servidores OpenStreetMap públicos não são para isto). De qualquer forma, os navegadores dos call-takers pegam azulejos do BitVoice apenas: lê o ficheiro, ou pega do servidor de azulejos e mantém os últimos azulejos na memória. O mesmo mapa mostra posições de rádio na consola de rádio. Azulejos vectoriais não são suportados.
O registo i3 mantém os eventos i3 da NENA de cada chamada (início da chamada, resposta, localização, EIDO enviado), um ficheiro por dia. Tempos de resposta mostra quantas chamadas foram respondidas dentro do seu objetivo (NENA: 90% dentro de 15 segundos, 95% dentro de 20), as abandonadas, e a média de cada call-taker. Uma linha por dia (CSV) transfere as contagens que os gabinetes 911 estaduais normalmente pedem (chamadas, respondidas, abandonadas, dentro do objetivo e dentro de 20 segundos, média e maior espera) para os dias escolhidos; Uma linha por chamada (CSV) lista cada chamada 911 com quando foi respondida, por quem, e se foi texto. Cada estado tem o seu próprio formulário: organize o seu em Layouts de relatório. Uma chamada de texto tomada nesta tela ou através de um CAD conta sob a pessoa que a tomou; uma que ninguém tomou antes do chamador sair conta como abandonada.
Layouts de relatório. Novo layout de relatório organiza um relatório como o seu estado ou condado o tem: o que cada linha é (um dia, uma semana, um mês, uma hora do dia, um call-taker, ou uma linha em tudo), uma linha de total, e as colunas, por ordem, cada uma com o seu próprio cabeçalho se o formulário o expressa de forma diferente: chamadas, respondidas, abandonadas (uma contagem ou uma parte), respondidas dentro de tantos segundos (uma contagem ou uma parte; os segundos são seus, então 10 e 20 para um formulário e 15 e 40 para outro), respondidas após mais de tantos segundos, a média e a maior espera, o tempo dentro do qual 90% foram respondidas, a média de duração da chamada, e chamadas de texto (TTY, texto em tempo real, texto para 911). Uma espera conta desde a chegada da chamada até a resposta de um call-taker. Escolha um layout e datas e Execute para lê-lo aqui, Planilha (CSV) para transferi-lo, ou Página para imprimir para uma página simples para imprimir ou guardar como PDF. Layouts são mantidos com as configurações, então vão com um backup e para o Git.
Chamadas TTY. Chamadores surdos e com deficiência auditiva podem chamar 911 com um TTY (um telefone de texto, Baudot a 45,45 bit/s). O BitVoice ouve um em cada chamada 911 de voz, desde o primeiro momento: o que o chamador digita aparece na chamada à medida que digita, em Texto, com uma pausa ou uma nova linha começando uma linha nova. Uma chamada silenciosa pode ser um TTY à espera de si: uma vez que responde, Responder por TTY envia texto mesmo antes de qualquer ter chegado. Digite a resposta e pressione Enviar: vai para o chamador como tons TTY (a voz do call-taker é mutada enquanto toca, como os TTYs se alternam), em maiúsculas, e a etiqueta TTY se aplica: termine cada turno com GA ("vá em frente"), e SK ao assinar. Caracteres que um TTY não pode mostrar são deixados de fora. Fala, música e tons de toque nunca são tomados por texto TTY: um caractere conta apenas quando cada bit dele é um tom TTY limpo. A conversa é mantida com a chamada no histórico de chamadas e no registo i3 (um MessageLogEvent por turno). Desmarque Ouvir TTYs em chamadas 911 nas configurações de 911 para parar de ouvir.
Transferências. Uma chamada de 911 enviada para outra PSAP mantém sua localização: o PIDF-LO acompanha a chamada.
Texto em tempo real (RTT). Um telefone que envia texto ao lado de sua voz (RFC 4103, como os telefones VoLTE e as chamadas NG911) tem seu texto respondido pelo próprio BitVoice, desde que os telefones de mesa não mostram nada: cada caractere aparece na chamada à medida que o chamador digita, e sua resposta vai de volta como texto. Pacotes perdidos são recuperados pela redundância do RTT; texto perdido além disso é exibido como .
Texto para 911. Um centro de controle de texto (TCC) envia textos para a PSAP como uma sessão sem voz (MSRP, RFC 4975, sobre o tronco ESInet). O BitVoice responde e espera por chamadas 911 marcadas Texto para 911, com os textos que chegaram; nenhum telefone toca. Aceitar este texto torna você o atendente da chamada (o tempo de resposta é contado então, e o CAD obtém o derramamento ALI e o EIDO então); responda na caixa abaixo da conversa e Encerrar conversa quando terminar. O TCC que fecha a sessão a termina também. Uma mensagem SIP enviada dentro do diálogo de uma chamada 911 é considerada como o texto do chamador da mesma forma, e as respostas são enviadas de volta por mensagem SIP. Textos são aceitos apenas de troncos marcados Do ESInet.
Um TCC que oferece a sessão sobre TLS (TCP/TLS/MSRP, caminhos msrps:, RFC 4975 seção 14) a obtém sobre TLS, com o certificado deste servidor (Configurações › Certificados; sem um, tal oferta é recusada). O certificado do TCC deve ser o que sua oferta nomeia (a=fingerprint, SHA-256); quando não nomeia nenhum, deve ser rastreado até as raízes da Agência de Credenciamento da PSAP configuradas sob Serviços principais, se alguma for configurada. A resposta do BitVoice nomeia seu próprio certificado da mesma forma.
Toda a conversa, independentemente de como ela chegou, é mantida com a chamada no histórico de chamadas e no log i3.
O que ainda não está aqui: passar uma sessão de texto por meio do núcleo NG911 (o ESRP roteia a voz; uma sessão de texto é respondida onde chega); as assinaturas do padrão de transporte EIDO (NENA-STA-024 WebSocket): o BitVoice publica EIDOs em um endereço.
Consoles de despacho de rádio
/radioOs despachadores falam em canais de rádio a partir do mesmo fone de ouvido que suas chamadas telefônicas. O BitVoice alcança os rádios por meio de gateways de rádio sobre IP (RoIP); a rede de rádio em si permanece com quem a opera.
Configuração. Em Configuração do console, escolha um número de console (800, por exemplo) e adicione cada canal: seu nome, a porta neste servidor que o gateway envia o áudio do canal e o endereço e porta do gateway para o áudio de saída. No gateway: RTP, G.711 µ-law, para o endereço deste servidor e aquela porta; acione o rádio em voz (VOX). Cada canal usa sua porta e a próxima, fora do intervalo que as chamadas telefônicas usam.
Participar. Um despachador discar o número do console a partir do seu telefone de mesa ou pressionar Participar com o telefone do navegador. Em seguida, ele ouve todo o tráfego dos canais misturados; Ouvindo / Silenciado em um canal o remove do seu fone de ouvido. A lâmpada em um canal acende enquanto ele está recebendo.
Falar. Segure o botão Segure para falar de um canal (ou foque-o e segure a barra de espaço): sua voz vai para aquele canal apenas, e o canal mostra TX com a sua extensão. Um despachador fala em um canal de cada vez; o botão é desativado para os outros enquanto alguém está falando. Nada é enviado para um canal enquanto ninguém está falando, então um rádio acionado por voz nunca é mantido no ar.
Patching. Pressione Patching em um canal, então Patching aqui em outro: os dois ouvem um ao outro (um canal de incêndio e um canal de ajuda mútua, por exemplo) até que você pressione Despatchar.
Grupos de conversa P25. Um canal também pode ser um grupo de conversa P25, ingressado diretamente sobre o ISSI (TIA-102.BACA, a interface entre subsistemas P25; com Enviar a palavra PTT do console CSSI ativado, o BitVoice adiciona a palavra do subsistema do console a cada solicitação). Escolha Um grupo de conversa P25 (ISSI), forneça o ID do grupo de conversa, o endereço SIP e ID do RFSS que é o lar do grupo de conversa, e uma porta para a sua voz. Em Este console no sistema P25, insira o WACN e ID do sistema, o ID do RFSS que o seu administrador P25 deu a este console, o ID da unidade que os despachadores transmitem como e a porta SIP que o ISSI usa aqui; o sistema P25 deve conhecer este servidor como um RFSS naquele endereço. O bloco mostra P25 enquanto a chamada de grupo está ativa (P25 down e o motivo quando não está), e o ID da unidade do rádio que está falando, em vermelho com EMERGENCY quando é uma chamada de emergência. Segure para falar pede o canal ao RFSS lar (Pedindo o canal...); sua voz vai uma vez que ele concede, e se ele recusar (alguém com prioridade mais alta tem), o bloco diz isso. A voz é convertida para e de IMBE, o codificador de voz P25, no BitVoice.
Grupos de conversa encriptados. Em Chaves de encriptação, adicione cada chave de tráfego que a sua loja de rádio fornece: um nome, o algoritmo (AES-256, DES-OFB ou triple DES), o ID da chave e a chave em si em hex (TIA-102.AAAD). Uma chave nunca é exibida novamente após ser salva, nem mesmo para administradores, e deixar o campo vazio mantém a chave atual. A consola ouve uma transmissão encriptada quando tem a chave com esse algoritmo e ID da chave: a telha mostra um cadeado e o algoritmo ao lado da unidade que fala. Sem a chave, a transmissão é silenciada, nunca reproduzida como ruído, e a telha diz sem chave: silenciada. Para transmitir encriptado em um grupo de conversa, escolha uma chave em Transmitir para esse canal; a telha então mostra TX AES-256 (ou o algoritmo que você escolheu). Uma exportação de configuração completa (Configurações, backup de um administrador) transporta as chaves, então mantenha esses arquivos tão seguros quanto as chaves.
Chamadas privadas. Com a consola em um sistema P25, Chamar um rádio na barra da sua posição chama um rádio pelo seu ID de unidade (ative Emergência para chamar como uma emergência). A chamada se torna uma telha própria, Chamada privada: unidade 197, com Segurar para falar como qualquer canal e Desligar. Rádios também podem chamar a consola, no ID de unidade que os despachantes transmitem: a chamada aparece como uma telha marcada chamada recebida (em vermelho com EMERGÊNCIA quando o rádio chamou como uma emergência), todos os despachantes ouvem e a chamada termina quando qualquer uma das partes desliga. Em Chamadas privadas nas configurações P25 da consola, forneça o endereço SIP e o ID do RFSS que é o lar dos rádios (vazio usa o lar do primeiro grupo de conversa) e, se as chamadas privadas devem ser encriptadas, a chave para enviá-las.
Tons de alerta. Enviar um tom de alerta... em um canal envia um dos seguintes: Alerta 1, um tom constante de 1000 Hz por 3 segundos; Alerta 2, um tom que varia entre 1000 e 1500 Hz; Alerta 3, pulsos de 1000 Hz; ou um breve Bip. O tom ocupa o canal enquanto toca (a telha mostra tom e a sua extensão), todos os despachantes que monitoram o canal ouvem e, em um grupo de conversa P25, o tom é enviado assim que o RFSS lar concede o canal.
Emergências. Quando um rádio transmite como uma emergência (seu botão de emergência), a telha dele se torna vermelha com EMERGÊNCIA e o ID da unidade, o log do servidor anota e o CAD é informado imediatamente (abaixo). A emergência permanece ativa em todas as consolas após o rádio parar de falar, até que um despachante pressione Confirmar: a telha então diz quem confirmou e quando, e o CAD recebe um evento radio.emergency.ack. Confirmar nomeia a unidade exibida: se outra unidade de emergência a substituiu um momento antes, o BitVoice recusa e a telha mostra a nova, então uma segunda emergência nunca é silenciada por engano. O CAD confirmar através da API pode fazer o mesmo: POST /api/radio/channels/{id}/ack com {"unit": "bee07.1d5.00044d"} (ou o ID do rádio, "1101") responde 409 quando a emergência do canal agora é de outra unidade; sem um corpo, confirma o que o canal mantém.
Simulselect. Para dizer uma coisa em vários canais ao mesmo tempo, marque selecionar em cada canal, então segure Falar em N canais na barra acima das telhas. É tudo ou nada: se outro despachante estiver falando em um deles, nenhum é ativado e você é informado de qual.
Posições de rádio. Rádios relatam onde estão sobre o lado de dados do sistema de rádio, não o lado de voz que a consola se junta: serviço de localização P25, LRRP da Motorola ou um próprio do fornecedor, coletado pelo gateway de dados ou AVL da loja de rádio. Faça com que o gateway (ou um pequeno script ao lado dele) envie cada relatório para o BitVoice com um token de API: POST /api/radio/locations com {"unit": 1205, "lat": 40.2633, "lon": -76.8823, "speed": 42, "heading": 90, "accuracy": 8, "at": "2026-10-15T14:05:00Z"}, ou uma lista de até 500 (velocidade em km/h, direção em graus, precisão em metros; os três e o tempo são opcionais). Posições de rádio na consola então lista a última posição de cada rádio, com o seu nome, e o CAD recebe cada uma como um evento radio.location. O BitVoice não decodifica LRRP ou o serviço de localização P25 em si.
Nomes de rádio. Em Nomes de rádio, nomeie os rádios pelo seu ID de unidade P25 (1205 é "Viatura 5", por exemplo): a telha mostra o nome ao lado da unidade enquanto fala, e o log de rádio e os eventos do CAD transportam o nome.
Log de rádio e gravação. Ative Gravar cada transmissão em Gravação e CAD: cada transmissão em cada canal, ouvida ou enviada, é mantida como uma gravação com uma linha no Log de rádio: quando, o canal, quem (a unidade do rádio, ou a extensão do despachante), quanto tempo, e se foi uma emergência, um tom de alerta, encriptada ou uma chamada privada. Uma transmissão ouvida começa com a primeira palavra e termina 1,5 segundos após a última palavra. Encontre uma unidade, despachante ou canal com a caixa de pesquisa e pressione Tocar para ouvir. As gravações são mantidas por tanto tempo quanto as gravações de chamadas (Configurações, Gravação).
Dados de rádio para CAD. Forneça o endereço do CAD em Enviar eventos de rádio para CAD em (e um segredo compartilhado, se o CAD desejar; é enviado como um token de portador e nunca é exibido novamente). O BitVoice então envia cada evento (radio.unit, radio.emergency, radio.emergency.ack, radio.transmission e radio.location) como JSON, {"type": ..., "agency": ..., "data": {...}}: radio.unit quando um rádio começa a falar em um canal (seu ID de unidade, WACN, sistema, o canal, emergência, criptografia), radio.emergency para uma emergência (tentado três vezes se o CAD não responder), e radio.transmission para cada transmissão concluída, como aparece no log do rádio. O CAD também pode ler o log em si com GET /api/radio/log (filtros: channel, q, since, until). Um CAD que está inativo nunca impede o console.
Não está aqui ainda: voz P25 Fase 2 (TDMA) em seu próprio codificador de taxa reduzida. Um sistema de Fase 2 funciona com o console quando seus talkgroups ISSI transportam voz de taxa completa (Fase 1) ou seu transcodificador os converte, o que é comum: pergunte ao seu administrador P25. Um talkgroup cuja voz chega em blocos que este console não decodifica (voz de taxa reduzida enviada sem transcodificação, provavelmente) mostra Silencioso aqui em sua tela enquanto um rádio fala, para que ninguém confunda o silêncio com um canal quieto. Decodificá-lo precisa de duas coisas que o BitVoice não tem: o codificador de taxa reduzida (AMBE+2, patenteado até 2028: uma licença do seu proprietário, ou um chip de codificador de hardware licenciado), e o formato de bloco de voz de taxa reduzida ISSI (TIA-102.BACA-B, vendido pela TIA, não público).
**Serviços de Núcleo NG911** (ECRF, ESRP, LVF, BCF, LIS, registro)
/corePara uma autoridade de 911 estadual ou regional que executa seu próprio núcleo NG911: o BitVoice responde como o ECRF e roteia cada chamada 911 como o ESRP para a PSAP que atende o chamador.
Áreas de serviço. Exporte seus limites do GIS como polígonos GeoJSON (limites da PSAP para urn:service:sos; áreas de polícia, incêndio ou EMS para urn:service:sos.police e os outros) e faça upload em Serviços principais. As propriedades name, uri e number de um polígono são lidas; forneça um URI da PSAP padrão para aqueles sem um. Editar uma área para adicionar as cidades ou condados que atende, para chamadores cuja localização é um endereço cívico apenas. Testar um local mostra qual área atende a uma posição ou uma cidade, como uma consulta LoST faria.
O ECRF. Ative Responder consultas LoST e liste os endereços que podem perguntar (seu ESInet): outros elementos enviam findService para /lost (RFC 5222) e obtêm o URI da PSAP. Um serviço específico (sos.police) é respondido a partir de suas próprias áreas primeiro, então a partir de sos. Um local que nenhuma de suas áreas cobre pode ir para o Guia Florestal (RFC 5582: o diretório nacional de ECRFs): uma consulta recursiva é feita lá em nome do perguntador e sua resposta é retornada (ambos os servidores listados no caminho da resposta), e qualquer outra consulta recebe um redirecionamento para ele, e uma consulta que já passou por este ECRF é recusada como um loop.
O ESRP. Liste as PSAPs: o URI de cada uma (como as áreas o nomeiam), o tronco que a alcança e sua PSAP de transbordo, e escolha a PSAP padrão. Em seguida, envie as chamadas 911 de entrada do ESInet para ESRP em Roteamento de chamadas (capítulo 8). Cada chamada vai para a PSAP de sua localização (destas áreas do servidor, ou um ECRF externo por LoST), com sua localização e o serviço que solicitou transportado; quando essa PSAP não a aceita, para sua PSAP de transbordo; sem localização, ou de um local que nenhuma área cobre, para a padrão. Cada decisão está no log i3 em chamadas 911 (capítulo 77).
Regras de política. Uma vez que o ECRF tenha escolhido uma PSAP, as regras sob Regras de política são verificadas em ordem e a primeira cujas condições todas sejam atendidas decide: enviar a chamada para outra PSAP, ou recusá-la como ocupada. Uma regra pode olhar para o serviço (chamadas de incêndio apenas, por exemplo), a PSAP que o ECRF escolheu, um cronograma (enquanto o centro da equipe noturna está fechado), chamadas sem localização, chamadas que o BCF marcou como suspeitas, e o tronco da chamada de entrada. Cada decisão está no log i3 como um RouteLogEvent que nomeia a regra.
Controlo de fronteira (BCF). Com Verificar chamadas a partir da ESInet ativado, cada chamada a partir de um tronco ESInet é verificada primeiro: endereços sob Sempre recusar são rejeitados, e também o é um endereço que inicia mais chamadas por minuto, ou mantém mais chamadas simultâneas, do que é permitido (um ataque de negação de serviço de telefonia envia inundações de chamadas de algumas fontes). Chamadas recusadas recebem 503 com Retry-After. Ative Deixar a chamada passar marcada como suspeita para enviar essas chamadas em vez disso e deixar que uma regra de política decida (para um centro que as verifica, ou recusadas); um chamador real em uma inundação não é perdido. Controlo de fronteira: últimos lista o que foi recusado ou marcado. Verificar assinaturas STIR/SHAKEN verifica a ID do chamador assinada (o cabeçalho Identity) de cada chamada que a transporta, contra as raízes STI definidas em Verificação de chamadas nas Configurações: uma chamada cuja assinatura falha passa marcada como suspeita, para que uma regra de política a envie para outro local, e é listada no log do BCF; uma chamada de 911 nunca é recusada por isso, e chamadas não assinadas (a maioria delas hoje) são deixadas em paz. Cada chamada deixa o BitVoice como um novo pedido por si só (o BitVoice é um agente de volta-a-volta), transportando apenas os cabeçalhos e corpos que o BitVoice entende e passa adiante: a localização, os Dados Adicionais e a sessão. Inspecionar mídia verifica cada pacote RTP de uma chamada ESInet antes de ser usado ou passado adiante: pacotes de um endereço diferente daquele que a SDP da chamada forneceu, com um tipo de payload que a oferta não nomeou, com comprimentos de cabeçalho (CSRCs, extensão, preenchimento) que não se encaixam no pacote, maiores que Pacote mais grande (1.500 bytes quando em branco), ou após Pacotes por segundo (150 quando em branco; G.711 a 20 ms envia 50) são descartados e contados. O primeiro de cada tipo, então o 10º, 100º e assim por diante, vai para Controlo de fronteira: últimos (como *mídia descartada*) e as notas da chamada. A chamada nunca é encerrada por sua mídia: o chamador mantém os pacotes bons. Chamadas a partir de troncos CAMA vêm do programa de cartão local e não são inspecionadas.
Validação de endereço (LVF). Faça o upload dos seus dados de endereço GIS 911 como GeoJSON, no modelo de dados GIS NENA (NENA-STA-006): linhas centrais de estrada com FromAddr_L, ToAddr_L, Parity_L, IncMuni_L e o resto, e pontos de endereço de site/estrutura com Add_Number, St_Name, Inc_Muni. Uma consulta LoST com validateLocation="true" obtém então as partes válidas, inválidas e não verificadas do endereço em sua resposta (RFC 5222), para que os transportadores e servidores de localização possam corrigir um endereço antes que uma chamada de 911 o use. Verificar um endereço faz o mesmo aqui: um ponto de endereço exato é a melhor correspondência, então um segmento de rua cujo intervalo no lado direito da estrada contém o número (lados ímpares e pares respeitados); grafias como Street e St, North e N são tratadas da mesma forma.
O serviço de registro i3. Ative Executar um serviço de registro i3: os outros elementos do seu núcleo (ESRPs, BCFs, PSAPs) enviam seus eventos de log (NENA-STA-010), cada um assinado como um JWS com o certificado do elemento em seu cabeçalho x5c, por POST para /i3log/LogEvents a partir dos endereços permitidos. Cada um vem como um JWS na forma JSON achatada (assinado, ou não assinado com algoritmo none, que um serviço de registro pode aceitar: marcado como não rastreado para o PCA), é verificado e mantido, e a resposta é o ID do evento de log. Leia novamente com GET /i3log/LogEvents/{logEventId}; liste com GET /i3log/LogEvents (startTime, endTime, logEventType, limit, start); encontre os IDs de uma chamada ou incidente com /i3log/LogEventIds, /CallIds, /IncidentIds e /AgencyIds; e leia a conversa de texto de uma chamada com /i3log/Conversations?callId=. GET /i3log/Versions diz o que este serviço fala. Eventos de log recebidos lista os eventos de um dia com quem assinou cada um. Cada resposta é verificada contra a definição OpenAPI publicada pela NENA do serviço; o serviço ainda não foi testado com elementos de outro fornecedor.
Agência de credenciação PSAP. Cole os certificados raiz da PCA em Raízes da Agência de credenciação PSAP: um evento de log assinado é então aceito apenas quando o certificado do signatário é encadeado a um deles (e não expirou), e é exibido com PCA. Sem eles, a assinatura sozinha é verificada, e o evento é exibido como não rastreado para a PCA.
Registos de localização (LIS). Ative Respostas a pedidos de localização (LIS) e carregue uma folha de cálculo (CSV) de registos de localização: uma linha de cabeçalho, e em cada linha um de um número (os dados ALI exportados), uma rede (um intervalo de endereços como 10.20.3.0/24, ou um endereço: um edifício, um andar, uma VLAN, uma rede Wi-Fi) ou um endereço mac (um dispositivo: um telefone de secretária, uma porta de comutador de uma tomada de parede), em seguida, o endereço como hno, rd, sts, unit, floor (ou flr), a3 (cidade), a1 (estado), pc e país, com lat, lon e raio quando conhecidos (outros nomes, como telefone, rua, código postal, sub-rede e ip, também são compreendidos). Os PSAPs, gateways de rede legados e telefones pedem então /held (HELD, RFC 5985) a partir dos endereços permitidos e obtêm um PIDF-LO. Um pedido nomeia o seu dispositivo por número de telefone, endereço IP ou endereço MAC (RFC 6155); um pedido que não nomeia nenhum é respondido para o endereço de onde veio, como um LIS em uma rede de escritório ou campus. Um endereço é localizado pela rede mais estreita que o contém, por isso um andar com /24 ganha sobre o campus /16. Um dispositivo sem registo obtém locationUnknown do HELD; uma identidade de outro tipo (um NAI, uma porta) obtém notLocatable. Um PSAP do BitVoice aponta o seu Pesquisa de localização (ALI) para aqui. Pesquisar um número, endereço ou endereço MAC verifica um registo e diz de qual rede veio. Um número, rede ou endereço MAC listado novamente substitui o seu registo antigo; Substituir todos os registos começa de novo. Apenas os endereços permitidos são respondidos: um LIS que responde a qualquer endereço sobre o qual é questionado não deve estar aberto a qualquer pessoa.
The i3 web services. Under NENA i3 web services, switch on what this core offers the other elements of your ESInet, at /i3/<service>/v1, for the addresses under May ask only. Each answers as NENA's published OpenAPI definitions say (NENA-STA-010.3, the NENA911 repositories), and each has a tab under i3 web services:
- Policy Store (
/i3/PolicyStore/v1/Policies,/PolicyEnums): agencies store, update and delete their routing policies (Policy Routing Rules), each a JWS signed by the agency that owns it (the signer's certificate must name the owner, and come from the PCA when its roots are set). A policy is kept byte for byte as it came. The ESRP runs them: the OriginationRoutePolicy for This ESRP's incoming queue first, else the NormalNextHopRoutePolicy of the PSAP the ECRF chose. Of the rules whose conditions hold, the highest priority acts; when its route fails (busy, no answer within its rnaTimer, 20 seconds when it gives none), the next one does; a BusyAction answers 600 Busy Everywhere. Conditions taken: time periods, SIP headers, Additional Data, body types, location (circle or civic), call suspicion, queue state (BitVoice's own PSAPs), LoST service URN and Normal-NextHop, call source, request URI, incoming queue, and the SDP offer's media and languages; service state and security posture are taken as unknown (Unreachable and Green, as the standard says). Body-part, CAP and calling-number-verification conditions are not run: they count as false. Without a stored policy, the Policy rules above decide. The tab lists what is stored and lets you paste one, or sign one with this server's certificate. - Discrepancy reports (
/i3/DiscrepancyReports/v1): other agencies report problems with this server's services; each shows on the tab, where you answer it with a resolution, sent to the reporter. File a report sends one to another agency's DR service; its answer and later resolution show under Reports this server filed. - Bad actors (
/i3/BadActor/v1/BadActors, with the BCF): each call the BCF passes on carries its source's ID (Call-Info: <sip:ID>;purpose=emergency-source); a PSAP that finds that source attacking reports the ID, and the BCF refuses its calls, or raises their suspicion score for the policies, for A report lasts hours. Lift ends a report early. - Geocode and MSAG conversion (
/i3/Gcs/v1,/i3/Mcs/v1): civic address to position and back from the LVF's address points (the nearest within 150 m), and civic address to MSAG address (120 N MARKET STREET, HARRISBURG CITY, PA) and back, from the centerlines'MSAGComm_L/MSAGComm_Rfields. Answers are JSON objects, or XML when the asker asks for it. - Additional Data (
/i3/Adr/v1/AdditionalData?callerUri=): blocks you keep by caller (RFC 7852 XML), served by value, or by reference for an asker that wants JSON. One block per caller is served by value: the first kept. - Locator (
/i3/ServiceAgencyLocator/v1): this agency's own record (its ID from the 911 calls page, with its logging and discrepancy addresses) and the agencies you add. - Dequeue (
/i3/DequeueRegistration/v1/Registrations): positions or PSAPs sign up to take a queue's calls (this ESRP's queue, or a PSAP's URI); the ESRP sends calls for that queue to them, the most preferred first (preference 5 before 1), over the PSAP's trunk. - Test calls: a PSAP asks this core to send it test calls (
/i3/TestCall/v1/SendTestCalls/{agency ID}: every so many minutes, five at least, between two dates, with a location); BitVoice places each tourn:service:test.sosover the PSAP's trunk and keeps what came back. Place one now tries one. - PSAP states (SIP, not REST): Subscribe to each PSAP's queue and service state has the ESRP SUBSCRIBE (RFC 6665) to every PSAP listed, over its trunk, for
emergency-QueueStateandemergency-ServiceState(NENA-STA-010.3 4.2.1.3 and 2.4.2), for an hour at a time, renewed before it ends. What the PSAPs NOTIFY shows under PSAP states and is what the policy rules' queue state, service state and security posture conditions read. A PSAP whose queue says Inactive, Disabled, Full or ResourceExhausted (or holds its most calls), or whose service says Unstaffed, ScheduledMaintenanceDown, Overloaded, GoingDown or Down, is passed over for its overflow, and the call's notes say so; when every PSAP in the chain says it cannot take calls, the call is sent as listed anyway, never left with nowhere to go. A PSAP that does not answer the SUBSCRIBE is Unreachable (as the standard says a subscriber must assume) and is tried again each minute; one that refuses it (489, 603 ...) is tried again in ten minutes. - This server's states: Tell other elements this server's element, service and queue state answers SUBSCRIBEs for
emergency-ElementState,emergency-ServiceStateandemergency-QueueStatefrom the addresses under May ask (others get 603 Decline; a queue that is not this server's incoming queue, 488). The queue's length is the 911 calls not yet answered here, and it says Full at Most calls waiting in the queue (20 when blank); the service says Overloaded at this server's call limit, else Normal. NOTIFYs go out when the state changes, at most one a second, and once a minute regardless (the standard's default rates); their bodies are checked against NENA's notify-body schemas.
Chamadas de teste em um PSAP. Um PSAP do BitVoice atende uma chamada de teste da ESInet (urn:service:test.sos, NENA-STA-010.3 seção 9, RFC 6881) por si mesmo: a sua resposta diz o nome do PSAP, o serviço e a localização da chamada, os três primeiros pacotes de som são devolvidos e ele desliga. Um segundo teste do mesmo local dentro de dois minutos é recusado (486), assim como um quinto de uma vez. Um ESRP passa uma chamada de teste como uma chamada real, ainda marcada como teste. Desligue Atender chamadas de teste na página de chamadas de emergência para recusá-las (404).
Algoritmos JWS: NENA-STA-010.3 pede EdDSA com Ed448. A biblioteca padrão do Go, que o BitVoice usa para cada passo criptográfico, tem Ed25519, mas não Ed448, então as assinaturas EdDSA são verificadas com chaves Ed25519 e as assinaturas ECDSA e RSA também são aceitas; um certificado Ed448 é recusado.
Você quis dizer. Um endereço que não é válido recebe até cinco sugestões dos mesmos dados, melhor primeiro, cada uma dizendo por quê: uma rua uma ou duas letras distante (um par de letras trocadas conta como uma), a mesma rua na cidade seguinte, ou o número mais próximo que a rua tem, no mesmo lado quando possível (números pares permanecem pares). Usar preenche uma sugestão. Uma posição com o endereço. Forneça uma latitude e longitude (e o raio da posição, quando conhecido) com o endereço: a posição é verificada contra o ponto de endereço próprio do endereço, permitindo o seu raio e 100 m mais (o tamanho de um lote e erro de GIS). A resposta fornece a distância e se os dois concordam, e, quando não concordam, o ponto de endereço mais próximo da posição. Um endereço conhecido apenas a partir de linhas centrais de estrada não tem ponto para verificar, e a resposta diz isso. O validateLocation do LoST não tem lugar para nenhum dos dois, então os operadores que perguntam por LoST recebem apenas a validação.