Manual de BitVoice

Un sistema de telefonía de código abierto en un solo programa, configurado completamente en la interfaz web: extensiones, colas, salas de conferencia, portal de personal, organizaciones alojadas y seguimiento de laboratorio de seguridad pública.
79 capítulos · 63 figuras · 56 mil palabras · BioDream LLC

Contenido

  1. Parte 1. Empezar
    1. 1. Empezar
    2. 2. Qué tan maduro es cada parte
    3. 3. Extensiones
    4. 4. Conectar teléfonos
    5. 5. Teléfonos Skinny y pasarelas MGCP
    6. 6. Tarjetas de telefonía
    7. 7. Troncales
    8. 8. Enrutamiento de llamadas
    9. 9. Conjuntos de PIN
    10. 10. Búsqueda de ID de llamador
    11. 11. Llamadas de emergencia
    12. 12. Sitios y 911 de oficina
    13. 13. Salud
    14. 14. Configuración
    15. 15. Las pantallas en su idioma
  2. Parte 2. Dónde van las llamadas
    1. 16. Flujo de llamadas
    2. 17. Grupos de timbre
    3. 18. Colas
    4. 19. Discador de salida
    5. 20. Sonidos: prompts, idiomas y música de espera
    6. 21. Menús (autoatendido)
    7. 22. Directorio de marcación por nombre
    8. 23. Marcación (DISA)
    9. 24. Bots de voz (AudioSocket)
    10. 25. Toggles de día/noche
    11. 26. Horarios
    12. 27. Secuencias (JavaScript y Lua)
    13. 28. Recepciónista de inteligencia artificial, triage de correo de voz y preguntas
    14. 29. Buzón de voz
    15. 30. Llamadas de devolución
    16. 31. Enlaces de llamada y llamada desde el sitio web
  3. Parte 3. Llamadas diarias
    1. 32. Códigos de función, reenvío y marcaciones rápidas
    2. 33. El portal de personal
    3. 34. Salas de conferencia
    4. 35. Página y altavoces de sobrecarga
    5. 36. Puestos de trabajo compartidos
    6. 37. Llamadas de hotel y despertador
    7. 38. Contactos en cada teléfono
    8. 39. Calendarios y no molestar
    9. 40. Aplicaciones móviles
    10. 41. Llamadas de video
    11. 42. Fax: envío y recepción, máquinas de fax y teléfonos analógicos
    12. 43. Bandeja de entrada: chat web, WhatsApp y Messenger
    13. 44. Mensajería de texto (SMS)
    14. 45. Transferir informes breves
  4. Parte 4. Clientes y perspicacia
    1. 46. Llamadas en vivo
    2. 47. Historial de llamadas
    3. 48. Línea de tiempo del cliente
    4. 49. CRM: tarjetas de llamadores y registro de llamadas
    5. 50. Perspectiva de llamada para supervisores
    6. 51. Grabación de llamadas y pagos con tarjeta
    7. 52. Consentimiento de grabación
    8. 53. Calidad de la llamada
    9. 54. Costos y presupuestos
    10. 55. Reputación de ID de llamador y llamadas con marca
    11. 56. Protección contra spam y STIR/SHAKEN
  5. Parte 5. Ejecutar BitVoice
    1. 57. Administradores
    2. 58. Inicio de sesión único
    3. 59. Directorio de la empresa (Active Directory y LDAP)
    4. 60. Seguridad
    5. 61. Cambios, copias de seguridad e importación
    6. 62. Actualizaciones
    7. 63. Varios servidores como un sistema de telefonía
    8. 64. Donde se almacenan los datos (SQLite o PostgreSQL)
    9. 65. Hospedaje de otras organizaciones
    10. 66. Codecs y sonido
    11. 67. Microsoft Teams (Enrutamiento directo)
    12. 68. Importar
    13. 69. Configuración como código
    14. 70. Compatibilidad con Asterisk (AMI, ARI y AGI)
    15. 71. Asistentes de IA (MCP)
    16. 72. Archivo
    17. 73. Retenciones legales
    18. 74. Métricas: Prometheus, OpenTelemetry, Grafana, SNMP y registros de llamadas
    19. 75. Generador de llamadas
    20. 76. Rastreo SIP
  6. Parte 6. Seguridad pública: la pista del laboratorio
    1. 77. Llamadas de 911 (el perfil de 911)
    2. 78. Consola de despacho de radio
    3. 79. Servicios básicos del núcleo NG911 (ECRF, ESRP, LVF, BCF, LIS, registro)
Parte 1

Empezar

Desde una instalación nueva hasta un sistema de telefonía funcionando: extensiones, teléfonos, una compañía de teléfonos, dónde van las llamadas, llamadas de emergencia desde sus oficinas y cómo saber que todo está listo.

Capítulo 1

Empezar

En la interfaz web: /

BitVoice es un sistema telefónico completo en un solo programa: el intercambio al que se conectan los teléfonos, los menús y las colas que los llamantes atraviesan, el correo de voz, la grabación, las salas de conferencias, los faxes y las conexiones con las compañías telefónicas. Todo se configura en el navegador, en las pantallas que describe este manual. No hay un archivo de configuración para editar y nada más que 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

Qué necesitas

El primer inicio

Inicie BitVoice y abra la dirección que imprime (en un escritorio se abre el navegador mismo). La interfaz web es HTTPS solo, en esta computadora también. Hasta que instale un certificado propio (Configuración, Certificado), BitVoice utiliza uno que creó mismo, así que el navegador advierte una vez: elija continuar al sitio. El asistente de configuración pregunta cuatro cosas: el nombre y el país de la organización, la contraseña del primer administrador, las primeras extensiones y su compañía telefónica si la tiene. El país establece los números de emergencia, los tonos que escuchan los llamantes y la forma en que se escriben los números de teléfono.

La primera 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. Extensiones: una por persona o escritorio. Cada una tiene un número y una contraseña SIP. Abrir Extensiones (capítulo 3)
  2. Teléfonos: conecte un teléfono de escritorio, un softphone o el teléfono del navegador a cada extensión. Abrir Teléfonos (capítulo 4)
  3. Tronco: su cuenta de la compañía telefónica, para que pueda llamar números externos y ser llamado. Abrir Troncos (capítulo 7)
  4. Enrutamiento de llamadas: a dónde van las llamadas desde afuera (una persona, un grupo de timbre, un menú), y qué tronco utiliza para las llamadas externas. Abrir Enrutamiento de llamadas (capítulo 8)
  5. Salud le dice qué es lo que todavía falta, las llamadas de emergencia primero. Abrir Salud (capítulo 13)

Luego realice una llamada de prueba: desde cualquier teléfono marque *43, la prueba de eco. Escucha su propia voz de regreso, lo que prueba que el sonido funciona en ambos sentidos.

Instalarlo en un solo comando

En un servidor Linux (Ubuntu, Debian, RHEL, Fedora, Alpine con systemd) o una Mac:

curl -fsSL https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.sh | sh

En Windows, en PowerShell:

irm https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.ps1 | iex

Descarga la última versión para la computadora, la verifica contra las sumas SHA-256 de la versión y la firma de lanzamiento de BioDream (con OpenSSL 3, o de lo contrario con ssh-keygen de OpenSSH, que tienen Windows 10 y 11, macOS y Ubuntu 20.04; ssh-keygen verifica lanzamientos desde la v0.1.14), e instala como un servicio que se inicia automáticamente:

Ejecute el mismo comando nuevamente para actualizar (o use Actualizaciones (capítulo 62)). sh -s -- --version v0.1.5 (después de la tubería) selecciona una versión; --uninstall elimina el programa y el servicio, pero mantiene los datos, --purge elimina los datos también. En Windows, guarde el script y ejecute .\install.ps1 -Version v0.1.5, -Uninstall o -Purge, o elimínelo en Aplicaciones instaladas. Para un servidor que se mantiene fuera de internet, copie el archivo y SHA256SUMS de la versión en una carpeta y establezca BITVOICE_FROM en ella.

Donde se ejecuta

BitVoice se ejecuta en Linux, macOS y Windows.

SistemaCómo iniciarloDónde están sus datos
Linux./bitvoice (o el servicio systemd en la versión)~/.config/BitVoice
macOS./bitvoice~/Library/Application Support/BitVoice
Windowshaga doble clic en bitvoice.exe%APPDATA%\BitVoice

En Windows, mantenga la ventana que se abre mientras utiliza BitVoice (cerrarla detiene BitVoice), y cuando Windows pregunte si puede utilizar la red, permita las redes privadas para que los teléfonos puedan conectarse. -data coloca los datos en cualquier otro lugar; -https y -sip eligen las direcciones y puertos; -log FILE también escribe todo lo que imprime en un archivo, para una computadora donde nadie ve su ventana.

Los puertos que utiliza

PuertoPara qué
5060 UDP y TCPSIP: teléfonos y troncales
5061 TCPSIP sobre TLS (señalización cifrada)
4569 UDPTroncales IAX2, solo una vez configurada
1720 TCPTroncales H.323, solo una vez configurada
2000 TCPTeléfonos Skinny (SCCP), solo cuando se activa
2727 UDPPasarelas MGCP, solo cuando se activa
10000–20000 UDPEl sonido de las llamadas (RTP), configurado en Ajustes
8443 TCPEsta interfaz web, solo HTTPS (el HTTP plano se envía a HTTPS)

Si otro sistema de telefonía ya tiene el puerto 5060, BitVoice toma el siguiente puerto libre y Salud lo indica.

Todo en la interfaz web

Cada ajuste tiene una pantalla, y cada pantalla tiene un capítulo aquí. Nada requiere un archivo de configuración, una línea de comandos o una herramienta adicional. Para la automatización, las mismas pantallas son una API REST, y la configuración puede seguir un archivo en Git (Configuración como código (capítulo 69)), pero ninguna de las dos es necesaria.

Para qué es BitVoice

BitVoice es en primer lugar un sistema de telefonía para oficinas y centros de contacto, y un servicio de telefonía alojado para proveedores: todo en las primeras cinco partes de este manual. El perfil de punto de respuesta de emergencia 911, la consola de despacho de radio y los Servicios básicos de NG911 son una pista de laboratorio y diseño separada (Seguridad pública (capítulo 77)): están fuera del menú hasta que se activan en Ajustes, y no están certificados para uso en vivo. Las llamadas de emergencia desde sus propios teléfonos no forman parte de esa pista; funcionan en cualquier sistema de telefonía desde el primer inicio.

Encontrando su camino

Capítulo 2

Qué tan maduro es cada parte

Qué tan lejos cada parte ha sido probada, claramente. Probado en el campo: ejecutado contra sistemas reales a través de una red real (Amazon EC2, Internet, servicios de proveedores reales). Verificado contra una referencia: probado contra una implementación independiente o los datos propios del estándar. Probado con software: solo las pruebas y pruebas del navegador de BitVoice, no con equipo o cuentas reales. Laboratorio: partes de seguridad pública, no certificadas.

ÁreaMadurezLo que se basa
Troncales SIP: registro, llamadas entrantes y salientes, identificador de llamador, ocupado, teclas (RFC 4733)Probado en campoun operador comercial, SIP.US (cuenta de demostración, desde EC2): registro y llamadas salientes a la red telefónica pública a través de UDP y TLS con el certificado del operador verificado; MOS 4.39, sin pérdida. Llamadas entrantes desde la red telefónica pública: T38Fax (llamadas de fax a su número, registro a través de UDP). Asterisk como el operador a través de Internet en EC2; MOS 4.4. Kamailio 5.7 (registro con inicio de sesión con digest a través de TLS, llamadas en ambos sentidos, teclas) y FreeSWITCH 1.11 (TLS y SRTP, llamadas en ambos sentidos, G.722 a G.711) como el extremo lejano; MOS 4.39
Teléfonos de escritorio a través de SIPProbado en campoAsterisk como teléfono de escritorio a través de Internet. No se han probado los teléfonos reales Yealink, Poly o Grandstream
Teléfono del navegador (WebRTC)Probado en campodesde fuera hacia EC2; pruebas de Chromium con sonido en ambos sentidos
Dos servidores, uno PostgreSQL, conmutación por errorProbado en campokill -9 y detención planificada en EC2: la llamada continúa, la línea del proveedor se mueve
Instalación de un solo comandoProbado en campoUbuntu 24.04 (x86, Arm), Debian 12, Amazon Linux 2023, Windows Server 2022, Windows 11 (como administrador y no, en PowerShell 5.1 y 7), Ubuntu 20.04 y Fedora 42 en contenedores, macOS 26 en Apple Silicon (para una persona, y con sudo para todo el Mac en CI); vuelve después de un reinicio
CapacidadProbado en campo2.000 llamadas al mismo tiempo, sin pérdida, MOS 4.41, en un c7i.4xlarge de 16 vCPUs (alrededor de 10 vCPUs ocupados); 200 al mismo tiempo en c7g.large, c7i.large, t4g.small, un M4 y el Lightsail nano. A 2.000: jitter de 4,0 ms para el 95% de las llamadas, brecha más larga entre paquetes de 74 ms, pausa de recolección de basura más larga de 4,2 ms
Migración de FreePBX (Importación)Probado en campouna copia de seguridad real de FreePBX 17.0.33 (70 MB) importada completa; otros desde los propios formatos de FreePBX
Transcripciones y resúmenes de IA, recepcionistaProbado en campoun modelo real a través de OpenRouter
Hechos y resúmenes sin modelo de lenguajeProbado en softwarellamadas de emergencia inventadas solo: 23 de 43 hechos (53%) en el conjunto sellado, 3 hechos que nadie esperaba; 41/41 de entrenamiento, retención 27/40 en frío. Nunca se ha medido en llamadas reales.
Reconocimiento de voz en este servidor (whisper)Probado en campo en macOS y Linuxwhisper-server 1.9.5 ejecutado por BitVoice: en un Mac, y en Ubuntu en EC2 (x86-64), donde escribió las transcripciones de llamadas y correo de voz en vivo en la prueba de campo de la aplicación telefónica; descargas para cada plataforma construidas y probadas en CI
Archivo en S3, secretos desde AWS Secrets ManagerProbado en campoAWS real, nuestro propio SigV4
Monitoreo y trampas SNMPProbado en camponet-snmp's snmpwalk y snmptrapd
Let's EncryptProbado en campoemite y renueva el certificado de la demostración pública
Imágenes de máquina (AWS) y configuración como códigoProbado en campouna imagen de EC2 construida por deploy/cloud/build-images.sh desde Ubuntu 24.04: cada servidor desde ella comienza nuevo; deploy/terraform con OpenTofu 1.13 (crear, cambiar, sin deriva, destruir). No se han probado las imágenes de Azure
Troncales IAX2Verificado contra una referenciaAsterisk 23
ICE completo detrás de NAT (cliente STUN y TURN)Verificado contra una referenciaagente ICE de Chromium (candidatos de host y relé), teléfonos softphones JsSIP con la oferta de BitVoice, coturn 4.18 y el propio servidor TURN de BitVoice como relés, nombres de host mDNS de Chromium resueltos. No se ha probado desde un servidor detrás de un enrutador NAT real
Reinicio de ICE (un teléfono que cambia de red en medio de una llamada)Verificado contra una referenciaChromium reiniciando ICE en una llamada de teléfono del navegador (BitVoice como ICE-lite y como agente completo) y SIP.js 0.21 reiniciando por re-INVITE sobre SIP sobre WebSocket: nuevos credenciales en ambos sentidos, un nuevo par de candidatos, sonido cada medio segundo a través del reinicio. No se ha probado en un teléfono que realmente se mueve de Wi-Fi a una red móvil
Historial de SIP y Diversion (llamadas reenviadas)Verificado contra una referenciaAsterisk 20's PJSIP en ambos sentidos: sus llamadas reenviadas leídas por BitVoice, y las reenviadas de BitVoice leídas por Asterisk's REDIRECTING() desde History-Info solo y desde Diversion solo; entradas de RFC 7044 mantenidas y extendidas en un reenvío. No se ha probado con un operador o Teams que las envíe
Directorio de la empresa (LDAP, Active Directory)Verificado contra una referenciaOpenLDAP 2.4 (StartTLS y LDAPS, 1.203 personas leídas a través de la paginación más allá de su límite de 1.000, grupos, inicio de sesión) y Samba 4's Active Directory (LDAPS, paginación más allá de 1.000, cuentas deshabilitadas excluidas, grupos anidados para grupos de timbre y roles). No se ha probado contra el controlador de dominio de Windows Server de Microsoft
ARI (Interfaz de REST de Asterisk)Verificado contra una referenciacada operación de Asterisk's publicado ARI llamado y su respuesta verificada contra los campos requeridos del modelo; ari-client 2.2.0, biblioteca de JavaScript de Asterisk, leyendo /ari/api-docs y ejecutando una aplicación
Salas de video de todos (SFU, simulcast) y compartición de pantallaVerificado contra una referenciaTres navegadores de Chromium en una sala, cada uno enviando tres tamaños (simulcast de VP8) y recibiendo los otros dos; tamaños cambiados en los fotogramas clave a medida que los mosaicos crecen y disminuyen. Cámaras y una pantalla compartida (captura de pantalla de Chromium) en una sala H.264. No se ha probado con Firefox o Safari, a través de Internet, o con más de tres cámaras; el simulcast de H.264 selecciona capas según el orden del navegador solo.
AGI y FastAGI (Interfaz de puerta de enlace de Asterisk)Verificado contra una referenciacada comando's respuesta comparada con Asterisk 20.6's sobre FastAGI; un servidor FastAGI escrito con pyst2 ejecutando una llamada; audio EAGI a un programa. No se ha probado con un IVR de producción
Asistentes de IA a través de MCPVerificado contra una referenciael SDK oficial de MCP TypeScript (1.32.2) como cliente: herramientas enumeradas y llamadas con un token de API sobre HTTP transmisible (protocolo 2025-11-25), y su inicio de sesión de OAuth de extremo a extremo (descubrimiento, registro, PKCE, token, actualización); la página de consentimiento en Chromium; el puente de E/S estándar contra un servidor de prueba. No se ha probado con Claude, ChatGPT o otro asistente, que necesita un servidor accesible desde Internet con un certificado de confianza.
Microsoft 365 y Google Workspace (contactos y calendarios)Probado en softwarecontra sustitutos de Microsoft Graph (usuarios, contactos de la organización, calendario getSchedule, token de credenciales de cliente) y de la API de personas de Google, Calendar freeBusy y token JWT-portador, escritos a partir de sus especificaciones publicadas; los sustitutos verifican lo que BitVoice envía (la firma y las reclamaciones de JWT, paginación, cuerpos de solicitud). No se ha probado con un inquilino real de Microsoft 365 o un dominio de Google Workspace.
Las pantallas en 14 idiomasProbado en softwarecada pieza de texto que las pantallas muestran (alrededor de 5.000, del código: texto JSX, cadenas y mensajes del servidor) traducido automáticamente por Llama 3.3 70B a 13 idiomas, el 99% mantenido por las verificaciones (los mismos marcadores de posición, direcciones y códigos intactos); alemán dibujado a través de las pruebas del navegador (inicio de sesión, menú, búsqueda, un formulario, regreso al inglés). No revisado por una persona en ningún idioma.
Troncales H.323Verificado contra una referenciaH323Plus 1.28 (su simph323 reproduciendo y grabando archivos WAV) en EC2: llamadas en ambos sentidos con Conexión rápida y G.711, cada extremo escuchando el tono del otro, MOS 4.39; configuración de llamada también con chan_ooh323 de Asterisk (cuyo propio sonido está roto en Asterisk 22)
SIP sobre WebSocketVerificado contra una referenciaJsSIP y SIP.js
Códecs: GSM, G.726, iLBC, música de espera MP3Verificado contra una referenciaffmpeg, el programa de referencia RFC 3951 y minimp3, muestra para muestra
Códecs: G.711, G.722, G.729, Opus, SpeexVerificado contra una referenciaG.711 y G.722 byte por byte y muestra por muestra con spandsp; G.729's decodificador muestra por muestra en todos los siete vectores de prueba del Anexo A de la ITU (bcg729 no lo es), su codificador interfuncionando con bcg729 al mismo nivel de calidad (G.729 no requiere que los codificadores coincidan); paquetes Opus decodificados por libopus 1.6.1 y paquetes libopus decodificados como libopus lo hace; paquetes Speex y sonido idénticos a libspeex 1.2.1; llamadas Opus con la aplicación de Android
Códecs: AMR-NB, AMR-WBVerificado contra una referencia, con una brecha conocidaAMR-WB decodifica como opencore-amr muestra por muestra, y en las secuencias de prueba TS 26.174 de 3GPP coincide exactamente con el decodificador de 3GPP en 167 de 198 y nunca está por debajo de él de manera medible; el codificador AMR-NB cuadro por cuadro con opencore-amr, pero su decodificador está cerca, no exacto (alrededor de 31 dB desde opencore). Ambos provienen de las bibliotecas goamr ancladas
Códecs transportados sin cambios: G.722.1 (Siren 7), G.722.1C (Siren 14), G.719, Codec2Probado en softwarepruebas propias: ofrecidos con su tasa de bits o modo, respondidos, paquetes en ambos sentidos byte por byte; no convertidos (no hay código de referencia gratuito que BitVoice pueda enviar para G.722.1 y G.719). No se ha probado con un sistema de sala real Polycom
ISDN PRI y BRI, T1/E1Verificado contra una referencialibpri (Asterisk's), ambos lados; y en EC2 a través del controlador de kernel DAHDI 3.4 real (dos spans conectados en el kernel, chan_dahdi de Asterisk 20 como la compañía telefónica): llamadas en ambos sentidos con números y nombres, todos los 23 canales al mismo tiempo, MOS 4.39. No se ha probado con una tarjeta o línea física
MFC-R2, E&MVerificado contra una referenciaOpenR2; tonos MF por nuestras propias pruebas. No se ha probado con una tarjeta o línea real
SS7 (ISUP, MTP, conjuntos de enlaces de varios enlaces con cambio)Verificado contra una referencialibss7 (biblioteca chan_dahdi de Asterisk), ITU y ANSI. No se ha probado con un enlace de operador real
Fax (T.30, T.38)Probado en campoun portador de fax, T38Fax (prueba gratuita, desde EC2): BitVoice enviando un fax a través de la red telefónica pública a su propio número y recibiendo, ambos sobre T.38 (2 páginas, 14.400 bit/s, las páginas llegaron intactas; registro con nombre de usuario y contraseña); y pasando un fax entre una máquina de fax en un gateway (Asterisk con spandsp, haciendo de una) y T38Fax, hacia afuera y hacia adentro, 2 páginas a 14.400 bit/s en ambos sentidos: una vez todo en G.711 (el gateway rechazando T.38) y una vez cambiado a T.38 en ambos lados. spandsp (a través de Asterisk 20) en EC2: recibiendo y enviando sobre T.38 con corrección de errores, y pasando faxes entre dos máquinas más a través de T.38 y G.711. No se ha probado con una puerta de enlace de fax de hardware
Provisioning: Yealink, Poly, Grandstream, Snom, Fanvil, Cisco, Mitel, Sangoma, Algo, CyberDataProbado en softwarelos formatos documentados de los proveedores; no en teléfonos reales
Teléfonos Skinny (SCCP) y gateways MGCPVerificado contra una referenciaSkinny: teléfonos de la biblioteca de código abierto mwicat/sccp, cada mensaje leído por el disector de Wireshark, tamaños como chan_skinny de Asterisk; MGCP: gateway MGCP de Yate (reiniciar, respuestas provisionales, acuse de recibo; no tiene puertos analógicos, por lo que no hay llamada). No se ha probado con hardware de teléfono o gateway de Cisco
Enrutamiento directo de Microsoft TeamsProbado en softwarecontra un proxy de Microsoft simulado que sigue las reglas de SIP de Enrutamiento directo publicadas por Microsoft (OPCIONES, Contacto, usuario=teléfono, certificado de cliente, transferencias que Teams solicita mediante REFER con x-m y x-t); no se ha probado con un inquilino de Teams: Microsoft no ofrece ninguno de forma gratuita (licencias de Teams Phone)
Hotel (FIAS)Verificado contra una referenciacada registro que BitVoice envía verificado contra la especificación FIAS 2.20.23 publicada por Oracle (inicio de enlace, registros de enlace, publicaciones, respuestas de despertar); pruebas propias. No se ha probado contra Opera misma
Mensajería de texto, WhatsApp, Messenger, chat webVerificado contra una referencia (Twilio, Telnyx, Bandwidth, Vonage, TextMagic, WhatsApp)mensajes de texto a través de Twilio, Telnyx, Bandwidth, Vonage y TextMagic, y mensajes de texto, plantillas y listas de plantillas de WhatsApp, contra simulacros construidos a partir de las especificaciones de OpenAPI publicadas por los proveedores (Stoplight Prism, rechazando cualquier cosa que la especificación no permita; la de TextMagic es la que se genera su propio cliente). La de Vonage mostró que la clave pertenece a HTTP Basic, no más en el formulario. SignalWire habla la API de Twilio; Plivo, Flowroute, VoIP.ms y Messenger publican ninguna especificación y se verifican contra sustitutos escritos a partir de su documentación. No se ha probado con una cuenta en vivo
Tarjetas de llamadas de CRM, Azure Blob, Azure Key VaultVerificado contra una referenciaEspoCRM (un CRM de código abierto real, en Docker) para tarjetas de llamadas; emulador de Azurite de Microsoft para cargas de Blob (SAS de contenedor, negaciones); Lowkey Vault para Key Vault con una identidad administrada. No se ha probado contra Azure mismo o un CRM alojado
Detección de spam: prueba de robot, llamantes desconocidos, base de datos de spam, *32, sugerenciasProbado en softwarepruebas propias de BitVoice: un proveedor que llama a través de SIP y presiona teclas (RFC 4733) en la prueba de robot, pasando y fallando; llamantes conocidos, siempre permitidos y de llamada de emergencia que suenan al mismo tiempo; la base de datos de spam contra un sustituto que responde como Twilio documenta su Lookup con el complemento Nomorobo (no se ha probado una cuenta de Twilio); *32 desde un teléfono de escritorio; sugerencias desde registros de llamadas; la configuración a través de las pruebas del navegador. No se ha probado contra llamadas robóticas reales o una base de datos pagada
Aplicaciones de iPhone y AndroidProbado en campo (Android)Android: un Google Pixel 8 (Android 16, Wi-Fi) con la compilación de lanzamiento firmada contra BitVoice en EC2 con un certificado Let's Encrypt: emparejado por enlace, sonó con la notificación de llamada de Android, respondido desde ella, audio en ambos sentidos, mantuvo la conexión con la pantalla apagada y en segundo plano (notificación de llamada en curso, Hang up); sin empuje no suena en segundo plano. Un Google Pixel 11 (Android 17) en AWS Device Farm: emparejado, sonó, respondido, llamó; Opus, MOS 4.1. iPhone: la aplicación (SwiftUI, CallKit, PushKit VoIP) se compila contra el SDK actual (Xcode 27) y el servidor firma las notificaciones de VoIP de Apple (APNs, ES256); las mismas correcciones de dispositivo real que Android y una lista de App Store (ios/AppStore) están incluidas. Ambas aplicaciones son una extensión completa: transferencia (ciega, sobre REFER), retención y una segunda llamada, teclado y silencio, con Recientes, correo de voz visual, una lámpara de ocupado de equipo, Contactos, el Chat de personal (colegas con presencia, mensajes directos y salas, con una notificación en segundo plano y un empuje cuando la aplicación está cerrada), un selector de sala de video (listas las salas SFU con quién está en cada una, se une como la extensión, mostrado como una llamada de video en la pantalla de llamada) y una transcripción de IA en vivo en la llamada (AI.LiveCallTranscripts); transferencia, retención, la transcripción en vivo, el chat que alcanza a un colega, la lista de salas, una sala unida por un teléfono y el empuje del chat dan forma a cada uno cubierto por una prueba de nivel de motor, API o navegador. En el Pixel 8 (2026-10-30, compilación de depuración, EC2 con Let's Encrypt): sonó y respondido desde la notificación, retenido y reanudado (el estado de llamada de Android sigue), llamó desde el sistema de llamadas de Android, Opus en ambos sentidos con MOS 4.38 y sin pérdida; se unió a una sala de video con su cámara (solicitada en el primer uso) y vio una cámara de escritorio, ambos en vivo; un mensaje de chat en segundo plano notificó y abrió Chat. La retención y la transferencia llegan a la pantalla de llamada nativa (CallKit, Telecom). No se ha ejecutado en un iPhone o enviado: el empuje, la pantalla de llamada del sistema y la firma necesitan nuestra propia cuenta de desarrollador de Apple
Perfil de 911, consola de radio, Servicios básicos de NG911, video del llamanteLaboratorioesquemas y datos de muestra de NENA, Wireshark, spandsp, OpenSSL, ExifTool, ffmpeg, una captura de NIST P25 (sus marcos de voz IMBE desempacados como mbelib desempaca: misma altura, armónicos, voz y amplitudes); nunca en un ESInet, sistema P25 o PSAP CAD en vivo, y no certificado
Voz de tasa completa de P25 Fase 2 (AMBE+2)No ofrecidopatentado hasta 2028
Firmas Ed448 (NENA)No ofrecidono está en la biblioteca estándar de Go, y BitVoice no escribe criptografía propia; se utiliza Ed25519
Transferencia de señal de SS7 (STP), SCCP y TCAPVerificado contra una referenciaOsmoSTP 2.3.0 sobre M3UA/TCP con libosmo-sigtran's SCCP detrás de él: UDT y XUDT en ambos sentidos, UDTS devueltos, traducción de título global a través de STP, un conmutador en un conjunto de enlaces que alcanza el eco a través de IP; TCAP contra libosmo-asn1-tcap en ambos sentidos. Solo ITU; no SCTP, SCCP orientado a conexión o administración de SCCP; no se ha probado con un operador real
Variante MFC-R2 de China (China N.º 1)Probado en softwarecada señal de una llamada verificada contra las tablas y secuencias de llamadas publicadas por Cisco para China (KA, KD, Grupo B por el KD enviado, C y D bits 11). La variante de China de OpenR2 no coincide con ella misma, por lo que no hay programa para probar contra; no se ha probado con una línea real
ALI sobre PAM o E2No ofrecidoPAM es el protocolo propio de Intrado con ninguna especificación publicada; E2 (J-STD-036, NENA 05-001) se ejecuta entre un centro de posicionamiento móvil y la base de datos ALI, no a un PSAP. BitVoice habla los enlaces de solicitud y texto ALI y HELD en su lugar
Capítulo 3

Extensiones

En la interfaz web: /extensions

Una extensión es un número para una persona o un escritorio. Los teléfonos se conectan con el número de extensión y su contraseña SIP; las llamadas al número suenan en todos los teléfonos conectados como ella, al mismo tiempo.

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

Agregar una extensión

  1. Abra Extensiones (capítulo 3) y presione Agregar extensión. El próximo número libre y una contraseña SIP segura se rellenan.
  2. Introduzca el nombre de la persona (que se muestra en otros teléfonos cuando llama) y su correo electrónico (para correo de voz).
  3. Rellene la ubicación 911: el sitio, piso y habitación. Se envía con llamadas de emergencia.
  4. Elija qué sucede Si nadie responde: correo de voz por defecto, o otra extensión, un grupo o un menú.
  5. Guarde. La extensión puede conectarse al instante.

Los campos

CampoQué hace
Número2 a 8 dígitos; ningún otro número de extensión, grupo, cola, habitación o código de función puede tenerlo
Contraseña SIPcon qué el teléfono se conecta; al menos 12 caracteres; Generar crea una nueva
Sonar durantesegundos antes de que suceda Si nadie responde (25 por defecto)
ID de llamador externoel número que se muestra en las llamadas salientes; vacío utiliza el del tronco
Puede llamar números externosdesactivado mantiene el teléfono en llamadas internas y números de emergencia
Grabar llamadascuando Configuración graba solo extensiones seleccionadas
Escritorio compartidoun teléfono compartido que se convierte en quien se conecta a él
Cifrar llamadas a este teléfonocifrado de medios (SRTP); úselo con TLS para que las claves permanezcan privadas
Departamentoagrupa los costos de llamadas de esta extensión

Seguimiento, recogida y altavoz

El manejo de llamadas de cada persona está en su propia casilla en la extensión:

Reenvío en este momento

Debajo de la configuración, Reenvío en este momento muestra y cambia lo que la persona configuró desde su teléfono o el portal de personal: no molestar, y reenvío de cada llamada, de llamadas mientras está ocupado, y de llamadas no respondidas. Estos son estado en vivo, no configuración: cambiarlos no crea una revisión.

Qué está conectado

Dispositivos conectados

Una extensión que está abierta muestra cada dispositivo conectado a ella: la marca y modelo del teléfono, cómo se conecta (UDP, TCP, TLS o el navegador) y desde cuándo. La dirección y el puerto para dar a un teléfono se muestran allí también.

Capítulo 4

Conectar teléfonos

En la interfaz web: /phones

Cualquier teléfono o aplicación SIP funciona: apúntelo a la dirección y el puerto 5060 de este servidor, con el número de extensión como usuario y su contraseña SIP. Los teléfonos de escritorio de los cuatro grandes fabricantes se configuran automáticamente en su lugar, para que nadie escriba una contraseña en el teclado del teléfono.

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

