Manual do BitVoice

Um sistema de telefone de código aberto em um programa, configurado inteiramente na interface web: extensões, filas, salas de conferência, portal do pessoal, organizações hospedadas e o laboratório de segurança pública.
79 capítulos · 63 figuras · 54 mil palavras · BioDream LLC

Sumário

  1. Parte 1. Introdução
    1. 1. Introdução
    2. 2. Quão maduro é cada parte
    3. 3. Extensões
    4. 4. Conectando telefones
    5. 5. Telefones Skinny e gateways MGCP
    6. 6. Cartões de telefonia
    7. 7. Troncos
    8. 8. Roteamento de chamadas
    9. 9. Conjuntos de PIN
    10. 10. Pesquisa de ID do chamador
    11. 11. Chamadas de emergência
    12. 12. Locais e 911 de escritório
    13. 13. Saúde
    14. 14. Configurações
    15. 15. As telas no seu idioma
  2. Parte 2. Para onde as chamadas vão
    1. 16. Fluxo de chamada
    2. 17. Grupos de toque
    3. 18. Filas
    4. 19. Discador de saída
    5. 20. Sons: prompts, idiomas e música de espera
    6. 21. Menus (atendimento automático)
    7. 22. Diretório de discagem por nome
    8. 23. Discagem (DISA)
    9. 24. Robôs de voz (AudioSocket)
    10. 25. Toggles de dia/noite
    11. 26. Cronogramas
    12. 27. Scripts (JavaScript e Lua)
    13. 28. Recepcionista de IA, triagem de correio de voz e perguntas
    14. 29. Caixa de correio de voz
    15. 30. Chamadas de retorno
    16. 31. Links de chamada e chamada de site
  3. Parte 3. Chamadas diárias
    1. 32. Códigos de recurso, encaminhamento e discagens rápidas
    2. 33. O portal do funcionário
    3. 34. Salas de conferência
    4. 35. Página e alto-falantes
    5. 36. Hot desking
    6. 37. Chamadas de hotel e despertador
    7. 38. Contatos em todos os telefones
    8. 39. Calendários e não perturbe
    9. 40. Aplicativos móveis
    10. 41. Chamadas de vídeo
    11. 42. Fax: envio e recebimento, máquinas de fax e telefones analógicos
    12. 43. Caixa de entrada: chat da web, WhatsApp e Messenger
    13. 44. Texto de negócios (SMS)
    14. 45. Transferência de informações
  4. Parte 4. Clientes e visão geral
    1. 46. Chamadas ao vivo
    2. 47. Histórico de chamadas
    3. 48. Linha do tempo do cliente
    4. 49. CRM: cartões de chamador e registro de chamadas
    5. 50. Percepção de chamada para supervisores
    6. 51. Gravação de chamada e pagamentos com cartão
    7. 52. Consentimento de gravação
    8. 53. Qualidade da chamada
    9. 54. Custos e orçamentos
    10. 55. Reputação do ID do chamador e chamadas com marca
    11. 56. Proteção contra spam e STIR/SHAKEN
  5. Parte 5. Executando o BitVoice
    1. 57. Administradores
    2. 58. Login único
    3. 59. Diretório da empresa (Active Directory e LDAP)
    4. 60. Segurança
    5. 61. Alterações, backups e importação
    6. 62. Atualizações
    7. 63. Vários servidores como um sistema de telefone
    8. 64. Onde os dados são mantidos (SQLite ou PostgreSQL)
    9. 65. Hospedando outras organizações
    10. 66. Codecs e som
    11. 67. Microsoft Teams (Roteamento Direto)
    12. 68. Importar
    13. 69. Configuração como código
    14. 70. Compatibilidade com Asterisk (AMI, ARI e AGI)
    15. 71. Assistentes de IA (MCP)
    16. 72. Arquivo
    17. 73. Retenções legais
    18. 74. Métricas: Prometheus, OpenTelemetry, Grafana, SNMP e registros de chamadas
    19. 75. Gerador de chamadas
    20. 76. Rastreamento de SIP
  6. Parte 6. Segurança pública: o laboratório de rastreamento
    1. 77. Chamadas de 911 (o perfil de 911)
    2. 78. Consoles de despacho de rádio
    3. 79. **Serviços de Núcleo NG911** (ECRF, ESRP, LVF, BCF, LIS, registro)
Parte 1

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.

Capítulo 1

Introdução

Na interface web: /

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.

WHO CONNECTSWHERE CALLS GODesk phonesYealink, Poly, Grandstream, SnomBrowsers and appsWebRTC, iOS, AndroidPhone companiesSIP and IAX2 trunksESInet and radio911 calls, P25, RoIPBitVoiceRoutes and menusQueues and roomsRecords and logsConverts codecsKeeps 911 workingPeople who answerextensions, ring groupsVoicemail and AItranscripts, receptionistCAD, CRM, Teamsevents, caller cardsRecordshistory, recordings, faxes
Figura 1. Where BitVoice sits: phones and carriers on one side, people and systems on the other

O que você precisa

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

Extensionsone per person1Phonesconnect each one2Trunkyour carrier3Call routingwhere calls go4Healthwhat is missing5Every step has a page in the menu; Health lists anything still missing, emergency calling first.
Figura 2. The first hour: five steps from a new install to a working phone system
  1. Extensões: uma por pessoa ou mesa. Cada uma tem um número e uma senha SIP. Abrir Extensões (capítulo 3)
  2. Telefones: conecte um telefone de mesa, um softphone ou o telefone do navegador a cada extensão. Abrir Telefones (capítulo 4)
  3. Tronco: a conta da sua empresa de telefone, para que você possa chamar números externos e ser chamado. Abrir Troncos (capítulo 7)
  4. 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)
  5. 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:

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.

SistemaComo iniciá-loOnde estão seus dados
Linux./bitvoice (ou o serviço systemd na versão)~/.config/BitVoice
macOS./bitvoice~/Library/Application Support/BitVoice
Windowsclique 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

PortaPara que
5060 UDP e TCPSIP: telefones e troncos
5061 TCPSIP sobre TLS (sinalização criptografada)
4569 UDPTroncos IAX2, apenas após configurar um
1720 TCPTroncos H.323, apenas após configurar um
2000 TCPTelefones Skinny (SCCP), apenas quando ativado
2727 UDPGateways MGCP, apenas quando ativado
10000–20000 UDPSom das chamadas (RTP), configurado em Configurações
8443 TCPEsta 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

Capítulo 2

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.

