Manual de BitVoice
Contenido
- Parte 1. Empezar
- 1. Empezar
- 2. Qué tan maduro es cada parte
- 3. Extensiones
- 4. Conectar teléfonos
- 5. Teléfonos Skinny y pasarelas MGCP
- 6. Tarjetas de telefonía
- 7. Troncales
- 8. Enrutamiento de llamadas
- 9. Conjuntos de PIN
- 10. Búsqueda de ID de llamador
- 11. Llamadas de emergencia
- 12. Sitios y 911 de oficina
- 13. Salud
- 14. Configuración
- 15. Las pantallas en su idioma
- Parte 2. Dónde van las llamadas
- 16. Flujo de llamadas
- 17. Grupos de timbre
- 18. Colas
- 19. Discador de salida
- 20. Sonidos: prompts, idiomas y música de espera
- 21. Menús (autoatendido)
- 22. Directorio de marcación por nombre
- 23. Marcación (DISA)
- 24. Bots de voz (AudioSocket)
- 25. Toggles de día/noche
- 26. Horarios
- 27. Secuencias (JavaScript y Lua)
- 28. Recepciónista de inteligencia artificial, triage de correo de voz y preguntas
- 29. Buzón de voz
- 30. Llamadas de devolución
- 31. Enlaces de llamada y llamada desde el sitio web
- Parte 3. Llamadas diarias
- 32. Códigos de función, reenvío y marcaciones rápidas
- 33. El portal de personal
- 34. Salas de conferencia
- 35. Página y altavoces de sobrecarga
- 36. Puestos de trabajo compartidos
- 37. Llamadas de hotel y despertador
- 38. Contactos en cada teléfono
- 39. Calendarios y no molestar
- 40. Aplicaciones móviles
- 41. Llamadas de video
- 42. Fax: envío y recepción, máquinas de fax y teléfonos analógicos
- 43. Bandeja de entrada: chat web, WhatsApp y Messenger
- 44. Mensajería de texto (SMS)
- 45. Transferir informes breves
- Parte 4. Clientes y perspicacia
- 46. Llamadas en vivo
- 47. Historial de llamadas
- 48. Línea de tiempo del cliente
- 49. CRM: tarjetas de llamadores y registro de llamadas
- 50. Perspectiva de llamada para supervisores
- 51. Grabación de llamadas y pagos con tarjeta
- 52. Consentimiento de grabación
- 53. Calidad de la llamada
- 54. Costos y presupuestos
- 55. Reputación de ID de llamador y llamadas con marca
- 56. Protección contra spam y STIR/SHAKEN
- Parte 5. Ejecutar BitVoice
- 57. Administradores
- 58. Inicio de sesión único
- 59. Directorio de la empresa (Active Directory y LDAP)
- 60. Seguridad
- 61. Cambios, copias de seguridad e importación
- 62. Actualizaciones
- 63. Varios servidores como un sistema de telefonía
- 64. Donde se almacenan los datos (SQLite o PostgreSQL)
- 65. Hospedaje de otras organizaciones
- 66. Codecs y sonido
- 67. Microsoft Teams (Enrutamiento directo)
- 68. Importar
- 69. Configuración como código
- 70. Compatibilidad con Asterisk (AMI, ARI y AGI)
- 71. Asistentes de IA (MCP)
- 72. Archivo
- 73. Retenciones legales
- 74. Métricas: Prometheus, OpenTelemetry, Grafana, SNMP y registros de llamadas
- 75. Generador de llamadas
- 76. Rastreo SIP
- Parte 6. Seguridad pública: la pista del laboratorio
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.
Empezar
/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.
Qué necesitas
- Una computadora para ejecutarlo: un servidor de oficina pequeño, una máquina virtual, una instancia en la nube o, para una primera mirada, su propia laptop. Linux, macOS y Windows funcionan. Un Raspberry Pi 4 ejecuta una oficina pequeña.
- Teléfonos: teléfonos de escritorio de Yealink, Poly, Grandstream o Snom se configuran automáticamente; cualquier otro teléfono SIP o softphone funciona con sus propias configuraciones; y cada navegador es un teléfono también.
- Un tronco (una cuenta con una compañía telefónica) para llamar números externos y ser llamado. Puede comenzar sin uno: las extensiones se llaman entre sí y la prueba de eco.
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
- Extensiones: una por persona o escritorio. Cada una tiene un número y una contraseña SIP. Abrir Extensiones (capítulo 3)
- 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)
- Tronco: su cuenta de la compañía telefónica, para que pueda llamar números externos y ser llamado. Abrir Troncos (capítulo 7)
- 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)
- 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:
- Linux:
/usr/local/bin/bitvoice, un usuario del sistemabitvoice, datos en/var/lib/bitvoice, el servicio systemdbitvoicecon la interfaz web en el puerto 443. Cuando ufw o firewalld esté activado, abre los puertos 443, SIP (5060, 5061) y los puertos de audio de las llamadas (10000 a 20000 UDP). Imprime la dirección para abrir y el código de configuración que el asistente solicita desde otra computadora. - macOS: BitVoice en su carpeta de Aplicaciones (
~/Applications/BitVoice.app), iniciado cuando inicia sesión, la interfaz web en el puerto 8443, datos en~/Library/Application Support/BitVoice(abierto solo para usted) y registros en~/Library/Logs/BitVoice(bitvoice.log, mantenido por debajo de 10 MB). Abra BitVoice desde Launchpad o Spotlight para acceder a la interfaz web; cuando se detuvo, eso lo inicia nuevamente. Se ejecuta bajocaffeinate, para que la Mac no se duerma mientras se ejecuta BitVoice: una Mac dormida no responde llamadas, y incluso sus breves sueños de mantenimiento detienen todo durante muchos segundos. La pantalla aún puede apagarse. Ejecutar manualmente, usecaffeinate -i -s ./bitvoicepara lo mismo. Para una Mac que responde llamadas mientras nadie ha iniciado sesión, instale consudo(curl -fsSL https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.sh | sudo sh): entonces BitVoice está en/Applications, se inicia con la Mac, se ejecuta como un usuario oculto propio (_bitvoice), sirve la interfaz web en el puerto 443, mantiene sus datos en/Library/Application Support/BitVoicey sus registros en/Library/Logs/BitVoice, y el firewall de la Mac, cuando está activado, le permite aceptar conexiones. Uno de los dos por Mac: el instalador rechaza el otro mientras uno esté allí. Cuando el firewall de la Mac esté activado, una BitVoice instalada para usted solicita una vez si puede aceptar conexiones entrantes: permita que lo haga, para que los teléfonos puedan conectarse. Si algo ya utiliza el puerto, el instalador lo nombra y se detiene (elija otro conBITVOICE_HTTPS=:8444).sh install.sh --uninstall(consudopara la propia Mac) lo elimina y mantiene los datos;--purgeelimina los datos y registros también. Probado en macOS 26 (Apple silicon), instalado para una persona: instalado, firma verificada con ssh-keygen de la Mac, una segunda inicialización en los mismos datos rechazada, de vuelta después de que se mató el programa, iniciado nuevamente desde la aplicación, actualizado en su lugar, un programa manipulado rechazado, un puerto en uso rechazado, desinstalado manteniendo los datos, reinstalado en él y purgado con nada quedando. La instalación para toda la Mac (sudo) se prueba en cada cambio en las máquinas macOS de GitHub (Apple silicon): se ejecuta como_bitvoiceen el puerto 443, una instalación de usuario junto a ella rechazada, de vuelta después de que se mató el programa, actualizado, purgado con nada quedando (el usuario oculto también). Las Macs Intel no se han probado aún. - Windows: como administrador,
C:\Program Files\BitVoice, iniciado con Windows, datos enC:\ProgramData\BitVoice, y una regla de firewall para redes privadas y de dominio; de lo contrario, para usted solo, iniciado cuando inicia sesión. Funciona en Windows PowerShell 5.1 (lo que tiene Windows Server) y en PowerShell 7, y en 5.1 iniciado desde dentro de 7. BitVoice escribe su registro enbitvoice.logen la carpeta de datos (mantenido por debajo de 10 MB, la parte más antigua enbitvoice.log.1), e imprime el código de configuración que el asistente solicita desde otra computadora. Windows llama a una nueva Wi-Fi o red Pública hasta que se le indique lo contrario, y la regla de firewall no permite nada allí: para una red doméstica o de oficina, el instalador dice cómo hacer que sea Privada (Configuración, Red e Internet, Propiedades de la red); para un servidor en la nube, imprime la regla para agregar (abrir los puertos en el firewall del proveedor también). Instalado como administrador, la carpeta de datos es legible solo para administradores (contiene la base de datos y las claves), y el menú de inicio de BitVoice abre la interfaz web; instalado para usted, el menú de inicio inicia BitVoice, o lo abre cuando ya está en ejecución. De cualquier manera, está en Configuración, Aplicaciones, Aplicaciones instaladas, que lo elimina y solicita si eliminar sus datos también. Probado en Windows 11 (como administrador y no) y en Windows Server 2022 en Amazon EC2: instalado, alcanzado desde fuera, ejecutándose nuevamente después de un reinicio. - Probado en: Ubuntu 24.04 y 20.04, Debian 12 y Fedora 42 (cada uno con systemd): instalado, firma verificada, una segunda inicialización en los mismos datos rechazada, de vuelta después de que se mató el programa, actualizado en su lugar, un programa manipulado rechazado, desinstalado manteniendo los datos, reinstalado en él y purgado con nada quedando.
- Linux en un servidor en la nube: la dirección que imprime es la propia, privada de la máquina; el instalador lo dice. Abra el servidor por su dirección o nombre público, con los puertos 443, SIP y de audio abiertos en el firewall del proveedor.
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.
| Sistema | Cómo iniciarlo | Dónde están sus datos |
|---|---|---|
| Linux | ./bitvoice (o el servicio systemd en la versión) | ~/.config/BitVoice |
| macOS | ./bitvoice | ~/Library/Application Support/BitVoice |
| Windows | haga 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
| Puerto | Para qué |
|---|---|
| 5060 UDP y TCP | SIP: teléfonos y troncales |
| 5061 TCP | SIP sobre TLS (señalización cifrada) |
| 4569 UDP | Troncales IAX2, solo una vez configurada |
| 1720 TCP | Troncales H.323, solo una vez configurada |
| 2000 TCP | Teléfonos Skinny (SCCP), solo cuando se activa |
| 2727 UDP | Pasarelas MGCP, solo cuando se activa |
| 10000–20000 UDP | El sonido de las llamadas (RTP), configurado en Ajustes |
| 8443 TCP | Esta 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
- Presione ⌘K (Ctrl+K) en cualquier lugar para saltar a una pantalla, o escriba el nombre o número de una extensión para abrirla.
- En un teléfono, el menú está detrás del botón ☰ en la parte superior izquierda (y la búsqueda al lado, en la parte superior derecha); elegir una página la cierra de nuevo.
- Cada pantalla tiene un enlace Ayuda en la parte superior derecha que abre su capítulo de este manual.
- Cambios mantiene cada versión de la configuración: puede ver qué cambió y deshacerlo.
- Tres temas (Medianoche, Oscuro y Claro) están al pie del menú.
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.
| Área | Madurez | Lo que se basa |
|---|---|---|
| Troncales SIP: registro, llamadas entrantes y salientes, identificador de llamador, ocupado, teclas (RFC 4733) | Probado en campo | un 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 SIP | Probado en campo | Asterisk 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 campo | desde fuera hacia EC2; pruebas de Chromium con sonido en ambos sentidos |
| Dos servidores, uno PostgreSQL, conmutación por error | Probado en campo | kill -9 y detención planificada en EC2: la llamada continúa, la línea del proveedor se mueve |
| Instalación de un solo comando | Probado en campo | Ubuntu 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 |
| Capacidad | Probado en campo | 2.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 campo | una 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, recepcionista | Probado en campo | un modelo real a través de OpenRouter |
| Hechos y resúmenes sin modelo de lenguaje | Probado en software | llamadas 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 Linux | whisper-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 Manager | Probado en campo | AWS real, nuestro propio SigV4 |
| Monitoreo y trampas SNMP | Probado en campo | net-snmp's snmpwalk y snmptrapd |
| Let's Encrypt | Probado en campo | emite y renueva el certificado de la demostración pública |
| Imágenes de máquina (AWS) y configuración como código | Probado en campo | una 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 IAX2 | Verificado contra una referencia | Asterisk 23 |
| ICE completo detrás de NAT (cliente STUN y TURN) | Verificado contra una referencia | agente 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 referencia | Chromium 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 referencia | Asterisk 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 referencia | OpenLDAP 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 referencia | cada 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 pantalla | Verificado contra una referencia | Tres 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 referencia | cada 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 MCP | Verificado contra una referencia | el 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 software | contra 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 idiomas | Probado en software | cada 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.323 | Verificado contra una referencia | H323Plus 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 WebSocket | Verificado contra una referencia | JsSIP y SIP.js |
| Códecs: GSM, G.726, iLBC, música de espera MP3 | Verificado contra una referencia | ffmpeg, el programa de referencia RFC 3951 y minimp3, muestra para muestra |
| Códecs: G.711, G.722, G.729, Opus, Speex | Verificado contra una referencia | G.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-WB | Verificado contra una referencia, con una brecha conocida | AMR-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, Codec2 | Probado en software | pruebas 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/E1 | Verificado contra una referencia | libpri (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&M | Verificado contra una referencia | OpenR2; 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 referencia | libss7 (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 campo | un 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, CyberData | Probado en software | los formatos documentados de los proveedores; no en teléfonos reales |
| Teléfonos Skinny (SCCP) y gateways MGCP | Verificado contra una referencia | Skinny: 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 Teams | Probado en software | contra 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 referencia | cada 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 web | Verificado 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 Vault | Verificado contra una referencia | EspoCRM (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, sugerencias | Probado en software | pruebas 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 Android | Probado 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 llamante | Laboratorio | esquemas 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 ofrecido | patentado hasta 2028 |
| Firmas Ed448 (NENA) | No ofrecido | no 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 TCAP | Verificado contra una referencia | OsmoSTP 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 software | cada 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 E2 | No ofrecido | PAM 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 |
Extensiones
/extensionsUna 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.
Agregar una extensión
- Abra Extensiones (capítulo 3) y presione Agregar extensión. El próximo número libre y una contraseña SIP segura se rellenan.
- Introduzca el nombre de la persona (que se muestra en otros teléfonos cuando llama) y su correo electrónico (para correo de voz).
- Rellene la ubicación 911: el sitio, piso y habitación. Se envía con llamadas de emergencia.
- Elija qué sucede Si nadie responde: correo de voz por defecto, o otra extensión, un grupo o un menú.
- Guarde. La extensión puede conectarse al instante.
Los campos
| Campo | Qué hace |
|---|---|
| Número | 2 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 SIP | con qué el teléfono se conecta; al menos 12 caracteres; Generar crea una nueva |
| Sonar durante | segundos antes de que suceda Si nadie responde (25 por defecto) |
| ID de llamador externo | el número que se muestra en las llamadas salientes; vacío utiliza el del tronco |
| Puede llamar números externos | desactivado mantiene el teléfono en llamadas internas y números de emergencia |
| Grabar llamadas | cuando Configuración graba solo extensiones seleccionadas |
| Escritorio compartido | un teléfono compartido que se convierte en quien se conecta a él |
| Cifrar llamadas a este teléfono | cifrado de medios (SRTP); úselo con TLS para que las claves permanezcan privadas |
| Departamento | agrupa 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:
- Seguimiento suena en más números cuando los teléfonos aquí no responden: un móvil, otro escritorio. Sonan uno después de otro, o todos juntos, durante su propio tiempo de sonido. Con Números externos presionen 1 para tomar la llamada activado, quien responde en un móvil presiona 1 primero, para que el correo de voz del móvil nunca tome la llamada. Vea Códigos de función (capítulo 32).
- Grupo de recogida: cualquier persona en el mismo grupo responde las llamadas que suenan en esta extensión marcando
*8. - Permitir altavoz:
*80y este número responde en el altavoz por sí solo. Desactívelo para personas que nunca quieran eso. - Marcadores de velocidad propios: códigos cortos para esta persona solo, marcados después de
*0.
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
- Teléfono: un teléfono de escritorio, teléfono suave o aplicación.
- Estación de puerta: un altavoz en una puerta. Quien responde presiona el código de clave, o Abrir puerta en Llamadas en vivo. Con una dirección de controlador de puerta, BitVoice llama a esa dirección (2N, Axis, Akuvox, tarjetas de relé); sin una, el código se envía a la estación, que abre la puerta por sí sola.
- Altavoz de techo: las llamadas a él se responden al instante y se escuchan en el altavoz.
- Puerto de adaptador analógico: un teléfono antiguo, fax o panel de alarma en un adaptador. Las llamadas utilizan solo G.711, que los faxes necesitan.
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.
Conectar teléfonos
/phonesCualquier 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.
Configuración automática (aprovisionamiento)
- 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.
- Elija la marca: Yealink, Poly, Grandstream (incluidos los adaptadores analógicos HT), Snom, Fanvil, Cisco, Mitel, Sangoma, Algo o CyberData.
- 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.
- 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.
| Fabricante | Modelos probados | Lo que obtiene |
|---|---|---|
| Yealink | T3x, T4x, T5x | cuenta, teclas BLF, hora, codecs |
| Poly | VVX, Edge E | lo mismo, en el formato propio de Poly |
| Grandstream | GRP, GXP, HT802/814 | cuenta por puerto en adaptadores |
| Snom | D7xx | cuenta, 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):
| Marca | Modelos | Archivo que solicita el dispositivo |
|---|---|---|
| Fanvil | Series X y V | su dirección MAC .cfg |
| Cisco | 6800, 7800, 8800 multiplataforma (3PCC), adaptadores SPA | su dirección MAC .xml (el firmware empresarial necesita el firmware multiplataforma primero) |
| Mitel (Aastra) | 6800, 6900 SIP | su dirección MAC .cfg, en mayúsculas |
| Sangoma | Serie S | el archivo en formato Fanvil |
| Algo | altavoces de paginación, luces estroboscópicas, adaptadores | algop y su dirección MAC .conf |
| CyberData | altavoces, intercomunicadores, adaptadores de paginación | su 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):
- Ofrece a los navegadores sus propias direcciones, su dirección pública como la ven los servidores STUN, y los relays en los servidores TURN en los que se registra (UDP; un nombre de usuario y una contraseña cada uno), y verifica cada par de direcciones con el navegador, como lo hace el navegador.
- Relay cada llamada a través de TURN envía todos los medios de los navegadores a través de los servidores TURN, para redes que lo requieren.
- Encuentra mis direcciones pregunta a los servidores como lo haría una llamada y enumera lo que BitVoice ofrecerá: sus propias direcciones, la pública vista a través de STUN (un servidor STUN que no responde se indica así), y sus relays.
- Funciona para el teléfono del navegador, enlaces de llamadas, la prueba de eco y teléfonos softphones SIP-over-WebSocket, en cualquier rol: BitVoice responde a una oferta del navegador, y ofrece a un teléfono softphone que llama. Los navegadores que ocultan sus direcciones detrás de nombres mDNS (
name.local) se resuelven en la red local, y la dirección del navegador como la vio el servidor web se deja pasar a través de los relays desde el principio. - Desactivado por defecto; agrega un momento a cada llamada mientras los servidores responden (como máximo un segundo y medio). El video del llamador utiliza ICE-lite de cualquier manera.
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).
Teléfonos Skinny y pasarelas MGCP
/desk-phonesLos 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:
- Skinny (SCCP): teléfonos de escritorio Cisco que ejecutan firmware SCCP (79xx, 69xx, 89xx). Agregue cada teléfono por su dirección MAC y elija su extensión; active Aceptar teléfonos Skinny y apunte el teléfono a BitVoice (puerto TCP 2000) en su archivo de configuración TFTP o menú.
- MGCP (RFC 3435): pasarelas cuyos puertos BitVoice conduce uno por uno, como adaptadores de teléfono analógico y tarjetas de línea. Agregue la pasarela por el nombre de dominio que utiliza en sus nombres de puntos de conexión (aaln/1@nombre), su dirección y la extensión de cada línea; configure el agente de llamadas de la pasarela a BitVoice (puerto UDP 2727).
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
- Skinny: registro, la línea y su número en la pantalla, tono de marcado, marcación (el número va después de una pausa o #, o al mismo tiempo desde el teclado del teléfono cuando se levanta después de marcar), tono de llamada en espera, timbre con identificador de llamada, respuesta y colgado por auricular, altavoz o teclas suaves (NewCall, Redial, Answer, EndCall), tonos de ocupado y reorder.
- MGCP: tono de marcado, dígitos recopilados por la pasarela con un mapa de dígitos, timbre con identificador de llamada (sona sin él cuando la pasarela rechaza el identificador de llamada), tono de llamada en espera, tonos de ocupado y reorder, y la conexión de audio (CRCX, DLCX). Una pasarela que se reinicia (RSIP) vuelve a configurar sus puertos.
- El audio es G.711 µ-law en ambos; BitVoice lo convierte a lo que el otro partido utiliza.
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
- Skinny: dos teléfonos construidos a partir de una implementación Skinny separada (la biblioteca de código abierto mwicat/sccp) se registran, se llaman entre sí, responden y cuelgan; un teléfono no enlistado es rechazado. El disector Skinny de Wireshark lee cada mensaje que BitVoice envía sin errores, y los mensajes tienen los tamaños completos que chan_skinny de Asterisk envía a los teléfonos Cisco.
- MGCP: contra la puerta de enlace MGCP de Yate (reiniciar, respuestas provisionales, acuses de recibo, rechazos) y la propia puerta de enlace de prueba de BitVoice para llamadas completas. La puerta de enlace de Yate no tiene puertos analógicos, por lo que no se realizó ninguna llamada a través de ella.
Tarjetas de telefonía
/cardsUna 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
- Instale los controladores DAHDI y configure los puertos como de costumbre en /etc/dahdi/system.conf (
fxoks=1-4para puertos con teléfonos,fxsks=5-8para puertos con líneas, y los tonos del país enloadzoneydefaultzone), luego ejecutedahdi_cfg. - 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.
- 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.
- 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.
- Inicie
bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.tokencomo 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
- Teléfonos: tono de marcado, marcación (los dígitos se escuchan por el detector de tonos de BitVoice; el número va después de una pausa o #), tono de llamada en espera, tonos de ocupado y congestión desde la zona de tonos de la tarjeta, timbre para llamadas entrantes, y teclas presionadas durante una llamada (enviadas como eventos RFC 4733 también).
- Líneas: una línea que timbra llama su número aquí y se responde cuando la llamada se responde; las llamadas salientes toman una línea libre, esperan el tono de marcado de la centralita y marcan el número como tonos. El extremo lejano que cuelga se nota cuando la línea lo informa (corriente de bucle o polaridad, dependiendo de la línea). Las líneas analógicas no indican cuándo el extremo lejano responde, así que una llamada saliente se cuenta como respondida una vez que se ha marcado el número.
- El sonido es G.711 hacia y desde la tarjeta; BitVoice lo convierte a lo que el otro partido utiliza.
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.
- En /etc/dahdi/system.conf, configure la span para PRI como de costumbre (
span=1,1,0,esf,b8zs,bchan=1-23,hardhdlc=24para un T1;span=1,1,0,ccs,hdb3,crc4,bchan=1-15,17-31,hardhdlc=16para un E1), y ejecutedahdi_cfg. - 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.
- 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.
- BitVoice es el PBX (lado del usuario), punto a punto: una línea PBX de la compañía de teléfonos (el *Anlagenanschluss* de Alemania): las llamadas entrantes llevan el número marcado, las llamadas salientes llevan el de la extensión.
- Lado del usuario, multipunto: una línea compartida con otros dispositivos (*Mehrgeräteanschluss*): BitVoice le pide a la red su propio TEI (identificador de terminal) y contesta llamadas a la línea junto con otros dispositivos en ella; la compañía de teléfonos envía el número marcado (el MSN), que las rutas de entrada coinciden.
- BitVoice es la red, multipunto: los teléfonos ISDN se conectan a la tarjeta en el bus S como a una línea de la compañía de teléfonos. Cada uno le pide a BitVoice un TEI; una llamada al bus hace sonar todos los teléfonos en él, el primero en contestar la toma y los demás dejan de sonar. Los números marcados dígito a dígito (como los teléfonos ISDN marcan) se recopilan hasta que el teléfono dice que está completo, se presiona # o no llega ningún dígito durante cuatro segundos. Enrutar los números hacia y desde el bus con el troncal de la tarjeta como para cualquier línea.
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:
- Señal de inicio: Inicio con parpadeo (el habitual: el extremo remoto parpadea cuando está listo para el número, y BitVoice parpadea hacia atrás en una llamada entrante), Inicio inmediato (el número sigue al seizure al instante), Dial con retraso (el extremo remoto se desconecta mientras se prepara, luego se vuelve a conectar), o Grupo de características D (inicio con parpadeo con números MF, el número del llamador enviado primero: KP 00 ANI ST, luego KP número ST; el ANI se convierte en el ID del llamador).
- Números enviados como: DTMF, o MF (MF R1, KP número ST) como la mayoría de las troncales de los operadores quieren.
- Número cuando no se envía: lo que una llamada entrante alcanza si el extremo remoto se apodera de la troncal sin marcar (una línea privada directa a la recepción, por ejemplo).
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:
- Variante SS7: ANSI (Norteamérica; códigos de punto red-clúster-miembro, como 245-16-1) o ITU-T (la mayoría del mundo; códigos de punto zona-área-punto, como 1-10-2, o un número plano).
- Nuestro código de punto y Código de punto adyacente, la Red (nacional, lo habitual, o internacional), el Código de enlace de señalización (SLC, 0 a menos que se indique lo contrario), y el Primer CIC: el código del primer canal de voz del span, los demás siguen en orden. Todos estos provienen del transportista.
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í.
Troncales
/trunksUna 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.
Agregar un troncal SIP
- En Troncales (capítulo 7) presione Agregar troncal.
- Introduzca el servidor del proveedor que le dio su compañía de teléfonos (
sip.provider.com), y el puerto si no es 5060. - Introduzca el nombre de usuario y la contraseña, y active Registrar si el proveedor lo indica (la mayoría lo hace).
- 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.
- Agregue una ruta de entrada para su número y una ruta de salida que utilice esta troncal (Enrutamiento de llamadas (capítulo 8)).
| Campo | Qué hace |
|---|---|
| Transporte | UDP (usual), TCP o TLS para señalización cifrada |
| Registro | iniciar sesión cada pocos minutos, para que el proveedor sepa dónde enviar llamadas |
| Nombre de usuario de autenticación | solo cuando el proveedor proporciona uno separado |
| Dominio de llamador | el dominio en la dirección del llamador, cuando el proveedor lo solicita |
| ID de llamador | el número que se muestra en las llamadas salientes; el ID de llamador de una extensión gana |
| También aceptar llamadas de | las 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 tiempo | el límite que permite su plan; las llamadas más allá de este límite van a la siguiente troncal en la ruta |
| Cifrar medios | SRTP, 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ódecs | déjelo en *igual que Configuración*, o elija lo que este proveedor admite, lo mejor primero |
| Tarifas | qué 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.
- Dirección del servidor: el otro servidor. Déjelo vacío cuando el otro servidor se registra en BitVoice en su lugar (una oficina filial detrás de una dirección cambiante); entonces el nombre de usuario y la contraseña son los que se registran.
- Nombre de usuario y contraseña: los mismos en ambos lados. BitVoice responde y envía desafíos MD5, y maneja tokens de llamada.
- Registro: inicie sesión en el otro servidor, para que pueda enviar llamadas aquí.
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
| Estado | Significado |
|---|---|
| registrado | conectado; pueden llegar llamadas |
| listo | no se registra, o IAX2 esperando llamadas |
| inalcanzable | el nombre del servidor no está en DNS, o nada responde |
| fallido | el proveedor rechazó el inicio de sesión; se muestra la razón |
| en espera | los servidores comparten este troncal uno a la vez y otro lo mantiene |
Enrutamiento de llamadas
/routesEl 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.
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.
- Una ruta para un número gana sobre una ruta para cualquier número.
- Una ruta se puede limitar a un troncal, para números que dos proveedores envían ambos.
- Con el modo de emergencia activado (Configuración), cada llamada de entrada va a un lugar en su lugar, independientemente de lo que digan las rutas: una evacuación, un cierre, un incidente.
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.
| Patrón | Coincide |
|---|---|
X | cualquier dígito |
Z | 1 a 9 |
N | 2 a 9 |
[1-5] | uno de un conjunto |
. al final | uno o más dígitos adicionales |
NXXNXXXXXX | un número norteamericano de diez dígitos |
1NXXNXXXXXX | lo mismo con 1 al frente |
011. | una llamada internacional desde EE. UU. |
- Eliminar quita dígitos del frente (un 9 marcado para una línea exterior); Agregar al frente pone algunos (un código de país).
- El orden es importante: la primera ruta cuyo patrón coincide se utiliza. Arrastre rutas para cambiarlo.
- Los números de tarifa premium (900 y similares) se rechazan a menos que una ruta los nombre.
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.
Conjuntos de PIN
/pin-setsUn 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.
- Agregar conjunto de PIN y enumerar sus PIN (4 a 10 dígitos cada uno).
- 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
accounten la API). - 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.
Búsqueda de ID de llamador
/lookupsMuchas 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):
- Una dirección web: su CRM o cualquier servicio que responda con el nombre. Coloque
{number}donde va el número (https://crm.example.com/api/callers?phone={number}). Una respuesta de texto plano da el nombre en su primera línea; para JSON, dé el campo de nombre como una ruta con puntos (data.contact.name; un número entra en una lista, como enresults.0.name). La autenticación básica es opcional. - OpenCNAM: la base de datos de nombres de llamadores de América del Norte, con su SID de cuenta y token de autenticación.
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.
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).
Qué hace BitVoice en cada llamada de emergencia
- 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.
- 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.
- 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.
- 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
- Verifique los números de emergencia en Configuración (capítulo 14) (establecidos por país: 911 y 933 en los EE. UU.).
- Agregue cada edificio bajo Sitios (capítulo 12), con su dirección de la calle y las redes que utilizan sus teléfonos.
- Asigne cada extensión su sitio, piso y habitación.
- Asegúrese de que una ruta de salida y un tronco transporten llamadas de emergencia; Salud (capítulo 13) advierte cuando ninguno puede.
- Rellene Notificar y También correo electrónico.
- 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.
Sitios y 911 de oficina
/sitesUn 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.
Agregar un sitio
En Sitios (capítulo 12), presione Agregar:
| Campo | Qué es |
|---|---|
| Nombre | lo que la gente lo llama: Oficina principal |
| Calle, Ciudad, Estado o provincia, Código postal, País | la dirección cívica a la que se envían los respondientes |
| Redes | los 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
- 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.
- Un escritorio compartido lleva el sitio, piso y habitación del escritorio, no la persona que se ha conectado (Escritorio compartido (capítulo 36)).
- 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.
- 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).
Salud
/healthLa 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ón | Por qué es importante |
|---|---|
| Las llamadas de emergencia pueden salir | una ruta y un tronco funcionando llevan los números de emergencia |
| Extensiones sin ubicación de emergencia | sus llamadas de 911 no llevarían piso ni habitación |
| El servicio de teléfono | SIP está escuchando y en qué puerto |
| Teléfonos no conectados | extensiones en las que nadie ha iniciado sesión |
| Troncos | registrados o la razón por la que no lo están |
| Menús sin una llamada grabada | los llamadores escucharían silencio |
| La zona horaria | los horarios la siguen |
| Grabaciones y su conservación | espacio en disco y cuánto tiempo se conservan las grabaciones |
| Certificados | cuándo caduca el certificado TLS |
| Cámaras de seguridad | secretos que una cámara no puede leer |
| Otros servidores | cuando 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.
Configuración
/settingsConfiguració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ón | Qué hay |
|---|---|
| Sistema | nombre, país, zona horaria, idioma, la dirección pública que ven los teléfonos y los proveedores |
| Números | el número de prueba de eco, el correo de voz y el número de estacionamiento, y los números de emergencia |
| Codecs | los codecs que los teléfonos pueden utilizar, mejores primero (Codecs (capítulo 66)) |
| Grabación de llamadas | desactivada, cada llamada o extensiones seleccionadas; reglas de consentimiento; cuánto tiempo se mantienen las grabaciones |
| Sonido | limpieza para el correo de voz y durante las llamadas |
| Protección | prohibiciones después de intentos de inicio de sesión fallidos, redes de confianza, llamadas por extensión, números de tarifa premium |
| Emergencia | enviar la dirección del llamador, quién es notificado, quién es notificado por correo electrónico, modo de emergencia |
| Inteligencia artificial | el servicio de inteligencia artificial, modelos y qué características de inteligencia artificial están activadas (Inteligencia artificial (capítulo 28)) |
| Inicio de sesión único | el proveedor de identidad (Inicio de sesión único (capítulo 58)) |
| Compatibilidad con Asterisk | AMI 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 Workspace | personas y contactos compartidos en Contactos, y calendarios para quién está ausente (Contactos (capítulo 38), Calendarios (capítulo 39)) |
| Aplicaciones móviles | el servicio de notificaciones que despierta las aplicaciones |
| Correo electrónico | el servidor de correo electrónico al que llegan el correo de voz, los faxes y las alertas |
| Cámaras de claves | secretos almacenados en AWS Secrets Manager o Azure Key Vault |
| Configuración desde Git | mantener la configuración en sincronía con un archivo en un repositorio |
| Base de datos | SQLite o PostgreSQL (Base de datos (capítulo 64)) |
| Certificado | el 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:
- http-01 (la elección a menos que la interfaz web esté en el puerto 443): una solicitud al puerto 80. BitVoice responde en el puerto 80 itself (en Linux necesita el permiso para abrir puertos bajos, como
setcap cap_net_bind_service=+ep bitvoice), o redirige el puerto 80 en el router al puerto de la interfaz web, que también responde. Cualquier otra cosa que llegue al puerto 80 se envía a HTTPS, solo para los nombres del certificado. Cuando BitVoice no puede abrir el puerto 80, la casilla de Let's Encrypt dice por qué en ámbar y qué lo permite (la línea exacta desetcappara este programa, o la capacidad ambiental de systemdAmbientCapabilities=CAP_NET_BIND_SERVICE; o otro programa ya tiene el puerto). Probar los nombres luego solicita cada nombre para un archivo de prueba a través de internet, como lo haría Let's Encrypt, y dice para cada uno si llegó a BitVoice, llegó a algo más o no está en DNS. Algunos routers no hacen un bucle de su propia dirección pública hacia adentro (no hay NAT de peinado): allí la prueba falla desde adentro aunque Let's Encrypt, desde afuera, tiene éxito. - tls-alpn-01: una conexión TLS al puerto 443, respondida en el propio puerto de la interfaz web: para un servidor cuya interfaz web está en 443.
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.
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.
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.
Flujo de llamadas
/flowVerificar 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:
- cada combinación de abierto y cerrado que sus horarios realmente alcanzan en el próximo año (cada feriado incluido), encontrado en pasos de 15 minutos;
- cada combinación de conmutadores de día/noche (o, con más de seis, cada uno conmutado solo);
- cada ruta de entrada, y cada tecla que un llamante puede presionar en cada menú, cada "si nadie responde" y cada tiempo de espera de cola en el camino;
- cada extensión que marca cada número de emergencia.
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.
Grupos de timbre
/ring-groupsUn 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.
Estrategias de timbre
- Todos al mismo tiempo: todos los teléfonos de los miembros timbran juntos, y el primero en responder toma la llamada. Los demás dejan de timbrar.
- Uno después de otro: cada miembro timbra durante el tiempo de timbre del grupo, en el orden enumerado. Mueva miembros con las flechas, o Alt+↑ y Alt+↓.
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?
| Uso | Cuando |
|---|---|
| Un grupo de timbre | unas pocas personas, cualquier una de las cuales puede tomar la llamada, y la llamada debe timbrar ahora |
| Una cola | los que llaman pueden tener que esperar a alguien libre, y deben escuchar su lugar |
| Un grupo de recogida | cada persona tiene sus propias llamadas, pero los colegas pueden responder por ellos |
Colas
/queuesUna 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.
Cómo se ofrecen las llamadas
| Estrategia | Quién es llamado |
|---|---|
| Tiempo de inactividad más largo | el agente libre que ha esperado más tiempo desde su última llamada |
| Rotación | cada agente libre por turnos, continuando desde el último |
| Llamar a todos | todos los agentes libres al mismo tiempo |
| Menos llamadas | el agente libre que recibió menos llamadas hoy |
| En orden (lineal) | siempre desde la parte superior de la lista: el primer agente libre |
| Aleatorio | cualquier agente libre, por casualidad |
| Aleatorio ponderado | por casualidad, los agentes con una penalización más baja con mucha más frecuencia |
- Orden: la lista de agentes está en orden; muévalos hacia arriba y hacia abajo. En orden y Rotación siguen esto.
- Penalizaciones clasifican a los agentes (0 a 100, 0 cuando está vacío): se ofrecen llamadas a los agentes libres con la penalización más baja, y un agente con una penalización más alta solo es llamado cuando nadie con una penalización más baja está libre. Úselos para una línea de primera y una línea de desbordamiento en una cola.
- Peso clasifica las colas que comparten agentes: mientras una cola con un peso más alto tenga alguien esperando, sus agentes atienden a sus llamantes primero.
- Wrap-up da a un agente tiempo después de una llamada antes de la siguiente.
- Tiempo de espera más largo: los llamantes que esperan más tiempo van a la destino de tiempo de espera de la cola. 0 espera para siempre.
- Música de espera: los llamantes escuchan la música de la cola (cualquier clase de Sonidos (capítulo 20)), la música del sistema o el tono de la cola.
- Decir a los llamantes que esperan su lugar en la línea y el tiempo de espera esperado (el tiempo de espera promedio de los llamantes atendidos hoy, en minutos), cada ciertos segundos, en el idioma de la cola. Las palabras provienen de las prompts de la cola en Sonidos (capítulo 20); hasta que esas sean grabadas, no se dice nada.
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ó.
| Estado | Significado |
|---|---|
| disponible | libre; se le ofrecerá al siguiente llamante |
| sonando | se le está ofreciendo una llamada |
| ocupado | en una llamada |
| wrap-up | acaba de terminar; el tiempo de wrap-up está en curso |
| pausado | en un descanso, con la razón dada |
| ausente | en una reunión o de vacaciones, según su calendario |
| cerrado | no 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.
Discador de salida
/dialerEl 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:
| Modo | Cómo llama |
|---|---|
| Vista previa | un agente solicita el siguiente contacto, ve sus detalles, luego llama (su teléfono suena primero) o lo salta |
| Progresivo | una llamada para cada agente libre |
| Potencia | un número fijo de llamadas para cada agente libre (1 a 3) |
| Predictivo | BitVoice 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 |
- 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.
- Abra Contactos y Agregar una lista: un archivo CSV con una fila de encabezado y una columna llamada
number(ophone);namey cualquier otra columna se muestran al agente en la vista previa. Se omiten los números duplicados y malformados. - 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.
- 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.
Sonidos: prompts, idiomas y música de espera
/soundsSonidos (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.
- Los llamantes escuchan establece el idioma para todos. Una cola, un número de acceso telefónico, un directorio o una extensión pueden elegir otro.
- Cada prompt se puede grabar en el navegador, subir (cualquier archivo de audio; se convierte en audio telefónico) o crear con el servicio de voz: con un modelo de voz configurado en Configuración, AI, un botón crea cada prompt de un idioma a partir de sus palabras. Los prompts grabados se conservan a menos que se solicite reemplazarlos.
- Agregar un idioma para cualquier otro idioma (un código como sv, ja o pt-BR); sus prompts se graban o suben, con las palabras en inglés mostradas como guía.
- Un prompt que falta en un idioma se reproduce en el idioma predeterminado, luego en inglés; sin ninguno grabado en absoluto, los llamantes escuchan un tono breve, para que cada función funcione antes de que se grabe una sola prompt.
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 escucha | Qué música |
|---|---|
| alguien puesto en espera | la música elegida en la extensión de la persona que pone en espera, de lo contrario la predeterminada |
| un llamador estacionado | la música de la persona que lo estacionó, de lo contrario la predeterminada |
| un llamador que espera en una cola | la música de la cola, de lo contrario la predeterminada |
| un llamador que espera al líder de una conferencia | la 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í.
Directorio de marcación por nombre
/directoriesUn 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.
- 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ú.
- Elija qué escriben los llamadores: el apellido (lo habitual), el nombre o cualquiera.
- 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.
Marcación (DISA)
/dial-inUn 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.
- 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.
- 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.
- 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).
Bots de voz (AudioSocket)
/voice-botsUn 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.
- Agregar bot de voz: su nombre, la dirección del bot (
10.0.0.9:9092) y, opcionalmente, un número para marcarlo. - 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.
- 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).
Toggles de día/noche
/togglesUn 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.
- 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. - Elija quién puede cambiarlo desde un teléfono (ninguno elegido permite cualquier extensión).
- 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).
Horarios
/schedulesUn 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).
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.
Secuencias (JavaScript y Lua)
/scriptsUna 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).
Seguro por diseño
- Un script de enrutamiento se ejecuta durante un máximo de 200 ms. Si falla o tarda demasiado, la llamada va al fallback del script, para que un error nunca pierda una llamada. (Los scripts de llamadas tienen sus propios límites, a continuación.)
- Se ejecuta en una caja de arena: no puede llegar a la red o al disco. Un script de enrutamiento solo elige; un script de llamada solo puede hacer los pasos enumerados a continuación, para su propia llamada.
- Las llamadas de emergencia nunca ejecutan scripts.
Qué ve un script
call tiene:
| Campo | Qué es |
|---|---|
from, fromName | el número y nombre del que llama |
to | el número marcado |
direction | inbound o internal |
trunk | el troncal por el que entró |
weekday, hour, minute | la hora actual (0 es domingo) |
date | YYYY-MM-DD |
What it returns
A destination, {type, target}: type is extension, ringgroup, queue, menu, schedule, voicemail or hangup, and target is its number. Returning nothing uses the fallback. log("text") writes to the script's run list.
JavaScript
if (call.from.startsWith("212")) {
log("New York caller")
return { type: "ringgroup", target: "600" }
}
if (call.weekday === 0 || call.weekday === 6) return { type: "voicemail", target: "100" }
Lua
if string.sub(call.from, 1, 3) == "212" then
log("New York caller")
return { type = "ringgroup", target = "600" }
end
if call.weekday == 0 or call.weekday == 6 then
return { type = "voicemail", target = "100" }
end
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:
| Paso | Qué 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.
Recepciónista de inteligencia artificial, triage de correo de voz y preguntas
/receptionistsLas 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.
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:
- El modelo anterior: el audio va al servicio de IA, cuyo modelo debe aceptar audio.
- Este servidor: BitVoice ejecuta whisper él mismo. Elija un Modelo de whisper y guarde: BitVoice lo descarga una vez del proyecto whisper.cpp (
basees 60 MB;small,mediumylarge-v3-turboson más precisos y más lentos; todos entienden alrededor de 100 idiomas), lo verifica contra su SHA-256 publicado y inicia elwhisper-serverde whisper.cpp en 127.0.0.1 junto a él, reiniciándolo si se detiene. El audio de los llamantes nunca sale de la computadora y no se paga nada por llamada.whisper-server(licencia MIT) viene en las descargas de BitVoice junto al programa, y los instaladores lo colocan junto a BitVoice; BitVoice también lo encuentra instalado por sí solo (brew install whisper.cpp). La configuración muestra dónde se encuentra (descargando el modelo, iniciando, ejecutándose o por qué no lo está), y también lo hace Health (capítulo 13). Mientras no esté ejecutándose, las transcripciones fallan y dicen por qué: nunca se envían a ningún otro lugar en su lugar. - Un servicio de voz a texto:
whisper-serverde whisper.cpp en otra computadora en el edificio (http://192.168.1.20:8178/inference), para una máquina con una GPU que sirve a varios servidores de BitVoice, o cualquier servicio compatible con OpenAI…/audio/transcriptions(con Su modelo, como whisper-1, y Su clave). Se aceptahttpplano solo para esta computadora o una dirección de red privada; cualquier otra cosa debe serhttps. Para ejecutar uno:whisper-server -m ggml-base-q5_1.bin --host 0.0.0.0 --port 8178 -l auto.
Whichever writes it down, every transcript goes there: voicemail, recorded calls, live 911 calls and receptionists hearing callers. Without the model, the Model may be left empty: transcripts are written, summaries are written from the facts the call said (below), and what needs a language model (action items, voicemail triage, call insight, receptionists' replies, asking in plain words) is left out. Notes a recogniser makes about what it heard, such as [BLANK_AUDIO] or (silence), are dropped, so a quiet stretch never reads as though something was said.
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.
- No se agrega nada que nadie haya dicho. "Nadie está herido" es un hecho por sí mismo; un llamador que transmite las palabras de otra persona ("ella dice que no respira") se marca como informado; "24 Pine Lane. No, lo siento, 42" mantiene 42; un simple "no" responde a la pregunta hecha justo antes.
- Es fiel, no completo: las palabras que no conoce se pierden. En tres conjuntos de llamadas de emergencia 911 inventadas (sin palabras reales de un llamador), encuentra:
| Conjunto | Hechos encontrados | Hechos encontrados que nadie esperaba |
|---|---|---|
| Entrenamiento (las reglas se escribieron a partir de él) | 41 de 41 | 0 |
| Retención, puntuado en frío, antes de que se escribiera alguna regla a partir de él | 27 de 40 (67%) | 2 |
| Retención, después de una segunda ronda de reglas escritas a partir de sus errores | 40 de 40 | 0 |
| 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.
Buzón de voz
/voicemailCada 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.
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ón | Qué hace |
|---|---|
| Mensaje más largo | 10 a 900 segundos (180 por defecto) |
| Correo electrónico de nuevos mensajes | a la dirección de correo electrónico de la extensión, con el mensaje adjunto |
| Saludo | grabado en el navegador, subido o grabado desde el teléfono; sin uno, los que llaman escuchan un pitido |
Escuchar
- Desde el propio teléfono de la extensión, marca
*97: los mensajes se reproducen desde el más nuevo; las teclas reproducen, eliminan o conservan cada uno. - Desde cualquier otro teléfono, marca
*97, ingresa el número del buzón y su PIN. - En Buzón de voz (capítulo 29) (administradores) o en el portal de personal (la persona): reproduce, marca como escuchado, elimina.
- La luz de mensaje del teléfono está encendida mientras hay mensajes nuevos.
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.
Llamadas de devolución
/callbacksPersonas 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.
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.
Enlaces de llamada y llamada desde el sitio web
/call-linksUn enlace de llamada es una dirección web que llama a su negocio desde cualquier navegador: ningún número de teléfono, ninguna aplicación. Colóquelo en una firma de correo electrónico, imprima su código QR en un folleto o una ventana de una tienda, o pegue el botón del sitio web en su sitio.
En Enlaces de llamada (capítulo 31), agregue un enlace, elija dónde van las llamadas (una extensión, un grupo, una cola, un menú, el recepcionista de IA, un horario o correo de voz), y guarde: la página muestra su dirección y código QR. El que llama ve el título y las palabras que estableció, da su nombre si se lo pide, permite el micrófono y presiona Llamar ahora; el teclado funciona para menús. Quien responde ve Web: y el nombre del que llama.
Cambie Abierto a Apagado para cerrar la línea (la página lo dice). Llamadas a la vez limita la cantidad de personas que pueden llamar a través de un enlace (5 a menos que se establezca). La dirección contiene una parte aleatoria larga para que no se pueda adivinar; las direcciones incorrectas repetidas se bloquean como intentos de inicio de sesión fallidos. Los micrófonos de los que llaman necesitan que la página se sirva sobre HTTPS, así que distribuya la dirección HTTPS.
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.
Códigos de función, reenvío y marcaciones rápidas
/codesLos 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ódigo | Qué hace |
|---|---|
*72 | reenviar cada llamada (luego el número y #, o el número directamente después: *722125550199) |
*73 | detener el reenvío de cada llamada |
*90 / *91 | reenviar cuando esté en una llamada / detener |
*52 / *53 | reenviar cuando no se responde / detener |
*78 / *79 | no molestar activado / desactivado |
*76 | cambiar no molestar (tono ascendente: ahora activado) |
*21 | cambiar seguimiento activado y desactivado |
*8 | responder a una llamada que suena en su grupo de recogida |
** y una extensión | responder a la llamada que suena en esa extensión |
*80 y una extensión | intercomunicador: ese teléfono responde en su altavoz |
*0 y un código | un marcado rápido |
*62 | llamada de despertador: escucharla, reservar una (cuatro dígitos, como 0630) o cancelarla (asterisco) |
*68 y un dígito | estado de la sala, para la limpieza en hoteles |
*28 y un código de conmutador | cambiar un conmutador de día/noche (capítulo 25) sobre, o hacia atrás |
*32 | bloquear 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)) |
*43 | la prueba de eco |
*97 | su buzón de voz |
70 | estacionar una llamada (transferirla aquí); 71 a 79 la recogen |
*45 / *46 | agentes de cola: iniciar o cerrar sesión / pausar o reanudar |
*33 / *34 | iniciar o cerrar sesión en un escritorio compartido |
*7 / *8 durante una llamada | pausar y reanudar la grabación (pagos con tarjeta) |
Reenvío
*72reenvía cada llamada. Marque, escuche un tono, luego marque el número y #. O marque el número directamente después del código.*90reenvía las llamadas que llegan mientras está en una llamada.*52reenvía las llamadas que no responde dentro de su tiempo de timbre.*73,*91y*53los cancelan.
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
*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
*8contesta la llamada más antigua que suena para cualquier persona en su grupo de recogida (configurado en cada extensión; los nombres se comparan sin tener en cuenta mayúsculas y minúsculas).**y una extensión contesta una llamada que suena en esa extensión:**101.
Intercom
*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).
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.
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ña | Qué hay allí |
|---|---|
| Dónde van las llamadas | no molestar; reenvío de cada llamada, cuando está ocupado y cuando no se responde; números de seguirme; marcadores rápidos propios |
| Correo de voz | mensajes para reproducir y eliminar, con transcripciones y resúmenes cuando la inteligencia artificial está activada; grabar o subir el saludo |
| Tus llamadas | las llamadas propias de la persona, más nuevas primero, sin grabaciones |
| PIN | cambiar 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).
Salas de conferencia
/conferencesUna 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.
Configuración de una sala
- Abre Salas de conferencia (capítulo 34) y presiona Agregar sala de conferencia.
- Asígnale un número (cualquier número libre, 500 por defecto) y un nombre.
- Opcionalmente, establece un PIN. Los llamadores escuchan un tono, ingresan el PIN y presionan #. Tres PIN incorrectos y la llamada termina.
- Opcionalmente, establece un PIN de líder, diferente del PIN. Quien lo ingresa se une como líder.
- Para permitir que los llamadores externos se unan, apunta una ruta de entrada (o una tecla de menú) a la sala.
Opciones
| Opción | Qué hace |
|---|---|
| Esperar al líder | todos 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 silenciados | para 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 sala | toda 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 dejan | activado por defecto |
| Mayor cantidad de personas al mismo tiempo | 50 por defecto, hasta 200 |
Teclas durante una llamada
1silencia y des silencia a uno mismo (en una sala donde los miembros están silenciados, pide hablar).2, para un líder, bloquea la sala para que nadie nuevo se una, y la desbloquea.
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:
- Seguir al hablante: todos ven a quien ha estado hablando durante un segundo, una vez que el que está en pantalla ha estado callado durante un segundo; la persona en pantalla ve al que habló antes.
- Mostrar al líder: todos ven al líder (quien se une con el PIN de líder); el líder ve a quien habló último.
- Cuadrícula: todos ven a todos al mismo tiempo, uno al lado del otro (una imagen llena la pantalla, dos lado a lado, luego 2 por 2 y 3 por 3, hasta nueve), cada persona en su propio lugar en el orden en que se unieron, incluyéndose a sí mismos.
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.
- La imagen grande obtiene el tamaño completo de esa cámara, las pequeñas obtienen el tamaño pequeño; Hacer grande las intercambia, y el interruptor sucede en la próxima imagen completa del nuevo tamaño, que BitVoice solicita de inmediato (RTCP PLI).
- Un navegador que tiene poca carga de subida deja de enviar su tamaño más grande; los espectadores entonces obtienen el tamaño más grande que todavía llega.
- El sonido es la conferencia de la sala como siempre: unirse a las llamadas de la sala en el teléfono del navegador, y cualquier persona que marque el número de la sala desde un teléfono es escuchada y escucha a todos. Los teléfonos de video que se unen ven a quien habla.
- Una sala con un PIN solicita el PIN en la página. La página necesita un inicio de sesión en BitVoice.
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.
- Una sala muestra una pantalla compartida a la vez: mientras alguien comparte, el botón de los demás espera y dice quién está compartiendo. Una pantalla compartida no cuenta hacia las 16 cámaras.
- Alguien más puede ser convertido en la imagen grande con Hacer grande, al igual que con las cámaras; la pantalla permanece en la sala.
- La imagen de la pantalla solo, nunca su sonido: el sonido de la sala sigue siendo su conferencia.
- Los teléfonos que no pueden compartir una pantalla (la mayoría de los navegadores de teléfonos) muestran el botón deshabilitado. Los teléfonos de escritorio y otros teléfonos de video que marcan la sala no ven las pantallas compartidas; ven a quien habla.
Página y altavoces de sobrecarga
/pagingLa 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
- En Paging (capítulo 35) pulse Agregar grupo de paginación y asígnele un número (800 por defecto) y un nombre.
- Seleccione los teléfonos. Los altavoces de sobremesa configurados como extensiones (tipo Altavoz de sobremesa) también pueden ser miembros.
- 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ón | Intercomunicador | |
|---|---|---|
| Quién escucha | todos en el grupo | una extensión |
| Respuesta | no, unidireccional | sí, bidireccional |
| Cómo | marcar 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.
Puestos de trabajo compartidos
/phonesUn 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
- En el teléfono, marque
*33y espere el tono. - Introduzca su extensión y #, y espere el tono.
- 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.
Llamadas de hotel y despertador
/hotelLlamadas 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.
- Barra de habitaciones vacías: las habitaciones sin nadie registrados solo llaman a extensiones y números de emergencia. Las llamadas de emergencia siempre funcionan.
- Borrar al check-out: elimina el correo de voz de la habitación y cancela su llamada de despertador, reenvío y no molestar, listo para el próximo huésped.
- El idioma de un huésped (desde el check-in) es el idioma en el que se dicen las llamadas de la habitación.
- Estado de la habitación: la limpieza marca
*68y un dígito desde el teléfono de la habitación (*683); el sistema del hotel decide qué significa cada dígito.
El sistema de hotel (PMS)
- FIAS: BitVoice se conecta a la interfaz FIAS del sistema de hotel (Oracle Opera y los muchos sistemas que hablan FIAS) en su dirección y puerto. Recibe check-in, cambios de habitación, check-out y reservas de despertador, y envía resultados de despertador, estado de habitación y cargos de llamadas. Mientras el enlace esté caído, lo que enviaría espera y se envía cuando se restaura; la página indica si está enlazado. Los registros siguen la especificación FIAS 2.20.23 de Oracle: BitVoice se describe como un sistema de teléfono (IF PB), los cargos de llamadas son cargos directos (PT C) con el monto en la unidad más pequeña de la moneda y los dígitos marcados sin + o espacios, y un resultado de despertador repite la hora reservada al segundo, para que el sistema de hotel pueda emparejarlo con su solicitud.
- API de REST: el sistema de hotel llama a
POST /api/hotel/rooms/<room>/checkin(nombre, cuenta, idioma),/checkout, yPUT /api/wakeups/<room>, con una clave de API desde Configuración, Automatización. Los cargos se publican como JSON en la dirección que proporcione. - Cargar llamadas: las llamadas externas respondidas desde habitaciones ocupadas se cargan en la factura del huésped, a las tarifas del tronco (desde Costos (capítulo 54)) más el márgen.
Contactos en cada teléfono
/contactsContactos 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.
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:
- Yealink: un directorio remoto llamado Compañía, actualizado cada hora.
- Grandstream: la descarga del directorio, cada hora.
- Polycom: el archivo de directorio, leído cuando el teléfono se inicia.
- Snom: la lista se escribe en la configuración del teléfono, por lo que se actualiza cuando el teléfono verifica su 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):
- En el centro de administración de Entra, Registros de aplicaciones, Nuevo registro: nómbrelo BitVoice, inquilino único, sin dirección de redireccionamiento.
- Permisos de API, Agregar un permiso, Microsoft Graph, Permisos de aplicación:
User.Read.All,OrgContact.Read.AllyCalendars.ReadBasic. Luego Conceder consentimiento de administrador. - Certificados y secretos, Nuevo secreto de cliente: copie su valor (mostrado una vez).
- 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):
- 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.
- 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. - 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:
- Los números de trabajo y móvil de una persona, nombre, correo electrónico, y su título y departamento como notas de contacto; el nombre de la organización como su empresa. Las personas sin número se dejan fuera (un contacto necesita uno); las cuentas que están desactivadas se dejan fuera.
- Los contactos del servicio se marcan con su nombre, y se cambian allí: cambiar o eliminar uno aquí se rechaza, ya que la próxima sincronización lo desharía. Los contactos creados aquí, o importados desde una hoja de cálculo, se dejan solos.
- BitVoice solo lee. Su acceso es los permisos de solo lectura anteriores, y el secreto o clave se mantiene con los demás secretos: los espectadores nunca lo ven, y las exportaciones para Git lo dejan fuera.
Calendarios y no molestar
/extensionsUna 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.
En la extensión, Calendario y no molestar, pegue la dirección privada del calendario:
- Outlook: Configuración, Calendario, Calendarios compartidos, Publicar un calendario; elija el calendario y "Puede ver todos los detalles", luego copie el enlace ICS.
- Google Calendar: Configuración, el calendario a la izquierda, luego Dirección secreta en formato iCal.
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.
- Microsoft 365 distingue las reuniones del tiempo libre: una reunión marcada como fuera de la oficina cuenta como tiempo libre; las reuniones tentativas y el tiempo marcado como libre o trabajando en otro lugar nunca detienen la llamada telefónica. Una reunión privada se muestra como "En una reunión", sin su título.
- Google Workspace proporciona los horarios ocupados sin especificar el motivo, por lo que siempre cuentan como reuniones.
- Los calendarios se leen cada cinco minutos y al instante cuando cambian los ajustes. Una extensión cuyo correo electrónico el servicio no conoce lo indica en su sección de calendario.
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.
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:
| Push | Lo que necesita |
|---|---|
| Relay de push | El relay de BioDream (con alojamiento o soporte) o su propio bvpush: su Dirección de relay, ID de clave y Secreto |
| Aplicaciones propias | Sus 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
- Abra la extensión y presione Agregar un teléfono.
- 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:
- Transferir a un llamador a otra extensión o un número exterior (el propio Transferir de la pantalla de la llamada o el botón de la aplicación). Al número de estacionamiento, estaciona la llamada.
- Pausar y retomar, desde la pantalla de la llamada o la aplicación; los llamadores en espera escuchan la música de espera donde esté configurada.
- Una segunda llamada: marcar mientras la primera está en espera, y cambiar entre ellas.
- Tones de teclado (DTMF) durante la llamada, y Silenciar.
Las otras pestañas
- Recientes: llamadas hacia y desde esta extensión, más recientes primero, tocar para llamar de nuevo (las llamadas perdidas se destacan).
- Buzón de voz: cada mensaje con su transcripción (capítulo 29) donde la IA escribe una, reproducirlo, llamar de nuevo o eliminar.
- Equipo: quién está libre, en una llamada, sonando o ausente (una lámpara de ocupado), para llamarlos o transferir la llamada actual a ellos.
- Contactos: el directorio de la empresa, para encontrar un nombre y llamarlo.
- Chat: el chat del personal (Chat y presencia), colegas con su presencia y mensajes directos, y salas de equipo, dentro del teléfono. Un nuevo mensaje mientras la aplicación está en segundo plano se muestra como una notificación, y tocarlo abre Chat; cuando la aplicación está cerrada, llega a través del mismo push que las llamadas.
- Unirse a una sala de video: elegir una de las salas de video (capítulo 34) (enumera las salas, con cuántos están en cada una ahora). Se abre sobre el teléfono, que sigue ejecutándose debajo, y se une como su extensión: no es necesario iniciar sesión como administrador. La primera vez, el teléfono solicita la cámara. Salir, o Atrás en Android, regresa al teléfono; el sonido de la sala permanece como una llamada en el teléfono hasta que cuelgue. El teléfono muestra la sala como una llamada de video en su propia pantalla de llamada mientras esté en ella.
- Llamadas que se realizan van en el sistema de llamadas del teléfono también (CallKit en iPhone, Telecom de Android), por lo que Bluetooth, un coche o un reloj las muestran, y una llamada móvil que llega mientras tanto es consciente de ellas.
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.
Llamadas de video
/settingsCuando 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.
- BitVoice retransmite el video tal como es, en un puerto propio para cada teléfono, por lo que los teléfonos nunca aprenden las direcciones entre sí. Con un códec en común (casi todos los teléfonos de video tienen H.264) nunca decodifica el video; sin uno, puede convertir (a continuación). Cuando numeran el mismo códec de manera diferente, BitVoice lo renumerar en el camino.
- La imagen está cifrada (SRTP) para cada teléfono que cifra su sonido.
- Una solicitud de un teléfono para una imagen fresca (después de paquetes perdidos) llega al otro teléfono, por lo que la imagen se recupera en un momento.
- Una cámara encendida durante una llamada (un botón de video de un softphone) también funciona: se solicita al otro teléfono primero, y la imagen comienza cuando dice que sí.
- Un teléfono sin video o una llamada a un número externo obtiene solo sonido. En espera o mientras se estaciona la imagen se pausa, y vuelve cuando la llamada continúa. Después de una transferencia, continúa solo cuando la nueva parte envía video también.
- El video utiliza mucho más de la red que el sonido (alrededor de 0,5 a 2 Mbit/s por llamada en cada sentido): permita para ello en enlaces lentos y en el rango de puertos de medios.
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.
Fax: envío y recepción, máquinas de fax y teléfonos analógicos
/faxesLas 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.
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:
- Utilice T.38 en la pasarela y elija un proveedor que lo soporte.
- Haga que el puerto de extensión sea un puerto de adaptador analógico (Extensiones, Tipo): BitVoice entonces solo ofrece G.711, que los faxes enviados como sonido necesitan.
- En el puerto de fax de la pasarela: Modo de fax T.38, solo PCMU o PCMA, cancelador de eco de línea desactivado, llamada en espera desactivada y un búfer de jitter fijo y alto.
Bandeja de entrada: chat web, WhatsApp y Messenger
/inboxLa 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.
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.
Mensajería de texto (SMS)
/textsEnví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.
Configuración
- 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.
- 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í. - 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.
Transferir informes breves
/settingsPara 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).
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.
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.
Llamadas en vivo
/callsLlamadas 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.
Qué pueden hacer los administradores
| Acción | Qué hace |
|---|---|
| Colgar | finaliza la llamada para ambas partes |
| Abrir la puerta | para una llamada desde una estación de puerta |
| Pausar grabación | para 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)) |
| Escuchar | escuchar la llamada silenciosamente |
| Susurro | hablar con el agente solo; el llamador no escucha |
| Intervenir | unirse 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
- Una tarjeta de llamador mientras una llamada externa suena (desde su CRM, o llamadas pasadas; véase CRM (capítulo 49)).
- La información escrita para la persona a la que se transfirió la llamada (Información de transferencia (capítulo 45)).
- El veredicto de la identificación del llamador: Verificado, Parcialmente verificado o No verificado (Protección contra spam (capítulo 56)).
- Con varios servidores, las llamadas en los demás también, de solo lectura: colgar o escuchar en el servidor que tiene la llamada.
Cuando una llamada termina, se mueve a Historial de llamadas (capítulo 47).
Historial de llamadas
/historyCada 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.
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:
- Sin sonido de un lado: la llamada se conectó pero nunca llegó nada de ese teléfono o proveedor (las llamadas más cortas de 5 segundos, fax, llamadas en espera y paginación se excluyen). Véase Calidad de llamada (capítulo 53) para saber qué verificar.
- No cifrado: BitVoice solicitó cifrado (SRTP) y ese lado respondió sin él. Cifrado significa que el sonido se cifró con cada lado que envió algo. Para rechazar llamadas no cifradas de un proveedor en su lugar, active Requerir cifrado en su troncal.
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.
Línea de tiempo del cliente
/timelineLa 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.
Muestra
| Elemento | Con |
|---|---|
| Llamadas | quién las atendió, cuánto duraron, y con una transcripción, su resumen, la grabación y la transcripción |
| Mensajes de voz | sus resúmenes |
| Textos | en ambos sentidos |
| Llamadas de devolución | solicitadas y si se realizaron |
| Notas | las 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.
CRM: tarjetas de llamadores y registro de llamadas
/settingsConecte 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.
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:
- Dirección de búsqueda:
https://crm.example.com/api/v1/Contact?select=name,accountName,description&maxSize=1&where%5B0%5D%5Btype%5D=equals&where%5B0%5D%5Battribute%5D=phoneNumber&where%5B0%5D%5Bvalue%5D={number} - Encabezado de búsqueda
X-Api-Key, su valor es la clave del usuario de API - Campos de respuesta: nombre
list.0.name, empresalist.0.accountName, notaslist.0.description, enlacehttps://crm.example.com/#Contact/view/{list.0.id}
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.
Perspectiva de llamada para supervisores
/qualityPara centros de contacto: evidencia de cómo fueron las llamadas, para que un supervisor las escuche, nunca una puntuación automática.
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.
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.
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.
Consentimiento de grabación
/settingsAlgunos lugares permiten que se grabe una llamada cuando una persona la conoce; otros necesitan que todos sepan, o que acepten. En Configuración, Grabación de llamadas, elija cómo se informa a las personas en una llamada grabada:
- Ningún aviso.
- Anunciar: al responder la llamada, ambos lados escuchan el aviso (grábalo en el mismo lugar, por ejemplo "Esta llamada se graba para capacitación y calidad"), y la grabación comienza solo después de que se haya reproducido. Hasta que se grabe uno, se reproducen tres pitidos, y Salud lo indica.
- Pitido: un tono corto para ambos lados cada 15 segundos mientras la llamada se graba.
Reglas eligen por el número exterior (el llamador en llamadas entrantes, el número marcado en llamadas salientes), coincidencia más larga primero: por ejemplo, números que comienzan con 1415 (California) Anunciar, 49 (Alemania) Nunca grabar, todo lo demás como arriba. Una regla Ningún aviso graba sin uno; Nunca grabar deja esas llamadas fuera de la grabación en su totalidad. Las llamadas entre extensiones siguen la configuración principal.
Su propio número también cuenta: las reglas se aplican tanto al número exterior como al suyo (el número marcado en las llamadas entrantes, su identificador de llamada en las salientes), y el más protector de ellos gana (Nunca grabar antes de Anunciar antes de Pitido antes de Sin aviso). Así, una oficina en un lugar que necesita el consentimiento de todas las partes anuncia a quien llama, dondequiera que estén. Cuando las partes caen bajo reglas diferentes, el registro de la llamada en Historial de llamadas (capítulo 47) dice qué regla se aplicó y por qué.
La grabación también se puede pausar durante una llamada con el código de pausa (pagos con tarjeta). Nada de esto es asesoramiento legal: verifique las leyes donde usted y sus llamadores están.
Calidad de la llamada
/qualityCó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.
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).
Costos y presupuestos
/costsBitVoice 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.
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.
Reputación de ID de llamador y llamadas con marca
/reputationLas 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:
- Respondido: la participación de llamadas respondidas, y lo que fue el período anterior. Una caída de la mitad, o por debajo del 20%, es el signo habitual de una nueva etiqueta.
- Colgado de inmediato: llamadas respondidas que terminaron dentro de 10 segundos.
- Rechazado como spam: llamadas que un filtro de carrier rechazó (SIP 608) o que la persona marcó como no deseada (607). Un 608 significa que el número está etiquetado.
- Uso intensivo: más de aproximadamente 150 llamadas al día desde un número es lo que hacen los robots de llamadas, y los filtros lo notan.
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.
Protección contra spam y STIR/SHAKEN
/settingsEn 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.
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ón | Qué recibe el llamante |
|---|---|
| Sonar como de costumbre | la llamada suena como cualquier otra (el valor predeterminado) |
| Prueba del robot primero | BitVoice 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 lugar | nada 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.
- Estos servicios cobran por búsqueda. Los llamadores conocidos nunca se buscan, y cada respuesta se mantiene durante un día (Mantener respuestas).
- Un servicio lento o roto nunca retiene una llamada: después de Esperar como máximo (1,5 segundos a menos que lo cambie) la llamada suena como si la respuesta fuera "no spam".
- Probar le pregunta a un número ahora (y se cobra como cualquier búsqueda).
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).
- Dirección del certificado (x5u) es donde el lado llamado obtiene el certificado. Déjelo vacío y BitVoice lo publica en
/stir/<trunk>.pemen su dirección pública (Configuración), que entonces debe ser accesible desde Internet a través de HTTPS. - Atestación: automática da A cuando una extensión llama con uno de los números de este sistema (un número enrutado, o un ID de llamador configurado en el troncal o la extensión), B cuando una extensión llama con cualquier otro número, y C para llamadas pasadas desde fuera (un llamador reenviado). O fíjelo en A, B o C.
- El historial de llamadas marca cada llamada firmada con firmado A, B o C. Una llamada nunca se detiene porque no se pueda firmar; la razón está en el registro.
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.
Administradores
/usersLos 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
| Rol | Puede |
|---|---|
| Administrador | cambiar cualquier cosa, reproducir grabaciones, ver la existencia de cada campo secreto (nunca su valor) |
| Observador | ver 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)).
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.
Configuración
En Configuración (capítulo 14), Inicio de sesión único:
- Registre una aplicación con el proveedor, con la Dirección de redireccionamiento mostrada aquí.
- Rellenar para un proveedor establece el Emisor para los comunes; copie el ID de cliente y Secreto de cliente del proveedor.
- Asigne un nombre a los Grupos de administradores y Grupos de espectadores del proveedor. Reclamación de grupos es donde el proveedor los coloca (
groupsa menos que se establezca). - Opcionalmente, cambie el Texto del botón en la página de inicio de sesión.
- Active Usar inicio de sesión único.
Cómo funciona
- La cuenta aquí se crea en el primer inicio de sesión; los grupos establecen el rol en cada inicio de sesión, por lo que mover a alguien entre grupos en el proveedor cambia su rol aquí.
- Alguien en ningún tipo de grupo es rechazado, y el rechazo está en el registro de auditoría.
- Con También permitir contraseñas desactivado, las contraseñas solo funcionan en esta computadora, por lo que una interrupción del proveedor nunca lo bloquea.
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:
- 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.
- Servidor:
ldaps://dc1.example.com(puerto 636), oldap://...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. - Cuenta de lectura y Su contraseña: una cuenta permitida para leer personas y grupos (
reader@example.comen Active Directory). La contraseña puede ser una referencia al almacén de claves (Configuración, Almacenes de claves). - 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. - 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
- Con Crear y actualizar extensiones activado, cada persona con un número obtiene una extensión: los últimos Dígitos conservados (4 de
+1 212 555 0123es 0123; 0 conserva todos los dígitos, que deben ser entonces 2 a 8). Las nuevas extensiones obtienen una contraseña SIP y correo de voz con un PIN aleatorio; el nombre y correo electrónico de la persona provienen del directorio. - El directorio posee una extensión que creó: su número, nombre y correo electrónico siguen al directorio en cada sincronización. Todo lo demás (dispositivos, reenvío, configuración de correo de voz) es suyo.
- Una extensión que creó a mano nunca se toma, a menos que tenga el nombre o correo electrónico de esa persona. Dos personas con el mismo número, un número que la extensión de alguien más ya tiene, o un número de longitud incorrecta se enumeran en Revisar, y nada se cambia para ellos.
- Con Desactivar las extensiones de las personas que se fueron activado, una extensión que creó el directorio se desactiva cuando la persona se va, se deshabilita o pierde su número, y vuelve a activarse cuando regresa.
- Grupos de timbre llenados desde grupos de directorio: cada línea pone las extensiones de los miembros de un grupo en un grupo de timbre (en Active Directory, los grupos anidados cuentan). Un grupo con nadie que tenga una extensión deja el grupo de timbre como estaba.
- El directorio se lee cada Leer cada minutos (60 por defecto), y de inmediato con Sincronizar ahora. Cada sincronización que cambia algo es una revisión (capítulo 61) llamada "Sincronización del directorio de la empresa", por lo que se puede deshacer; el informe de la última sincronización se muestra debajo del botón.
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:
- Los miembros de Grupos de administradores inician sesión como administradores, de Grupos de espectadores como espectadores (con ningún grupo de espectadores, cualquier otra persona en el directorio). Los grupos se nombran por su nombre (cn) o DN; en Active Directory, los grupos anidados cuentan. Alguien en ningún grupo de este tipo es rechazado.
- La cuenta aquí se crea en el primer inicio de sesión y su rol sigue a los grupos en cada inicio de sesión. Nunca toma el control de una cuenta de BitVoice del mismo nombre.
- Una contraseña vacía siempre es rechazada (LDAP la tomaría de otra manera como un inicio de sesión anónimo), una cuenta deshabilitada no puede iniciar sesión y los nombres se escapan antes de llegar al directorio.
- El inicio de sesión de dos pasos se puede agregar a estas cuentas como a cualquier otra.
Seguridad
/securityUn 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.
Contra el adivinamiento de contraseñas
- Las direcciones que siguen fallando al iniciar sesión son bloqueadas durante un tiempo (Configuración, Protección): por defecto, diez intentos fallidos en un minuto bloquean la dirección durante una hora. Las direcciones bloqueadas se enumeran en Seguridad (capítulo 60) y se pueden desbloquear.
- Las redes de confianza nunca son bloqueadas: su red de oficina.
- Las contraseñas SIP se generan, con al menos 12 caracteres, una por extensión. Un teléfono que se registra como una extensión nunca puede registrarse como otra.
- Un escáner que está bloqueado no recibe respuesta, por lo que no aprende nada.
Contra el fraude
- Las extensiones solo pueden llamar a números externos cuando se les permite.
- Los números de tarifa premium se rechazan a menos que una ruta los especifique.
- El guardián de fraude de tarifa (a continuación) juzga cada llamada al exterior del país antes de que se realice.
- Costos (capítulo 54) alerta sobre presupuestos y gastos descontrolados: muchas llamadas a un país en una hora.
- Cada extensión puede tener como máximo cuatro llamadas al mismo tiempo (Configuración, Protección).
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ón | Qué hace |
|---|---|
| Una llamada al extranjero a un país al que esta extensión llamó en los últimos 90 días | la deja pasar |
| Una primera llamada a ese país en 90 días | la 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ón | la 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 emergencia | siempre 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:
- Cada respuesta viene con sus razones: qué se sostuvo, qué se argumentó en su contra y qué anuló eso.
- Algo que nadie midió es desconocido, nunca "no". Cuando algo desconocido podría cambiar la respuesta, el juez toma su opción cautelosa y dice qué no pudo medir.
- "No se puede determinar" es una respuesta: cuando las reglas dejan una situación indecisa, el juez toma su opción cautelosa y dice así.
- Cada libro de reglas se verifica en cada combinación de sus hechos antes de que se utilice (cuando BitVoice comienza, y mediante sus pruebas): nunca dos opciones al mismo tiempo, y cada regla accesible. La pantalla muestra cuántas situaciones se verificaron para cada una.
Cifrado
- TLS cifra la señalización (puerto 5061), por lo que las contraseñas y números no son legibles en la red.
- SRTP cifra el sonido de las llamadas; el teléfono del navegador y las aplicaciones siempre lo utilizan.
- La interfaz web tiene HTTPS en el puerto 8443 con su propio certificado, o uno que instale.
Quién puede hacer qué
- Los administradores cambian todo; los espectadores ven todo pero no cambian nada; el personal utiliza el portal para sus propias llamadas solamente.
- Active inicio de sesión de dos pasos para cada administrador (Administradores (capítulo 57)): un código desde una aplicación de autenticador.
- Inicio de sesión único (capítulo 58) inicia sesión a las personas a través de su proveedor de identidad.
- El registro de auditoría registra cada acción administrativa y quién la realizó, y no se puede editar.
Cambios, copias de seguridad e importación
/changesCada 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.
Comparar y restaurar
- Qué cambió muestra la diferencia entre una revisión y la anterior, campo por campo.
- Restaurar muestra qué cambiaría la restauración y pregunta primero. La restauración es también una nueva revisión, así que también se puede deshacer.
Exportar e importar
- Exportar descarga la configuración completa como un archivo (secrets excluidos a menos que se solicite).
- Importar muestra una vista previa de los cambios de un archivo antes de aplicarlos.
- Importar (capítulo 68) también lee configuraciones de FreePBX y Asterisk, listas de usuarios de 3CX y las exportaciones CSV de Cisco Unified CM, Avaya y Mitel.
- Archivo (capítulo 72) copia copias de seguridad, grabaciones y correo de voz a Amazon S3 o Azure.
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.
Actualizaciones
/updatesActualizar 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.
Instalar una actualización
- Descargue la nueva versión y desempaquétela. Junto al programa está su firma de BioDream:
bitvoice.sig, obitvoice.exe.sigen Windows. - En Actualizaciones (capítulo 62), cargue el programa y su archivo
.sig. - Presione Instalar. Por defecto, BitVoice espera hasta que no haya llamadas en progreso; también puede instalar de inmediato.
- 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 ejecuta | Actualizaciones acepta |
|---|---|
| una versión, v0.1.3 o posterior | solo programas firmados por BioDream |
| v0.1.2 o anterior, o una compilación propia | cualquier programa: sin clave, un archivo .sig no se puede comprobar y se ignora |
Varios servidores como un sistema de telefonía
/serversDos o más servidores BitVoice que comparten una base de datos PostgreSQL funcionan como un sistema de telefonía:
- Una llamada llega a un teléfono independientemente del servidor con el que esté registrado: grupos de timbre, colas, transferencias a una extensión y llamadas de líneas de proveedores timbran en todos los servidores.
- Configuraciones cambiadas en un servidor se aplican en todos dentro de cinco segundos; usuarios, contactos, historial de llamadas, transcripciones de grabaciones y textos son compartidos.
- Lámparas de ocupado (BLF) muestran teléfonos en cada servidor sonando y ocupados; espacios de estacionamiento son compartidos, por lo que una llamada estacionada en un servidor se puede recoger desde un teléfono en otro; paginación llega a teléfonos en cada servidor; textos llegan a teléfonos de escritorio dondequiera que estén registrados.
- Un agente de cola en una llamada en un servidor cuenta como ocupado en los demás, y el límite de canales de una línea de proveedor cuenta las llamadas en cada servidor.
- Llamadas en vivo en cada servidor enumera las llamadas en los demás también (solo lectura: cuelgue o escuche en el servidor que tiene la llamada).
- El registro de llamada se escribe una vez, por el servidor que tiene al que llama, y una llamada también se graba allí.
Configuración
- Mueva los datos del primer servidor a PostgreSQL: Configuraciones, Base de datos.
- 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. - 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.
- Indique a los teléfonos cómo encontrar los servidores (a continuación).
- 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:
- Un nombre de DNS para cada servidor: un nombre como pbx.example.com con registros SRV (_sip._udp, _sip._tcp, _sips._tcp) que enumera cada servidor. Los teléfonos que BitVoice configura se les da el nombre, y Servidores verifica los registros contra los servidores en ejecución, enumera lo que falta y proporciona los registros para crear, listos para copiar.
- Una dirección compartida: una dirección no utilizada en la red de los servidores, como 192.168.1.50/24. Un servidor en ejecución mantiene la dirección en un momento y se la comunica a la red al instante (ARP gratuito); si se detiene, el siguiente servidor toma la dirección en unos segundos, continúa sus llamadas y responde sus teléfonos en la misma dirección, sin que ellos vuelvan a registrarse. Necesita Linux y los permisos NET_ADMIN y NET_RAW (en un contenedor:
--cap-add NET_ADMIN --cap-add NET_RAW), y los servidores en una red. Reinicie cada servidor después de configurarlo.
Líneas de proveedores. En cada troncal, Compartida entre servidores indica cómo:
- Cada servidor la utiliza: cada servidor se registra y realiza sus propias llamadas. Para proveedores que permiten varias registraciones en una cuenta, o ninguna.
- Un servidor a la vez: un servidor se registra y lleva la línea; los demás la muestran como En espera, retenida por ese servidor y envían sus llamadas a través de él. Si se detiene, el siguiente servidor se registra en unos segundos. Para proveedores que permiten una registración por cuenta.
Cuando un servidor se detiene
- Las llamadas continúan. Cada servidor mantiene una nota de sus llamadas en la base de datos; cuando uno se detiene, un servidor en ejecución recoge cada llamada en unos segundos, mueve el sonido a sí mismo y se lo comunica a ambas partes (un re-INVITE). Hay una pausa de unos segundos en el sonido. Una parada planificada (una actualización, un reinicio) entrega las llamadas al instante, sin pausa.
- Una llamada cuyo teléfono esté registrado en el servidor que toma el control continúa allí sin molestar a ese teléfono: solo se mueve la otra parte.
- Sus teléfonos continúan a través de su servidor de respaldo, el nombre de DNS o la dirección compartida.
- Un servidor que solo reinicia (una actualización, un reinicio) todavía sabe dónde están registrados sus propios teléfonos: los mantiene en su carpeta de datos (
registrations.json), por lo que las llamadas llegan a ellos antes de que vuelvan a registrarse. - Health y Servidores lo muestran como detenido; cuando regresa, no toma nada del servidor que tomó el control.
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).
Donde se almacenan los datos (SQLite o PostgreSQL)
/settingsBitVoice 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.
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.
Hospedaje de otras organizaciones
/tenantsUn 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.
Cuándo usarlo
- Un proveedor, o una empresa de TI, que ejecuta sistemas de telefonía para muchos clientes pequeños en un servidor.
- Un grupo de oficinas o clínicas que desean sistemas separados, administrados por separado, en hardware compartido.
- Varios puntos de respuesta que comparten un sistema, cada uno manteniendo sus propios operadores y registros.
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
- Abra Organizaciones (capítulo 65) y presione Agregar organización.
- 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. - 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. - Establezca su primer administrador: un nombre de usuario y una contraseña de al menos 12 caracteres, y su país.
- 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 solicitud | va a |
|---|---|
desde un teléfono que se registra en pbx.acme.example | la organización con ese dominio |
desde un teléfono que se registra como acme.100 | Acme, extensión 100 |
| desde un proveedor, para un número | la organización de la que proviene la troncal y cuya ruta de entrada tiene ese número |
| cualquier otra cosa | el 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ímite | Qué sucede en él |
|---|---|
| Extensiones | agregar una más se rechaza con un mensaje |
| Llamadas al mismo tiempo | las nuevas llamadas se rechazan (503) hasta que una termine |
| Almacenamiento | las nuevas grabaciones y el correo de voz no se conservan |
| Solicitudes de IA al día | las 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.
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.
Los codecs
| Codec | Sonido | Ancho de banda | Utilizado por |
|---|---|---|---|
| G.722 | HD (ancho de banda amplio) | 64 kbit/s | la mayoría de los teléfonos de escritorio: la mejor opción entre ellos |
| G.711 µ-law | teléfono | 64 kbit/s | América del Norte y Japón; cada operador |
| G.711 A-law | teléfono | 64 kbit/s | el resto del mundo |
| Opus | HD, tolera pérdidas | 24 kbit/s | navegadores y aplicaciones móviles |
| G.729 | teléfono, un poco más áspero | 8 kbit/s | enlaces delgados, algunos operadores |
| G.726 (40 kbit/s) | teléfono; transporta tonos de módem mejor que las tasas de G.726 | 40 kbit/s | pasarelas, algunos sistemas DECT |
| G.726 (32 kbit/s) | cerca del teléfono | 32 kbit/s | bases DECT, pasarelas más antiguas |
| G.726 (24 kbit/s) | entre 32 y 16 | 24 kbit/s | algunos sistemas DECT |
| G.726 (16 kbit/s) | áspero | 16 kbit/s | enlaces muy delgados |
| AMR-WB (G.722.2) | HD | 6,6 a 23,85 kbit/s | voz HD de redes móviles, interconexiones VoLTE |
| AMR | teléfono, móvil | 4,75 a 12,2 kbit/s | redes móviles, algunos operadores y pasarelas |
| iLBC | teléfono, tolera pérdidas | 13,3 o 15,2 kbit/s | softphones y aplicaciones más antiguas |
| Speex | teléfono | 15 kbit/s (2,15 a 24,6) | softphones más antiguos, enlaces a otros sistemas Asterisk |
| GSM | más áspero | 13 kbit/s | softphones y pasarelas más antiguas |
| G.723.1 | áspero; convertido solo con ffmpeg | 5,3 o 6,3 kbit/s | teléfonos de video y pasarelas muy antiguos |
| G.722.1 (Siren 7) | ancho de banda amplio, transportado sin cambios | 24 o 32 kbit/s | teléfonos Polycom, teléfonos de video y conferencia |
| G.722.1C (Siren 14) | superancho de banda, transportado sin cambios | 24 a 48 kbit/s | teléfonos de conferencia, sistemas de sala |
| G.719 | banda completa, transportado sin cambios | 32 a 128 kbit/s | sistemas de sala de telepresencia |
| Codec2 | muy bajo ancho de banda, transportado sin cambios | 0,7 a 3,2 kbit/s | enlaces 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.
Microsoft Teams (Enrutamiento directo)
/trunksBitVoice 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.
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
- 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.
- Troncales, Agregar, comience desde Microsoft Teams: ingrese el nombre público del servidor. El cajón dice si el certificado lo cubre.
- 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.
- 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.
Importar
/importTrae 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).
Mover desde FreePBX
El mejor archivo es una copia de seguridad de FreePBX: contiene todo, incluyendo contraseñas SIP.
- 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.
- Descargue la copia de seguridad desde su fila (el archivo se llama como
20261001-100000-1790000000-17.0.19-1234567.tar.gz). - 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.
- 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.
- Elija Agregar. Es una revisión en Cambios (capítulo 61): deshágala allí si algo parece incorrecto, e importe nuevamente.
- 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.
- 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:
- Extensiones: el número, nombre, ID de llamador de salida, tiempo de timbre y contraseña SIP (BitVoice crea una nueva cuando la de FreePBX es más corta que 12 caracteres: vuelva a ingresarla en ese teléfono). Correo de voz con su PIN y dirección de correo electrónico (y si los mensajes se envían como archivos adjuntos).
- Troncos: cuentas de transportista PJSIP y chan_sip: servidor, puerto, nombre de usuario, contraseña, registro, dominio de origen, codecs, ID de llamador, límite de canal. Los troncos desactivados permanecen apagados. Los troncos DAHDI se convierten en el tronco de tarjetas de telefonía.
- Rutas de salida, en el orden de FreePBX: cada patrón de prefijo se convierte en dígitos que se eliminan, sus dígitos de prefijo se agregan. Una ruta cuyos patrones eliminan o agregan dígitos diferentes se convierte en una ruta de BitVoice para cada uno.
- Grupos de timbre: miembros, tiempo de timbre, timbre-todo o uno-después-de-otro (caza, caza con memoria, primer disponible), y a dónde van las llamadas no respondidas.
- Colas: miembros con sus penalizaciones, estrategia (timbre-todo, menos reciente, menos llamadas, rotación, lineal, aleatorio), tiempo de timbre, tiempo de preparación y espera más larga.
- Rutas de entrada: cada DID a su extensión, grupo de timbre, cola, buzón de correo de voz o colgar.
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:
- FreePBX (solo extensiones): Admin → Bulk Handler → Export → Extensiones (CSV).
- Asterisk: pjsip.conf o sip.conf.
- 3CX: Usuarios → Exportar (CSV).
- Cisco Unified CM: Administración masiva → Teléfonos → Exportar teléfonos, todos los detalles; o Usuarios → Exportar usuarios. La primera línea del teléfono se convierte en la extensión, con el nombre o etiqueta de la línea como su nombre.
- Avaya IP Office: Administrador → Archivo → Importar/Exportar → Exportar, Usuarios.
- Avaya Communication Manager:
list stationguardado como CSV; las estaciones virtuales y VDN se dejan fuera. - Mitel MiVoice Business: Administración de datos del sistema → Configuración de usuarios y dispositivos → Exportar.
Grupos y rutas. Subirlos con el archivo de personas, para que los miembros de cada grupo se encuentren por número o por nombre:
- Cisco Unified CM: Administración masiva → Importar/Exportar → Exportar, con Grupo de líneas, Lista de caza, Piloto de caza, Troncal SIP y Patrón de ruta marcados; subir el .tar tal como viene. Cada piloto de caza se convierte en un grupo de timbre con los miembros de la lista de caza de sus grupos de líneas, Top Down y Circular como uno después de otro, Difusión como todos a la vez, el tiempo de reversión de RNA como el tiempo de timbre. Los patrones de ruta se convierten en rutas de salida:
9.[2-9]XXXXXXcon PreDot es patrón9[2-9]XXXXXXquitando el 9;!se convierte en un punto final. Los patrones que utilizan@(el plan nacional) se enumeran para escribir a mano. - Avaya IP Office: exportar Grupo de caza así como Usuarios (ambos son CSV sin fila de encabezado). El modo de grupo es todos a la vez; Caza, Rotativo y Espera más larga suenan uno después de otro.
- Avaya Communication Manager:
list hunt-groupguardado como CSV, con los miembros en una columna Miembros o en un archivo de miembros separado. - Mitel MiVoice Business: Grupos de timbre y Asignación de grupos de timbre (Cascade es uno después de otro, Ring All todos a la vez), y Grupos de caza.
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.
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).
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.
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.
AMI
La interfaz de administrador en el puerto TCP 5038 (AMI escucha en: este equipo solo por defecto). Soportado:
| Tipo | Nombres |
|---|---|
| Acciones | Inicio 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 |
| Colas | EstadoCola, ResumenCola, PausarCola, AgregarCola y QuitarCola (firma a un agente en, o fuera de, todas sus colas), Agentes |
| Otros | LlamadasEstacionadas; ListaSalasConfbridge, ListaConfbridge, ExpulsarConfbridge, SilenciarConfbridge, DesilenciarConfbridge, BloquearConfbridge, DesbloquearConfbridge; ContarBuzón, EstadoBuzón; PausarMonitor, ReanudarMonitor; EventoUsuario; Recargar (nada que recargar: los cambios se aplican al instante) |
| Eventos | NuevoCanal, 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:
| Solicitud | Qué hace |
|---|---|
GET /ari/channels | las llamadas en progreso |
POST /ari/channels?endpoint=PJSIP/100&extension=5551234 | llamar al número 100, luego llamar al número |
DELETE /ari/channels/{id} | colgar |
POST /ari/channels/{id}/redirect?endpoint=PJSIP/102 | enviar la llamada a 102 |
/ari/endpoints, /ari/bridges, /ari/asterisk/info | teléfonos, puentes, versión |
/ari/events | un WebSocket de eventos |
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=rtp&format=ulaw | un 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:
| Solicitud | Qué hace |
|---|---|
POST /ari/channels/{id}/play?media=sound:goodbye,digits:42 | reproduce 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=%23 | graba (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=123 | envía teclas al que llama |
GET/POST /ari/channels/{id}/variable?variable=X&value=Y | las variables del canal |
POST /ari/bridges?bridgeId=room1, .../addChannel?channel=a,b, .../removeChannel, .../play, DELETE | puentes de mezcla: todos en uno escuchan a todos los demás |
POST /ari/channels/{id}/continue?extension=101 | deja 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=NAME | llama al 101; respondido, entra en la aplicación |
GET /ari/applications | las aplicaciones, si un programa está conectado y sus canales |
POST /ari/channels/{id}/mute?direction=in, DELETE .../mute | silencia lo que el que llama dice (in), lo que escucha (out) o ambos |
POST/DELETE /ari/channels/{id}/hold, .../moh, POST .../silence | música de espera al que llama (ChannelHold, ChannelUnhold), o silencio |
GET/POST /ari/channels/{id}/variables | varias variables a la vez (ChannelVarset) |
POST /ari/channels/{id}/move?app=other | pasa 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=NAME | un 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 .../dial | un 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_statistics | paquetes y bytes enviados y recibidos, pérdida y jitter |
POST /ari/playbacks/{id}/control?operation=pause | pausa, 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, .../mute | copia una grabación; pausa o silencia una en vivo |
POST /ari/applications/{app}/subscription?eventSource=deviceState:Custom:lamp, PUT .../eventFilter | suscripciones (canal:, puente:, endpoint:PJSIP/100, deviceState:) y filtros de eventos ({"disallowed": [{"type": "ChannelVarset"}]}) |
GET /ari/deviceStates, PUT /ari/deviceStates/Custom:lamp?deviceState=INUSE | estados 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=0 | recuentos de correo de voz de extensiones (100@default), y buzones que un programa mantiene por sí mismo |
GET /ari/sounds | los 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=Hi | un texto en los teléfonos de la extensión 100 |
POST /ari/events/user/{name}?application=NAME | un evento de usuario a una aplicación (ChannelUserevent) |
GET /ari/asterisk/ping, GET/POST /ari/asterisk/variable, GET /ari/asterisk/modules | ping, 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:
| Campo | Qué es |
|---|---|
| Nombre del script | cómo los destinos lo nombran |
| Dirección | un 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 |
| Argumentos | pasados como agi_arg_1, agi_arg_2 … |
| Número para marcar | opcional: las extensiones lo marcan como cualquier número |
| Valor predeterminado | a dónde va la llamada cuando el script termina sin elegir un número, o no se puede alcanzar |
| Ejecución más larga | un script que se ejecuta durante más tiempo se detiene (un hora por defecto) |
| EAGI | para 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):
| Comandos | Notas |
|---|---|
| ANSWER, HANGUP, CHANNEL STATUS, NOOP, VERBOSE | HANGUP con un nombre de canal solo termina la llamada del script |
| STREAM FILE, CONTROL STREAM FILE, GET OPTION, GET DATA, WAIT FOR DIGIT | teclas 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 DATETIME | con un servicio de habla en Configuración, AI se hablan; sin él, los dígitos se dicen desde Sonidos |
| RECORD FILE | s=N silencio, un pitido, teclas de escape; el archivo aterriza en la biblioteca de sonidos |
| SET VARIABLE, GET VARIABLE, GET FULL VARIABLE | CALLERID(num), CALLERID(name), EXTEN, UNIQUEID, CHANNEL … y expresiones ${NAME} |
| DATABASE GET, PUT, DEL, DELTREE | base 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 MUSIC | SET EXTENSION es a dónde va la llamada cuando el script termina |
| SPEECH CREATE … SPEECH RECOGNIZE | utiliza 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 |
| EXEC | Answer, 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.
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):
- Permitir que los asistentes de IA se conecten: desactivado por defecto. Desactivado,
/mcpresponde con nada más que que está desactivado. - Permitir que los asistentes actúen: desactivado por defecto. Desactivado, los asistentes solo leen, independientemente de su token. Activado, un asistente cuyo token puede cambiar cosas también obtiene las herramientas que actúan.
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):
- calls_now: las llamadas que se realizan ahora.
- call_history: llamadas pasadas, buscadas por número o nombre, por dirección y desde una hora, con por qué cada una fue donde fue.
- extensions: nombres, números, departamentos, correo electrónico; nunca la contraseña de un teléfono.
- phones_connected: qué teléfonos están registrados, desde dónde.
- voicemail, search_transcripts: mensajes y lo que se dijo en llamadas grabadas.
- queues, trunks, health: colas ahora, las líneas del proveedor, las propias comprobaciones de BitVoice.
- directory, text_messages: el libro de teléfonos de la empresa y las conversaciones de texto.
Actuación (con Permitir que los asistentes actúen, y un token que puede cambiar cosas):
- place_call: llamar. El teléfono de la extensión suena primero; cuando alguien allí responde, BitVoice llama al número para ellos como si hubieran marcado, por lo que se aplican sus rutas, ID de llamador y límites.
- send_text: un mensaje de texto desde uno de los números de texto de la organización.
- hang_up_call: termina una llamada en progreso.
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
- Solo tokens: el inicio de sesión de un navegador en BitVoice nunca llega a
/mcp, y una página en otro sitio es rechazada (Origen), por lo que una página web no puede utilizar una conexión de asistente. - Los asistentes pueden estar equivocados. Proporcione tokens de solo lectura a menos que necesiten actuar; cualquier cosa que hayan hecho está en el registro de auditoría, y la colocación de una llamada siempre suena el teléfono de una persona primero.
- Inicio de sesión mediante OAuth 2.1 como especifica MCP: el asistente se registra (solo clientes públicos, con PKCE), solo regresa a las direcciones que registró (https, o http a su propia computadora), y un código es válido solo una vez, durante un minuto.
- Una organización alojada en el BitVoice de otra persona proporciona tokens a sus asistentes; el inicio de sesión mediante OAuth allí no se ha intentado aún.
Archivo
/archiveEl 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.
Configuración
- En Archivo (capítulo 72), elija Dónde archivar: Amazon S3 o Azure.
- 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.
- Para Azure: una URL de SAS del contenedor con permiso de escritura, y una Carpeta en el contenedor opcional.
- 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.
Retenciones legales
/holdsUna 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.
Agregar una retención
En Retenciones legales (capítulo 73), presione Agregar:
| Campo | Qué es |
|---|---|
| Nombre | el nombre del asunto |
| Motivo | por qué, para el registro |
| Números | las extensiones y números externos que cubre (101, +15551234567), o Todo |
| Desde, Hasta | las fechas que cubre; vacío para sin límite |
Mientras una retención está activa
- La retención deja lo que cubre solo, sin importar su edad.
- Nadie puede eliminar una llamada, grabación o correo de voz retenido, incluidos los administradores.
- Las llamadas retenidas muestran un candado en Historial de llamadas (capítulo 47).
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.
Métricas: Prometheus, OpenTelemetry, Grafana, SNMP y registros de llamadas
/settingsPrometheus 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:
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:
- Syslog (RFC 5424, como JSON) sobre UDP, TCP o TLS, para un servidor de registro o un SIEM.
- Un archivo CSV al día, con las columnas Master.csv de Asterisk, para que las herramientas de informes y facturación hechas para Asterisk lo lean. Descargue los archivos al pie de Historial de llamadas (capítulo 47). Las celdas que una hoja de cálculo ejecutaría como fórmula se escriben de manera segura.
- Una tabla PostgreSQL en otra base de datos, hecha la primera vez con las columnas
cdrde Asterisk (calldate, clid, src, dst, duration, billsec, disposition, uniqueid…) más la dirección, troncal, costo y MOS de BitVoice. Cada llamada se escribe una vez.
Enviar un registro de prueba intenta el servidor syslog y la base de datos con la configuración guardada.
Generador de llamadas
/loadtestEl 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.
Ejecutar una prueba
| Configuración | Qué es |
|---|---|
| Número para llamar | un número dentro de BitVoice: una extensión, un grupo, una cola, un menú |
| Llamadas procedentes de | el número de llamada que muestra quién llama |
| Responder como | una extensión que responde por sí misma; o nadie, cuando el número responde por sí mismo (un menú, la prueba de eco) |
| Llamadas | cuántas en total |
| Al mismo tiempo | el 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 segundo | cuán rápido comienzan |
| Cada una dura (s) | cuánto tiempo habla cada una |
Leer los resultados
| Resultado | Lo que dice |
|---|---|
| Respondido, Fallido | y Por qué fallaron las llamadas, por motivo |
| Tiempo de respuesta, mediana y 95% | cuánto tiempo esperaron los llamadores |
| Audio perdido | la participación de paquetes de sonido que nunca llegaron |
| Puntuación de audio | una estimación del sonido (MOS): 4 o más es bueno, menos de 3.6 es pobre |
| Jitter, 95% de las llamadas | cuá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 llamada | la 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 larga | con 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 tiempo | un gráfico de la carga |
Rastreo SIP
/traceEl 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á.
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 ve | Generalmente significa |
|---|---|
| REGISTER respondido 401, luego nada | el teléfono no tiene la contraseña, o tiene la incorrecta |
| REGISTER respondido 403 | la dirección está prohibida, o el teléfono se registra como otra extensión |
| INVITE respondido 404 | no hay ruta que coincida con el número marcado (Enrutamiento de llamadas (capítulo 8)) |
| INVITE respondido 403 por el proveedor | el proveedor rechaza la identificación del llamador o el número |
| 486 | el otro lado está ocupado |
| 488 | los dos lados no tienen códec en común (Códecs (capítulo 66)) |
| 200 OK, luego BYE después de unos 30 segundos | el ACK nunca llegó: un enrutador en medio reescribe o descarta mensajes (desactive su "SIP ALG") |
| Una llamada se conecta pero nadie escucha nada | el sonido está bloqueado: verifique la dirección pública en Configuración, y los puertos de multimedia en el firewall |
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.
Llamadas de 911 (el perfil de 911)
/psapBitVoice 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.
Configuración.
- En Troncales (capítulo 7), agregue la troncal de su proveedor ESInet (o el núcleo ESRP de NG911) y active Desde ESInet.
- En Enrutamiento de llamadas (capítulo 8), envíe sus llamadas a sus operadores de llamadas: una cola o un grupo de timbre.
- 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 dirección que la red envió (ubicación cívica), y la posición con qué certeza (dentro de tantos metros), dibujada en el mapa con su círculo de incertidumbre (una vez que se establezca un mapa, a continuación), y un enlace a OpenStreetMap;
- el proveedor, el tipo de servicio (inalámbrico, VoIP, residencial, comercial), el dispositivo y el suscriptor, cuando la llamada los trajo (Datos adicionales, RFC 7852);
- cualquier cosa que saliera mal al leerla.
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: el bloque de texto que los sistemas CAD leen (número de devolución, clase de servicio, dirección, posición y certeza, proveedor), enviado por TCP;
- el EIDO, el documento de incidente de NENA-STA-024, por HTTPS POST (con un token portador si está configurado). EIDO en una llamada lo muestra. La dirección debe ser
https, o planohttpsolo a un CAD en esta misma computadora (http://127.0.0.1:…): un EIDO lleva la ubicación del llamador y el token, así que nunca cruza una red sin cifrar, una red privada incluida. Lo mismo se aplica a Enviar eventos de radio a CAD en. Guardar cualquier otra direcciónhttpen plano se rechaza; una guardada por una versión anterior permanece, así que BitVoice todavía se inicia y otros cambios todavía se guardan, pero nada se envía a ella y Salud (capítulo 13) la muestra en rojo hasta que se cambie.
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 en vivo muestra EN VIVO; Ver video del llamador reproduce el video desenfocado, y Revelar (puede ser perturbador) lo muestra; Desenfocar de nuevo lo oculta;
- cada archivo muestra su tamaño, cuándo se tomó (por el reloj de la cámara), dónde (desde su GPS, cuando lo tiene), y su SHA-256, tomado al llegar, para que se pueda mostrar más adelante que es el mismo archivo; Revelar lo abre; Retener como evidencia mantiene los archivos de la llamada más allá del período de retención;
- el enlace de visualización debajo de él (WHEP) permite que CAD, la pantalla de una unidad o otra posición vean el mismo video en vivo, sin iniciar sesión: trátelo como una clave.
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.
Consola de despacho de radio
/radioLos 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.
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).
Servicios básicos del núcleo NG911 (ECRF, ESRP, LVF, BCF, LIS, registro)
/corePara 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.
Á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:
- Almacén de políticas (
/i3/PolicyStore/v1/Policies,/PolicyEnums): las agencias almacenan, actualizan y eliminan sus políticas de enrutamiento (Reglas de enrutamiento de políticas), cada una firmada por la agencia que la posee (el certificado del firmante debe nombrar al propietario y provenir de la PCA cuando sus raíces estén establecidas). Una política se mantiene byte a byte tal como llegó. El ESRP las ejecuta: la Política de enrutamiento de origen para La cola de entrada de este ESRP primero, de lo contrario la Política de enrutamiento de siguiente salto normal de la PSAP que eligió el ECRF. De las reglas cuyas condiciones se cumplen, la de mayor prioridad actúa; cuando su ruta falla (ocupado, no respuesta dentro de su rnaTimer, 20 segundos cuando no proporciona ninguno), la siguiente lo hace; una Acción de ocupado responde 600 Ocupado en todas partes. Se toman las condiciones: períodos de tiempo, encabezados SIP, datos adicionales, tipos de cuerpo, ubicación (círculo o cívica), sospecha de llamada, estado de cola (PSAP propias de BitVoice), URN de servicio LoST y Siguiente salto normal, origen de llamada, URI de solicitud, cola de entrada, y los medios y lenguajes de la oferta SDP; el estado de servicio y la postura de seguridad se toman como desconocidos (Inalcanzable y Verde, como dice el estándar). Las condiciones de parte del cuerpo, CAP y verificación de número de llamada no se ejecutan: se cuentan como falsas. Sin una política almacenada, las Reglas de política anteriores deciden. La pestaña enumera lo que se almacena y le permite pegar uno, o firmar uno con el certificado de este servidor. - Informes de discrepancias (
/i3/DiscrepancyReports/v1): otras agencias informan problemas con los servicios de este servidor; cada uno se muestra en la pestaña, donde puede responder con una resolución, enviada al informante. Presentar un informe envía uno al servicio de informes de discrepancias de otra agencia; su respuesta y resolución posterior se muestran debajo de Informes que presentó este servidor. - Actores maliciosos (
/i3/BadActor/v1/BadActors, con el BCF): cada llamada que el BCF pasa lleva el ID de su origen (Call-Info: <sip:ID>;purpose=emergency-source); una PSAP que encuentra que ese origen está atacando informa el ID, y el BCF rechaza sus llamadas, o aumenta su puntuación de sospecha para las políticas, durante Un informe dura horas. Levantar termina un informe antes de tiempo. - Geocodificación y Conversión de MSAG (
/i3/Gcs/v1,/i3/Mcs/v1): dirección cívica a posición y viceversa desde los puntos de dirección del LVF (el más cercano dentro de 150 m), y dirección cívica a dirección MSAG (120 N MARKET STREET, HARRISBURG CITY, PA) y viceversa, desde los camposMSAGComm_L/MSAGComm_Rde las líneas centrales. Las respuestas son objetos JSON, o XML cuando el que pregunta lo solicita. - Datos adicionales (
/i3/Adr/v1/AdditionalData?callerUri=): bloques que mantiene por llamador (XML RFC 7852), servidos por valor, o por referencia para un que pregunta que quiere JSON. Un bloque por llamador se sirve por valor: el primero que se mantiene. - Localizador (
/i3/ServiceAgencyLocator/v1): el registro de esta agencia (su ID de la página de llamadas de emergencia, con sus direcciones de registro y discrepancias) y las agencias que agrega. - Desencolar (
/i3/DequeueRegistration/v1/Registrations): posiciones o PSAP se registran para tomar las llamadas de una cola (la cola de este ESRP, o la URI de una PSAP); el ESRP envía llamadas para esa cola a ellos, el más preferido primero (preferencia 5 antes que 1), a través del tronco de la PSAP. - Llamadas de prueba: una PSAP pide a este núcleo que le envíe llamadas de prueba (
/i3/TestCall/v1/SendTestCalls/{agency ID}: cada ciertos minutos, al menos cinco, entre dos fechas, con una ubicación); BitVoice coloca cada una enurn:service:test.sosa través del tronco de la PSAP y mantiene lo que regresó. Colocar una ahora intenta una. - Estados de PSAP (SIP, no REST): Suscribirse al estado de cola y servicio de cada PSAP hace que el ESRP SUBSCRIBA (RFC 6665) a cada PSAP enumerada, a través de su tronco, para
emergency-QueueStateyemergency-ServiceState(NENA-STA-010.3 4.2.1.3 y 2.4.2), por una hora a la vez, renovada antes de que termine. Lo que los PSAP NOTIFICAN se muestra debajo de Estados de PSAP y es lo que las condiciones de estado de cola, estado de servicio y postura de seguridad de las reglas de política leen. Una PSAP cuya cola dice Inactiva, Deshabilitada, Llena o Agotada de recursos (o mantiene la mayoría de sus llamadas), o cuyo servicio dice Sin personal, Mantenimiento programado hacia abajo, Sobrecargado, Cayendo o Abajo, se pasa por alto para su desbordamiento, y las notas de la llamada lo dicen; cuando todos los PSAP de la cadena dicen que no pueden tomar llamadas, la llamada se envía de la manera enumerada de todos modos, nunca se deja sin ningún lugar adonde ir. Un PSAP que no responde el SUBSCRIBE es Inalcanzable (como dice el estándar que un suscriptor debe asumir) y se vuelve a intentar cada minuto; uno que lo rechaza (489, 603 ...) se vuelve a intentar en diez minutos. - Estados de este servidor: Decir a otros elementos el estado de elemento, servicio y cola de este servidor responde a los SUBSCRIBEs para
emergency-ElementState,emergency-ServiceStateyemergency-QueueStatedesde las direcciones debajo de Puede preguntar (otros obtienen 603 Declinar; una cola que no es la cola de entrada de este servidor, 488). La longitud de la cola es la cantidad de llamadas de emergencia que aún no han sido respondidas aquí, y dice Llena en Llamadas más esperando en la cola (20 cuando está en blanco); el servicio dice Sobrecargado en el límite de llamadas de este servidor, de lo contrario Normal. Los NOTIFICAN se envían cuando el estado cambia, como máximo uno por segundo, y una vez por minuto independientemente (las tasas de frecuencia predeterminadas del estándar); sus cuerpos se verifican contra los esquemas de cuerpo de notificación de NENA.
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.