Configuración automática (aprovisionamiento)

  1. En Teléfonos (capítulo 4) pulse Agregar teléfono e ingrese la dirección MAC del teléfono (en una etiqueta debajo) y la *extensión* a la que pertenece.
  2. Elija la marca: Yealink, Poly, Grandstream (incluidos los adaptadores analógicos HT), Snom, Fanvil, Cisco, Mitel, Sangoma, Algo o CyberData.
  3. Indíquele al teléfono dónde está BitVoice: en su servidor DHCP, establezca la opción 66 en la dirección de aprovisionamiento que se muestra en la pantalla, para que cada teléfono en la red lo encuentre automáticamente; o escriba la misma dirección en la página web propia del teléfono, bajo aprovisionamiento automático.
  4. Reinicie el teléfono. Este obtiene su archivo a través de HTTPS, se conecta y sus teclas de línea muestran quién está en el teléfono.

HTTPS o HTTP plano. Los teléfonos obtienen su archivo sobre HTTPS cuando pueden. Algunos teléfonos más antiguos no pueden usar HTTPS en absoluto, y muchos no confían en el certificado que BitVoice creó por sí mismo; para esos, la pantalla también muestra una dirección http:// simple en el mismo puerto. El HTTP plano solo es para estos archivos: cada otra página sigue yendo a HTTPS. Sobre HTTP plano, la contraseña SIP del teléfono cruza la red sin cifrar, así que límitelo a una red de oficina de confianza, o instale un certificado de una autoridad y active HTTPS solo para teléfonos.

El archivo lleva la extensión, su contraseña, la zona horaria, los codecs, las teclas de lámpara ocupada y la dirección de este servidor. El aprovisionamiento está protegido por un nombre de usuario y una contraseña que se les da a los teléfonos una vez.

FabricanteModelos probadosLo que obtiene
YealinkT3x, T4x, T5xcuenta, teclas BLF, hora, codecs
PolyVVX, Edge Elo mismo, en el formato propio de Poly
GrandstreamGRP, GXP, HT802/814cuenta por puerto en adaptadores
SnomD7xxcuenta, teclas, hora

Estos fabricantes también se aprovisionan, con archivos escritos desde el formato documentado de cada fabricante pero no se han probado en sus dispositivos (la pantalla Teléfonos los marca como no probados):

MarcaModelosArchivo que solicita el dispositivo
FanvilSeries X y Vsu dirección MAC .cfg
Cisco6800, 7800, 8800 multiplataforma (3PCC), adaptadores SPAsu dirección MAC .xml (el firmware empresarial necesita el firmware multiplataforma primero)
Mitel (Aastra)6800, 6900 SIPsu dirección MAC .cfg, en mayúsculas
SangomaSerie Sel archivo en formato Fanvil
Algoaltavoces de paginación, luces estroboscópicas, adaptadoresalgop y su dirección MAC .conf
CyberDataaltavoces, intercomunicadores, adaptadores de paginaciónsu dirección MAC .xml

Cada uno obtiene su cuenta, el servidor (y el servidor de respaldo, con varios servidores), el transporte y la cifrado, y el número de correo de voz donde lo tiene. Establezca las extensiones de los altavoces Algo y CyberData en Altavoz de sobrecarga para que las llamadas a ellos sean respondidas de inmediato.

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

El teléfono del navegador

El icono del teléfono en la parte inferior de cada pantalla convierte este navegador en un teléfono para una extensión, con su micrófono y altavoces. Utiliza WebRTC: el sonido está cifrado de extremo a extremo, y funciona a través de la mayoría de los firewalls sin ninguna configuración.

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.