ÁreaMaturidadeO que se baseia
Troncos SIP: registro, chamadas para dentro e para fora, identificador de chamador, ocupado, teclas (RFC 4733)Testado em campoum 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 SIPTestado em campoAsterisk 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 campode fora para o EC2; testes do navegador Chromium com som em ambos os sentidos
Dois servidores, um PostgreSQL, failoverTestado em campokill -9 e parada planejada no EC2: a chamada continua, a linha do provedor se move
Instalação de um comandoTestado em campoUbuntu 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
CapacidadeTestado em campo2.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 campoum 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, recepcionistaTestado em campoum modelo real por meio do OpenRouter
Fatos e resumos sem um modelo de linguagemTestado em softwarechamadas 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 Linuxwhisper-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 ManagerTestado em campoAWS real, nosso próprio SigV4
Monitoramento SNMP e armadilhasTestado em camposnmpwalk e snmptrapd do net-snmp
Let's EncryptTestado em campoemite e renova o certificado da demonstração pública
Imagens de máquina (AWS) e configuração como códigoTestado em campouma 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 IAX2Verificado contra uma referênciaAsterisk 23
ICE completo atrás de NAT (cliente STUN e TURN)Verificado contra uma referênciaagente 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ênciaChromium 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ênciaPJSIP 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ênciaOpenLDAP 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ênciacada 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 telaVerificado contra uma referênciaTrê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ênciaresposta 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 MCPVerificado contra uma referênciaSDK 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 softwarecontra 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 idiomasTestado em softwarecada 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.323Verificado contra uma referênciaH323Plus 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 WebSocketVerificado contra uma referênciaJsSIP e SIP.js
Codecs: GSM, G.726, iLBC, MP3 de música de esperaVerificado contra uma referênciaffmpeg, o programa de referência RFC 3951 e minimp3, amostra por amostra
Codecs: G.711, G.722, G.729, Opus, SpeexVerificado contra uma referênciaG.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-WBVerificado contra uma referência, com uma lacuna conhecidadecodificador 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, Codec2Testado em softwaretestes 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/E1Verificado contra uma referêncialibpri (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&MVerificado contra uma referênciaOpenR2; 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êncialibss7 (biblioteca chan_dahdi do Asterisk), ITU e ANSI. Nenhum link de carrier real tentado
Fax (T.30, T.38)Testado em campoum 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, CyberDataTestado em softwareos formatos documentados dos fornecedores; não em aparelhos de mão reais
Telefones Skinny (SCCP) e gateways MGCPVerificado contra uma referênciaSkinny: 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 TeamsTestado em softwarecontra 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ênciacada 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 webVerificado 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 VaultVerificado contra uma referênciaEspoCRM (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õesTestado em softwaretestes 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 AndroidTestado 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 chamadorLaboratórioesquemas 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 oferecidopatenteado até 2028
Assinaturas Ed448 (NENA)Não oferecidonã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 TCAPVerificado contra uma referênciaOsmoSTP 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 softwarecada 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 E2Não oferecidoPAM é 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
Capítulo 3

Extensões

Na interface web: /extensions

Uma 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.

100 dials 101Forwarding?all, busy, no answerDo not disturb?then voicemailRings 101every phone, appsFollow-memobile, other deskNo-answervoicemail or other
Figura 3. A call between two extensions

Adicionar uma extensão

  1. 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.
  2. Insira o nome da pessoa (exibido em outros telefones quando eles ligam) e e-mail (para correio de voz por e-mail).
  3. Preencha a localização 911: o local, andar e sala. Ela é enviada com chamadas de emergência.
  4. Escolha o que acontece Se ninguém atender: correio de voz por padrão, ou outra extensão, um grupo ou um menu.
  5. Salve. A extensão pode se conectar imediatamente.

Os campos

CampoO que ele faz
Número2 a 8 dígitos; nenhum outro número de extensão, grupo, fila ou código de recurso pode ter ele
Senha SIPo que o telefone se conecta com; pelo menos 12 caracteres; Gerar cria uma nova
Tocar porsegundos antes de Se ninguém atender acontecer (25 por padrão)
ID de chamador externoo número exibido nas chamadas externas; vazio usa o do tronco
Pode ligar para números externosdesligado mantém o telefone em chamadas internas e números de emergência
Gravar chamadasquando as Configurações gravam apenas extensões selecionadas
Mesa quenteum telefone compartilhado que se torna quem se conecta nele
Criptografar chamadas para este telefonecriptografia de mídia (SRTP); use com TLS para manter as chaves privadas
Departamentoagrupa 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:

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

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.

Capítulo 4

Conectando telefones

Na interface web: /phones

Qualquer 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.

Yealink, Poly,Grandstream, Snom1. where is my file? (DHCP 66)2. HTTPS: extension, password, keysBitVoice3. registersSigned in as its extensionBLF keys, time zone, codecs, all set
Figura 4. Provisioning: a desk phone fetches its settings by itself

Configuração automática (provisionamento)

  1. 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.
  2. Escolha a marca: Yealink, Poly, Grandstream (incluindo os adaptadores analógicos HT), Snom, Fanvil, Cisco, Mitel, Sangoma, Algo ou CyberData.
  3. 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.
  4. 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.

FabricanteModelos testadosO que ele obtém
YealinkT3x, T4x, T5xconta, teclas BLF, tempo, codecs
PolyVVX, Edge Eo mesmo, no formato próprio da Poly
GrandstreamGRP, GXP, HT802/814conta por porta em adaptadores
SnomD7xxconta, 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):

MarcaModelosFicheiro que o dispositivo pede
FanvilSérie X e Vo seu endereço MAC .cfg
Cisco6800, 7800, 8800 multiplataforma (3PCC), adaptadores SPAo seu endereço MAC .xml (o firmware empresarial precisa do firmware multiplataforma primeiro)
Mitel (Aastra)6800, 6900 SIPo seu endereço MAC .cfg, em maiúsculas
SangomaSérie So ficheiro no formato Fanvil
Algoaltifalantes de paginação, strobes, adaptadoresalgop e o seu endereço MAC .conf
CyberDataaltifalantes, intercomunicadores, adaptadores de paginaçãoo 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):

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).

Capítulo 5

Telefones Skinny e gateways MGCP

Na interface web: /desk-phones

Telefones e gateways que não falam SIP ainda podem ser usados. Telefones Skinny e gateways MGCP (abaixo de Chamadas) aceitam dois protocolos mais antigos:

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

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

Capítulo 6

Cartões de telefonia

Na interface web: /cards

Um 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

  1. Instale os drivers DAHDI e configure os portos como de costume em /etc/dahdi/system.conf (fxoks=1-4 para portos com telefones, fxsks=5-8 para portos com linhas, e os tons do país em loadzone e defaultzone), então execute dahdi_cfg.
  2. 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.
  3. 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.
  4. 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.
  5. Inicie bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.token como 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

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.

  1. Em /etc/dahdi/system.conf, configure a span para PRI como de costume (span=1,1,0,esf,b8zs, bchan=1-23, hardhdlc=24 para uma T1; span=1,1,0,ccs,hdb3,crc4, bchan=1-15,17-31, hardhdlc=16 para uma E1), e execute dahdi_cfg.
  2. 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.
  3. 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.

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:

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:

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.

Capítulo 7

Troncos

Na interface web: /trunks

Um 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.

BitVoiceREGISTER every few minutescalls out: number, caller IDcalls in: the number dialledCarrierUsername and passwordAllowed addressesCodecs, channels, rates
Figura 5. A trunk: your account with a phone company

Adicionar um tronco SIP

  1. Em Troncos (capítulo 7) pressione Adicionar tronco.
  2. Insira o servidor do provedor que a sua empresa de telefonia forneceu (sip.provider.com), e a porta se não for 5060.
  3. Insira o nome de usuário e senha, e ative Registrar se o provedor disser para fazer (a maioria faz).
  4. 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.

  1. 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)).
FieldWhat it does
TransportUDP (usual), TCP, or TLS for encrypted signalling
Registersign in every few minutes, so the provider knows where to send calls
Authentication usernameonly when the provider gives a separate one
From domainthe domain in the caller's address, when the provider asks for one
Caller IDthe number shown on calls out; an extension's own caller ID wins
Also accept calls fromthe 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 oncethe limit your plan allows; calls beyond it go to the next trunk in the route
Encrypt mediaSRTP, 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
Codecsleave it on *same as Settings*, or choose what this provider supports, best first
Rateswhat 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.

BitVoiceone UDP port, 4569: signalling and audio togetherMD5 challenge with the shared password; call tokensAsterisk or FreePBXiax.conf: type=friend, secret=…
Figura 6. An IAX2 trunk to an Asterisk or FreePBX server

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

StatusSignificado
registeredconectado; chamadas podem chegar
readynão se registra, ou IAX2 aguardando chamadas
unreachableo nome do servidor não está no DNS, ou nada responde
failedo provedor recusou o registro; o motivo é mostrado
standbyservidores compartilham este tronco um de cada vez e outro o mantém
Capítulo 8

Roteamento de chamadas

Na interface web: /routes

O 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.

CarrierIncoming routeby number dialledScheduleopen or closed?openclosedMenu1 sales, 2 supportRing grouprings everyone for 25 sVoicemailafter hoursif nobody answers
Figura 7. How a call from outside finds its way

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.

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.

Dialled2125550199Emergency 911Long distance 1NXXNXXXXXXLocal NXXNXXXXXXInternational 011.matchTrunk AfirstTrunk Bif A failsN is 2–9, X is any digit, . is anything more; emergency numbers never fail for want of a pattern.
Figura 8. Outgoing routes: the first pattern that matches, its trunks in order
PadrãoCorresponde
Xqualquer dígito
Z1 a 9
N2 a 9
[1-5]um de um conjunto
. no finalum ou mais dígitos adicionais
NXXNXXXXXXum número norte-americano de dez dígitos
1NXXNXXXXXXo mesmo com 1 na frente
011.uma chamada internacional dos EUA

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.

Capítulo 9

Conjuntos de PIN

Na interface web: /pin-sets

Um 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.

  1. Adicionar conjunto de PIN e listar seus PINs (4 a 10 dígitos cada).
  2. 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 account na API).
  3. 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.

Capítulo 10

Pesquisa de ID do chamador

Na interface web: /lookups

Muitas 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):

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.

Capítulo 11

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).

dials 911Emergency routenever fails for want of oneCarrierThe PSAPanswersSite, floor, roomsent as PIDF-LOAlerts on site: security desk, email listKari's Law
Figura 9. Office 911: location goes with the call, people on site are told

O que o BitVoice faz em cada chamada de emergência

  1. 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.
  2. 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.
  3. 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.
  4. 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

  1. Verifique os números de emergência em Configurações (capítulo 14) (definidos por país: 911 e 933 nos EUA).
  2. Adicione cada prédio em Locais (capítulo 12), com seu endereço de rua e as redes que seus telefones usam.
  3. Dê a cada extensão seu local, andar e sala.
  4. 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.
  5. Preencha Notificar e Também e-mail.
  6. 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.

Capítulo 12

Locais e 911 de escritório

Na interface web: /sites

Um 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.

Head office · 1 Main St · 10.0.0.0/16floor and room from each extensionat homeAsked onceconfirms the address
Figura 10. Sites and remote workers: where a phone is, for 911

Adicionando um local

Em Locais (capítulo 12), pressione Adicionar:

CampoO que é
Nomeo que as pessoas o chamam: Escritório principal
Rua, Cidade, Estado ou província, Código postal, Paíso endereço cívico para o qual os respondentes são enviados
Redesos 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

  1. 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.
  2. 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)).
  3. 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.
  4. 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).

Capítulo 13

Saúde

Na interface web: /health

Saú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çãoPor que é importante
Chamadas de emergência podem sairuma rota e um tronco funcionando transportam os números de emergência
Extensões sem localização de emergênciasuas chamadas de 911 não teriam andar ou sala
O serviço de telefoneo SIP está ouvindo e em qual porta
Telefones não conectadosextensões que ninguém se conectou como
Troncosregistrados, ou o motivo pelo qual não estão
Menus sem prompt gravadoos chamadores ouviriam silêncio
O fuso horárioos cronogramas seguem-no
Gravações e sua retençãoespaço em disco e quanto tempo as gravações são mantidas
Certificadosquando o certificado TLS expira
Cofres de chavessegredos que um cofre não pode ler
Outros servidoresquando 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.

Capítulo 14

Configurações

Na interface web: /settings

Configuraçõ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çãoO que está lá
Sistemanome, país, fuso horário, idioma, o endereço público que os telefones e provedores veem
Númeroso teste de eco, números de correio de voz e estacionamento, e os números de emergência
Codecsos codecs que os telefones podem usar, melhores primeiro (Codecs (capítulo 66))
Gravação de chamadasdesligada, todas as chamadas, ou extensões selecionadas; regras de consentimento; quanto tempo as gravações são mantidas
Somlimpeza para correio de voz e durante chamadas
Proteçãobanimentos após tentativas de entrada falhas, redes confiáveis, chamadas por extensão, números premium
Emergênciaenviar o endereço do chamador, quem é notificado, quem é enviado por e-mail, modo de emergência
IAo serviço de IA, modelos e quais recursos de IA estão ativados (IA (capítulo 28))
Entrada únicao provedor de identidade (Entrada única (capítulo 58))
Compatibilidade com AsteriskAMI 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 Workspacepessoas e contatos compartilhados para Contatos, e calendários para quem está ausente (Contatos (capítulo 38), Calendários (capítulo 39))
Aplicativos móveiso serviço de push que acorda os aplicativos
E-mailo servidor de e-mail para correio de voz, faxes e alertas
Cofres de chavessegredos mantidos no AWS Secrets Manager ou no Azure Key Vault
Configuração a partir do Gitmanter a configuração em sincronia com um arquivo em um repositório
Banco de dadosSQLite ou PostgreSQL (Banco de dados (capítulo 64))
Certificadoo 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:

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.

Capítulo 15

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.

Parte 2

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.

Capítulo 16

Fluxo de chamada

Na interface web: /flow
CarrierIncoming routeby number dialledScheduleopen or closed?openclosedMenu1 sales, 2 supportRing grouprings everyone for 25 sVoicemailafter hoursif nobody answers
Figura 11. How a call from outside finds its way

Verifique 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:

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.

Capítulo 17

Grupos de toque

Na interface web: /ring-groups

Um 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.

ALL AT ONCEONE AFTER ANOTHERRing group 600the first to answer takes itRing group 6010–25 s25–50 s50–75 s
Figura 12. Ring groups: all at once, or one after another

Estratégias de toque

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?

UsoQuando
Um grupo de toquealgumas pessoas, qualquer uma das quais pode atender a chamada, e a chamada deve tocar agora
Uma filaos chamadores podem ter que esperar por alguém livre, e devem ouvir sua posição
Um grupo de pickupcada pessoa tem suas próprias chamadas, mas colegas de trabalho podem atender por eles
Capítulo 18

Filas

Na interface web: /queues

Uma 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.

CALLERS WAITINGAGENTSVIP234Queue 700longest-idle agentAgent 1availableAgent 2on a callAgent 3wrap-upAgent 4pausedthey hear music and their place in linea VIP joins at the front
Figura 13. A queue: callers wait in order, agents take the next one

Como as chamadas são oferecidas

EstratégiaQuem é chamado
O mais tempo ociosoo agente livre que esperou mais tempo desde a sua última chamada
Rodíziocada agente livre por vez, continuando do último
Tocar todostodos os agentes livres ao mesmo tempo
Menos chamadaso agente livre que atendeu menos chamadas hoje
Em ordem (linear)sempre do topo da lista: o primeiro agente livre
Aleatórioqualquer agente livre, por acaso
Aleatório ponderadopor acaso, agentes com uma penalidade mais baixa com mais frequência

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.

EstadoSignificado
disponívellivre; será oferecido o próximo chamador
tocandosendo oferecido uma chamada
ocupadoem uma chamada
encerramentoacabou de terminar; o tempo de encerramento está rodando
pausadoem uma pausa, com o motivo dado
ausenteem uma reunião ou de folga, do seu calendário
deslogadonã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.

Capítulo 19