El WebSocket no necesita su propia autenticación: el teléfono soft se autentica con SIP, y los intentos de autenticación fallidos y las solicitudes excesivas se cuentan para su propia dirección, al igual que cualquier teléfono. Una página de teléfono soft servida desde otro sitio debe confiar en el certificado de este servidor (use Let's Encrypt), y Chrome actual solicita al usuario antes de que una página web pública pueda llegar a un servidor en la red local.

Probado con dos bibliotecas independientes, JsSIP 3.13 y SIP.js 0.21: dos teléfonos soft de cada uno se registran, se llaman entre sí y se escuchan entre sí a través de BitVoice. Otros teléfonos soft (cliente web de Linphone, Zoiper) hablan el mismo protocolo pero no han sido probados.

TURN, para redes que bloquean UDP

Algunas redes (hoteles, Wi-Fi para invitados, firewalls de empresa estrictos) no permiten UDP o esconden computadoras detrás de NAT que WebRTC no puede atravesar. Para ellas, active el servidor TURN en Configuración (capítulo 14): BitVoice ejecuta entonces su propio servidor TURN (RFC 8656) en el puerto 3478 (UDP y TCP) y, con el certificado de este servidor, en el puerto 5349 sobre TLS. Los teléfonos del navegador, el teléfono del personal y los enlaces de llamada reciben credenciales de corta duración para él, y lo utilizan cuando no pueden llegar a los puertos de medios directamente; el sonido sigue estando cifrado de extremo a extremo, y BitVoice solo lo retransmite a sus propias direcciones, por lo que nadie puede utilizarlo para llegar a nada más.

Abra el puerto TURN, el puerto TLS y los puertos de retransmisión (49152 a 49407 a menos que los cambie) en el firewall. TURN sobre TLS necesita un certificado que los navegadores confíen para el nombre que utilizan, como uno de Let's Encrypt (capítulo 14): hasta que haya uno, BitVoice no lo ofrece a los navegadores (intentarán y fallarán), y lo ofrece tan pronto como llega el certificado; establezca su puerto en 443 en un servidor con una dirección de repuesto para atravesar firewalls que solo permiten HTTPS.

Cambio de red durante una llamada

Un teléfono que se mueve a otra red durante una llamada (fuera de la Wi-Fi de la oficina hacia una red móvil, o un portátil de una Wi-Fi a otra) obtiene una nueva dirección, y el camino antiguo deja de transportar sonido. Los teléfonos del navegador y las aplicaciones de BitVoice lo notan automáticamente: cuando el navegador indica que su red ha cambiado, o el camino de la llamada deja de responder durante dos segundos, el teléfono reinicia ICE (RFC 8445 9). Ofrece nuevos credenciales ICE para la llamada que tiene, BitVoice responde con nuevos credenciales propios y verifica el nuevo camino, y la llamada se mueve a él sin necesidad de volver a marcar. El cifrado continúa con las mismas claves. Mientras sucede, la llamada muestra Reconectando...; en un camino que todavía funciona, no hay brecha, ya que el camino antiguo transporta la llamada hasta que el sonido llega al nuevo. Los teléfonos SIP sobre WebSocket (JsSIP, SIP.js) hacen lo mismo mediante re-INVITE con nuevos credenciales ICE. No es necesario activar nada, con BitVoice como ICE-lite o detrás de NAT.

BitVoice detrás de NAT

El servidor TURN anterior ayuda a los navegadores en redes estrictas a llegar a un BitVoice que tiene una dirección pública. Cuando BitVoice no tiene ninguna (en una oficina detrás de un router sin reenvío de puertos, o en una red en la nube sin una dirección pública en la máquina), active Este servidor está detrás de NAT en BitVoice detrás de NAT en Configuración (capítulo 14). BitVoice entonces participa completamente en ICE (RFC 8445) en lugar de responder en una dirección (ICE-lite):

El teléfono del personal

Abra #/phone en cualquier navegador de computadora o móvil: las personas se conectan con su extensión y contraseña SIP, sin una cuenta de administrador. Es un teléfono completo: marcar, responder, mantener y transferir, y el teclado. Para su propio reenvío y correo de voz, utilizan el portal del personal en #/me (ver El portal del personal (capítulo 33)).

Las aplicaciones móviles

Las aplicaciones de BitVoice para iPhone y Android se emparejan desde la página de la extensión con un código QR. Las llamadas despiertan la aplicación a través de los servicios de push de Apple y Google, por lo que suena incluso cuando está cerrada (una vez configurado el push; véase a continuación).

Capítulo 5

Teléfonos Skinny y pasarelas MGCP

En la interfaz web: /desk-phones

Los teléfonos y pasarelas que no hablan SIP aún pueden usarse. Teléfonos Skinny y pasarelas MGCP (bajo Llamadas) toma dos protocolos más antiguos:

Cada teléfono Skinny o línea MGCP es un dispositivo más de su extensión: suena con los demás teléfonos de la extensión, llama saliente como la extensión, y se muestra en los dispositivos de la extensión. La página muestra el estado de cada uno.

Qué funciona

La espera, transferencia y conferencia se realizan desde los otros teléfonos de la extensión por ahora, y la segunda línea de un teléfono Skinny no se utiliza.

Seguridad

Ninguno de los protocolos tiene contraseñas. Los teléfonos Skinny solo se aceptan desde la red local y solo cuando están enlistados; los comandos MGCP solo se obedecen desde la dirección de la pasarela (o, sin una, desde la red local). Mantenga ambos puertos fuera de Internet.

Una puerta de enlace que aún está trabajando en un comando puede responder primero "100 Trying": BitVoice entonces espera más tiempo antes de enviar el comando nuevamente y reconoce la respuesta final (000), como pide el RFC 3435. Un puerto que la puerta de enlace no vigilará muestra el rechazo propio de la puerta de enlace en la página, como la puerta de enlace se negó a vigilar el puerto: 507 Funcionalidad no soportada de una puerta de enlace de medios sin puertos analógicos.

Cómo se prueban

Capítulo 6

Tarjetas de telefonía

En la interfaz web: /cards

Una tarjeta de telefonía en la computadora de BitVoice (Digium, Sangoma, OpenVox y otras tarjetas con controladores DAHDI de Linux) puede transportar teléfonos analógicos y líneas de la compañía de teléfonos. Un programa separado, bitvoice-dahdi, conduce la tarjeta y une sus puertos a BitVoice a través de la conexión de red de la propia computadora, así que BitVoice en sí mismo nunca toca el controlador del kernel y un problema de la tarjeta no puede detener el sistema de teléfonos.

Configuración

  1. Instale los controladores DAHDI y configure los puertos como de costumbre en /etc/dahdi/system.conf (fxoks=1-4 para puertos con teléfonos, fxsks=5-8 para puertos con líneas, y los tonos del país en loadzone y defaultzone), luego ejecute dahdi_cfg.
  2. En Tarjetas de telefonía (bajo Llamadas) active Usar tarjetas de telefonía. Se crea un token; cópielo en un archivo que solo el root pueda leer, como /etc/bitvoice/cards.token.
  3. Agregue cada puerto por su número de canal DAHDI: un puerto de teléfono (FXS, un teléfono, fax o timbre conectado) con su extensión, o un puerto de línea (FXO, una línea de la compañía de teléfonos) con el número de la línea. Elija A-law para Europa y la mayoría del mundo, µ-law para Norteamérica y Japón.
  4. Para líneas, agregue un tronco con el protocolo Líneas de tarjetas de telefonía en Troncos, y enrute números hacia él como hacia cualquier tronco; las rutas de entrada coinciden con el número de cada línea.
  5. Inicie bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.token como un usuario de servicio que pueda abrir /dev/dahdi. Está en la descarga de Linux junto a bitvoice. La página muestra si está en ejecución y el estado de cada puerto; los cambios llegan a él dentro de diez segundos. Un canal que otro programa aún mantiene (o uno que dahdi_cfg aún no ha configurado) se intenta nuevamente cada dos segundos, así que el orden en que se inician las cosas no importa.

Qué funciona

Líneas digitales: T1 y E1 PRI

Una línea T1 (23 llamadas al mismo tiempo) o E1 (30) como tasa primaria de ISDN se conecta a una tarjeta digital (Digium/Sangoma TE-series, OpenVox D-series y similares). BitVoice habla el propio PRI (Q.921 en el canal D, y control de llamadas Q.931), así que cada llamada llega con el número marcado y el identificador de llamada, sale con el identificador de llamada de la extensión, y la compañía de teléfonos dice cuándo el extremo lejano responde, timbra o está ocupado.

  1. En /etc/dahdi/system.conf, configure la span para PRI como de costumbre (span=1,1,0,esf,b8zs, bchan=1-23, hardhdlc=24 para un T1; span=1,1,0,ccs,hdb3,crc4, bchan=1-15,17-31, hardhdlc=16 para un E1), y ejecute dahdi_cfg.
  2. Bajo Líneas digitales en Tarjetas de telefonía (capítulo 6), agregue la span: T1 o E1, su primer canal DAHDI, si BitVoice es la centralita en la línea de la compañía de teléfonos (lo habitual) o la red (otra centralita se conecta a BitVoice como si se conectara a la compañía de teléfonos), y el tipo de conmutador que la compañía de teléfonos le dio.
  3. Agregue el tronco de la tarjeta en Troncos si no hay uno aún, y rutas de entrada para los números (DIDs) que la compañía de teléfonos envía.

Las llamadas salientes toman un PRI primero, las líneas analógicas después; un número ocupado, un número incorrecto o ningún canal libre regresa como ocupado, no encontrado o no disponible, como dice la red. La página muestra si el canal D de cada span está arriba y cuántos de sus canales están en llamadas. Los canales T1 configurados con señalización de bits robados (fxsks, fxoks) funcionan como los puertos analógicos de arriba.

Nombres, reenvíos y transferencias. El nombre de un llamador llega con la llamada (desde el elemento Display, o en National ISDN-2 desde el nombre que la red envía como una instalación) y los teléfonos lo muestran; las llamadas salientes envían el nombre de la extensión de la misma manera. El número desde el que se reenvió una llamada llega como su número de reenvío (BitVoice lo pasa como Diversion de SIP, con el motivo: ocupado, no contesta, incondicional), y cuando el reenvío de una extensión envía una llamada hacia afuera a través de la PRI, el número de la extensión va con ella como el número de reenvío, para que el extremo remoto y la compañía de teléfonos sepan de quién es la llamada. Cuando se contesta una llamada externa, BitVoice le informa a la red el número que contestó (el número conectado).

Activar Transferencias a través de la compañía de teléfonos en un span (lado del usuario, National ISDN-2, 5ESS, DMS-100 o EuroISDN) y cuando alguien transfiere un llamador en esa línea a otro número en la misma línea, BitVoice le pide a la red que una las dos llamadas ella misma: Transferencia de dos canales B en líneas National ISDN-2 y 5ESS, transferencia de enlace de troncal en un Nortel DMS-100, transferencia de llamada explícita (el llamador en espera, luego unido) en EuroISDN. Un DMS-100 solo da un identificador de transferencia a llamadas que BitVoice realiza, así que allí una de las dos llamadas debe ser una llamada saliente (el caso habitual: un llamador reenviado o transferido a un número externo). Ambos canales se liberan tan pronto como la red los ha unido. La línea necesita el servicio (pedir a la compañía de teléfonos "transferencia de dos canales B" o "ECT"); si la red se niega, la transferencia sigue funcionando, a través de BitVoice, utilizando ambos canales como antes. En un span donde BitVoice es el lado de la red, otro PBX puede pedirle a BitVoice que una dos de sus llamadas; BitVoice se niega (no es un conmutador), y el PBX mantiene las llamadas él mismo.

Intentarlo sin tarjeta

Los spans dinámicos propios de DAHDI pueden hacer de tarjeta: dos spans unidos dentro del kernel, BitVoice en uno y otro PBX (chan_dahdi de Asterisk, por ejemplo) como la compañía de teléfonos en el otro. Cargar dahdi, dahdi_dynamic y dahdi_dynamic_loc, y en /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

Dejar el último número (temporización) en 0 en ambos: el temporizador propio de DAHDI los impulsa entonces. Los spans que son la fuente de temporización del otro solo funcionan cuando el otro envía, y el canal D viene y va. Agregar el span 1 aquí como un T1 (primer canal 1), y configurar el otro PBX como el lado de la red en los canales 25 a 48.

Tasa básica ISDN (BRI)

Un BRI transporta dos llamadas al mismo tiempo (B1 y B2) y es común en Europa para pequeñas oficinas; también conecta teléfonos de escritorio ISDN. Las tarjetas BRI (Digium B410P, las tarjetas basadas en HFC de OpenVox, Junghanns y otros) funcionan a través de DAHDI como las tarjetas PRI: en /etc/dahdi/system.conf, el span es span=1,1,0,ccs,ami con bchan=1-2 y hardhdlc=3. Agregarlo bajo Líneas digitales con BRI como el tipo de línea; sus canales son B1, B2 y luego el canal D.

Los nombres, reenvíos y transferencias en EuroISDN (transferencia de llamada explícita) y asesoramiento de cargo funcionan en un BRI como en un PRI.

Troncales E&M en un T1

Un T1 cuyos canales están configurados como E&M (señalización de bits robados: e&m=1-24 en /etc/dahdi/system.conf) da 24 troncales, cada una señalizada por su cuenta: líneas de enlace a otro PBX, bancos de canales y troncales de grupo de características D de los operadores de larga distancia. Bajo Líneas digitales, agregar un T1 y establecer Señalización en E&M, luego:

Una llamada saliente toma un troncal libre, lo ocupa, espera la señal de inicio (no hay señal de inicio dentro de cinco segundos es "no hay señal de inicio" y la llamada falla), envía el número y es respondida cuando el extremo lejano se desconecta (supervisión de respuesta). Una llamada entrante es respondida al descolgar cuando la extensión responde.

Troncales CAMA (911, pista de laboratorio). Un PSAP que aún se alimenta de un enrutador selectivo 911 a través de troncales CAMA establece Señal de inicio en CAMA (troncal 911). El enrutador ocupa, BitVoice parpadea y el enrutador envía el número del llamador (ANI) en MF: CAMA mejorada como KP, dos dígitos de información y los diez dígitos, ST; CAMA tradicional como KP, un dígito de plan de numeración y siete dígitos, ST. Para CAMA tradicional, enumere bajo Códigos de área para NPD 0 a 3 el código de área que representa cada dígito de plan de numeración (la hoja de configuración de su enrutador los tiene); un dígito superior a 3 significa que el enrutador no pudo identificar la línea. Cada llamada va a la ruta de entrada para 911 como una llamada de 911, con el ANI como su número de devolución, y BitVoice busca su ubicación por ese número (ver llamadas de 911 (capítulo 77), Búsqueda de ubicación (ALI)). Los dígitos de información se muestran en la llamada como CAMA (II 00).

MFC-R2 en un E1

En América Latina, partes de Asia y África, las líneas E1 a menudo son MFC-R2 en lugar de ISDN: 30 circuitos, cada uno con sus señales de línea en los bits A y B del timeslot 16 (ITU-T Q.421) y su número, la categoría del que llama y el número del que llama intercambiados en tonos de multifrecuencia obligados (Q.441), hacia adelante y hacia atrás. Configure el span como CAS en /etc/dahdi/system.conf (span=1,1,0,cas,hdb3, cas=1-15:1101, cas=17-31:1101, dchan eliminado), luego bajo Líneas digitales agregue un E1, establezca Señalización en MFC-R2 y elija la Variante de país: ITU-T, Argentina, Brasil, China, Colombia, República Checa, Ecuador, México, Filipinas o Venezuela. Cada país asigna algunas señales de manera diferente (qué significa ocupado, cómo se indica el final del número, el grupo C extra de México); la variante mantiene esas. China No. 1 solicita la clase del que llama (KA) y el número después del número marcado, envía el tipo de llamada (KD: 3, una llamada local) al final, lee ocupado e inactivo por el KD que envió y establece los bits C y D en 1: allí, escriba cas=1-15:1111 y cas=17-31:1111.

Cada circuito transporta llamadas en ambos sentidos. Una llamada que llega alcanza las rutas de entrada con el número marcado y el número del que llama (los números retenidos llegan como anónimos); una extensión ocupada o un número incorrecto se señaliza hacia atrás como ocupado o no asignado, según lo que diga la variante. Una llamada que sale envía el número y la ID del que llama de la extensión, o la señal de "número retenido" cuando el que llama oculta su número.

La señalización MFC-R2 se prueba contra OpenR2 (la biblioteca R2 que utiliza chan_dahdi de Asterisk), en cada variante ofrecida y en ambos sentidos, incluyendo una llamada rechazada como ocupada; E&M contra los canales simulados propios de BitVoice.

SS7

Un transportista puede entregar T1 o E1 señalizados por SS7 en lugar de ISDN: los circuitos de voz transportan llamadas, cada uno con un código de identificación de circuito (CIC), y un timeslot transporta el enlace de señalización al punto de transferencia de señales de la red o conmutador del transportista, sobre el cual ISUP configura las llamadas. BitVoice es entonces un punto de señalización por sí mismo, con un código de punto que el transportista asigna. En /etc/dahdi/system.conf, configure el span como canales claros con el timeslot de señalización como mtp2 o hardhdlc (timeslot 16 en un E1, 24 en un T1). Bajo Líneas digitales, agregue el span, establezca Señalización en SS7 (ISUP) y proporcione:

Conjuntos de enlaces de varios enlaces. Los spans con la misma variante, códigos de punto y red son un conjunto de enlaces (hasta 16 enlaces): cada enlace de señalización del span es uno de sus enlaces, y necesita su propio Código de enlace, y todos los circuitos del span pertenecen a él (sus CIC pueden no superponerse). El tráfico se comparte entre los enlaces en servicio por los mensajes SLS, así que los mensajes de una llamada se mantienen en un enlace. Cuando un enlace falla (la prueba de enlace no responde, o los mensajes no se reconocen), su tráfico cambia a los demás (Q.704: COO y COA, los mensajes que el extremo lejano no envió se envían de nuevo en otro enlace; o, sin respuesta a tiempo, por tiempo), las llamadas en cada span continúan, y Tarjetas de telefonía indica cuántos enlaces están en servicio y cómo se encuentra este span. Cuando el enlace vuelve y se prueba, su tráfico cambia de vuelta (CBD y CBA). Solo cuando todos los enlaces están abajo está el conjunto de enlaces abajo. Probado contra libss7 con dos enlaces, uno cortado en medio de una llamada: libss7 toma mensajes de gestión de red solo en el enlace que sus SLS nombran, así que un mensaje de cambio sobre el enlace cortado (enviado en el otro, como Q.704 lo tiene) se descarta allí, y ambos extremos cambian por tiempo en su lugar, lo que funciona; entre dos extremos de BitVoice va por COO y COA.

Cuando se establece la conexión, BitVoice la alinea (nivel 2 de MTP, con el período de prueba de emergencia como un conjunto de enlaces único), la prueba con la prueba de enlace (SLTM/SLTA), intercambia el reinicio de tráfico permitido y restablece cada circuito (GRS). Las llamadas que llegan alcanzan las rutas de entrada con el número marcado, el número del que llama (los que están restringidos como anónimos), el número desde el que se ha redirigido la llamada y, en ANSI, el nombre del que llama; las llamadas salientes llevan la ID y el nombre del que llama de la extensión. Se obedece el bloqueo o restablecimiento de circuitos del portador. En la toma dual, el extremo con el código de punto más alto mantiene los circuitos pares, como dice Q.764, y BitVoice toma los circuitos que mantiene primero.

SS7 se prueba contra libss7 (la biblioteca SS7 que utiliza chan_dahdi de Asterisk), ITU y ANSI: alineación, prueba de enlace, reinicio de tráfico, restablecimiento de circuito, llamadas en ambos sentidos con números y nombres, liberación, ocupado y bloqueo; y BitVoice contra sí mismo con tramas perdidas en el enlace (enviadas de nuevo por la corrección de errores de MTP2) y una toma dual. La transferencia de señales (al ser un STP para otros) y SCCP/TCAP (búsquedas de portabilidad de números, traducción de números gratuitos) no se ofrecen: un PBX es un punto final, y esas son del portador.

Punto de transferencia de señales (STP). bitvoice-dahdi también puede ser un STP para sus conjuntos de enlaces ITU SS7: active Punto de transferencia de señales (SS7) debajo de las líneas digitales. Su Código de punto STP es el propio de los spans. Con Pasar mensajes para otros códigos de punto, un mensaje de un conjunto de enlaces para el punto adyacente de otro va a ese conjunto de enlaces, y uno para cualquier otro código de punto va al STP IP (M3UA): un STP IP o puerta de enlace de señalización en host:puerto, alcanzado a través de M3UA (RFC 4666) sobre TCP, cuyos mensajes para los puntos de los conjuntos de enlaces regresan de la misma manera (BitVoice registra su código de punto y los que están detrás de él, a menos que se proporcione un Contexto de enrutamiento). Traducción de título global envía mensajes SCCP dirigidos al STP por título global al código de punto y subsistema del prefijo coincidente más largo, como lo hace un relé SCCP. Un mensaje que no se puede entregar regresa al remitente como un UDTS o XUDTS cuando lo solicitó: no hay traducción, no hay ruta (falla MTP), no hay subsistema aquí, o su contador de saltos se agotó. El estado del STP muestra el enlace M3UA y cuántos mensajes ha pasado. Su SCCP (UDT, XUDT, UDTS, XUDTS) y TCAP (Comienzo, Continuación, Fin, Abortar, diálogos y componentes) se verifican contra Osmocom: OsmoSTP sobre M3UA, el usuario de eco SCCP de libosmo-sigtran detrás de él y el codificador TCAP propio de libosmo-asn1-tcap en ambos sentidos. SCTP no se ofrece (Go no tiene): M3UA va sobre TCP, que OsmoSTP y muchos STP IP aceptan. El SCCP orientado a conexión, los conjuntos de enlaces ANSI y la administración SCCP (SST, SSA) no se ofrecen.

Asesoramiento de cargo. En una línea EuroISDN, active Asesoramiento de cargo y BitVoice le pedirá a la compañía telefónica, con cada llamada saliente, que indique cuánto cuesta: durante la llamada (AOC-D) y al final de la llamada (AOC-E), en dinero o en unidades de cargo. La última cifra se coloca en el registro de la llamada (cobrado EUR 1,50 en Historial, y junto a la llamada en Costos); cuando está en su divisa (establecida en Costos) es el costo de la llamada, en lugar de la cifra de las tarifas del tronco. La compañía telefónica debe ofrecer el servicio en la línea. Los troncos SIP pueden enviar el mismo asesoramiento, como el XML AOC 3GPP en un INFO o el BYE, y BitVoice lo mantiene de la misma manera.

El código PRI se prueba contra libpri (la biblioteca ISDN que utiliza Asterisk), tanto como lado de usuario como lado de red, para llamadas National ISDN-2 y EuroISDN, nombres, redirección y números conectados, transferencia de llamada explícita, la transferencia de dos canales B y solicitudes de enlace de tronco DMS-100 Release byte a byte (con el PBX de libpri unido por BitVoice como DMS-100), y asesoramiento de cargo en ambos sentidos; y en BRI, punto a punto y multipunto, como terminal y como red (asignación de TEI, llamadas difundidas al bus, números marcados dígito a dígito).

Todavía no: ID del que llama mostrada en teléfonos analógicos o leída desde líneas analógicas, flash de gancho y cancelación de eco más allá de lo que hace la tarjeta en sí.

Capítulo 7

Troncales

En la interfaz web: /trunks

Una troncal es su cuenta con una compañía de teléfonos. Transporta llamadas hacia y desde números externos. La mayoría son troncales SIP; un servidor Asterisk o FreePBX, o un proveedor IAX2, se puede alcanzar con IAX2 en su lugar.

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

Agregar un troncal SIP

  1. En Troncales (capítulo 7) presione Agregar troncal.
  2. Introduzca el servidor del proveedor que le dio su compañía de teléfonos (sip.provider.com), y el puerto si no es 5060.
  3. Introduzca el nombre de usuario y la contraseña, y active Registrar si el proveedor lo indica (la mayoría lo hace).
  4. Guarde. Dentro de unos segundos, el troncal muestra registrado; si no, la razón se muestra junto a él.

El juez de salud de la troncal

Con dos o más troncales en una ruta de salida, BitVoice juzga cada 15 segundos si cada una se utiliza en su lugar o se intenta después de las otras troncales. Una troncal se mueve detrás de las demás cuando su proveedor deja de responder a las comprobaciones de keep-alive, o cuando sus últimas llamadas salientes fallan una tras otra en el lado del proveedor (Llamadas fallidas seguidas dentro de Dentro (minutos), Configuración, Juez de salud de la troncal), y otra troncal está funcionando. No se mueve por una comprobación de keep-alive fallida sola mientras las llamadas a través de ella aún se realizan; y cuando todas las troncales fallan al mismo tiempo, la causa más probable es el enlace de internet de este sistema, por lo que no se mueve nada. Un cambio requiere dos juicios seguidos (30 segundos), por lo que una troncal nunca se mueve rápidamente. Una troncal nunca se elimina por completo: aún se intenta cuando las demás fallan, por lo que una llamada de emergencia siempre tiene todas las salidas. La página de la troncal muestra el juicio y sus razones; una llamada que salió por otro camino lo indica en su registro.

  1. Agregue una ruta de entrada para su número y una ruta de salida que utilice esta troncal (Enrutamiento de llamadas (capítulo 8)).
CampoQué hace
TransporteUDP (usual), TCP o TLS para señalización cifrada
Registroiniciar sesión cada pocos minutos, para que el proveedor sepa dónde enviar llamadas
Nombre de usuario de autenticaciónsolo cuando el proveedor proporciona uno separado
Dominio de llamadorel dominio en la dirección del llamador, cuando el proveedor lo solicita
ID de llamadorel número que se muestra en las llamadas salientes; el ID de llamador de una extensión gana
También aceptar llamadas delas direcciones o redes del proveedor que envían llamadas. Las llamadas de este equipo por teléfonos registrados aquí y las del generador de llamadas integrado nunca se toman como de la troncal, incluso cuando permite 127.0.0.1
Llamadas al mismo tiempoel límite que permite su plan; las llamadas más allá de este límite van a la siguiente troncal en la ruta
Cifrar mediosSRTP, para proveedores que lo admiten. Un proveedor que responde sin él aún recibe la llamada, sin cifrar, y el historial de llamadas marca la llamada No cifrada
Requerir cifrado(con Cifrar medios) rechazar lo que el proveedor no cifrará: una llamada saliente que responde sin SRTP se cuelga, y una llamada entrante que envía sin SRTP se rechaza; el historial de llamadas dice por qué
Códecsdéjelo en *igual que Configuración*, o elija lo que este proveedor admite, lo mejor primero
Tarifasqué cuestan las llamadas por prefijo de número, para Costos (capítulo 54)

Proveedores en la nube

Comenzar desde rellena Microsoft Teams Direct Routing, Amazon Chime SDK Voice Connector o Azure Communication Services, con una nota sobre qué configurar en su lado. Teams se describe en su propio capítulo (Microsoft Teams (capítulo 67)).

Troncales IAX2 a Asterisk y FreePBX

Elige IAX2 como protocolo para unir otro servidor Asterisk o FreePBX, o un proveedor IAX2. IAX2 transporta señalización y sonido en un solo puerto UDP, 4569, lo que lo hace fácil de configurar a través de 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

En el lado de Asterisk, un par como este es todo lo que se necesita:

[bitvoice]
type=friend
host=dynamic
secret=the shared password
context=from-bitvoice

El puerto IAX2 4569 se abre solo cuando se agrega la primera troncal IAX2, por lo que un Asterisk que se ejecuta en el mismo equipo lo mantiene hasta entonces.

Troncales H.323

Elige H.323 como protocolo para pasarelas, PBX y sistemas de videoconferencia más antiguos que hablan H.323 pero no SIP. Proporciona la dirección de la pasarela (puerto 1720); las llamadas se aceptan solo desde ella. Las llamadas se configuran con Conexión rápida y G.711 (µ-law o A-law; la lista de códecs de la troncal puede limitarlo a uno), y el sonido va directamente entre la pasarela y los puertos de medios de BitVoice. BitVoice convierte a lo que la otra parte utiliza.

H.323 aquí es deliberadamente pequeño: no hay gatekeeper (RAS), no H.245 (por lo que una pasarela que no utilizará Conexión rápida no recibe llamadas, y se le informa), no video, no seguridad H.235. El ID de llamador proviene del número de llamada Q.931 o del alias de dígitos marcados del llamador, el nombre de la pantalla o su ID H.323. La codificación H.225.0 y H.245 de BitVoice se verificó contra un codificador ASN.1 independiente, pero aún no contra hardware de pasarela.

Llamadas reenviadas

Cuando una llamada te llega ya reenviada (el número de alguien reenviado al tuyo, o un usuario de Teams), el proveedor lo indica con History-Info (RFC 7044) o Diversion (RFC 5806). BitVoice lee cualquiera de los dos: Historial de llamadas (capítulo 47) muestra reenviado por el número que lo reenvió, con el número marcado inicialmente y la razón en su descripción, el rastro de la llamada dice por qué, y el registro de la llamada lo mantiene (forwardedFrom, original, forwardReason). Cuando el proveedor solicita que el historial sea privado, los números no se conservan.

Cuando una extensión reenvía una llamada a través de un troncal (reenvío de todas, cuando está ocupado, cuando nadie responde), el proveedor se entera de qué extensión la reenvió y por qué, para que pueda mostrar su número y facturar a la cuenta correcta: por defecto con ambas cabeceras, y con el historial de la llamada que se conserva y el reenvío agregado. Un proveedor confundido por una de ellas puede configurarse para la otra en Avanzado, Llamadas reenviadas indican a quién pertenecen con. En una tarjeta de telefonía T1/E1, cualquiera de las cabeceras se convierte en el número de redirección de la red.

Qué significa el estado

EstadoSignificado
registradoconectado; pueden llegar llamadas
listono se registra, o IAX2 esperando llamadas
inalcanzableel nombre del servidor no está en DNS, o nada responde
fallidoel proveedor rechazó el inicio de sesión; se muestra la razón
en esperalos servidores comparten este troncal uno a la vez y otro lo mantiene
Capítulo 8

Enrutamiento de llamadas

En la interfaz web: /routes

El enrutamiento de llamadas decide dos cosas: adónde van las llamadas desde fuera, según el número marcado, y qué troncal utilizan las llamadas a números externos.

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

Rutas de entrada

Cada ruta de entrada coincide con el número que se llamó (o cualquier número) y envía la llamada a un destino: una extensión, un grupo de timbre, una cola, un menú, un horario, un script, una sala de conferencias, un recepcionista de inteligencia artificial o un correo de voz. Los números coinciden en cualquier forma: +1 212 555 0100, 2125550100 y 12125550100 son lo mismo.

Rutas de salida

Las rutas de salida coinciden con lo que la gente marca, por patrón, y envían la llamada a los troncales en orden: si el primero está abajo o lleno, se intenta el siguiente.

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
PatrónCoincide
Xcualquier dígito
Z1 a 9
N2 a 9
[1-5]uno de un conjunto
. al finaluno o más dígitos adicionales
NXXNXXXXXXun número norteamericano de diez dígitos
1NXXNXXXXXXlo mismo con 1 al frente
011.una llamada internacional desde EE. UU.

Números de emergencia

Los números de emergencia siempre funcionan. Una ruta que nombra el número exactamente se utiliza primero; sin ninguna, se intentan todos los troncales que funcionan en turno. Una llamada a ellos nunca se rechaza por los límites de una extensión, los límites de una organización alojada o una ruta que falta. Salud advierte cuando ningún troncal puede transportarlos.

Capítulo 9

Conjuntos de PIN

En la interfaz web: /pin-sets

Un conjunto de PIN (capítulo 9) es una lista de PIN que una ruta de salida solicita antes de realizar la llamada: para mantener las llamadas internacionales o de larga distancia a personas con un PIN, o para facturar las llamadas a clientes y proyectos por su código.

  1. Agregar conjunto de PIN y enumerar sus PIN (4 a 10 dígitos cada uno).
  2. Active Mantener el PIN en el registro de llamadas para escribir el PIN utilizado en cada registro de llamadas como su código de cuenta (la columna accountcode de las salidas de registro de llamadas CSV, syslog y PostgreSQL, y account en la API).
  3. En Enrutamiento de llamadas (capítulo 8), abra una ruta de salida y elija el conjunto en Solicitar un PIN.

Los que llaman que marcan un número que toma esa ruta escuchan "Ingrese su PIN, luego presione la tecla de número", lo ingresan y la llamada sale. Tres PIN incorrectos terminan la llamada y el intento se registra como un evento de seguridad. Los números de emergencia nunca solicitan un PIN, independientemente de la ruta que tomen, y las llamadas reenviadas y los números de seguimiento no se solicitan tampoco: solo las personas que llaman desde un teléfono.

Capítulo 10

Búsqueda de ID de llamador

En la interfaz web: /lookups

Muchas compañías de teléfonos envían el número de un llamador pero no su nombre. BitVoice primero busca en los contactos de la empresa (capítulo 38); después de eso, una ruta de entrada puede solicitar una búsqueda de ID de llamador (capítulo 10):

Elija la búsqueda en una ruta de entrada en Enrutamiento de llamadas (capítulo 8) (Búsqueda de ID de llamador). Los teléfonos muestran el nombre mientras suenan y se incorpora al registro de llamadas.

Una búsqueda nunca retiene una llamada: BitVoice espera como máximo su espera (1,5 segundos a menos que lo cambie, 5 como máximo) y luego suena sin un nombre. Las respuestas se mantienen durante un día (o durante el tiempo que establezca, o nunca con -1), por lo que un llamador regular no se busca en cada llamada; los números que el servicio no conoce se solicitan nuevamente después de una hora. Intentarlo en la página de búsqueda solicita un número de inmediato, con la configuración guardada.

Capítulo 11

Llamadas de emergencia

Los números de emergencia siempre salen, desde cada extensión, incluso aquellas que no pueden llamar a números externos. Este capítulo trata sobre las llamadas de emergencia realizadas desde los teléfonos que ejecuta BitVoice: una oficina que llama al 911. Contestar llamadas de emergencia es el 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

Qué hace BitVoice en cada llamada de emergencia

  1. La enruta, siempre: una ruta que nombra el número primero; con ninguna, cada tronco que funcione. Los límites nunca la detienen: una extensión que no permite llamadas externas, una organización alojada en su límite de llamadas o suspendida, un tronco en su límite de canales.
  2. Envía dónde está el llamador: con Enviar la dirección del llamador activada (Configuración), la llamada lleva la dirección cívica del sitio, piso y habitación al proveedor como PIDF-LO.
  3. Informa a las personas en el sitio (Ley de Kari en los EE. UU.): las extensiones bajo Notificar reciben un mensaje en sus teléfonos, cada pantalla de BitVoice abierta muestra una alerta y las direcciones bajo También correo electrónico reciben un correo electrónico con el nombre del llamador, extensión, sitio, piso y habitación, para que alguien pueda recibir a los respondientes en la puerta.
  4. Deja que la llamada regrese: durante una hora después de una llamada de emergencia, las llamadas entrantes nunca se rechazan, para que el punto de respuesta siempre pueda llamar de regreso.

Configuración

  1. Verifique los números de emergencia en Configuración (capítulo 14) (establecidos por país: 911 y 933 en los EE. UU.).
  2. Agregue cada edificio bajo Sitios (capítulo 12), con su dirección de la calle y las redes que utilizan sus teléfonos.
  3. Asigne cada extensión su sitio, piso y habitación.
  4. Asegúrese de que una ruta de salida y un tronco transporten llamadas de emergencia; Salud (capítulo 13) advierte cuando ninguno puede.
  5. Rellene Notificar y También correo electrónico.
  6. Marque 933 (en los EE. UU.) para escuchar la dirección que su proveedor tiene.

Trabajadores remotos

Un teléfono que se registra desde fuera de las redes de su sitio es un trabajador remoto: su página de teléfono solicita dónde está, y esa dirección se utiliza en su lugar. Las alertas indican cuándo no se confirmó.

Modo de emergencia

Algo diferente: un interruptor que envía todas las llamadas entrantes a un lugar (una evacuación, un cierre, un incidente). Establezca dónde van las llamadas, un código opcional como *55 y las extensiones permitidas para marcarlo en Configuración (capítulo 14); active el interruptor en el Panel de control (capítulo 1), o marcando el código (tonos ascendentes para activar, un tono bajo para desactivar). Una barra roja se muestra en cada pantalla mientras está activado.

Capítulo 12

Sitios y 911 de oficina

En la interfaz web: /sites

Un sitio es un edificio: su dirección de la calle y las redes que utilizan sus teléfonos. Los sitios son la forma en que una llamada de emergencia indica dónde está el llamador, hasta el piso y la habitación. En los EE. UU., la Ley Kari y la Ley RAY BAUM'S requieren exactamente esto de los sistemas de teléfonos comerciales.

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

Agregar un sitio

En Sitios (capítulo 12), presione Agregar:

CampoQué es
Nombrelo que la gente lo llama: Oficina principal
Calle, Ciudad, Estado o provincia, Código postal, Paísla dirección cívica a la que se envían los respondientes
Redeslos rangos de direcciones que usan sus teléfonos, como 10.1.0.0/16; uno por línea

Luego, en cada extensión, proporcione su sitio, piso y habitación. Health (capítulo 13) enumera las extensiones sin ubicación.

Cómo se encuentra el lugar de un teléfono

  1. Un teléfono que se registra desde una de las redes de un sitio está en ese sitio, con el piso y la habitación de su extensión.
  2. Un escritorio compartido lleva el sitio, piso y habitación del escritorio, no la persona que se ha conectado (Escritorio compartido (capítulo 36)).
  3. Un teléfono que se registra desde fuera de cada una de las redes del sitio es un trabajador remoto. En su primer registro de emergencia habilitado desde un nuevo lugar, se le pide al usuario que confirme su dirección en su página de teléfono; las llamadas de emergencia luego llevan esa dirección.
  4. Si un trabajador remoto nunca confirma, la llamada todavía sale, con el sitio habitual de la extensión, y las alertas dicen que la dirección no se confirmó.

Alertas en el sitio

Con Enviar correo electrónico cuando alguien llama al 911 configurado en Ajustes, las personas nombradas allí reciben el nombre del llamante, la extensión, el sitio, el piso y la habitación tan pronto como comienza una llamada a un número de emergencia, para que alguien pueda recibir a los respondientes en la puerta. Las extensiones Notificar reciben un mensaje en sus teléfonos, y cada pantalla de BitVoice abierta muestra una alerta. Vea Llamadas de emergencia (capítulo 11).

Capítulo 13

Salud

En la interfaz web: /health

La salud indica si el sistema está listo para llamadas y, si no, qué hacer. Cada línea dice qué está mal en palabras sencillas y enlaza a la pantalla donde se soluciona. Verifíquelo después de cada cambio de cualquier tamaño.

Qué verifica

VerificaciónPor qué es importante
Las llamadas de emergencia pueden saliruna ruta y un tronco funcionando llevan los números de emergencia
Extensiones sin ubicación de emergenciasus llamadas de 911 no llevarían piso ni habitación
El servicio de teléfonoSIP está escuchando y en qué puerto
Teléfonos no conectadosextensiones en las que nadie ha iniciado sesión
Troncosregistrados o la razón por la que no lo están
Menús sin una llamada grabadalos llamadores escucharían silencio
La zona horarialos horarios la siguen
Grabaciones y su conservaciónespacio en disco y cuánto tiempo se conservan las grabaciones
Certificadoscuándo caduca el certificado TLS
Cámaras de seguridadsecretos que una cámara no puede leer
Otros servidorescuando varios comparten una base de datos, si cada uno está en ejecución

Los problemas están coloreados: rojo detiene las llamadas (ninguna ruta de emergencia), ámbar debe ser examinado (un teléfono no conectado) y gris es para información.

Capítulo 14

Configuración

En la interfaz web: /settings

Configuración contiene todo sobre el sistema en general. Cada sección se guarda por sí sola, y cada guardar es una revisión en Cambios (capítulo 61).

SecciónQué hay
Sistemanombre, país, zona horaria, idioma, la dirección pública que ven los teléfonos y los proveedores
Númerosel número de prueba de eco, el correo de voz y el número de estacionamiento, y los números de emergencia
Codecslos codecs que los teléfonos pueden utilizar, mejores primero (Codecs (capítulo 66))
Grabación de llamadasdesactivada, cada llamada o extensiones seleccionadas; reglas de consentimiento; cuánto tiempo se mantienen las grabaciones
Sonidolimpieza para el correo de voz y durante las llamadas
Protecciónprohibiciones después de intentos de inicio de sesión fallidos, redes de confianza, llamadas por extensión, números de tarifa premium
Emergenciaenviar la dirección del llamador, quién es notificado, quién es notificado por correo electrónico, modo de emergencia
Inteligencia artificialel servicio de inteligencia artificial, modelos y qué características de inteligencia artificial están activadas (Inteligencia artificial (capítulo 28))
Inicio de sesión únicoel proveedor de identidad (Inicio de sesión único (capítulo 58))
Compatibilidad con AsteriskAMI y ARI para programas escritos para Asterisk (Compatibilidad con Asterisk (capítulo 70))
Asistentes de inteligencia artificial (MCP)si los asistentes de inteligencia artificial como Claude o ChatGPT pueden conectarse y si pueden actuar (Asistentes de inteligencia artificial (capítulo 71))
Microsoft 365 y Google Workspacepersonas y contactos compartidos en Contactos, y calendarios para quién está ausente (Contactos (capítulo 38), Calendarios (capítulo 39))
Aplicaciones móvilesel servicio de notificaciones que despierta las aplicaciones
Correo electrónicoel servidor de correo electrónico al que llegan el correo de voz, los faxes y las alertas
Cámaras de clavessecretos almacenados en AWS Secrets Manager o Azure Key Vault
Configuración desde Gitmantener la configuración en sincronía con un archivo en un repositorio
Base de datosSQLite o PostgreSQL (Base de datos (capítulo 64))
Certificadoel certificado para esta interfaz y SIP sobre TLS: desde Let's Encrypt, instalado a mano o el propio certificado de BitVoice

Las contraseñas y claves nunca se muestran nuevamente una vez guardadas; déjelas vacías para mantenerlas. Los observadores ven la Configuración con todos los secretos eliminados.

El certificado y Let's Encrypt

BitVoice comienza con un certificado que se hizo él mismo, que los navegadores y los teléfonos advierten. Para un servidor con un nombre público, active Let's Encrypt bajo Certificado: ingrese los nombres (pbx.example.com), opcionalmente una dirección de correo electrónico, y aplique. BitVoice obtiene un certificado gratuito de Let's Encrypt, lo utiliza de inmediato para la interfaz web, SIP sobre TLS y Teams, y lo renueva aproximadamente 30 días antes de que termine (los certificados de Let's Encrypt duran 90 días o menos). La línea de estado dice cuándo se emitió, cuándo se renueva y, si falló, por qué; intenta nuevamente después de una hora, luego con menos frecuencia, dentro de los límites de Let's Encrypt. Verificar ahora intenta de inmediato.

Let's Encrypt debe llegar al servidor bajo cada nombre desde internet, para probar que es suyo:

Otras autoridades ACME que no necesitan enlace de cuenta (un paso de step-ca de una empresa, el servicio de prueba de Let's Encrypt) se eligen bajo Autoridad. Los nombres comodín necesitan pruebas DNS, que BitVoice no realiza: instale esos certificados a mano. Cada servidor de un clúster obtiene su propio certificado.

Capítulo 15

Las pantallas en su idioma

Las pantallas de BitVoice están disponibles en inglés y en trece idiomas más: Deutsch, Français, Español, Italiano, Português, Nederlands, Polski, Svenska, Dansk, Norsk bokmål, Suomi, 日本語 y 简体中文.

Selección

Cada navegador tiene su propio idioma: selecciónelo en el menú (la lista de idiomas junto a los temas), en la página de inicio de sesión o en la primera página del asistente de configuración. Hasta que seleccione, BitVoice utiliza el idioma del navegador cuando es uno de estos, de lo contrario, inglés. La elección se mantiene en este navegador solo: dos personas en un servidor pueden trabajar cada una en su propio idioma.

Todo en las pantallas está traducido: el menú, los títulos, los botones, las sugerencias, los mensajes del servidor y los nombres que anuncian los lectores de pantalla. La búsqueda (⌘K) encuentra una página por su nombre en su idioma o en inglés. Se dejan tal como están: lo que la gente escribe (nombres, números, notas), direcciones, códigos, scripts en los editores y nombres de productos y protocolos. Las fechas y los números siguen la configuración del navegador.

Cómo se traduce y qué tan bien

Las traducciones se realizan mediante una máquina (un modelo de lenguaje grande), para cada pieza de texto que las pantallas muestran, alrededor de 5,000; ninguna ha sido verificada por una persona. Algunas oraciones que las pantallas construyen a partir de piezas (un número y una palabra) pueden leerse de manera incómoda, y un término puede traducirse de dos maneras en dos lugares. Cualquier cosa sin traducción, como una pantalla más nueva que las traducciones, permanece en inglés.

Ayuda mantiene este manual en inglés, tal como se escribió, con un enlace en la parte superior de cada capítulo al mismo capítulo traducido completo (también por máquina) en bitvoice.org.

El lado del teléfono es separado: lo que los llamadores escuchan (prompt, menú de correo de voz) está en el idioma de prompt predeterminado (Sonidos (capítulo 20)), a menos que una extensión o una cola tenga su propio idioma.

Parte 2

Dónde van las llamadas

Los bloques de construcción que los llamantes atraviesan: grupos y colas, menús y horarios, scripts y el recepcionista de inteligencia artificial, correo de voz y el diagrama que lo muestra todo.

Capítulo 16

Flujo de llamadas

En la interfaz 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

Verificar cada situación

Verificar cada situación, en la parte superior de Flujo de llamadas (capítulo 16), intenta todo su plan de llamadas en cada situación en la que puede estar, no una muestra:

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.

La misma verificación se ejecuta en los cambios antes de que se realicen: una propuesta de Preguntar en palabras sencillas y el Restaurar esta revisión también enumeran qué se rompería con el cambio que funciona hoy.

Intenta una llamada

Introduce quién llama (una extensión o un número exterior), qué marca y cuándo, y presiona Intentarlo. BitVoice sigue la llamada exactamente como lo haría en una situación real, sin sonar nada: la ruta de entrada, los horarios en ese momento, los scripts de enrutamiento (se ejecutan en su sandbox), los menús, los grupos y las colas, y qué sucede si nadie responde. La ruta que toma esta llamada se marca; otros caminos (las teclas de un menú, el otro lado de un horario) se pueden abrir. El verde significa que funciona, el ámbar significa que debe revisarse (un teléfono no conectado, un script que vuelve a su estado anterior), el rojo significa que la llamada falla allí. Marca Suponer que todos los teléfonos están conectados para ver el plan como se diseñó en lugar de cómo es en este momento; Llega en selecciona el tronco para las rutas que solo toman uno.

El diagrama

El diagrama muestra adónde van las llamadas desde el exterior, caja por caja: cada ruta de entrada, luego los menús, grupos, colas, horarios, scripts y personas a las que conduce.

Haz clic en una caja (o presiona Tab y Enter) para cambiar adónde van las llamadas desde ella: el destino de una ruta, el Si nadie responde de una extensión o grupo, los destinos abierto y cerrado de un horario, las teclas de un menú (agrega o elimina teclas allí), el script de respaldo o la persona de un recepcionista. Al guardar, se verifica el cambio como cualquier otro y se crea una revisión. Abrir su editor completo va a la página propia del elemento. Agregar ruta de entrada agrega una ruta sin salir del diagrama.

Capítulo 17

Grupos de timbre

En la interfaz web: /ring-groups

Un grupo de timbre es un número que timbra varios números: un equipo de ventas, el escritorio delantero y su respaldo, todos en el taller.

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

Estrategias de timbre

Los miembros que están ausentes (en una reunión en su calendario, o con no molestar activado) se saltan; el grupo timbra a los demás. Los miembros con la aplicación móvil se despiertan con un empujón y también timbran.

Si nadie responde

Cuando nadie responde dentro del tiempo de timbre, la llamada va a Si nadie responde: el correo de voz de un miembro, una cola, un menú, otro grupo. Sin nada configurado, timbra hasta que el que llama se rinde.

Grupos, colas o recogida?

UsoCuando
Un grupo de timbreunas pocas personas, cualquier una de las cuales puede tomar la llamada, y la llamada debe timbrar ahora
Una colalos que llaman pueden tener que esperar a alguien libre, y deben escuchar su lugar
Un grupo de recogidacada persona tiene sus propias llamadas, pero los colegas pueden responder por ellos
Capítulo 18

Colas

En la interfaz web: /queues

Una cola mantiene a los que llaman en orden, con música, y timbra al siguiente agente libre. Es el corazón de un centro de contacto, y es útil en cualquier oficina donde las llamadas llegan más rápido de lo que la gente puede atenderlas.

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

Cómo se ofrecen las llamadas

EstrategiaQuién es llamado
Tiempo de inactividad más largoel agente libre que ha esperado más tiempo desde su última llamada
Rotacióncada agente libre por turnos, continuando desde el último
Llamar a todostodos los agentes libres al mismo tiempo
Menos llamadasel agente libre que recibió menos llamadas hoy
En orden (lineal)siempre desde la parte superior de la lista: el primer agente libre
Aleatoriocualquier agente libre, por casualidad
Aleatorio ponderadopor casualidad, los agentes con una penalización más baja con mucha más frecuencia

La pantalla Colas es un panel de control en vivo: quién está esperando, desde hace cuánto tiempo y el estado de cada agente.

Agentes

Los agentes marcan *45 para iniciar o cerrar sesión en todas las colas, y *46 para pausar (un descanso) y reanudar; los agentes pausados y cerrados no se les ofrecen llamadas. El panel de control tiene los mismos botones y muestra por qué un agente se pausó.

EstadoSignificado
disponiblelibre; se le ofrecerá al siguiente llamante
sonandose le está ofreciendo una llamada
ocupadoen una llamada
wrap-upacaba de terminar; el tiempo de wrap-up está en curso
pausadoen un descanso, con la razón dada
ausenteen una reunión o de vacaciones, según su calendario
cerradono está tomando llamadas de cola en absoluto

Supervisores

En Llamadas en vivo (capítulo 46), Supervisar llama al teléfono de un supervisor; cuando responden, pueden escuchar (sin ser escuchados), susurrar (escuchados solo por el agente) o interrumpir (escuchados por ambos), y pueden cambiar entre ellos durante la llamada.

Colas pegajosas y VIP

Active Pegajosa en una cola y un llamante que regresa (uno atendido en los últimos 30 días, o tantos como usted configure) se le ofrece primero al agente que lo atendió la última vez, si ese agente está libre; si no responden, la cola continúa como de costumbre. Los llamantes VIP, al pie de Colas, van al frente de cada cola a la que llaman, después de cualquier VIP que ya esté esperando, y se marcan como VIP en el tablero.

Capítulo 19

Discador de salida

En la interfaz web: /dialer

El dialer de salida (capítulo 19) llama a listas de contactos para los agentes de una cola (capítulo 18): renovaciones, recordatorios de citas, cobros, encuestas. Cada campaña tiene su cola, su lista y su forma de llamar:

ModoCómo llama
Vista previaun agente solicita el siguiente contacto, ve sus detalles, luego llama (su teléfono suena primero) o lo salta
Progresivouna llamada para cada agente libre
Potenciaun número fijo de llamadas para cada agente libre (1 a 3)
PredictivoBitVoice ajusta las llamadas por agente, inclinándose hacia adelante mientras pocas llamadas son abandonadas y retrocediendo a medida que la tasa de abandono se acerca al límite
  1. Agregar campaña: su cola, su ID de llamador (el número que ven los contactos), las horas en que se pueden realizar llamadas en una zona horaria, cuánto tiempo suena el teléfono de un contacto, cuántos intentos y cuánto tiempo entre ellos.
  2. Abra Contactos y Agregar una lista: un archivo CSV con una fila de encabezado y una columna llamada number (o phone); name y cualquier otra columna se muestran al agente en la vista previa. Se omiten los números duplicados y malformados.
  3. Registre el mensaje (en la campaña): quién está llamando y por qué, y "presione 9 si no desea estas llamadas". Se reproduce a una persona que responde cuando no hay agentes disponibles, y, si lo elige, después del saludo de una máquina de contestación.
  4. Inicie la campaña. Solo llama dentro de sus horas y deja de llamar cuando se pausa o no hay nada pendiente.

Personas y máquinas. BitVoice escucha los primeros segundos después de una respuesta: un saludo largo y continuo es una máquina de contestación; un "hola" corto y una pausa es una persona. Una máquina se puede colgar (y volver a intentar), dejar un mensaje o pasar a un agente como cualquier otra persona. Cuando hay duda, se toma la respuesta por una persona.

Llamadas abandonadas. Una persona respondió cuando no hay un agente libre en dos segundos escucha el mensaje y cuenta como abandonada. Con marcado predictivo y de poder, si la proporción de llamadas abandonadas sobre las últimas cien respuestas supera el límite de la campaña (3% a menos que lo cambie, la regla de EE. UU.), la campaña marca una llamada por cada agente libre hasta que vuelva a estar por debajo. La campaña muestra su tasa de abandono, llamadas en espera y agentes libres en vivo.

No llamar. Ninguna campaña llama a un número en la lista de no llamar, independientemente de la lista en la que se encontrara; cualquier persona que presione 9 durante el mensaje se agrega de inmediato. Agregue números a mano o a través de la API (POST /api/dnc). Para el registro nacional (en EE. UU., el Registro Nacional de No Llamar de la FTC: descargue los códigos de área que llama como un archivo plano), elija el archivo bajo Registro Nacional y Importar: cada línea con un número cuenta (212,5550100 como lo escribe la FTC, o un número por línea), los encabezados y las líneas rotas se omiten y se cuentan. Con Reemplazar la última importación activado, los números de la última descarga se eliminan primero, por lo que un número que salió del registro es nuevamente llamable; los números agregados a mano o presionando 9 siempre permanecen. El registro debe actualizarse al menos cada 31 días (reglas de EE. UU.); la página cuenta la lista y cuánta de ella provino del registro. La API es POST /api/dnc/import?replace=1 con el archivo como cuerpo.

Capítulo 20

Sonidos: prompts, idiomas y música de espera

En la interfaz web: /sounds

Sonidos (capítulo 20) contiene todo lo que BitVoice dice o reproduce a los llamantes, aparte de los saludos y las prompts de menú, que se graban donde se utilizan.

Prompts, en cada idioma

Un prompt es algo que BitVoice dice: "Ingrese su PIN", "Su lugar en la línea es", los dígitos que lee. El directorio de nombres, el acceso telefónico (DISA), las llamadas de despertador y los anuncios de cola hablan con ellos. BitVoice tiene las palabras de cada prompt en inglés, español, francés, alemán, italiano, portugués, holandés y polaco; los números se leen dígito por dígito, lo que suena de la misma manera en cada idioma.

Música de espera

La música de espera se agrupa en clases (Calm, Jazz, Ofertas de ventas…), cada una una lista de pistas reproducidas una después de otra, desde el principio o aleatorizadas. Suba pistas de hasta quince minutos en cualquier formato que el navegador lea; los archivos MP3 y WAV también se pueden enviar directamente a la API (PUT /api/music/{class}/{name}), y BitVoice decodifica MP3 él mismo (MPEG-1, 2 y 2.5 Capa III, con un decodificador que da las mismas muestras que minimp3).

Radio por internet. Una clase puede reproducir una transmisión en lugar de sus pistas: ingrese la dirección de una transmisión MP3 (Icecast, Shoutcast, la mayoría de las radios por internet) en Radio por internet. BitVoice se conecta cuando el primer llamador es puesto en espera con esa clase, reproduce la transmisión a todos los que esperan y se desconecta medio minuto después de que el último abandone. Mientras no se puede alcanzar la transmisión, se reproducen las pistas de la clase (o la melodía de espera, sin pistas), y la clase muestra por qué.

Quién la escuchaQué música
alguien puesto en esperala música elegida en la extensión de la persona que pone en espera, de lo contrario la predeterminada
un llamador estacionadola música de la persona que lo estacionó, de lo contrario la predeterminada
un llamador que espera en una colala música de la cola, de lo contrario la predeterminada
un llamador que espera al líder de una conferenciala predeterminada

Predeterminada para todos puede ser la melodía de espera, por lo que nada cambia hasta que elija música. Elegir la melodía de espera en una cola o extensión mantiene la melodía allí.

Capítulo 22

Directorio de marcación por nombre

En la interfaz web: /directories

Un directorio de marcación por nombre (capítulo 22) permite a los llamadores comunicarse con alguien sin conocer su número: teclean las primeras letras del nombre en el teclado (2 para ABC, 3 para DEF, hasta 9 para WXYZ) y son conectados.

  1. Agregar directorio, nombrarlo y asignarle un número (411, por ejemplo) o dejar el número vacío y usarlo como una opción de menú.
  2. Elija qué escriben los llamadores: el apellido (lo habitual), el nombre o cualquiera.
  3. Elija quién está incluido, o nadie para incluir a todos con un teléfono.

Los llamadores escuchan "Por favor, ingrese las primeras tres letras del nombre de la persona". Una coincidencia es conectada de inmediato. Varias coincidencias se leen, ocho a la vez: el nombre de cada persona, luego "para llamar a esta persona, presione 1", 2 y así sucesivamente, con 9 para más nombres. Sin coincidencia: "Nadie coincide", e intentan de nuevo (tres intentos).

Nombres hablados: registre el nombre de cada persona en su extensión (Nombre hablado: registre en el navegador o cargue un archivo), y el directorio lo anuncia; hasta entonces lee el número de extensión. Las palabras propias del directorio provienen de las prompts del directorio en Sonidos (capítulo 20), en su idioma.

Capítulo 23

Marcación (DISA)

En la interfaz web: /dial-in

Un dial-in (capítulo 23) (DISA, "acceso directo al sistema hacia el interior") permite a alguien llamar desde fuera, probar quién es y volver a llamar a través de la oficina: la llamada sale con el identificador de llamador de la oficina, sus rutas y sus tarifas, como si estuviera en su escritorio.

  1. Agregar marcado, y establecer un PIN (4 a 10 dígitos), los números permitidos para utilizarlo (Solo desde estos números), o ambos. Uno de los dos es obligatorio.
  2. Elija la extensión desde la que se realizan las llamadas: se aplican sus permisos de llamada externa, ID de llamador y rutas de salida. Debe estar permitida para llamadas externas.
  3. Asígnale un número para marcar dentro y envíe un número de teléfono a él en Enrutamiento de llamadas (capítulo 8) (elija el marcado como destino).

Los llamantes escuchan "Por favor, ingrese su PIN, luego presione la tecla de numeral" (hash), luego "Por favor, ingrese el número al que desea llamar, luego presione la tecla de numeral" (hash), y son conectados. Las palabras provienen de las promociones de marcado en Sonidos (capítulo 20).

Capítulo 24

Bots de voz (AudioSocket)

En la interfaz web: /voice-bots

Un bot de voz (capítulo 24) es un programa propio (un agente de IA, un IVR de reconocimiento de voz, un grabador) que toma llamadas a través de AudioSocket, el protocolo simple que utiliza Asterisk: BitVoice responde la llamada, abre una conexión TCP al bot y envía el UUID de la llamada, luego el sonido del llamador como marcos de 20 ms de audio lineal de 8 kHz y 16 bits y cada tecla presionada; cualquier sonido que el bot envíe se reproduce al llamador. Los bots y los conectores de servicios de voz escritos para AudioSocket de Asterisk funcionan con BitVoice sin cambios.

  1. Agregar bot de voz: su nombre, la dirección del bot (10.0.0.9:9092) y, opcionalmente, un número para marcarlo.
  2. Elija a dónde va el llamador si el bot no puede tomar la llamada o se interrumpe (una persona, una cola, correo de voz): es obligatorio, para que ningún llamador se caiga porque un bot esté caído.
  3. Envíe llamadas a él desde Enrutamiento de llamadas (capítulo 8), una opción de menú, un horario o un toggle.

Cuando el bot envía una desconexión de AudioSocket, la llamada termina; cuando el llamador cuelga, se envía una desconexión al bot. Un bot que no se puede alcanzar dentro de tres segundos o cuya conexión se interrumpe sin una desconexión, pasa el llamador al respaldo y se registra el error.

Para introducir un programa en una llamada ya en curso (un transcriptor que escucha, un asistente que susurra a nadie), use los medios externos de ARI: consulte Compatibilidad con Asterisk (capítulo 70).

Capítulo 25

Toggles de día/noche

En la interfaz web: /toggles

Un toggle de día/noche (capítulo 25) es un interruptor para un flujo de llamadas (FreePBX lo llama control de flujo de llamadas). Las llamadas enviadas a él van a su destino normal o al otro mientras alguien lo ha cambiado: la oficina cierra temprano por una tormenta, alguien marca *281 al salir y las llamadas van al correo de voz hasta que se cambia de nuevo por la mañana. Permanece como se dejó, a través de reinicios.

  1. Agregar toggle, darle un código (1 a 3 dígitos: marcado después de *28) y elegir a dónde van las llamadas normalmente y cuando se cambia. Cualquiera de los lados puede ser un horario, por lo que un toggle puede estar frente a las horas de apertura y anularlas.
  2. Elija quién puede cambiarlo desde un teléfono (ninguno elegido permite cualquier extensión).
  3. Envíe llamadas a él desde Enrutamiento de llamadas (capítulo 8), una opción de menú o un horario, como cualquier otro destino.

Cámbielo marcando *28 y su código (un tono ascendente: cambiado; un tono descendente: de regreso a la normalidad), con el interruptor junto a él en la página de Toggles, o a través de la API (POST /api/toggles/{id}/state). Una tecla de lámpara de ocupado que vigila *281 se enciende mientras ese toggle esté cambiado, para que la persona que cierra pueda verlo desde su escritorio. El código del toggle en sí está en Códigos de función (capítulo 32).

Capítulo 26

Horarios

En la interfaz web: /schedules

Un horario envía llamadas de una manera cuando está abierto y de otra cuando está cerrado. Apunte una ruta de entrada al horario, y el horario al menú (abierto) y al correo de voz (cerrado).

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

Horas de apertura

Cada línea de horas es un conjunto de días y un tiempo desde y hasta. Se permiten varias líneas: de lunes a viernes de 9:00 a 17:00, y sábados de 10:00 a 13:00. Las horas pueden cruzar la medianoche (22:00 a 06:00) para turnos de noche.

Días festivos

Días festivos cuentan como cerrado todo el día, sin importar lo que digan las horas. Agregue cada fecha con un nombre; el nombre se muestra en Flujo de llamadas (capítulo 16) cuando intenta una llamada en ese día.

Zona horaria

La zona horaria es la que está en Configuración. Cuando los relojes cambian, los horarios siguen la hora local.

Capítulo 27

Secuencias (JavaScript y Lua)

En la interfaz web: /scripts

Una secuencia decide a dónde va una llamada cuando los menús, horarios y grupos no son suficientes: llamadores de una área a una oficina, números de VIP directamente a una persona, una decisión desde sus propios datos. O, configurado para Ejecutar toda la llamada, responde la llamada y la ejecuta, como un plan de marcado de Asterisk o un script AGI: llamadas y voz, teclas, grabaciones, timbres de personas, pasando (a continuación). Las secuencias se escriben en JavaScript o Lua en Secuencias (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 diseño

Qué ve un script

call tiene:

CampoQué es
from, fromNameel número y nombre del que llama
toel número marcado
directioninbound o internal
trunkel troncal por el que entró
weekday, hour, minutela hora actual (0 es 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

Usar un script

Apunta una ruta de entrada, una tecla de menú o un horario al script, como a cualquier destino. Probar lo ejecuta con una llamada que describes, sin realizarla; la lista de ejecución muestra cada ejecución real con su decisión, tiempo tomado y cualquier error. El flujo de llamada (capítulo 16) también ejecuta scripts cuando intentas una llamada.

Scripts que ejecutan toda la llamada

Elige Ejecuta toda la llamada. El script entonces responde la llamada y va de arriba a abajo, cada paso esperando hasta que esté hecho:

PasoQué hace
play(name)reproduce una llamada de Sonidos (capítulo 20) en el idioma del que llama (goodbye, digit-5...), digits:1234, o un tono: beep, confirm, error, off, hold. Una llamada no grabada aún es un pitido.
say(text)habla las palabras con el servicio de voz en Configuración, IA (un pitido sin uno)
collect({max, timeout, interDigit, end, say, prompt})recopila teclas: como máximo max (32), esperando timeout segundos para la primera (5) y interDigit para cada siguiente (3), hasta end (#). say o prompt pregunta primero. Devuelve las teclas, "" cuando no hay.
record({box, seconds, beep})graba un mensaje en el buzón de una extensión, hasta # o el tiempo; devuelve sus segundos
wait(seconds)espera, devolviendo una tecla presionada
dial(destination, ringSeconds)llama con el que llama escuchando el tono de llamada. Respondido: hablan y el script está hecho (true). No respondido: false, y el script continúa.
transfer(destination)pasa la llamada; el script está hecho
hangup()termina la llamada
log(text)escribe en la lista de ejecución

Un destino es un número (una extensión, grupo de timbre o cola aquí, de lo contrario un número exterior a través de las rutas de salida; nunca un número de emergencia) o {type, target} como arriba. Una tecla presionada durante un sonido lo detiene; play y say lo devuelven y el siguiente collect comienza con él. Devolver un destino envía la llamada allí.

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 tiene los mismos pasos (collect{max = 1}). Dale al script un Número para marcar para llamarlo desde una extensión.

Sus límites mantienen la llamada segura: el código del propio script puede ejecutarse como máximo un cuarto de segundo entre dos pasos; una llamada toma como máximo 1,000 pasos; y todo el script se detiene después de su Ejecución más larga (10 minutos a menos que lo especifiques, 60 como máximo). Cuando falla, se detiene o termina sin colgar o pasar la llamada, la llamada va a su Valor predeterminado; un que llama que cuelga lo detiene al instante. Probar ejecuta el script con las teclas que dices que el que llama presiona y enumera cada paso, sin realizar una llamada.

Capítulo 28

Recepciónista de inteligencia artificial, triage de correo de voz y preguntas

En la interfaz web: /receptionists

Las características de inteligencia artificial utilizan el servicio de inteligencia artificial configurado en Configuración (capítulo 14): un servicio compatible con OpenAI (OpenRouter por defecto) o uno que se ejecuta usted mismo. Lo que necesitan se envía allí, así que elija un servicio en el que confíe para las llamadas; para un centro de llamadas de emergencia, su propia nube gubernamental cuenta 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

Recepciónista de inteligencia artificial

Elige un recepcionista como destino de las llamadas: una ruta, una opción de menú o la Si nadie responde de una extensión. Dice que es automatizado, responde solo desde Información aprobada, toma un mensaje, reserva una llamada de vuelta (ver Llamadas de vuelta (capítulo 30)), o transfiere a Una persona es. Presionar 0 o pedir a una persona siempre alcanza a alguien, y también lo hace cualquier problema con el servicio de inteligencia artificial o el modelo de habla: los llamadores nunca quedan atascados con él.

Modelos

Modelo realiza el trabajo de texto: resúmenes, respuestas del recepcionista y preguntas en palabras simples. Convertir el habla en texto requiere un modelo que acepte audio; configúrelo como Modelo de habla a texto (por ejemplo, google/gemini-2.5-flash en OpenRouter) para utilizar un modelo de solo texto para el resto, como meta-llama/llama-3.3-70b-instruct.

Reconocimiento de voz en el edificio

La voz se puede transcribir sin ningún modelo de lenguaje: un reconocedor de voz (whisper) escucha el audio y escribe lo que se dijo, nada más. Quién escribe la voz, en la configuración de IA, tiene tres opciones:

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.

Hechos dichos en la llamada (sin modelo de lenguaje)

Cada transcripción también se lee con reglas, sin modelo de lenguaje, para los hechos que un operador de llamadas anota: qué sucedió, dónde, cuántos están heridos (o que nadie lo está), condiciones (respiración, despierto, sangrado...), peligros (fuego, humo, gas, armas, productos químicos, combustible), vehículos, quién es el llamador en relación con la persona necesitada, y un número de devolución. Cada hecho se muestra con la oración de la que provino y el lado que lo dijo, en los Hechos dichos en la llamada de la transcripción. Sin un modelo, el resumen se escribe solo a partir de estos hechos y lo indica.

ConjuntoHechos encontradosHechos encontrados que nadie esperaba
Entrenamiento (las reglas se escribieron a partir de él)41 de 410
Retención, puntuado en frío, antes de que se escribiera alguna regla a partir de él27 de 40 (67%)2
Retención, después de una segunda ronda de reglas escritas a partir de sus errores40 de 400
Sellado, puntuado en frío (nunca se escribe una regla a partir de él)23 de 43 (53%)3

La puntuación sellada es la que se puede esperar en llamadas que no ha visto, y los tres conjuntos fueron escritos por las mismas personas que las reglas, por lo que las llamadas reales probablemente funcionarán peor. Lea los hechos junto a la transcripción, nunca en lugar de ella.

Los modelos más grandes necesitan más procesador: un servidor que escribe muchas llamadas al mismo tiempo debe comenzar con base, o usar una máquina con una GPU como un servicio de texto a voz para el edificio. En computadoras Apple, whisper utiliza la GPU.

Triage de correo de voz

Con Transcribir y resumir correo de voz activado, cada mensaje también se marca como urgente, normal o de baja prioridad, con su tipo (ventas, soporte, facturación...). Los mensajes urgentes generan una alerta en la pantalla de cada administrador.

Preguntar en palabras sencillas

En Cambios (capítulo 61), describa un cambio ("enviar llamadas de ventas al correo de voz después de las 5 pm"). La IA propone el cambio, BitVoice lo verifica como cualquier otro cambio y muestra exactamente qué cambiaría. Nada cambia hasta que presione Aplicar, y se convierte en una revisión que puede restaurar. Las contraseñas nunca se envían a la IA.

Capítulo 29

Buzón de voz

En la interfaz web: /voicemail

Cada extensión puede tener un buzón. Los que llaman que no son respondidos escuchan su saludo y dejan un mensaje; la persona lo escucha en su teléfono, lo lee en la pantalla o lo recibe por correo electrónico.

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

Activarlo

En la extensión, activa Buzón de voz. Si nadie responde se establece en el buzón. Dale un PIN (4 a 10 dígitos): abre el buzón desde otro teléfono y registra a la persona en el portal de personal y en las estaciones de trabajo.

ConfiguraciónQué hace
Mensaje más largo10 a 900 segundos (180 por defecto)
Correo electrónico de nuevos mensajesa la dirección de correo electrónico de la extensión, con el mensaje adjunto
Saludograbado en el navegador, subido o grabado desde el teléfono; sin uno, los que llaman escuchan un pitido

Escuchar

Con IA

Con Transcribir y resumir el buzón de voz activado (Configuración, IA), cada mensaje se escribe, se resume en una línea y se marca como urgente, normal o baja prioridad con su tipo (ventas, soporte, facturación). Los mensajes urgentes generan una alerta en la pantalla de cada administrador. Ver IA (capítulo 28).

Limpieza de sonido

Limpieza de sonido (Configuración) elimina el ruido de fondo constante y iguala los niveles a medida que se guardan los mensajes, para que un mensaje desde un coche o una calle concurrida sea más fácil de escuchar.

Capítulo 30

Llamadas de devolución

En la interfaz web: /callbacks

Personas que solicitaron ser llamadas de regreso. Un recepcionista de inteligencia artificial reserva una cuando un llamador solicita: recopila su nombre, el número al que llamar (ofreciendo el que está llamando), un buen momento y de qué se trata, se lo lee de regreso y solo la reserva cuando el llamador acepta. Nunca promete un momento exacto. Los administradores también pueden agregar llamadas de devolución a mano.

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

Una nueva llamada de devolución muestra una alerta en cada pantalla abierta y se envía por correo electrónico al propietario del buzón de Tomar mensajes para de la recepcionista cuando esa extensión tiene una dirección de correo electrónico y el correo electrónico está configurado en Configuración.

Para llamar de regreso, elija su extensión y presione Llamar de regreso: su teléfono suena primero, y cuando lo contesta, BitVoice llama al número por usted, con sus rutas y ID de llamador normales. Luego agregue una nota si lo desea y presione Hecho (o Cancelar). Las llamadas de devolución finalizadas se mantienen debajo de las abiertas y se pueden volver a abrir.

Parte 3

Llamadas diarias

Lo que las personas hacen en sus teléfonos todos los días, y lo que configuran para sí mismos: reenvío, seguimiento, recogida, salas de conferencia, paginación, escritorios calientes, faxes y textos.

Capítulo 32

Códigos de función, reenvío y marcaciones rápidas

En la interfaz web: /codes

Los códigos de función son lo que la gente marca en sus teléfonos para cambiar sus propias configuraciones y llegar a las funciones. Funcionan en todos los teléfonos, teléfonos de escritorio o teléfonos soft, sin necesidad de configurar nada en el teléfono en sí. Un tono ascendente significa hecho; un tono descendente significa rechazado.

Los códigos de un vistazo

CódigoQué hace
*72reenviar cada llamada (luego el número y #, o el número directamente después: *722125550199)
*73detener el reenvío de cada llamada
*90 / *91reenviar cuando esté en una llamada / detener
*52 / *53reenviar cuando no se responde / detener
*78 / *79no molestar activado / desactivado
*76cambiar no molestar (tono ascendente: ahora activado)
*21cambiar seguimiento activado y desactivado
*8responder a una llamada que suena en su grupo de recogida
** y una extensiónresponder a la llamada que suena en esa extensión
*80 y una extensiónintercomunicador: ese teléfono responde en su altavoz
*0 y un códigoun marcado rápido
*62llamada de despertador: escucharla, reservar una (cuatro dígitos, como 0630) o cancelarla (asterisco)
*68 y un dígitoestado de la sala, para la limpieza en hoteles
*28 y un código de conmutadorcambiar un conmutador de día/noche (capítulo 25) sobre, o hacia atrás
*32bloquear al último llamador: el último número exterior que sonó en este teléfono va a la lista de bloqueo (Protección contra spam (capítulo 56))
*43la prueba de eco
*97su buzón de voz
70estacionar una llamada (transferirla aquí); 71 a 79 la recogen
*45 / *46agentes de cola: iniciar o cerrar sesión / pausar o reanudar
*33 / *34iniciar o cerrar sesión en un escritorio compartido
*7 / *8 durante una llamadapausar y reanudar la grabación (pagos con tarjeta)

Reenvío

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

El reenvío a otra extensión utiliza sus propias configuraciones (su buzón de voz, su seguimiento), hasta cuatro saltos para que dos personas que se reenvían entre sí no puedan crear un bucle. El reenvío a un número exterior pasa por las rutas de salida, como si la persona hubiera marcado el número, y necesita que la extensión esté permitida para llamadas salientes.

El reenvío es un estado en vivo, no una configuración: configurarlo no hace una revisión, y se mantiene a través de los reinicios. Extensiones (capítulo 3) y el portal del personal también muestran y cambian esto.

No molestar

*78 activado, *79 desactivado, *76 cambia. Con no molestar activado, las llamadas van al buzón de voz o al destino de no respuesta de la extensión. No molestar configurado manualmente gana sobre el calendario (Calendarios (capítulo 39)). Las llamadas de devolución de emergencia todavía suenan.

Seguimiento

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 el seguimiento de llamadas (follow-me) en las extensiones que tienen números de seguimiento configurados (en la extensión o en el portal de personal). El teléfono de escritorio suena primero durante su tiempo de timbre, luego los números de seguimiento, uno después de otro o todos juntos. En un número externo con presione 1 activado, la persona escucha un tono y presiona 1 para tomar la llamada; un correo de voz o un silencio nunca lo hace, y después de 15 segundos la llamada pasa a la siguiente.

Contestar la llamada de alguien más

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 y una extensión llaman con auto-respuesta: su teléfono responde en el altavoz, y ambas partes hablan. Yealink, Grandstream y Snom leen el encabezado Call-Info de BitVoice, Poly lee Alert-Info; algunos teléfonos necesitan que se permita la intercom en sus propias configuraciones. Una extensión puede rechazar la intercom; entonces la llamada suena como de costumbre. Las estaciones de puerta nunca aceptan intercom.

Marcadores de velocidad

*0 y un código marcan un número guardado: *05. Los marcadores de velocidad de la empresa están en esta página; cada persona puede tener los suyos en su extensión o en el portal de personal, y los suyos tienen prioridad sobre los de la empresa con el mismo código. Los códigos son de 1 a 3 dígitos.

Cambiar los códigos

Cada código se puede cambiar en Códigos de función (capítulo 32), o desactivar con la palabra off. Dos funciones no pueden compartir un código, y ningún código puede ser el número de una extensión o un grupo: BitVoice indica cuál es el conflicto. Los números de eco, correo de voz y aparcamiento están en Configuración (capítulo 14).

Capítulo 33

El portal de personal

El portal de personal permite que todos cuiden sus propias llamadas sin un administrador: no molestar, reenvío, seguirme, marcadores rápidos, correo de voz y su saludo, su PIN y una lista de sus propias llamadas. Está en #/me en la dirección de este servidor y está vinculado desde la página de inicio de sesión.

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

Iniciar sesión

Las personas inician sesión con su número de extensión y su PIN de correo de voz: el mismo PIN que abre su correo de voz desde un teléfono y las hace iniciar sesión en escritorios compartidos. Una extensión sin PIN no puede iniciar sesión; un administrador configura uno en la extensión.

Intentos incorrectos repetidos desde una dirección bloquean durante diez minutos. Una sesión del portal solo alcanza la configuración de la persona: nunca otra extensión, la configuración o las grabaciones de alguien.

Qué pueden hacer las personas

PestañaQué hay allí
Dónde van las llamadasno molestar; reenvío de cada llamada, cuando está ocupado y cuando no se responde; números de seguirme; marcadores rápidos propios
Correo de vozmensajes para reproducir y eliminar, con transcripciones y resúmenes cuando la inteligencia artificial está activada; grabar o subir el saludo
Tus llamadaslas llamadas propias de la persona, más nuevas primero, sin grabaciones
PINcambiar el PIN, proporcionando el actual

El reenvío y no molestar configurados aquí son los mismos que los configurados desde el teléfono con códigos de función (Códigos de función (capítulo 32)): el que se configuró más recientemente es el que está en vigor. Los números de seguirme y los marcadores rápidos son parte de la configuración de la extensión, por lo que cambiarlos crea una revisión en Cambios (capítulo 61), registrada como la propia de la persona.

El reenvío a un número externo solo funciona para extensiones permitidas para llamar a números externos. El portal dice que no puede en lugar de guardar un reenvío que nunca podría sonar.

Chat y presencia

La pestaña Chat del portal enumera a los colegas con su estado actual: disponible, en una llamada, sonando, ausente (no molestar, una reunión o tiempo libre según su calendario, con el motivo) o desconectado (no hay teléfono conectado), y el estado que han escrito ("En el almuerzo, regreso a las 2"). Selecciona a alguien para enviarle un mensaje; los mensajes llegan al instante, y un número junto al nombre cuenta los mensajes no leídos. Las salas de equipo (Configuración, Chat del personal) son conversaciones para un grupo o para todos cuando una sala no enumera miembros.

Los mensajes solo son vistos por las personas en la conversación: los administradores gestionan las salas, pero nunca las leen. Configuración, Chat del personal desactiva el chat y establece durante cuánto tiempo se conservan los mensajes (0 conserva los mil más recientes de cada conversación).

Capítulo 34

Salas de conferencia

En la interfaz web: /conferences

Una sala de conferencia es un número que varias personas marcan para hablar todas juntas. El personal marca el número desde sus escritorios; los llamadores externos lo alcanzan a través de una ruta de entrada o una opción de menú que apunta a la 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

Configuración de una sala

  1. Abre Salas de conferencia (capítulo 34) y presiona Agregar sala de conferencia.
  2. Asígnale un número (cualquier número libre, 500 por defecto) y un nombre.
  3. Opcionalmente, establece un PIN. Los llamadores escuchan un tono, ingresan el PIN y presionan #. Tres PIN incorrectos y la llamada termina.
  4. Opcionalmente, establece un PIN de líder, diferente del PIN. Quien lo ingresa se une como líder.
  5. Para permitir que los llamadores externos se unan, apunta una ruta de entrada (o una tecla de menú) a la sala.

Opciones

OpciónQué hace
Esperar al lídertodos los demás escuchan el tono de espera hasta que un líder se una; cuando el último líder se va, la sala se cierra y todos son colgados. Necesita un PIN de líder.
Miembros se unen silenciadospara briefings y conferencias: los líderes hablan, los miembros escuchan. Un miembro presiona 1 para pedir hablar, y un líder lo des silencia.
Grabar la salatoda la sala se conserva como una grabación en Historial de llamadas (capítulo 47), a menos que la grabación esté desactivada para todo el sistema
Tonos cuando las personas se unen y dejanactivado por defecto
Mayor cantidad de personas al mismo tiempo50 por defecto, hasta 200

Teclas durante una llamada

Mientras una sala está en uso

La página muestra cada sala en uso: quién está dentro, quién está hablando (la luz verde), quién está silenciado, quién ha pedido hablar y quién todavía está esperando al líder. Un administrador puede silenciar o des silenciar a cualquiera, eliminar a alguien y bloquear o desbloquear la sala.

Todos en una sala escuchan a todos los demás que no están silenciados, mezclados por BitVoice; cada teléfono puede usar su propio códec. Se conserva un registro de llamada para cada llamada de cada persona, y uno para la sala en sí con su duración y grabación.

Audio HD

Activa Audio HD en una sala (las salas nuevas lo tienen activado) y se mezcla a 16 kHz en lugar de 8: las personas con teléfonos de banda ancha (G.722, Opus, el teléfono del navegador) se escuchan entre sí en HD, con la claridad de una llamada moderna, mientras que las personas con teléfonos ordinarios (G.711, móviles a través de un proveedor) escuchan la misma sala como de costumbre. La vista en vivo marca la sala y cada miembro que está en HD. El audio HD necesita G.722 entre los códecs que usan los teléfonos (es el primero en la lista del sistema, Configuración, Códecs). Las grabaciones de la sala permanecen en calidad de teléfono.

Salas de video

Establece Video en una sala y los teléfonos de video (y softphones) que se unan envían su cámara y ven una imagen, conmutada según las personas hablen, como en ConfBridge de Asterisk:

BitVoice conmuta las imágenes sin decodificarlas, por lo que cuesta casi nada, y pide a cada teléfono de la nueva imagen un fotograma completo (RTCP PLI y FIR, y la información de imagen rápida de SIP que la mayoría de los teléfonos de escritorio responden) para que la conmutación se muestre al instante. El video de cada miembro usa el códec de video de la sala (H.264 a menos que elijas VP8); un teléfono sin él se une solo con sonido. Cada espectador recibe una transmisión constante (una fuente, su propio tipo de carga), quienquiera que esté en pantalla. La vista en vivo marca quién tiene video y quién está en pantalla.

Una cuadrícula se hace de manera diferente: BitVoice le da cada imagen a ffmpeg en el servidor, que las decodifica, las coloca en una imagen de 1280 por 720 a 15 cuadros por segundo y las codifica una vez para todos. Instale ffmpeg (Configuración, Conversión de video, indica si se encuentra); sin él, una sala de cuadrícula sigue al hablante y la pantalla de la sala lo indica. Cada imagen cuesta tiempo de procesador: en un servidor pequeño, mantenga las cuadrículas en unas pocas salas al mismo tiempo. Solo se muestran los miembros cuya cámara está enviando: alguien que se une sin video o cuya cámara se detiene, abandona la cuadrícula (nunca se congela en una cámara estática) y la cuadrícula se reconstruye en unos pocos segundos cuando eso cambia, con una breve pausa en la imagen. Los miembros décimo y posteriores se escuchan pero no se muestran. La vista en vivo marca el tamaño de la cuadrícula y quién está en la cuadrícula.

Video de todos (navegadores)

Elige Video de todos y la sala obtiene su propia página (Salas de conferencia, Abrir la sala de video, o #/video-room/NUMBER). Cada persona allí presiona Unirse con mi cámara: el navegador envía su cámara una vez, en tres tamaños (simulcast), y recibe cada otra cámara en su propia imagen. BitVoice reenvía las imágenes tal como llegaron, sin decodificarlas (una unidad de reenvío selectivo, SFU), por lo que cuesta poco tiempo de procesador; la carga de cada navegador y la descarga de cada espectador son lo que limitan una sala, por lo que puede tener hasta 16 cámaras.

Compartir pantalla: pulse Compartir mi pantalla y elija una pantalla, una ventana o una pestaña del navegador en el selector del navegador. Todos en la sala la ven como la imagen grande, debajo de su nombre, con texto mantenido nítido (la tasa de imágenes disminuye en su lugar cuando la red es escasa). No necesita unirse con su cámara primero. Dejar de compartir, o la barra Dejar de compartir del navegador, la termina.

Capítulo 35

Página y altavoces de sobrecarga

En la interfaz web: /paging

La página habla a través de muchos teléfonos al mismo tiempo: marque un número de página y cada teléfono en el grupo responde en su altavoz por sí solo. Úselo para anuncios a un almacén, una escuela, una planta de producción.

Configuración de un grupo de paginación

  1. En Paging (capítulo 35) pulse Agregar grupo de paginación y asígnele un número (800 por defecto) y un nombre.
  2. Seleccione los teléfonos. Los altavoces de sobremesa configurados como extensiones (tipo Altavoz de sobremesa) también pueden ser miembros.
  3. Opcionalmente, una dirección y puerto multidifusión.

Multidifusión

La multidifusión también envía la página a una dirección y puerto de multidifusión (239.0.1.10:5000), como G.711 µ-law, que los altavoces de sobremesa y muchos teléfonos de escritorio pueden escuchar sin una llamada cada uno. Un grupo puede tener solo una dirección de multidifusión. Funciona en una red: los enrutadores no pasan la multidifusión a menos que estén configurados para ello.

Paginación e intercomunicador

PaginaciónIntercomunicador
Quién escuchatodos en el grupouna extensión
Respuestano, unidireccionalsí, bidireccional
Cómomarcar el número del grupo*80 y la extensión

Los teléfonos que no responden a una página por sí mismos dentro de unos pocos segundos se dejan fuera, por lo que un teléfono sin auto-respuesta nunca retiene una página. Algunos teléfonos necesitan auto-respuesta (intercomunicador) permitida en sus propias configuraciones.

Capítulo 36

Puestos de trabajo compartidos

En la interfaz web: /phones

Un puesto de trabajo compartido es un teléfono compartido que se convierte en quien se conecta a él: para oficinas donde las personas no tienen escritorios fijos. Haga uno activando Puesto de trabajo compartido en la extensión del teléfono configurado (la extensión propia del escritorio, como 900 Escritorio 3).

Conexión y desconexión

  1. En el teléfono, marque *33 y espere el tono.
  2. Introduzca su extensión y #, y espere el tono.
  3. Introduzca su PIN de correo de voz y #. Un tono ascendente significa que está conectado; un tono descendente significa que fue rechazado.

A partir de entonces, las llamadas a su extensión suenan en este escritorio, así como en sus otros teléfonos, y las llamadas que realiza desde él muestran su número y nombre y cuentan como suyos en Costos. Conectarse a otro escritorio lo mueve allí. *34 lo desconecta. Cinco intentos incorrectos bloquean el escritorio durante diez minutos.

Administración de puestos de trabajo compartidos

En Teléfonos (capítulo 4), Puestos de trabajo compartidos muestra quién está conectado dónde; los administradores pueden conectar a alguien (sin su PIN) o desconectarlo. Los códigos y un momento cada día cuando todos están desconectados están en Configuración. Las conexiones se mantienen a través de reinicios.

Capítulo 37

Llamadas de hotel y despertador

En la interfaz web: /hotel

Llamadas de despertador

Cualquiera puede reservar una llamada de despertador: huéspedes, turnos nocturnos, personas de guardia. Desde su propio teléfono marcan *62: BitVoice dice el que se ha establecido (si lo hay), luego ingresan la hora como cuatro dígitos (0630), o presionan la tecla estrella para cancelar. En Hotel (capítulo 37) un administrador reserva una para cualquier extensión, una vez o cada día.

En ese momento, el teléfono suena con el nombre del sistema; al responder, se escucha "Buenos días. Esta es su llamada de despertador." (la llamada de despertador en Sonidos (capítulo 20), en el idioma del huésped o la extensión). Si no se responde, se intenta nuevamente (3 intentos, 5 minutos aparte, ambos configurados en Configuración en la página), y después del último se puede llamar a la extensión de recepción. Con varios servidores, solo uno realiza llamadas de despertador.

Habitaciones de hotel

Active Habitación de hotel en la extensión del teléfono de cada habitación. En Hotel, cada habitación muestra su huésped, llamada de despertador y estado de la habitación, con botones Check-in y Check-out.

El sistema de hotel (PMS)

Capítulo 38

Contactos en cada teléfono

En la interfaz web: /contacts

Contactos es el directorio de la empresa: los proveedores, clientes y otras oficinas que la gente llama. Cada teléfono enumera junto a las extensiones, y cuando uno de estos números suena, los teléfonos y la tarjeta de llamador muestran el nombre del contacto (cuando el proveedor no envió ninguno). Un número coincide sin importar cómo esté escrito: +1 212 555 0100 y 2125550100 son la misma línea.

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

Agregar contactos

Agregar contacto para uno a la vez, con tantos números (trabajo, móvil, hogar, otro) como tenga. Importar toma una hoja de cálculo guardada como CSV cuya primera fila nombra las columnas: nombre, empresa, trabajo (o teléfono), móvil, hogar, otro, correo electrónico, notas. BitVoice verifica todo el archivo primero y dice qué líneas están mal; un contacto con el mismo nombre que uno existente se actualiza en lugar de agregarse dos veces, y Reemplazar cada contacto comienza la lista de nuevo. Exportar descarga la lista como CSV.

En teléfonos de escritorio

Los teléfonos configurados por Teléfonos (capítulo 4) (aprovisionamiento) obtienen el directorio sin más configuración:

En el teléfono del navegador

Contactos bajo el teclado encuentra un nombre o número y lo coloca listo para llamar.

Desde Microsoft 365 o Google Workspace

BitVoice puede mantener los Contactos en sincronización con el directorio de su organización: todos los que tengan un número de teléfono, y sus contactos compartidos (contactos de organización de Exchange, o contactos de dominio compartidos de Google). En Configuración (capítulo 14), Microsoft 365 y Google Workspace, elija el servicio, proporcione lo que necesita, y presione Comprobar ahora: inicia sesión, cuenta a las personas y dice qué extensiones coinciden con una persona por correo electrónico. Guarde, y Contactos se llenan en medio minuto; luego cada media hora, o de inmediato con Sincronizar contactos ahora.

Microsoft 365 (un registro de aplicación; necesita poder conceder consentimiento de administrador):

  1. En el centro de administración de Entra, Registros de aplicaciones, Nuevo registro: nómbrelo BitVoice, inquilino único, sin dirección de redireccionamiento.
  2. Permisos de API, Agregar un permiso, Microsoft Graph, Permisos de aplicación: User.Read.All, OrgContact.Read.All y Calendars.ReadBasic. Luego Conceder consentimiento de administrador.
  3. Certificados y secretos, Nuevo secreto de cliente: copie su valor (mostrado una vez).
  4. En BitVoice: el ID de directorio (inquilino), el ID de aplicación (cliente) y el secreto. Un secreto caduca (Microsoft ofrece hasta dos años): cuando lo hace, la tarjeta dice que el secreto fue rechazado; cree uno nuevo y péguelo.

Google Workspace (una cuenta de servicio; necesita ser un superadministrador):

  1. En Google Cloud, en uno de sus proyectos: active la API de personas y la API de calendario de Google, cree una cuenta de servicio, y agregue una clave (JSON) a ella.
  2. En la consola de administración de Google, Seguridad, Control de acceso y datos, Controles de API, Delegación de dominio, Agregar nuevo: el ID de cliente de la cuenta de servicio, con los ámbitos https://www.googleapis.com/auth/directory.readonly,https://www.googleapis.com/auth/calendar.freebusy.
  3. En BitVoice: el archivo de clave, y el correo electrónico de un administrador para que la cuenta de servicio actúe como.

Qué se incluye:

Capítulo 39

Calendarios y no molestar

En la interfaz web: /extensions

Una extensión puede seguir el calendario de su persona: durante las reuniones y el tiempo libre, sus llamadas van al correo de voz o se transfieren (a otra extensión o un móvil), en lugar de sonar un teléfono que nadie responderá. Los grupos de timbre suenan los demás mientras tanto, y en las colas el 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

En la extensión, Calendario y no molestar, pegue la dirección privada del calendario:

Comprobar lo lee de inmediato y enumera los próximos momentos ocupados. BitVoice lee cada calendario cada cinco minutos. El tiempo libre (eventos de todo el día y "fuera de la oficina" de Outlook) siempre cuenta; las reuniones cuentan cuando Las reuniones cuentan como ocupadas está activado; los eventos marcados como libres nunca cuentan, ni los cancelados. Las reuniones recurrentes, con ocurrencias omitidas y movidas, se entienden. Si un calendario no se puede leer, Salud lo dice.

No molestar ahora detiene el sonido de la extensión hasta que se desactive, independientemente de lo que diga el calendario. La lista de extensiones muestra quién está ausente y hasta cuándo.

La dirección privada funciona como una contraseña: cualquier persona con ella puede leer ese calendario, por lo que se mantiene con los demás secretos.

Cada calendario al mismo tiempo: Microsoft 365 y Google Workspace

En lugar de una dirección privada por extensión, BitVoice puede leer el calendario de cada persona desde Microsoft 365 o Google Workspace: configúrelo una vez en Configuración (capítulo 14), Microsoft 365 y Google Workspace (consulte Contactos (capítulo 38) para los pasos), con Calendarios indican quién está ausente activado. Cada extensión se empareja con su persona por su correo electrónico; una con una dirección privada utiliza esa en su lugar. La configuración de la extensión aquí (Las reuniones cuentan como ocupado, Mientras está ocupado, llamadas) se aplica como con una dirección privada.

Capítulo 40

Aplicaciones móviles

Las aplicaciones BitVoice para iPhone y Android convierten un teléfono móvil en uno de los teléfonos de una extensión. Suena como un teléfono de escritorio, en la pantalla de llamadas del teléfono, incluso cuando la aplicación está cerrada.

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

Configuración de push

Una aplicación cerrada se despierta para llamadas mediante un mensaje de push. En Configuración (capítulo 14), Aplicaciones móviles, elija uno:

PushLo que necesita
Relay de pushEl relay de BioDream (con alojamiento o soporte) o su propio bvpush: su Dirección de relay, ID de clave y Secreto
Aplicaciones propiasSus propias compilaciones: para Apple, el ID de equipo, ID de paquete, ID de clave y Clave (.p8); para Google, la cuenta de servicio de Firebase (JSON)

Establezca Dirección que utilizan las aplicaciones en la dirección https de este servidor como se alcanza desde cualquier lugar, no solo la oficina.

Emparejar un teléfono

  1. Abra la extensión y presione Agregar un teléfono.
  2. Escanee el código QR en la aplicación. El código funciona una vez, durante diez minutos.

Cuando llega una llamada

BitVoice despierta la aplicación; se conecta, suena en la pantalla de llamadas del teléfono y se responde como cualquier otro teléfono de la extensión: los grupos de timbre y las colas lo hacen sonar con los demás teléfonos de la extensión. La página de la extensión enumera sus teléfonos emparejados, si cada uno puede ser despertado para llamadas, cuándo se vio y se despertó por última vez, y cualquier problema de push. Desemparejar detiene un teléfono que suena de inmediato, para un teléfono perdido.

En una llamada

La aplicación es una extensión completa, no solo un dialer:

Las otras pestañas

Transcripción en vivo en una llamada

Con Escribir llamadas en vivo en (Configuración (capítulo 14), IA), cada lado de una llamada se escribe mientras se habla y se muestra en el teléfono mientras dura la llamada. El audio va al servicio de reconocimiento de voz (en su propio ordenador, donde esté configurado) o el servicio de IA mientras dura la llamada. Es la misma escritura que transcripciones en vivo de 911 (capítulo 13), para llamadas ordinarias.

Capítulo 41

Llamadas de video

En la interfaz web: /settings

Cuando ambos teléfonos en una llamada envían video (teléfonos de escritorio de video, softphones, timbres de video), la imagen pasa entre ellos a través de BitVoice. Nada que configurar: está activado a menos que Configuración → Llamadas de video esté desactivado.

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

Convertir video

Los teléfonos y aplicaciones que comparten un códec de video (la mayoría utilizan H.264) obtienen el video entre sí tal como es. Cuando dos partes no tienen un códec en común (un teléfono de escritorio con solo H.264 y un navegador con solo VP8), active Convertir video entre H.264 y VP8 en Configuración: BitVoice ofrece entonces ambos códecs, responde a cada parte en su propio códec y convierte cada vía con ffmpeg, que debe estar instalado en el servidor (apt install ffmpeg, brew install ffmpeg; o dar su ruta). La conversión cuesta alrededor de un núcleo de procesador por llamada y agrega un poco de retraso, por lo que está desactivado por defecto y se utiliza solo cuando es necesario. Configuración indica si se encontró ffmpeg.

Capítulo 42

Fax: envío y recepción, máquinas de fax y teléfonos analógicos

En la interfaz web: /faxes

Las máquinas de fax, los teléfonos analógicos, los teléfonos de puerta y las líneas antiguas se conectan a través de una pasarela SIP (o una tarjeta de telefonía en la computadora BitVoice: véase Tarjetas de telefonía (capítulo 6)): un ATA (Grandstream HT series, para uno o dos teléfonos analógicos o una máquina de fax), o una pasarela más grande (Patton SmartNode, AudioCodes MediaPack y Mediant) para muchos puertos analógicos, una línea ISDN (BRI/PRI) o líneas analógicas antiguas (FXO). Cada puerto se registra en BitVoice como una extensión, como un teléfono.

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

Recibir faxes sin una máquina de fax. En Faxes, agregar un número de fax (300, por ejemplo), con las direcciones de correo electrónico a las que llegan cada uno de los faxes. Luego, en Enrutamiento de llamadas (capítulo 8), enviar las llamadas de un número de teléfono a él. BitVoice responde como una máquina de fax, cambia la llamada a T.38 y recibe el fax; cada fax se convierte en un PDF, que se mantiene en Faxes (Ver, PDF) y se envía por correo electrónico. Un fax que se interrumpe a mitad de camino mantiene las páginas que llegaron y lo indica. Cada fax en la lista muestra la identidad de la máquina que lo envió o lo recibió cuando difiere del número, y la velocidad a la que se enviaron las páginas (14,400 bits por segundo es la velocidad más rápida; una máquina cuyos faxes fallan constantemente a una velocidad baja generalmente tiene una línea deficiente). Esto requiere un proveedor que admita T.38 (la mayoría lo hace); un fax enviado como sonido no se puede recibir de esta manera. Probado con T38Fax, un portador de faxes: registrar el tronco con su nombre de usuario y contraseña en sip.t38fax.com, puerto 5080 (UDP); permitir UDP desde sus redes (8.34.182.0/24 y 8.20.91.0/24) a través de cualquier firewall delante de BitVoice.

Envío de un fax. En Faxes, Enviar un fax: elija el número de fax del que proviene, escriba el número al que se envía, escriba una nota si lo desea (se convierte en la primera página) y agregue documentos. Los archivos de texto y las imágenes (PNG, JPEG, GIF) funcionan en todas partes. El PDF requiere poppler en el servidor (apt install poppler-utils, apk add poppler-utils, brew install poppler); Word, Excel, OpenDocument y RTF requieren LibreOffice también. La página indica qué puede hacer el servidor. Cada página obtiene una línea de encabezado, como las máquinas de fax lo imprimen: la hora, el nombre del número de fax, su identidad y el recuento de páginas. La llamada sale del número de identidad (+1 212 555 0300 llama desde +12125550300), o del número de fax en sí cuando la identidad no es un número. Las páginas son de carta de EE. UU. en Norteamérica y A4 en otros lugares, del país en Configuración.

BitVoice llama al número a través de sus rutas de salida, como una extensión lo haría, y envía a la tasa más rápida que la línea admite (14,400 bits por segundo, más lento si la línea es mala). Los faxes de un número de fax se envían uno a la vez. Un número ocupado o que no responde se intenta nuevamente cinco minutos después, tres veces en total. Los faxes enviados se enumeran con los recibidos: Enviado, Esperando para enviar, Fallido (con Intentar nuevamente), o Enviado parcialmente cuando la línea se interrumpió después de algunas páginas.

Correo electrónico a fax. Debajo de la lista, configure una bandeja de entrada para que BitVoice la lea (IMAP sobre TLS, puerto 993; para las bandejas de entrada de Google y Microsoft, use una contraseña de aplicación), luego Probar y Guardar. Cualquiera que esté autorizado a enviar escribe a esa bandeja de entrada con el número de fax en el asunto (Fax 212 555 0199), o a una dirección de correo electrónico con el símbolo más (fax+2125550199@example.com) si el servidor de correo electrónico las admite. Los archivos adjuntos se convierten en las páginas y las palabras del propio correo electrónico se convierten en la nota de cubierta (la firma y el correo electrónico citado se dejan fuera). Sale del número de fax que enumera al remitente: sus direcciones Enviar cada fax a pueden enviar siempre, y También puede enviar faxes por correo electrónico agrega otros (direcciones completas, o @example.com para un dominio). El remitente recibe un correo electrónico cuando el fax se ha enviado, o por qué no se pudo.

El correo electrónico es fácil de falsificar, por lo que BitVoice solo envía un fax cuando el servidor de correo electrónico del remitente encontró que realmente vino del dominio del remitente (DKIM, SPF o DMARC, en la línea Authentication-Results que agrega). Otros mensajes se descartan sin respuesta. Cambie Aceptar correo que el dominio del remitente no avaló solo para una bandeja de entrada a la que no puede llegar el correo electrónico externo.

Máquinas de fax en pasarelas. BitVoice transporta fax sobre T.38, el estándar de fax para internet: cuando la pasarela escucha un tono de fax, cambia la llamada a T.38, BitVoice pide al otro lado (su proveedor o otra pasarela) que cambie también, y pasa el fax entre ellos. Si el otro lado no puede hacer T.38, la llamada se mantiene en G.711 y el fax se envía como sonido, lo que funciona en una red buena. Las llamadas en vivo muestran fax (T.38) mientras un fax está pasando.

Para faxes confiables:

Capítulo 43

Bandeja de entrada: chat web, WhatsApp y Messenger

En la interfaz web: /inbox

La Bandeja de entrada (capítulo 43) contiene todas las conversaciones escritas en una lista: el cuadro de chat en su sitio web, WhatsApp, Facebook Messenger y mensajes de texto (capítulo 44). Cualquiera que haya iniciado sesión en la interfaz web puede responder; el primero en responder toma la conversación (cualquiera puede pasársela con Respondido por), y Cerrar la guarda hasta que la persona escriba de nuevo. Las conversaciones no leídas se cuentan y la lista se actualiza automáticamente.

El cuadro de chat en su sitio web

En Canales, active Chat web, elija su título, color y primera línea, y coloque la línea que muestra en las páginas de su sitio:

<script src="https://pbx.example.com:8443/webchat.js" async></script>

Dibuja un botón de chat en la esquina de cada página; los visitantes escriben (con su nombre si lo desean) y ven sus respuestas a medida que llegan. La conversación permanece en el navegador del visitante, por lo que continúa mientras se mueve entre páginas. Enumere sus sitios bajo Solo en estos sitios para que el cuadro no se ejecute en ningún otro lugar. Los visitantes deben llegar a la dirección de este servidor desde Internet, con un certificado que los navegadores confíen (Let's Encrypt (capítulo 14)). Diez nuevos chats desde una dirección en diez minutos es el máximo que acepta BitVoice.

WhatsApp

Números de WhatsApp Business en la API en la nube de Meta. En el sitio de desarrolladores de Meta, cree una aplicación con WhatsApp, agregue su número y cree un usuario del sistema con un token de acceso permanente. En Canales, active WhatsApp y proporcione el ID de número de teléfono y el ID de cuenta de negocio (ambos de la configuración de la API), el token de acceso y el secreto de la aplicación, luego guarde. En la configuración de WhatsApp de la aplicación, establezca el webhook: la dirección de devolución de llamada y el token de verificación que muestra BitVoice, suscrito a *mensajes*.

WhatsApp le permite responder libremente durante 24 horas después del último mensaje del cliente; después de eso, solo acepta plantillas de mensaje aprobadas en WhatsApp Manager. La casilla de respuesta se convierte entonces en un selector de plantilla: elija una plantilla (enumera las plantillas de su cuenta, con su idioma y tipo), complete sus valores ({{1}}, {{2}}...), verifique la vista previa, que es lo que el cliente leerá, y Enviar plantilla. Las plantillas que la bandeja de entrada no puede completar se enumeran en gris con la razón: una con un encabezado de imagen, video o documento, una variable en su encabezado o un enlace de botón; y aquellas que aún no han sido aprobadas. Cree plantillas en WhatsApp Manager; Meta revisa cada una, generalmente en cuestión de minutos.

Facebook Messenger

Para una página de Facebook: en la aplicación de Meta, agregue Messenger, conecte la página y cree un token de acceso de página. En Canales, proporcione el ID de página, el token de acceso de página y el secreto de la aplicación; luego configure el webhook (la dirección y el token de verificación que se muestra), suscrito a *mensajes* y *messaging_postbacks*. Las respuestas están permitidas durante 24 horas después del último mensaje de la persona. Desde entonces hasta 7 días, Messenger acepta respuestas escritas por una persona (enviadas con la etiqueta *agente humano* de Meta: la aplicación necesita la permiso de Agente Humano de Meta, solicitado en Revisión de la aplicación); el saludo automático nunca se envía entonces. Después de 7 días, la bandeja de entrada no acepta respuesta hasta que escriban de nuevo.

Cada webhook se verifica con el secreto de la aplicación (la firma de Meta) antes de que BitVoice lo crea, y un mensaje que Meta envía dos veces se mantiene una vez. Las imágenes, notas de voz y otros archivos adjuntos se muestran como lo que son ("[imagen]"); ábralos en las aplicaciones propias de Meta.

Saludo automático, cuando se configura, responde al primer mensaje de cada conversación nueva de inmediato.

Capítulo 44

Mensajería de texto (SMS)

En la interfaz web: /texts

Envíe y reciba mensajes de texto desde sus números de negocio en Textos. Los textos pasan a través de un proveedor de mensajería. Integrado: TextMagic, Twilio, SignalWire, Telnyx, Bandwidth, Vonage, Plivo, Flowroute y VoIP.ms, más Su propio webhook para cualquier otro servicio o una pasarela propia. Se pueden utilizar varias cuentas de proveedor al mismo tiempo: cada número indica cuál la 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

Configuración

  1. En el portal del proveedor, encuentre los detalles de la API de la cuenta. El formulario solicita exactamente lo que ese proveedor los llama (Twilio: Account SID y token de autenticación; Telnyx: una clave de API; Bandwidth: usuario de API, contraseña, ID de cuenta y ID de aplicación de mensajería; SignalWire: también su dirección de espacio) y dice dónde encontrarlos.
  2. En Textos, Configuración de mensajería, agregue el proveedor con ellos y guarde. BitVoice muestra una dirección para los textos recibidos: configurela en el proveedor como la dirección a la que se envían los mensajes recibidos (su callback, webhook o URL de mensaje). Para VoIP.ms, agregue ?from={FROM}&to={TO}&message={MESSAGE}&id={ID} al final. Los acuses de recibo de entrega enviados a la misma dirección se ignoran. BitVoice debe ser accesible desde Internet allí.
  3. Agregue cada número desde el que envía textos (con su código de país), el proveedor que lo transporta y las extensiones para informar por correo electrónico cuando llegue un texto.

US 10DLC

Los operadores de EE. UU. bloquean los mensajes de texto de números de negocios ordinarios que no están registrados. Registre su marca y luego una campaña con su proveedor de mensajes de texto; la lista de verificación en Textos rastrea su estado y advierte cuando su mensaje de muestra carece de las palabras de renuncia que los operadores esperan.

Conversaciones

Cada conversación muestra quién es (desde Contactos), mensajes de texto no leídos y el hilo. Entrar envía; el contador muestra cuántos mensajes de texto toma un mensaje largo. Cuando alguien responde STOP, nada más se puede enviar a ellos desde ese número hasta que respondan START. Los mensajes de texto recibidos también aparecen como una notificación en BitVoice.

Capítulo 45

Transferir informes breves

En la interfaz web: /settings

Para que un llamador nunca tenga que repetirse: con Informar brevemente a quien se transfiere la llamada activado (Configuración, IA), cuando se transfiere una llamada, BitVoice escribe un resumen de dos oraciones de la llamada hasta ahora (quién llama, qué quiere, cualquier cosa ya prometida) para la persona a la que se transfiere. Aparece en su teléfono del navegador con la llamada que suena, en Llamadas en vivo (capítulo 46), y como un mensaje de texto en la pantalla del teléfono de su escritorio (para teléfonos que muestran mensajes 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 de la misma manera cuando el asistente de recepción de IA pasa un llamador a una persona: el informe breve proviene de lo que el llamador le dijo al asistente.

Necesita el servicio de IA y un modelo de habla a texto (Configuración, IA), y el audio de la llamada hasta ahora (hasta cinco minutos) se envía a ese servicio para que se escriba. Un resumen tarda unos segundos, por lo que puede aparecer justo después de que el teléfono comience a sonar.

Parte 4

Clientes y perspicacia

Saber quién llamó y cómo fue: las llamadas en vivo y la historia, la línea de tiempo del cliente, CRM, grabaciones y consentimiento, calidad, costos y reputación de ID de llamante.

Capítulo 46

Llamadas en vivo

En la interfaz web: /calls

Llamadas en vivo muestra cada llamada en progreso, actualizada a medida que sucede: quién llamó a quién, cuánto tiempo lleva, sus codecs y su calidad.

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

Qué pueden hacer los administradores

AcciónQué hace
Colgarfinaliza la llamada para ambas partes
Abrir la puertapara una llamada desde una estación de puerta
Pausar grabaciónpara un número de tarjeta: el tramo pausado es silencioso en la grabación y marcado en el historial (Grabación de llamadas (capítulo 51))
Escucharescuchar la llamada silenciosamente
Susurrohablar con el agente solo; el llamador no escucha
Intervenirunirse a la llamada; todos lo escuchan

Para escuchar, susurrar o intervenir, presiona Supervisar, elige el teléfono que usarás debajo de Desde teléfono y presiona Llámame: tu teléfono suena, y cuando respondes, te unes a la llamada. Puedes cambiar entre escuchar, susurrar e intervenir mientras estás en ella.

Qué más se muestra

Cuando una llamada termina, se mueve a Historial de llamadas (capítulo 47).

Capítulo 47

Historial de llamadas

En la interfaz web: /history

Cada llamada finalizada: quién llamó a quién, cuándo, durante cuánto tiempo y cómo terminó. Ordenar las columnas, reproducir grabaciones (una pausa para números de tarjeta está marcada), y descargar la lista como CSV. Cuánto tiempo se conservan los registros se establece en Configuración, Grabación de llamadas; una retención legal (capítulo 73) los mantiene durante más tiempo.

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

Cómo se enruta

Bajo cada resultado de llamada, Cómo se enruta enumera, en palabras sencillas y en orden, qué decidió adónde iría la llamada: la ruta de entrada que la tomó, si un horario estaba abierto o cerrado y la hora, un lado de un conmutador, qué eligió un script de enrutamiento (o que su fallback tomó la llamada), las teclas presionadas en un menú, quién estaba ausente, quién no tenía un teléfono conectado, quién no respondió, la ruta de salida y los troncos utilizados (y un tronco que el juez de salud movió detrás de los demás), el juicio del guardián de fraude de toll, y, para una llamada grabada cuyas partes están bajo diferentes reglas de consentimiento, qué regla se aplicó.

Calidad, sonido y cifrado

La columna Calidad muestra la puntuación de cada llamada respondida (MOS, sobre 5) y dos marcas cuando se aplican:

Transcripciones y búsqueda

Con la inteligencia artificial activada y Transcribir llamadas grabadas activado (Configuración, IA), cada llamada grabada se escribe, con un resumen breve y sus elementos de acción: qué alguien acordó o se le pidió hacer. Cada lado de la llamada se escribe por separado desde la grabación, por lo que la transcripción muestra quién dijo qué y cuándo. El botón de transcripción junto a una grabación la abre; los administradores también pueden transcribir una sola llamada o transcribirla de nuevo.

Buscar lo que se dijo encuentra llamadas por palabras de sus transcripciones, resúmenes y elementos de acción. Solo se transcriben las llamadas grabadas. Una transcripción se elimina con su grabación, y la lectura o búsqueda de transcripciones se anota en el registro de auditoría, al igual que la reproducción de una grabación.

Capítulo 48

Línea de tiempo del cliente

En la interfaz web: /timeline

La línea de tiempo del cliente muestra todo lo relacionado con un número de teléfono en el último año, más reciente primero, para que quien lo atienda sepa la historia completa.

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

Muestra

ElementoCon
Llamadasquién las atendió, cuánto duraron, y con una transcripción, su resumen, la grabación y la transcripción
Mensajes de vozsus resúmenes
Textosen ambos sentidos
Llamadas de devoluciónsolicitadas y si se realizaron
Notaslas notas propias del equipo

Un número coincide independientemente de cómo esté escrito: +1 212 555 0100 y 2125550100 son lo mismo.

Abrirlo

Desde una tarjeta de llamador (Cronología), desde Contactos, desde una llamada entrante en el historial de llamadas, desde una conversación de texto, o escribiendo un número en la parte superior de Cronología (capítulo 48).

Notas

Los administradores pueden Agregar una nota para el equipo: se muestra en la cronología para todos, con quién la escribió y cuándo, y se puede eliminar.

Capítulo 49

CRM: tarjetas de llamadores y registro de llamadas

En la interfaz web: /settings

Conecte un sistema de cliente en Configuración (capítulo 14), CRM. Funciona con cualquier sistema que tenga una dirección web, sin código escrito para cada producto.

+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

Tarjetas de llamadores

Mientras una llamada desde fuera timbra, Llamadas en vivo muestra una tarjeta: quién es (de su CRM, o el nombre de la extensión), con qué frecuencia han llamado en 90 días, cualquier devolución de llamada (capítulo 30) que estén esperando, y el resumen de su última llamada transcrita. El teléfono del navegador muestra una tarjeta más corta a la persona que responde: quién es, llamadas pasadas y devoluciones de llamada en espera, pero no resúmenes de llamadas de otras personas.

Para el nombre, establezca Dirección de búsqueda: BitVoice la solicita (GET) con el número de llamador en lugar de {number}, enviando Encabezado de búsqueda con su valor (una referencia de bóveda funciona), y espera JSON con nombre, empresa, url y notas; 404 significa desconocido. Las respuestas se mantienen durante cinco minutos. Enlace de apertura en CRM coloca un enlace al llamador en la tarjeta. Use Buscarlo para probar un número antes de guardar.

La respuesta de un CRM

La mayoría de los CRM responden a una búsqueda en su propia forma, generalmente una lista de coincidencias, no {"name": ...} de BitVoice. Abra Campos de respuesta y diga dónde se encuentra cada parte, como una ruta con puntos: un nombre se introduce en un objeto y un número en una lista, por lo que list.0.name es el nombre de la primera coincidencia. Enlace al contacto puede ser una ruta a un enlace que proporciona el CRM o una dirección web con rutas entre llaves, como https://crm.example.com/#Contact/view/{list.0.id}. Un campo vacío lee el nombre propio de BitVoice para él. Una búsqueda que no encuentra a nadie es lo mismo que 404: la tarjeta dice que el llamador no es conocido. Intente un número con Buscar antes de guardar.

Por ejemplo, EspoCRM (probado contra un EspoCRM real): cree un usuario de API (Administración, usuarios de API, autenticación por clave de API) con un rol que pueda leer contactos y cuentas, luego configure:

EspoCRM mantiene números en forma internacional (+15405550117), como BitVoice los pasa. Otros CRM funcionan de la misma manera con su propia dirección de búsqueda y nombres de campo; verifique la forma de su respuesta en su documentación de API o con Buscar, cuyo mensaje nombra lo que encontró.

Registro de llamadas

Establezca Dirección del registro de llamadas y Secreto de firma, y cada llamada se envía allí cuando termina (evento call.ended), nuevamente con su resumen, elementos de acción y transcripción una vez transcrita (call.summarized), y cada llamada de devolución reservada (callback.new). Cada POST lleva X-BitVoice-Event, X-BitVoice-Timestamp y X-BitVoice-Signature: sha256= seguido del HMAC-SHA256, con el secreto, de la marca de tiempo, un punto y el cuerpo. Un intento de entrega fallido se intenta cuatro veces en aproximadamente un minuto; si todavía falla, Health lo indica. Enviar un evento de prueba verifica la dirección y el secreto.

Capítulo 50

Perspectiva de llamada para supervisores

En la interfaz web: /quality

Para centros de contacto: evidencia de cómo fueron las llamadas, para que un supervisor las escuche, nunca una puntuación 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

En la Transcripción de una llamada, Cómo fue muestra, medido solo por el sonido de la grabación: cuánto habló cada lado, el tramo más largo de cada lado, con qué frecuencia cada lado comenzó a hablar sobre el otro, cuánto tiempo hablaron ambos al mismo tiempo y el silencio (un silencio largo es a menudo una espera o aire muerto).

Con Nota de cómo fue cada llamada transcrita activado (Configuración, IA), la IA también lee la transcripción y dice cómo parecía el que llama al principio y al final, y enumera hasta seis momentos: Fue bien, Mira (hablando sobre el que llama, una espera larga, una respuesta poco clara), No respondido (una pregunta que el que llama hizo que no obtuvo respuesta) y Prometido (algo que alguien dijo que haría), cada uno con el tiempo y las palabras dichas, para que pueda ir directamente a él. Un administrador puede pedirlo en cualquier llamada transcrita con Mira esta llamada.

En Calidad de llamada (capítulo 50), Conversaciones, por quién las atendió resume las llamadas transcritas del período por persona: su participación en la conversación, su racha más larga, con qué frecuencia habló sobre el llamador, tiempo de silencio, llamadas que terminaron con el llamador molesto y los momentos marcados. Úselo para elegir llamadas para escuchar, no para clasificar a las personas.

Notas de capacitación son sus propias palabras sobre una llamada, en el momento en que se refieren a ella: debajo de Cómo fue, escriba el Momento (1:05, o déjelo vacío para el principio) y la Nota de capacitación, y presione Agregar nota. Las notas se enumeran en el orden de la llamada con quién las escribió y cuándo; los administradores las escriben y eliminan, los espectadores las leen con la transcripción y agregar o eliminar una se anota en el registro de auditoría. Van con la grabación, por lo que su retención y retención legal también las cubren. Notas de capacitación en Calidad de llamada las cuenta por persona.

Capítulo 51

Grabación de llamadas y pagos con tarjeta

La grabación se configura en Configuración (capítulo 14), Grabación de llamadas: desactivada, cada llamada o solo las llamadas de las extensiones marcadas Grabar llamadas. Las grabaciones se reproducen desde Historial de llamadas (capítulo 47), y con la IA activada se escriben y resumen.

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 a las personas

Algunos lugares necesitan que todos los participantes en una llamada sean informados de que está siendo grabada: Anuncio, Pitido y reglas por región se encuentran en Consentimiento de grabación (capítulo 52).

Pagos con tarjeta (PCI DSS)

Los números de tarjeta no deben mantenerse en las grabaciones. Antes de que el llamador lea uno, la persona en la extensión presiona *7; *8 reanuda. Pausar grabación en Llamadas en vivo (capítulo 46) hace lo mismo. El tramo pausado es silencioso en la grabación y se enumera en el historial de llamadas, para que un auditor pueda ver dónde y durante cuánto tiempo.

Salas de conferencia

Una sala con Grabar la sala activada se mantiene como una sola grabación de toda la sala (Salas de conferencia (capítulo 34)).

Cuánto tiempo se mantienen las cosas

La configuración establece cuántos días se mantienen las grabaciones, el historial de llamadas y el correo de voz; los más antiguos se eliminan dentro de una hora. Cualquier cosa bajo una retención legal (capítulo 73) se mantiene sin importar su edad. El archivo (capítulo 72) puede mantener copias en otro lugar.

Los administradores y los espectadores pueden reproducir grabaciones y leer transcripciones; solo los administradores pueden transcribir una llamada o transcribirla nuevamente. Reproducir una grabación o leer su transcripción se anota en el registro de auditoría.

Capítulo 53

Calidad de la llamada

En la interfaz web: /quality

Cómo sonaron las llamadas durante el último día, semana, mes o 90 días, desde el sonido que BitVoice recibió en cada lado de cada llamada. Los teléfonos se agrupan por su sitio (capítulo 12) (o "sin sitio"), y las llamadas desde fuera por la línea del proveedor que llegaron.

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 lugar muestra sus llamadas, su puntuación media (MOS, sobre 5: por encima de 4 es buena, por debajo de 3.6 suena pobre), la proporción de paquetes de sonido que nunca llegaron y jitter (retraso irregular). Debajo de eso, BitVoice dice qué está mal en palabras sencillas, por ejemplo "Pérdida de paquetes en la red de la oficina central: el 3.2% del sonido nunca llegó, principalmente entre las 14:00 y las 16:00", con qué verificar. El gráfico de barras muestra el sonido perdido por hora del día.

El diagnóstico compara las dos mitades de las mismas llamadas: el sonido desde los teléfonos del sitio y el sonido desde el proveedor por el que pasaron las mismas llamadas. Cuando la otra mitad llegó limpia, la pérdida es de este lado y lo dice; cuando ambas mitades perdieron sonido, el lugar no es el único culpable y señala lo que las llamadas comparten, el enlace a Internet de este sistema. Si todos los lugares pierden sonido al mismo tiempo, la causa es igualmente lo que comparten. Cómo se trabajó esto enumera los motivos, paso a paso (el libro de reglas de calidad de la llamada, ver Seguridad (capítulo 60), "Cómo decide BitVoice"). Los lugares con menos de tres llamadas no son juzgados. La calidad por llamada también está en Historial de llamadas (capítulo 47) (la columna Calidad) y, mientras las llamadas están activas, en Llamadas en vivo (capítulo 46).

Una llamada que se conectó pero no obtuvo ningún sonido de un lado se cuenta por separado, bajo sin sonido, y se coloca primero: no es sonido pobre, sino sonido que nunca llegó, casi siempre un firewall o router NAT que deja pasar SIP y mantiene el medio fuera. El consejo del lugar dice qué verificar (para un proveedor, sus rangos de direcciones de medios).

Capítulo 54

Costos y presupuestos

En la interfaz web: /costs

BitVoice calcula el precio de cada llamada según lo que su proveedor cobra, y muestra el gasto del mes por departamento, persona y troncal, con las llamadas más costosas.

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

Precios

En Troncales (capítulo 7), abra una troncal y sus Precios de llamada. Cada precio cubre números que comienzan con algunos dígitos, como se envía el número al proveedor (solo dígitos, por lo que 44 para el Reino Unido, 1900 para tarifa premium de EE. UU.); la coincidencia más larga gana, y un precio sin dígitos cubre todos los demás números. Proporcione el precio por minuto, cualquier cargo por llamada respondida, el paso de facturación (60 segundos para minutos completos, 6 o 1 para más fino) y cualquier mínimo. Llamadas entrantes, por minuto es para números de tarifa gratuita que paga para recibir. ¿Cuánto costaría verifica un número antes de que alguien lo marque. La moneda se establece en Costos.

El costo de una llamada es fijo cuando termina, con los precios del momento; cambiar un precio no cambia las llamadas pasadas. Costos dice cuántas llamadas salientes respondidas no tenían precio.

Departamentos y presupuestos

Asigne a las extensiones un Departamento (en la extensión). En Costos, agregue un presupuesto para cada llamada o para un departamento: aparece una alerta en BitVoice, y se envía por correo electrónico a la dirección del presupuesto y la dirección de alerta, al 80% y nuevamente al 100% del mes.

La alarma

Las llamadas salientes cuestan más de esto en una hora activa una alarma cuando las llamadas salientes superan esa cantidad dentro de cualquier hora. Una serie repentina de llamadas costosas es el signo habitual de fraude de tarifa (una contraseña de teléfono robada): verifique el historial de llamadas, luego desactive la extensión o la troncal.

Capítulo 55

Reputación de ID de llamador y llamadas con marca

En la interfaz web: /reputation

Las compañías telefónicas ejecutan filtros de spam que pueden etiquetar un número de negocios como "Spam probable", o bloquearlo, y entonces casi nadie responde. Reputación de ID de llamador observa cada número que llama desde, desde sus propias llamadas, y dice en palabras llanas cómo está funcionando:

Los números con menos de 20 llamadas se muestran como demasiado pocos para juzgar.

Sus números de salida da a cada número un nombre (enviado como el nombre del que llama), un motivo para llamar y un logotipo (una imagen https://). En un tronco con Enviar identificador de llamada con marca activado, el logotipo y el motivo se envían como datos de llamada enriquecidos (RFC 9796 Call-Info); los operadores que admiten llamadas con marca las muestran en el teléfono llamado. La mayoría de los teléfonos muestran el nombre de la base de datos de nombre del que llama (CNAM) en su lugar, que establece su proveedor: pídale que lo haga. Vigilar coloca una advertencia en Salud cuando un número vigilado comienza a parecer etiquetado.

La página también dice qué hacer cuando un número está etiquetado.

Capítulo 56

Protección contra spam y STIR/SHAKEN

En la interfaz web: /settings

En EE. UU. y Canadá, el proveedor con el que comienza una llamada la firma con su ID de llamador (STIR/SHAKEN): A cuando sabe que el llamador puede usar el número, B cuando sabe quién es el llamador pero no el número, C cuando solo pasa la llamada. Su proveedor le informa a BitVoice su veredicto (verstat) o pasa el encabezado de Identidad firmado, que BitVoice verifica: la firma, que es de menos de un minuto de antigüedad y que nombra los números de esta llamada. El veredicto se muestra como Verificado, Parcialmente verificado, No verificado o No verificado en Llamadas en vivo y en Historial de llamadas.

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

En Configuración, Protección contra spam, elija qué sucede cuando un ID de llamador no supera la verificación (sonar, sonar etiquetado o rechazar), cuando no está verificado en absoluto y cuando el número está retenido. Una llamada etiquetada suena con Spam? (o su propia etiqueta) antes del nombre del llamador. Los números bloqueados se rechazan; una entrada que termina en * bloquea un rango (+1900* es cada número de tarifa premium de EE. UU.). Los números siempre permitidos nunca se rechazan ni se etiquetan. En Historial de llamadas, el botón de bloqueo junto a un llamador lo agrega a la lista; las llamadas rechazadas se enumeran como Bloqueado.

Dentro de una hora de una llamada de emergencia desde cualquier extensión, no se rechaza ninguna llamada (las llamadas bloqueadas suenan etiquetadas en su lugar), en caso de que sea el servicio de emergencia que llama de vuelta. Una llamada de 911 (desde ESInet o una troncal CAMA) nunca se rechaza ni se retrasa por la pantalla.

Llamantes que BitVoice no conoce

Un llamante es conocido cuando el número es siempre permitido, está en los contactos (capítulo 38), fue llamado desde aquí en el último año o pasó la prueba del robot en los últimos 90 días. Los números se coinciden sin importar cómo estén escritos (con o sin el código de país, 1, 0 o +). En Llamantes que BitVoice no conoce, elija qué sucede con todos los demás:

OpciónQué recibe el llamante
Sonar como de costumbrela llamada suena como cualquier otra (el valor predeterminado)
Prueba del robot primeroBitVoice responde y dice "Para ser conectado, por favor presione" y un dígito, que cambia cada llamada. La tecla correcta los conecta a donde iba la llamada; cualquier otra cosa, o nada (dos veces), y van a Llamantes que no superan la prueba van a, o escuchan adiós. Los llamantes automatizados no presionan la tecla
Enviar a otro lugarnada suena: van directamente al lugar elegido, una casilla de correo de voz, por ejemplo

La prueba del robot necesita sus palabras: en Sonidos (capítulo 20), grabe o cree (con un servicio de voz) las llamadas de pantalla y los números del 1 al 9 en el idioma de los llamadores. Hasta que estén grabados, esas llamadas suenan como de costumbre (un llamador no puede pasar una prueba que no puede escuchar), y Salud lo dice. Un llamador que pasa cuenta como conocido durante 90 días. La prueba responde la llamada, por lo que el proveedor del llamador comienza a cobrarle desde ese momento, como con cualquier llamada respondida. El historial de llamadas muestra el resultado de cada llamada (aprobado, reprobado, enviado) y el rastro de por qué dice qué sucedió.

Una base de datos de spam

BitVoice puede preguntar a un servicio de reputación sobre cada llamador desconocido antes de que la llamada suene. Usar Nomorobo a través de Twilio rellena Twilio Lookup con la puntuación de spam de Nomorobo (instale el complemento Nomorobo en su cuenta de Twilio, luego ingrese su SID de cuenta y token de autenticación); cualquier otro servicio que responda en JSON también funciona: proporcione su dirección con {e164} (+12125550142) o {number} (como lo envió el proveedor), donde está su veredicto (Campo de veredicto, una ruta con puntos), y cuándo significa spam (una puntuación en o por encima de Spam en puntuación, verdadero, o el texto en O spam cuando el texto es, como BLOCK). Elija qué sucede con un llamador que llama spam: etiquetado, la prueba del robot o rechazado.

Bloquear el último llamador

Inmediatamente después de una llamada no deseada, marque *32 (Códigos de función (capítulo 32)) desde el teléfono que sonó: el último número exterior que sonó en esa extensión en el último día se agrega a la lista de bloqueo, y el teléfono lee el número de nuevo. Un número siempre permitido no se bloquea, y el teléfono lo dice. Cada uno está en el registro de auditoría, con quién lo bloqueó.

Sugerido desde sus llamadas

BitVoice lee los últimos 30 días de llamadas desde fuera para números que llaman una y otra vez y se eliminan de inmediato: tres llamadas o más, casi todas ellas superadas en 10 segundos, o dos pruebas de robot fallidas, y nunca una conversación real (alguien hablando 30 segundos o más). Los números conocidos se dejan fuera. Cada uno viene con por qué; Bloquear lo agrega a la lista de bloqueo y No spam significa que nunca se sugiere de nuevo. Nada se bloquea hasta que una persona lo diga.

Para verificar los certificados contra las autoridades de STI, pegue sus certificados debajo de Autoridades de certificación de STI; sin ellos, BitVoice verifica que la llamada se firmó con el certificado que nombra pero no quién emitió ese certificado.

Firmar sus propias llamadas

La mayoría de los proveedores firman las llamadas de sus clientes ellos mismos. Si el suyo lo permite (o es un proveedor que ejecuta BitVoice), active Firmar ID de llamador en el troncal (Troncales (capítulo 7)) y proporcione su Certificado de STI (de una autoridad de certificación de STI, con su token de código de proveedor de servicio) y su clave privada (P-256). Cada llamada que sale a través del troncal lleva entonces un encabezado de Identidad firmado (ES256, como requiere SHAKEN).

Parte 5

Ejecutar BitVoice

Mantenerlo seguro y en funcionamiento: administradores y inicio de sesión, seguridad, cambios y actualizaciones, varios servidores, organizaciones alojadas, codecs, Equipos, importación, automatización y las herramientas para encontrar fallos.

Capítulo 57

Administradores

En la interfaz web: /users

Los administradores son las personas que se conectan a esta interfaz web. El personal que solo cuida sus propias llamadas utiliza el portal de personal en su lugar y no necesita una cuenta aquí (El portal de personal (capítulo 33)).

Roles

RolPuede
Administradorcambiar cualquier cosa, reproducir grabaciones, ver la existencia de cada campo secreto (nunca su valor)
Observadorver todo, cambiar nada; secretos ocultos

Un cambio de rol o de contraseña cierra la sesión de la persona en todas partes al mismo tiempo.

Inicio de sesión de dos pasos

Cada persona activa el inicio de sesión de dos pasos para sí mismo: Configurar muestra una clave para una aplicación autenticadora; ingresar el código que muestra la activa. A partir de entonces, el inicio de sesión solicita un código además de la contraseña. Desactivarla requiere la contraseña.

Inicio de sesión único

Con el inicio de sesión único (Configuración), las personas se conectan con la cuenta de la organización (Microsoft Entra, Google, Okta, cualquier proveedor de OpenID Connect), y se crea una cuenta para ellos la primera vez. Vea Inicio de sesión único (capítulo 58).

Tokens de API

Los programas (Terraform, scripts) utilizan tokens de API en lugar de una contraseña: se crean en esta página, se muestran una vez y se revocan en cualquier momento. Cada token es un administrador o un observador. Un token creado con Nombra a la persona que actúa en su nombre (para un CAD) puede enviar X-BitVoice-On-Behalf-Of con el nombre de la persona, y los registros entonces nombran a esa persona junto al token (Llamadas de emergencia (capítulo 77)).

Capítulo 58

Inicio de sesión único

El inicio de sesión único permite a las personas iniciar sesión en BitVoice con su cuenta de trabajo, a través de cualquier proveedor de OpenID Connect: Microsoft Entra ID, Google, Okta, Keycloak y otros. Dejar la organización elimina su acceso aquí también.

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

Configuración

En Configuración (capítulo 14), Inicio de sesión único:

  1. Registre una aplicación con el proveedor, con la Dirección de redireccionamiento mostrada aquí.
  2. Rellenar para un proveedor establece el Emisor para los comunes; copie el ID de cliente y Secreto de cliente del proveedor.
  3. Asigne un nombre a los Grupos de administradores y Grupos de espectadores del proveedor. Reclamación de grupos es donde el proveedor los coloca (groups a menos que se establezca).
  4. Opcionalmente, cambie el Texto del botón en la página de inicio de sesión.
  5. Active Usar inicio de sesión único.

Cómo funciona

Capítulo 59

Directorio de la empresa (Active Directory y LDAP)

BitVoice puede leer su directorio de la empresa, Active Directory o otro servidor LDAP (OpenLDAP, Samba, 389 Directory Server, FreeIPA): las personas con un número de teléfono se convierten en extensiones, los grupos de directorio llenan los grupos de timbre y las personas iniciaron sesión en la interfaz web con su contraseña de directorio. BitVoice solo lee el directorio; nunca escribe en él.

Conexión

En Configuración (capítulo 14), Directorio de la empresa:

  1. Elija Active Directory o OpenLDAP o otro servidor LDAP: establece qué atributos se leen (sAMAccountName o uid para el nombre de inicio de sesión, displayName o cn, mail, telephoneNumber). Cambie cualquiera de ellos en su cuadro.
  2. Servidor: ldaps://dc1.example.com (puerto 636), o ldap://... con StartTLS activado. El LDAP plano se rechaza a menos que el servidor sea esta computadora, porque las contraseñas cruzarían la red sin cifrar. Cuando el certificado del servidor proviene de su propia autoridad de certificación, pegue la autoridad en Autoridad de certificación de la empresa.
  3. Cuenta de lectura y Su contraseña: una cuenta permitida para leer personas y grupos (reader@example.com en Active Directory). La contraseña puede ser una referencia al almacén de claves (Configuración, Almacenes de claves).
  4. DN base: donde están las personas y los grupos (dc=example,dc=com). Qué personas limita con un filtro LDAP; en Active Directory, las cuentas deshabilitadas siempre se dejan fuera.
  5. Probar inicia sesión con la cuenta de lectura y lee a todos, sin cambiar nada: muestra cuántas personas encontró, cuántas tienen un número y la extensión que cada una obtendría.

Extensiones y grupos de timbre

Inicio de sesión

Con Las personas inician sesión aquí con su nombre de directorio y contraseña activado, la página de inicio de sesión acepta nombres de directorio y contraseñas, así como las cuentas propias de BitVoice:

Capítulo 60

Seguridad

En la interfaz web: /security

Un sistema de telefonía en Internet es atacado dentro de horas: los escáneres intentan contraseñas en cada puerto SIP, y un sistema comprometido genera llamadas a números de tarifa premium. BitVoice está diseñado para resistir eso por defecto, en capas.

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 el adivinamiento de contraseñas

Contra el fraude

El guardián de fraude de tarifa

Active el interruptor en Configuración, Guardián de fraude de tarifa. Cada llamada al exterior del país (por +, 00 o 011, y los lugares que comparten +1 con Norteamérica pero son países diferentes, como Jamaica, un destino clásico de fraude de tarifa) se juzga entonces antes de que se realice:

SituaciónQué hace
Una llamada al extranjero a un país al que esta extensión llamó en los últimos 90 díasla deja pasar
Una primera llamada a ese país en 90 díasla deja pasar y la informa
Una primera llamada allí fuera del Horario de oficina, o realizada desde fuera (un marcado, un reenvío)solicita el PIN solicitado (con ninguno elegido, la rechaza)
Más de Llamadas al extranjero en 10 minutos desde una extensiónla rechaza
Una primera llamada al extranjero mientras alguien está adivinando contraseñas (tres intentos fallidos seguidos desde una dirección, o un bloqueo, en la última hora)la rechaza
Un número de emergenciasiempre la deja pasar

Países siempre permitidos (códigos de llamada, como 44) y Excepciones (una extensión eximida hasta un día, para un viaje) eliminan "primera llamada" y "fuera del horario"; nunca excusan muchas llamadas en un corto tiempo o un ataque, porque una contraseña robada parece aprobada también. Si no se puede leer el historial de llamadas, el guardián no sabe si una llamada es la primera, y algo no medido nunca se considera seguro: solicita el PIN. Cada juicio se enumera en Seguridad (capítulo 60) con sus razones, y está en el registro de la llamada en Historial de llamadas (capítulo 47).

Cómo decide BitVoice

Los jueces de BitVoice (el guardián de fraude de tarifa, el juez de salud de la troncal, el diagnóstico de calidad de la llamada y la verificación de ubicación del llamador de emergencia 911) siguen cada uno un libro de reglas: hechos que se miden, conclusiones que respaldan, las excepciones que anulan una conclusión y las opciones. Cómo decide BitVoice, en Seguridad (capítulo 60), muestra cada libro de reglas. Las reglas que los jueces mantienen:

Cifrado

Quién puede hacer qué

Capítulo 61

Cambios, copias de seguridad e importación

En la interfaz web: /changes

Cada cambio guardado es una revisión: numerada, con quién lo hizo, cuándo y un resumen de una línea. Nada en la configuración se pierde nunca.

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

Comparar y restaurar

Exportar e importar

Cambios realizados al mismo tiempo

Dos administradores que editan lo mismo al mismo tiempo no pueden sobreescribirse mutuamente: el segundo guardado se rechaza con un mensaje para recargar, y nada se pierde.

Capítulo 62

Actualizaciones

En la interfaz web: /updates

Actualizar BitVoice es un clic, y es seguro: verifica la nueva versión, la instala junto a la antigua y vuelve a la anterior si la nueva no se mantiene.

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

Instalar una actualización

  1. Descargue la nueva versión y desempaquétela. Junto al programa está su firma de BioDream: bitvoice.sig, o bitvoice.exe.sig en Windows.
  2. En Actualizaciones (capítulo 62), cargue el programa y su archivo .sig.
  3. Presione Instalar. Por defecto, BitVoice espera hasta que no haya llamadas en progreso; también puede instalar de inmediato.
  4. BitVoice se reinicia con la nueva versión. Con varios servidores, las llamadas en progreso se transfieren a otro servidor y continúan.

Volver

La versión que dejó se mantiene: Volver regresa a ella en un clic. Una nueva versión que no se inicia dos veces, o no se mantiene durante un minuto, es reemplazada por la anterior por sí misma.

Firmas

Cada lanzamiento desde la v0.1.3 lleva la clave de lanzamiento de BioDream. Una compilación así solo instala programas firmados con esa clave: un archivo no firmado, uno firmado por otra persona o uno modificado por un solo byte es rechazado con la firma no coincide. La página dice si esta compilación verifica (Requerido) o no.

Usted ejecutaActualizaciones acepta
una versión, v0.1.3 o posteriorsolo programas firmados por BioDream
v0.1.2 o anterior, o una compilación propiacualquier programa: sin clave, un archivo .sig no se puede comprobar y se ignora
Capítulo 63

Varios servidores como un sistema de telefonía

En la interfaz web: /servers

Dos o más servidores BitVoice que comparten una base de datos PostgreSQL funcionan como un sistema de telefonía:

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

Configuración

  1. Mueva los datos del primer servidor a PostgreSQL: Configuraciones, Base de datos.
  2. Inicie cada servidor con la misma base de datos: bitvoice -database postgres://… (o la variable de entorno BITVOICE_DATABASE). Se une al instante; Servidores lo enumera.
  3. En Servidores, verifique dónde se puede llegar a cada servidor (su dirección y puerto SIP en la red que los servidores comparten) y asígnele un nombre. Los servidores que se pueden llegar desde Internet en una dirección propia (servidores en la nube con direcciones IP públicas, sin dirección compartida) también obtienen Su propia dirección pública: los proveedores y los teléfonos externos se les dice que es esa, para que cuando un servidor tome una llamada, el sonido del proveedor la siga. Si se deja vacío, un servidor usa la dirección pública en Configuraciones.
  4. Indique a los teléfonos cómo encontrar los servidores (a continuación).
  5. Líneas de proveedores (a continuación).

Cómo los teléfonos encuentran los servidores. Los teléfonos que BitVoice configura (Yealink, Polycom, Grandstream) se les da otro servidor en ejecución como su servidor de respaldo por sí mismos. Para los demás, Snom y teléfonos configurados manualmente, use uno de los siguientes en Servidores:

Líneas de proveedores. En cada troncal, Compartida entre servidores indica cómo:

Cuando un servidor se detiene

Entre servidores. Los servidores se comunican entre sí a través de su puerto SIP sobre TCP, o TLS cuando tienen un certificado (cada uno acepta solo el certificado que el otro publicó, y el sonido entre ellos se cifra con SRTP), y envían sonido a los puertos de medios del otro (UDP, el rango en Configuración). Las llamadas entre servidores están firmadas con un secreto que comparten en la base de datos, y solo se aceptan de un miembro en ejecución en su propia dirección. Un firewall entre ellos debe permitir que esos puertos pasen.

Pruebe primero: el laboratorio. BitVoice viene con un laboratorio que ejecuta dos servidores, su base de datos y teléfonos de prueba en una computadora con Docker, cada uno en una dirección propia: deploy/lab/run.sh up construye y inicia el laboratorio y establece la dirección compartida; run.sh call realiza llamadas entre teléfonos en servidores diferentes; run.sh failover mata el servidor que lleva una llamada a través de la dirección compartida y verifica que la llamada continúe (el sonido regresa en unos cinco segundos); run.sh impaired realiza llamadas desde un teléfono en un enlace defectuoso (retraso, jitter y pérdida del 5%) y verifica la calidad de la llamada que informa BitVoice; run.sh down elimina el laboratorio. Las páginas de los servidores están en https://127.0.0.1:18501 y :18502 (usuario admin).

Capítulo 64

Donde se almacenan los datos (SQLite o PostgreSQL)

En la interfaz web: /settings

BitVoice almacena sus configuraciones y versiones guardadas, usuarios, contactos, registros de llamadas, el registro de auditoría, textos, notas y transcripciones en una base de datos. Las grabaciones y el correo de voz permanecen como archivos de sonido en la carpeta de datos.

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 archivo propio del servidor (SQLite, el predeterminado): un solo archivo, bitvoice.db en la carpeta de datos, sin nada que instalar. Respalde la carpeta de datos y tendrá todo.

PostgreSQL: para varios servidores BitVoice que comparten un conjunto de datos, o para informes en herramientas como Power BI, Grafana o Metabase. En Configuración, Base de datos, Mover los datos a PostgreSQL: cree una base de datos vacía y un usuario que la posea, ingrese su dirección (postgres://usuario:contraseña@host:5432/base_de_datos), presione Probar, luego Copiar los datos y reiniciar en PostgreSQL. Todo se copia de una vez (todo o nada) y BitVoice se reinicia en él; el archivo antiguo permanece donde estaba. Mover hacia atrás al archivo propio del servidor funciona de la misma manera. Los movimientos se rechazan mientras las llamadas están en progreso.

Los servidores que comparten una base de datos PostgreSQL ven los cambios en las configuraciones entre sí en cinco segundos. Cada servidor sigue respondiendo a sus propios teléfonos y llamadas; para que un segundo servidor tome el control de los teléfonos de un primer servidor, los teléfonos necesitan ambas direcciones (o una dirección que se mueva).

La base de datos también se puede nombrar cuando BitVoice comienza, con -database postgres://… o la variable de entorno BITVOICE_DATABASE; se cambia allí, no en Configuración.

Instalaciones anteriores: en el primer inicio de esta versión, BitVoice copia sus archivos JSON antiguos en la base de datos y los mueve a pre-database en la carpeta de datos.

Capítulo 65

Hospedaje de otras organizaciones

En la interfaz web: /tenants

Un BitVoice puede hospedar varias organizaciones. Cada una es un sistema de telefonía propio: sus propias extensiones, números, troncales, rutas, administradores, correo de voz, grabaciones y registro de llamadas. Ninguna organización puede ver la de otra. Solo comparten el puerto SIP, el puerto IAX2 y los puertos de medios de este 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

Cuándo usarlo

El sistema principal es una organización también: la que se configuró en este servidor. Sus administradores gestionan las demás.

Agregar una organización

  1. Abra Organizaciones (capítulo 65) y presione Agregar organización.
  2. Proporcione su nombre y un nombre corto (letras minúsculas, dígitos y guiones). El nombre corto es parte de su dirección web, /t/acme/, y de los registros de sus teléfonos, acme.100. No se puede cambiar más tarde.
  3. Opcionalmente, proporcione su dominio propio, como pbx.acme.example, apuntando a este servidor. Los teléfonos se registran en ese dominio, y sus administradores lo abren en un navegador.
  4. Establezca su primer administrador: un nombre de usuario y una contraseña de al menos 12 caracteres, y su país.
  5. Opcionalmente, establezca límites.

La organización comienza de inmediato con un sistema de telefonía vacío, listo para que su administrador lo configure como se describe en Introducción (capítulo 1).

Cómo las llamadas encuentran la organización correcta

Una solicitudva a
desde un teléfono que se registra en pbx.acme.examplela organización con ese dominio
desde un teléfono que se registra como acme.100Acme, extensión 100
desde un proveedor, para un númerola organización de la que proviene la troncal y cuya ruta de entrada tiene ese número
cualquier otra cosael sistema principal

Así, dos organizaciones pueden tener ambas la extensión 100, y varias pueden compartir una cuenta de proveedor con números diferentes.

Dónde está su datos

En SQLite, cada organización tiene su propia carpeta bajo tenants/ en la carpeta de datos, con su propio archivo de base de datos. En PostgreSQL, cada una tiene su propio esquema en la misma base de datos (tenant_acme). Los respaldos, archivos y exportaciones son por organización.

Límites

LímiteQué sucede en él
Extensionesagregar una más se rechaza con un mensaje
Llamadas al mismo tiempolas nuevas llamadas se rechazan (503) hasta que una termine
Almacenamientolas nuevas grabaciones y el correo de voz no se conservan
Solicitudes de IA al díalas transcripciones, resúmenes y la recepcionista de IA dejan de funcionar hasta la medianoche UTC

0 es sin límite. Las llamadas de emergencia nunca se rechazan: una organización en su límite de llamadas, o suspendida, aún puede llamar al 911 y ser llamada de vuelta.

Abrir una organización

Abrir lo registra en su interfaz web como el proveedor, sin su propia cuenta; se muestra en su registro de auditoría como el proveedor. Sus administradores se registran en su propia dirección con sus propias cuentas. Cada organización tiene su propia cookie de inicio de sesión, por lo que estar registrado en una nunca registra a nadie en otra.

Las organizaciones nunca ven las pantallas propias de este servidor: actualizaciones, la base de datos, los demás servidores, el certificado, la traza SIP (que muestra todos los mensajes de las organizaciones), el generador de llamadas o esta lista.

Suspender y eliminar

Suspendido detiene los inicios de sesión y todas las llamadas excepto las llamadas de emergencia; nada se elimina. Eliminar detiene la organización y mueve su carpeta a un lado (tenants/.removed-<name>-<time>), por lo que un error se puede deshacer a mano.

Capítulo 66

Codecs y sonido

Un codec es la forma en que el sonido se convierte en datos en una llamada. Los teléfonos, los navegadores y los operadores cada uno admiten algunos; BitVoice convierte entre cualquier par de sus codecs cuando dos partes difieren, para que todos puedan hablar entre sí. Cuando ambos utilizan el mismo codec, el sonido pasa sin cambios.

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

Los codecs

CodecSonidoAncho de bandaUtilizado por
G.722HD (ancho de banda amplio)64 kbit/sla mayoría de los teléfonos de escritorio: la mejor opción entre ellos
G.711 µ-lawteléfono64 kbit/sAmérica del Norte y Japón; cada operador
G.711 A-lawteléfono64 kbit/sel resto del mundo
OpusHD, tolera pérdidas24 kbit/snavegadores y aplicaciones móviles
G.729teléfono, un poco más áspero8 kbit/senlaces delgados, algunos operadores
G.726 (40 kbit/s)teléfono; transporta tonos de módem mejor que las tasas de G.72640 kbit/spasarelas, algunos sistemas DECT
G.726 (32 kbit/s)cerca del teléfono32 kbit/sbases DECT, pasarelas más antiguas
G.726 (24 kbit/s)entre 32 y 1624 kbit/salgunos sistemas DECT
G.726 (16 kbit/s)áspero16 kbit/senlaces muy delgados
AMR-WB (G.722.2)HD6,6 a 23,85 kbit/svoz HD de redes móviles, interconexiones VoLTE
AMRteléfono, móvil4,75 a 12,2 kbit/sredes móviles, algunos operadores y pasarelas
iLBCteléfono, tolera pérdidas13,3 o 15,2 kbit/ssoftphones y aplicaciones más antiguas
Speexteléfono15 kbit/s (2,15 a 24,6)softphones más antiguos, enlaces a otros sistemas Asterisk
GSMmás áspero13 kbit/ssoftphones y pasarelas más antiguas
G.723.1áspero; convertido solo con ffmpeg5,3 o 6,3 kbit/steléfonos de video y pasarelas muy antiguos
G.722.1 (Siren 7)ancho de banda amplio, transportado sin cambios24 o 32 kbit/steléfonos Polycom, teléfonos de video y conferencia
G.722.1C (Siren 14)superancho de banda, transportado sin cambios24 a 48 kbit/steléfonos de conferencia, sistemas de sala
G.719banda completa, transportado sin cambios32 a 128 kbit/ssistemas de sala de telepresencia
Codec2muy bajo ancho de banda, transportado sin cambios0,7 a 3,2 kbit/senlaces de radio, pasarelas de radioaficionados

Configuración enumera los codecs que los teléfonos pueden utilizar, en orden de preferencia; cada troncal puede tener su propia lista. Los puertos de adaptadores analógicos siempre utilizan G.711, que necesitan los fax, los módems y los paneles de alarma.

G.722.1, G.722.1C, G.719 y Codec2 se transportan sin cambios entre dos partes que los utilizan ambos, con su tasa de bits o modo mantenida en la oferta (BitVoice no los convierte, por lo que una llamada entre uno de estos y un teléfono sin él utiliza otro codec que ambos tengan). Colóquelos en una lista, por encima de G.711, donde los sistemas de sala o los teléfonos de conferencia deben mantener su rango de sonido cuando se llaman entre sí. Las listas nombran G.722.1 a 32 kHz G7221C, aunque SDP llama a ambos G7221.

G.723.1 pasa sin cambios entre dos partes que lo utilizan ambos. Para permitir que un dispositivo solo G.723.1 hable con cualquier otro, active Convertir G.723.1 con ffmpeg en Configuración e instale ffmpeg (apt install ffmpeg, brew install ffmpeg): BitVoice ejecuta entonces ffmpeg como un programa separado para cada dirección que necesita convertir (escuchado a cualquiera de las tasas, enviado a 6,3 kbit/s, la tasa que el codificador de ffmpeg crea), unos 60 ms más tarde que otros codecs, y lo detiene unos segundos después de la llamada. BitVoice no lleva ningún código G.723.1 propio: el código de referencia de la ITU no tiene licencia que permita incluirla, y ffmpeg se instala y se ejecuta por su cuenta.

Qué cuesta convertir

La conversión consume tiempo de procesador, solo en llamadas donde los dos lados difieren. Por llamada, alrededor de 0,3 ms de un núcleo cada 20 ms para Opus y 0,12 ms para G.729 (alrededor de 60 y 170 llamadas convertidas por núcleo); G.726 y GSM cuestan menos que G.729; G.711 y G.722 casi nada. G.729 se envía sin Anexo B (sin tramas de silencio).

Limpieza de sonido

Limpieza de sonido (Configuración) reduce el ruido de fondo constante y iguala los niveles, para correo de voz y, si lo desea, durante las llamadas.

Capítulo 67

Microsoft Teams (Enrutamiento directo)

En la interfaz web: /trunks

BitVoice puede ser el controlador de borde de sesión (SBC) para un inquilino de Microsoft Teams, para que los usuarios de Teams llamen a extensiones de BitVoice y a sus líneas telefónicas, y BitVoice llame a los usuarios de 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

Lo que necesita: un nombre público para este servidor en un dominio que su inquilino de Microsoft 365 haya verificado (sbc.ejemplo.com), el puerto 5061 abierto en ambos sentidos a las redes de Microsoft 52.112.0.0/14 y 52.120.0.0/14, y un certificado para ese nombre de una autoridad pública. Los usuarios de Teams necesitan una licencia de Phone System.

Pasos

  1. Configuración, Certificado: instale el certificado y su clave privada (PEM). Se utiliza de inmediato, para esta interfaz y para SIP sobre TLS, y BitVoice se lo presenta a Microsoft.
  2. Troncales, Agregar, comience desde Microsoft Teams: ingrese el nombre público del servidor. El cajón dice si el certificado lo cubre.
  3. Copie el PowerShell que muestra el cajón y ejecútelo como administrador de Teams: agrega la SBC (New-CsOnlinePSTNGateway), una ruta de voz y política, y una regla de plan de marcado para que los números de extensión cortos alcancen BitVoice tal como se marcan; luego dé a cada usuario de Teams la política y su número.
  4. Para llamar a los usuarios de Teams desde BitVoice, agregue una ruta de salida para sus números a través de la troncal de Teams. Teams encuentra a sus usuarios solo por números con + y el código de país: si las personas los marcan sin, agregue + y el código de país en el Prefijo de la ruta (el rastro de la llamada lo dice cuando una sale sin).

Cuando un usuario de Teams transfiere una llamada, Microsoft le pide a BitVoice que la coloque (un REFER que nombra su propio proxy, con el número o el ID del usuario de Teams): BitVoice llama exactamente lo que Microsoft nombró, con el Referred-By que Microsoft dio, por lo que una transferencia a otro usuario de Teams funciona tan bien como una a un número de teléfono. BitVoice nunca envía a Teams un encabezado Replaces, que Microsoft rechaza.

BitVoice envía a Microsoft OPTIONS cada minuto con el nombre del SBC en Contact, como requiere Microsoft, e intenta sip, sip2 y sip3.pstnhub.microsoft.com en turnos. Los medios siempre están cifrados (SRTP). La salud advierte cuando el certificado no cubre el nombre, es autofirmado o termina pronto, y cuando Microsoft deja de responder.

Esto sigue los requisitos publicados de SBC de Microsoft y se prueba contra un proxy simulado de Microsoft; BitVoice no está en la lista de SBC certificados de Microsoft.

Capítulo 68

Importar

En la interfaz web: /import

Trae extensiones, grupos de timbre, colas y troncos de FreePBX, Asterisk o 3CX; y personas, caza y grupos de timbre, troncos SIP, números de entrada y patrones de marcado de Cisco, Avaya y Mitel. Suba los archivos exportados, varios a la vez (un .zip o .tar de ellos también funciona); BitVoice muestra exactamente qué cambiaría antes de aplicar cualquier cosa, y la importación se convierte en una revisión que puede deshacer en Cambios (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

Mover desde FreePBX

El mejor archivo es una copia de seguridad de FreePBX: contiene todo, incluyendo contraseñas SIP.

  1. En FreePBX: Admin → Copia de seguridad y restauración → Agregar copia de seguridad. Marque al menos Core, Grupos de timbre, Colas y Correo de voz (todos los módulos está bien), guarde y Ejecute.
  2. Descargue la copia de seguridad desde su fila (el archivo se llama como 20261001-100000-1790000000-17.0.19-1234567.tar.gz).
  3. Instale BitVoice en el nuevo servidor y termine la configuración con una extensión que FreePBX no use (digamos 199) y sin línea telefónica: la importación trae las líneas.
  4. En Importar (capítulo 68), deje caer el .tar.gz tal como está. Lea la vista previa: las advertencias enumeran todo lo que no puede venir.
  5. Elija Agregar. Es una revisión en Cambios (capítulo 61): deshágala allí si algo parece incorrecto, e importe nuevamente.
  6. Mueva los teléfonos: apunte cada uno a BitVoice (o proporcionelos desde Teléfonos (capítulo 4)), con el mismo número de extensión y contraseña SIP que tenían.
  7. Pruebe las llamadas de entrada y salida, luego mueva el registro del transportista (o la portación de números) al final.

Probado en un sistema real: un FreePBX 17.0.33 (la instalación oficial de Debian 12) con cuatro extensiones y correo de voz, un tronco PJSIP que se registra, dos rutas de salida (una con un prefijo de marcado), un grupo de timbre, una cola con penalizaciones y tres DIDs, respaldado por Copia de seguridad y restauración con todos los módulos marcados. La copia de seguridad es de 70 MB, casi todo son archivos de sonido e historial de llamadas: BitVoice lo lee a medida que llega y mantiene solo la configuración, por lo que una copia de seguridad de hasta 512 MB se puede subir. Todo lo anterior vino: las contraseñas, los PIN de correo de voz y correo electrónico, el registro del tronco y los codecs, las rutas con sus prefijos, el correo de voz del grupo de timbre cuando no se responde, las penalizaciones de la cola y los DIDs al grupo, la cola y la extensión.

Qué se trae:

Qué no se trae, y se indica en la vista previa: IVR, condiciones de tiempo, anuncios, sigue-me, troncos personalizados y contextos, coincidencia de ID de llamador en rutas, y números externos en grupos de timbre. Construya esos en Menús (capítulo 21), Horarios (capítulo 26) y el Sigue-me de la extensión. Las copias de seguridad más antiguas (FreePBX 13 y antes) y un mysqldump asterisk plano de la base de datos de FreePBX se leen de la misma manera.

Otros sistemas

Donde cada exportación es:

Grupos y rutas. Subirlos con el archivo de personas, para que los miembros de cada grupo se encuentren por número o por nombre:

Las troncales de estas exportaciones llegan desactivadas y sin contraseñas, ya que las exportaciones no las contienen. Las rutas salen en la troncal importada del mismo nombre; una ruta cuya troncal no esté aquí se deja fuera y se indica. El timbre rotativo y de espera más larga es más cercano a una cola que a un grupo de timbre: la vista previa lo indica, por lo que puede convertirlo en uno.

Estas exportaciones (todas excepto una copia de seguridad de FreePBX) no contienen contraseñas SIP, por lo que cada extensión obtiene una nueva; los PIN de correo de voz, los nombres y las direcciones de correo electrónico se transfieren cuando la exportación los tiene. Los teléfonos Cisco, Avaya H.323/DCP y Mitel ejecutan el software de su fabricante y no se pueden configurar con BitVoice: la importación indica cuántos se enumeraron. Los teléfonos Cisco se pueden volver a configurar con el firmware multiplataforma (SIP) de Cisco; los teléfonos Avaya J100 y Mitel 6800/6900 se pueden registrar en BitVoice a mano en modo SIP.

Capítulo 69

Configuración como código

Todo lo que hacen las pantallas pasa por la API REST de BitVoice, por lo que cualquier cosa se puede programar, mantener en Git o administrar con Terraform. La API se describe para herramientas en /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

Creados en Administradores (capítulo 57): uno por programa, de solo lectura o capaz de cambiar todo. Envíelo como Authorization: Bearer bv_.... Se muestra una vez; revóquelo cuando ya no se necesite. Los cambios de un token se muestran en Cambios y en el registro de auditoría con su nombre.

curl -H "Authorization: Bearer bv_..." https://pbx.example.com/api/extensions

Terraform o OpenTofu

El repositorio deploy/terraform muestra extensiones, grupos de timbre y rutas administradas con el proveedor REST genérico: plan muestra qué cambiaría, apply hace el cambio. El proveedor verifica el certificado de BitVoice; mientras BitVoice aún utiliza su propio certificado auto-firmado, obtenga uno de Let's Encrypt (Configuración, Certificados) o establezca bitvoice_insecure = true en una red de confianza (en Linux, SSL_CERT_FILE apuntando al certificado de BitVoice también funciona). Los recursos se emparejan con el id que BitVoice les da, por lo que un segundo plan no muestra cambios hasta que el archivo o las pantallas cambien algo.

Configuración desde Git

En Configuración (capítulo 14), Configuración desde Git, BitVoice lee la configuración de un archivo en un repositorio cada pocos minutos y muestra qué difiere o hace los cambios. Comience el archivo con Exportar para Git, que omite las contraseñas; BitVoice mantiene las suyas, por lo que los secretos nunca entran en el repositorio.

Capítulo 70

Compatibilidad con Asterisk (AMI, ARI y AGI)

Herramientas escritas para Asterisk pueden controlar BitVoice: CRM, tableros de instrumentos, botones de marcado de clic, controladores de grabadoras de llamadas. Actívelo en Configuración (capítulo 14), Compatibilidad con Asterisk. Las herramientas ven las llamadas como canales con nombres como PJSIP/100-..., como en 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

La interfaz de administrador en el puerto TCP 5038 (AMI escucha en: este equipo solo por defecto). Soportado:

TipoNombres
AccionesInicio de sesión (plano o desafío MD5), Ping, Eventos, Filtro, ListarComandos, MostrarCanalesCore, Estado, EstadoCore, ConfiguraciónCore, MostrarEndpointsPJSIP, EstadoExtensión, ListaEstadoExtensión, ListaEstadoDispositivo, Getvar, Originate, Redireccionar, TransferenciaCiega, Colgar, CerrarSesión
ColasEstadoCola, ResumenCola, PausarCola, AgregarCola y QuitarCola (firma a un agente en, o fuera de, todas sus colas), Agentes
OtrosLlamadasEstacionadas; ListaSalasConfbridge, ListaConfbridge, ExpulsarConfbridge, SilenciarConfbridge, DesilenciarConfbridge, BloquearConfbridge, DesbloquearConfbridge; ContarBuzón, EstadoBuzón; PausarMonitor, ReanudarMonitor; EventoUsuario; Recargar (nada que recargar: los cambios se aplican al instante)
EventosNuevoCanal, NuevoEstado, Colgar, IniciarMarcado, FinalizarMarcado, Pausar, Reanudar, EstadoPareja, EstadoContacto, MensajeEnEspera, UnirseConfbridge, DejarConfbridge, FinalizarConfbridge, EventoUsuario

Filtro mantiene solo los eventos que coinciden con una expresión regular (Event: Newchannel), o los descarta con ! al principio, como en Asterisk. No hay línea de comandos de Asterisk: Comando responde con un error.

ARI

En /ari/, con autenticación básica o ?api_key=user:secret:

SolicitudQué hace
GET /ari/channelslas llamadas en progreso
POST /ari/channels?endpoint=PJSIP/100&extension=5551234llamar al número 100, luego llamar al número
DELETE /ari/channels/{id}colgar
POST /ari/channels/{id}/redirect?endpoint=PJSIP/102enviar la llamada a 102
/ari/endpoints, /ari/bridges, /ari/asterisk/infoteléfonos, puentes, versión
/ari/eventsun WebSocket de eventos
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=rtp&format=ulawun canal que envía sonido a un programa por RTP (ulaw o alaw sobre UDP); su puerto local está en el UNICASTRTP_LOCAL_PORT del canal
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=audiosocket&transport=tcp&format=slin&data=<uuid>lo mismo por AudioSocket
POST /ari/bridges/{call}/addChannel?channel={id}el canal de medios externos se une a una llamada: escucha a ambas partes y ambas lo escuchan; con role=listener nadie lo escucha (para transcripción en vivo)
POST /ari/bridges/{call}/removeChannel?channel={id}sale de la llamada; las dos partes hablan directamente de nuevo

Un canal de medios externos no agregado a una llamada dentro de un minuto se cierra.

Aplicaciones ARI

Una aplicación ARI (la Stasis() de Asterisk) ejecuta llamadas desde su propio programa. Agregue bajo Aplicaciones ARI en Configuración, compatibilidad Asterisk: un nombre, un número de extensiones opcional que marcan, y un reemplazo. Luego envíe llamadas a ella como cualquier destino: una ruta de entrada, una tecla de menú, un horario.

Su programa se conecta a /ari/events?app=NAME (un WebSocket, con el inicio de sesión en ?api_key=user:secret). Cada llamada que llega a la aplicación es respondida y llega como StasisStart, con el canal; el programa lo ejecuta luego:

SolicitudQué hace
POST /ari/channels/{id}/play?media=sound:goodbye,digits:42reproduce mensajes de voz desde Sonidos (sound:), digits:, number:, tone:beep o una grabación almacenada (recording:); PlaybackStarted y PlaybackFinished siguen. DELETE /ari/playbacks/{id} lo detiene.
POST /ari/channels/{id}/record?name=msg1&maxDurationSeconds=60&maxSilenceSeconds=5&beep=true&terminateOn=%23graba (wav) en las grabaciones almacenadas; RecordingStarted y RecordingFinished. POST /ari/recordings/live/{name}/stop lo finaliza, DELETE lo descarta.
GET /ari/recordings/stored, .../{name}, .../{name}/file, DELETE .../{name}las grabaciones almacenadas
POST /ari/channels/{id}/dtmf?dtmf=123envía teclas al que llama
GET/POST /ari/channels/{id}/variable?variable=X&value=Ylas variables del canal
POST /ari/bridges?bridgeId=room1, .../addChannel?channel=a,b, .../removeChannel, .../play, DELETEpuentes de mezcla: todos en uno escuchan a todos los demás
POST /ari/channels/{id}/continue?extension=101deja ir la llamada: a esa extensión, grupo de timbre o cola, de lo contrario la fallback
DELETE /ari/channels/{id}cuelga
POST /ari/channels?endpoint=PJSIP/101&app=NAMEllama al 101; respondido, entra en la aplicación
GET /ari/applicationslas aplicaciones, si un programa está conectado y sus canales
POST /ari/channels/{id}/mute?direction=in, DELETE .../mutesilencia lo que el que llama dice (in), lo que escucha (out) o ambos
POST/DELETE /ari/channels/{id}/hold, .../moh, POST .../silencemúsica de espera al que llama (ChannelHold, ChannelUnhold), o silencio
GET/POST /ari/channels/{id}/variablesvarias variables a la vez (ChannelVarset)
POST /ari/channels/{id}/move?app=otherpasa el canal a otra aplicación (StasisEnd, luego StasisStart allí; ApplicationMoveFailed cuando no hay programa que lo ejecute)
POST /ari/channels/{id}/snoop?spy=in&app=NAMEun canal de escucha en una aplicación que escucha lo que el que llama dice, para grabarlo (POST /ari/channels/{snoop}/record)
POST /ari/channels/create?endpoint=PJSIP/101&app=NAME, luego POST .../dialun canal que espera hasta que se marque; eventos Dial indican cómo va el timbre, y entra en la aplicación cuando se responde
GET /ari/channels/{id}/rtp_statisticspaquetes y bytes enviados y recibidos, pérdida y jitter
POST /ari/playbacks/{id}/control?operation=pausepausa, reanudación, reinicio, reversa y avance (tres segundos)
POST /ari/bridges/{id}/moh, .../record, .../variable, .../play/{playbackId}música de espera a un puente, grabación de su mezcla, sus variables
POST /ari/recordings/stored/{name}/copy, POST/DELETE /ari/recordings/live/{name}/pause, .../mutecopia una grabación; pausa o silencia una en vivo
POST /ari/applications/{app}/subscription?eventSource=deviceState:Custom:lamp, PUT .../eventFiltersuscripciones (canal:, puente:, endpoint:PJSIP/100, deviceState:) y filtros de eventos ({"disallowed": [{"type": "ChannelVarset"}]})
GET /ari/deviceStates, PUT /ari/deviceStates/Custom:lamp?deviceState=INUSEestados de los teléfonos (PJSIP/100: NOT_INUSE, INUSE, RINGING, UNAVAILABLE) y personalizados que los programas mantienen (DeviceStateChanged); el estado del teléfono también llega como EndpointStateChange
GET /ari/mailboxes, PUT /ari/mailboxes/{name}?newMessages=1&oldMessages=0recuentos de correo de voz de extensiones (100@default), y buzones que un programa mantiene por sí mismo
GET /ari/soundslos mensajes de voz de Sonidos, en los idiomas en que están grabados, y los sonidos subidos para scripts AGI
PUT /ari/endpoints/sendMessage?to=pjsip:100&body=Hiun texto en los teléfonos de la extensión 100
POST /ari/events/user/{name}?application=NAMEun evento de usuario a una aplicación (ChannelUserevent)
GET /ari/asterisk/ping, GET/POST /ari/asterisk/variable, GET /ari/asterisk/modulesping, variables globales y partes de BitVoice con nombres de módulos que representan

BitVoice responde a cada operación de ARI publicada de Asterisk (su conjunto de pruebas llama a cada una y verifica que lo que se devuelve tiene los campos que requiere la descripción de Asterisk). Algunas no tienen nada que ver aquí y responden con 501 con la razón: módulos cargables (BitVoice es un programa), configuración dinámica de Sorcery (BitVoice está configurado en su interfaz web), canales de registro, fuentes de video de puentes (los puentes ARI llevan sonido), envío de REFER a teléfonos y reclamación de llamadas de difusión. Un canal de escucha solo escucha al que llama (spy=in), y el susurro no se ofrece: puente un canal con el suyo para hablar con ellos. Los eventos de canal para cada llamada (ChannelCreated, ChannelStateChange, ChannelDestroyed) van a cada programa, al igual que con subscribeAll=true de Asterisk. Las bibliotecas ARI que leen la interfaz desde el servidor (ari-client y otras) la encuentran en /ari/api-docs/resources.json. Qué programas mantienen ahora, bajo Aplicaciones ARI en Configuración, muestra las aplicaciones, estados de dispositivos personalizados, buzones, variables globales y puentes que los programas han establecido.

Las teclas pulsadas llegan como ChannelDtmfReceived; un llamador que cuelga como StasisEnd. Cuando no hay programa conectado, la llamada va al valor predeterminado; cuando la última conexión de un programa se cierra, sus llamadas van allí también después de cinco segundos (tiempo para volver a conectarse). Para la lógica de llamada sin un programa propio, use Scripts (capítulo 27) que ejecutan toda la llamada; para entregar el audio a un programa, bots de voz (capítulo 24).

Scripts AGI

Un script AGI (Asterisk AGI() y EAGI()) ejecuta una llamada comando por comando, por lo que las IVR y las integraciones escritas para Asterisk (phpagi, pyst2, Asterisk-Java, cualquier servidor FastAGI) siguen funcionando. Agréguelo bajo Scripts AGI en Configuración, compatibilidad con Asterisk:

CampoQué es
Nombre del scriptcómo los destinos lo nombran
Direcciónun servidor FastAGI, agi://host:4573/script?x=1 (puerto 4573 cuando no se especifica), hagi://domain/script para los servidores en los registros SRV _agi._tcp del dominio, intentados en orden de prioridad, o el nombre del archivo de un programa en la carpeta Programas AGI
Argumentospasados como agi_arg_1, agi_arg_2 …
Número para marcaropcional: las extensiones lo marcan como cualquier número
Valor predeterminadoa dónde va la llamada cuando el script termina sin elegir un número, o no se puede alcanzar
Ejecución más largaun script que se ejecuta durante más tiempo se detiene (un hora por defecto)
EAGIpara un programa: el audio del llamador (8 kHz, firmado 16 bits, little-endian) en el descriptor de archivo 3. Linux y macOS

Probar se conecta al servidor (o verifica que el programa esté allí y sea ejecutable) sin enviar una llamada. Luego envíe llamadas a él como a cualquier destino.

BitVoice responde a la llamada, envía las variables agi_ (agi_network_script, agi_callerid, agi_dnid, agi_extension, agi_language …) y ejecuta los comandos, respondiendo como Asterisk 20 (el conjunto de pruebas compara cada respuesta con una grabación de Asterisk):

ComandosNotas
ANSWER, HANGUP, CHANNEL STATUS, NOOP, VERBOSEHANGUP con un nombre de canal solo termina la llamada del script
STREAM FILE, CONTROL STREAM FILE, GET OPTION, GET DATA, WAIT FOR DIGITteclas de escape, desplazamientos de muestra y endpos como en Asterisk; avance rápido, rebobinado y pausa en CONTROL STREAM FILE
SAY DIGITS, SAY NUMBER, SAY ALPHA, SAY PHONETIC, SAY DATE, SAY TIME, SAY DATETIMEcon un servicio de habla en Configuración, AI se hablan; sin él, los dígitos se dicen desde Sonidos
RECORD FILEs=N silencio, un pitido, teclas de escape; el archivo aterriza en la biblioteca de sonidos
SET VARIABLE, GET VARIABLE, GET FULL VARIABLECALLERID(num), CALLERID(name), EXTEN, UNIQUEID, CHANNEL … y expresiones ${NAME}
DATABASE GET, PUT, DEL, DELTREEbase de datos de Asterisk (AstDB), mantenida por BitVoice y mostrada bajo Base de datos AGI
SET CALLERID, SET EXTENSION, SET CONTEXT, SET PRIORITY, SET AUTOHANGUP, SET MUSICSET EXTENSION es a dónde va la llamada cuando el script termina
SPEECH CREATE … SPEECH RECOGNIZEutiliza el texto a habla de Configuración, AI: el resultado es lo que el llamador dijo, como text0, para que el script lo compare; se aceptan gramáticas y no se utilizan
EXECAnswer, Hangup, Playback, Background, Read, Set, MSet, SayDigits, SayNumber, SayAlpha, Wait, Dial (marca cada número por turnos; DIALSTATUS), Goto, VoiceMail, Queue, MusicOnHold, Record, NoOp, Verbose, Log. Otros responden -2, como Asterisk para una aplicación que falta

BitVoice no tiene dialplan: donde un script iría en el dialplan de Asterisk (SET EXTENSION, EXEC Goto), la llamada va a ese número aquí (una extensión, grupo de timbre, cola, menú o un número exterior a través de las rutas de salida) cuando el script termina. Los scripts nunca llaman a números de emergencia. Cuando el llamador cuelga, un script FastAGI recibe HANGUP y un programa SIGHUP; solo se ejecutan comandos permitidos en un canal muerto, y la conexión se cierra 30 segundos después si el script continúa. Cada ejecución se muestra bajo Últimas ejecuciones con sus líneas VERBOSE, y va al flujo de eventos como agi.ran.

Sonidos para scripts AGI. Los scripts reproducen sonidos por los nombres que usan en Asterisk: suba los sonidos bajo Sonidos para scripts AGI con una carpeta (custom/welcome; es/custom/welcome para llamadores en español). Se aceptan WAV, MP3 y .gsm, .ulaw, .alaw, .sln y .sln16 de Asterisk; una ruta como /var/lib/asterisk/sounds/en/custom/welcome.gsm encuentra custom/welcome. Los digits/0–digits/9, beep, silence/N y algunos otros (vm-goodbye, invalid, please-hold) de Asterisk reproducen los propios sonidos y tonos de BitVoice. Lo que los scripts graban se mantiene en la misma biblioteca, marcado grabado por un script, durante los días que elija (30 por defecto). La biblioteca mantiene hasta 1 GB.

Programas. Un programa se ejecuta en este servidor con los derechos de BitVoice, por lo que nunca se carga a través de la web: cópielo en la carpeta Programas AGI que se muestra en la pantalla (DATA/agi-bin) y hágalo ejecutable. Solo recibe PATH y AST_AGI_DIR del entorno, se ejecuta en esa carpeta y lo que escribe en el error estándar va al registro del servidor. FastAGI envía comandos en TCP plano: mantenga el servidor en esta computadora o en una red privada.

Inicios de sesión

Cada inicio de sesión tiene un Nombre de usuario y Secreto. Los inicios de sesión son de solo lectura a menos que estén marcados Puede cambiar llamadas. Mantenga AMI en esta computadora a menos que la herramienta se ejecute en otro lugar: AMI es TCP plano, sin cifrado.

Capítulo 71

Asistentes de IA (MCP)

Un asistente de IA como Claude, ChatGPT, Gemini o Cursor puede utilizar BitVoice a través del Protocolo de Contexto de Modelo (MCP), la forma estándar en que los asistentes llegan a otros programas. Pídaselo en palabras llanas: quién llamó esta mañana y si alguien les devolvió la llamada, qué dijo el llamador de la clínica dental, por qué la llamada de las 9 en punto fue a la casilla de voz, si la línea del proveedor está caída. Con su permiso, también puede realizar una llamada, enviar un mensaje de texto o colgar una llamada.

BitVoice es el servidor MCP, en https://YOUR-SERVER/mcp (HTTP transmisible; la dirección se muestra en Configuración). Nada va a ningún servicio de IA a menos que un asistente que conectó lo solicite, y entonces solo lo que solicitó.

Activarlo

En Configuración (capítulo 14), Asistentes de IA (MCP):

La tarjeta muestra la dirección y la configuración lista para copiar para los asistentes comunes, y enumera cada herramienta.

Qué puede hacer un asistente

Lectura (cualquier token):

Actuación (con Permitir que los asistentes actúen, y un token que puede cambiar cosas):

Cada herramienta es una de las rutas propias de la API, ejecutada como asistente: ve y cambia exactamente lo que su token puede, se aplican las mismas comprobaciones y sus cambios están en el registro de auditoría con su nombre. Una respuesta se mantiene en aproximadamente 60,000 caracteres; se le indica al asistente que reduzca su búsqueda cuando una es cortada.

Conectar un asistente

Asistentes que se conectan (conectores personalizados de Claude.ai y ChatGPT, y otros): agregue un conector con la dirección de BitVoice. El asistente abre la página de inicio de sesión de BitVoice en su navegador; inicie sesión como de costumbre (contraseña, autenticación de dos factores, inicio de sesión único), y la página indica qué asistente solicita y a dónde regresa. Un administrador puede permitir que actúe o Solo dejar que lea; el asistente de un espectador solo lee. No permitir lo envía con nada. Su acceso está entonces en Administradores (capítulo 57), tokens de API, como Asistente de IA, conectado: funciona en /mcp solo, nunca para el resto de la API, dura una hora a la vez y se renueva automáticamente durante un máximo de 30 días sin ser utilizado. Revocar lo termina de inmediato. Estos asistentes llegan a BitVoice desde sus propios servidores, por lo que necesita una dirección accesible desde Internet y un certificado que confíen (Let's Encrypt, en Certificado (capítulo 14)).

Asistentes que reciben un token (Claude Code, Cursor, VS Code y otras herramientas que aceptan una dirección y un encabezado): cree un token de API en Administradores (capítulo 57), solo lectura a menos que deba actuar, y proporciónelo como Authorization: Bearer bv_...:

claude mcp add --transport http bitvoice https://pbx.example.com:8443/mcp --header "Authorization: Bearer bv_..."

Asistentes que inician un programa (Claude Desktop, y otros que aceptan un comando): el programa BitVoice lleva un puente, bitvoice mcp, que pasa cada mensaje al servidor a través de HTTPS. Proporcione la dirección del servidor y el token:

{ "mcpServers": { "bitvoice": { "command": "bitvoice", "args": ["mcp", "-url", "https://pbx.example.com:8443"], "env": { "BITVOICE_TOKEN": "bv_..." } } } }

Con el certificado propio de BitVoice (no uno de una autoridad), el puente lo rechaza e imprime su SHA-256: verifique que sea el de su servidor, luego agregue "-pin", "THAT-SHA256" a los argumentos. Solo ese certificado es aceptado entonces.

Seguro para dejar encendido

Capítulo 72

Archivo

En la interfaz web: /archive

El archivo mantiene copias de grabaciones, correo de voz y configuración en otro lugar: un bucket de Amazon S3 (o cualquier tienda compatible con S3) o un contenedor de Azure Blob Storage. Si se pierde el disco de este servidor, el archivo todavía los mantiene.

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

Configuración

  1. En Archivo (capítulo 72), elija Dónde archivar: Amazon S3 o Azure.
  2. Para S3: el Bucket, su Región, una Carpeta en el bucket opcional y Punto de conexión (para tiendas compatibles con S3), y una Clave de acceso ID y Clave de acceso secreta. Copiar la política otorga el único permiso que BitVoice necesita, para adjuntar al usuario o función.
  3. Para Azure: una URL de SAS del contenedor con permiso de escritura, y una Carpeta en el contenedor opcional.
  4. Elija qué copiar además de la configuración: Grabaciones de llamadas, Correo de voz, o ambos.

Qué sucede

Cada diez minutos, BitVoice copia nuevas grabaciones y mensajes que no están en el archivo aún, y una vez al día, una copia con fecha de la configuración (config/2026-10-13.json). La página muestra la última ejecución, el último éxito y cualquier error.

Eliminar algo aquí (por retención o a mano) no elimina la copia del archivo: configure las reglas de ciclo de vida del bucket o contenedor para determinar cuánto tiempo mantiene las cosas el archivo.

Capítulo 73

Retenciones legales

En la interfaz web: /holds

Una retención legal mantiene los registros de llamadas, grabaciones y correo de voz que un asunto puede necesitar y evita que alguien los elimine, hasta que se libera. Úsela cuando un abogado solicita que se conserven los registros.

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

Agregar una retención

En Retenciones legales (capítulo 73), presione Agregar:

CampoQué es
Nombreel nombre del asunto
Motivopor qué, para el registro
Númeroslas extensiones y números externos que cubre (101, +15551234567), o Todo
Desde, Hastalas fechas que cubre; vacío para sin límite

Mientras una retención está activa

Liberar

Liberar hace que lo que la retención mantuvo esté sujeto a la configuración de retención nuevamente: las cosas más antiguas que la retención se eliminan en la próxima limpieza. Las retenciones liberadas permanecen en la lista, con cuándo y por quién, y agregar y liberar retenciones está en el registro de auditoría.

Capítulo 74

Métricas: Prometheus, OpenTelemetry, Grafana, SNMP y registros de llamadas

En la interfaz web: /settings

Prometheus recopila /metrics en la dirección web. Cree un token de API bajo Administradores (un token de espectador es suficiente) y proporciónelo a Prometheus como su 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'] }]

Lee las llamadas en progreso (por estado), las llamadas finalizadas (por dirección y resultado), el tiempo de conversación, los teléfonos registrados, el estado y la latencia de cada troncal, los llamadores en espera y los agentes en cada cola, los paquetes de sonido recibidos y perdidos, un histograma de las puntuaciones de calidad de llamada (MOS) y las devoluciones de llamada programadas. Los contadores comienzan de nuevo desde cero cuando BitVoice se reinicia, como Prometheus lo espera.

OpenTelemetry: en Configuración, Métricas, ingrese la dirección OTLP/HTTP de un colector (y un encabezado como Autorización, con su valor) para tener las mismas mediciones empujadas cada minuto (o con la frecuencia que establezca, desde 15 segundos). Empujar ahora verifica la configuración guardada.

Panel de Grafana descarga un panel listo para usar: impórtelo en Grafana y seleccione su fuente de datos de Prometheus.

SNMP

Para sistemas de monitoreo que hablan SNMP (Zabbix, PRTG, LibreNMS, Nagios, SolarWinds), active el agente SNMP en Configuración. Responde a GET, GETNEXT y GETBULK de SNMPv2c, de solo lectura, en el puerto UDP 161 (o otro que elija: el puerto 161 requiere el derecho de abrir puertos bajos en Linux) y solo desde las redes que enumere. Elija una comunidad que no sea pública ni privada: es una contraseña que cruza la red en claro.

Sirve el grupo de sistema estándar (sysDescr, sysUpTime, sysContact, sysName, sysLocation) y los valores propios de BitVoice bajo el OID base: llamadas en progreso y timbre, teléfonos registrados, troncales arriba y configuradas, llamadores en espera, llamadas finalizadas, segundos de conversación, paquetes perdidos, calidad de llamada promedio, una tabla de troncales (nombre, arriba o abajo, latencia) y una tabla de cola (en espera, agentes, respondidos, abandonados). Descargue BITVOICE-MIB junto a la configuración para que su sistema de monitoreo lo cargue. BioDream LLC no tiene un número de empresa aún, por lo que el OID base predeterminado está en el espacio experimental de Net-SNMP; coloque uno bajo su propio número de empresa para mantenerlo estable.

Trampas (SNMPv2) van a cada receptor que enumere cuando una troncal se cae o vuelve, se hace una llamada de emergencia o un servidor de un clúster deja de responder. SNMPv3 no es compatible aún.

Registros de llamadas en otro lugar

Junto a Historial de llamadas, cada registro puede ir, al finalizar la llamada, a:

Enviar un registro de prueba intenta el servidor syslog y la base de datos con la configuración guardada.

Capítulo 75

Generador de llamadas

En la interfaz web: /loadtest

El generador de llamadas coloca llamadas reales con audio real en BitVoice desde esta computadora: para ver cuántas llamadas lleva un servidor y cómo, o para comprobar después de un cambio que las llamadas aún van donde deben.

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

Ejecutar una prueba

ConfiguraciónQué es
Número para llamarun número dentro de BitVoice: una extensión, un grupo, una cola, un menú
Llamadas procedentes deel número de llamada que muestra quién llama
Responder comouna extensión que responde por sí misma; o nadie, cuando el número responde por sí mismo (un menú, la prueba de eco)
Llamadascuántas en total
Al mismo tiempoel máximo en progreso al mismo tiempo, hasta 2,000. Cada llamada reenviada toma puertos de medios de Medios desde y Medios hacia (Configuración): el valor predeterminado 10000-20000 puede contener alrededor de 1,800, así que amplíelo para más
Nuevas por segundocuán rápido comienzan
Cada una dura (s)cuánto tiempo habla cada una

Leer los resultados

ResultadoLo que dice
Respondido, Fallidoy Por qué fallaron las llamadas, por motivo
Tiempo de respuesta, mediana y 95%cuánto tiempo esperaron los llamadores
Audio perdidola participación de paquetes de sonido que nunca llegaron
Puntuación de audiouna estimación del sonido (MOS): 4 o más es bueno, menos de 3.6 es pobre
Jitter, 95% de las llamadascuán desigualmente regresó el sonido (jitter de llegada de RFC 3550, promediado sobre cada llamada); los teléfonos suavizan hasta aproximadamente 20 ms
Brecha más larga, peor llamadala espera más larga entre dos paquetes de sonido en cualquier llamada; llegan cada 20 ms, por lo que una pausa del servidor se muestra aquí
Pausas de memoria, pausa más largacon qué frecuencia y durante cuánto tiempo como máximo, el tiempo de ejecución de Go pausó todo para ordenar la memoria durante la ejecución
Llamadas en progreso a lo largo del tiempoun gráfico de la carga
Capítulo 76

Rastreo SIP

En la interfaz web: /trace

El rastreo SIP muestra los mensajes que BitVoice envía y recibe, en vivo: el primer lugar para buscar cuando un teléfono no se registra o una llamada falla, y lo que el escritorio de soporte de un proveedor solicitará.

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

Encontrar un mensaje

BitVoice mantiene los últimos 2,000 mensajes en memoria (nada se escribe en disco y desaparecen después de un reinicio). Escriba parte de un número, una dirección o un Call-ID en el filtro. Presione Actualizar para obtener los más nuevos.

Elija un mensaje para verlo en su totalidad y, junto a él, el flujo de llamada: cada mensaje de la misma llamada en orden, entre el teléfono, BitVoice y el proveedor, como en la figura.

Leer un seguimiento

Usted veGeneralmente significa
REGISTER respondido 401, luego nadael teléfono no tiene la contraseña, o tiene la incorrecta
REGISTER respondido 403la dirección está prohibida, o el teléfono se registra como otra extensión
INVITE respondido 404no hay ruta que coincida con el número marcado (Enrutamiento de llamadas (capítulo 8))
INVITE respondido 403 por el proveedorel proveedor rechaza la identificación del llamador o el número
486el otro lado está ocupado
488los dos lados no tienen códec en común (Códecs (capítulo 66))
200 OK, luego BYE después de unos 30 segundosel ACK nunca llegó: un enrutador en medio reescribe o descarta mensajes (desactive su "SIP ALG")
Una llamada se conecta pero nadie escucha nadael sonido está bloqueado: verifique la dirección pública en Configuración, y los puertos de multimedia en el firewall
Parte 6

Seguridad pública: la pista del laboratorio

El perfil del punto de respuesta 911, la consola de despacho de radio y los Servicios básicos de NG911. Son una pista y un socio de diseño de laboratorio: construidos y probados contra capturas grabadas, datos de muestra y sustitutos, pero no certificados para 911 en vivo o despacho de radio y no se han intentado con un ESInet en vivo, un sistema P25 o CAD. Están fuera del menú hasta que se activan en Configuración. Las llamadas de emergencia desde sus propios teléfonos (Introducción) no son parte de esta pista: son parte de cada sistema telefónico.

Capítulo 77

Llamadas de 911 (el perfil de 911)

En la interfaz web: /psap

BitVoice responde a las llamadas de 911 como un sistema de manejo de llamadas de un PSAP: las llamadas de la red de servicios de emergencia (la ESInet, NENA i3) llegan con la ubicación del llamador y los datos de la red, el operador de llamadas ve los datos al instante y se informa a CAD cuando se responde la llamada.

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

Configuración.

  1. En Troncales (capítulo 7), agregue la troncal de su proveedor ESInet (o el núcleo ESRP de NG911) y active Desde ESInet.
  2. En Enrutamiento de llamadas (capítulo 8), envíe sus llamadas a sus operadores de llamadas: una cola o un grupo de timbre.
  3. En Llamadas de emergencia 911, ingrese su ID de agencia (un dominio, como psap.county.example.gov) y qué CAD acepta: la dirección y el puerto de su escucha ALI, y su dirección EIDO.

Cuando una llamada de 911 suena, aparece en Llamadas de 911 con:

La ubicación llega en la llamada (por valor), o como una referencia que BitVoice busca con HELD. Una llamada con una referencia tiene Rebid de ubicación: BitVoice vuelve a preguntar, para un llamador que se mueve o cuyo primer ajuste fue tosco.

Cuando un rebid cambia la ubicación, la verificación de ubicación dice cuál mostrar primero y por qué: la nueva ubicación como regla; la primera cuando fue un ajuste preciso del dispositivo (GPS, dentro de 100 m) menos de dos minutos antiguo y la nueva es más tosca; y ambas cuando dos ubicaciones no coinciden por más de su incertidumbre permitida, para que el operador de llamadas pregunte al llamador. La primera ubicación permanece en la llamada de cualquier manera.

Cuando un operador de llamadas responde, CAD obtiene, cada uno por su cuenta para que un CAD que esté caído nunca retenga la llamada:

El derrame ALI en sí es TCP plano, ya que los oyentes CAD heredados lo toman, así que no se puede requerir que esté cifrado. Cuando va a otra computadora, Salud advierte: mantenga esa ruta fuera de cualquier red compartida, con un enlace serial directo (serial:/dev/…) o una VPN o circuito privado a CAD. Establezca ID de agencia también: los EIDOs y el nombre de registro i3 nombran la agencia por él, y Salud (capítulo 13) advierte mientras está vacío.

Una llamada de 911 nunca se rechaza. Una llamada de voz desde ESInet (o una troncal CAMA) cuya ruta de entrada la rechazaría, porque la ruta cuelga, timbra un grupo con nadie en él o no existe, o que nadie responde, timbra a todos los operadores de llamadas en su lugar: todas las extensiones habilitadas, y cualquier teléfono que se conecte mientras suena, hasta que alguien responda o el llamador cuelgue. Una llamada de texto espera en esta pantalla de la misma manera. Cómo se enrutó la llamada dice qué sucedió, y Salud (capítulo 13) advierte sobre dicha ruta para que se pueda corregir. Solo las llamadas de prueba (urn:service:test.sos) y las llamadas que no son llamadas de 911 mantienen el rechazo de su ruta.

Ni se cae por una transferencia. Cuando un operador de llamadas transfiere una llamada de 911 y la transferencia no puede conectarse, porque la extensión no tiene un teléfono conectado o nadie responde, la llamada vuelve al operador de llamadas mientras todavía está en ella. Si ya han colgado (la mayoría de los teléfonos de escritorio lo hacen justo después de una transferencia ciega), todos los operadores de llamadas timbran en su lugar, hasta que uno responda. Una llamada de 911 nunca se pasa a la casilla de voz de la extensión o a otro destino de no respuesta, y su registro de enrutamiento dice qué sucedió. En cualquier llamada, un teléfono que cuelga justo después de pedir una transferencia solo se libera a sí mismo: la transferencia continúa.

Un llamador que desapareció. Cuando un lado de una llamada deja de enviar sonido durante un minuto (un teléfono que perdió energía o señal de transmisión no envía cuelgue) mientras el otro lado todavía envía, la llamada se termina con la razón *el audio del llamador se detuvo* (o de quién era), en el registro de la llamada y en el evento call.ended que CAD escucha (cause, endedBy). Un lado en espera, fax o que dijo que envía nada (un altavoz de paginación) nunca se termina de esta manera. El silencio todavía envía paquetes, así que un llamador que no puede hablar mantiene la llamada.

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.

Video y fotos del llamador. En una llamada de emergencia 911, Enviar enlace de video al llamador crea un enlace que solo abre esta llamada: enviado por mensaje de texto al llamador desde el número bajo Enviar enlace desde, o leído en voz alta. Cuando no se puede enviar por mensaje de texto (no se ha establecido un número de mensaje de texto, o el llamador no envió ningún número), la pantalla y la API problem indican por qué. El llamador abre el enlace en el navegador de su teléfono (sin aplicación): Compartir video en vivo envía la cámara trasera en vivo (WebRTC, WHIP: RFC 9725), y Enviar fotos o videos envía lo que ya ha tomado, incluidos archivos de cámara de tablero y cámara de acción. En la llamada:

El video nunca se toma de las llamadas: cada video en vivo tiene sus propios puertos, este servidor acepta como máximo Videos en vivo al mismo tiempo (4 a menos que se configure), cada uno se solicita que se mantenga por debajo de Tasa de bits de video, y el video que se detiene durante diez segundos se finaliza. Los teléfonos de los llamadores deben llegar a este servidor en Dirección de enlace (https) y sus puertos de medios (UDP). Los archivos se mantienen Mantener archivos y registro de exposición días (en blanco: hasta que se eliminen), llamadas retenidas aparte.

Grabar el video en vivo. Con Grabar video en vivo del llamador activado, el video en vivo del llamador se mantiene con las fotos y clips como un archivo por cada segmento de video: las mismas imágenes que envió el teléfono, sin convertir, en un archivo IVF (H.264 o VP8 con el tiempo de cada imagen), hash como se escribe. Una imagen dañada por un paquete perdido se deja fuera en lugar de mantenerla rota, y se solicita al teléfono que proporcione una imagen completa para continuar. Revelar reproduce el video (desde una copia en WebM o MP4 que crea ffmpeg, las mismas imágenes en otro contenedor; sin ffmpeg solo se descarga el original); Descargar el original proporciona el archivo del que se obtiene el hash. ffmpeg, VLC y herramientas de video forenses abren el original.

En CAD. El EIDO (NENA-STA-021) enviado a CAD nombra cada foto, clip y grabación, y el video en vivo mientras dura, como datos adicionales por referencia: urlPurpose es caller-photo, caller-video, caller-video-recording o caller-video-live, y additionalDataByReferenceUrl es el archivo en /m/{viewToken}/{n} o el video en vivo en /whep/{viewToken}. BitVoice envía a CAD el EIDO nuevamente cuando llega un archivo o comienza o finaliza un video en vivo. Los enlaces utilizan Dirección de enlace (o la dirección pública de este servidor); sin ninguno, el EIDO no nombra los medios. Cada recuperación a través de ellos está en el registro de exposición. La secuencia de eventos dice lo mismo (GET /api/events: call.media, call.video). Los EIDOs de BitVoice se verifican contra el esquema de EIDO publicado por NENA.

Los enlaces que no existen se adivinan a un ritmo no mayor que las sesiones de inicio: una dirección que sigue intentando se rechaza durante un tiempo. Los archivos de los llamadores se sirven en una sandbox, nunca como una página de este servidor.

Exposición. Cada revelación de un video en vivo y cada apertura de una foto o clip se cuenta bajo Exposición en llamadas de emergencia 911: quién, con qué frecuencia, en cuántas llamadas. Es para supervisores y el programa de bienestar del centro.

El video que un teléfono envía en la llamada de emergencia 911 en sí (video SIP sobre ESInet) se puede ver de la misma manera: Ver lo toma como la fuente cuando no hay un video de enlace en vivo.

Llamadas con solo un número. Una llamada de emergencia 911 que trae un número de devolución de llamada y no una ubicación (desde un tronco CAMA, o una llamada ESInet cuya ubicación no llegó) se puede buscar: proporcione Búsqueda de ubicación (ALI) la dirección de la interfaz HELD de su base de datos ALI o servidor de ubicación (RFC 5985, solicitado por número de teléfono como lo tiene RFC 6155). BitVoice solicita al llegar la llamada, sin retenerla, y la ubicación aparece en la llamada cuando llega la respuesta; la llamada indica cuándo falló la búsqueda y por qué.

El enlace ALI heredado. Sin un servidor HELD, BitVoice puede solicitar a un controlador ALI o al enlace de datos de la base de datos ALI, de la antigua manera: envía una solicitud y lee el registro como texto, a través de la red (dirección del enlace ALI host:puerto) o desde un puerto serie (serial:/dev/ttyUSB0?baud=9600&parity=none, con bits y stop también; un adaptador de serie USB funciona; en Linux y macOS, no en Windows: allí, use un convertidor de serie a red y su dirección). Solicitud es lo que se envía: {ani10} el número de devolución de llamada de diez dígitos, {ani7} sus últimos siete, {pos2} la posición,  STX y  ETX ({ani10} cuando está en blanco). La respuesta se lee hasta su ETX. Los diseños de ALI difieren entre proveedores y estados, así que coloca cada campo: su línea, su columna y su longitud (0: hasta el final de la línea), a partir de una impresión de una pantalla ALI; Calle (toda la línea) divide una línea de calle en sus partes, o coloca las partes una por una. Pegue un registro de muestra y Lea la muestra para ver las líneas con una regla de columnas y lo que cada campo lee; Pida solicita el enlace mismo para un número. La dirección y la posición del registro se convierten en la ubicación de la llamada, su nombre en el nombre del llamador, y su clase de servicio se muestra en la llamada. Los protocolos que no son una solicitud y una respuesta de texto (PAM, E2 y los propios de otros proveedores) no se hablan: necesitan una puerta de enlace.

ALI derramado sobre un puerto serie. ALI derramado a también toma un puerto serie (serial:/dev/ttyS0?baud=9600), para un CAD que lee el derrame de un cable serie.

El mapa. Debajo de Mapa en la configuración de 911, proporcione a BitVoice sus mosaicos de mapa: un archivo .mbtiles de mosaicos de raster (PNG, JPEG o WebP) en este servidor, para un mapa que funcione sin internet (su equipo de GIS, TileMill, gdal2tiles o un proveedor de mosaicos crea uno de su área), o un servidor de mosaicos con {z}, {x} y {y} en su dirección (el de su condado, o uno comercial: tenga en cuenta sus términos; los servidores OpenStreetMap públicos no son para esto). De cualquier manera, los navegadores de los call-takers recuperan mosaicos de BitVoice solo: lee el archivo, o recupera del servidor de mosaicos y mantiene los últimos mosaicos en memoria. El mismo mapa muestra posiciones de radio en la consola de radio. Los mosaicos vectoriales no son compatibles.

El registro i3 mantiene los eventos i3 de NENA de cada llamada (inicio de llamada, respuesta, ubicación, EIDO enviado), un archivo por día. Tiempo de respuesta muestra cuántas llamadas fueron respondidas dentro de su objetivo (NENA: 90% dentro de 15 segundos, 95% dentro de 20), las abandonadas, y el promedio de cada call-taker. Una fila por día (CSV) descarga los recuentos que las oficinas 911 del estado suelen solicitar (llamadas, respondidas, abandonadas, dentro del objetivo y dentro de 20 segundos, promedio y espera más larga) para los días elegidos; Una fila por llamada (CSV) enumera cada llamada 911 con cuándo se respondió, por quién y si era texto. Cada estado tiene su propia forma: configure la suya debajo de Diseños de informe. Una llamada de texto tomada en esta pantalla o a través de un CAD cuenta bajo la persona que la tomó; una que nadie tomó antes de que el llamador se fuera cuenta como abandonada.

Diseños de informe. Nuevo diseño de informe organiza un informe como su formulario estatal o de condado lo tiene: qué es cada fila (un día, una semana, un mes, una hora del día, un call-taker, o una fila en todos), una fila total, y las columnas, en orden, cada una con su propio encabezado si el formulario lo expresa de manera diferente: llamadas, respondidas, abandonadas (un recuento o una participación), respondidas dentro de tantos segundos (un recuento o una participación; los segundos son suyos, así que 10 y 20 para un formulario y 15 y 40 para otro), respondidas después de más de tantos segundos, el promedio y la espera más larga, el tiempo dentro del cual se respondieron el 90%, la longitud promedio de la llamada, y llamadas de texto (TTY, texto en tiempo real, texto a 911). Una espera cuenta desde la llegada de la llamada hasta la respuesta de un call-taker. Elija un diseño y fechas y Ejecutar para leerlo aquí, Hoja de cálculo (CSV) para descargarlo, o Página para imprimir para una página plana para imprimir o guardar como PDF. Los diseños se mantienen con la configuración, así que van con una copia de seguridad y en Git.

Llamadas TTY. Los llamadores sordos o con dificultades auditivas pueden llamar al 911 con un TTY (un teléfono de texto, Baudot a 45,45 bit/s). BitVoice escucha uno en cada llamada de 911 de voz, desde el primer momento: lo que el llamador escribe aparece en la llamada a medida que lo escribe, debajo de Texto, con una pausa o una nueva línea que comienza una línea fresca. Una llamada silenciosa puede ser un TTY esperando a que usted responda: una vez que responda, Responder por TTY envía texto incluso antes de que llegue alguno. Escriba la respuesta y presione Enviar: se envía al llamador como tonos TTY (la voz del call-taker se silencia mientras se reproduce, ya que los TTY se turnan), en mayúsculas, y se aplica la etiqueta TTY: termine cada turno con GA ("adelante"), y SK al cerrar. Los caracteres que un TTY no puede mostrar se dejan fuera. El habla, la música y los tonos de toque nunca se toman por texto TTY: un carácter cuenta solo cuando cada bit de él es un tono TTY limpio. La conversación se mantiene con la llamada en el historial de llamadas y en el registro i3 (un MessageLogEvent por turno). Desmarque Escuchar TTY en llamadas de 911 en la configuración de 911 para dejar de escuchar.

Transferencias. Una llamada de emergencia 911 enviada a otro PSAP mantiene su ubicación: el PIDF-LO va con la llamada.

Texto en tiempo real (RTT). Un teléfono que envía texto junto con su voz (RFC 4103, como los teléfonos VoLTE y las llamadas NG911) tiene su texto respondido por BitVoice mismo, ya que los teléfonos de escritorio no muestran ninguno: cada carácter aparece en la llamada a medida que el llamador escribe, y su respuesta se envía de vuelta como texto. Los paquetes perdidos se recuperan mediante la redundancia que lleva RTT; el texto perdido más allá de eso se muestra como .

Texto a 911. Un centro de control de texto (TCC) envía textos al PSAP como una sesión sin voz (MSRP, RFC 4975, a través del tronco ESInet). BitVoice responde y espera en llamadas de 911 marcadas Texto a 911, con los textos que han llegado; no suena el teléfono de nadie. Tomar este texto lo convierte en el call-taker (el tiempo de respuesta se cuenta entonces, y CAD obtiene el ALI y el EIDO entonces); responda en el cuadro debajo de la conversación, y Finalizar conversación cuando termine. El TCC que cierra la sesión la termina también. Un mensaje SIP enviado dentro del diálogo de una llamada de 911 se toma como el texto del llamador de la misma manera, y las respuestas se envían de vuelta por mensaje SIP. Los textos se toman solo de troncos marcados Desde el ESInet.

Un TCC que ofrece la sesión sobre TLS (TCP/TLS/MSRP, caminos msrps: , RFC 4975 sección 14) la obtiene sobre TLS, con el certificado de este servidor (Configuración › Certificados; sin uno tal, la oferta es rechazada). El certificado del TCC debe ser el que su oferta nombra (a=fingerprint, SHA-256); cuando no nombra ninguno, debe rastrearse hasta las raíces de la Agencia de credenciales del PSAP configuradas bajo Servicios básicos, si es que se han configurado algunas. La respuesta de BitVoice nombra su propio certificado de la misma manera.

Toda la conversación, sea cual sea la forma en que llegó, se mantiene con la llamada en el historial de llamadas y en el registro i3.

Lo que no está aquí todavía: pasar una sesión de texto a través del núcleo NG911 (el ESRP enruta la voz; una sesión de texto se responde donde llega); las suscripciones propias del estándar de transmisión de EIDO (NENA-STA-024 WebSocket): BitVoice publica EIDOs en una dirección.

Capítulo 78

Consola de despacho de radio

En la interfaz web: /radio

Los despachadores hablan en canales de radio desde el mismo auricular que sus llamadas telefónicas. BitVoice alcanza las radios a través de pasarelas de radio sobre IP (RoIP); la red de radio en sí permanece con quien la ejecuta.

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

Configuración. En Configuración de consola, elija un número de consola (800, por ejemplo) y agregue cada canal: su nombre, el puerto en este servidor al que la pasarela envía el audio del canal, y la dirección y el puerto de la pasarela para el audio de salida. En la pasarela: RTP, G.711 µ-law, a la dirección de este servidor y ese puerto; active la radio con voz (VOX). Cada canal utiliza su puerto y el siguiente, fuera del rango que utilizan las llamadas telefónicas.

Unirse. Un despachador marca el número de consola desde su teléfono de escritorio o presiona Unirse con el teléfono del navegador. Luego escucha el tráfico combinado de todos los canales; Escuchando / Silenciado en un canal lo elimina de su auricular. La lámpara de un canal se enciende mientras está recibiendo.

Hablar. Mantenga presionado el botón Mantener para hablar de un canal (o enfóquelo y mantenga presionada la barra espaciadora): su voz va solo a ese canal, y el canal muestra TX con su extensión. Un despachador habla en un canal a la vez; el botón se vuelve gris para los demás mientras alguien está hablando. Nada se envía a un canal mientras nadie está hablando, por lo que una radio con activación de voz nunca se mantiene en el aire.

Enlace. Presione Enlace en un canal, luego Enlace aquí en otro: los dos se escuchan entre sí (un canal de incendios y un canal de ayuda mutua, por ejemplo) hasta que presione Desenlazar.

Grupos de conversación P25. Un canal también puede ser un grupo de conversación P25, unido directamente a través del ISSI (TIA-102.BACA, la interfaz entre subsistemas P25; con Enviar la palabra PTT de la consola CSSI activada, BitVoice agrega la palabra del subsistema de la consola a cada solicitud). Elija Un grupo de conversación P25 (ISSI), proporcione el ID del grupo de conversación, la dirección SIP y el ID del RFSS que es el hogar del grupo de conversación, y un puerto para su voz. En Esta consola en el sistema P25, ingrese el WACN y el ID del sistema, el ID del RFSS que su administrador de P25 dio a esta consola, el ID de unidad que los despachadores transmiten como, y el puerto SIP que el ISSI utiliza aquí; el sistema P25 debe conocer este servidor como un RFSS en esa dirección. El mosaico muestra P25 mientras la llamada de grupo está arriba (P25 abajo y la razón cuando no lo está), y el ID de unidad de la radio que habla, en rojo con EMERGENCIA cuando es una llamada de emergencia. Mantener para hablar solicita el canal al RFSS de origen (Solicitando el canal...); su voz va una vez que lo concede, y si lo rechaza (alguien con una prioridad más alta lo tiene) el mosaico lo dice. La voz se convierte a y desde IMBE, el codificador de voz P25, en BitVoice.

Grupos de conversación cifrados. Debajo de Claves de cifrado, agregue cada clave de tráfico que su tienda de radios le proporcione: un nombre, el algoritmo (AES-256, DES-OFB o triple DES), el ID de la clave y la clave en sí en hexadecimal (TIA-102.AAAD). Una clave nunca se muestra nuevamente una vez guardada, ni siquiera a los administradores, y dejar el campo vacío la mantiene. La consola escucha una transmisión cifrada cuando tiene la clave con ese algoritmo y ID de clave: la baldosa muestra un candado y el algoritmo junto a la unidad que habla. Sin la clave, la transmisión se silencia, nunca se reproduce como ruido, y la baldosa dice no hay clave: silenciado. Para transmitir cifrado en un grupo de conversación, elija una clave debajo de Transmitir para ese canal; la baldosa entonces muestra TX AES-256 (o el algoritmo que eligió). Una exportación de configuración completa (Configuración, copia de seguridad de un administrador) lleva las claves, así que mantenga esos archivos tan seguros como las claves.

Llamadas privadas. Con la consola en un sistema P25, Llamar a una radio en la barra de su posición llama a una radio por su ID de unidad (active Emergencia para llamarla como una emergencia). La llamada se convierte en una baldosa propia, Llamada privada: unidad 197, con Mantener para hablar como cualquier canal y Colgar. Las radios también pueden llamar a la consola, en el ID de unidad que los despachadores transmiten: la llamada aparece como una baldosa marcada llamada entrante (en rojo con EMERGENCIA cuando la radio llamó como una emergencia), todos los despachadores la escuchan, y se va cuando cualquiera de los lados cuelga. Debajo de Llamadas privadas en la configuración P25 de la consola, proporcione la dirección SIP y el ID del RFSS que es el hogar de las radios (vacío utiliza el hogar del primer grupo de conversación) y, si las llamadas privadas deben estar cifradas, la clave para enviarlas con.

Tono de alerta. Enviar un tono de alerta... en un canal envía uno de: Alerta 1, un tono constante de 1000 Hz durante 3 segundos; Alerta 2, un zumbido entre 1000 y 1500 Hz; Alerta 3, pulsos de 1000 Hz; o un breve Pitido. El tono mantiene el canal mientras se reproduce (la baldosa muestra tono y su extensión), todos los despachadores que monitorean el canal lo escuchan, y en un grupo de conversación P25 se envía una vez que el RFSS hogar concede el canal.

Emergencias. Cuando una radio transmite como una emergencia (su botón de emergencia), su baldosa se vuelve roja con EMERGENCIA y el ID de la unidad, el registro del servidor lo anota, y CAD se lo comunica al instante (a continuación). La emergencia permanece activada en todas las consolas después de que la radio deja de hablar, hasta que un despachador presiona Reconocer: la baldosa entonces dice quién la reconoció y cuándo, y CAD recibe un evento radio.emergency.ack. Reconocer nombra la unidad mostrada: si otra unidad de emergencia la reemplazó un momento antes, BitVoice se niega y la baldosa muestra la nueva, así que una segunda emergencia nunca se silencia por error. CAD puede reconocer a través de la API de la misma manera: POST /api/radio/channels/{id}/ack con {"unit": "bee07.1d5.00044d"} (o el ID de la radio, "1101") responde 409 cuando la emergencia del canal es ahora de otra unidad; sin un cuerpo reconoce la que el canal mantiene.

Simulselect. Para decir algo en varios canales al mismo tiempo, active seleccionar en cada canal, luego mantenga Hablar en N canales en la barra superior de las baldosas. Es todo o nada: si otro despachador está hablando en uno de ellos, ninguno se activa y se le informa cuál.

Posiciones de radio. Las radios informan dónde están a través del lado de datos del sistema de radio, no del lado de voz al que se une la consola: servicio de ubicación P25, LRRP de Motorola o un servicio propio del proveedor, recopilado por el gateway de datos o AVL de la tienda de radios. Haga que el gateway (o un pequeño script junto a él) envíe cada informe a BitVoice con un token de API: POST /api/radio/locations con {"unit": 1205, "lat": 40.2633, "lon": -76.8823, "speed": 42, "heading": 90, "accuracy": 8, "at": "2026-10-15T14:05:00Z"}, o una lista de hasta 500 (velocidad en km/h, dirección en grados, precisión en metros; los tres y el tiempo son opcionales). Posiciones de radio en la consola entonces enumera la última posición de cada radio, con su nombre, y CAD recibe cada una como un evento radio.location. BitVoice no decodifica LRRP ni el servicio de ubicación P25 en sí.

Nombres de radio. Debajo de Nombres de radio, nombre las radios por su ID de unidad P25 (1205 es "Motor 5", digamos): la baldosa muestra el nombre junto al ID de la unidad mientras habla, y el registro de radio y los eventos de CAD llevan el nombre.

Registro de radio y grabación. Active Grabar cada transmisión debajo de Grabación y CAD: cada transmisión en cada canal, escuchada o enviada, se mantiene como una grabación con una línea en el Registro de radio: cuándo, el canal, quién (el ID de la unidad de la radio, o la extensión del despachador), cuánto tiempo duró, y si fue una emergencia, un tono de alerta, cifrada o una llamada privada. Una transmisión escuchada comienza con la primera palabra y termina 1,5 segundos después de la última palabra. Encuentre una unidad, despachador o canal con la casilla de búsqueda, y presione Reproducir para escuchar. Las grabaciones se mantienen durante tanto tiempo como se mantienen las grabaciones de llamadas (Configuración, Grabación).

Datos de radio a CAD. Proporcione la dirección de CAD en Enviar eventos de radio a CAD en (y un secreto compartido si CAD lo desea; se envía como un token de portador y no se muestra nuevamente). BitVoice luego publica cada evento (radio.unit, radio.emergency, radio.emergency.ack, radio.transmission y radio.location) como JSON, {"type": ..., "agency": ..., "data": {...}}: radio.unit cuando una radio comienza a hablar en un canal (su ID de unidad, WACN, sistema, el canal, emergencia, cifrado), radio.emergency para una emergencia (intentado tres veces si CAD no responde), y radio.transmission para cada transmisión finalizada como aparece en el registro de radio. CAD también puede leer el registro en sí mismo con GET /api/radio/log (filtros: channel, q, since, until). Un CAD que esté caído nunca retiene la consola. Las posiciones GPS de las radios P25 no son parte de esto: viajan sobre los servicios de datos de paquetes P25 (servicios de ubicación), no sobre la voz ISSI.

No está aquí todavía: voz P25 Fase 2 (TDMA) en su propio codificador de tasa de bits reducida. Un sistema de Fase 2 funciona con la consola cuando sus grupos de talkgroups ISSI llevan voz de tasa de bits completa (Fase 1) o su transcodificador los convierte, lo que es común: pregúntele a su administrador P25. Un grupo de talkgroups cuya voz llega en bloques que esta consola no decodifica (voz de tasa de bits reducida enviada sin transcodificar, lo más probable) muestra Silencio aquí en su mosaico mientras una radio habla, para que nadie tome el silencio por un canal tranquilo. Decodificarlo necesita dos cosas que BitVoice no tiene: el codificador de tasa de bits reducida (AMBE+2, patentado hasta 2028: una licencia de su propietario, o un chip de codificador de hardware con licencia), y el formato de bloque de voz de tasa de bits reducida ISSI (TIA-102.BACA-B, vendido por TIA, no público).

Capítulo 79

Servicios básicos del núcleo NG911 (ECRF, ESRP, LVF, BCF, LIS, registro)

En la interfaz web: /core

Para una autoridad estatal o regional de 911 que ejecuta su propio núcleo NG911: BitVoice responde a LoST como el ECRF y enruta cada llamada de 911 como el ESRP al PSAP que atiende al llamador.

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 servicio. Exporte sus límites desde GIS como polígonos GeoJSON (límites del PSAP para urn:service:sos; áreas de policía, bomberos o EMS para urn:service:sos.police y los demás) y subálalos en Servicios básicos. Se leen las propiedades name, uri y number de un polígono; proporcione una URI de PSAP predeterminada para aquellos que no la tienen. Editar un área para agregar las ciudades o condados que atiende, para llamadores cuya ubicación es solo una dirección cívica. Probar un lugar muestra qué área responde a una posición o una ciudad, como una consulta LoST.

El ECRF. Active Responder consultas LoST y enumere las direcciones que pueden preguntar (su ESInet): otros elementos envían findService a /lost (RFC 5222) y obtienen la URI del PSAP. Un servicio específico (sos.police) se responde desde sus propias áreas primero, luego desde sos. Un lugar que ninguna de sus áreas cubre puede ir al Guía de bosque (RFC 5582: el directorio nacional de ECRF): se realiza una consulta recursiva en su nombre y se devuelve su respuesta (ambios servidores enumerados en la ruta de respuesta), cualquier otra consulta obtiene una redirección a él, y una consulta que ya ha pasado por este ECRF se rechaza como un bucle.

El ESRP. Enumere los PSAP: la URI de cada uno (como las áreas lo nombran), el tronco que lo alcanza y su PSAP de desbordamiento, y elija el PSAP predeterminado. Luego envíe las llamadas de 911 de entrada de ESInet a ESRP en Enrutamiento de llamadas (capítulo 8). Cada llamada va al PSAP de su ubicación (desde las áreas de este servidor, o un ECRF externo por LoST), con su ubicación y el servicio que solicitó transportado; cuando ese PSAP no la toma, a su desbordamiento; sin ubicación, o desde un lugar que ninguna área cubre, al predeterminado. Cada decisión está en el registro i3 en llamadas de 911 (capítulo 77).

Reglas de política. Una vez que el ECRF ha elegido un PSAP, se verifican las reglas bajo Reglas de política en orden y la primera cuyas condiciones todas se cumplan decide: enviar la llamada a otro PSAP, o rechazarla como ocupada. Una regla puede examinar el servicio (llamadas de incendio solamente, por ejemplo), el PSAP que el ECRF eligió, un horario (mientras el centro de turno de noche está cerrado), llamadas sin ubicación, llamadas que el BCF marcó como sospechosas, y el tronco por el que llegó la llamada. Cada decisión está en el registro i3 como un RouteLogEvent que nombra la regla.

Control de frontera (BCF). Con Verificar llamadas desde ESInet activado, cada llamada desde un troncal ESInet se verifica primero: las direcciones bajo Siempre rechazar son rechazadas, y también lo es una dirección que inicia más llamadas por minuto, o mantiene más llamadas al mismo tiempo, de lo que se permite (un ataque de denegación de servicio de telefonía envía inundaciones de llamadas desde unas pocas fuentes). Las llamadas rechazadas reciben 503 con Retry-After. Active Dejar que la llamada pase marcada como sospechosa para enviar dichas llamadas en su lugar y dejar que una regla de política decida (a un centro que las evalúe, o rechazadas); un llamador real en una inundación no se pierde. Control de frontera: última enumera lo que fue rechazado o marcado. Verificar firmas STIR/SHAKEN verifica la identidad del llamador firmada (el encabezado Identity) de cada llamada que la lleva, contra las raíces STI establecidas en la pantalla de llamadas en Configuración: una llamada cuya firma falla pasa marcada como sospechosa, para que una regla de política la envíe a otro lugar, y se enumera en el registro BCF; una llamada de emergencia 911 nunca es rechazada por ella, y las llamadas no firmadas (la mayoría de ellas hoy en día) se dejan solas. Cada llamada sale de BitVoice como una nueva solicitud por su cuenta (BitVoice es un agente de extremo a extremo), llevando solo los encabezados y cuerpos que BitVoice entiende y pasa: la ubicación, los datos adicionales y la sesión. Inspeccionar medios verifica cada paquete RTP de una llamada ESInet antes de que se utilice o pase: los paquetes de una dirección diferente a la que dio el SDP de la llamada, con un tipo de carga que la oferta no nombró, con longitudes de encabezado (CSRC, extensión, relleno) que no encajan en el paquete, más grandes que Paquete más grande (1,500 bytes cuando está en blanco), o más allá de Paquetes por segundo (150 cuando está en blanco; G.711 a 20 ms envía 50) se descartan y se cuentan. El primero de cada tipo, luego el 10, 100 y así sucesivamente, se enumera en Control de frontera: última (como *medios descartados*) y en las notas de la llamada. La llamada nunca se termina por sus medios: el llamador mantiene los paquetes buenos. Las llamadas desde troncales CAMA provienen del programa de tarjeta local y no se inspeccionan.

Validación de direcciones (LVF). Suba sus datos de direcciones GIS de 911 como GeoJSON, en el modelo de datos GIS de NENA (NENA-STA-006): líneas centrales de carreteras con FromAddr_L, ToAddr_L, Parity_L, IncMuni_L y el resto, y puntos de direcciones de sitios/estructuras con Add_Number, St_Name, Inc_Muni. Una consulta LoST con validateLocation="true" obtiene entonces las partes válidas, inválidas y no verificadas de la dirección en su respuesta (RFC 5222), para que los operadores y servidores de ubicación puedan corregir una dirección antes de que una llamada de emergencia 911 la utilice. Verificar una dirección hace lo mismo aquí: un punto de dirección exacto es la mejor coincidencia, luego un segmento de calle cuyo rango en el lado derecho de la carretera contiene el número (respetando lados impares y pares); las grafías como Street y St, North y N se tratan de la misma manera.

El servicio de registro i3. Active Ejecutar un servicio de registro i3: los demás elementos de su núcleo (ESRPs, BCFs, PSAPs) envían sus eventos de registro (NENA-STA-010), cada uno firmado como un JWS con el certificado del elemento en su encabezado x5c, mediante POST a /i3log/LogEvents desde las direcciones permitidas. Cada uno viene como un JWS en la forma JSON aplanada (firmado, o sin firmar con algoritmo none, que un servicio de registro puede aceptar: marcado como no rastreado al PCA), se verifica y se mantiene, y la respuesta es su ID de evento de registro. Lea de nuevo con GET /i3log/LogEvents/{logEventId}; enumere con GET /i3log/LogEvents (startTime, endTime, logEventType, limit, start); encuentre los ID de una llamada o incidente con /i3log/LogEventIds, /CallIds, /IncidentIds y /AgencyIds; y lea la conversación de texto de una llamada con /i3log/Conversations?callId=. GET /i3log/Versions dice qué versión habla este servicio. Eventos de registro recibidos enumera los eventos de un día con quién firmó cada uno. Cada respuesta se verifica contra la definición OpenAPI publicada por NENA del servicio; el servicio aún no se ha probado con elementos de otro proveedor.

Agencia de credenciales PSAP. Pegue los certificados raíz de la PCA bajo Raíces de la Agencia de credenciales PSAP: un evento de registro firmado se acepta solo cuando el certificado del firmante se encadena a uno de ellos (y no ha caducado), y se muestra con PCA. Sin ellos, se verifica solo la firma, y el evento se muestra como no rastreado al PCA.

Registros de ubicación (LIS). Active Respuestas de solicitudes de ubicación (LIS) y cargue una hoja de cálculo (CSV) de registros de ubicación: una fila de encabezado, y en cada fila uno de un número (los datos ALI exportados), una red (un rango de direcciones como 10.20.3.0/24, o una dirección: un edificio, una planta, una VLAN, una red Wi-Fi) o una dirección mac (un dispositivo: un teléfono de escritorio, un conmutador de puerto de una toma de pared), luego la dirección como hno, rd, sts, unit, floor (o flr), a3 (ciudad), a1 (estado), pc y país, con lat, lon y radio donde se conozcan (otros nombres, como teléfono, calle, código postal, subred y ip, también se entienden). Los PSAP, las puertas de enlace de red heredadas y los teléfonos solicitan luego /held (HELD, RFC 5985) desde las direcciones permitidas y obtienen un PIDF-LO. Una solicitud nombra su dispositivo por número de teléfono, dirección IP o dirección MAC (RFC 6155); una solicitud que no nombra ninguno se responde para la dirección desde la que se realizó, como un LIS en una red de oficina o campus. Una dirección se localiza por la red más estrecha que la contiene, por lo que una planta con /24 gana sobre el campus con /16. Un dispositivo sin registro obtiene locationUnknown de HELD; una identidad de otro tipo (un NAI, un puerto) obtiene notLocatable. Un PSAP de BitVoice apunta su Búsqueda de ubicación (ALI) aquí. Buscar un número, dirección o dirección MAC verifica un registro y dice de qué red provino. Un número, red o dirección MAC enumerada nuevamente reemplaza su registro antiguo; Reemplazar todos los registros comienza de nuevo. Solo se responden las direcciones permitidas: un LIS que responde para cualquier dirección sobre la que se le pregunte no debe estar abierto a cualquiera.

Los servicios web de i3. Debajo de Servicios web de i3 de NENA, active lo que este núcleo ofrece a los demás elementos de su ESInet, en /i3/<service>/v1, solo para las direcciones debajo de Puede preguntar. Cada uno responde como dicen las definiciones de OpenAPI publicadas por NENA (NENA-STA-010.3, los repositorios de NENA911), y cada uno tiene una pestaña debajo de Servicios web de i3:

Prueba de llamadas en un PSAP. Un PSAP de BitVoice responde a una llamada de prueba desde el ESInet (urn:service:test.sos, NENA-STA-010.3 sección 9, RFC 6881) por sí mismo: su respuesta dice el nombre del PSAP, el servicio y la ubicación de la llamada, los primeros tres paquetes de sonido se devuelven y cuelga. Una segunda prueba desde el mismo lugar dentro de dos minutos es rechazada (486), al igual que una quinta al mismo tiempo. Un ESRP pasa una llamada de prueba como una llamada real, aún marcada como una prueba. Desactive Responder llamadas de prueba en la página de llamadas de emergencia 911 para rechazarlas (404).

Algoritmos JWS: NENA-STA-010.3 solicita EdDSA con Ed448. La biblioteca estándar de Go, que BitVoice utiliza para cada paso criptográfico, tiene Ed25519 pero no Ed448, por lo que las firmas EdDSA se verifican con claves Ed25519, y también se aceptan firmas ECDSA y RSA; un certificado Ed448 es rechazado.

¿Quiso decir. Una dirección que no es válida obtiene hasta cinco sugerencias de los mismos datos, mejor primero, cada una diciendo por qué: una calle a una o dos letras de distancia (un par de letras intercambiadas cuenta como una), la misma calle en la ciudad de al lado, o el número más cercano que tiene la calle, en el mismo lado cuando es posible (los números pares permanecen pares). Usar rellena una sugerencia. Una posición con la dirección. Proporciona una latitud y longitud (y el radio de la posición, cuando se conoce) con la dirección: la posición se verifica contra el punto de dirección de la dirección, permitiendo su radio y 100 m más (el tamaño de un terreno y el error GIS). La respuesta da la distancia y si los dos coinciden, y, cuando no coinciden, el punto de dirección más cercano a la posición. Una dirección conocida solo a partir de líneas centrales de carreteras no tiene punto para verificar, y la respuesta lo dice. La validación de ubicación de LoST no tiene lugar para ninguno, por lo que los operadores que preguntan por LoST obtienen la validación sola.