Discador de saída

Na interface web: /dialer

O 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:

ModoComo chama
Visualizaçãoum agente pede o próximo contato, vê seus detalhes, então chama (o telefone do agente toca primeiro) ou pula
Progressivouma chamada para cada agente livre
Potênciaum número fixo de chamadas para cada agente livre (1 a 3)
Previsãoo 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
  1. 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.
  2. Abra Contatos e Adicionar uma lista: um arquivo CSV com uma linha de cabeçalho e uma coluna chamada number (ou phone); name e quaisquer outras colunas são exibidas ao agente em visualização. Números duplicados e inválidos são ignorados.
  3. 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.
  4. 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.

Capítulo 20

Sons: prompts, idiomas e música de espera

Na interface web: /sounds

Sons (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.

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 ouveQual música
alguém colocado em esperaa música escolhida na extensão da pessoa que está segurando, caso contrário a padrão
um chamador estacionadoa música da pessoa que o estacionou, caso contrário a padrão
um chamador esperando em uma filaa música da fila, caso contrário a padrão
um chamador esperando por um líder de conferênciaa 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á.

Capítulo 22

Diretório de discagem por nome

Na interface web: /directories

Um 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.

  1. 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.
  2. Escolha o que os chamadores digitam: o sobrenome (o usual), o nome ou qualquer um.
  3. 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.

Capítulo 23

Discagem (DISA)

Na interface web: /dial-in

Uma 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.

  1. 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.
  2. 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.
  3. 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).

Capítulo 24

Robôs de voz (AudioSocket)

Na interface web: /voice-bots

Um 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.

  1. 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.
  2. 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.
  3. 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).

Capítulo 25

Toggles de dia/noite

Na interface web: /toggles

Um 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.

  1. 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.
  2. Escolha quem pode comutá-lo de um telefone (nenhum escolhido permite que qualquer extensão o faça).
  3. 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).

Capítulo 26

Cronogramas

Na interface web: /schedules

Um 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).

Mon9–17Tue9–17Wed9–17ThuholidayFri9–17SatSunOpen: receptionClosed: voicemailTimes are in the system time zone; a holiday closes the whole day.
Figura 15. A schedule: open hours, holidays, and where calls go in each

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.

Capítulo 27

Scripts (JavaScript e Lua)

Na interface web: /scripts

Um 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).

A callfrom, to, timefunction route(call) { if (vip(call.from)) return queue('700') }Its answerFallbackon error or after 200 msScripts can never place calls, reach the network or the disk: they only choose.
Figura 16. A routing script: code decides, a fallback is always there

Seguro por design

O que um script vê

call tem:

CampoO que é
from, fromNameo número e o nome do chamador
too número discado
directioninbound ou internal
trunko tronco pelo qual entrou
weekday, hour, minutea hora atual (0 é domingo)
dateYYYY-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:

EtapaO 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.

Capítulo 28

Recepcionista de IA, triagem de correio de voz e perguntas

Na interface web: /receptionists

Recursos 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.

a callerAI receptionist"I’m the automated assistant"Answers a questionfrom approved factsTakes a messageor books a callbackHands over0, "a person", or a faultA personIt never stands between a caller and a person: any failure goes to the person destination.
Figura 17. The AI receptionist: answers, helps, and always hands over to a person

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:

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.

ConjuntoFatos encontradosFatos encontrados que ninguém esperava
Treinamento (as regras foram escritas a partir dele)41 de 410
Hold-out, pontuado frio, antes de qualquer regra ser escrita a partir dele27 de 40 (67%)2
Hold-out, após uma segunda rodada de regras escritas a partir de seus erros40 de 400
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.

Capítulo 29

Caixa de correio de voz

Na interface web: /voicemail

Cada 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.

not answeredGreetingyours, or a beepMessageup to 3 minutesMessage light on the phoneEmail with the sound fileTranscript, summary, urgencyDial *97 to listen from any phone, or use the Voicemail page or the staff portal.
Figura 18. Voicemail: from a missed call to a message you can read

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çãoO que faz
Mensagem mais longa10 a 900 segundos (180 por padrão)
E-mail de novas mensagenspara o endereço de e-mail da extensão, com a mensagem anexada
Saudaçãogravada no navegador, carregada ou gravada do telefone; sem uma, os chamadores ouvem um beep

Ouvindo

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.

Capítulo 30

Chamadas de retorno

Na interface web: /callbacks

Pessoas 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.

AI receptionistor by handCallbackname, number, time, whyRing backyour phone firstIt never promises an exact time.
Figura 19. Callbacks: booked by the receptionist, rung back by a person

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.

Parte 3

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.

Capítulo 32

Códigos de recurso, encaminhamento e discagens rápidas

Na interface web: /codes

Os 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ódigoO que ele faz
*72encaminhar cada chamada (em seguida, o número e #, ou o número diretamente após: *722125550199)
*73parar de encaminhar cada chamada
*90 / *91encaminhar quando em uma chamada / parar
*52 / *53encaminhar quando não atendido / parar
*78 / *79não perturbe ligado / desligado
*76alternar não perturbe (tom ascendente: agora ligado)
*21alternar siga-me ligado e desligado
*8atender uma chamada que toca no seu grupo de recolha
** e uma extensãoatender a chamada que toca nessa extensão
*80 e uma extensãointercom: esse telefone atende no seu alto-falante
*0 e um códigoum disco de velocidade
*62chamada de despertar: ouça, reserve uma (quatro dígitos, como 0630) ou cancele (estrela)
*68 e um dígitostatus da sala, para limpeza em hotéis
*28 e um código de alternânciaalternar uma alternância dia/noite (capítulo 25) sobre, ou de volta
*32bloquear 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))
*43o teste de eco
*97sua caixa de correio de voz
70estacionar uma chamada (transferi-la aqui); 71 a 79 a recolhem
*45 / *46agentes de fila: entrar ou sair / pausar ou retomar
*33 / *34entrar ou sair em uma secretária
*7 / *8 durante uma chamadapausar e retomar a gravação (pagamentos com cartão)

Encaminhamento

a call to 101Every call*72 · cancel *73When on a call*90 · cancel *91When not answered*52 · cancel *53Another extensionits own settings applyAn outside numberthrough outgoing routesA group, queue or room
Figura 21. Forwarding: every call, when busy, when not answered

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

desk, 25 smobile, 20 sPress 1 to take the callso the mobile's voicemail never doespressed 1Connectedno 1 in 15 sVoicemail
Figura 22. Follow-me: the desk first, then the mobile, then voicemail

*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

101 rings102 dials *8takes the callpickup group "Front office"** then the extensionanswers that one extension's call*8answers the oldest in your group
Figura 23. Call pickup: answer a colleague's ringing phone

Intercom

100 dials *80101auto-answer101 answers itselfAn extension can refuse intercomthen the call rings as usual
Figura 24. Intercom: the called phone answers on its speaker

*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).

Capítulo 33

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.

Your phoneExtension101Voicemail PIN••••Sign inDo not disturbForwardingFollow-meSpeed dialsVoicemail and greetingYour calls
Figura 25. The staff portal: everyone looks after their own calls

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

GuiaO que está lá
Para onde vão as chamadasnã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 vozmensagens para tocar e excluir, com transcritos e resumos quando a IA está ativa; gravar ou carregar a saudação
Suas chamadasas chamadas próprias da pessoa, mais recentes primeiro, sem gravações
PINalterar 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).

Capítulo 34

Salas de conferência

Na interface web: /conferences

Uma 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.

Room500violet: leader · grey: mutedDial 500, enter the PIN and #three wrong PINs and the call endsLeader PINjoins as a leader; 2 locks the roomWait for the leaderothers hear hold music until then
Figura 26. A conference room: PIN, leaders, and who is talking

Configurando uma sala

  1. Abra Salas de conferência (capítulo 34) e pressione Adicionar sala de conferência.
  2. Dê um número (qualquer número livre, 500 por padrão) e um nome.
  3. Opcionalmente, defina um PIN. Os chamadores ouvem um tom, digitam o PIN e pressionam #. Três PINs errados e a chamada termina.
  4. Opcionalmente, defina um PIN de líder, diferente do PIN. Quem o digita se junta como líder.
  5. Para permitir que os chamadores externos entrem, aponte uma rota de entrada (ou uma tecla de menu) para a sala.

Opções

OpçãoO que ela faz
Aguardar o lídertodos 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 mudopara briefings e palestras: líderes falam, membros ouvem. Um membro pressiona 1 para pedir para falar, e um líder o desmuta.
Gravar a salatoda 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 saemativado por padrão
Maior número de pessoas ao mesmo tempo50 por padrão, até 200

Teclas durante uma chamada

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:

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.

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.

Capítulo 35

Página e alto-falantes

Na interface web: /paging

Pá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

  1. Na Paging (capítulo 35) pressione Adicionar grupo de paging e atribua-lhe um número (800 por predefinição) e um nome.
  2. Escolha os telefones. Altifalantes sobrepostos configurados como extensões (tipo Altifalante sobreposto) também podem ser membros.
  3. 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

PagingIntercom
Quem ouvetodos no grupouma extensão
Retorno de chamadanão, apenas uma viasim, duas vias
Comodiscar 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.

Capítulo 36

Hot desking

Na interface web: /phones

Um 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

  1. No telefone, discar *33 e aguardar o tom.
  2. Digitar a extensão e #, e aguardar o tom.
  3. 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.

Capítulo 37

Chamadas de hotel e despertador

Na interface web: /hotel

Chamadas 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.

The hotel system (PMS)

Capítulo 38

Contatos em todos os telefones

Na interface web: /contacts

Contatos é 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.

Add contactImport CSVContactsnames and numbersthe phone directory+1 212 555 0100 and 2125550100 are the same line.
Figura 27. Contacts: one directory on every phone

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:

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):

  1. No centro de administração Entra, Registos de aplicação, Novo registo: nomeie-o BitVoice, inquilino único, sem endereço de redirecionamento.
  2. Permissões de API, Adicionar permissão, Microsoft Graph, Permissões de aplicação: User.Read.All, OrgContact.Read.All e Calendars.ReadBasic. Em seguida, Conceder consentimento de administrador.
  3. Certificados e segredos, Novo segredo do cliente: copie o seu valor (exibido uma vez).
  4. 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):

  1. 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.
  2. 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.
  3. No BitVoice: o arquivo da chave e o e-mail de um administrador para a conta de serviço agir como.

O que é importado:

Capítulo 39

Calendários e não perturbe

Na interface web: /extensions

Uma 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.

9:00 Team meeting12:00 FreeFriday: out of officeevery 5 minA call to 101during the meetingVoicemailor forwardedDo not disturb now wins over the calendar.
Figura 28. Following a calendar: no ringing in meetings

Na extensão, Calendário e não perturbe, cole o endereço privado do calendário:

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.

Capítulo 40

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.

A call to 101BitVoicePush relayApple and Googlerings like a callthe app connects backPaired once by QR code; the code works once, for ten minutes.
Figura 29. The mobile apps: woken by a push, rung like a desk phone

Configurando push

Um aplicativo fechado é acordado para chamadas por uma mensagem de push. Em Configurações (capítulo 14), Aplicativos móveis, escolha um:

PushO que você precisa
Relay de pusho 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ópriossuas 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

  1. Abra a extensão e pressione Adicionar um telefone.
  2. 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:

As outras abas

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.

Capítulo 41

Chamadas de vídeo

Na interface web: /settings

Quando 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.

Video phoneH.264SRTPBitVoice relaysrenumbered if neededSoftphoneH.264The phones never learn each other’s addresses.
Figura 30. Video calls: relayed as they are

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.

Capítulo 42

Fax: envio e recebimento, máquinas de fax e telefones analógicos

Na interface web: /faxes

Má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.

Fax machineon an adapter portCarrierT.38 or G.711Fax numberreceives and sendsPDF on the Faxes pageEmailed to a listEmail to fax: send by emailPages, size (letter or A4) and the far station’s ID are kept with each fax.
Figura 31. Fax: machines, email and PDFs

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:

Capítulo 43

Caixa de entrada: chat da web, WhatsApp e Messenger

Na interface web: /inbox

A 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.

WhatsApp

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.

Capítulo 44

Texto de negócios (SMS)

Na interface web: /texts

Envie 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.

a customerTexting providerTextMagic, Twilio, …Texts pageone thread per numberTimelineDesk phonesUS numbers need 10DLC registration, guided on the Texts page.
Figura 32. Business texting: the same numbers, one conversation view

Configurando

  1. 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.
  2. 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.
  3. 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.

Capítulo 45

Transferência de informações

Na interface web: /settings

Para 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).

agent 101transfersTwo sentenceswho, what, what was promised102 ringsShown with the callbrowser, Live calls, deskThe caller never has to say it all again.
Figura 33. Transfer briefings: the next person knows already

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.

Parte 4

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.

Capítulo 46

Chamadas ao vivo

Na interface web: /calls

Chamadas 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.

Live call100 Front desk → +1 212 555 0199G.722 / G.711 · MOS 4.3 · 02:14endsCall recordwho and when, how long, answered byrecording and transcriptcost, quality per leg, why it ended
Figura 34. Live calls and history: every call, while it happens and after

O que os administradores podem fazer

AçãoO que faz
Desligartermina a chamada para ambos os lados
Abrir a portapara uma chamada de uma estação de porta
Pausar gravaçãopara 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))
Ouvirouvir a chamada silenciosamente
Sussurrarfalar com o agente apenas; o chamador não ouve
Intervirjuntar-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

Quando uma chamada termina, ela é movida para Histórico de chamadas (capítulo 47).

Capítulo 47

Histórico de chamadas

Na interface web: /history

Todas 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.

Live call100 Front desk → +1 212 555 0199G.722 / G.711 · MOS 4.3 · 02:14endsCall recordwho and when, how long, answered byrecording and transcriptcost, quality per leg, why it ended
Figura 35. Live calls and history: every call, while it happens and after

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:

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.

Capítulo 48

Linha do tempo do cliente

Na interface web: /timeline

A 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.

Call answered by Front deskVoicemail: "please call back"Text: "after 3 is fine"Callback booked by the AI receptionistNote: prefers mornings+1 212 555 0199Lee, Acme Corp
Figura 36. One customer timeline: everything about a number in one place

O que mostra

ItemCom
Chamadasquem atendeu, quanto tempo durou, e com uma transcrição, resumo, gravação e transcrição
Correios de vozresumos
Textosambos os sentidos
Retornos de chamadasolicitados e se foram feitos
Notasnotas 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.

Capítulo 49

CRM: cartões de chamador e registro de chamadas

Na interface web: /settings

Conecte 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.

+1 212 555 0100Caller cardLee · Acme CorpGET {number}Your CRMany web addressafter the call: who, how long, summaryAnswers are kept for five minutes.
Figura 37. CRM: a card while it rings, a log after it ends

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:

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.

Capítulo 50

Percepção de chamada para supervisores

Na interface web: /quality

Para centros de contato: evidências de como as chamadas foram, para um supervisor ouvir, nunca uma pontuação automática.

How it wentagent 62%caller 38%talked over: 3 · longest: 48 s · quiet: 22 s02:14 Went well05:40 Look at: a long hold07:02 Not answered09:15 Promised: a refund by FridayTo choose calls to listen to, not to rank people.
Figura 38. Call insight: evidence for a supervisor, never a score

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.

Capítulo 51

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.

A call is answeredrecording is onConsent ruleby the other party’s regionAnnounce, then recordtwo-party consent regionsRecord with a beep every 15 sDo not record*7 pauses and *8 resumes the recording while a card number is read out
Figura 39. Recording with consent: announce, beep, or not at all

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.

Capítulo 53

Qualidade da chamada

Na interface web: /quality

Como 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.

Each calljitter, loss, delayMOS score1 bad · 4.4 bestBy site, carrierand hour of dayDiagnosis"loss on the office link 2–3 pm"
Figura 41. Call quality: from packets to a plain diagnosis

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).

Capítulo 54

Custos e orçamentos

Na interface web: /costs

O 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.

A call out+44 20 …, 7 minTrunk rate+44: 0.02 a minuteCost0.14By personBy departmentBy trunkAlerts: a budget passed, or far more calls to one place than usual (toll fraud).
Figura 42. Costs: every call priced, budgets watched

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.

Capítulo 55

Reputação do ID do chamador e chamadas com marca

Na interface web: /reputation

As 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á:

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.

Capítulo 56

Proteção contra spam e STIR/SHAKEN

Na interface web: /settings

Nos 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.

A call inIdentity, verstatCheckedsignature, age, numbersVerified: ringsNot verified: rings as "Spam?"Failed or blocked: refusedwhat happens to each is set in Settings
Figura 43. Spam protection: the caller ID is checked before it rings

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:

EscolhaO que o chamador recebe
Tocar como habituala chamada toca como qualquer outra (o padrão)
Teste de robô primeiroo 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 localnada 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.

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).

Parte 5

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.

Capítulo 57

Administradores

Na interface web: /users

Os 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çãoPode
Administradoralterar qualquer coisa, reproduzir gravações, ver a existência de cada campo secreto (nunca seu valor)
Visualizadorver 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)).

Capítulo 58

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.

browserIdentity providerEntra, Google, Okta, KeycloakBitVoicereads the groupsAdministratorViewerNot in an allowed group: refused, and noted in the audit log.
Figura 44. Single sign-on: the work account decides who gets in

Configuração

Em Configurações (capítulo 14), Autenticação única:

  1. Registe uma aplicação com o fornecedor, com o Endereço de redirecionamento mostrado aqui.
  2. Preencher para um fornecedor define o Emissor para os comuns; copie o ID do cliente e Segredo do cliente do fornecedor.
  3. Nomeie os Grupos de administradores e Grupos de visualizadores do fornecedor. Reivindicação de grupos é onde o fornecedor os coloca (groups a menos que definido).
  4. Opcionalmente altere o Texto do botão na página de entrada.
  5. Ative Usar autenticação única.

Como funciona

Capítulo 59

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:

  1. 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.
  2. Servidor: ldaps://dc1.example.com (porta 636), ou ldap://... 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.
  3. Conta de leitura e Sua senha: uma conta permitida para ler pessoas e grupos (reader@example.com no Active Directory). A senha pode ser uma referência ao cofre de chaves (Configurações, Cofres de chaves).
  4. 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.
  5. 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

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:

Capítulo 60

Segurança

Na interface web: /security

Um 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.

Trusted networks, bans after failed sign-insStrong SIP passwords, one per extensionTLS for SIP, SRTP for callsTwo-step sign-in, single sign-on, rolesAudit of every change, legal holdsLimits: outside calls, premium numbers, spend
Figura 45. Layers of protection

Contra adivinhação de senhas

Contra fraude

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çãoO que ele faz
Uma chamada para o exterior para um país que essa extensão ligou nos últimos 90 diasdeixa passar
Uma primeira chamada para esse país em 90 diasdeixa 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ãorecusa
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ênciasempre 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:

Criptografia

Quem pode fazer o quê

Capítulo 61

Alterações, backups e importação

Na interface web: /changes

Cada alteração salva é uma revisão: numerada, com quem a fez, quando e um resumo de uma linha. Nada na configuração é jamais perdido.

1setup2extensions3trunk4menu5restored 2restore revision 2: a new revision 5Compare any two side by side before restoring; nothing is lost.
Figura 46. Every change is a revision you can compare and undo

Comparando e restaurando

Exportar e importar

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.

Capítulo 62

Atualizações

Na interface web: /updates

Atualizar 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.

Upload or fetchsigned releaseCheck signaturerefuse a bad oneStart new versioncalls hand overUp for a minute?then it is confirmedit crashed: back to the version before, automatically
Figura 47. Updates: install, check, and fall back on their own

Instalando uma atualização

  1. Baixe a nova versão e desempacote-a. Ao lado do programa está sua assinatura da BioDream: bitvoice.sig, ou bitvoice.exe.sig no Windows.
  2. Em Atualizações (capítulo 62), faça upload do programa e do arquivo .sig.
  3. Pressione Instalar. Por padrão, o BitVoice aguarda até que não haja chamadas em andamento; você também pode instalar imediatamente.
  4. 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ê executaAtualizações aceita
uma versão, v0.1.3 ou posteriorapenas programas assinados pela BioDream
v0.1.2 ou anterior, ou uma compilação suaqualquer programa: com nenhuma chave, um arquivo .sig não pode ser verificado e é ignorado
Capítulo 63

Vários servidores como um sistema de telefone

Na interface web: /servers

Dois ou mais servidores BitVoice que compartilham um banco de dados PostgreSQL funcionam como um sistema de telefone:

Server AServer BPostgreSQLcalls crossA shared addressmoves to a running serverPhones register anywherecalls find themA server stopsits calls carry on elsewhere
Figura 48. Several servers as one phone system

Configurando

  1. Mova os dados do primeiro servidor para o PostgreSQL: Configurações, Banco de dados.
  2. 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.
  3. 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.
  4. Informe os telefones sobre como encontrar os servidores (abaixo).
  5. 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:

Linhas de provedor. Em cada tronco, Compartilhado entre servidores diz como:

Quando um servidor para

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).

Capítulo 64

Onde os dados são mantidos (SQLite ou PostgreSQL)

Na interface web: /settings

O 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.

one serverbitvoice.dbSQLite, the defaultmove, all or nonePostgreSQLone databaseRecordings and voicemail stay as sound files in the data folder.
Figura 49. Where the data is: one file, or PostgreSQL

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.

Capítulo 65

Hospedando outras organizações

Na interface web: /tenants

Um 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.

ONE BITVOICE SERVERMain system/own dataAcme Dental/t/acme/own usersRiverside Clinicpbx.riverside.exampleown numbersshared: SIP 5060, IAX2 4569, media portsBy domainpbx.riverside.exampleBy user nameacme.100By trunk and numbera shared provider
Figura 50. Hosted organisations: one server, separate phone systems

Quando usá-lo

O sistema principal é uma organização também: a que este servidor foi configurado como. Seus administradores gerenciam os outros.

Adicionando uma organização

  1. Abra Organizações (capítulo 65) e pressione Adicionar organização.
  2. 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.
  3. 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.
  4. Defina seu primeiro administrador: um nome de usuário e uma senha com pelo menos 12 caracteres, e seu país.
  5. 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çãovai para
de um telefone que se registra em pbx.acme.examplea organização com esse domínio
de um telefone que se conecta como acme.100Acme, ramal 100
de um provedor, para um númeroa organização cujo tronco é e cuja rota de entrada tem esse número
qualquer outra coisao 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

LimiteO que acontece ao atingi-lo
Ramaisadicionar um mais é recusado com uma mensagem
Chamadas simultâneasnovas chamadas são recusadas (503) até que uma termine
Armazenamentonovas gravações e caixa de voz não são mantidas
Solicitações de IA por diatranscriçõ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.

Capítulo 66

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.

BrowserOpusDesk phoneG.722 HDDECT baseG.726ConvertsG.711 µ-law and A-law · G.722Opus · G.729 · G.726 · GSMonly when the two sides differ:same codec, passed untouchedCarrierG.711Thin linkG.729Old softphoneGSM
Figura 51. Codecs: each side speaks its own, BitVoice converts in between

Os codecs

CodecSomLargura de bandaUsado por
G.722HD (largura de banda ampla)64 kbit/sa maioria dos telefones de mesa: a melhor escolha entre eles
G.711 µ-lawtelefone64 kbit/sAmérica do Norte e Japão; todas as operadoras
G.711 A-lawtelefone64 kbit/so resto do mundo
OpusHD, lida com perda24 kbit/snavegadores e aplicativos móveis
G.729telefone, um pouco mais áspero8 kbit/slinks finos, algumas operadoras
G.726 (40 kbit/s)telefone; transporta tons de modem melhor do que as taxas G.72640 kbit/sgateways, alguns sistemas DECT
G.726 (32 kbit/s)próximo ao telefone32 kbit/sbases DECT, gateways mais antigos
G.726 (24 kbit/s)entre 32 e 1624 kbit/salguns sistemas DECT
G.726 (16 kbit/s)áspero16 kbit/slinks muito finos
AMR-WB (G.722.2)HD6,6 a 23,85 kbit/svoz HD de redes móveis, interconexões VoLTE
AMRtelefone, móvel4,75 a 12,2 kbit/sredes móveis, algumas operadoras e gateways
iLBCtelefone, lida com perda13,3 ou 15,2 kbit/ssoftphones e aplicativos mais antigos
Speextelefone15 kbit/s (2,15 a 24,6)softphones mais antigos, links para outros sistemas Asterisk
GSMmais áspero13 kbit/ssoftphones e gateways mais antigos
G.723.1áspero; convertido apenas com ffmpeg5,3 ou 6,3 kbit/stelefones de vídeo e gateways muito antigos
G.722.1 (Siren 7)largura de banda ampla, transportado sem alterações24 ou 32 kbit/stelefones Polycom, telefones de vídeo e conferência
G.722.1C (Siren 14)super-largura de banda, transportado sem alterações24 a 48 kbit/stelefones de conferência, sistemas de sala
G.719faixa completa, transportado sem alterações32 a 128 kbit/ssistemas de sala de telepresença
Codec2largura de banda muito baixa, transportado sem alterações0,7 a 3,2 kbit/slinks 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.

Capítulo 67

Microsoft Teams (Roteamento Direto)

Na interface web: /trunks

O 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.

Teams usersapp and Teams phonesMicrosoftTLS 5061SRTPBitVoice (SBC)CarriersDesk phonesNeeds: this server’s public name, a certificate for it, and the PowerShell BitVoice shows.
Figura 52. Microsoft Teams Direct Routing: BitVoice is the SBC

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

  1. 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.
  2. Trunks, Adicionar, comece com Microsoft Teams: insira o nome público do servidor. A gaveta diz se o certificado o cobre.
  3. 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.
  4. 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.

Capítulo 68

Importar

Na interface web: /import

Traz 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).

FreePBX, Asterisk3CXCisco, Avaya, MitelPreviewwhat would changeApplyone revisionUndoSeveral files at once, or a .zip or .tar of them.
Figura 53. Import: another system’s export, previewed before anything changes

Migrando do FreePBX

O melhor arquivo é um backup do FreePBX: ele contém tudo, incluindo senhas SIP.

  1. 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.
  2. Baixe o backup da linha (o arquivo é nomeado como 20261001-100000-1790000000-17.0.19-1234567.tar.gz).
  3. 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.
  4. 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.
  5. Escolha Adicionar. É uma revisão em Alterações (capítulo 61): desfaça-a se algo parecer errado e importe novamente.
  6. 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.
  7. 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:

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 é:

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:

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.

Capítulo 69

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).

Terraform, OpenTofuScripts, CIA Git repositoryREST APIBearer bv_…BitVoicethe same calls as the screens
Figura 54. Configuration as code: the API, Terraform and Git

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.

Capítulo 70

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.

Click to dialOriginateWallboardQueueStatus, eventsAMI · TCP 5038ARI · /ari/BitVoicePJSIP/100-…PJSIP/102-…Logins are read only unless marked Can change calls.
Figura 55. Asterisk compatibility: tools written for Asterisk drive BitVoice

AMI

A interface de gerenciamento na porta TCP 5038 (AMI ouve em: este computador apenas por padrão). Suportado:

TipoNomes
AçõesLogin (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
FilasQueueStatus, QueueSummary, QueuePause, QueueAdd e QueueRemove (eles assinam um agente em, ou fora, de todas as suas filas), Agentes
OutrosChamadasEstacionadas; ConfbridgeListRooms, ConfbridgeList, ConfbridgeKick, ConfbridgeMute, ConfbridgeUnmute, ConfbridgeLock, ConfbridgeUnlock; ContagemCaixaPostal, StatusCaixaPostal; PauseMonitor, UnpauseMonitor; EventoUsuário; Recarregar (nada para recarregar: as alterações são aplicadas imediatamente)
EventosNewchannel, 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çãoO que faz
GET /ari/channelsas chamadas em andamento
POST /ari/channels?endpoint=PJSIP/100&extension=5551234toca 100, então chama o número
DELETE /ari/channels/{id}desliga
POST /ari/channels/{id}/redirect?endpoint=PJSIP/102envia a chamada para 102
/ari/endpoints, /ari/bridges, /ari/asterisk/infotelefones, pontes, versão
/ari/eventsum WebSocket de eventos
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=rtp&format=ulawum 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çãoO que faz
POST /ari/channels/{id}/play?media=sound:goodbye,digits:42reproduz 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=%23grava (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=123envia teclas para o chamador
GET/POST /ari/channels/{id}/variable?variable=X&value=Yas variáveis do canal
POST /ari/bridges?bridgeId=room1, .../addChannel?channel=a,b, .../removeChannel, .../play, DELETEpontes de mistura: todos em uma ouvem todos os outros
POST /ari/channels/{id}/continue?extension=101deixa 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=NAMEtoca 101; atendido, ele entra no aplicativo
GET /ari/applicationsos aplicativos, se um programa está conectado e seus canais
POST /ari/channels/{id}/mute?direction=in, DELETE .../mutesilencia o que o chamador diz (in), o que ele ouve (out) ou ambos
POST/DELETE /ari/channels/{id}/hold, .../moh, POST .../silencemúsica de espera para o chamador (ChannelHold, ChannelUnhold), ou silêncio
GET/POST /ari/channels/{id}/variablesvárias variáveis de uma vez (ChannelVarset)
POST /ari/channels/{id}/move?app=otherpassa o canal para outro aplicativo (StasisEnd, então StasisStart lá; ApplicationMoveFailed quando nenhum programa o executa)
POST /ari/channels/{id}/snoop?spy=in&app=NAMEum 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 .../dialum 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_statisticspacotes e bytes enviados e recebidos, perda e jitter
POST /ari/playbacks/{id}/control?operation=pausepausa, 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, .../mutecopia uma gravação; pausa ou silencia uma ao vivo
POST /ari/applications/{app}/subscription?eventSource=deviceState:Custom:lamp, PUT .../eventFilterassinaturas (canal:, ponte:, endpoint:PJSIP/100, deviceState:) e filtros de eventos ({"disallowed": [{"type": "ChannelVarset"}]})
GET /ari/deviceStates, PUT /ari/deviceStates/Custom:lamp?deviceState=INUSEestados 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=0contagens de caixa de voz das extensões (100@default), e caixas de correio que um programa mantém por conta própria
GET /ari/soundsos 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=Hium texto na extensão 100 dos telefones
POST /ari/events/user/{name}?application=NAMEum evento de usuário para um aplicativo (ChannelUserevent)
GET /ari/asterisk/ping, GET/POST /ari/asterisk/variable, GET /ari/asterisk/modulesping, 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:

CampoO que é
Nome do scriptcomo os destinos o nomeiam
Endereçoum 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
Argumentospassados como agi_arg_1, agi_arg_2 …
Número para discaropcional: extensões discam como qualquer número
Fallbackpara onde a chamada vai quando o script termina sem escolher um número, ou não pode ser alcançado
Execução mais longaum script que executa por mais tempo é interrompido (padrão de uma hora)
EAGIpara 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):

ComandosNotas
ANSWER, HANGUP, CHANNEL STATUS, NOOP, VERBOSEHANGUP com apenas um nome de canal termina a chamada do próprio script
STREAM FILE, CONTROL STREAM FILE, GET OPTION, GET DATA, WAIT FOR DIGITteclas 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 DATETIMEcom 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 FILEs=N silêncio, um beep, teclas de escape; o arquivo fica na biblioteca de sons
SET VARIABLE, GET VARIABLE, GET FULL VARIABLECALLERID(num), CALLERID(name), EXTEN, UNIQUEID, CHANNEL … e expressões ${NAME}
DATABASE GET, PUT, DEL, DELTREEbanco 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 MUSICSET EXTENSION é para onde a chamada vai quando o script termina
SPEECH CREATE … SPEECH RECOGNIZEusa 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
EXECAnswer, 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.

Capítulo 71

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):

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):

Ação (com Permitir que os assistentes ajam e um token que pode alterar coisas):

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

Capítulo 72

Arquivo

Na interface web: /archive

O 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á.

BitVoiceevery 10 minCall recordingsVoicemailConfigurationonce a dayS3 bucket or Azure containerOnly what is new or changed is copied; nothing is deleted from the archive.
Figura 56. The archive: copies kept somewhere else

Configurando

  1. Em Arquivo (capítulo 72), escolha Onde arquivar: Amazon S3 ou Azure.
  2. 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.
  3. Para Azure: uma URL de contêiner SAS com permissão de gravação e uma Pasta no contêiner opcional.
  4. 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.

Capítulo 73

Retenções legais

Na interface web: /holds

Uma 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.

Call recordsrecordings, voicemailUnder a hold?numbers and dates it namesKept, cannot be deletedRetention as setReleasing a hold returns what it kept to the retention settings.
Figura 57. A legal hold: kept, whatever the retention says

Adicionar uma retenção

Em Retenções legais (capítulo 73), pressione Adicionar:

CampoO que é
Nomeo que o assunto é chamado
Motivopor que, para o registro
Númerosas 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

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.

Capítulo 74

Métricas: Prometheus, OpenTelemetry, Grafana, SNMP e registros de chamadas

Na interface web: /settings

Prometheus 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:

BitVoicePrometheusscrapes /metricsOpenTelemetrypushed each minuteGrafanathe ready-made dashboardCalls, phones, trunks, queues, packets lost, quality scores, callbacks.
Figura 58. Metrics: Prometheus pulls, OpenTelemetry is pushed
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:

Enviar um registro de teste tenta o servidor de syslog e o banco de dados com as configurações salvas.

Capítulo 75

Gerador de chamadas

Na interface web: /loadtest

O 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.

Call generatorso many a secondBitVoiceA number insidenever a trunkAnswered / failedAnswer timeAudio lost, scoreIt never calls trunks or emergency numbers.
Figura 59. The call generator: real calls, real audio, measured

Executar um teste

DefiniçãoO que é
Número para ligarum número dentro do BitVoice: uma extensão, um grupo, uma fila, um menu
Chamadas vêm deo número do chamador que as chamadas exibem
Atender comouma 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)
Chamadasquantas no total
De uma vezo 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 segundoquão rápido elas começam
Cada duração (s)quanto tempo cada conversa dura

Ler os resultados

ResultadoO que indica
Atendido, Falhoue Por que as chamadas falharam, por motivo
Tempo de atendimento, mediana e 95%quanto tempo os chamadores esperaram
Áudio perdidoa parcela de pacotes de som que nunca chegaram
Pontuação de áudiouma estimativa do som (MOS): 4 ou mais é bom, abaixo de 3,6 é ruim
Jitter, 95% das chamadasquã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 chamadaa 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 longaquã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 tempoum gráfico da carga
Capítulo 76

Rastreamento de SIP

Na interface web: /trace

O 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á.

Phone 100BitVoiceProviderINVITE 2125550199100 TryingINVITE +12125550199180 Ringing180 Ringing200 OK200 OKACKBYEBYE
Figura 60. A SIP trace: the messages of one call, in order

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 nadao telefone não tem a senha, ou tem a senha errada
REGISTER respondido 403o endereço está banido, ou o telefone faz login como outra extensão
INVITE respondido 404nenhuma rota corresponde ao número discado (Roteamento de chamadas (capítulo 8))
INVITE respondido 403 pelo provedoro provedor recusa o ID do chamador ou o número
486o outro lado está ocupado
488os dois lados não têm codec em comum (Codecs (capítulo 66))
200 OK, então BYE após cerca de 30 segundoso ACK nunca chegou: um roteador no meio reescreve ou dropa mensagens (desative o "SIP ALG" dele)
Uma chamada se conecta, mas ninguém ouve nadao som está bloqueado: verifique o endereço público em Configurações, e as portas de mídia no firewall
Parte 6

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.

Capítulo 77

Chamadas de 911 (o perfil de 911)

Na interface web: /psap

O 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.

ESInetBCFchecks the source911 queueby priorityCall-taker positionlocation on the map, callback number,additional data, rebid, transferCAD: ALI spill, EIDONENA i3 logevery event
Figura 61. The 911 profile: an NG911 call reaches a call-taker

Configuração.

  1. Em Troncos (capítulo 7), adicione o tronco do seu provedor ESInet (ou o ESRP do núcleo NG911) e ative Do ESInet.
  2. Em Encaminhamento de chamadas (capítulo 8), envie as chamadas para os seus atendentes: uma fila, ou um grupo de chamada.
  3. 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:

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 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 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.

Capítulo 78

Consoles de despacho de rádio

Na interface web: /radio

Os 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.

P25 systemISSI or CSSIRoIP gatewayanalogue channelsEncrypted talkgroupAES-256 keysRadio consolepush to talk (hold space)patch two channelsalert tonesemergency acknowledgeunit-to-unit callsDispatcherbeside the phoneRadio logand CAD events
Figura 62. The radio console: talkgroups beside the phone

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).

Capítulo 79

**Serviços de Núcleo NG911** (ECRF, ESRP, LVF, BCF, LIS, registro)

Na interface web: /core

Para 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.

Incoming 911with locationESRProutes the callECRF (LoST)which PSAP serves here?Policy rulesoverflow, time of dayThe right PSAPLVFvalidates addresses
Figura 63. NG911 Core Services: routing a call by where the caller is

Á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:

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.