Manuel de BitVoice
Sommaire
- Partie 1. Premiers pas
- 1. Premiers pas
- 2. Maturité de chaque partie
- 3. Extensions
- 4. Connexion des téléphones
- 5. Téléphones Skinny et passerelles MGCP
- 6. Cartes de téléphonie
- 7. Troncs
- 8. Acheminement des appels
- 9. Ensembles de codes PIN
- 10. Recherche d'identifiant d'appelant
- 11. Appels d'urgence
- 12. Sites et 911 de bureau
- 13. État de santé
- 14. Paramètres
- 15. Les écrans dans votre langue
- Partie 2. Où les appels aboutissent
- 16. Flux d'appel
- 17. Groupes de sonnerie
- 18. Files d'attente
- 19. Appel sortant automatique
- 20. Sons : invites, langues et musique d'attente
- 21. Menus (répondeur automatique)
- 22. Annuaire par nom
- 23. Accès téléphonique (DISA)
- 24. Robots vocaux (AudioSocket)
- 25. Basculants jour/nuit
- 26. Horaires
- 27. Scripts (JavaScript et Lua)
- 28. Réceptionniste IA, triage de la messagerie vocale et questions
- 29. Boîte vocale
- 30. Appels en rappel
- 31. Liens d'appel et appel de site Web
- Partie 3. Appels quotidiens
- 32. Codes de fonction, transfert et numéros de vitesse
- 33. Le portail du personnel
- 34. Salles de conférence
- 35. Paging et haut-parleurs de plafond
- 36. Poste de travail partagé
- 37. Appels d'hôtel et appels de réveil
- 38. Contacts sur chaque téléphone
- 39. Calendriers et ne pas déranger
- 40. Applications mobiles
- 41. Appels vidéo
- 42. Télécopie : envoi et réception, machines à télécopie et téléphones analogiques
- 43. Boîte de réception : chat web, WhatsApp et Messenger
- 44. Messagerie commerciale (SMS)
- 45. Transfert des briefings
- Partie 4. Clients et analyse
- 46. Appels en cours
- 47. Historique des appels
- 48. Chronologie client
- 49. CRM : cartes d'appelants et journalisation des appels
- 50. Aperçu d'appel pour les superviseurs
- 51. Enregistrement des appels et paiements par carte
- 52. Consentement à l'enregistrement
- 53. Qualité de l'appel
- 54. Coûts et budgets
- 55. Réputation de l'identifiant de l'appelant et appels personnalisés
- 56. Protection contre les spams et STIR/SHAKEN
- Partie 5. Exécution de BitVoice
- 57. Administrateurs
- 58. Authentification unique
- 59. Annuaire d'entreprise (Active Directory et LDAP)
- 60. Sécurité
- 61. Changements, sauvegardes et importation
- 62. Mises à jour
- 63. Plusieurs serveurs en un seul système téléphonique
- 64. Où les données sont conservées (SQLite ou PostgreSQL)
- 65. Hébergement d'autres organisations
- 66. Codecs et son
- 67. Microsoft Teams (Direct Routing)
- 68. Importation
- 69. Configuration en tant que code
- 70. Compatibilité Asterisk (AMI, ARI et AGI)
- 71. Les assistants intelligents (MCP)
- 72. Archives
- 73. Conservations légales
- 74. Métriques : Prometheus, OpenTelemetry, Grafana, SNMP et enregistrements d'appels
- 75. Générateur d'appels
- 76. Traçage SIP
- Partie 6. Sécurité publique : la piste du labo
Premiers pas
D'une nouvelle installation à un système téléphonique fonctionnel : extensions, téléphones, entreprise de téléphonie, où les appels aboutissent, les appels d'urgence à partir de vos bureaux, et comment savoir que tout est prêt.
Premiers pas
/BitVoice est un système téléphonique complet dans un seul programme : le commutateur que les téléphones s'y connectent, les menus et les files d'attente que les appelants parcourent, la messagerie vocale, l'enregistrement, les salles de conférence, les télécopies et les connexions aux entreprises de téléphonie. Tout est configuré dans le navigateur, sur les écrans décrits dans ce manuel. Il n'y a pas de fichier de configuration à éditer et rien d'autre à installer.
Ce dont vous avez besoin
- Un ordinateur pour l'exécuter : un petit serveur de bureau, une machine virtuelle, une instance dans le cloud ou, pour un premier aperçu, votre propre ordinateur portable. Linux, macOS et Windows fonctionnent tous. Un Raspberry Pi 4 fait tourner un petit bureau.
- Des téléphones : des téléphones de bureau de Yealink, Poly, Grandstream ou Snom sont configurés automatiquement ; tout autre téléphone SIP ou logiciel de téléphone fonctionne avec ses propres paramètres ; et chaque navigateur est un téléphone également.
- Un trunk (un compte avec une entreprise de téléphonie) pour appeler des numéros externes et être appelé. Vous pouvez commencer sans : les extensions s'appellent mutuellement et le test d'écho.
Le premier démarrage
Démarrez BitVoice et ouvrez l'adresse qu'il imprime (sur un ordinateur de bureau, il ouvre le navigateur lui-même). L'interface Web est HTTPS uniquement, sur cet ordinateur également. Jusqu'à ce que vous installiez un certificat personnel (Paramètres, Certificat), BitVoice utilise un certificat auto-généré, donc le navigateur avertit une fois : choisissez de continuer sur le site. L'assistant de configuration demande quatre choses : le nom et le pays de l'organisation, le mot de passe de l'administrateur, les premières extensions et votre entreprise de téléphonie si vous en avez une. Le pays détermine les numéros d'urgence, les tons que les appelants entendent et la façon dont les numéros de téléphone sont écrits.
La première heure
- Extensions : une par personne ou par poste. Chaque a un numéro et un mot de passe SIP. Ouvrir les extensions (chapitre 3)
- Téléphones : connectez un téléphone de bureau, un logiciel de téléphone ou le téléphone navigateur à chaque extension. Ouvrir les téléphones (chapitre 4)
- Trunk : votre compte d'entreprise de téléphonie, pour appeler des numéros externes et être appelé. Ouvrir les trunks (chapitre 7)
- Acheminement des appels : où les appels en provenance de l'extérieur vont (une personne, un groupe d'appel, un menu), et quel trunk les appels externes utilisent. Ouvrir l'acheminement des appels (chapitre 8)
- État de santé vous indique ce qui manque encore, les appels d'urgence en premier. Ouvrir l'état de santé (chapitre 13)
Ensuite, effectuez un appel de test : à partir de n'importe quel téléphone, composez *43, le test d'écho. Vous vous entendez vous-même, ce qui prouve que le son fonctionne dans les deux sens.
Installation en une seule commande
Sur un serveur Linux (Ubuntu, Debian, RHEL, Fedora, Alpine avec systemd) ou un Mac :
curl -fsSL https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.sh | sh
Sur Windows, dans PowerShell :
irm https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.ps1 | iex
Il télécharge la dernière version pour l'ordinateur, la vérifie contre les sommes de contrôle SHA-256 de la version et la signature de release de BioDream (avec OpenSSL 3, ou sinon avec ssh-keygen d'OpenSSH, que Windows 10 et 11, macOS et Ubuntu 20.04 possèdent ; ssh-keygen vérifie les versions à partir de la v0.1.14), et l'installe en tant que service qui se lance automatiquement :
- Linux :
/usr/local/bin/bitvoice, un utilisateur systèmebitvoice, des données dans/var/lib/bitvoice, le service systemdbitvoiceavec l'interface web sur le port 443. Lorsque ufw ou firewalld est activé, il ouvre les ports 443, SIP (5060, 5061) et les ports audio des appels (10000 à 20000 UDP). Il affiche l'adresse à ouvrir et le code de configuration que l'assistant demande à partir d'un autre ordinateur. - macOS : BitVoice dans votre dossier Applications (
~/Applications/BitVoice.app), lancé lors de votre connexion, l'interface web sur le port 8443, des données dans~/Library/Application Support/BitVoice(accessible uniquement pour vous) et des journaux dans~/Library/Logs/BitVoice(bitvoice.log, conservé sous 10 Mo). Ouvrez BitVoice à partir de Launchpad ou Spotlight pour accéder à l'interface web ; lorsqu'il a été arrêté, cela le relance. Il s'exécute souscaffeinate, afin que le Mac ne s'éteigne pas pendant l'exécution de BitVoice : un Mac endormi ne répond à aucun appel, et même ses courtes périodes de maintenance l'arrêtent pendant de nombreuses secondes. L'écran peut toujours s'éteindre. Exécuté manuellement, utilisezcaffeinate -i -s ./bitvoicepour le même résultat. Pour un Mac qui répond aux appels alors que personne n'est connecté, installez avecsudo(curl -fsSL https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.sh | sudo sh) : alors BitVoice est dans/Applications, se lance avec le Mac, s'exécute en tant qu'utilisateur caché (_bitvoice), sert l'interface web sur le port 443, conserve ses données dans/Library/Application Support/BitVoiceet ses journaux dans/Library/Logs/BitVoice, et le pare-feu du Mac, lorsqu'il est activé, le laisse accepter les connexions. Un des deux par Mac : l'installateur refuse l'autre tant que l'un est présent. Lorsque le pare-feu du Mac est activé, un BitVoice installé pour vous demande une fois s'il peut accepter les connexions entrantes : autorisez-le, afin que les téléphones puissent se connecter. Si quelque chose utilise déjà le port, l'installateur le nomme et s'arrête (choisissez-en un autre avecBITVOICE_HTTPS=:8444).sh install.sh --uninstall(avecsudopour le Mac lui-même) le supprime et conserve les données ;--purgesupprime également les données et les journaux. Essayé sur macOS 26 (Apple silicon), installé pour une personne : installé, signature vérifiée avec ssh-keygen du Mac, un deuxième démarrage sur les mêmes données refusé, revenu après que le programme ait été tué, redémarré à partir de l'application, mis à niveau sur place, un programme altéré refusé, un port en cours d'utilisation refusé, désinstallé en conservant les données, réinstallé sur celles-ci, et purgé sans laisser rien. L'installation pour l'ensemble du Mac (sudo) est essayée sur chaque modification sur les machines macOS de GitHub (Apple silicon) : s'exécutant en tant que_bitvoicesur le port 443, une installation utilisateur à côté refusée, revenu après que le programme ait été tué, mis à niveau, purgé sans laisser rien (l'utilisateur caché également). Les Mac Intel ne sont pas encore essayés. - Windows : en tant qu'administrateur,
C:\Program Files\BitVoice, lancé avec Windows, des données dansC:\ProgramData\BitVoice, et une règle de pare-feu pour les réseaux privés et de domaine ; sinon pour vous seul, lancé lors de votre connexion. Il fonctionne dans Windows PowerShell 5.1 (ce que Windows Server possède) et dans PowerShell 7, et dans 5.1 lancé à partir de l'intérieur de 7. BitVoice écrit son journal dansbitvoice.logdans le dossier de données (conservé sous 10 Mo, la partie la plus ancienne dansbitvoice.log.1), et l'installateur affiche le code de configuration que l'assistant demande à partir d'un autre ordinateur. Windows appelle un nouveau Wi-Fi ou réseau Public jusqu'à ce que vous le déclariez autrement, et la règle de pare-feu ne laisse rien entrer : pour un réseau domestique ou de bureau, l'installateur indique comment le rendre Privé (Paramètres, Réseau et Internet, les propriétés du réseau) ; pour un serveur cloud, il imprime la règle à ajouter (ouvrir également les ports dans le pare-feu du fournisseur). Installé en tant qu'administrateur, le dossier de données est lisible uniquement par les administrateurs (il contient la base de données et les clés), et le menu Démarrer de BitVoice ouvre l'interface web ; installé pour vous, le menu Démarrer lance BitVoice, ou l'ouvre lorsqu'il est déjà en cours d'exécution. De quelque manière que ce soit, il se trouve dans Paramètres, Applications, Applications installées, qui le supprime et demande si vous souhaitez supprimer ses données également. Essayé sur Windows 11 (en tant qu'administrateur et non) et sur Windows Server 2022 sur Amazon EC2 : installé, accessible depuis l'extérieur, relancé après un redémarrage. - Essayé sur : Ubuntu 24.04 et 20.04, Debian 12 et Fedora 42 (chacun avec systemd) : installé, signature vérifiée, un deuxième démarrage sur les mêmes données refusé, revenu après que le programme ait été tué, mis à niveau sur place, un programme altéré refusé, désinstallé en conservant les données, réinstallé sur celles-ci, et purgé sans laisser rien.
- Linux sur un serveur cloud : l'adresse qu'il affiche est l'adresse privée de la machine ; l'installateur le signale. Ouvrez le serveur par son adresse ou son nom public, avec les ports 443, SIP et les ports audio ouverts dans le pare-feu du fournisseur.
Exécutez la même commande à nouveau pour mettre à niveau (ou utilisez Mises à jour (chapitre 62)). sh -s -- --version v0.1.5 (après le tube) sélectionne une version ; --uninstall supprime le programme et le service et conserve les données, --purge supprime également les données. Sous Windows, enregistrez le script et exécutez .\install.ps1 -Version v0.1.5, -Uninstall ou -Purge, ou supprimez-le dans les applications installées. Pour un serveur non connecté à Internet, copiez l'archive de la version et SHA256SUMS dans un dossier et définissez BITVOICE_FROM sur celui-ci.
Où il s'exécute
BitVoice s'exécute sur Linux, macOS et Windows.
| Système | Comment l'exécuter | Où sont ses données |
|---|---|---|
| Linux | ./bitvoice (ou le service systemd dans la version) | ~/.config/BitVoice |
| macOS | ./bitvoice | ~/Library/Application Support/BitVoice |
| Windows | double-cliquez sur bitvoice.exe | %APPDATA%\BitVoice |
Sur Windows, conservez la fenêtre qu'il ouvre pendant que vous utilisez BitVoice (la fermer arrête BitVoice), et lorsque Windows demande s'il peut utiliser le réseau, autorisez les réseaux privés pour que les téléphones puissent se connecter. -data place les données ailleurs ; -https et -sip choisissent les adresses et les ports ; -log FILE écrit également tout ce qu'il imprime dans un fichier, pour un ordinateur où personne ne regarde sa fenêtre.
Les ports qu'il utilise
| Port | Pour quoi |
|---|---|
| 5060 UDP et TCP | SIP : téléphones et troncs |
| 5061 TCP | SIP sur TLS (signalisation chiffrée) |
| 4569 UDP | Troncs IAX2, uniquement une fois qu'un est configuré |
| 1720 TCP | Troncs H.323, uniquement une fois qu'un est configuré |
| 2000 TCP | Téléphones Skinny (SCCP), uniquement lorsqu'il est activé |
| 2727 UDP | Passerelles MGCP, uniquement lorsqu'il est activé |
| 10000–20000 UDP | Le son des appels (RTP), défini dans les Paramètres |
| 8443 TCP | Cette interface web, HTTPS uniquement (le HTTP simple vers celle-ci est acheminé vers HTTPS) |
Si un autre système téléphonique utilise déjà le port 5060, BitVoice prend le prochain port disponible et Santé le signale.
Tout dans l'interface web
Chaque paramètre a un écran, et chaque écran a un chapitre ici. Rien n'a besoin d'un fichier de configuration, d'une ligne de commande ou d'un outil secondaire. Pour l'automatisation, les mêmes écrans sont une API REST, et la configuration peut suivre un fichier dans Git (Configuration en tant que code (chapitre 69)), mais aucun n'est jamais requis.
Ce que BitVoice est
BitVoice est d'abord un système téléphonique pour les bureaux et les centres de contact, et un service téléphonique hébergé pour les fournisseurs : tout dans les cinq premières parties de ce manuel. Le profil de point de réponse 911, la console de dispatch radio et les services NG911 Core sont une piste de laboratoire et de partenaire de conception (Sécurité publique (chapitre 77)) : ils sont hors du menu jusqu'à ce qu'ils soient activés dans les Paramètres, et ne sont pas certifiés pour une utilisation en direct. Les appels d'urgence à partir de vos propres téléphones ne font pas partie de cette piste ; ils fonctionnent sur chaque système téléphonique dès le premier démarrage.
Trouver votre chemin
- Appuyez sur ⌘K (Ctrl+K) n'importe où pour sauter à un écran, ou tapez le nom ou le numéro d'une extension pour l'ouvrir.
- Sur un téléphone, le menu se trouve derrière le bouton ☰ en haut à gauche (et la recherche à côté, en haut à droite) ; choisir une page la ferme à nouveau.
- Chaque écran comporte un lien Aide en haut à droite qui ouvre son chapitre de ce manuel.
- Modifications conserve chaque version de la configuration : vous pouvez voir ce qui a changé et l'annuler.
- Trois thèmes (Minuit, Sombre et Clair) se trouvent au bas du menu.
Maturité de chaque partie
Jusqu'où chaque partie a été prouvée, clairement. Testé sur le terrain : exécuté contre des systèmes réels sur un réseau réel (Amazon EC2, Internet, services réels de fournisseurs). Vérifié contre une référence : testé contre une implémentation indépendante ou les propres données de la norme. Testé logiciel : les propres tests de BitVoice et les tests de navigateur uniquement, et non encore avec un équipement réel ou des comptes. Laboratoire : parties de sécurité publique, non certifiées.
| Zone | Maturité | Ce qu'il repose sur |
|---|---|---|
| Troncs SIP : enregistrement, appels entrants et sortants, identification de l'appelant, occupé, touches (RFC 4733) | Testé sur le terrain | un opérateur commercial, SIP.US (compte de démonstration, à partir d'EC2) : enregistrement et appels sortants vers le réseau téléphonique public sur UDP et sur TLS avec le certificat de l'opérateur vérifié ; MOS 4,39, aucune perte. Appels entrants du réseau téléphonique public : T38Fax (appels de télécopie à son numéro, enregistrement sur UDP). Asterisk en tant qu'opérateur à travers Internet sur EC2 ; MOS 4,4. Kamailio 5.7 (enregistrement avec signature de digest sur TLS, appels dans les deux sens, touches) et FreeSWITCH 1.11 (TLS et SRTP, appels dans les deux sens, G.722 à G.711) en tant que terminaison distante ; MOS 4,39 |
| Téléphones de bureau sur SIP | Testé sur le terrain | Asterisk en tant que téléphone de bureau à travers Internet. Les combinés Yealink, Poly ou Grandstream réels n'ont pas encore été testés |
| Téléphone navigateur (WebRTC) | Testé sur le terrain | à partir de l'extérieur vers EC2 ; tests Chromium avec son both ways |
| Deux serveurs, un PostgreSQL, basculement | Testé sur le terrain | kill -9 et arrêt planifié sur EC2 : l'appel se poursuit, la ligne du fournisseur se déplace |
| Installation en une commande | Testé sur le terrain | Ubuntu 24.04 (x86, Arm), Debian 12, Amazon Linux 2023, Windows Server 2022, Windows 11 (en tant qu'administrateur et non, dans PowerShell 5.1 et 7), Ubuntu 20.04 et Fedora 42 dans des conteneurs, macOS 26 sur Apple silicon (pour une personne, et avec sudo pour l'ensemble du Mac dans CI) ; revenir après un redémarrage |
| Capacité | Testé sur le terrain | 2 000 appels simultanés, aucune perte, MOS 4,41, sur un 16-vCPU c7i.4xlarge (environ 10 vCPUs occupés) ; 200 simultanés sur c7g.large, c7i.large, t4g.small, un M4 et les Lightsail nano. À 2 000 : jitter 4,0 ms pour 95 % des appels, plus grand écart entre les paquets 74 ms, plus longue pause de garbage collection 4,2 ms |
| Migration FreePBX (Importation) | Testé sur le terrain | une sauvegarde FreePBX 17.0.33 réelle (70 Mo) importée dans son ensemble ; d'autres à partir des formats propres à FreePBX |
| Transcriptions et résumés IA, réceptionniste | Testé sur le terrain | un modèle réel via OpenRouter |
| Faits et résumés sans modèle linguistique | Testé logiciel | appels 911 inventés uniquement : 23 faits sur 43 (53 %) sur l'ensemble scellé, 3 faits que personne n'attendait ; 41/41 formation, maintien 27/40 froid. Jamais mesuré sur des appels réels. |
| Reconnaissance vocale sur ce serveur (whisper) | Testé sur le terrain sur macOS et Linux | whisper-server 1.9.5 exécuté par BitVoice : sur un Mac, et sur Ubuntu sur EC2 (x86-64), où il a écrit les transcriptions d'appels et de messagerie vocale en direct dans le test de l'application téléphonique ; téléchargements pour chaque plate-forme construits et testés dans CI |
| Archivage vers S3, secrets à partir d'AWS Secrets Manager | Testé sur le terrain | compte AWS réel, notre propre SigV4 |
| Surveillance SNMP et pièges | Testé sur le terrain | snmpwalk et snmptrapd de net-snmp |
| Let's Encrypt | Testé sur le terrain | émet et renouvelle le certificat de la démonstration publique |
| Images de machine (AWS) et configuration en tant que code | Testé sur le terrain | une image EC2 construite par deploy/cloud/build-images.sh à partir d'Ubuntu 24.04 : chaque serveur à partir de celle-ci démarre nouveau ; deploy/terraform avec OpenTofu 1.13 (créer, modifier, aucun dérive, détruire). Les images Azure n'ont pas encore été testées |
| Troncs IAX2 | Vérifié contre une référence | Asterisk 23 |
| ICE complet derrière NAT (client STUN et TURN) | Vérifié contre une référence | agent ICE de Chromium (candidats hôte et relais uniquement), téléphones logiciels JsSIP avec l'offre BitVoice, coturn 4.18 et le serveur TURN propre à BitVoice en tant que relais, noms d'hôte mDNS de Chromium résolus. Pas encore testé à partir d'un serveur derrière un routeur NAT réel |
| Redémarrage ICE (un téléphone changeant de réseau en plein appel) | Vérifié contre une référence | Chromium redémarrant ICE sur un appel de téléphone navigateur (BitVoice en tant qu'ICE-lite et en tant qu'agent complet) et SIP.js 0.21 redémarrant par re-INVITE sur SIP sur WebSocket : nouvelles informations d'identification dans les deux sens, une nouvelle paire de candidats, son tous les demi-secondes pendant le redémarrage. Pas encore testé sur un téléphone réellement déplacé d'un réseau Wi-Fi à un réseau mobile |
| Historique SIP et Diversion (appels transférés) | Vérifié contre une référence | Asterisk 20's PJSIP dans les deux sens : les appels transférés d'Asterisk lus par BitVoice, et les transferts de BitVoice lus par la fonction REDIRECTING() d'Asterisk à partir des seuls informations d'historique et à partir de Diversion uniquement ; entrées RFC 7044 conservées et étendues lors d'un transfert. Pas encore testé avec un opérateur ou Teams les envoyant |
| Annuaire d'entreprise (LDAP, Active Directory) | Vérifié contre une référence | OpenLDAP 2.4 (StartTLS et LDAPS, 1 203 personnes lues via le paging au-delà de sa limite de 1 000, groupes, connexion) et Samba 4's Active Directory (LDAPS, paging au-delà de 1 000, comptes désactivés exclus, groupes imbriqués pour les groupes de sonnerie et les rôles). Pas encore testé contre le contrôleur de domaine Windows Server propre à Microsoft |
| ARI (Asterisk REST Interface) | Vérifié contre une référence | chaque opération de l'ARI publiée d'Asterisk appelée et sa réponse vérifiée contre les champs requis du modèle ; ari-client 2.2.0, bibliothèque JavaScript d'Asterisk, lisant /ari/api-docs et exécutant une application |
| Salles de vidéo pour tout le monde (SFU, simulcast) et partage d'écran | Vérifié contre une référence | Trois navigateurs Chromium dans une salle, chacun envoyant trois tailles (simulcast VP8) et recevant les deux autres ; tailles commutées aux clés lorsque les tuiles grandissent et diminuent. Caméras et un écran partagé (capture d'écran propre à Chromium) dans une salle H.264. Pas encore testé avec Firefox ou Safari, sur Internet, ou avec plus de trois caméras ; le simulcast H.264 sélectionne les couches par l'ordre du navigateur uniquement. |
| AGI et FastAGI (Asterisk Gateway Interface) | Vérifié contre une référence | chaque commande répondue comparée avec Asterisk 20.6 sur FastAGI ; un serveur FastAGI écrit avec pyst2 exécutant un appel ; audio EAGI à un programme. Pas encore testé avec un IVR de production |
| Assistants IA via MCP | Vérifié contre une référence | le SDK MCP TypeScript officiel (1.32.2) en tant que client : outils répertoriés et appelés avec un jeton d'API sur HTTP Streamable (protocole 2025-11-25), et son OAuth de connexion de bout en bout (découverte, inscription, PKCE, jeton, actualisation) ; la page de consentement dans Chromium ; le pont stdio contre un serveur de test. Pas encore testé avec Claude, ChatGPT ou un autre assistant lui-même, qui nécessite un serveur accessible depuis Internet avec un certificat de confiance. |
| Microsoft 365 et Google Workspace (contacts et calendriers) | Testé logiciel | contre des substituts de Microsoft Graph (utilisateurs, contacts d'organisation, calendrier getSchedule, jeton client-credentials) et de l'API People de Google, Calendar freeBusy et jeton JWT-bearer, écrits à partir de leurs spécifications publiées ; les substituts vérifient ce que BitVoice envoie (la signature et les revendications JWT, le paging, les corps de demande). Pas encore testé avec un locataire Microsoft 365 réel ou un domaine Google Workspace. |
| Les écrans dans 14 langues | Testé logiciel | chaque pièce de texte que les écrans affichent (environ 5 000, à partir du code : texte JSX, chaînes et messages du serveur) traduits automatiquement par Llama 3.3 70B dans 13 langues, 99 % conservés par les vérifications (les mêmes espaces réservés, adresses et codes intouchés) ; allemand dessiné via les tests de navigateur (connexion, menu, recherche, un formulaire, retour à l'anglais). Pas encore examiné par une personne dans aucune langue. |
| Troncs H.323 | Vérifié contre une référence | H323Plus 1.28 (son simph323 jouant et enregistrant des fichiers WAV) sur EC2 : appels dans les deux sens avec Fast Connect et G.711, chaque extrémité entendant le ton de l'autre, MOS 4,39 ; configuration de l'appel également avec chan_ooh323 d'Asterisk (dont le son propre est cassé dans Asterisk 22) |
| SIP sur WebSocket | Vérifié contre une référence | JsSIP et SIP.js |
| Codecs : GSM, G.726, iLBC, MP3 de musique d'attente | Vérifié contre une référence | ffmpeg, le programme de référence RFC 3951 et minimp3, échantillon pour échantillon |
| Codecs : G.711, G.722, G.729, Opus, Speex | Vérifié contre une référence | G.711 et G.722 octet pour octet et échantillon pour échantillon avec spandsp ; G.729 décodeur échantillon pour échantillon sur les sept vecteurs de test Annex A d'ITU (bcg729 n'est pas), son encodeur fonctionnant avec bcg729 à la même qualité (G.729 n'exige pas que les encodeurs correspondent) ; paquets Opus décodés par libopus 1.6.1 et paquets libopus décodés comme le fait libopus ; paquets Speex et son identiques à libspeex 1.2.1 ; appels Opus avec l'application Android |
| Codecs : AMR-NB, AMR-WB | Vérifié contre une référence, avec un écart connu | AMR-WB décode comme opencore-amr échantillon pour échantillon, et sur les séquences de test TS 26.174 de 3GPP correspond exactement à 167 sur 198 et n'est jamais mesurément inférieur ; l'encodeur AMR-NB cadre pour cadre avec opencore-amr, mais son décodeur est proche, pas exact (environ 31 dB à partir d'opencore). Les deux proviennent des bibliothèques goamr épinglées |
| Codecs transportés sans modification : G.722.1 (Siren 7), G.722.1C (Siren 14), G.719, Codec2 | Testé logiciel | nos propres tests : offerts avec leur débit binaire ou leur mode, répondu, paquets dans les deux sens octet pour octet ; non convertis (aucun code de référence gratuit que BitVoice puisse expédier pour G.722.1 et G.719). Pas encore testé avec un système de conférence ou un système de salle réel. |
| ISDN PRI et BRI, T1/E1 | Vérifié contre une référence | libpri (Asterisk's), les deux côtés ; et sur EC2 via le pilote noyau DAHDI 3.4 réel (deux spans connectés dans le noyau, chan_dahdi d'Asterisk 20 en tant que société de téléphone) : appels dans les deux sens avec des numéros et des noms, tous les 23 canaux à la fois, MOS 4,39. Aucune carte ou ligne physique encore |
| MFC-R2, E&M | Vérifié contre une référence | OpenR2 ; tons MF par nos propres tests. Aucune carte ou ligne réelle encore |
| SS7 (ISUP, MTP, jeux de liens de plusieurs liens avec changement) | Vérifié contre une référence | libss7 (bibliothèque chan_dahdi d'Asterisk), ITU et ANSI. Aucun lien de transporteur réel encore |
| Télécopie (T.30, T.38) | Testé sur le terrain | un transporteur de télécopie, T38Fax (essai gratuit, à partir d'EC2) : BitVoice envoie une télécopie sur le réseau téléphonique public à son propre numéro et la reçoit, les deux sur T.38 (2 pages, 14 400 bit/s, les pages sont arrivées intactes ; enregistrement avec nom d'utilisateur et mot de passe) ; et en passant une télécopie entre une machine de télécopie sur un passerelle (Asterisk avec spandsp, faisant office d'une) et T38Fax, aller et retour, 2 pages à 14 400 bit/s dans les deux sens : une fois sur G.711 (la passerelle refusant T.38) et une fois commuté sur T.38 des deux côtés. spandsp (via Asterisk 20) sur EC2 : réception et envoi sur T.38 avec correction d'erreur, et passage de télécopies entre deux autres machines sur T.38 et sur G.711. Aucun passerelle de télécopie matériel encore, et T38Fax n'a jamais demandé T.38 lui-même, donc un commutateur de transporteur refusé par la passerelle n'a pas été vu |
| Provisioning : Yealink, Poly, Grandstream, Snom, Fanvil, Cisco, Mitel, Sangoma, Algo, CyberData | Testé logiciel | les formats documentés des fournisseurs ; pas sur des combinés réels |
| Téléphones Skinny (SCCP) et passerelles MGCP | Vérifié contre une référence | Skinny : téléphones à partir de la bibliothèque mwicat/sccp open-source, chaque message lu par le dissecteur Wireshark, tailles comme chan_skinny d'Asterisk ; MGCP : passerelle MGCP de Yate (redémarrage, réponses provisoires, accusés de réception ; elle n'a pas de ports analogiques, donc pas d'appel). Aucun matériel de téléphone ou de passerelle Cisco encore |
| Microsoft Teams Direct Routing | Testé logiciel | contre un proxy Microsoft simulé suivant les règles SIP de routage direct publiées par Microsoft (OPTIONS, Contact, user=phone, certificat client, transferts Teams demande par REFER avec x-m et x-t) ; aucun locataire Teams encore : Microsoft n'en propose pas gratuitement (licences Teams Phone) |
| Hôtel (FIAS) | Vérifié contre une référence | chaque enregistrement que BitVoice envoie vérifié contre la spécification FIAS 2.20.23 publiée par Oracle (démarrage de lien, enregistrements de lien, publications, réponses de réveil) ; nos propres tests. Pas encore contre Opera lui-même |
| Texte, WhatsApp, Messenger, chat Web | Vérifié contre une référence (Twilio, Telnyx, Bandwidth, Vonage, TextMagic, WhatsApp) | textes via Twilio, Telnyx, Bandwidth, Vonage et TextMagic, et textes WhatsApp, modèles et listes de modèles, contre des mocks construits à partir des spécifications OpenAPI publiées des fournisseurs (Stoplight Prism, refusant tout ce que la spécification n'autorise pas ; la spécification de TextMagic est celle à partir de laquelle son client est généré). Vonage a montré que la clé appartient à HTTP Basic, et non plus au formulaire. SignalWire parle l'API de Twilio ; Plivo, Flowroute, VoIP.ms et Messenger publient pas de spécification et sont vérifiés contre des substituts écrits à partir de leur documentation. Aucun compte en direct encore |
| Cartes d'appelants CRM, Azure Blob, Azure Key Vault | Vérifié contre une référence | EspoCRM (un CRM open-source réel, dans Docker) pour les cartes d'appelants ; émulateur Azurite de Microsoft pour les téléchargements de Blob (SAS de conteneur, refus) ; Lowkey Vault pour Key Vault avec une identité gérée. Pas encore contre Azure lui-même ou un CRM hébergé |
| Détection de spam : test robot, appelants inconnus, base de données de spam, *32, suggestions | Testé logiciel | les propres tests de BitVoice : un fournisseur appelant via SIP et enfonçant des touches (RFC 4733) au test robot, passant et échouant à celui-ci ; appelants connus, toujours autorisés et rappel d'urgence sonnant en même temps ; la base de données de spam contre un substitut qui répond de la manière documentée par Twilio pour sa Lookup avec l'add-on Nomorobo (aucun compte Twilio encore) ; *32 à partir d'un téléphone de bureau ; suggestions à partir des enregistrements d'appel ; les paramètres via les tests de navigateur. Pas encore testé contre des appels de robotels réels ou une base de données payante |
| Applications iPhone et Android | Testé sur le terrain (Android) | Android : un Google Pixel 8 (Android 16, Wi-Fi) avec la version de publication signée contre BitVoice sur EC2 avec un certificat Let's Encrypt : apparié par lien, sonné avec la notification d'appel Android, répondu à partir de celle-ci, audio dans les deux sens, resté connecté avec l'écran éteint et en arrière-plan (sa notification d'appel en cours, Hang up) ; sans push, il ne sonne pas en arrière-plan. Un Google Pixel 11 (Android 17) dans AWS Device Farm : apparié, sonné, répondu, appelé ; Opus, MOS 4,1. iPhone : l'application (SwiftUI, CallKit, PushKit VoIP) se compile contre le SDK actuel (Xcode 27) et le serveur signe les pushes VoIP d'Apple (APNs, ES256) ; les mêmes corrections de périphérique réel que pour Android et une liste App Store (ios/AppStore) sont présentes. Les deux applications sont une extension complète : transfert (aveugle, via REFER), maintien et deuxième appel, clavier et mute, avec Récents, messagerie vocale visuelle (avec transcriptions), une lampe de signalisation d'équipe occupée, Contacts, le chat d'équipe (collègues avec présence, messages directs et salles, avec une notification en arrière-plan et une push lorsque l'application est fermée), un sélecteur de salle de vidéo (listes les salles SFU avec qui est dans chacune, rejoint en tant qu'extension, affiché comme un appel vidéo sur l'écran d'appel téléphonique) et une transcription IA en direct sur l'appel (AI.LiveCallTranscripts) ; transfert, maintien, la transcription en direct, le chat rejoignant un collègue, la liste de salles, une salle rejointe par un téléphone et la forme de la push de la salle sont chacun couverts par un test de moteur, d'API ou de navigateur. Sur le Pixel 8 (2026-10-30, build de débogage, EC2 avec Let's Encrypt) : sonné et répondu à partir de la notification, mis en attente et repris (l'état d'appel Android suit), appelé à partir du système d'appel Android, Opus dans les deux sens avec MOS 4,38 et aucune perte ; rejoint une salle de vidéo avec sa caméra (demandée à la première utilisation) et vu une caméra de bureau, les deux en direct ; un message de chat en arrière-plan averti et ouvert Chat. Maintien et transfert atteignent l'écran d'appel natif (CallKit, Telecom). Pas encore exécuté sur un iPhone ou soumis : push, l'écran d'appel du système et la signature nécessitent notre propre compte développeur Apple |
| Profil 911, console radio, services NG911 Core, vidéo de l'appelant | Lab | schémas et données d'exemple de NENA, Wireshark, spandsp, OpenSSL, ExifTool, ffmpeg, une capture P25 de NIST (ses cadres de voix IMBE dépaquetés comme mbelib les dépaquette : même hauteur, harmoniques, voix et amplitudes) ; jamais sur un ESInet, un système P25 ou un PSAP CAD en direct, et non certifié |
| Voix P25 Phase 2 à débit réduit (AMBE+2) | Non proposé | breveté jusqu'en 2028 |
| Signatures Ed448 (NENA) | Non proposé | non dans la bibliothèque standard de Go, et BitVoice n'écrit pas sa propre cryptographie ; Ed25519 est utilisé |
| Transfert de signal SS7 (STP), SCCP et TCAP | Vérifié contre une référence | OsmoSTP 2.3.0 sur M3UA/TCP avec libosmo-sigtran's SCCP echo user derrière lui : UDT et XUDT dans les deux sens, UDTS retournés, traduction de titre global via l'STP, un commutateur sur un jeu de liens rejoignant l'écho via IP ; TCAP contre libosmo-asn1-tcap dans les deux sens. ITU uniquement ; aucun SCTP, SCCP orienté connexion ou gestion SCCP ; aucun opérateur réel encore |
| Variante MFC-R2 Chine (Chine n° 1) | Testé logiciel | chaque signal d'un appel vérifié contre les tables et les séquences d'appel publiées par Cisco pour la Chine (KA, KD, Groupe B par le KD envoyé, C et D bits 11). La variante Chine d'OpenR2 est en désaccord avec elle-même, donc aucun programme pour le tester ; aucune ligne réelle encore |
| ALI sur PAM ou E2 | Non proposé | PAM est le protocole propre à Intrado avec aucune spécification publiée ; E2 (J-STD-036, NENA 05-001) s'exécute entre un centre de positionnement mobile et la base de données ALI, et non vers un PSAP. BitVoice parle les liens de requête et de texte ALI et HELD à la place |
Extensions
/extensionsUne extension est un numéro pour une personne ou un poste. Les téléphones s'authentifient avec le numéro d'extension et son mot de passe SIP ; les appels au numéro sonnent sur tous les téléphones authentifiés en tant que celui-ci, en même temps.
Ajout d'une extension
- Ouvrez Extensions (chapitre 3) et appuyez sur Ajouter une extension. Le prochain numéro disponible et un mot de passe SIP fort sont remplis.
- Entrez le nom de la personne (affiché sur d'autres téléphones lorsqu'ils appellent) et l'adresse e-mail (pour la messagerie vocale par e-mail).
- Remplissez l'emplacement 911 : le site, l'étage et la pièce. Il est envoyé avec les appels d'urgence.
- Choisissez ce qui se passe Si personne ne répond : messagerie vocale par défaut, ou une autre extension, un groupe ou un menu.
- Enregistrez. L'extension peut s'authentifier immédiatement.
Les champs
| Champ | Fonction |
|---|---|
| Numéro | 2 à 8 chiffres ; aucun autre poste, groupe, file d'attente, pièce ou code de fonction ne peut l'avoir |
| Mot de passe SIP | ce avec quoi le téléphone s'authentifie ; au moins 12 caractères ; Générer en crée un nouveau |
| Sonnerie pour | secondes avant que Si personne ne répond ne se produise (25 par défaut) |
| Identifiant de l'appelant externe | le numéro affiché sur les appels sortants ; vide utilise celui du trunk |
| Peut appeler des numéros externes | désactivé limite le téléphone aux appels internes et aux numéros d'urgence |
| Enregistrer les appels | lorsque les paramètres n'enregistrent que les extensions sélectionnées |
| Poste partagé | un téléphone partagé qui devient celui qui s'authentifie à ce poste |
| Chiffrer les appels vers ce téléphone | chiffrement des médias (SRTP) ; utilisez-le avec TLS pour que les clés restent privées |
| Département | regroupe les coûts d'appel de cette extension |
Suivi, prise et interphone
La gestion des appels de chaque personne est dans sa propre boîte sur l'extension :
- Suivi fait sonner d'autres numéros lorsque les téléphones ici ne sont pas répondu : un mobile, un autre poste. Ils sonnent les uns après les autres, ou tous ensemble, pendant leur propre temps de sonnerie. Avec Les numéros externes appuyent sur 1 pour prendre l'appel activé, la personne qui répond sur un mobile appuie d'abord sur 1, afin que la messagerie vocale du mobile ne prenne jamais l'appel. Voir Codes de fonction (chapitre 32).
- Groupe de prise : n'importe qui dans le même groupe répond aux appels qui sonnent de cette extension en composant
*8. - Autoriser l'interphone :
*80et ce numéro répond sur le haut-parleur tout seul. Éteignez-le pour les personnes qui ne veulent jamais cela. - Raccourcis personnels : codes courts pour cette personne uniquement, composés après
*0.
Transfert en cours
En dessous des paramètres, Transfert en cours affiche et modifie ce que la personne a défini à partir de son téléphone ou du portail du personnel : ne pas déranger, et transfert de chaque appel, des appels occupés, et des appels non répondu. Ce sont des états en direct, et non une configuration : les modifier ne crée pas de révision.
Ce qui est connecté
- Téléphone : un téléphone de bureau, un logiciel de téléphone ou une application.
- Poste d'interphone : un interphone à une porte. La personne qui répond appuie sur le code, ou Ouvrir la porte sur les appels en direct. Avec une adresse de contrôleur de porte, BitVoice appelle cette adresse (2N, Axis, Akuvox, cartes de relais) ; sans celle-ci, le code est envoyé à la station, qui ouvre la porte elle-même.
- Haut-parleur de plafond : les appels vers celui-ci sont répondu immédiatement et entendus sur le haut-parleur.
- Port d'adaptateur analogique : un vieux téléphone, un télécopieur ou un panneau d'alarme sur un adaptateur. Les appels utilisent uniquement G.711, qui est nécessaire pour les télécopieurs.
Appareils connectés
Une extension ouverte affiche chaque appareil connecté en tant que celle-ci : la marque et le modèle du téléphone, la façon dont il se connecte (UDP, TCP, TLS ou le navigateur) et depuis quand. L'adresse et le port à donner à un téléphone sont affichés là également.
Connexion des téléphones
/phonesTout téléphone ou application SIP fonctionne : pointez-le vers l'adresse et le port 5060 de ce serveur, avec le numéro d'extension en tant qu'utilisateur et son mot de passe SIP. Les téléphones de bureau des quatre grands fabricants sont configurés automatiquement à la place, de sorte que personne ne tape de mot de passe dans le clavier du téléphone.
Configuration automatique (provisioning)
- Sur Téléphones (chapitre 4) appuyez sur Ajouter un téléphone et entrez l'adresse MAC du téléphone (sur une étiquette en dessous) et l'extension à laquelle il appartient.
- Choisissez la marque : Yealink, Poly, Grandstream (y compris les adaptateurs analogiques HT), Snom, Fanvil, Cisco, Mitel, Sangoma, Algo ou CyberData.
- Indiquez au téléphone où se trouve BitVoice : dans votre serveur DHCP, définissez l'option 66 sur l'adresse de configuration affichée à l'écran, afin que chaque téléphone du réseau la trouve automatiquement ; ou entrez la même adresse sur la page Web du téléphone, sous configuration automatique.
- Redémarrez le téléphone. Il récupère son fichier sur HTTPS, se connecte et ses touches de ligne affichent qui est sur le téléphone.
HTTPS ou HTTP simple. Les téléphones récupèrent leur fichier via HTTPS lorsqu'ils le peuvent. Certains anciens téléphones ne peuvent pas utiliser HTTPS du tout, et de nombreux ne font pas confiance au certificat auto-généré par BitVoice ; pour ceux-ci, l'écran affiche également une adresse http:// simple sur le même port. L'HTTP simple n'est utilisé que pour ces fichiers : toutes les autres pages vont toujours vers HTTPS. Sur HTTP simple, le mot de passe SIP du téléphone traverse le réseau non chiffré, donc limitez-le à un réseau de bureau de confiance, ou installez un certificat d'une autorité et activez HTTPS uniquement pour les téléphones.
Le fichier contient l'extension, son mot de passe, le fuseau horaire, les codecs, les touches de lampe occupée et l'adresse de ce serveur. L'approvisionnement est protégé par un nom d'utilisateur et un mot de passe que les téléphones reçoivent une fois.
| Fabricant | Modèles testés | Ce qu'il obtient |
|---|---|---|
| Yealink | T3x, T4x, T5x | compte, touches BLF, heure, codecs |
| Poly | VVX, Edge E | les mêmes, au format propre à Poly |
| Grandstream | GRP, GXP, HT802/814 | compte par port sur les adaptateurs |
| Snom | D7xx | compte, touches, heure |
Ces fabricants sont également approvisionnés, avec des fichiers écrits à partir du format documenté de chaque fabricant, mais pas encore testés sur leurs appareils (l'écran Téléphones les marque comme non testés) :
| Marque | Modèles | Fichier que l'appareil demande |
|---|---|---|
| Fanvil | Série X et V | son adresse MAC .cfg |
| Cisco | 6800, 7800, 8800 multiplateforme (3PCC), adaptateurs SPA | son adresse MAC .xml (le micrologiciel d'entreprise nécessite d'abord le micrologiciel multiplateforme) |
| Mitel (Aastra) | 6800, 6900 SIP | son adresse MAC .cfg, en majuscules |
| Sangoma | Série S | le fichier au format Fanvil |
| Algo | haut-parleurs de sonorisation, sirènes, adaptateurs | algop et son adresse MAC .conf |
| CyberData | haut-parleurs, interphones, adaptateurs de sonorisation | son adresse MAC .xml |
Chacun reçoit son compte, le serveur (et le serveur de sauvegarde, avec plusieurs serveurs), le transport et le chiffrement, ainsi que le numéro de messagerie vocale s'il en a un. Définissez les extensions des haut-parleurs Algo et CyberData sur Haut-parleur de sonorisation afin que les appels vers eux soient répondu immédiatement.
Téléphones sans configuration
Les téléphones logiciels et d'autres marques nécessitent les mêmes trois éléments : serveur (l'adresse de cet ordinateur, port 5060 ou 5061 avec TLS), utilisateur (le numéro d'extension) et mot de passe (le mot de passe SIP). La liste de santé affiche les téléphones qui ont tenté un mot de passe incorrect ; après quelques tentatives, l'adresse est interdite pendant un certain temps (voir Sécurité (chapitre 60)).
Le téléphone navigateur
L'icône de téléphone en bas de chaque écran rend ce navigateur un téléphone pour une extension, avec votre microphone et vos haut-parleurs. Il utilise WebRTC : le son est chiffré de bout en bout, et il fonctionne à travers la plupart des pare-feu sans aucun réglage.
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 (chapitre 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.
Le WebSocket n'a pas besoin de connexion propre : le téléphone logiciel se connecte avec SIP, et les connexions échouées et les demandes excessives sont comptabilisées pour son adresse propre, comme pour n'importe quel téléphone. Une page de téléphone logiciel servie à partir d'un autre site doit faire confiance au certificat de ce serveur (utilisez Let's Encrypt), et Chrome actuel demande à l'utilisateur avant qu'une page Web publique puisse atteindre un serveur sur le réseau local.
Testé avec deux bibliothèques indépendantes, JsSIP 3.13 et SIP.js 0.21 : deux téléphones logiciels de chacun s'enregistrent, s'appellent et s'entendent les uns les autres via BitVoice. D'autres téléphones logiciels (client Web de Linphone, Zoiper) parlent le même protocole mais n'ont pas été testés.
TURN, pour les réseaux qui bloquent UDP
Certains réseaux (hôtels, Wi-Fi invité, pare-feu d'entreprise strict) n'autorisent pas l'UDP ou cachent les ordinateurs derrière des NAT que WebRTC ne peut pas traverser. Pour ceux-ci, activez Serveur TURN dans Paramètres (chapitre 14) : BitVoice exécute alors son propre serveur TURN (RFC 8656) sur le port 3478 (UDP et TCP) et, avec le certificat de ce serveur, sur le port 5349 sur TLS. Les téléphones navigateur, le téléphone du personnel et les liens d'appel reçoivent des informations d'identification à court terme pour celui-ci et l'utilisent lorsqu'ils ne peuvent pas atteindre les ports multimédias directement ; le son est toujours chiffré de bout en bout, et BitVoice le relaie uniquement à ses propres adresses, afin que personne ne puisse l'utiliser pour atteindre autre chose.
Ouvrez le port TURN, le port TLS et les ports de relais (49152 à 49407, sauf si vous les modifiez) dans le pare-feu. TURN sur TLS nécessite un certificat que les navigateurs font confiance pour le nom qu'ils utilisent, comme celui de Let's Encrypt (chapitre 14) : jusqu'à ce qu'il y en ait un, BitVoice ne l'offre pas aux navigateurs (ils essaieraient, échoueraient et attendraient), et l'offre dès que le certificat arrive ; définissez son port sur 443 sur un serveur avec une adresse de rechange pour traverser les pare-feu qui n'autorisent que HTTPS.
Changement de réseau pendant un appel
Un téléphone qui passe à un autre réseau pendant un appel (depuis le Wi-Fi du bureau vers un réseau mobile, ou un ordinateur portable d'un Wi-Fi à un autre) obtient une nouvelle adresse, et l'ancien chemin cesse de transmettre le son. Les téléphones navigateur et les applications BitVoice le détectent automatiquement : lorsque le navigateur indique que son réseau a changé, ou que le chemin de l'appel cesse de répondre pendant deux secondes, le téléphone redémarre ICE (RFC 8445 9). Il propose de nouvelles informations d'identification ICE pour l'appel en cours, BitVoice répond avec de nouvelles informations d'identification et vérifie le nouveau chemin, et l'appel est déplacé vers celui-ci sans être redialé. Le cryptage continue avec les mêmes clés. Pendant ce processus, l'appel affiche Rétablissement de la connexion... ; sur un chemin qui fonctionne toujours, il n'y a pas d'interruption, car l'ancien chemin transmet l'appel jusqu'à ce que le son soit transmis sur le nouveau. Les téléphones SIP sur WebSocket (JsSIP, SIP.js) font de même en utilisant une nouvelle invitation avec de nouvelles informations d'identification ICE. Rien ne nécessite d'être activé, avec BitVoice en tant qu'ICE-lite ou derrière un NAT.
BitVoice derrière un NAT
Le serveur TURN ci-dessus aide les navigateurs sur des réseaux stricts à atteindre un BitVoice qui a une adresse publique. Lorsque BitVoice lui-même n'en a pas (dans un bureau derrière un routeur sans transfert de port, ou dans un réseau cloud sans adresse publique sur la machine), activez Ce serveur est derrière un NAT sous BitVoice derrière un NAT dans Paramètres (chapitre 14). BitVoice participe alors pleinement à ICE (RFC 8445) au lieu de répondre à une seule adresse (ICE-lite) :
- Il propose aux navigateurs ses propres adresses, son adresse publique telle que les serveurs STUN la voient, et les relais sur les serveurs TURN auxquels il s'inscrit (UDP ; un nom d'utilisateur et un mot de passe chacun), et vérifie chaque paire d'adresses avec le navigateur, comme le navigateur le fait.
- Relayer chaque appel via TURN envoie tous les médias du navigateur via les serveurs TURN, pour les réseaux qui l'exigent.
- Trouver mes adresses demande aux serveurs comme un appel le ferait et liste ce que BitVoice proposera : ses propres adresses, l'adresse publique vue via STUN (un serveur STUN qui ne répond pas est indiqué comme tel), et ses relais.
- Il fonctionne pour le téléphone navigateur, les liens d'appel, le test d'écho et les téléphones SIP sur WebSocket, dans les deux rôles : BitVoice répond à une offre de navigateur, et propose à un téléphone logiciel qu'il sonne. Les navigateurs qui cachent leurs adresses derrière des noms mDNS (
name.local) sont résolus sur le réseau local, et l'adresse du navigateur telle que le serveur Web la voit est laissée passer les relais dès le départ. - Désactivé par défaut ; il ajoute un moment à chaque appel pendant que les serveurs répondent (au maximum une demi-seconde). La vidéo de l'appelant utilise ICE-lite dans les deux cas.
Le téléphone du personnel
Ouvrez #/phone sur n'importe quel navigateur de bureau ou mobile : les personnes se connectent avec leur extension et leur mot de passe SIP, sans compte administrateur. C'est un téléphone complet : composer, répondre, mettre en attente, transférer et le clavier. Pour leur propre transfert et messagerie vocale, ils utilisent le portail du personnel à #/me (voir Le portail du personnel (chapitre 33)).
Les applications mobiles
Les applications BitVoice pour iPhone et Android sont associées à partir de la page de l'extension avec un code QR. Les appels réveillent l'application via les services de notification push d'Apple et de Google, afin qu'elle sonne même lorsqu'elle est fermée (une fois la notification push configurée ; voir ci-dessous).
Téléphones Skinny et passerelles MGCP
/desk-phonesLes téléphones et les passerelles qui ne parlent pas SIP peuvent toujours être utilisés. Téléphones Skinny et passerelles MGCP (sous Appels) prend en charge deux anciens protocoles :
- Skinny (SCCP) : téléphones de bureau Cisco exécutant le firmware SCCP (79xx, 69xx, 89xx). Ajoutez chaque téléphone par son adresse MAC et choisissez son extension ; activez Accepter les téléphones Skinny et pointez le téléphone vers BitVoice (port TCP 2000) dans son fichier de paramètres TFTP ou son menu.
- MGCP (RFC 3435) : passerelles dont les ports sont actionnés un par un par BitVoice, comme les adaptateurs de téléphone analogique et les cartes de ligne. Ajoutez la passerelle par le nom de domaine qu'elle utilise dans ses noms de points de terminaison (aaln/1@name), son adresse, et l'extension de chaque ligne ; définissez l'agent d'appel de la passerelle sur BitVoice (port UDP 2727).
Chaque téléphone Skinny ou ligne MGCP est un appareil supplémentaire de son extension : il sonne avec les autres téléphones de l'extension, effectue des appels sortants en tant qu'extension, et s'affiche dans les appareils de l'extension. La page affiche l'état de chacun.
Fonctionnalités
- Skinny : enregistrement, la ligne et son numéro sur l'écran, tonalité, composition du numéro (le numéro est composé après une pause ou #, ou immédiatement à partir du clavier du téléphone lorsqu'il est soulevé après la composition), tonalité de rappel, sonnerie avec identifiant de l'appelant, réponse et fin d'appel par combiné, haut-parleur ou touches soft (NewCall, Redial, Answer, EndCall), tonalités d'occupation et de réordonnancement.
- MGCP : tonalité, chiffres collectés par la passerelle avec une carte de chiffres, sonnerie avec identifiant de l'appelant (sonne sans lorsqu'il est refusé par la passerelle), tonalité de rappel, tonalités d'occupation et de réordonnancement, et la connexion audio (CRCX, DLCX). Une passerelle qui redémarre (RSIP) a ses ports configurés à nouveau.
- L'audio est G.711 µ-law sur les deux ; BitVoice convertit en ce que l'autre partie utilise.
La mise en attente, le transfert et la conférence sont effectués pour l'instant à partir des autres téléphones de l'extension, et la deuxième ligne d'un téléphone Skinny n'est pas utilisée.
Sécurité
Aucun des deux protocoles n'a de mots de passe. Les téléphones Skinny ne sont acceptés que depuis le réseau local et uniquement lorsqu'ils sont répertoriés ; les commandes MGCP ne sont exécutées que depuis l'adresse de la passerelle (ou, sans adresse, depuis le réseau local). Gardez les deux ports hors d'Internet.
Une passerelle qui traite encore une commande peut répondre d'abord « 100 Trying » : BitVoice attend alors plus longtemps avant d'envoyer à nouveau la commande et d'acquitter la réponse finale (000), comme le demande la RFC 3435. Un port que la passerelle ne surveillera pas affiche le refus propre de la passerelle sur la page, comme la passerelle a refusé de surveiller le port : 507 Fonctionnalité non prise en charge provenant d'une passerelle de médias sans ports analogiques.
Comment ils sont testés
- Skinny : deux téléphones construits à partir d'une implémentation Skinny distincte (la bibliothèque mwicat/sccp open-source) s'enregistrent, s'appellent mutuellement, répondent et raccrochent ; un téléphone non répertorié est refusé. Le désassembleur Skinny de Wireshark lit chaque message que BitVoice envoie sans erreur, et les messages ont des tailles complètes que chan_skinny d'Asterisk envoie aux téléphones Cisco.
- MGCP : contre la passerelle MGCP de Yate (redémarrage, réponses provisoires, accusés de réception, refus) et la passerelle de test propre à BitVoice pour les appels complets. La passerelle de Yate n'a pas de ports analogiques, donc aucun appel n'a été effectué à travers elle.
Cartes de téléphonie
/cardsUne carte de téléphonie dans l'ordinateur BitVoice (Digium, Sangoma, OpenVox et d'autres cartes avec des pilotes DAHDI Linux) peut transporter des téléphones analogiques et des lignes de société de téléphone. Un programme séparé, bitvoice-dahdi, pilote la carte et joint ses ports à BitVoice via la connexion réseau de l'ordinateur, de sorte que BitVoice lui-même ne touche jamais le pilote du noyau et qu'un problème de carte ne peut pas arrêter le système téléphonique.
Configuration
- Installez les pilotes DAHDI et configurez les ports comme d'habitude dans /etc/dahdi/system.conf (
fxoks=1-4pour les ports avec des téléphones,fxsks=5-8pour les ports avec des lignes, et les tons du pays dansloadzoneetdefaultzone), puis exécutezdahdi_cfg. - Dans Cartes de téléphonie (sous Appels), activez Utiliser les cartes de téléphonie. Un jeton est créé ; copiez-le dans un fichier que seul le root peut lire, comme /etc/bitvoice/cards.token.
- Ajoutez chaque port par son numéro de canal DAHDI : un port téléphone (FXS, un téléphone, un télécopieur ou un téléphone de porte connecté) avec son extension, ou un port ligne (FXO, une ligne de société de téléphone) avec le numéro de la ligne. Choisissez A-law pour l'Europe et la plupart du monde, µ-law pour l'Amérique du Nord et le Japon.
- Pour les lignes, ajoutez une jonction avec le protocole Lignes de cartes de téléphonie sur les jonctions, et acheminez les numéros vers elle comme vers n'importe quelle jonction ; les routes d'entrée correspondent à chaque numéro de ligne.
- Démarrez
bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.tokenen tant qu'utilisateur de service qui peut ouvrir /dev/dahdi. Il se trouve dans le téléchargement Linux à côté de bitvoice. La page affiche si cela fonctionne et l'état de chaque port ; les modifications sont apportées dans les dix secondes. Un canal que détient toujours un autre programme (ou que dahdi_cfg n'a pas encore configuré) est réessayé toutes les deux secondes, donc l'ordre dans lequel les choses commencent n'a pas d'importance.
Fonctionnalités
- Téléphones : tonalité, composition du numéro (les chiffres sont entendus par le détecteur de tonalité de BitVoice ; le numéro est composé après une pause ou #), tonalité de rappel, tonalités d'occupation et de congestion à partir de la zone de tonalité de la carte, sonnerie pour les appels entrants, et touches appuyées pendant un appel (envoyées également en tant qu'événements RFC 4733).
- Lignes : une ligne qui sonne appelle son numéro ici et est répondu lorsque l'appel est ; les appels sortants prennent une ligne libre, attendent la tonalité de composition de l'échange et composent le numéro sous forme de tons. La fin de l'appel à distance est détectée lorsque la ligne le signale (courant de boucle ou polarité, selon la ligne). Les lignes analogiques n'indiquent pas lorsque l'appel à distance répond, donc un appel sortant est considéré comme répondu une fois le numéro composé.
- Le son est G.711 vers et depuis la carte ; BitVoice convertit en ce que l'autre partie utilise.
Lignes numériques : T1 et E1 PRI
Une ligne T1 (23 appels simultanés) ou E1 (30) fonctionne comme une ligne à taux primaire ISDN et se branche sur une carte numérique (série TE de Digium/Sangoma, série D d'OpenVox, etc.). BitVoice parle lui-même le PRI (Q.921 sur le canal D, et Q.931 de contrôle d'appel), donc chaque appel entre avec le numéro composé et l'identifiant de l'appelant, sort avec l'identifiant de l'appelant de l'extension, et la société de téléphone indique lorsque l'appel à distance répond, sonne ou est occupé.
- Dans /etc/dahdi/system.conf, configurez l'étendue pour le PRI comme d'habitude (
span=1,1,0,esf,b8zs,bchan=1-23,hardhdlc=24pour un T1 ;span=1,1,0,ccs,hdb3,crc4,bchan=1-15,17-31,hardhdlc=16pour un E1), puis exécutezdahdi_cfg. - Sous Lignes numériques sur Cartes de téléphonie (chapitre 6), ajoutez l'étendue : T1 ou E1, son premier canal DAHDI, si BitVoice est le PBX sur la ligne de la société de téléphone (le cas habituel) ou le réseau (un autre PBX se connecte à BitVoice comme s'il s'agissait de la société de téléphone), et le type de commutateur que la société de téléphone vous a donné.
- Ajoutez la jonction de carte sur les jonctions si elle n'existe pas encore, et les routes d'entrée pour les numéros (DIDs) que la société de téléphone envoie.
Les appels sortants prennent d'abord un PRI, les lignes analogiques ensuite ; un numéro occupé, un mauvais numéro ou aucun canal libre revient comme occupé, introuvable ou indisponible, comme l'indique le réseau. La page affiche si le canal D de chaque étendue est actif et combien de ses canaux sont dans des appels. Les canaux T1 configurés avec un signal de vol de bits (fxsks, fxoks) fonctionnent comme les ports analogiques ci-dessus.
Noms, transferts et renvois. Le nom de l'appelant arrive avec l'appel (à partir de l'élément d'affichage, ou sur l'ISDN-2 national à partir du nom que le réseau envoie en tant que fonctionnalité) et les téléphones l'affichent ; les appels sortants envoient le nom de l'extension de la même manière. Le numéro à partir duquel un appel a été transféré arrive comme son numéro de redirection (BitVoice le transmet sous forme de Diversion SIP, avec la raison : occupé, pas de réponse, inconditionnel), et lorsque le transfert d'une extension renvoie un appel sur le PRI, le numéro de l'extension est transmis avec lui en tant que numéro de redirection, afin que l'extrémité distante et la société de téléphone sachent à qui appartient l'appel. Lorsqu'un appel extérieur est répondu, BitVoice indique au réseau le numéro qui a répondu (le numéro connecté).
Activez Transferts via la société de téléphone sur une ligne (côté utilisateur, ISDN-2 national, 5ESS, DMS-100 ou EuroISDN) et lorsque quelqu'un transfère un appelant sur cette ligne à un autre numéro sur la même ligne, BitVoice demande au réseau de joindre les deux appels lui-même : transfert de deux canaux B sur les lignes ISDN-2 nationales et 5ESS, transfert de lien de jonction sur un Nortel DMS-100, transfert d'appel explicite (l'appelant en attente, puis joint) sur EuroISDN. Un DMS-100 fournit un identifiant de transfert uniquement aux appels que BitVoice place, donc l'un des deux appels doit être un appel sortant (le cas habituel : un appelant transféré ou renvoyé à un numéro extérieur). Les deux canaux sont libérés dès que le réseau les a joints. La ligne nécessite le service (demandez à la société de téléphone « transfert de deux canaux B » ou « ECT ») ; si le réseau refuse, le transfert fonctionne toujours, via BitVoice, en utilisant les deux canaux comme avant. Sur une ligne où BitVoice est le côté réseau, un autre PBX peut demander à BitVoice de joindre deux de ses appels ; BitVoice refuse (il ne s'agit pas d'un commutateur), et le PBX conserve les appels lui-même.
Essayer sans carte
Les spans dynamiques de DAHDI peuvent remplacer une carte : deux spans joints à l'intérieur du noyau, BitVoice sur l'un et un autre PBX (chan_dahdi d'Asterisk, par exemple) en tant que société de téléphone sur l'autre. Chargez dahdi, dahdi_dynamic et dahdi_dynamic_loc, et dans /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
Laissez le dernier numéro (synchronisation) à 0 sur les deux : le minuteur de DAHDI les alimente alors. Les spans qui sont chacun la source de synchronisation de l'autre ne fonctionnent que lorsque l'autre envoie, et le canal D apparaît et disparaît. Ajoutez la span 1 ici en tant que T1 (premier canal 1), et configurez l'autre PBX en tant que côté réseau sur les canaux 25 à 48.
Tarif de base ISDN (BRI)
Un BRI transporte deux appels à la fois (B1 et B2) et est courant en Europe pour les petits bureaux ; il relie également les téléphones de bureau ISDN. Les cartes BRI (Digium B410P, les cartes basées sur HFC d'OpenVox, Junghanns et d'autres) fonctionnent via DAHDI comme les cartes PRI : dans /etc/dahdi/system.conf, la span est span=1,1,0,ccs,ami avec bchan=1-2 et hardhdlc=3. Ajoutez-le sous Lignes numériques avec BRI en tant que type de ligne ; ses canaux sont B1, B2, puis le canal D.
- BitVoice est le PBX (côté utilisateur), point à point : une ligne PBX de la société de téléphone (l'*Anlagenanschluss* allemand) : les appels entrants transportent le numéro composé, les appels sortants transportent le numéro de l'extension.
- Côté utilisateur, multipoint : une ligne partagée avec d'autres appareils (*Mehrgeräteanschluss*) : BitVoice demande au réseau son propre identifiant de terminal (TEI) et répond aux appels de la ligne à côté des autres appareils sur celle-ci ; la société de téléphone envoie le numéro composé (le MSN), que les routes entrantes correspondent.
- BitVoice est le réseau, multipoint : les téléphones ISDN se branchent sur la carte S-bus comme sur une ligne de société de téléphone. Chacun demande à BitVoice un TEI ; un appel vers le bus fait sonner chaque téléphone sur celui-ci, le premier à répondre le prend et les autres arrêtent de sonner. Les numéros composés digit par digit (comme les téléphones ISDN composent) sont collectés jusqu'à ce que le téléphone indique qu'il est complet, # est enfoncé, ou qu'aucun chiffre n'arrive pendant quatre secondes. Acheminez les numéros vers et depuis le bus avec le tronc de la carte comme pour n'importe quelle ligne.
Les noms, les transferts et les conseils de frais sur EuroISDN (transfert d'appel explicite) fonctionnent sur un BRI comme sur un PRI.
Troncs E&M sur un T1
Un T1 dont les canaux sont configurés comme E&M (signalisation à bits volés : e&m=1-24 dans /etc/dahdi/system.conf) fournit 24 troncs, chacun signalé sur son propre : les lignes de liaison vers un autre PBX, les banques de canaux et les troncs de groupe de fonction D à longue distance. Sous Lignes numériques, ajoutez un T1 et définissez Signalisation sur E&M, puis :
- Signal de démarrage : Démarrage par clignotement (le cas habituel : l'extrémité distante clignote lorsqu'elle est prête pour le numéro, et BitVoice clignote en retour lorsqu'un appel arrive), Démarrage immédiat (le numéro suit la saisie immédiatement), Composition retardée (l'extrémité distante décroche pendant qu'elle se prépare, puis raccroche), ou Groupe de fonction D (démarrage par clignotement avec des numéros MF, le numéro de l'appelant envoyé en premier : KP 00 ANI ST, puis KP numéro ST ; l'ANI devient l'identifiant de l'appelant).
- Numéros envoyés sous forme de : DTMF, ou MF (MF R1, KP numéro ST) comme la plupart des troncs de transporteurs le souhaitent.
- Numéro lorsque aucun n'est envoyé : ce qu'un appel entrant atteint si l'extrémité distante saisit le tronc sans composer de numéro (une ligne privée directe vers le standard, par exemple).
Une sortie d'appel prend un trunk libre, le saisit, attend le signal de départ (pas de clignotement dans les cinq secondes signifie "pas de clignotement" et l'appel échoue), envoie le numéro et est répondu lorsque l'extrémité lointaine décroche (supervision de réponse). Un appel entrant est répondu en décrochant lorsque l'extension répond.
Troncs CAMA (911, piste de laboratoire). Un PSAP toujours alimenté par un routeur 911 sélectif sur des troncs CAMA définit Signal de départ sur CAMA (tronc 911). Le routeur saisit, BitVoice clignote et le routeur envoie le numéro de l'appelant (ANI) en MF : CAMA amélioré en tant que KP, deux chiffres d'information et dix chiffres, ST ; CAMA traditionnel en tant que KP, un chiffre de plan de numérotation et sept chiffres, ST. Pour le CAMA traditionnel, répertoriez sous Codes de zone pour NPD 0 à 3 le code de zone que chaque chiffre de plan de numérotation représente (la feuille de configuration de votre routeur les contient) ; un chiffre supérieur à 3 signifie que le routeur n'a pas pu identifier la ligne. Chaque appel est acheminé vers la route d'entrée pour 911 en tant qu'appel 911, avec l'ANI en tant que numéro de rappel, et BitVoice recherche son emplacement par ce numéro (voir appels 911 (chapitre 77), Recherche d'emplacement (ALI)). Les chiffres d'information s'affichent sur l'appel en tant que CAMA (II 00).
MFC-R2 sur une ligne E1
En Amérique latine, dans certaines parties de l'Asie et de l'Afrique, les lignes E1 sont souvent MFC-R2 plutôt que ISDN : 30 circuits, chacun avec ses signaux de ligne sur les bits A et B du timeslot 16 (ITU-T Q.421) et son numéro, la catégorie de l'appelant et le numéro de l'appelant échangés en tons multifréquences obligatoires (Q.441), vers l'avant et vers l'arrière. Configurez l'ensemble comme CAS dans /etc/dahdi/system.conf (span=1,1,0,cas,hdb3, cas=1-15:1101, cas=17-31:1101, dchan supprimé), puis sous Lignes numériques ajoutez une ligne E1, définissez Signalisation sur MFC-R2 et choisissez la Variante de pays : ITU-T, Argentine, Brésil, Chine, Colombie, République tchèque, Équateur, Mexique, Philippines ou Venezuela. Chaque pays attribue certains signaux différemment (ce qui signifie occupé, comment la fin du numéro est indiquée, le groupe C supplémentaire du Mexique) ; la variante contient ceux-ci. La Chine n° 1 demande la classe de l'appelant (KA) et le numéro après le numéro composé, envoie le type d'appel (KD : 3, un appel local) en dernier, lit les signaux occupé et inactif par le KD qu'il a envoyé et définit les bits C et D sur 1 : là, écrivez cas=1-15:1111 et cas=17-31:1111.
Chaque circuit transporte des appels dans les deux sens. Un appel entrant atteint les routes entrantes avec le numéro composé et le numéro de l'appelant (les numéros masqués arrivent comme anonymes) ; une extension occupée ou un mauvais numéro est signalé comme occupé ou non attribué, comme le variant le spécifie. Un appel sortant envoie le numéro et l'identifiant de l'appelant de l'extension, ou le signal « numéro masqué » lorsque l'appelant le cache.
La signalisation MFC-R2 est testée contre OpenR2 (la bibliothèque R2 que chan_dahdi d'Asterisk utilise), dans chaque variante proposée et dans les deux sens, y compris un appel refusé en tant qu'occupé ; E&M contre les canaux simulés de BitVoice.
SS7
Un transporteur peut transmettre des T1 ou des E1 signalés par SS7 plutôt que par ISDN : les circuits vocaux transportent des appels, chacun nommé par un code d'identification de circuit (CIC), et une timeslot transporte le lien de signalisation vers le point de transfert de signal ou le commutateur du transporteur, sur lequel ISUP établit les appels. BitVoice est alors un point de signalisation à part entière, avec un code de point que le transporteur attribue. Dans /etc/dahdi/system.conf, configurez l'étendue comme des canaux clairs avec la timeslot de signalisation en tant que mtp2 ou hardhdlc (timeslot 16 sur une E1, 24 sur un T1). Sous Lignes numériques, ajoutez l'étendue, définissez Signalisation sur SS7 (ISUP) et fournissez :
- Variante SS7 : ANSI (Amérique du Nord ; codes de point réseau-grappe-membre, comme 245-16-1) ou ITU-T (la plupart du monde ; codes de point zone-zone-point, comme 1-10-2, ou un numéro simple).
- Notre code de point et Code de point adjacent, le Réseau (national, habituel, ou international), le Code de lien de signalisation (SLC, 0 sauf indication contraire), et le Premier CIC : le code du premier canal vocal de l'étendue, les autres suivant dans l'ordre. Tous ceux-ci proviennent du transporteur.
Ensembles de liens de plusieurs liens. Les étendues avec la même variante, les mêmes codes de point et le même réseau sont un ensemble de liens (jusqu'à 16 liens) : chaque lien de signalisation de l'étendue est l'un de ses liens, et nécessite son propre Code de lien, et tous les circuits de chaque étendue lui appartiennent (leurs CIC peuvent ne pas se chevaucher). Le trafic est partagé entre les liens en service par les messages SLS, de sorte qu'un appel conserve ses messages sur un lien. Lorsqu'un lien échoue (le test de lien reste sans réponse, ou les messages ne sont pas accusés de réception), son trafic bascule vers les autres (Q.704 : COO et COA, les messages que l'extrémité lointaine n'a pas reçus envoyés à nouveau sur un autre lien ; ou, sans réponse dans le temps, par le temps), les appels sur chaque étendue se poursuivent, et Cartes de téléphonie indique combien de liens sont en service et comment celui de l'étendue se comporte. Lorsque le lien revient et est testé, son trafic bascule à nouveau (CBD et CBA). Seulement lorsque chaque lien est descendu est l'ensemble de liens descendu. Testé contre libss7 avec deux liens, l'un coupé au milieu d'un appel : libss7 prend les messages de gestion de réseau uniquement sur le lien dont le SLS est nommé, de sorte qu'un message de basculement concernant le lien coupé (envoyé sur l'autre, comme Q.704 le spécifie) est abandonné, et les deux extrémités basculent par le temps, ce qui fonctionne ; entre deux extrémités BitVoice, cela se fait par COO et COA.
Lorsque le lien est établi, BitVoice l'aligne (niveau MTP 2, avec la période de preuve d'urgence en tant que jeu de liens unique), le vérifie avec le test de lien (SLTM/SLTA), échange les autorisations de redémarrage du trafic et réinitialise chaque circuit (GRS). Les appels entrants atteignent les routes entrantes avec le numéro composé, le numéro de l'appelant (les numéros masqués étant anonymes), le numéro à partir duquel l'appel a été transféré et, sur ANSI, le nom de l'appelant ; les appels sortants portent l'identifiant et le nom de l'appelant de l'extension. Le blocage ou la réinitialisation des circuits par le transporteur est respecté. En cas de saisie double, l'extrémité avec le code de point plus élevé conserve les circuits pairs, comme le dit Q.764, et BitVoice prend les circuits qu'il conserve en premier.
SS7 est testé contre libss7 (la bibliothèque SS7 utilisée par chan_dahdi d'Asterisk), ITU et ANSI : alignement, test de lien, redémarrage du trafic, réinitialisation du circuit, appels dans les deux sens avec des numéros et des noms, libération, occupation et blocage ; et BitVoice contre lui-même avec des trames perdues sur le lien (renvoyées à nouveau par la correction d'erreur MTP2) et une saisie double. Le transfert de signaux (en tant que STP pour les autres) et SCCP/TCAP (recherches de portabilité de numéros, traduction de numéros gratuits) ne sont pas proposés : un PBX est un point de terminaison, et ceux-ci sont les éléments du transporteur.
Point de transfert de signal (STP). bitvoice-dahdi peut également être un STP pour ses ensembles de liens SS7 : activez Point de transfert de signal (SS7) en dessous des lignes numériques. Son Code de point STP est celui des spans. Avec Transmettre les messages pour d'autres codes de point, un message d'un ensemble de liens pour le point adjacent d'un autre va à cet ensemble de liens, et un pour tout autre code de point va au STP IP (M3UA) : un STP IP ou une passerelle de signalisation à l'hôte : port, atteint via M3UA (RFC 4666) sur TCP, dont les messages pour les points des ensembles de liens reviennent de la même manière (BitVoice enregistre son code de point et ceux derrière lui, sauf si un Contexte de routage est donné). La traduction du titre global envoie des messages SCCP adressés au STP par titre global au code de point et au sous-système du préfixe le plus long correspondant, comme le fait un relais SCCP. Un message qui ne peut pas être livré revient à son expéditeur sous la forme d'un UDTS ou XUDTS lorsqu'il a demandé cela : aucune traduction, aucune route (défaillance MTP), aucun sous-système ici, ou son compteur de saut épuisé. Le statut du STP affiche le lien M3UA et le nombre de messages qu'il a transmis, traduits et retournés. Son SCCP (UDT, XUDT, UDTS, XUDTS) et TCAP (Début, Continuer, Fin, Abandon, dialogues et composants) sont vérifiés contre Osmocom : OsmoSTP sur M3UA, l'utilisateur d'écho SCCP de libosmo-sigtran derrière lui et le codeur TCAP de libosmo-asn1-tcap dans les deux sens. Le SCTP n'est pas proposé (Go n'en a pas) : M3UA passe sur TCP, que OsmoSTP et de nombreux STP IP acceptent. Le SCCP orienté connexion, les ensembles de liens ANSI et la gestion SCCP (SST, SSA) ne sont pas proposés.
Conseil de frais. Sur une ligne EuroISDN, activez Conseil de frais et BitVoice demande à la société de téléphone, pour chaque appel sortant, de préciser son coût : pendant l'appel (AOC-D) et à la fin de l'appel (AOC-E), en monnaie ou en unités de facturation. Le dernier chiffre figure sur l'enregistrement de l'appel (facturé 1,50 EUR dans l'historique, et à côté de l'appel sur les coûts) ; lorsqu'il est dans votre devise (paramétrée sur les coûts), il s'agit du coût de l'appel, au lieu du chiffre provenant des tarifs du trunk. La société de téléphone doit proposer le service sur la ligne. Les troncs SIP peuvent envoyer les mêmes conseils, sous la forme d'un XML AOC 3GPP dans un INFO ou un BYE, et BitVoice les conserve de la même manière.
Le code PRI est testé contre libpri (la bibliothèque ISDN utilisée par Asterisk), à la fois en tant que côté utilisateur et en tant que côté réseau, pour les appels National ISDN-2 et EuroISDN, les noms, les numéros de redirection et les numéros connectés, le transfert de appel explicite, le transfert de deux canaux B et les demandes de lien de libération DMS-100 (avec le PBX de libpri joint par BitVoice en tant que DMS-100), et les conseils de frais dans les deux sens ; et sur BRI, point à point et multipoint, en tant que terminal et en tant que réseau (attribution TEI, appels diffusés sur le bus, numéros composés chiffre par chiffre).
Pas encore : l'identifiant de l'appelant affiché sur les téléphones analogiques ou lu à partir des lignes analogiques, le flash de crochet et la suppression d'écho au-delà de ce que la carte elle-même fait.
Troncs
/trunksUn tronc est votre compte avec une entreprise de téléphone. Il transporte les appels vers et depuis les numéros externes. La plupart sont des troncs SIP ; un serveur Asterisk ou FreePBX, ou un fournisseur IAX2, peut être atteint avec IAX2 à la place.
Ajout d'un trunk SIP
- Sur Troncs (chapitre 7) appuyez sur Ajouter un trunk.
- Entrez le serveur du fournisseur que votre entreprise de téléphone vous a donné (
sip.provider.com), ainsi que le port si ce n'est pas 5060. - Entrez le nom d'utilisateur et le mot de passe, et activez Enregistrement si le fournisseur le demande (la plupart le font).
- Enregistrez. Dans quelques secondes, le trunk devrait être enregistré ; si ce n'est pas le cas, la raison est affichée à côté.
Le juge de santé du trunk
Avec deux trunks ou plus sur une route de sortie, BitVoice juge toutes les 15 secondes si chaque trunk est utilisé à sa place ou essayé après les autres trunks. Un trunk passe derrière les autres lorsqu'il cesse de répondre aux vérifications de maintien de connexion, ou lorsque ses derniers appels sortants ont échoué les uns après les autres du côté du fournisseur (Appels échoués à la suite dans Dans (minutes), Paramètres, Juge de santé du trunk), et qu'un autre trunk fonctionne. Il n'est pas déplacé en cas de défaillance de vérification de maintien de connexion seul, tant que les appels qui passent par lui aboutissent toujours ; et lorsque tous les trunks échouent en même temps, la cause la plus probable est la liaison Internet de ce système, donc rien n'est déplacé. Un changement nécessite deux jugements consécutifs (30 secondes), donc un trunk ne clignote jamais. Un trunk n'est jamais complètement supprimé : il est toujours essayé lorsque les autres échouent, donc un appel d'urgence a toujours tous les moyens de sortir. La page du trunk affiche le jugement et ses raisons ; un appel qui est sorti par un autre moyen le mentionne dans son enregistrement.
- Ajoutez une route d'entrée pour votre numéro et une route de sortie qui utilise ce trunk (Routing des appels (chapitre 8)).
| Champ | Fonction |
|---|---|
| Transport | UDP (habituel), TCP ou TLS pour la signalisation chiffrée |
| Enregistrement | connectez-vous toutes les quelques minutes, afin que le fournisseur sache où envoyer les appels |
| Nom d'utilisateur d'authentification | uniquement lorsque le fournisseur fournit un nom d'utilisateur distinct |
| Domaine de l'expéditeur | le domaine dans l'adresse de l'expéditeur, lorsque le fournisseur en demande un |
| ID de l'appelant | le numéro affiché sur les appels sortants ; l'ID de l'appelant d'une extension l'emporte |
| Accepter également les appels de | les autres adresses ou réseaux du fournisseur qui envoient des appels. Les appels de cet ordinateur par les téléphones enregistrés ici et ceux du générateur d'appels intégré ne sont jamais considérés comme appartenant au trunk, même s'il autorise 127.0.0.1 |
| Appels simultanés | la limite autorisée par votre forfait ; les appels au-delà de cette limite sont acheminés vers le trunk suivant de l'itinéraire |
| Chiffrer les médias | SRTP, pour les fournisseurs qui le prennent en charge. Un fournisseur qui répond sans celui-ci reçoit toujours l'appel, non chiffré, et l'historique des appels le marque Non chiffré |
| Exiger le chiffrement | (avec Chiffrer les médias) refuser ce que le fournisseur n'est pas prêt à chiffrer : un appel sortant qu'il répond sans SRTP est raccroché, et un appel entrant qu'il envoie sans SRTP est refusé ; l'historique des appels indique pourquoi |
| Codecs | laissez-le sur *même que les paramètres*, ou choisissez ce que ce fournisseur prend en charge, en commençant par le meilleur |
| Tarifs | coûts des appels par préfixe de numéro, pour Coûts (chapitre 54) |
Fournisseurs cloud
Commencer par remplit Microsoft Teams Direct Routing, Amazon Chime SDK Voice Connector ou Azure Communication Services, avec une note sur ce qu'il faut configurer de leur côté. Teams est décrit dans son propre chapitre (Microsoft Teams (chapitre 67)).
Trunks IAX2 vers Asterisk et FreePBX
Choisissez IAX2 comme protocole pour joindre un autre serveur Asterisk ou FreePBX, ou un fournisseur IAX2. IAX2 transporte la signalisation et le son sur un seul port UDP, 4569, ce qui le rend facile à travers les pare-feu.
- Adresse du serveur : l'autre serveur. Laissez-le vide lorsque l'autre serveur s'enregistre auprès de BitVoice à la place (un bureau situé derrière une adresse changeante) ; alors le nom d'utilisateur et le mot de passe sont ceux avec lesquels il s'enregistre.
- Nom d'utilisateur et mot de passe : les mêmes des deux côtés. BitVoice répond et gère les défis MD5, ainsi que les jetons d'appel.
- Enregistrement : s'inscrire auprès de l'autre serveur, afin qu'il puisse envoyer des appels ici.
Du côté Asterisk, un pair comme celui-ci suffit :
[bitvoice] type=friend host=dynamic secret=the shared password context=from-bitvoice
Le port IAX2 4569 n'est ouvert qu'à partir du moment où le premier trunk IAX2 est ajouté, donc un Asterisk en cours d'exécution sur le même ordinateur le garde jusqu'alors.
Trunks H.323
Choisissez H.323 comme protocole pour les passerelles, les PABX et les systèmes de conférence vidéo plus anciens qui parlent H.323 mais pas SIP. Donnez l'adresse de la passerelle (port 1720) ; les appels ne sont acceptés que d'elle. Les appels sont établis avec Fast Connect et G.711 (loi µ ou loi A ; la liste de codecs du trunk peut la restreindre à l'un d'eux), et le son va directement entre la passerelle et les ports de médias de BitVoice. BitVoice convertit en ce que l'autre partie utilise.
H.323 ici est délibérément petit : pas de gatekeeper (RAS), pas de H.245 (donc une passerelle qui ne veut pas utiliser Fast Connect n'obtient pas d'appel, et on le lui indique), pas de vidéo, pas de sécurité H.235. L'ID de l'appelant provient du numéro d'appel Q.931 ou de l'alias de numéros composés par l'appelant, le nom de l'appelant provient de l'affichage ou de son ID H.323. Le codage H.225.0 et H.245 de BitVoice a été vérifié contre un encodeur ASN.1 indépendant, mais pas encore contre du matériel de passerelle.
Appels transférés
Lorsqu'un appel vous atteint déjà transféré (le numéro de quelqu'un transféré au vôtre, ou un utilisateur de Teams), le fournisseur l'indique avec History-Info (RFC 7044) ou Diversion (RFC 5806). BitVoice lit les deux : Historique des appels (chapitre 47) affiche transféré par le numéro qui l'a transféré, avec le numéro composé à l'origine et la raison dans son info-bulle, le chemin de l'appel indique la raison en mots, et l'enregistrement de l'appel le conserve (forwardedFrom, original, forwardReason). Lorsque le fournisseur demande que l'historique soit privé, les numéros ne sont pas conservés.
Lorsqu'une extension transfère un appel vers l'extérieur via un trunk (tous les appels, lorsqu'il est occupé, lorsqu'aucun répondeur ne répond), le fournisseur est informé de l'extension qui a transféré l'appel et de la raison, afin qu'il puisse afficher votre numéro et facturer le bon compte : par défaut avec les deux en-têtes, et avec l'historique de l'appel conservé et le transfert ajouté. Un fournisseur confus par l'un d'eux peut être réglé sur l'autre sous Avancé, Appels transférés indiquent à qui ils appartiennent. Sur une carte de téléphonie T1/E1, chaque en-tête devient le numéro de redirection du réseau.
Ce que signifie le statut
| Statut | Signification |
|---|---|
| enregistré | connecté ; les appels peuvent arriver |
| prêt | ne s'enregistre pas, ou IAX2 en attente d'appels |
| injoignable | le nom du serveur n'est pas dans le DNS, ou rien ne répond |
| échoué | le fournisseur a refusé la connexion ; la raison est affichée |
| en attente | les serveurs partagent ce trunk à tour de rôle et un autre le détient |
Acheminement des appels
/routesL'acheminement des appels décide de deux choses : où les appels provenant de l'extérieur vont, en fonction du numéro composé, et quel trunk les appels vers des numéros externes utilisent.
Routes entrantes
Chaque route entrante correspond au numéro qui a été composé (ou à n'importe quel numéro) et envoie l'appel à une destination : une extension, un groupe de sonnerie, une file d'attente, un menu, un calendrier, un script, une salle de conférence, un réceptionniste AI ou une messagerie vocale. Les numéros correspondent sous n'importe quelle forme : +1 212 555 0100, 2125550100 et 12125550100 sont les mêmes.
- Une route pour un numéro l'emporte sur une route pour n'importe quel numéro.
- Une route peut être limitée à un trunk, pour les numéros que deux fournisseurs envoient tous les deux.
- Avec le mode d'urgence activé (Paramètres), chaque appel entrant va à un endroit au lieu, quel que soit ce que disent les routes : une évacuation, une fermeture, un incident.
Routes sortantes
Les routes sortantes correspondent à ce que les gens composent, par motif, et les envoient à des trunks dans l'ordre : si le premier est hors service ou plein, le suivant est essayé.
| Motif | Correspond à |
|---|---|
X | n'importe quel chiffre |
Z | 1 à 9 |
N | 2 à 9 |
[1-5] | l'un d'un ensemble |
. à la fin | un ou plusieurs chiffres supplémentaires |
NXXNXXXXXX | un numéro nord-américain à 10 chiffres |
1NXXNXXXXXX | le même avec 1 devant |
011. | un appel international depuis les États-Unis |
- Supprimer supprime les chiffres du début (un 9 composé pour une ligne extérieure) ; Ajouter ensuite en ajoute (un code de pays).
- L'ordre est important : la première route dont le motif correspond est utilisée. Faites glisser les routes pour la modifier.
- Les numéros premium (900 et similaires) sont refusés à moins qu'une route ne les nomme.
Numéros d'urgence
Les numéros d'urgence fonctionnent toujours. Une route qui nomme exactement le numéro est utilisée en premier ; sans route, chaque trunk fonctionnel est essayé à tour de rôle. Un appel à ces numéros n'est jamais refusé pour des limites d'extension, des limites d'organisation hébergée ou une route manquante. La santé avertit lorsqu'aucun trunk ne peut les transporter.
Ensembles de codes PIN
/pin-setsUn ensemble de codes PIN (chapitre 9) est une liste de codes PIN qu'une route de sortie demande avant de passer l'appel : pour limiter les appels internationaux ou à longue distance aux personnes ayant un code PIN, ou pour facturer les appels aux clients et projets par leur code.
- Ajouter un ensemble de codes PIN et lister ses codes PIN (4 à 10 chiffres chacun).
- Activez Conserver le code PIN dans l'enregistrement de l'appel pour écrire le code PIN utilisé dans chaque enregistrement d'appel comme code de compte (la colonne accountcode des sorties d'enregistrement d'appel CSV, syslog et PostgreSQL, et
accountdans l'API). - Sur Routing des appels (chapitre 8), ouvrez une route de sortie et choisissez l'ensemble sous Demander un code PIN.
Les appelants qui composent un numéro que cette route prend entendent « Veuillez entrer votre code PIN, puis appuyez sur la touche dièse », l'entrent, et l'appel est passé. Trois codes PIN incorrects mettent fin à l'appel, et la tentative est enregistrée comme un événement de sécurité. Les numéros d'urgence ne demandent jamais de code PIN, quel que soit le chemin qu'ils prennent, et les appels transférés et les numéros de suivi ne sont pas non plus demandés : seuls les appelants qui composent à partir d'un téléphone.
Recherche d'identifiant d'appelant
/lookupsDe nombreuses sociétés de téléphonie envoient le numéro de l'appelant mais pas de nom. BitVoice recherche d'abord dans les contacts de l'entreprise (chapitre 38) ; après cela, une route d'entrée peut demander une recherche d'identifiant d'appelant (chapitre 10) :
- Une adresse web : votre CRM ou tout service qui répond avec le nom. Mettez
{number}à l'endroit où se trouve le numéro (https://crm.example.com/api/callers?phone={number}). Une réponse en texte brut donne le nom sur sa première ligne ; pour JSON, donnez le champ de nom sous la forme d'un chemin pointé (data.contact.name; un numéro pénètre dans une liste, comme dansresults.0.name). L'authentification de base est facultative. - OpenCNAM : la base de données des noms d'appelants nord-américains, avec votre SID de compte et votre jeton d'authentification.
Choisissez la recherche sur une route d'entrée sur Routing des appels (chapitre 8) (Recherche d'identifiant d'appelant). Les téléphones affichent le nom pendant qu'ils sonnent, et il est inséré dans l'enregistrement de l'appel.
Une recherche ne retarde jamais un appel : BitVoice attend au maximum sa durée d'attente (1,5 seconde à moins que vous ne la modifiiez, 5 au maximum) et sonne ensuite sans nom. Les réponses sont conservées pendant une journée (ou aussi longtemps que vous le configurez, ou jamais avec -1), donc un appelant régulier n'est pas recherché à chaque appel ; les numéros que le service ne connaît pas sont demandés à nouveau après une heure. Essayer sur la page de recherche demande un numéro immédiatement, avec les paramètres tels que sauvegardés.
Appels d'urgence
Les numéros d'urgence sont toujours passés, à partir de chaque extension, même celles qui ne peuvent pas appeler des numéros externes. Ce chapitre concerne les appels d'urgence passés à partir des téléphones que BitVoice exécute : un bureau appelant le 911. La réponse aux appels 911 est le profil 911 (chapitre 77).
Ce que BitVoice fait sur chaque appel d'urgence
- Le route, toujours : une route qui nomme le numéro en premier ; avec aucune, chaque trunk fonctionnel à tour de rôle. Les limites ne l'arrêtent jamais : une extension qui n'est pas autorisée à appeler des numéros externes, une organisation hébergée à sa limite d'appel ou suspendue, un trunk à sa limite de canal.
- Envoie où se trouve l'appelant : avec Envoyer l'adresse de l'appelant activé (Paramètres), l'appel transporte l'adresse civique du site, l'étage et la pièce au fournisseur sous forme de PIDF-LO.
- Préviens les personnes sur le site (loi de Kari aux États-Unis) : les extensions sous Prévenir reçoivent un message sur leurs téléphones, chaque écran BitVoice ouvert affiche une alerte, et les adresses sous Envoyer également un e-mail reçoivent un e-mail avec le nom de l'appelant, l'extension, le site, l'étage et la pièce, afin que quelqu'un puisse rencontrer les intervenants à la porte.
- Laisse l'appel revenir : pendant une heure après un appel d'urgence, les appels entrants ne sont jamais refusés, afin que le point de réponse puisse toujours rappeler.
Configuration
- Vérifiez les numéros d'urgence dans Paramètres (chapitre 14) (définis par pays : 911 et 933 aux États-Unis).
- Ajoutez chaque bâtiment sous Sites (chapitre 12), avec son adresse de rue et les réseaux que ses téléphones utilisent.
- Attribuez chaque extension son site, son étage et sa pièce.
- Assurez-vous qu'une route de sortie et un trunk transportent les appels d'urgence ; État de santé (chapitre 13) avertit lorsqu'aucun ne peut.
- Remplissez Prévenir et Envoyer également un e-mail.
- Composez
933(aux États-Unis) pour entendre l'adresse que votre fournisseur a.
Travailleurs à distance
Un téléphone s'enregistrant en dehors des réseaux de son site est un travailleur à distance : sa page de téléphone demande où il se trouve, et cette adresse est utilisée à la place. Les alertes indiquent quand elle n'a pas été confirmée.
Mode d'urgence
Une chose différente : un commutateur qui envoie chaque appel entrant vers un seul endroit (une évacuation, une fermeture, un incident). Définissez où les appels sont acheminés, un code facultatif tel que *55 et les extensions autorisées à composer ce code dans Paramètres (chapitre 14) ; activez-le sur le Tableau de bord (chapitre 1), ou en composant le code (sons ascendants pour activer, un son grave pour désactiver). Une barre rouge s'affiche sur chaque écran tant qu'il est activé.
Sites et 911 de bureau
/sitesUn site est un bâtiment : son adresse de rue et les réseaux que ses téléphones utilisent. Les sites sont la façon dont un appel d'urgence indique où se trouve l'appelant, jusqu'au sol et à la pièce. Aux États-Unis, la loi Kari et la loi RAY BAUM'S exigent exactement cela des systèmes téléphoniques d'entreprise.
Ajout d'un site
Sur Sites (chapitre 12), appuyez sur Ajouter :
| Champ | Ce que c'est |
|---|---|
| Nom | ce que les gens l'appellent : Bureau principal |
| Rue, Ville, État ou province, Code postal, Pays | l'adresse civique à laquelle les intervenants d'urgence sont envoyés |
| Réseaux | les plages d'adresses que ses téléphones utilisent, comme 10.1.0.0/16 ; un par ligne |
Ensuite, pour chaque extension, indiquez son site, étage et pièce. Santé (chapitre 13) liste les extensions sans emplacement.
Comment le lieu d'un téléphone est trouvé
- Un téléphone s'enregistrant à partir de l'un des réseaux d'un site se trouve à ce site, avec l'étage et la pièce de son extension.
- Un poste de travail itinérant porte le site, l'étage et la pièce du poste lui-même, et non de la personne connectée (Poste de travail itinérant (chapitre 36)).
- Un téléphone s'enregistrant en dehors de tous les réseaux d'un site est un travailleur distant. Lors de son premier enregistrement d'urgence capable à partir d'un nouvel endroit, son utilisateur est invité à confirmer son adresse sur sa page de téléphone ; les appels d'urgence portent ensuite cette adresse.
- Si un travailleur distant ne confirme jamais, l'appel est toujours émis, avec le site habituel de l'extension, et les alertes indiquent que l'adresse n'a pas été confirmée.
Alertes sur site
Avec Envoyer un e-mail lorsqu'une personne appelle le 911 défini dans les Paramètres, les personnes nommées reçoivent le nom de l'appelant, l'extension, le site, l'étage et la pièce dès le début d'un appel à un numéro d'urgence, afin que quelqu'un puisse accueillir les intervenants d'urgence à la porte. Les extensions Notifier reçoivent un message sur leurs téléphones, et chaque écran BitVoice ouvert affiche une alerte. Voir Appels d'urgence (chapitre 11).
État de santé
/healthL'état de santé indique si le système est prêt pour les appels, et si ce n'est pas le cas, ce qu'il faut faire. Chaque ligne indique ce qui ne va pas en termes clairs et lie au écran où il est corrigé. Vérifiez-le après chaque modification de taille importante.
Ce qu'il vérifie
| Vérification | Pourquoi cela est important |
|---|---|
| Les appels d'urgence peuvent sortir | une route et un tronc fonctionnel transportent les numéros d'urgence |
| Les extensions sans emplacement d'urgence | leurs appels 911 ne transporteraient pas d'étage ou de pièce |
| Le service téléphonique | SIP est à l'écoute, et sur quel port |
| Les téléphones non connectés | les extensions où personne n'est connecté |
| Les troncs | enregistrés, ou la raison pour laquelle ils ne le sont pas |
| Les menus sans invite enregistrée | les appelants entendraient le silence |
| Le fuseau horaire | les horaires suivent |
| Les enregistrements et leur conservation | l'espace disque, et combien de temps les enregistrements sont conservés |
| Les certificats | quand le certificat TLS expire |
| Les coffres-forts de clés | les secrets qu'un coffre-fort ne peut pas lire |
| Les autres serveurs | quand plusieurs partagent une base de données, si chaque serveur est en cours d'exécution |
Les problèmes sont colorés : le rouge arrête les appels (pas de route d'urgence), l'ambre doit être examiné (un téléphone non connecté), et le gris est pour l'information.
Paramètres
/settingsParamètres contient tout ce qui concerne le système dans son ensemble. Chaque section est enregistrée séparément, et chaque enregistrement est une révision sur Changements (chapitre 61).
| Section | Ce qu'il y a |
|---|---|
| Système | nom, pays, fuseau horaire, langue, l'adresse publique que les téléphones et les fournisseurs voient |
| Numéros | le test d'écho, les numéros de messagerie vocale et de stationnement, et les numéros d'urgence |
| Codecs | les codecs que les téléphones peuvent utiliser, dans l'ordre de préférence (Codecs (chapitre 66)) |
| Enregistrement d'appels | désactivé, chaque appel, ou les extensions sélectionnées ; règles de consentement ; durée de conservation des enregistrements |
| Son | nettoyage pour la messagerie vocale et pendant les appels |
| Protection | interdictions après échecs de connexion, réseaux de confiance, appels par extension, numéros premium |
| Urgence | envoi de l'adresse de l'appelant, qui est notifié, qui reçoit un courriel, mode d'urgence |
| IA | le service d'IA, les modèles et les fonctionnalités d'IA activées (IA (chapitre 28)) |
| Authentification unique | le fournisseur d'identité (Authentification unique (chapitre 58)) |
| Compatibilité Asterisk | AMI et ARI pour les programmes écrits pour Asterisk (Compatibilité Asterisk (chapitre 70)) |
| Assistants d'IA (MCP) | possibilité pour les assistants d'IA tels que Claude ou ChatGPT de se connecter et d'agir (Assistants d'IA (chapitre 71)) |
| Microsoft 365 et Google Workspace | personnes et contacts partagés dans les Contacts, et calendriers pour les absences (Contacts (chapitre 38), Calendriers (chapitre 39)) |
| Applications mobiles | le service de notification qui réveille les applications |
| Courriel | le serveur de messagerie pour la messagerie vocale, les télécopies et les alertes |
| Coffres de clés | secrets conservés dans AWS Secrets Manager ou Azure Key Vault |
| Configuration à partir de Git | maintenir la configuration à jour avec un fichier dans un référentiel |
| Base de données | SQLite ou PostgreSQL (Base de données (chapitre 64)) |
| Certificat | le certificat pour cette interface et SIP sur TLS : provenant de Let's Encrypt, installé manuellement ou propre à BitVoice |
Les mots de passe et les clés ne sont jamais affichés à nouveau une fois enregistrés ; laissez-les vides pour les conserver. Les observateurs voient les Paramètres avec tous les secrets supprimés.
Le certificat et Let's Encrypt
BitVoice commence avec un certificat auto-généré, que les navigateurs et les téléphones signalent comme non fiable. Pour un serveur avec un nom public, activez Let's Encrypt sous Certificat : entrez les noms (pbx.example.com), éventuellement une adresse e-mail, et appliquez. BitVoice obtient un certificat gratuit de Let's Encrypt, l'utilise immédiatement pour l'interface Web, SIP sur TLS et Teams, et le renouvelle environ 30 jours avant son expiration (les certificats Let's Encrypt durent 90 jours ou moins). La ligne d'état indique quand il a été émis, quand il sera renouvelé et, si cela a échoué, pourquoi ; il réessaye après une heure, puis moins souvent, dans les limites de Let's Encrypt. Vérifier maintenant essaie immédiatement.
Let's Encrypt doit atteindre le serveur sous chaque nom depuis l'internet, pour prouver qu'il vous appartient :
- http-01 (le choix sauf si l'interface web est sur le port 443) : une requête sur le port 80. BitVoice répond lui-même sur le port 80 (sous Linux, il a besoin de l'autorisation d'ouvrir les ports bas, comme
setcap cap_net_bind_service=+ep bitvoice), ou transfère le port 80 du routeur vers le port de l'interface web, qui répond également. Tout autre élément arrivant sur le port 80 est transmis vers HTTPS, uniquement pour les noms du certificat. Lorsque BitVoice ne peut pas ouvrir le port 80, la boîte Let's Encrypt indique pourquoi en ambre et ce qui le permet (la lignesetcapexacte pour ce programme, ou lesAmbientCapabilities=CAP_NET_BIND_SERVICEde systemd ; ou un autre programme détient déjà le port). Testez les noms demande ensuite à chaque nom un fichier de test sur l'internet, comme le fera Let's Encrypt, et indique pour chacun s'il a atteint BitVoice, atteint autre chose, ou n'est pas dans le DNS. Certains routeurs ne bouclent pas leur propre adresse publique vers l'intérieur (pas de NAT en épingle à cheveux) : là, le test échoue depuis l'intérieur bien que Let's Encrypt, depuis l'extérieur, réussisse. - tls-alpn-01 : une connexion TLS sur le port 443, répondue sur le port propre de l'interface web : pour un serveur dont l'interface web est sur 443.
Les autres autorités ACME qui n'ont pas besoin d'une liaison de compte (un step-ca d'entreprise, le service de test de Let's Encrypt) sont choisies sous Autorité. Les noms génériques nécessitent des preuves DNS, que BitVoice ne réalise pas : installez ces certificats manuellement. Chaque serveur d'un cluster reçoit son propre certificat.
Les écrans dans votre langue
Les écrans de BitVoice sont disponibles en anglais et dans treize autres langues : Deutsch, Français, Español, Italiano, Português, Nederlands, Polski, Svenska, Dansk, Norsk bokmål, Suomi, 日本語 et 简体中文.
Choix
Chaque navigateur a sa propre langue : choisissez-la sous le menu (la liste des langues à côté des thèmes), sur la page de connexion ou sur la première page de l'assistant de configuration. Jusqu'à ce que vous fassiez un choix, BitVoice utilise la langue du navigateur lorsqu'elle est l'une de celles-ci, sinon l'anglais. Le choix est conservé dans ce navigateur uniquement : deux personnes sur un même serveur peuvent chacune travailler dans leur propre langue.
Tout sur les écrans est traduit : le menu, les en-têtes, les boutons, les conseils, les messages du serveur et les noms que les lecteurs d'écran annoncent. La recherche (⌘K) trouve une page par son nom dans votre langue ou en anglais. Ce qui est laissé tel quel : ce que les gens saisissent (noms, numéros, notes), adresses, codes, scripts dans les éditeurs et noms de produits et de protocoles. Les dates et les nombres suivent les paramètres du navigateur.
Comment cela est traduit et à quel point
Les traductions sont effectuées par une machine (un grand modèle de langage), pour chaque pièce de texte que les écrans affichent, environ 5 000 d'entre elles ; aucune n'a été vérifiée par une personne. Certaines phrases que les écrans construisent à partir de pièces (un numéro et un mot) peuvent être lues de manière peu naturelle, et un terme peut être traduit de deux manières différentes dans deux endroits. Tout ce qui n'a pas de traduction, comme un écran plus récent que les traductions, reste en anglais.
Aide conserve ce manuel en anglais, tel qu'écrit, avec un lien en haut de chaque chapitre vers le même chapitre traduit dans son intégralité (également par machine) sur bitvoice.org.
Le côté téléphone est séparé : ce que les appelants entendent (prompts, menu de la messagerie vocale) est dans la langue de prompt par défaut (Sons (chapitre 20)), à moins qu'une extension ou une file d'attente n'ait sa propre langue.
Où les appels aboutissent
Les éléments de base que les appelants traversent : groupes et files d'attente, menus et plannings, scripts et réceptionniste IA, messagerie vocale, et le diagramme qui montre tout.
Flux d'appel
/flowVérifiez chaque situation
Vérifiez chaque situation, en haut de Call flow (chapitre 16), tente votre whole plan d'appel dans chaque situation dans laquelle il peut se trouver, et non un échantillon :
- chaque combinaison d'ouvert et de fermé que vos plannings réellement atteignent sur l'année à venir (chacune des vacances incluses), trouvée en pas de 15 minutes ;
- chaque combinaison de basculement jour/nuit (ou, avec plus de six, chacun activé seul) ;
- chaque route d'entrée, et chaque touche qu'un appelant peut appuyer dans chaque menu, chaque « si personne ne répond » et chaque délai d'attente de file d'attente sur le chemin ;
- chaque extension qui compose chaque numéro d'urgence.
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 même vérification s'exécute sur les modifications avant qu'elles ne soient apportées : une proposition de Demander en termes clairs et le Restaurer cette révision regardent ce que la modification briserait qui fonctionne aujourd'hui.
Essayez un appel
Entrez qui appelle (une extension, ou un numéro externe), ce qu'il compose et quand, puis appuyez sur Essayer. BitVoice suit l'appel exactement comme il le ferait pour de vrai, sans sonner quoi que ce soit : la route d'entrée, les plannings à ce moment-là, les scripts de routage (ils s'exécutent, dans leur bac à sable), les menus, les groupes et les files d'attente, et ce qui se passe si personne ne répond. Le chemin que prend cet appel est marqué ; d'autres chemins (les touches d'un menu, l'autre côté d'un planning) peuvent être ouverts. Le vert signifie que cela fonctionne, l'ambre signifie qu'il faut regarder (un téléphone non connecté, un script qui bascule), le rouge signifie que l'appel échoue à cet endroit. Cochez Supposer que chaque téléphone est connecté pour voir le plan tel qu'il a été conçu plutôt que tel qu'il est en ce moment ; Arrive sur sélectionne le trunk pour les routes qui n'en prennent qu'un.
Le diagramme
Le diagramme montre où vont les appels provenant de l'extérieur, boîte par boîte : chaque route d'entrée, puis les menus, les groupes, les files d'attente, les plannings, les scripts et les personnes qu'ils relient.
Cliquez sur une boîte (ou appuyez sur Tab puis sur Entrée) pour modifier où vont les appels à partir de celle-ci : la destination d'une route, l'Si personne ne répond d'une extension ou d'un groupe, les destinations ouvertes et fermées d'un planning, les touches d'un menu (ajoutez ou supprimez des touches directement), le script de secours ou la personne d'un réceptionniste. L'enregistrement des modifications vérifie la modification comme n'importe quelle autre et crée une révision. Ouvrir son éditeur complet va à la page de l'élément lui-même. Ajouter une route d'entrée ajoute une route sans quitter le diagramme.
Groupes de sonnerie
/ring-groupsUn groupe de sonnerie est un numéro qui fait sonner plusieurs extensions : une équipe de vente, le bureau de réception et son suppléant, tous les employés de l'atelier.
Stratégies de sonnerie
- Tous en même temps : tous les membres sonnent en même temps, et le premier à répondre prend l'appel. Les autres arrêtent de sonner.
- Un après l'autre : chaque membre sonne pendant le temps de sonnerie du groupe, dans l'ordre énuméré. Déplacez les membres avec les flèches, ou Alt+↑ et Alt+↓.
Les membres qui sont absents (dans une réunion sur leur calendrier, ou avec « ne pas déranger » activé) sont ignorés ; le groupe fait sonner les autres. Les membres avec l'application mobile sont réveillés par une notification et sonnent également.
Si personne ne répond
Lorsque personne ne répond dans le temps de sonnerie, l'appel va à Si personne ne répond : la messagerie vocale d'un membre, une file d'attente, un menu, un autre groupe. Sans paramètre, il sonne jusqu'à ce que l'appelant renonce.
Groupes, files d'attente ou prise?
| Utiliser | Lorsque |
|---|---|
| Un groupe de sonnerie | quelques personnes, dont n'importe laquelle peut prendre l'appel, et l'appel doit sonner maintenant |
| Une file d'attente | les appelants peuvent devoir attendre qu'une personne soit libre, et doivent entendre leur position |
| Un groupe de prise | chaque personne a ses propres appels, mais les collègues peuvent répondre à leur place |
Files d'attente
/queuesUne file d'attente retient les appelants dans l'ordre, avec de la musique, et fait sonner le prochain agent libre. C'est le cœur d'un centre de contact, et utile dans tout bureau où les appels arrivent plus vite que les gens ne peuvent les prendre.
Comment les appels sont offerts
| Stratégie | Qui est appelé |
|---|---|
| Le plus longtemps inactif | l'agent libre qui a attendu le plus longtemps depuis son dernier appel |
| Tour de rôle | chaque agent libre à tour de rôle, en continuant à partir du dernier |
| Appeler tous | chaque agent libre en même temps |
| Le moins d'appels | l'agent qui a pris le moins d'appels aujourd'hui |
| Dans l'ordre (linéaire) | toujours à partir du haut de la liste : le premier agent libre |
| Aléatoire | n'importe quel agent libre, par hasard |
| Aléatoire pondéré | par hasard, les agents avec une pénalité plus basse sont appelés plus souvent |
- Ordre : la liste des agents est classée ; déplacez-les vers le haut et le bas. L'ordre et Round robin le suivent.
- Pénalités classe les agents (0 à 100, 0 lorsque vide) : les appels sont proposés aux agents libres avec la pénalité la plus basse, et un agent avec une pénalité plus élevée n'est appelé qu'en l'absence d'un agent avec une pénalité plus basse. Utilisez-les pour une première ligne et une ligne de débordement dans une même file d'attente.
- Poids classe les files d'attente partageant des agents : tant qu'une file d'attente avec un poids plus élevé a quelqu'un en attente, ses agents prennent en charge ses appelants en premier.
- Rétablissement donne à un agent du temps après un appel avant le suivant.
- Attente la plus longue : les appelants qui attendent plus longtemps sont acheminés vers la destination de délai d'attente de la file d'attente. 0 attend indéfiniment.
- Musique d'attente : les appelants entendent la musique de la file d'attente (toute classe issue de Sons (chapitre 20)), celle du système ou le signal de file d'attente.
- Annoncez aux appelants en attente leur place dans la file et l'attente prévue (la durée d'attente moyenne des appelants ayant répondu aujourd'hui, en minutes), toutes les secondes, dans la langue de la file d'attente. Les mots proviennent des invites de file d'attente dans Sons (chapitre 20) ; jusqu'à ce que ceux-ci soient enregistrés, rien n'est dit.
L'écran Files d'attente est un tableau de bord en temps réel : qui est en attente, depuis combien de temps, et l'état de chaque agent.
Agents
Les agents composent *45 pour se connecter ou se déconnecter de chaque file d'attente, et *46 pour mettre en pause (une pause) et reprendre ; les agents en pause et déconnectés ne sont pas offerts d'appels. Le tableau de bord a les mêmes boutons et montre pourquoi un agent a mis en pause.
| État | Signification |
|---|---|
| disponible | libre ; sera offert l'appelant suivant |
| sonnerie | est offert un appel |
| occupé | en appel |
| rétablissement | vient de finir ; le temps de rétablissement est en cours |
| en pause | en pause, avec la raison donnée |
| absent | en réunion ou en congé, d'après son calendrier |
| déconnecté | ne prend pas les appels de file d'attente du tout |
Superviseurs
Sur Appels en cours (chapitre 46), Superviser fait sonner le téléphone d'un superviseur ; lorsqu'il répond, il peut écouter (entendu par personne), chuchoter (entendu uniquement par l'agent) ou intervenir (entendu par les deux), et peut basculer entre ces modes pendant l'appel.
Files d'attente collantes et VIP
Activez Collant dans une file d'attente et un appelant qui revient (un appelant répondu dans les 30 derniers jours, ou autant que vous le configurez) est offert en premier à l'agent qui l'a répondu la dernière fois, si cet agent est libre ; s'il ne répond pas, la file d'attente continue comme d'habitude. Les appelants VIP, au bas des Files d'attente, vont au début de chaque file d'attente qu'ils appellent, après tout VIP déjà en attente, et sont marqués VIP sur le tableau de bord.
Appel sortant automatique
/dialerL'appel sortant automatique (chapitre 19) appelle des listes de contacts pour les agents d'une file d'attente (chapitre 18) : renouvellements, rappels de rendez-vous, collectes, sondages. Chaque campagne a sa file d'attente, sa liste et sa façon d'appeler :
| Mode | Comment il appelle |
|---|---|
| Aperçu | un agent demande le prochain contact, voit ses détails, puis l'appelle (leur téléphone sonne d'abord) ou le saute |
| Progressif | un appel pour chaque agent libre |
| Puissance | un nombre fixe d'appels pour chaque agent libre (1 à 3) |
| Prédictif | BitVoice ajuste les appels par agent, en augmentant pendant que peu d'appels sont abandonnés et en réduisant à mesure que le taux d'abandon approche la limite |
- Ajouter une campagne : sa file d'attente, son identifiant d'appelant (le numéro que les contacts voient), les heures pendant lesquelles les appels peuvent être effectués dans un fuseau horaire, combien de temps le téléphone d'un contact sonne, combien d'essais et à quelle fréquence.
- Ouvrez Contacts et Ajoutez une liste : un fichier CSV avec une ligne d'en-tête et une colonne appelée
number(ouphone) ;nameet toute autre colonne sont affichés à l'agent en aperçu. Les numéros en double et erronés sont ignorés. - Enregistrez le message (dans la campagne) : qui appelle et pourquoi, et « appuyez sur 9 si vous ne voulez pas ces appels ». Il est lu à une personne qui répond lorsqu'aucun agent n'est libre, et, si vous le choisissez, après le message d'accueil d'un répondeur.
- Démarrez-le. Il n'appelle que pendant ses heures et cesse d'appeler lorsqu'il est mis en pause ou qu'il n'y a plus rien à faire.
Personnes et machines. BitVoice écoute les premières secondes après une réponse : un long message d'accueil ininterrompu est une machine à répondre ; un court « hello ? » et une pause sont une personne. Une machine peut être raccrochée (et réessayée), laisser un message ou être passée à un agent comme n'importe qui d'autre. En cas de doute, il prend la réponse pour une personne.
Appels abandonnés. Une personne a répondu lorsqu'aucun agent n'est disponible dans les deux secondes entend le message et compte comme abandonné. Avec le dénommageur prédictif, si le pourcentage d'appels abandonnés sur les dernières centaines de réponses dépasse la limite de la campagne (3 % sauf si vous la modifiez, la règle américaine), la campagne compose un appel par agent disponible jusqu'à ce qu'il soit rétabli. La campagne affiche son taux d'abandon, les appels en attente et les agents disponibles en temps réel.
Ne pas appeler. Aucune campagne n'appelle un numéro sur la liste de ne pas appeler, quelle que soit la liste à partir de laquelle il provient ; toute personne qui appuie sur 9 pendant le message est ajoutée immédiatement. Ajoutez des numéros manuellement ou via l'API (POST /api/dnc). Pour le registre national (aux États-Unis, le registre national Ne pas appeler de la FTC : téléchargez les codes régionaux que vous appelez sous forme de fichier plat), choisissez le fichier sous Registre national et Importer : chaque ligne avec un numéro compte (212,5550100 comme l'écrit la FTC, ou un numéro par ligne), les en-têtes et les lignes cassées sont ignorés et comptés. Avec Remplacer l'importation précédente activé, les numéros de la téléchargement précédent sont supprimés en premier, afin qu'un numéro qui a quitté le registre puisse être appelé à nouveau ; les numéros ajoutés manuellement ou en appuyant sur 9 restent toujours. Le registre doit être actualisé au moins tous les 31 jours (règles américaines) ; la page compte la liste et combien proviennent du registre. L'API est POST /api/dnc/import?replace=1 avec le fichier comme corps.
Sons : invites, langues et musique d'attente
/soundsSons (chapitre 20) contient tout ce que BitVoice dit ou joue aux appelants, à l'exception des salutations et des invites de menu, qui sont enregistrées là où elles sont utilisées.
Invites, dans chaque langue
Une invite est une chose que BitVoice dit : "Veuillez entrer votre PIN", "Votre place dans la file est", les chiffres qu'il lit. L'annuaire par nom, l'appel à distance (DISA), les appels de réveil et les annonces de file d'attente parlent avec eux. BitVoice a les mots de chaque invite en anglais, espagnol, français, allemand, italien, portugais, néerlandais et polonais ; les nombres sont lus chiffre par chiffre, ce qui sonne de la même manière dans chaque langue.
- Les appelants entendent définit la langue pour tous. Une file d'attente, un numéro d'appel à distance, un annuaire ou une extension peut choisir une autre.
- Chaque invite peut être enregistrée dans le navigateur, téléchargée (n'importe quel fichier audio ; il est converti en audio téléphonique) ou créée par le service de synthèse vocale : avec un modèle de synthèse vocale défini dans les Paramètres, un bouton crée chaque invite d'une langue à partir de ses mots. Les invites déjà enregistrées sont conservées à moins que vous ne demandiez de les remplacer.
- Ajoutez une langue pour toute autre langue (un code tel que sv, ja ou pt-BR) ; ses invites sont enregistrées ou téléchargées, avec les mots anglais affichés comme guide.
- Une invite manquante dans une langue est jouée dans la langue par défaut, puis en anglais ; avec aucune enregistrée du tout, les appelants entendent un court ton, afin que chaque fonctionnalité fonctionne avant qu'une seule invite soit enregistrée.
Musique d'attente
La musique d'attente est regroupée en classes (Calm, Jazz, Offres de vente…), chacune étant une liste de pistes jouées les unes après les autres, à partir du début ou aléatoirement. Téléchargez des pistes d'une durée maximale de quinze minutes dans n'importe quel format que le navigateur lit ; les fichiers MP3 et WAV peuvent également être envoyés directement à l'API (PUT /api/music/{class}/{name}), et BitVoice décode lui-même les MP3 (MPEG-1, 2 et 2.5 Layer III, avec un décodeur qui donne les mêmes échantillons que minimp3).
Radio sur Internet. Une classe peut diffuser un flux au lieu de ses morceaux : entrez l'adresse d'un flux MP3 (Icecast, Shoutcast, la plupart des radios sur Internet) sous Radio sur Internet. BitVoice se connecte lorsque le premier appelant est mis en attente avec cette classe, diffuse le flux unique à tous ceux qui attendent et se déconnecte une demi-minute après le départ du dernier. Lorsque le flux ne peut pas être atteint, les morceaux de la classe elle-même sont diffusés (ou la tonalité d'attente, sans morceaux), et la classe indique pourquoi.
| Qui l'entend | Quelle musique |
|---|---|
| quelqu'un mis en attente | la musique choisie sur l'extension de la personne qui met en attente, sinon la musique par défaut |
| un appelant garé | la musique de la personne qui l'a garé, sinon la musique par défaut |
| un appelant en attente dans une file d'attente | la musique de la file d'attente, sinon la musique par défaut |
| un appelant en attente d'un animateur de conférence | la musique par défaut |
Par défaut pour tous peut être la tonalité d'attente, de sorte que rien ne change jusqu'à ce que vous choisissiez de la musique. Choisir la tonalité d'attente sur une file d'attente ou une extension conserve la tonalité là.
Annuaire par nom
/directoriesUn annuaire par nom (chapitre 22) permet aux appelants de joindre quelqu'un sans connaître son numéro : ils épèlent les premières lettres du nom sur le clavier (2 pour ABC, 3 pour DEF, jusqu'à 9 pour WXYZ) et sont mis en relation.
- Ajouter un annuaire, lui donner un nom et un numéro (411, par exemple) ou laisser le numéro vide et l'utiliser comme option de menu.
- Choisissez ce que les appelants épèlent : le nom de famille (le plus courant), le prénom, ou les deux.
- Choisissez qui est répertorié, ou personne pour répertorier tout le monde avec un téléphone.
Les appelants entendent « Veuillez entrer les trois premières lettres du nom de la personne ». Une correspondance est mise en relation immédiatement. Plusieurs correspondances sont lues, huit à la fois : le nom de chaque personne, puis « pour appeler cette personne, appuyez sur 1 », 2 et ainsi de suite, avec 9 pour plus de noms. Aucune correspondance : « Personne ne correspond », et ils réessayent (trois essais).
Noms parlés : enregistrez le nom de chaque personne sur son extension (Nom parlé : enregistrez dans le navigateur ou téléchargez un fichier), et l'annuaire le dit ; jusqu'à ce que vous l'ayez enregistré, il lit le numéro d'extension. Les mots de l'annuaire lui-même proviennent des invites d'annuaire dans Sounds (chapitre 20), dans sa langue.
Accès téléphonique (DISA)
/dial-inUn accès téléphonique (chapitre 23) (DISA, « direct inward system access ») permet à quelqu'un d'appeler depuis l'extérieur, de prouver qui il est et d'appeler à nouveau à travers le bureau : l'appel sort avec l'identifiant d'appelant du bureau, ses routes et ses tarifs, comme s'il était à son bureau.
- Ajouter un accès téléphonique, et définir un PIN (4 à 10 chiffres), les numéros autorisés à l'utiliser (Uniquement à partir de ces numéros), ou les deux. L'un des deux est requis.
- Choisissez l'extension dont les appels sont effectués : sa permission d'appel sortant, son identifiant d'appelant et ses routes sortantes s'appliquent. Il doit être autorisé à effectuer des appels sortants.
- Donnez-lui un numéro à composer à l'intérieur et envoyez un numéro de téléphone à Call routing (chapitre 8) (choisissez l'accès téléphonique comme destination).
Les appelants entendent « Veuillez entrer votre PIN, puis appuyez sur la touche dièse », puis « Veuillez entrer le numéro à appeler, puis appuyez sur la touche dièse », et sont mis en relation. Les mots proviennent des invites d'accès téléphonique dans Sounds (chapitre 20).
Robots vocaux (AudioSocket)
/voice-botsUn robot vocal (chapitre 24) est un programme que vous créez (un agent IA, un IVR de reconnaissance vocale, un enregistreur) qui prend les appels via AudioSocket, le protocole simple utilisé par Asterisk : BitVoice répond à l'appel, ouvre une connexion TCP vers le robot et envoie l'UUID de l'appel, puis le son du appelant sous forme de trames de 20 ms de 8 kHz d'audio linéaire 16 bits et chaque touche enfoncée ; tout son que le robot envoie est joué à l'appelant. Les robots et les connecteurs de services vocaux écrits pour AudioSocket d'Asterisk fonctionnent avec BitVoice sans modification.
- Ajouter un robot vocal : son nom, l'adresse du robot (
10.0.0.9:9092) et, facultativement, un numéro pour le composer. - Choisissez où l'appelant va si le robot ne peut pas prendre l'appel, ou s'il est interrompu (une personne, une file d'attente, une messagerie vocale) : obligatoire, afin qu'aucun appelant ne soit jamais abandonné parce qu'un robot est hors service.
- Envoyez des appels à partir de Routing des appels (chapitre 8), d'une option de menu, d'un planning ou d'un basculement.
Lorsque le robot envoie une fin d'appel AudioSocket, l'appel se termine ; lorsque l'appelant raccroche, le robot reçoit une fin d'appel. Un robot qui ne peut pas être joint dans les trois secondes, ou dont la connexion est interrompue sans fin d'appel, passe l'appelant à la destination de secours, et la défaillance est consignée.
Pour intégrer un programme dans un appel déjà en cours (un transcrieur qui écoute, un assistant qui chuchote à personne), utilisez les médias externes ARI : voir Compatibilité Asterisk (chapitre 70).
Basculants jour/nuit
/togglesUn basculant jour/nuit (chapitre 25) est un commutateur pour un flux d'appels (FreePBX l'appelle contrôle du flux d'appels). Les appels envoyés à celui-ci vont à sa destination normale, ou à l'autre destination pendant que quelqu'un l'a basculé : le bureau ferme plus tôt en raison d'une tempête, quelqu'un compose *281 en partant, et les appels vont à la messagerie vocale jusqu'à ce qu'il soit rétabli le lendemain matin. Il reste tel qu'il a été laissé, même en cas de redémarrage.
- Ajouter un basculant, donnez-lui un code (1 à 3 chiffres : composé après
*28) et choisissez où les appels vont normalement et lorsqu'ils sont basculés. Chacun des deux côtés peut être un planning, afin qu'un basculant puisse être placé devant les heures d'ouverture et les remplacer. - Choisissez qui peut le basculer à partir d'un téléphone (personne choisie permet à n'importe quelle extension).
- Envoyez des appels à partir de Routing des appels (chapitre 8), d'une option de menu ou d'un planning, comme n'importe quelle autre destination.
Basculer en composant *28 et son code (un ton montant : basculé ; un ton descendant : revenu à la normale), avec le basculant à côté de lui sur la page Basculants, ou via l'API (POST /api/toggles/{id}/state). Une touche de lampe de veille qui surveille *281 est allumée pendant que ce basculant est basculé, afin que la personne qui ferme puisse le voir depuis son bureau. Le code du basculant lui-même se trouve sur Codes de fonction (chapitre 32).
Horaires
/schedulesUn horaire envoie les appels d'une façon lorsque vous êtes ouvert et d'une autre façon lorsque vous êtes fermé. Pointez une route d'entrée vers un horaire, et l'horaire vers le menu (ouvert) et la messagerie vocale (fermé).
Heures d'ouverture
Chaque ligne d'heures est un ensemble de jours et une heure de et à. Plusieurs lignes sont autorisées : du lundi au vendredi 9h00 à 17h00, et samedi 10h00 à 13h00. Les heures peuvent chevaucher minuit (22h00 à 06h00) pour les postes de nuit.
Jours fériés
Les jours fériés comptent comme fermés toute la journée, quel que soit ce que disent les heures. Ajoutez chaque date avec un nom ; le nom est affiché sur Flux d'appel (chapitre 16) lorsque vous essayez un appel ce jour-là.
Fuseau horaire
Le fuseau horaire est celui des Paramètres. Lorsque les horloges changent, les horaires suivent l'heure locale.
Scripts (JavaScript et Lua)
/scriptsUn script décide où un appel va lorsque les menus, les horaires et les groupes ne suffisent pas : les appelants d'une zone à un bureau, les numéros VIP directement à une personne, une décision à partir de vos propres données. Ou, défini sur Exécute l'appel complet, il répond à l'appel et le gère, comme un plan de composition Asterisk ou un script AGI : invites et parole, touches, enregistrements, sonneries de personnes, transmission (ci-dessous). Les scripts sont écrits en JavaScript ou Lua sur Scripts (chapitre 27).
Conçu pour être sécurisé
- Un script de routage s'exécute pendant au plus 200 ms. Si cela échoue ou prend trop de temps, l'appel va au fallback du script, afin qu'une erreur ne perde jamais un appel. (Les scripts d'appel ont leurs propres limites, ci-dessous.)
- Il s'exécute dans un bac à sable : il ne peut pas atteindre le réseau ou le disque. Un script de routage ne choisit que ; un script d'appel ne peut faire que les étapes répertoriées ci-dessous, pour son propre appel.
- Les appels d'urgence n'exécutent jamais de scripts.
Ce qu'un script voit
call a :
| Champ | Ce que c'est |
|---|---|
from, fromName | le numéro et le nom de l'appelant |
to | le numéro composé |
direction | inbound ou internal |
trunk | le trunk par lequel il est arrivé |
weekday, hour, minute | l'heure actuelle (0 est dimanche) |
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
Utiliser un script
Pointez une route d'entrée, une touche de menu ou un planning vers le script, comme vers n'importe quelle destination. Test l'exécute avec un appel que vous décrivez, sans passer d'appel ; la liste d'exécution montre chaque exécution réelle avec sa décision, le temps pris et toute erreur. Le flux d'appel (chapitre 16) exécute également les scripts lors de la tentative d'un appel.
Scripts qui exécutent l'appel entier
Choisissez Exécute l'appel entier. Le script répond alors à l'appel et va de haut en bas, chaque étape attendant jusqu'à ce qu'elle soit terminée :
| Étape | Ce qu'elle fait |
|---|---|
play(name) | joue une invite de Sons (chapitre 20) dans la langue de l'appelant (goodbye, digit-5...), digits:1234, ou un ton : beep, confirm, error, off, hold. Une invite non enregistrée est un beep. |
say(text) | parle les mots avec le service de synthèse vocale dans les Paramètres, IA (un beep sans celui-ci) |
collect({max, timeout, interDigit, end, say, prompt}) | collecte les touches : au maximum max (32), en attendant timeout secondes pour la première (5) et interDigit pour chaque touche suivante (3), jusqu'à end (#). say ou prompt demande d'abord. Retourne les touches, "" si aucune. |
record({box, seconds, beep}) | enregistre un message dans la boîte vocale d'une extension, jusqu'à # ou le temps ; retourne ses secondes |
wait(seconds) | attend, retournant une touche enfoncée |
dial(destination, ringSeconds) | sonne avec l'appelant qui entend le signal de sonnerie. Répondue : ils parlent et le script est terminé (true). Non répondu : false, et le script continue. |
transfer(destination) | passe l'appel ; le script est terminé |
hangup() | termine l'appel |
log(text) | écrit dans la liste d'exécution |
Une destination est un numéro (une extension, un groupe de sonnerie ou une file d'attente ici, sinon un numéro extérieur via les routes de sortie ; jamais un numéro d'urgence) ou {type, target} comme ci-dessus. Une touche enfoncée pendant un son l'arrête ; play et say retournent la touche et la prochaine collect commence avec elle. Retourner une destination envoie l'appel vers celle-ci.
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 a les mêmes étapes (collect{max = 1}). Donnez au script un Numéro pour le composer pour l'appeler à partir d'une extension.
Ses limites maintiennent l'appel en sécurité : le code propre du script peut s'exécuter au maximum un quart de seconde entre deux étapes ; un appel prend au maximum 1 000 étapes ; et le script entier s'arrête après son Temps d'exécution le plus long (10 minutes à moins que vous ne le spécifiiez, 60 au maximum). Lorsqu'il échoue, est arrêté ou se termine sans raccrocher ou transférer l'appel, l'appel va à sa Valeur par défaut ; un appelant qui raccroche l'arrête immédiatement. Essayer exécute le script avec les touches que vous dites que l'appelant enfonce et liste chaque étape, sans appel réel.
Réceptionniste IA, triage de la messagerie vocale et questions
/receptionistsLes fonctionnalités IA utilisent le service IA défini dans Paramètres (chapitre 14) : un service compatible OpenAI (OpenRouter par défaut) ou un que vous exécutez vous-même. Ce dont ils ont besoin est envoyé là-bas, donc choisissez un service en qui vous avez confiance pour les appels ; pour un centre d'appel d'urgence 911, son propre cloud gouvernemental compte comme local.
Réceptionniste IA
Choisissez un réceptionniste comme destination des appels : une route, une option de menu ou une extension Si personne ne répond. Il indique qu'il est automatisé, répond uniquement à partir de Informations approuvées, prend un message, réserve un rappel (voir Rappels (chapitre 30)), ou transfère à Une personne est. Appuyer sur 0 ou demander une personne atteint toujours quelqu'un, et tout problème avec le service IA ou le modèle de parole : les appelants ne sont jamais bloqués avec lui.
Modèles
Modèle effectue le travail de texte : résumés, les réponses du réceptionniste et les questions en termes clairs. La conversion de la parole en texte nécessite un modèle qui prend en charge l'audio ; définissez-le comme Modèle de reconnaissance vocale (par exemple google/gemini-2.5-flash sur OpenRouter) pour utiliser un modèle texte uniquement pour le reste, comme meta-llama/llama-3.3-70b-instruct.
Reconnaissance de la parole dans l'entreprise
La parole peut être transcrite sans modèle de langage : un système de reconnaissance de la parole (whisper) entend l'audio et écrit ce qui a été dit, rien de plus. Qui transcrit la parole, dans les paramètres d'IA, propose trois choix :
- Le modèle ci-dessus : l'audio est envoyé au service d'IA, dont le modèle doit accepter l'audio.
- Ce serveur : BitVoice exécute whisper lui-même. Choisissez un Modèle Whisper et enregistrez : BitVoice le récupère une fois à partir du projet whisper.cpp (
basefait 60 Mo ;small,mediumetlarge-v3-turbosont plus précis et plus lents ; tous comprennent environ 100 langues), le vérifie contre son code SHA-256 publié, et démarre lewhisper-serverde whisper.cpp sur 127.0.0.1 à côté, le redémarrant s'il s'arrête. L'audio des appelants ne quitte jamais l'ordinateur et rien n'est payé par appel. Lewhisper-server(licence MIT) est inclus dans les téléchargements de BitVoice à côté du programme, et les installateurs le placent à côté de BitVoice ; BitVoice le trouve également installé seul (brew install whisper.cpp). Les paramètres indiquent où il en est (récupération du modèle, démarrage, exécution ou pourquoi il ne fonctionne pas), tout comme État de santé (chapitre 13). Tant qu'il ne fonctionne pas, les transcriptions échouent et indiquent pourquoi : elles ne sont jamais envoyées ailleurs à la place. - Un service de reconnaissance de la parole : le
whisper-serverde whisper.cpp sur un autre ordinateur dans l'entreprise (http://192.168.1.20:8178/inference), pour une machine avec une carte graphique servant plusieurs serveurs BitVoice, ou tout service compatible OpenAI…/audio/transcriptions(avec Son modèle, tel que whisper-1, et Sa clé). Lehttpsimple n'est accepté qu'à partir de cet ordinateur ou d'une adresse de réseau privé ; tout autre doit êtrehttps. Pour exécuter un :whisper-server -m ggml-base-q5_1.bin --host 0.0.0.0 --port 8178 -l auto.
Quoi que l'on écrive, chaque transcription va là : messagerie vocale, appels enregistrés, appels 911 en direct et réceptionnistes qui entendent les appelants. Sans le modèle, le Modèle peut être laissé vide : les transcriptions sont écrites, les résumés sont écrits à partir des faits mentionnés (ci-dessous) et ce qui nécessite un modèle de langage (éléments d'action, triage de la messagerie vocale, aperçu des appels, réponses des réceptionnistes, demandes en termes clairs) est omis. Les notes qu'un recognitor fait sur ce qu'il a entendu, telles que [BLANK_AUDIO] ou (silence), sont supprimées, afin qu'une période calme ne lise jamais comme si quelque chose avait été dit.
Faits mentionnés sur l'appel (pas de modèle de langage)
Chaque transcription est également lue par des règles, sans modèle de langage, pour les faits que note un preneur d'appel : ce qui s'est passé, où, combien de personnes sont blessées (ou que personne ne l'est), les conditions (respiration, éveil, saignement...), les dangers (incendie, fumée, gaz, armes, produits chimiques, carburant), les véhicules, qui est l'appelant par rapport à la personne en besoin, et un numéro de rappel. Chaque fait est affiché avec la phrase dont il provient et le côté qui l'a dit, dans les Faits mentionnés sur l'appel de la transcription. Sans modèle, le résumé est écrit à partir de ces faits seuls et le mentionne.
- Rien n'est ajouté qui n'a pas été dit. "Personne n'est blessé" est un fait en soi ; un appelant qui transmet les paroles de quelqu'un d'autre ("elle dit qu'il ne respire pas") est marqué rapporté ; "24 Pine Lane. Non, désolé, 42" conserve 42 ; un simple "non" répond à la question posée juste avant.
- Il est fidèle, mais pas complet : les mots qu'il ne connaît pas sont manqués. Sur trois ensembles d'appels 911 inventés (pas de mots réels d'un appelant), il trouve :
| Ensemble | Faits trouvés | Faits trouvés que personne n'attendait |
|---|---|---|
| Formation (les règles ont été écrites à partir de celui-ci) | 41 sur 41 | 0 |
| Retenue, noté froid, avant que toute règle ne soit écrite à partir de celui-ci | 27 sur 40 (67%) | 2 |
| Retenue, après un deuxième cycle de règles écrites à partir de ses manques | 40 sur 40 | 0 |
| Scellé, noté froid (aucune règle n'est jamais écrite à partir de celui-ci) | 23 sur 43 (53%) | 3 |
Le score scellé est celui auquel on peut s'attendre pour les appels qu'il n'a pas vus, et les trois ensembles ont été écrits par les mêmes personnes que les règles, donc les appels réels feront probablement pire. Lisez les faits à côté de la transcription, jamais à la place de celle-ci.
Les modèles plus importants nécessitent plus de processeur : un serveur qui écrit de nombreux appels à la fois doit commencer avec base, ou utiliser une machine avec un GPU comme service de reconnaissance vocale pour l'immeuble. Sur les ordinateurs Apple, whisper utilise le GPU.
Triage de la messagerie vocale
Avec Transcrire et résumer la messagerie vocale activé, chaque message est également marqué urgent, normal ou basse priorité, avec son type (ventes, support, facturation...). Les messages urgents déclenchent une alerte sur l'écran de chaque administrateur.
Demander en termes clairs
Sur Modifications (chapitre 61), décrivez une modification ("envoyer les appels de vente à la messagerie vocale après 17 heures"). L'IA propose celle-ci, BitVoice la vérifie comme n'importe quelle autre modification et affiche exactement ce qui changerait. Rien ne change jusqu'à ce que vous appuyiez sur Appliquer, et cela devient une révision que vous pouvez restaurer. Les mots de passe ne sont jamais envoyés à l'IA.
Boîte vocale
/voicemailChaque extension peut avoir une boîte vocale. Les appelants qui ne sont pas répondu entendent son message d'accueil et laissent un message ; la personne l'entend sur son téléphone, le lit sur l'écran ou le reçoit par e-mail.
L'activer
Sur l'extension, activez Boîte vocale. Si personne ne répond est alors défini sur la boîte vocale. Donnez-lui un PIN (4 à 10 chiffres) : il ouvre la boîte vocale à partir d'un autre téléphone, et connecte la personne au portail du personnel et aux postes de travail partagés.
| Paramètre | Ce qu'il fait |
|---|---|
| Message le plus long | 10 à 900 secondes (180 par défaut) |
| E-mail de nouveaux messages | à l'adresse e-mail de l'extension, avec le message en pièce jointe |
| Message d'accueil | enregistré dans le navigateur, téléchargé ou enregistré à partir du téléphone ; sans celui-ci, les appelants entendent un beep |
L'écouter
- À partir du téléphone de l'extension, composez
*97: les messages sont joués du plus récent au plus ancien ; les touches les rejouent, les suppriment ou les gardent. - À partir de n'importe quel autre téléphone, composez
*97, entrez le numéro de la boîte vocale et son PIN. - Sur Boîte vocale (chapitre 29) (administrateurs) ou dans le portail du personnel (la personne) : jouer, marquer comme lu, supprimer.
- La lumière des messages du téléphone est allumée tant qu'il y a des messages non lus.
Avec l'IA
Avec Transcrire et résumer la boîte vocale activé (Paramètres, IA), chaque message est écrit, résumé en une ligne et marqué urgent, normal ou faible priorité avec son type (ventes, support, facturation). Les messages urgents déclenchent une alerte sur l'écran de chaque administrateur. Voir IA (chapitre 28).
Nettoyage du son
Nettoyage du son (Paramètres) supprime le bruit de fond constant et égalise les niveaux au fur et à mesure que les messages sont enregistrés, afin qu'un message provenant d'une voiture ou d'une rue animée soit plus facile à entendre.
Appels en rappel
/callbacksLes personnes qui ont demandé à être rappelées. Un réceptionniste IA programme un rappel lorsqu'un appelant le demande : il collecte leur nom, le numéro à appeler (en proposant celui qu'ils utilisent pour appeler), un bon moment et de quoi il s'agit, les leur lit et ne programme le rappel que lorsque l'appelant est d'accord. Il ne promet jamais un moment exact. Les administrateurs peuvent également ajouter des rappels manuellement.
Un nouveau rappel affiche une alerte sur chaque écran ouvert et est envoyé par courriel au propriétaire de la boîte aux lettres du réceptionniste Prendre des messages pour lorsqu'il a une adresse courriel et que les courriels sont configurés dans les Paramètres.
Pour rappeler, choisissez votre extension et appuyez sur Rappeler : votre téléphone sonne d'abord, et lorsque vous décrochez, BitVoice appelle le numéro pour vous, avec vos itinéraires et votre identifiant d'appelant normaux. Ensuite, ajoutez une note si vous le souhaitez et appuyez sur Terminé (ou Annuler). Les rappels terminés sont conservés en dessous des rappels ouverts et peuvent être rouverts.
Liens d'appel et appel de site Web
/call-linksUn lien d'appel est une adresse Web qui fait sonner votre entreprise à partir de n'importe quel navigateur : pas de numéro de téléphone, pas d'application. Placez-le dans une signature de courrier électronique, imprimez son code QR sur une feuille de papier ou une vitrine, ou collez le bouton de site Web dans votre site.
Sur Liens d'appel (chapitre 31), ajoutez un lien, choisissez où ses appels sont acheminés (une extension, un groupe, une file d'attente, un menu, la réceptionniste virtuelle, un horaire ou une messagerie vocale), puis enregistrez : la page affiche son adresse et son code QR. L'appelant voit le titre et les mots que vous avez définis, indique son nom si vous le lui demandez, autorise le microphone et appuie sur Appeler maintenant ; le clavier fonctionne pour les menus. La personne qui répond voit Web : et le nom de l'appelant.
Basculez Ouvert sur désactivé pour fermer la ligne (la page le signale). Appels simultanés limite le nombre de personnes qui peuvent appeler via un lien (5 sauf si configuré). L'adresse contient une partie aléatoire longue afin qu'elle ne puisse pas être devinée ; les adresses incorrectes répétées sont bloquées comme les connexions incorrectes. Les microphones des appelants ont besoin que la page soit servie sur HTTPS, donc distribuez l'adresse HTTPS.
Appels quotidiens
Ce que les gens font sur leurs téléphones chaque jour, et ce qu'ils configurent pour eux-mêmes : transfert, suivi, prise d'appel, salles de conférence, appel de groupe, postes de travail partagés, télécopies et messages texte.
Codes de fonction, transfert et numéros de vitesse
/codesLes codes de fonction sont ce que les gens composent sur leurs téléphones pour modifier leurs propres paramètres et accéder aux fonctionnalités. Ils fonctionnent sur chaque téléphone, téléphone de bureau ou téléphone logiciel, sans aucune configuration sur le téléphone lui-même. Un ton montant signifie terminé ; un ton descendant signifie refusé.
Les codes en un coup d'œil
| Code | Ce qu'il fait |
|---|---|
*72 | transférer chaque appel (puis le numéro et #, ou le numéro directement après : *722125550199) |
*73 | arrêter de transférer chaque appel |
*90 / *91 | transférer lorsqu'on est sur un appel / arrêter |
*52 / *53 | transférer lorsqu'un appel n'est pas répondu / arrêter |
*78 / *79 | ne pas déranger activé / désactivé |
*76 | basculer ne pas déranger (ton montant : maintenant activé) |
*21 | basculer le suivi d'appel sur et hors |
*8 | répondre à un appel qui sonne dans votre groupe de prise d'appel |
** et une extension | répondre à l'appel qui sonne sur cette extension |
*80 et une extension | interphone : ce téléphone répond sur son haut-parleur |
*0 et un code | un raccourci |
*62 | appel de réveil : l'entendre, en réserver un (quatre chiffres, tels que 0630) ou l'annuler (étoile) |
*68 et un chiffre | état de la chambre, pour le service d'entretien ménager dans les hôtels |
*28 et un code de basculement | basculer un commutateur jour/nuit (chapitre 25) sur ou arrière |
*32 | bloquer le dernier appelant : le dernier numéro extérieur qui a sonné sur ce téléphone est ajouté à la liste de blocage (Protection contre les spams (chapitre 56)) |
*43 | le test d'écho |
*97 | votre messagerie vocale |
70 | garer un appel (le transférer ici) ; 71 à 79 le reprendre |
*45 / *46 | agents de file d'attente : se connecter ou déconnecter / mettre en pause ou reprendre |
*33 / *34 | se connecter / déconnecter à un poste de travail partagé |
*7 / *8 pendant un appel | mettre en pause et reprendre l'enregistrement (paiements par carte) |
Transfert
*72transfère chaque appel. Composez-le, entendez un ton, puis composez le numéro et #. Ou composez le numéro directement après le code.*90transfère les appels qui arrivent pendant que vous êtes sur un appel.*52transfère les appels que vous ne répondez pas dans votre temps de sonnerie.*73,*91et*53les annulent.
Le transfert vers une autre extension utilise les paramètres propres à cette extension (sa messagerie vocale, son suivre-moi), jusqu'à quatre sauts afin que deux personnes ne puissent pas se transférer l'une à l'autre en boucle. Le transfert vers un numéro extérieur passe par les routes sortantes, comme si la personne avait composé le numéro, et nécessite que l'extension soit autorisée à effectuer des appels sortants.
Le transfert est un état actif, et non une configuration : le paramétrer ne crée pas de révision, et il est conservé lors des redémarrages. Les extensions (chapitre 3) et le portail du personnel affichent et modifient également cela.
Ne pas déranger
*78 activé, *79 désactivé, *76 bascule. Avec ne pas déranger activé, les appels vont à la messagerie vocale, ou à la destination de non-réponse de l'extension. Ne pas déranger paramétré manuellement l'emporte sur le calendrier (Calendriers (chapitre 39)). Les rappels d'urgence sonnent toujours.
Suivre-moi
*21 bascule le suivi d'appel sur et hors, pour les extensions qui ont des numéros de suivi définis (sur l'extension, ou dans le portail du personnel). Le poste de travail sonne d'abord pendant son temps de sonnerie, puis les numéros de suivi, les uns après les autres ou tous ensemble. Sur un numéro extérieur avec appuyer sur 1 activé, la personne entend un signal et appuie sur 1 pour prendre l'appel ; une boîte vocale ou un silence ne le fait jamais, et après 15 secondes l'appel passe à l'étape suivante.
Répondre à l'appel de quelqu'un d'autre
*8répond à l'appel le plus ancien qui sonne pour n'importe qui dans votre groupe de prise d'appel (défini sur chaque extension ; les noms sont comparés sans tenir compte des majuscules).**et un numéro d'extension répond à un appel qui sonne pour cette extension :**101.
Interphone
*80 et un numéro d'extension appelle avec réponse automatique : son téléphone répond sur le haut-parleur, et les deux côtés parlent. Yealink, Grandstream et Snom lisent l'en-tête Call-Info de BitVoice, Poly lit Alert-Info ; certains téléphones nécessitent que l'interphone soit autorisé dans leurs propres paramètres. Une extension peut refuser l'interphone ; alors l'appel sonne comme d'habitude. Les postes de contrôle d'accès ne prennent jamais d'interphone.
Appels rapides
*0 et un code compose un numéro enregistré : *05. Les appels rapides de l'entreprise sont sur cette page ; chaque personne peut en avoir ses propres sur son extension ou dans le portail du personnel, et les siens prennent le pas sur ceux de l'entreprise avec le même code. Les codes sont de 1 à 3 chiffres.
Modification des codes
Chaque code peut être modifié sur Codes de fonctionnalité (chapitre 32), ou désactivé avec le mot off. Deux fonctionnalités ne peuvent pas partager un code, et aucun code ne peut être le numéro d'une extension ou d'un groupe : BitVoice indique lequel est en conflit. Les numéros d'écho, de boîte vocale et de parc sont dans Paramètres (chapitre 14).
Le portail du personnel
Le portail du personnel permet à chacun de gérer ses propres appels sans un administrateur : ne pas déranger, transfert, suivre-moi, numéros de vitesse, messagerie vocale et son message d'accueil, son code PIN, et une liste de ses propres appels. Il est à #/me sur l'adresse de ce serveur et est lié à partir de la page de connexion.
Connexion
Les personnes se connectent avec leur numéro d'extension et leur code PIN de messagerie vocale : le même code PIN qui ouvre leur messagerie vocale à partir d'un téléphone et les connecte aux postes de travail partagés. Une extension sans code PIN ne peut pas se connecter ; un administrateur définit un code PIN sur l'extension.
Les tentatives erronées répétées à partir d'une adresse verrouillent celle-ci pendant dix minutes. Une session de portail n'accède qu'aux paramètres de la personne : jamais à une autre extension, à la configuration ou aux enregistrements de quelqu'un d'autre.
Ce que les personnes peuvent faire
| Onglet | Ce qui s'y trouve |
|---|---|
| Où vont les appels | ne pas déranger ; transfert de chaque appel, lorsqu'il est occupé et lorsqu'il n'est pas répondu ; numéros de suivre-moi ; numéros de vitesse personnels |
| Messagerie vocale | messages à lire et à supprimer, avec transcriptions et résumés lorsque l'IA est activée ; enregistrer ou télécharger le message d'accueil |
| Vos appels | les appels personnels, les plus récents en premier, sans enregistrements |
| Code PIN | modifier le code PIN, en fournissant le code PIN actuel |
Le transfert et le ne pas déranger définis ici sont les mêmes que ceux définis à partir du téléphone avec les codes de fonction (Codes de fonction (chapitre 32)) : celui qui a été défini en dernier est en vigueur. Les numéros de suivre-moi et les numéros de vitesse font partie de la configuration de l'extension, donc les modifier crée une révision sur Changements (chapitre 61), enregistrée comme étant celle de la personne.
Le transfert vers un numéro externe ne fonctionne que pour les extensions autorisées à appeler des numéros externes. Le portail indique cela plutôt que d'enregistrer un transfert qui ne pourrait jamais sonner.
Chat et présence
L'onglet Chat du portail liste les collègues avec leur état actuel : disponible, en appel, sonnerie, absent (ne pas déranger, une réunion ou un congé en fonction de leur calendrier, avec la raison) ou hors ligne (aucun téléphone connecté), ainsi que le statut qu'ils ont saisi ("À déjeuner, de retour à 14h"). Choisissez quelqu'un pour lui envoyer un message ; les messages arrivent immédiatement, et un numéro à côté d'un nom indique les messages non lus. Les salles d'équipe (Paramètres, Chat du personnel) sont des conversations pour un groupe ou pour tout le monde lorsque la salle ne liste aucun membre.
Les messages ne sont jamais vus que par les personnes dans la conversation : les administrateurs gèrent les salles, mais n'en lisent jamais. Paramètres, Chat du personnel permet de désactiver le chat et de définir la durée de conservation des messages (0 conserve les 1000 derniers messages de chaque conversation).
Salles de conférence
/conferencesUne salle de conférence est un numéro que les personnes composent pour discuter ensemble. Le personnel compose ce numéro depuis leur poste de travail ; les appelants externes y accèdent via une route d'entrée ou une option de menu qui pointe vers la salle.
Configuration d'une salle
- Ouvrez Salles de conférence (chapitre 34) et appuyez sur Ajouter une salle de conférence.
- Donnez-lui un numéro (n'importe quel numéro libre, 500 par défaut) et un nom.
- Définissez éventuellement un code PIN. Les appelants entendent un ton, saisissent le code PIN et appuyent sur #. Trois codes PIN incorrects et l'appel est terminé.
- Définissez éventuellement un code PIN de leader, différent du code PIN. La personne qui le saisit rejoint en tant que leader.
- Pour autoriser les appelants externes, pointez une route d'entrée (ou une touche de menu) vers la salle.
Options
| Option | Ce qu'elle fait |
|---|---|
| Attendre le leader | les autres entendent la tonalité d'attente jusqu'à ce qu'un leader rejoigne ; lorsque le dernier leader quitte, la salle se ferme et tout le monde est déconnecté. Nécessite un code PIN de leader. |
| Membres rejoignent en mode muet | pour les briefings et les conférences : les leaders parlent, les membres écoutent. Un membre appuye sur 1 pour demander à parler, et un leader le démute. |
| Enregistrer la salle | toute la salle est enregistrée en un seul enregistrement dans Historique des appels (chapitre 47), sauf si l'enregistrement est désactivé pour l'ensemble du système |
| Tonalités lors de l'arrivée et du départ des personnes | activé par défaut |
| Nombre maximum de personnes | 50 par défaut, jusqu'à 200 |
Touches pendant un appel
1met en sourdine et retire la sourdine (dans une salle où les membres sont muets, cela demande à parler).2, pour un leader, verrouille la salle pour que personne ne puisse rejoindre, et la déverrouille.
Pendant que la salle est utilisée
La page affiche chaque salle en cours d'utilisation : qui est à l'intérieur, qui parle (la lumière verte), qui est muet, qui a demandé à parler et qui attend toujours le leader. Un administrateur peut mettre en sourdine ou retirer la sourdine de n'importe qui, supprimer quelqu'un et verrouiller ou déverrouiller la salle.
Tout le monde dans une salle entend tout le monde qui n'est pas muet, mélangé par BitVoice ; chaque téléphone peut utiliser son propre codec. Un enregistrement d'appel est conservé pour chaque appel, et un pour la salle elle-même avec sa durée et son enregistrement.
Audio HD
Activez l'audio HD dans une salle (les nouvelles salles l'ont activé) et il est mélangé à 16 kHz au lieu de 8 : les personnes utilisant des téléphones à large bande (G.722, Opus, le téléphone navigateur) entendent les autres en HD, avec la netteté d'un appel moderne, tandis que les personnes utilisant des téléphones ordinaires (G.711, mobiles via un fournisseur) entendent la même salle comme d'habitude. La vue en direct indique la salle et chaque membre qui est en HD. L'audio HD nécessite G.722 parmi les codecs utilisés par les téléphones (il est en premier dans la liste du système, Paramètres, Codecs). Les enregistrements de la salle restent en qualité téléphonique.
Salles de vidéo
Définissez Vidéo sur une salle et les téléphones vidéo (et les logiciels de téléphone) qui la rejoignent envoient leur caméra et voient une image, commutée au fur et à mesure que les personnes parlent, comme dans ConfBridge d'Asterisk :
- Suivre l'orateur : tout le monde voit celui qui a parlé pendant une seconde, une fois que celui qui est à l'écran est resté silencieux pendant une seconde ; la personne à l'écran voit celle qui a parlé en dernier.
- Afficher le leader : tout le monde voit le leader (qui rejoint avec le code PIN de leader) ; le leader voit celui qui a parlé en dernier.
- Grille : tout le monde voit tout le monde en même temps, côte à côte (une image remplit l'écran, deux côte à côte, puis 2 par 2 et 3 par 3, jusqu'à neuf), chaque personne à sa place dans l'ordre où elle a rejoint, y compris elle-même.
BitVoice commute les images sans les décodrer, ce qui coûte presque rien, et demande à chaque nouveau téléphone d'envoyer un cadre complet (RTCP PLI et FIR, et la commande SIP INFO picture-fast-update que la plupart des téléphones de bureau répondent) afin que le commutateur s'affiche immédiatement. La vidéo de chaque membre utilise le codec vidéo de la salle (H.264 sauf si vous choisissez VP8) ; un téléphone sans codec vidéo rejoint avec le son uniquement. Chaque spectateur reçoit un flux stable (une source, son propre type de charge utile), quel que soit celui qui est à l'écran. La vue en direct indique qui a de la vidéo et qui est à l'écran.
Une grille est créée différemment : BitVoice donne chaque image à ffmpeg sur le serveur, qui les décode, les place dans une image de 1280 par 720 à 15 images par seconde, et les encode une seule fois pour tout le monde. Installez ffmpeg (Paramètres, Conversion vidéo, indique si il est trouvé) ; sans cela, une salle de grille suit le speaker et l'écran de la salle le signale. Chaque image coûte du temps de processeur : sur un petit serveur, limitez les grilles à quelques salles à la fois. Seuls les membres dont la caméra envoie des images sont affichés : quelqu'un qui rejoint sans vidéo ou dont la caméra s'arrête quitte la grille (elle ne gèle jamais sur une caméra fixe), et la grille est recréée dans les quelques secondes qui suivent, avec une courte pause dans l'image. Les membres à partir du dixième sont entendus mais non affichés. La vue en direct indique la taille de la grille et qui est dans la grille.
La vidéo de tout le monde (navigateurs)
Choisissez La vidéo de tout le monde et la salle obtient sa propre page (Salles de conférence, Ouvrir la salle de vidéo, ou #/video-room/NUMBER). Chacun y appuie sur Rejoindre avec ma caméra : le navigateur envoie sa caméra une seule fois, en trois tailles (simulcast), et reçoit chaque autre caméra dans sa propre image. BitVoice transmet les images telles qu'elles sont, sans les décodage (une unité de transfert sélectif, SFU), ce qui coûte donc peu de temps de processeur ; l'envoi de chaque navigateur et le téléchargement de chaque visionneur sont ce qui limite une salle, elle peut donc accueillir jusqu'à 16 caméras.
- L'image grande obtient la taille complète de cette caméra, les petites images obtiennent la petite taille ; Rendre grand les échange, et le commutateur se produit à la prochaine image complète de la nouvelle taille, que BitVoice demande immédiatement (RTCP PLI).
- Un navigateur qui manque d'envoi cesse d'envoyer sa plus grande taille ; les visionneurs obtiennent alors la plus grande taille encore en cours de réception.
- Le son est la conférence de la salle comme toujours : rejoindre appelle la salle sur le téléphone du navigateur, et quiconque compose le numéro de la salle à partir d'un téléphone est entendu et entend tout le monde. Les téléphones vidéo qui composent le numéro voient qui parle.
- Une salle avec un code PIN le demande sur la page. La page nécessite une connexion à BitVoice.
Partage d'écran : appuyez sur Partager mon écran et choisissez un écran, une fenêtre ou un onglet de navigateur dans le sélecteur propre au navigateur. Tous les participants dans la salle le voient comme une grande image, sous votre nom, avec du texte net (la fréquence d'images diminue plutôt lorsque le réseau est faible). Vous n'avez pas besoin de rejoindre avec votre caméra au préalable. Arrêter le partage, ou la barre Arrêter le partage propre au navigateur, met fin à l'opération.
- Une salle affiche un écran partagé à la fois : tandis que quelqu'un partage, le bouton des autres est en attente et indique qui partage. Un écran partagé ne compte pas parmi les 16 caméras.
- Quelqu'un d'autre peut être rendu image principale avec Rendre principal, comme avec les caméras ; l'écran reste dans la salle.
- Seule l'image de l'écran, jamais son son : le son de la salle reste sa conférence.
- Les téléphones qui ne peuvent pas partager un écran (la plupart des navigateurs de téléphone) affichent le bouton grisé. Les téléphones de bureau et autres téléphones vidéo qui composent le numéro de la salle ne voient pas les écrans partagés ; ils voient celui qui parle.
Paging et haut-parleurs de plafond
/pagingLe paging parle à travers de nombreux téléphones à la fois : composez un numéro de paging, et chaque téléphone du groupe répond sur son haut-parleur par lui-même. Utilisez-le pour les annonces à une entrepôt, une école, un atelier.
Configuration d'un groupe de diffusion
- Sur Diffusion (chapitre 35) appuyez sur Ajouter un groupe de diffusion et attribuez-lui un numéro (800 par défaut) et un nom.
- Choisissez les téléphones. Les haut-parleurs surplombs configurés en tant qu'extensions (type Haut-parleur surplomb) peuvent également en être membres.
- Facultativement, une adresse et un port multicast.
Multicast
Le multicast envoie également la page à une adresse et un port multicast (239.0.1.10:5000), au format G.711 µ-law, que les haut-parleurs surplombs et de nombreux téléphones de bureau peuvent écouter sans appel chacun. Un groupe peut n'avoir qu'une adresse multicast. Il fonctionne sur un seul réseau : les routeurs ne transmettent pas le multicast à moins d'être configurés pour cela.
Diffusion et interphone
| Diffusion | Interphone | |
|---|---|---|
| Qui entend | tout le monde dans le groupe | une extension |
| Réponse | non, à sens unique | oui, dans les deux sens |
| Comment | composer le numéro du groupe | *80 et l'extension |
Les téléphones qui ne répondent pas à une page par eux-mêmes dans quelques secondes sont exclus, donc un téléphone sans réponse automatique ne retarde jamais une page. Certains téléphones nécessitent une réponse automatique (interphone) autorisée dans leurs propres paramètres.
Poste de travail partagé
/phonesUn poste de travail partagé est un téléphone partagé qui devient celui de la personne qui s'y connecte : pour les bureaux où les personnes n'ont pas de postes de travail fixes. Créez-en un en activant Poste de travail partagé dans l'extension du téléphone (l'extension propre du poste, telle que 900 Poste 3).
Connexion et déconnexion
- Au téléphone, composez
*33et attendez le ton. - Entrez votre extension et #, et attendez le ton.
- Entrez votre code PIN de messagerie vocale et #. Un ton montant signifie que vous êtes connecté ; un ton descendant signifie que cela a été refusé.
À partir de ce moment, les appels à votre extension sonnent à ce poste ainsi qu'à vos autres téléphones, et les appels que vous passez à partir de celui-ci affichent votre numéro et votre nom et sont comptabilisés comme les vôtres dans les Coûts. Vous connecter à un autre poste vous y déplace. *34 vous déconnecte. Cinq tentatives incorrectes verrouillent le poste pendant dix minutes.
Gestion des postes de travail partagés
Sur Téléphones (chapitre 4), Postes de travail partagés affiche qui est connecté où ; les administrateurs peuvent connecter quelqu'un (sans son code PIN) ou le déconnecter. Les codes, ainsi qu'une heure chaque jour où tout le monde est déconnecté, se trouvent dans les Paramètres. Les connexions sont conservées après les redémarrages.
Appels d'hôtel et appels de réveil
/hotelAppels de réveil
N'importe qui peut réserver un appel de réveil : les invités, les postes de nuit, les personnes de garde. À partir de leur propre téléphone, ils composent *62 : BitVoice indique celui qui est réglé (si tel est le cas), puis ils saisissent l'heure sous forme de quatre chiffres (0630), ou appuient sur la touche étoile pour annuler. Sur Hôtel (chapitre 37) un administrateur réserve un pour n'importe quelle extension, une fois ou chaque jour.
Au moment où le téléphone sonne avec le nom du système ; répondu, il entend « Bonjour. C'est votre appel de réveil. » (la invite de réveil dans Sons (chapitre 20), dans la langue de l'invité ou de l'extension). Sans réponse, il est réessayé (3 tentatives, 5 minutes d'intervalle, les deux réglés sous Paramètres sur la page), et après la dernière, l'extension réception peut être appelée. Avec plusieurs serveurs, seul un effectue les appels de réveil.
Chambres d'hôtes
Activez Chambre d'hôtes sur l'extension de chaque téléphone de chambre. Sur Hôtel, chaque chambre affiche son invité, son appel de réveil et son statut de chambre, avec des boutons Enregistrement et Départ.
- Barres de chambres vacantes : les chambres sans personne enregistrée ne peuvent appeler que les extensions et les numéros d'urgence. Les appels d'urgence fonctionnent toujours.
- Effacer à la sortie : supprime la messagerie vocale de la chambre et annule son appel de réveil, la transfert et le mode « Ne pas déranger », prêt pour le prochain invité.
- La langue d'un invité (à partir de l'enregistrement) est la langue dans laquelle les invites de la chambre sont prononcées.
- Statut de la chambre : le service d'étage compose
*68et un chiffre depuis le téléphone de la chambre (*683) ; le système hôtelier décide de ce que chaque chiffre signifie.
Le système hôtelier (PMS)
- FIAS : BitVoice se connecte à l'interface FIAS du système hôtelier (Oracle Opera et les nombreux systèmes qui parlent FIAS) à son adresse et port. Il reçoit les check-in, les déplacements de chambre, les check-out et les réservations de réveil, et envoie les résultats de réveil, l'état de la chambre et les frais d'appel. Pendant que le lien est coupé, ce qu'il devrait envoyer attend et est envoyé lorsqu'il est rétabli ; la page indique si cela est connecté. Les enregistrements suivent la spécification FIAS 2.20.23 d'Oracle : BitVoice se décrit comme un système téléphonique (IF PB), les frais d'appel sont des frais directs (PT C) avec le montant dans la plus petite unité de la devise et les chiffres composés sans + ou espaces, et un résultat de réveil répète l'heure réservée à la seconde, afin que le système hôtelier puisse le faire correspondre à sa demande.
- API REST : le système hôtelier appelle
POST /api/hotel/rooms/<room>/checkin(nom, compte, langue),/checkout, etPUT /api/wakeups/<room>, avec une clé API à partir des Paramètres, Automation. Les frais sont publiés sous forme de JSON à l'adresse que vous fournissez. - Frais d'appel : les appels extérieurs répondues à partir des chambres occupées vont sur la facture de l'hôte, aux tarifs du trunk (à partir de Coûts (chapitre 54)) plus la majoration.
Contacts sur chaque téléphone
/contactsContacts est l'annuaire de l'entreprise : les fournisseurs, les clients et les autres bureaux que les gens appellent. Chaque téléphone répertorie celui-ci à côté des extensions, et lorsqu'un de ces numéros sonne, les téléphones et la carte de l'appelant affichent le nom du contact (lorsque le fournisseur n'a envoyé aucun nom). Un numéro correspond quelle que soit la façon dont il est écrit : +1 212 555 0100 et 2125550100 sont la même ligne.
Ajout de contacts
Ajouter un contact pour un à la fois, avec autant de numéros (travail, mobile, domicile, autre) qu'ils en ont. Importer prend une feuille de calcul enregistrée sous forme de CSV dont la première ligne nomme les colonnes : nom, entreprise, travail (ou téléphone), mobile, domicile, autre, e-mail, notes. BitVoice vérifie tout le fichier d'abord et indique quelles lignes sont incorrectes ; un contact avec le même nom qu'un contact existant est mis à jour plutôt que d'être ajouté deux fois, et Remplacer tous les contacts recommence la liste à zéro. Exporter télécharge la liste au format CSV.
Sur les téléphones de bureau
Les téléphones configurés par Téléphones (chapitre 4) (approvisionnement) reçoivent l'annuaire sans autre configuration :
- Yealink : un carnet d'adresses distant nommé Entreprise, actualisé toutes les heures.
- Grandstream : le téléchargement du carnet d'adresses, toutes les heures.
- Polycom : le fichier d'annuaire, lu lorsque le téléphone démarre.
- Snom : la liste est écrite dans les paramètres du téléphone, donc elle est mise à jour lorsque le téléphone vérifie à nouveau les paramètres.
Dans le téléphone navigateur
Contacts sous le clavier trouve un nom ou un numéro et le prépare pour l'appel.
Depuis Microsoft 365 ou Google Workspace
BitVoice peut garder les Contacts à jour avec l'annuaire de votre organisation : chaque personne qui a un numéro de téléphone, ainsi que les contacts partagés (les contacts de l'organisation d'Exchange ou les contacts de domaine partagés de Google). Dans les Paramètres (chapitre 14), Microsoft 365 et Google Workspace, choisissez le service, fournissez les informations nécessaires et appuyez sur Vérifier maintenant : il se connecte, compte les personnes et indique quelles extensions correspondent à une personne par adresse e-mail. Enregistrez, et les Contacts seront remplis dans les 30 secondes ; puis toutes les demi-heures, ou immédiatement avec Synchroniser les contacts maintenant.
Microsoft 365 (une inscription d'application ; vous devez être en mesure d'accorder un consentement d'administrateur) :
- Dans le centre d'administration Entra, Inscriptions d'applications, Nouvelle inscription : nommez-la BitVoice, locataire unique, sans adresse de redirection.
- Autorisations d'API, Ajouter une autorisation, Microsoft Graph, Autorisations d'application :
User.Read.All,OrgContact.Read.AlletCalendars.ReadBasic. Ensuite Accorder un consentement d'administrateur. - Certificats et secrets, Nouveau secret client : copiez sa valeur (affichée une seule fois).
- Dans BitVoice : l'ID de répertoire (locataire), l'ID d'application (client) et le secret. Un secret expire (Microsoft propose jusqu'à deux ans) : lorsqu'il expire, la carte indique que le secret a été refusé ; créez-en un nouveau et collez-le.
Google Workspace (un compte de service ; vous devez être un super administrateur) :
- Dans Google Cloud, dans l'un de vos projets : activez les API People et les API Google Calendar, créez un compte de service, et ajoutez une clé (JSON) à celui-ci.
- Dans la console d'administration Google, Sécurité, Contrôle d'accès et de données, Contrôles d'API, Délégation à l'échelle du domaine, Ajouter un nouveau : l'ID client du compte de service, avec les étendues
https://www.googleapis.com/auth/directory.readonly,https://www.googleapis.com/auth/calendar.freebusy. - Dans BitVoice : le fichier de clé, et l'e-mail d'un administrateur pour que le compte de service agisse en son nom.
Ce qui est importé :
- Les numéros de travail et mobile d'une personne, son nom, son adresse e-mail, ainsi que son titre et son département en tant que notes de contact ; le nom de l'organisation en tant qu'entreprise. Les personnes sans numéro sont exclues (un contact nécessite un numéro) ; les comptes désactivés sont également exclus.
- Les contacts issus du service sont marqués de son nom et sont modifiés à partir de celui-ci : la modification ou la suppression d'un contact ici est refusée, car la prochaine synchronisation l'annulerait. Les contacts créés ici ou importés à partir d'une feuille de calcul sont laissés inchangés.
- BitVoice ne lit que les informations. Son accès est limité aux autorisations de lecture seule ci-dessus, et le secret ou la clé est conservé avec les autres secrets : les utilisateurs ne le voient jamais, et les exports pour Git l'excluent.
Calendriers et ne pas déranger
/extensionsUne extension peut suivre le calendrier de sa personne : pendant les réunions et les congés, ses appels sont transférés à la messagerie vocale ou sont transférés (à une autre extension ou un mobile), au lieu de sonner un téléphone que personne ne répondra. Les groupes de sonnerie sonnent les autres pendant ce temps, et dans les files d'attente, l'agent est affiché comme Absent.
Dans l'extension, Calendrier et ne pas déranger, collez l'adresse privée du calendrier :
- Outlook : Paramètres, Calendrier, Calendriers partagés, Publier un calendrier ; choisissez le calendrier et "Peut voir tous les détails", puis copiez le lien ICS.
- Google Calendar : Paramètres, le calendrier sur la gauche, puis Adresse secrète au format iCal.
Vérifier le lit immédiatement et liste les prochaines périodes d'occupation. BitVoice lit chaque calendrier toutes les cinq minutes. Les congés (événements de toute la journée et "hors bureau" d'Outlook) comptent toujours ; les réunions comptent lorsque Les réunions comptent comme occupé est activé ; les événements marqués comme libres ne comptent jamais, ni les événements annulés. Les réunions récurrentes, avec des occurrences ignorées et déplacées, sont comprises. Si un calendrier ne peut pas être lu, la santé le signale.
Ne pas déranger maintenant arrête l'extension de sonner jusqu'à ce que cela soit désactivé, quel que soit ce que dit le calendrier. La liste des extensions montre qui est absent et jusqu'à quand.
L'adresse privée fonctionne comme un mot de passe : quiconque l'a peut lire ce calendrier, il est donc conservé avec les autres secrets.
Tous les calendriers à la fois : Microsoft 365 et Google Workspace
Au lieu d'une adresse privée par extension, BitVoice peut lire le calendrier de chaque personne à partir de Microsoft 365 ou Google Workspace : configurez-le une seule fois dans Paramètres (chapitre 14), Microsoft 365 et Google Workspace (voir Contacts (chapitre 38) pour les étapes), avec Les calendriers indiquent qui est absent activé. Chaque extension est associée à sa personne par son e-mail ; une avec une adresse privée utilise celle-ci à la place. Les paramètres d'extension ici (Les réunions comptent comme occupé, Pendant l'occupation, les appels) s'appliquent comme avec une adresse privée.
- Microsoft 365 indique les réunions à partir des congés : une réunion marquée comme en dehors du bureau compte comme congé ; les réunions provisoires et les temps marqués comme libres ou travaillant ailleurs n'empêchent jamais le téléphone de sonner. Une réunion privée est affichée sous la forme "En réunion", sans son titre.
- Google Workspace fournit les heures d'occupation sans indiquer pourquoi, donc elles comptent toujours comme des réunions.
- Les calendriers sont lus toutes les cinq minutes, et immédiatement lorsque les paramètres changent. Une extension dont l'e-mail n'est pas connu du service le signale dans sa section calendrier.
Applications mobiles
Les applications BitVoice pour iPhone et Android font d'un téléphone mobile l'un des téléphones d'une extension. Il sonne comme un téléphone de bureau, sur l'écran d'appel du téléphone lui-même, même lorsque l'application est fermée.
Configuration de la notification push
Une application fermée est réveillée pour les appels par un message de notification push. Dans Paramètres (chapitre 14), Applications mobiles, choisissez l'une des options suivantes :
| Push | Ce dont vous avez besoin |
|---|---|
| Relais de notification push | le relais BioDream (avec hébergement ou support) ou votre propre bvpush : son Adresse de relais, ID de clé et Secret |
| Applications personnalisées | vos propres constructions : pour Apple, l'ID d'équipe, ID de bundle, ID de clé et Clé (.p8) ; pour Google, le Compte de service Firebase (JSON) |
Définissez Adresse utilisée par les applications sur l'adresse HTTPS de ce serveur, telle qu'elle est accessible depuis n'importe où, et non seulement depuis le bureau.
Appairer un téléphone
- Ouvrez l'extension et appuyez sur Ajouter un téléphone.
- Scannez le code QR dans l'application. Le code ne fonctionne qu'une fois, pendant dix minutes.
Lorsqu'un appel arrive
BitVoice réveille l'application ; elle se connecte, sonne sur l'écran d'appel du téléphone lui-même, et est répondu comme n'importe quel autre téléphone de l'extension : les groupes de sonnerie et les files d'attente la font sonner avec les autres téléphones de l'extension. La page de l'extension liste ses téléphones appairés, si chacun peut être réveillé pour les appels, quand il a été vu et réveillé pour la dernière fois, et tout problème de notification push. Désappairer arrête immédiatement un téléphone de sonner, pour un téléphone perdu.
Pendant un appel
L'application est une extension complète, et non seulement un composant de numérotation :
- Transférer un appel vers une autre extension ou un numéro externe (le bouton Transférer de l'écran d'appel ou le bouton de l'application). Vers le numéro de stationnement, il met l'appel en attente.
- Mettre en attente et reprendre, à partir de l'écran d'appel ou de l'application ; les appelants en attente entendent votre musique d'attente où elle est configurée.
- Un deuxième appel : composer un numéro pendant que le premier appel est en attente, et basculer entre les deux.
- Tones de clavier (DTMF) pendant l'appel, et Muet.
Les autres onglets
- Récent : les appels vers et à partir de cette extension, dans l'ordre le plus récent, appuyer pour rappeler (les appels manqués sont mis en évidence).
- Messagerie vocale : chaque message avec sa transcription (chapitre 29) où l'IA la rédige, la lire, rappeler ou la supprimer.
- Équipe : qui est disponible, en appel, sonne ou absent (une lampe de busy), pour appeler ou transférer l'appel en cours vers eux.
- Contacts : l'annuaire de l'entreprise, pour trouver un nom et l'appeler.
- Chat : le chat du personnel (Chat et présence), les collègues avec leur présence et les messages directs, et les salles d'équipe, à l'intérieur du téléphone. Un nouveau message pendant que l'application est en arrière-plan s'affiche comme une notification, et en appuyant dessus, Chat s'ouvre ; lorsque l'application est fermée, il passe par la même notification push que les appels.
- Rejoindre une salle de vidéoconférence : choisir l'une des salles de vidéoconférence (chapitre 34) (elle les liste, avec le nombre de personnes dans chaque salle). Elle s'ouvre au-dessus du téléphone, qui continue de fonctionner en dessous, et vous rejoignez en tant qu'extension : pas de connexion d'administrateur. La première fois, le téléphone demande la caméra. Quitter, ou Retour sur Android, revient au téléphone ; le son de la salle reste un appel sur celui-ci jusqu'à ce que vous raccrochiez. Le téléphone affiche la salle comme un appel vidéo sur son propre écran d'appel pendant que vous êtes dans la salle.
- Les appels que vous effectuez vont sur le système d'appel du téléphone lui-même (CallKit sur iPhone, Telecom d'Android), donc Bluetooth, une voiture ou une montre les affichent, et un appel mobile arrivant pendant ce temps les connaît.
Transcription en direct pendant un appel
Avec Écrire les appels en direct activé (Paramètres (chapitre 14), IA), chaque côté de l'appel est écrit pendant qu'il est parlé et affiché sur le téléphone pendant que l'appel a lieu. L'audio va au service de reconnaissance vocale (sur votre propre ordinateur, là où cela est configuré) ou au service d'IA pendant que l'appel dure. C'est la même écriture que les transcriptions en direct du 911 (chapitre 13), pour les appels ordinaires.
Appels vidéo
/settingsLorsque les deux téléphones d'un appel envoient de la vidéo (téléphones de bureau vidéo, logiciels de téléphone, interphones vidéo), l'image passe entre eux via BitVoice. Rien à configurer : cela est activé sauf si Paramètres → Appels vidéo est désactivé.
- BitVoice relaie la vidéo telle quelle, sur un port propre à chaque téléphone, de sorte que les téléphones n'apprennent jamais les adresses les uns des autres. Avec un codec commun (presque tous les téléphones vidéo ont H.264), cela ne décode jamais la vidéo ; sans codec commun, cela peut convertir (voir ci-dessous). Lorsqu'ils numérotent le même codec différemment, BitVoice le renumérote en chemin.
- L'image est chiffrée (SRTP) pour chaque téléphone qui chiffre son son.
- Une demande de téléphone pour une nouvelle image (après des paquets perdus) atteint l'autre téléphone, de sorte que l'image se rétablit en un instant.
- Une caméra activée pendant un appel (un bouton vidéo d'un logiciel de téléphone) fonctionne également : l'autre téléphone est interrogé en premier, et l'image commence lorsque celui-ci dit oui.
- Un téléphone sans vidéo, ou un appel à un numéro externe, n'obtient que du son. En attente ou lorsqu'il est garé, l'image se met en pause, et revient lorsque l'appel se poursuit. Après un transfert, cela continue uniquement lorsque la nouvelle partie envoie également de la vidéo.
- La vidéo utilise beaucoup plus de réseau que le son (environ 0,5 à 2 Mbit/s par appel et par sens) : prévoyez-le sur les liens lents et dans la plage de ports multimédias.
Conversion de vidéo
Les téléphones et les applications qui partagent un codec vidéo (la plupart utilisent H.264) se transmettent mutuellement la vidéo telle quelle. Lorsque deux parties n'ont aucun codec en commun (un téléphone de bureau avec seulement H.264 et un navigateur avec seulement VP8), activez Convertir la vidéo entre H.264 et VP8 dans les paramètres : BitVoice propose alors les deux codecs, répond à chaque partie dans son propre codec et convertit dans les deux sens avec ffmpeg, qui doit être installé sur le serveur (apt install ffmpeg, brew install ffmpeg ; ou spécifiez son chemin). La conversion coûte environ un cœur de processeur par appel et ajoute un peu de retard, elle est donc désactivée par défaut et utilisée uniquement lorsque nécessaire. Les paramètres indiquent si ffmpeg a été trouvé.
Télécopie : envoi et réception, machines à télécopie et téléphones analogiques
/faxesLes machines à télécopie, les téléphones analogiques, les téléphones de porte et les anciennes lignes se connectent via une passerelle SIP (ou une carte de téléphonie dans l'ordinateur BitVoice : voir Cartes de téléphonie (chapitre 6)) : une ATA (série Grandstream HT, pour un ou deux téléphones analogiques ou une machine à télécopie), ou une passerelle plus importante (Patton SmartNode, AudioCodes MediaPack et Mediant) pour de nombreux ports analogiques, une ligne ISDN (BRI/PRI) ou des anciennes lignes analogiques (FXO). Chaque port s'enregistre auprès de BitVoice en tant qu'extension, comme un téléphone.
Réception de télécopies sans machine à télécopie. Sur Télécopies, ajoutez un numéro de télécopie (300, par exemple), avec les adresses e-mail auxquelles chaque télécopie est envoyée. Ensuite, dans Routing des appels (chapitre 8), envoyez les appels d'un numéro de téléphone à celui-ci. BitVoice répond comme une machine à télécopie, bascule l'appel sur T.38 et reçoit la télécopie ; chaque télécopie devient un PDF, conservé sur Télécopies (Afficher, PDF) et envoyé par e-mail. Une télécopie qui se coupe en cours de chemin conserve les pages qui sont arrivées et le signale. Chaque télécopie de la liste affiche l'identité de la machine d'envoi ou de réception lorsque celle-ci diffère du numéro, ainsi que la vitesse à laquelle les pages ont été transmises (14 400 bit/s est la vitesse la plus rapide ; une machine dont les télécopies échouent régulièrement à une vitesse faible a généralement une ligne de mauvaise qualité). Cela nécessite un fournisseur qui prend en charge T.38 (la plupart le font) ; une télécopie envoyée comme son ne peut pas être reçue de cette façon. Essayé avec T38Fax, un transporteur de télécopie : enregistrez le trunk avec son nom d'utilisateur et son mot de passe sur sip.t38fax.com, port 5080 (UDP) ; autorisez UDP à partir de ses réseaux (8.34.182.0/24 et 8.20.91.0/24) via tout pare-feu situé devant BitVoice.
Envoi d'une télécopie. Dans Télécopies, Envoyer une télécopie : choisissez le numéro de télécopie à partir duquel elle est envoyée, tapez le numéro auquel elle est envoyée, écrivez une note si vous le souhaitez (elle devient la première page) et ajoutez des documents. Les fichiers texte et les images (PNG, JPEG, GIF) fonctionnent partout. Le PDF nécessite poppler sur le serveur (apt install poppler-utils, apk add poppler-utils, brew install poppler) ; Word, Excel, OpenDocument et RTF nécessitent également LibreOffice. La page indique ce que le serveur peut faire. Chaque page reçoit une ligne d'en-tête, comme les machines à télécopie l'impriment : l'heure, le nom du numéro de télécopie, son identité et le nombre de pages. L'appel sort du serveur à partir des chiffres de l'identité (+1 212 555 0300 appelle à partir de +12125550300), ou à partir du numéro de télécopie lui-même lorsque l'identité n'est pas un numéro. Les pages sont au format Lettre américaine en Amérique du Nord et A4 ailleurs, à partir du pays dans les Paramètres.
BitVoice appelle le numéro via vos routes de sortie, comme le ferait une extension, et envoie à la vitesse la plus rapide que la ligne supporte (14 400 bit/s, plus lent si la ligne est de mauvaise qualité). Les télécopies provenant d'un même numéro de télécopie sont envoyées une à la fois. Un numéro occupé, ou qui ne répond pas, est réessayé cinq minutes plus tard, trois fois au total. Les télécopies envoyées sont répertoriées avec les télécopies reçues : Envoyées, En attente d'envoi, Échouées (avec Réessayer), ou Partiellement envoyées lorsque la ligne s'est coupée après quelques pages.
Email vers fax. En dessous de la liste, configurez une boîte aux lettres pour que BitVoice puisse la lire (IMAP sur TLS, port 993 ; pour les boîtes aux lettres Google et Microsoft, utilisez un mot de passe d'application), puis Testez et Enregistrez. Toute personne autorisée à envoyer écrit à cette boîte aux lettres avec le numéro de fax dans l'objet (Fax 212 555 0199), ou à une adresse avec un plus (fax+2125550199@example.com) si le serveur de messagerie les accepte. Les pièces jointes deviennent les pages et les propres mots de l'email deviennent la note de couverture (la signature et les emails cités sont exclus). Il est envoyé à partir du numéro de fax qui répertorie l'expéditeur : ses adresses Envoyer chaque fax par email peuvent toujours envoyer, et Peut également envoyer des faxes par email ajoute d'autres adresses (adresses complètes, ou @example.com pour un domaine). L'expéditeur reçoit un email lorsque le fax a été envoyé, ou pourquoi il n'a pas pu l'être.
L'e-mail est facile à falsifier, donc BitVoice n'envoie une télécopie qu'à partir du moment où votre serveur de messagerie a réellement trouvé qu'il provenait du domaine de l'expéditeur (DKIM, SPF ou DMARC, dans la ligne Authentication-Results qu'il ajoute). Les autres messages sont rejetés sans réponse. Commutez Accepter le courrier que le domaine de l'expéditeur n'a pas authentifié uniquement pour une boîte aux lettres que le courrier extérieur ne peut pas atteindre.
Appareils de télécopie sur les passerelles. BitVoice transporte la télécopie via T.38, la norme de télécopie pour Internet : lorsque la passerelle entend un signal de télécopie, elle bascule l'appel sur T.38, BitVoice demande à l'autre côté (votre fournisseur ou une autre passerelle) de basculer également, et transmet la télécopie entre eux. Si l'autre côté ne prend pas en charge T.38, l'appel reste sur G.711 et la télécopie est transmise comme du son, ce qui fonctionne sur un réseau de bonne qualité. Les appels en cours affichent télécopie (T.38) pendant que la télécopie est en cours.
Pour des télécopies fiables :
- Utilisez T.38 sur la passerelle et choisissez un fournisseur qui le prend en charge.
- Rendez le port d'extension un port d'adaptateur analogique (Extensions, Type) : BitVoice propose alors uniquement G.711, ce dont les télécopies transmises comme du son ont besoin.
- Sur le port de télécopie de la passerelle : Mode de télécopie T.38, uniquement PCMU ou PCMA, annulateur d'écho de ligne désactivé, attente d'appel désactivée et tampon de jitter fixe et élevé.
Boîte de réception : chat web, WhatsApp et Messenger
/inboxLa Boîte de réception (chapitre 43) contient toutes les conversations écrites dans une seule liste : la boîte de chat sur votre site Web, WhatsApp, Facebook Messenger et textes (chapitre 44). Toute personne connectée à l'interface Web peut répondre ; le premier à répondre prend la conversation (n'importe qui peut la transmettre avec Répondu par), et Fermer l'archive jusqu'à ce que la personne réécrive. Les conversations non lues sont comptabilisées, et la liste se met à jour automatiquement.
La boîte de chat sur votre site web
Sous Canal, activez Chat web, choisissez son titre, sa couleur et sa première ligne, et placez la ligne qu'il affiche dans les pages de votre site :
<script src="https://pbx.example.com:8443/webchat.js" async></script>
Il dessine un bouton de chat dans le coin de chaque page ; les visiteurs écrivent (avec leur nom s'ils le souhaitent) et voient vos réponses à mesure qu'elles arrivent. La conversation reste dans leur navigateur, elle continue donc à mesure qu'ils passent d'une page à l'autre. Répertoriez vos sites sous Uniquement sur ces sites pour que la boîte ne fonctionne nulle part ailleurs. Les visiteurs doivent atteindre l'adresse de ce serveur depuis Internet, avec un certificat que les navigateurs font confiance (Let's Encrypt (chapitre 14)). Dix nouveaux chats à partir d'une adresse en dix minutes est le maximum que BitVoice accepte.
Numéros d'entreprise WhatsApp sur l'API Cloud Meta. Sur le site des développeurs Meta, créez une application avec WhatsApp, ajoutez votre numéro et créez un utilisateur système avec un jeton d'accès permanent. Sous Canal, activez WhatsApp et fournissez l'ID de numéro de téléphone et l'ID de compte d'entreprise (les deux issus de la configuration de l'API), le jeton d'accès et le secret d'application, puis enregistrez. Dans la configuration WhatsApp de l'application, définissez le webhook : l'adresse de rappel et le jeton de vérification que BitVoice affiche, abonné aux *messages*.
WhatsApp vous permet de répondre librement pendant 24 heures après le dernier message du client ; après cela, il n'accepte que les modèles de message approuvés dans WhatsApp Manager. La boîte de réception se transforme alors en sélecteur de modèle : choisissez un modèle (il liste les modèles de votre compte, avec leur langue et leur type), remplissez ses valeurs ({{1}}, {{2}} ...), vérifiez l'aperçu, qui est ce que le client lira, et Envoyez le modèle. Les modèles que la boîte de réception ne peut pas remplir sont répertoriés en gris avec la raison : un avec un en-tête d'image, de vidéo ou de document, un paramètre dans son en-tête ou un lien de bouton, des paramètres nommés, ou un code de bouton ; et ceux qui n'ont pas encore été approuvés. Créez des modèles dans WhatsApp Manager ; Meta examine chaque modèle, généralement en quelques minutes.
Facebook Messenger
Pour une page Facebook : dans l'application Meta, ajoutez Messenger, connectez la page et créez un jeton d'accès de page. Sous Canal, fournissez l'ID de page, le jeton d'accès de page et le secret d'application ; puis définissez le webhook (l'adresse et le jeton de vérification affichés), abonné aux *messages* et *messaging_postbacks*. Les réponses sont autorisées pendant 24 heures après le dernier message de la personne. À partir de ce moment-là et jusqu'à 7 jours, Messenger accepte les réponses écrites par une personne (envoyées avec la balise *agent humain* de Meta : l'application nécessite la permission d'agent humain de Meta, demandée dans l'examen de l'application) ; la salutation automatique ne s'envoie jamais pendant ce temps. Après 7 jours, la boîte de réception n'accepte aucune réponse jusqu'à ce que la personne réécrive.
Chaque webhook est vérifié avec le secret d'application (la signature de Meta) avant que BitVoice ne le croie, et un message que Meta envoie deux fois est conservé une seule fois. Les images, les notes vocales et les autres pièces jointes s'affichent comme ce qu'elles sont ("[image]") ; ouvrez-les dans les applications propres de Meta.
Salutation automatique, lorsqu'elle est définie, répond au premier message de chaque nouvelle conversation immédiatement.
Messagerie commerciale (SMS)
/textsEnvoyez et recevez des messages texte à partir de vos numéros d'entreprise sur Textes. Les textes passent par un fournisseur de messagerie. Intégré : TextMagic, Twilio, SignalWire, Telnyx, Bandwidth, Vonage, Plivo, Flowroute et VoIP.ms, ainsi que Votre propre webhook pour tout autre service ou une passerelle que vous possédez. Un nombre illimité de comptes de fournisseur peut être utilisé en même temps : chaque numéro indique lequel le transporte.
Configuration
- Dans le portail du fournisseur, trouvez les détails de l'API du compte. Le formulaire demande exactement ce que le fournisseur les appelle (Twilio : Account SID et jeton d'authentification ; Telnyx : une clé API ; Bandwidth : utilisateur API, mot de passe, ID de compte et ID d'application de messagerie ; SignalWire : ainsi que l'adresse de votre espace) et indique où les trouver.
- Sur Textes, Configuration de messagerie, ajoutez le fournisseur avec eux, et enregistrez. BitVoice affiche une adresse pour les textes reçus : définissez-la dans le fournisseur comme l'endroit où les messages reçus sont envoyés (son rappel, webhook ou URL de message). Pour VoIP.ms, ajoutez
?from={FROM}&to={TO}&message={MESSAGE}&id={ID}à la fin. Les accusés de réception d'envoi envoyés à la même adresse sont ignorés. BitVoice doit être accessible depuis Internet à cet endroit. - Ajoutez chaque numéro que vous utilisez pour les textes (avec son code de pays), le fournisseur qui le transporte, et les extensions pour indiquer par e-mail lorsque vous recevez un texte.
US 10DLC
Les opérateurs américains bloquent les textes provenant de numéros d'entreprise non enregistrés. Enregistrez votre marque, puis une campagne avec votre fournisseur de messagerie ; la liste de contrôle sur Texts suit leur état et avertit lorsque votre message d'exemple manque de mots d'opt-out attendus par les opérateurs.
Conversations
Chaque conversation affiche qui est en train de discuter (à partir des Contacts), les textes non lus et le fil de conversation. La saisie envoie ; le compteur indique combien de textes un long message prend. Lorsqu'une personne répond STOP, rien ne peut être envoyé à cette personne à partir de ce numéro jusqu'à ce qu'elle réponde START. Les textes reçus apparaissent également comme une notification dans BitVoice.
Transfert des briefings
/settingsPour que l'appelant n'ait jamais à se répéter : avec Briefing de la personne à qui l'appel est transféré activé (Paramètres, IA), lorsque l'appel est transféré, BitVoice rédige un résumé de deux phrases de l'appel jusqu'à présent (qui appelle, ce qu'il veut, tout ce qui a déjà été promis) pour la personne à qui il est transféré. Il apparaît sur son téléphone navigateur avec l'appel en cours de sonnerie, sur Appels en cours (chapitre 46), et en tant que texte sur l'écran de son téléphone de bureau (pour les téléphones qui affichent les messages SIP).
Cela fonctionne de la même manière lorsque l'assistant de réception IA passe l'appelant à une personne : le briefing provient de ce que l'appelant a dit à l'assistant.
Cela nécessite le service IA et un modèle de reconnaissance vocale (Paramètres, IA), et l'audio de l'appel jusqu'à présent (jusqu'à cinq minutes) est envoyé à ce service pour être rédigé. Un résumé prend quelques secondes, il peut donc apparaître juste après le début de la sonnerie du téléphone.
Clients et analyse
Connaître qui a appelé et comment cela s'est passé : les appels en cours et l'historique, la chronologie client, les logiciels de gestion de la relation client, les enregistrements et les consentements, la qualité, les coûts et la réputation de l'identifiant d'appelant.
Appels en cours
/callsLes appels en cours affichent chaque appel en cours, mis à jour à mesure qu'il se déroule : qui appelle qui, depuis combien de temps il dure, ses codecs et sa qualité.
Ce que les administrateurs peuvent faire
| Action | Ce que cela fait |
|---|---|
| Raccrocher | met fin à l'appel pour les deux côtés |
| Ouvrir la porte | pour un appel à partir d'une station d'entrée |
| Mettre en pause l'enregistrement | pour un numéro de carte : la partie en pause est silencieuse dans l'enregistrement et marquée dans l'historique (Enregistrement d'appel (chapitre 51)) |
| Écouter | entendre l'appel en silence |
| Chuchoter | parler à l'agent uniquement ; l'appelant ne vous entend pas |
| Intervenir | rejoindre l'appel ; tout le monde vous entend |
Pour écouter, chuchoter ou intervenir, appuyez sur Superviser, choisissez le téléphone à utiliser sous À partir du téléphone et appuyez sur Faites-moi sonner : votre téléphone sonne, et lorsque vous répondez, vous rejoignez l'appel. Vous pouvez basculer entre l'écoute, le chuchotement et l'intervention pendant que vous êtes dans l'appel.
Ce qui est également affiché
- Une fiche d'appelant pendant qu'un appel externe sonne (à partir de votre CRM, ou des appels précédents ; voir CRM (chapitre 49)).
- Le briefing rédigé pour la personne à laquelle l'appel a été transféré (Transfert de briefings (chapitre 45)).
- Le verdict de l'identifiant d'appelant : Vérifié, Partiellement vérifié ou Non vérifié (Protection contre les spams (chapitre 56)).
- Avec plusieurs serveurs, les appels sur les autres serveurs également, en lecture seule : raccrocher ou écouter sur le serveur qui a l'appel.
Lorsqu'un appel se termine, il est déplacé vers Historique des appels (chapitre 47).
Historique des appels
/historyChaque appel terminé : qui a appelé qui, quand, pendant combien de temps et comment il s'est terminé. Triez les colonnes, jouez les enregistrements (une pause pour les numéros de carte est marquée), et téléchargez la liste au format CSV. La durée de conservation des enregistrements est définie dans les Paramètres, Enregistrement d'appel ; une rétention légale (chapitre 73) les conserve plus longtemps.
Comment il a été acheminé
Sous chaque résultat d'appel, Comment il a été acheminé liste, en termes clairs et dans l'ordre, ce qui a décidé où l'appel est allé : la route d'entrée qui l'a pris, si un horaire était ouvert ou fermé et l'heure, un côté d'un commutateur, ce qu'un script de routage a choisi (ou que son rappel a pris l'appel), les touches pressées dans un menu, qui était absent, qui n'avait pas de téléphone connecté, qui n'a pas répondu, la route de sortie et les troncs utilisés (et un tronc que le juge de santé a déplacé derrière les autres), le jugement de la protection contre la fraude de tollé, et, pour un appel enregistré dont les parties sont sous des règles de consentement différentes, quelle règle s'applique.
Qualité, son et chiffrement
La colonne Qualité affiche le score de chaque appel répondu (MOS, sur 5) et deux marques lorsqu'elles s'appliquent :
- Pas de son de un côté : l'appel s'est connecté mais rien n'est jamais arrivé de ce téléphone ou fournisseur (les appels de moins de 5 secondes, les télécopies, les appels en attente et les appels de paging sont exclus). Voir Call quality (chapitre 53) pour savoir ce qu'il faut vérifier.
- Non chiffré : BitVoice a demandé le chiffrement (SRTP) et que ce côté a répondu sans. Chiffré signifie que le son a été chiffré avec chaque côté qui a envoyé quelque chose. Pour refuser les appels non chiffrés d'un fournisseur à la place, activez Exiger le chiffrement sur son trunk.
Transcriptions et recherche
Avec l'IA activée et Transcrire les appels enregistrés activé (Paramètres, IA), chaque appel enregistré est écrit, avec un court résumé et ses éléments d'action : ce que quelqu'un a accepté ou a été invité à faire. Chaque côté de l'appel est écrit séparément de l'enregistrement, donc la transcription montre qui a dit quoi, et quand. Le bouton de transcription à côté d'un enregistrement l'ouvre ; les administrateurs peuvent également transcrire un seul appel, ou transcrire un appel à nouveau.
Rechercher ce qui a été dit trouve les appels par des mots de leurs transcriptions, résumés et éléments d'action. Seuls les appels enregistrés sont transcrits. Une transcription est supprimée avec son enregistrement, et la lecture ou la recherche de transcriptions est notée dans le journal d'audit, comme la lecture d'un enregistrement.
Chronologie client
/timelineLa chronologie client affiche tout ce qui concerne un numéro de téléphone sur la dernière année, du plus récent au plus ancien, afin que celui qui décroche sache toute l'histoire.
Ce qu'il affiche
| Élément | Avec |
|---|---|
| Appels | qui les a pris, combien de temps ils ont duré, ainsi que avec une transcription, un résumé, l'enregistrement et la transcription |
| Messageries vocales | leurs résumés |
| Textes | les deux sens |
| Retours d'appel | demandés et s'ils ont été effectués |
| Notes | les notes propres de l'équipe |
Un numéro correspond quelle que soit la façon dont il est écrit : +1 212 555 0100 et 2125550100 sont les mêmes.
L'ouvrir
À partir d'une carte d'appelant (Chronologie), des Contacts, d'un appel entrant dans l'historique des appels, d'une conversation de texte, ou en saisissant un numéro en haut de Chronologie (chapitre 48).
Notes
Les administrateurs peuvent Ajouter une note pour l'équipe : elle s'affiche sur la chronologie pour tout le monde, avec qui l'a écrite et quand, et peut être supprimée.
CRM : cartes d'appelants et journalisation des appels
/settingsConnectez un système client dans Paramètres (chapitre 14), CRM. Il fonctionne avec tout système ayant une adresse Web, sans code écrit pour chaque produit.
Cartes d'appelants
Pendant qu'un appel de l'extérieur sonne, les appels en direct affichent une carte : qui est l'appelant (de votre CRM, ou le nom de l'extension), combien de fois il a appelé au cours des 90 derniers jours, tout rappel (chapitre 30) qu'il attend, et le résumé de son dernier appel transcrit. Le téléphone navigateur affiche une carte plus courte à la personne qui répond : qui est l'appelant, les appels passés et les rappels en attente, mais pas les résumés des appels des autres.
Pour le nom, définissez Adresse de recherche : BitVoice l'interroge (GET) avec le numéro de l'appelant à la place de {number}, en envoyant En-tête de recherche avec sa valeur (une référence de coffre-fort fonctionne), et attend un JSON avec le nom, l'entreprise, l'URL et les notes ; 404 signifie inconnu. Les réponses sont conservées pendant cinq minutes. Lien de lien dans le CRM place un lien vers l'appelant sur la carte. Utilisez Le rechercher pour essayer un numéro avant de l'enregistrer.
La réponse propre d'un CRM
La plupart des CRM répondent à une recherche sous leur propre forme, généralement une liste de correspondances, et non {"name": ...} de BitVoice. Ouvrez Champs de réponse et indiquez où se trouve chaque partie, sous la forme d'un chemin pointé : un nom entre dans un objet et un numéro dans une liste, donc list.0.name est le nom de la première correspondance. Lien vers le contact peut être un chemin vers un lien fourni par le CRM ou une adresse Web avec des chemins entre accolades, tels que https://crm.example.com/#Contact/view/{list.0.id}. Un champ vide lit le nom propre de BitVoice. Une recherche qui ne trouve personne est la même que 404 : la fiche indique que l'appelant n'est pas connu. Essayez un numéro avec Rechercher avant de sauvegarder.
Par exemple, EspoCRM (testé contre un véritable EspoCRM) : créez un utilisateur API (Administration, Utilisateurs API, authentification par clé API) avec un rôle qui peut lire les contacts et les comptes, puis définissez :
- Adresse de recherche :
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} - En-tête de recherche
X-Api-Key, sa valeur est la clé de l'utilisateur API - Champs de réponse : nom
list.0.name, entrepriselist.0.accountName, noteslist.0.description, lienhttps://crm.example.com/#Contact/view/{list.0.id}
EspoCRM conserve les numéros sous forme internationale (+15405550117), comme BitVoice les transmet. D'autres CRM fonctionnent de la même manière avec leur propre adresse de recherche et leurs propres noms de champs ; vérifiez la forme de leur réponse dans leur documentation API, ou avec Rechercher, dont le message indique ce qui a été trouvé.
Journal des appels
Définissez l'adresse du journal des appels et le secret de signature, et chaque appel est envoyé là à la fin (événement call.ended), puis à nouveau avec son résumé, les éléments d'action et la transcription une fois transcrits (call.summarized), et chaque rappel réservé (callback.new). Chaque envoi POST contient X-BitVoice-Event, X-BitVoice-Timestamp et X-BitVoice-Signature : sha256= suivi du HMAC-SHA256, avec le secret, de l'horodatage, d'un point et du corps. Une livraison échouée est réessayée quatre fois sur environ une minute ; si elle échoue toujours, Health le signale. Envoyer un événement de test vérifie l'adresse et le secret.
Aperçu d'appel pour les superviseurs
/qualityPour les centres de contact : des preuves de la façon dont les appels se sont déroulés, pour qu'un superviseur puisse les écouter, jamais un score automatique.
Dans la Transcription d'un appel, Comment cela s'est passé montre, mesuré à partir du son de l'enregistrement seul : combien chaque côté a parlé, la période la plus longue de chaque côté, combien de fois chaque côté a commencé à parler par-dessus l'autre, combien de temps les deux ont parlé en même temps, et le silence (un long silence est souvent une attente ou un air mort).
Avec Noter comment chaque appel transcrit s'est passé activé (Paramètres, IA), l'IA lit également la transcription et indique comment l'appelant semblait au début et à la fin, et liste jusqu'à six moments : S'est bien passé, Regarder (parler par-dessus l'appelant, une longue attente, une réponse peu claire), Non répondu (une question que l'appelant a posée qui n'a pas obtenu de réponse) et Promis (quelque chose que quelqu'un a dit qu'il ferait), chacun avec l'heure et les mots prononcés, afin que vous puissiez aller directement à cela. Un administrateur peut demander cela pour n'importe quel appel transcrit avec Regarder cet appel.
Sur Qualité d'appel (chapitre 50), Conversations, par qui les a prises additionne les appels transcrits de la période par personne : leur part de la conversation, leur plus longue intervention, combien de fois ils ont parlé par-dessus l'appelant, le temps de silence, les appels qui se sont terminés par un appelant mécontent et les moments signalés. Utilisez-le pour choisir les appels à écouter, et non pour classer les personnes.
Les Notes de coaching sont vos propres mots sur un appel, au moment où ils sont à propos : sous Comment cela s'est passé, écrivez le Moment (1:05, ou laissez-le vide pour le début) et la Note de coaching, et appuyez sur Ajouter une note. Les notes sont répertoriées dans l'ordre de l'appel avec qui les a écrites et quand ; les administrateurs écrivent et suppriment les notes, les lecteurs les lisent avec la transcription, et l'ajout ou la suppression d'une note est noté dans le journal d'audit. Elles vont avec l'enregistrement, donc sa rétention et les obligations légales les couvrent également. Les Notes de coaching sur la qualité d'appel les comptent par personne.
Enregistrement des appels et paiements par carte
L'enregistrement est défini dans Paramètres (chapitre 14), Enregistrement des appels : désactivé, chaque appel ou uniquement les appels des extensions marquées Enregistrer les appels. Les enregistrements sont joués à partir de Historique des appels (chapitre 47), et avec l'IA activée, ils sont écrits et résumés.
Informer les personnes
Certaines régions nécessitent que tous les participants à un appel soient informés qu'il est enregistré : Annonce, Bip et les règles par région se trouvent dans Consentement à l'enregistrement (chapitre 52).
Paiements par carte (PCI DSS)
Les numéros de carte ne doivent pas être conservés dans les enregistrements. Avant qu'un appelant ne lise un numéro à haute voix, la personne à l'extension appuie sur *7 ; *8 reprend l'enregistrement. Mettre en pause l'enregistrement sur Appels en direct (chapitre 46) fait de même. La partie en pause est silencieuse dans l'enregistrement et est répertoriée dans l'historique des appels, afin qu'un auditeur puisse voir où et pendant combien de temps.
Salles de conférence
Une salle avec Enregistrer la salle activé est conservée comme un seul enregistrement de toute la salle (Salles de conférence (chapitre 34)).
Durée de conservation des enregistrements
Les paramètres définissent le nombre de jours pendant lesquels les enregistrements, l'historique des appels et la messagerie vocale sont conservés ; les anciens enregistrements sont supprimés dans l'heure. Tout ce qui est sous une réserve légale (chapitre 73) est conservé quel que soit son âge. Les archives (chapitre 72) peuvent conserver des copies ailleurs.
Les administrateurs et les utilisateurs peuvent lire les enregistrements et les transcriptions ; seuls les administrateurs peuvent transcrire un appel ou le transcrire à nouveau. La lecture d'un enregistrement ou la lecture de sa transcription est notée dans le journal d'audit.
Consentement à l'enregistrement
/settingsCertains endroits autorisent l'enregistrement d'un appel lorsque l'une des personnes le sait ; d'autres nécessitent que tout le monde soit informé, ou qu'il y ait accord. Dans les Paramètres, Enregistrement des appels, choisissez comment les personnes sur un appel enregistré sont informées :
- Aucun avis.
- Annoncer : au moment de la réponse à l'appel, les deux côtés entendent l'avis (enregistrez-le au même endroit, par exemple "Cet appel est enregistré pour la formation et la qualité"), et l'enregistrement ne commence qu'après avoir joué. Jusqu'à ce qu'un soit enregistré, trois bips sont joués, et État de santé le signale.
- Bip : un court signal sonore pour les deux côtés toutes les 15 secondes pendant que l'appel est enregistré.
Règles sélectionnent par le numéro extérieur (l'appelant pour les appels entrants, le numéro composé pour les appels sortants), correspondance la plus longue en premier : par exemple, les numéros commençant par 1415 (Californie) Annoncer, 49 (Allemagne) Ne jamais enregistrer, tout le reste comme ci-dessus. Une règle Aucun avis enregistre sans avertissement ; Ne jamais enregistrer exclut ces appels de l'enregistrement tout à fait. Les appels entre extensions suivent le paramètre principal.
Votre propre numéro compte également : les règles sont appliquées à la fois au numéro extérieur et au vôtre (le numéro appelé pour les appels entrants, votre identifiant d'appelant pour les appels sortants), et la règle la plus protectrice l'emporte (Ne jamais enregistrer avant Annoncer avant Bip avant Aucun avertissement). Ainsi, un bureau dans un endroit qui nécessite le consentement de toutes les parties annonce à qui il appelle, où qu'elles soient. Lorsque les parties sont soumises à des règles différentes, l'enregistrement de l'appel dans Historique des appels (chapitre 47) indique quelle règle a été appliquée et pourquoi.
L'enregistrement peut également être mis en pause pendant un appel avec le code de pause (paiements par carte). Rien de tout cela ne constitue un conseil juridique : vérifiez les lois où vous et vos appelants êtes.
Qualité de l'appel
/qualityComment les appels se sont entendus au cours des dernières 24 heures, de la semaine, du mois ou de 90 jours, à partir du son que BitVoice a reçu de chaque côté de chaque appel. Les téléphones sont regroupés par leur site (chapitre 12) (ou « sans site »), et les appels provenant de l'extérieur par la ligne du fournisseur sur laquelle ils sont arrivés.
Chaque emplacement affiche ses appels, son score moyen (MOS, sur 5 : au-dessus de 4 est bon, en dessous de 3,6 sonne mauvais), la part des paquets audio qui n'ont jamais arrivé et la jitter (délai irrégulier). En dessous, BitVoice indique ce qui ne va pas en termes clairs, par exemple « Perte de paquets sur le réseau du siège : 3,2 % du son n'est jamais arrivé, principalement entre 14h00 et 16h00 », avec ce qu'il faut vérifier. Le graphique à barres montre le son perdu par heure de la journée.
Le diagnostic compare les deux moitiés des mêmes appels : le son provenant des téléphones du site et le son provenant du fournisseur que les mêmes appels ont traversé. Lorsque l'autre moitié est arrivée propre, la perte est du côté de cet emplacement et il le dit ; lorsque les deux moitiés ont perdu du son, l'emplacement n'est pas seul responsable et il pointe ce que les appels partagent, la liaison Internet propre à ce système. Si chaque emplacement perd du son en même temps, la cause est de même ce qu'ils partagent. Comment cela a été déterminé répertorie les raisons, étape par étape (le livre de règles de qualité des appels, voir Sécurité (chapitre 60), « Comment BitVoice décide »). Les emplacements avec moins de trois appels ne sont pas jugés. La qualité par appel est également dans Historique des appels (chapitre 47) (la colonne Qualité) et, pendant que les appels sont actifs, sur Appels en cours (chapitre 46).
Un appel qui s'est connecté mais n'a reçu aucun son du tout d'un côté est compté à part, sous sans son, et est affiché en premier : il ne s'agit pas d'un son de mauvaise qualité mais d'un son qui n'est jamais arrivé, presque toujours un pare-feu ou un routeur NAT laissant passer SIP et bloquant les médias. Le conseil de l'emplacement indique ce qu'il faut vérifier (pour un fournisseur, ses plages d'adresses de médias).
Coûts et budgets
/costsBitVoice facture chaque appel en fonction de ce que votre fournisseur facture, et affiche les dépenses du mois par département, personne et trunk, avec les appels les plus coûteux.
Prix
Sur Troncs (chapitre 7), ouvrez un trunk et ses Prix des appels. Chaque prix couvre les numéros qui commencent par certains chiffres, comme le numéro est envoyé au fournisseur (chiffres uniquement, donc 44 pour le Royaume-Uni, 1900 pour les tarifs premium américains) ; la correspondance la plus longue l'emporte, et un prix sans chiffres couvre tous les autres numéros. Donnez le prix par minute, toute charge par appel répondu, l'étape de facturation (60 secondes pour les minutes entières, 6 ou 1 pour des étapes plus fines) et tout minimum. Appels entrants, par minute est pour les numéros gratuits que vous payez pour recevoir. Quel serait le coût vérifie un numéro avant que quiconque ne compose.
Le coût d'un appel est fixé lorsqu'il se termine, avec les prix de l'époque ; la modification d'un prix ne modifie pas les appels passés. Coûts indique combien d'appels sortants répondu n'avaient pas de prix.
Départements et budgets
Donnez aux extensions un Département (dans l'extension). Sur Coûts, ajoutez un budget pour chaque appel ou pour un département : une alerte apparaît dans BitVoice, et est envoyée par e-mail à l'adresse du budget et à l'adresse d'alerte, à 80 % et à nouveau à 100 % du mois.
L'alarme
Les appels sortants coûtent plus que ceci en une heure déclenche une alarme lorsque les appels sortants dépassent ce montant dans n'importe quelle heure. Une série soudaine d'appels coûteux est généralement le signe d'une fraude de toll (mot de passe de téléphone volé) : vérifiez l'historique des appels, puis désactivez l'extension ou le trunk.
Réputation de l'identifiant de l'appelant et appels personnalisés
/reputationLes sociétés de téléphone exécutent des filtres de spam qui peuvent étiqueter un numéro d'entreprise « Spam probable », ou le bloquer, et alors presque personne ne répond. La réputation de l'identifiant de l'appelant surveille chaque numéro que vous appelez, à partir de vos propres appels, et indique en termes clairs comment il se comporte :
- Répondu : la part des appels répondu, et ce qu'il était la période précédente. Une baisse de moitié, ou en dessous de 20 %, est le signe habituel d'une nouvelle étiquette.
- Raccroché immédiatement : les appels répondu qui se sont terminés dans les 10 secondes.
- Refusé comme spam : les appels que le filtre d'un transporteur a refusé (SIP 608) ou que la personne a marqué indésirable (607). Un seul 608 signifie que le numéro est étiqueté.
- Utilisation intensive : plus de 150 appels par jour à partir d'un seul numéro est ce que font les robocallers, et les filtres le remarquent.
Les numéros avec moins de 20 appels sont affichés comme étant trop peu pour être jugés.
Vos numéros de sortie donne à chaque numéro un nom (envoyé comme nom de l'appelant), une raison d'appeler et un logo (une image https://). Sur un trunk avec Envoyer l'identifiant d'appelant personnalisé activé, le logo et la raison sont envoyés comme données d'appel riches (RFC 9796 Call-Info) ; les opérateurs qui prennent en charge l'appel personnalisé les affichent sur le téléphone appelé. La plupart des téléphones affichent le nom de la base de données caller-name (CNAM) au lieu de cela, que votre fournisseur configure : demandez-leur. Surveiller place un avertissement sur la santé lorsque le numéro surveillé commence à être étiqueté.
La page indique également ce qu'il faut faire lorsque le numéro est étiqueté.
Protection contre les spams et STIR/SHAKEN
/settingsAux États-Unis et au Canada, le fournisseur à l'origine de l'appel signe son ID d'appelant (STIR/SHAKEN) : A lorsqu'il sait que l'appelant peut utiliser le numéro, B lorsqu'il connaît l'appelant mais pas le numéro, C lorsqu'il ne fait que transmettre l'appel. Votre fournisseur indique soit à BitVoice son verdict (verstat), soit transmet l'en-tête d'identité signée, que BitVoice vérifie ensuite : la signature, qu'elle est inférieure à une minute, et qu'elle nomme les numéros de cet appel. Le verdict s'affiche sous la forme Vérifié, Partiellement vérifié, Non vérifié ou Non vérifié sur les appels en cours et dans l'historique des appels.
Dans les Paramètres, Protection contre les spams, choisissez ce qui se passe lorsque l'ID d'appelant échoue à la vérification (sonner, sonner avec étiquette ou refuser), lorsqu'il n'est pas vérifié du tout, et lorsque le numéro est masqué. Un appel étiqueté sonne avec Spam? (ou votre propre étiquette) avant le nom de l'appelant. Les numéros bloqués sont refusés ; une entrée se terminant par * bloque une plage (+1900* est chaque numéro américain à tarification premium). Les numéros toujours autorisés ne sont jamais refusés ou étiquetés. Dans l'historique des appels, le bouton de blocage à côté d'un appelant les ajoute à la liste ; les appels refusés sont répertoriés sous Bloqué.
Dans l'heure qui suit un appel d'urgence à partir de n'importe quelle extension, aucun appel n'est refusé (les appels bloqués sonnent étiquetés à la place), au cas où il s'agirait du service d'urgence qui rappelle. Un appel 911 (à partir de l'ESInet ou d'un tronc CAMA) n'est jamais refusé ou retardé par la sélection.
Les appelants que BitVoice ne connaît pas
Un appelant est connu lorsque le numéro est toujours autorisé, dans les contacts (chapitre 38), a été appelé d'ici au cours de la dernière année, ou a réussi le test robotique au cours des 90 derniers jours. Les numéros sont comparés indépendamment de la façon dont ils sont écrits (avec ou sans le code de pays, 1, 0 ou +). Sous Appelants que BitVoice ne connaît pas, choisissez ce qui se passe pour tous les autres :
| Choix | Ce que l'appelant reçoit |
|---|---|
| Sonnance normale | l'appel sonne comme n'importe quel autre (par défaut) |
| Test robotique d'abord | BitVoice répond et dit "Pour être connecté, veuillez appuyer" et un chiffre, qui change à chaque appel. La bonne touche le met en relation avec l'endroit où l'appel était destiné ; toute autre touche, ou rien (deux fois), et il va à Les appelants qui échouent au test vont à, ou entend au revoir. Les appelants automatiques n'appuient pas sur la touche |
| Envoyer ailleurs | rien ne sonne : ils vont directement à l'endroit choisi, une boîte vocale par exemple |
Le test du robot nécessite ses mots : dans Sounds (chapitre 20), enregistrez ou créez (avec un service de synthèse vocale) les invites de sélection et les chiffres 1 à 9 dans la langue des appelants. Jusqu'à ce qu'ils soient enregistrés, ces appels sonnent comme d'habitude (un appelant ne peut pas passer un test qu'il ne peut pas entendre), et Health le signale. Un appelant qui réussit est considéré comme connu pendant 90 jours. Le test répond à l'appel, donc le fournisseur de l'appelant commence à le facturer à partir de ce moment, comme pour toute appel répondue. L'historique des appels affiche le résultat de chaque appel (réussi, échoué, envoyé) et la trace du pourquoi indique ce qui s'est passé.
Une base de données de spam
BitVoice peut demander à un service de réputation des informations sur chaque appelant inconnu avant que l'appel ne sonne. Utiliser Nomorobo via Twilio remplit Twilio Lookup avec le score de spam Nomorobo (installez le module complémentaire Nomorobo dans votre compte Twilio, puis entrez son SID de compte et son jeton d'authentification) ; tout autre service qui répond au format JSON fonctionne également : fournissez son adresse avec {e164} (+12125550142) ou {number} (tel que l'a envoyé le fournisseur), où se trouve son verdict (Champ de verdict, un chemin pointé), et quand il signifie spam (un score égal ou supérieur à Spam à partir du score, true, ou le texte dans Ou spam lorsque le texte est, comme BLOCK). Choisissez ce qui arrive à un appelant qu'il considère comme spam : sonner étiqueté, le test robot ou refusé.
- Ces services facturent par recherche. Les appelants connus ne sont jamais recherchés et chaque réponse est conservée pendant une journée (Conserver les réponses).
- Un service lent ou défectueux n'a jamais de retard sur un appel : après Attendre au maximum (1,5 seconde à moins que vous ne la modifiiez) l'appel sonne comme si la réponse était « pas spam ».
- Test lui pose la question sur un numéro maintenant (et est facturé comme n'importe quelle recherche).
Bloquer le dernier appelant
Immédiatement après un appel indésirable, composez *32* (Codes de fonction (chapitre 32)) à partir du téléphone qui a sonné : le dernier numéro extérieur qui a sonné cette extension au cours de la dernière journée est ajouté à la liste de blocage, et le téléphone rappelle le numéro. Un numéro toujours autorisé n'est pas bloqué, et le téléphone le signale. Chacun est consigné dans le journal d'audit, avec l'indication de qui l'a bloqué.
Suggérés à partir de vos appels
BitVoice lit les 30 derniers jours d'appels provenant de l'extérieur pour les numéros qui appellent à plusieurs reprises et sont éliminés immédiatement : trois appels ou plus, la plupart d'entre eux terminés en 10 secondes ou moins, ou deux tests de robot échoués, et jamais de véritable conversation (quelqu'un parlant 30 secondes ou plus). Les numéros connus sont exclus. Chacun est accompagné de la raison ; Block le place sur la liste de blocage et Not spam signifie qu'il n'est jamais suggéré à nouveau. Rien n'est bloqué jusqu'à ce qu'une personne le confirme.
Pour vérifier les certificats contre les autorités STI, collez leurs certificats sous Autorités de certification STI ; sans eux, BitVoice vérifie que l'appel a été signé avec le certificat qu'il nomme mais pas qui a délivré ce certificat.
Signature de vos propres appels
La plupart des fournisseurs signent eux-mêmes les appels de leurs clients. Si le vôtre vous permet de signer (ou que vous êtes un fournisseur exécutant BitVoice), activez Signer l'ID d'appelant sur le trunk (Troncs (chapitre 7)) et fournissez-le avec votre certificat STI (d'une autorité de certification STI, avec votre jeton de code de fournisseur de services) et sa clé privée (P-256). Chaque appel sortant par le tronc transporte alors un en-tête d'identité signé (ES256, comme l'exige SHAKEN).
- Adresse du certificat (x5u) est l'endroit où le côté appelé récupère le certificat. Laissez-le vide et BitVoice le publie à
/stir/<trunk>.pemsur son adresse publique (Paramètres), qui doit alors être accessible depuis Internet via HTTPS. - Attestation : automatique donne A lorsqu'une extension appelle avec l'un des numéros de ce système (un numéro acheminé, ou un ID d'appelant défini sur le tronc ou l'extension), B lorsqu'une extension appelle avec n'importe quel autre numéro, et C pour les appels transmis à partir de l'extérieur (un appelant transféré). Ou fixez-le à A, B ou C.
- L'historique des appels marque chaque appel signé avec signé A, B ou C. Un appel n'est jamais arrêté parce qu'il ne peut pas être signé ; la raison se trouve dans le journal.
Exécution de BitVoice
Le maintien en sécurité et en fonctionnement : administrateurs et connexion, sécurité, modifications et mises à jour, plusieurs serveurs, organisations hébergées, codecs, Teams, importation, automatisation et outils de dépannage.
Administrateurs
/usersLes administrateurs sont les personnes qui se connectent à cette interface Web. Le personnel qui ne s'occupe que de ses propres appels utilise le portail du personnel à la place et n'a pas besoin de compte ici (Le portail du personnel (chapitre 33)).
Rôles
| Rôle | Peut |
|---|---|
| Administrateur | modifier tout, lire les enregistrements, voir l'existence de chaque champ secret (mais jamais sa valeur) |
| Observateur | voir tout, modifier rien ; les secrets sont masqués |
Un changement de rôle ou de mot de passe déconnecte la personne partout en même temps.
Authentification à deux facteurs
Chaque personne active l'authentification à deux facteurs pour elle-même : Configurer affiche une clé pour une application d'authentification ; la saisie du code qu'elle affiche l'active. À partir de ce moment, la connexion demande un code en plus du mot de passe. La désactivation nécessite le mot de passe.
Authentification unique
Avec l'authentification unique (Paramètres), les personnes se connectent avec le compte de l'organisation (Microsoft Entra, Google, Okta, tout fournisseur OpenID Connect), et un compte est créé pour elles la première fois. Voir Authentification unique (chapitre 58).
Jetons d'API
Les programmes (Terraform, scripts) utilisent des jetons d'API au lieu d'un mot de passe : créés sur cette page, affichés une seule fois et révoqués à tout moment. Chaque jeton est un administrateur ou un observateur. Un jeton créé avec Nomme la personne qu'il représente (pour un CAD) peut envoyer X-BitVoice-On-Behalf-Of avec le nom de la personne, et les enregistrements nomment alors cette personne à côté du jeton (appels d'urgence (chapitre 77)).
Authentification unique
L'authentification unique permet aux personnes de se connecter à BitVoice avec leur compte de travail, via tout fournisseur OpenID Connect : Microsoft Entra ID, Google, Okta, Keycloak et d'autres. Lorsqu'une personne quitte l'organisation, son accès est également supprimé ici.
Configuration
Dans Paramètres (chapitre 14), Authentification unique :
- Inscrivez une application auprès du fournisseur, avec l'Adresse de redirection affichée ici.
- Remplir pour un fournisseur définit l'Émetteur pour les plus courants ; copiez l'ID client et le Secret client du fournisseur.
- Nommez les Groupes d'administrateurs et les Groupes de visionneurs du fournisseur. Réclamation de groupes est où le fournisseur les place (
groupssauf si défini). - Modifiez facultativement le Texte du bouton sur la page de connexion.
- Activez Utiliser l'authentification unique.
Fonctionnement
- Le compte ici est créé à la première connexion ; les groupes définissent le rôle à chaque connexion, donc déplacer quelqu'un entre les groupes du fournisseur change son rôle ici.
- Quelqu'un qui n'est dans aucun type de groupe est refusé, et le refus est dans le journal d'audit.
- Avec Autoriser également les mots de passe désactivé, les mots de passe ne fonctionnent que sur cet ordinateur, donc une panne du fournisseur ne vous verrouille jamais.
Annuaire d'entreprise (Active Directory et LDAP)
BitVoice peut lire votre annuaire d'entreprise, Active Directory ou un autre serveur LDAP (OpenLDAP, Samba, 389 Directory Server, FreeIPA) : les personnes ayant un numéro de téléphone deviennent des extensions, les groupes d'annuaire remplissent les groupes de sonnerie, et les personnes se connectent à l'interface Web avec leur mot de passe d'annuaire. BitVoice ne lit que l'annuaire ; il n'y écrit jamais.
Connexion
Dans Paramètres (chapitre 14), Annuaire d'entreprise :
- Choisissez Active Directory ou OpenLDAP ou un autre serveur LDAP : cela définit les attributs lus (sAMAccountName ou uid pour le nom de connexion, displayName ou cn, mail, telephoneNumber). Modifiez-les dans leur boîte.
- Serveur :
ldaps://dc1.example.com(port 636), ouldap://...avec StartTLS activé. Le LDAP non sécurisé est refusé, sauf si le serveur est cet ordinateur, car les mots de passe traverseraient le réseau non cryptés. Lorsque le certificat du serveur provient de votre propre autorité de certification, collez l'autorité dans Autorité de certification de l'entreprise. - Compte de lecture et Son mot de passe : un compte autorisé à lire les personnes et les groupes (
reader@example.comsur Active Directory). Le mot de passe peut être une référence au coffre de clés (Paramètres, Coffres de clés). - DN de base : où se trouvent les personnes et les groupes (
dc=example,dc=com). Quelles personnes les restreint avec un filtre LDAP ; sur Active Directory, les comptes désactivés sont toujours exclus. - Test se connecte avec le compte de lecture et lit tout le monde, sans modifier quoi que ce soit : cela montre combien de personnes il a trouvées, combien ont un numéro et l'extension que chaque personne obtiendrait.
Extensions et groupes de sonnerie
- Avec Créer et mettre à jour les extensions activé, chaque personne ayant un numéro obtient une extension : les derniers Chiffres conservés (4 de
+1 212 555 0123est 0123 ; 0 conserve tous les chiffres, qui doivent alors être de 2 à 8). Les nouvelles extensions obtiennent un mot de passe SIP et une messagerie vocale avec un PIN aléatoire ; le nom et l'e-mail de la personne proviennent de l'annuaire. - L'annuaire possède une extension qu'il a créée : son numéro, son nom et son e-mail suivent l'annuaire à chaque synchronisation. Tout le reste (appareils, transfert, paramètres de messagerie vocale) vous appartient.
- Une extension que vous avez créée manuellement n'est jamais reprise, sauf si elle a le nom ou l'e-mail de cette personne. Deux personnes ayant le même numéro, un numéro qu'une autre extension possède déjà, ou un numéro de mauvaise longueur est répertorié sous À examiner, et rien n'est modifié pour eux.
- Avec Désactiver les extensions des personnes qui sont parties activé, une extension créée par l'annuaire est désactivée lorsque la personne part, est désactivée ou perd son numéro, et revient lorsqu'elle revient.
- Groupes de sonnerie remplis à partir de groupes d'annuaire : chaque ligne place les extensions des membres d'un groupe dans un groupe de sonnerie (les groupes imbriqués comptent sur Active Directory). Un groupe sans personne ayant une extension laisse le groupe de sonnerie tel quel.
- L'annuaire est lu toutes les Lire toutes les minutes (60 par défaut), et immédiatement avec Synchroniser maintenant. Chaque synchronisation qui modifie quelque chose est une révision (chapitre 61) nommée « Synchronisation de l'annuaire d'entreprise », afin qu'elle puisse être annulée ; le rapport de la dernière synchronisation s'affiche sous le bouton.
Connexion
Avec Les personnes se connectent ici avec leur nom et leur mot de passe d'annuaire activé, la page de connexion accepte les noms et les mots de passe d'annuaire ainsi que les comptes BitVoice :
- Les membres des Groupes d'administrateurs se connectent en tant qu'administrateurs, des Groupes de visionneurs en tant que visionneurs (sans groupe de visionneurs, n'importe qui d'autre dans l'annuaire). Les groupes sont nommés par leur nom (cn) ou leur DN ; les groupes imbriqués comptent sur Active Directory. Quelqu'un qui n'est dans aucun groupe de ce type est refusé.
- Le compte ici est créé à la première connexion et son rôle suit les groupes à chaque connexion. Il ne reprend jamais un compte BitVoice du même nom.
- Un mot de passe vide est toujours refusé (LDAP le prendrait autrement comme une connexion anonyme), un compte désactivé ne peut pas se connecter, et les noms sont échappés avant d'atteindre l'annuaire.
- La connexion à deux étapes peut être ajoutée à ces comptes comme à n'importe quel autre.
Sécurité
/securityUn système téléphonique sur Internet est attaqué dans les heures qui suivent : les analyseurs tentent des mots de passe sur chaque port SIP, et un système compromis génère des appels vers des numéros premium. BitVoice est conçu pour résister à cela par défaut, en couches.
Contre les devinettes de mots de passe
- Les adresses qui échouent régulièrement à se connecter sont interdites pendant un certain temps (Paramètres, Protection) : par défaut, dix échecs en une minute interdisent l'adresse pendant une heure. Les adresses interdites sont répertoriées sur Sécurité (chapitre 60) et peuvent être débloquées.
- Les réseaux de confiance ne sont jamais interdits : votre réseau de bureau.
- Les mots de passe SIP sont générés, d'au moins 12 caractères, un par extension. Un téléphone qui se connecte en tant qu'une extension ne peut jamais s'enregistrer en tant qu'une autre.
- Un analyseur qui est interdit ne reçoit aucune réponse, il n'apprend donc rien.
Contre la fraude
- Les extensions ne peuvent appeler des numéros externes que lorsqu'elles sont autorisées.
- Les numéros à tarifs majorés sont refusés à moins qu'une route ne les nomme.
- Le gardien de fraude d'appel (ci-dessous) juge chaque appel sortant du pays avant qu'il ne soit établi.
- Coûts (chapitre 54) alerte sur les budgets et les dépenses excessives : de nombreux appels vers un pays en une heure.
- Chaque extension peut avoir au maximum quatre appels simultanés (Paramètres, Protection).
Le gardien de fraude d'appel
Activez-le dans les Paramètres, Gardien de fraude d'appel. Chaque appel sortant du pays (par +, 00 ou 011, et les endroits qui partagent +1 avec l'Amérique du Nord mais sont d'autres pays, tels que la Jamaïque, une destination classique de fraude d'appel) est alors jugé avant d'être établi :
| Situation | Ce qu'il fait |
|---|---|
| Un appel à l'étranger vers un pays que cette extension a appelé au cours des 90 derniers jours | le laisse passer |
| Un premier appel vers ce pays en 90 jours | le laisse passer et le signale |
| Un premier appel vers ce pays en dehors des heures de travail, ou effectué depuis l'extérieur (un appel entrant, un transfert) | demande le code PIN demandé (avec aucun choisi, le refuse) |
| Plus de Appels à l'étranger en 10 minutes depuis une extension | le refuse |
| Un premier appel à l'étranger pendant que quelqu'un devine des mots de passe (trois échecs consécutifs depuis une adresse, ou une interdiction, au cours de la dernière heure) | le refuse |
| Un numéro d'urgence | le laisse toujours passer |
Les pays toujours autorisés (codes d'appel, tels que 44) et les exceptions (une extension dispensée jusqu'à un jour, pour un voyage) suppriment les "premier appel" et "hors heures" ; ils n'excusent jamais de nombreux appels en peu de temps ou une attaque, car un mot de passe volé semble approuvé. Si l'historique des appels ne peut pas être lu, le gardien ne sait pas si un appel est un premier, et quelque chose qui n'est pas mesuré n'est jamais considéré comme sûr : il demande le code PIN. Chaque jugement est répertorié sur Sécurité (chapitre 60) avec ses raisons, et se trouve dans l'enregistrement de l'appel dans Historique des appels (chapitre 47).
Comment BitVoice décide
Les juges de BitVoice (le gardien de fraude d'appel, le juge de santé de la jonction, le diagnostic de qualité d'appel et la vérification de l'emplacement de l'appelant 911) suivent chacun un manuel de règles : faits qui sont mesurés, conclusions qu'ils soutiennent, les exceptions qui annulent une conclusion, et les choix. Comment BitVoice décide, sur Sécurité (chapitre 60), montre chaque manuel de règles. Les règles que les juges respectent :
- Chaque réponse vient avec ses raisons : ce qui a été retenu, ce qui a été argumenté contre et ce qui l'a annulé.
- Quelque chose que personne n'a mesuré est inconnu, jamais "non". Lorsqu'un inconnu pourrait changer la réponse, le juge prend son choix prudent et le dit.
- "Impossible de déterminer" est une réponse : lorsque les règles laissent une situation indécise, le juge prend son choix prudent et le dit.
- Chaque manuel de règles est vérifié dans toutes les combinaisons de ses faits avant d'être utilisé (lorsque BitVoice démarre, et par ses tests) : jamais deux choix en même temps, et chaque règle accessible. L'écran montre combien de situations chacun a été vérifié.
Chiffrement
- TLS chiffre la signalisation (port 5061), les mots de passe et les numéros ne sont donc pas lisibles sur le réseau.
- SRTP chiffre le son des appels ; le téléphone navigateur et les applications l'utilisent toujours.
- L'interface web a HTTPS sur le port 8443 avec son propre certificat, ou un que vous installez.
Qui peut faire quoi
- Les administrateurs modifient tout ; les observateurs voient tout mais ne modifient rien ; le personnel utilise le portail pour ses propres appels uniquement.
- Activez la connexion à deux étapes pour chaque administrateur (Administrateurs (chapitre 57)) : un code à partir d'une application d'authentification.
- Authentification unique (chapitre 58) connecte les personnes via votre fournisseur d'identité.
- Le journal d'audit enregistre chaque action administrative et qui l'a effectuée, et ne peut pas être édité.
Changements, sauvegardes et importation
/changesChaque modification sauvegardée est une révision : numérotée, avec qui l'a faite, quand et un résumé d'une ligne. Rien dans la configuration n'est jamais perdu.
Comparaison et restauration
- Ce qui a changé montre la différence entre une révision et la précédente, champ par champ.
- Restaurer montre ce que la restauration changerait et demande confirmation. La restauration est elle-même une nouvelle révision, donc elle peut être annulée également.
Exportation et importation
- Exportation télécharge la configuration entière sous forme d'un seul fichier (secrets exclus, sauf si vous les demandez).
- Importation prévisualise les modifications d'un fichier avant de les appliquer.
- Importation (chapitre 68) lit également les configurations de FreePBX et Asterisk, les listes d'utilisateurs de 3CX et les exports CSV de Cisco Unified CM, Avaya et Mitel.
- Archivage (chapitre 72) copie les sauvegardes, les enregistrements et la messagerie vocale sur Amazon S3 ou Azure.
Changements effectués en même temps
Deux administrateurs ne peuvent pas éditer la même chose en même temps sans s'écraser : la deuxième sauvegarde est refusée avec un message pour recharger, et rien n'est perdu.
Mises à jour
/updatesLa mise à jour de BitVoice est simple et sécurisée : elle vérifie la nouvelle version, l'installe à côté de l'ancienne, et revient en arrière de manière automatique si la nouvelle version ne reste pas active.
Installation d'une mise à jour
- Téléchargez la nouvelle version et décompressez-la. À côté du programme se trouve sa signature de BioDream :
bitvoice.sig, oubitvoice.exe.sigsur Windows. - Sur Mises à jour (chapitre 62), téléchargez le programme et son fichier
.sig. - Appuyez sur Installer. Par défaut, BitVoice attend qu'il n'y ait plus d'appels en cours ; vous pouvez également installer immédiatement.
- BitVoice redémarre sur la nouvelle version. Avec plusieurs serveurs, les appels en cours sont transférés à un autre serveur et se poursuivent.
Retour en arrière
La version que vous avez quittée est conservée : Revenir revient à celle-ci en un seul clic. Une nouvelle version qui échoue à démarrer deux fois, ou qui ne reste pas active pendant une minute, est remplacée par la version précédente de manière automatique.
Signatures
Chaque version à partir de la v0.1.3 comporte la clé de publication de BioDream. Une telle version n'installe que les programmes signés avec cette clé : un fichier non signé, un fichier signé par quelqu'un d'autre, ou un fichier modifié par un seul octet est refusé avec la signature ne correspond pas. La page indique si cette version vérifie (Requis) ou non.
| Vous exécutez | Les mises à jour acceptent |
|---|---|
| une version, v0.1.3 ou ultérieure | uniquement les programmes signés par BioDream |
| v0.1.2 ou antérieure, ou une compilation personnalisée | n'importe quel programme : sans clé, un fichier .sig ne peut pas être vérifié et est ignoré |
Plusieurs serveurs en un seul système téléphonique
/serversDeux serveurs BitVoice ou plus qui partagent une base de données PostgreSQL fonctionnent comme un seul système téléphonique :
- Un appel atteint un téléphone quel que soit le serveur avec lequel il est enregistré : les groupes de sonnerie, les files d'attente, les transferts vers une extension et les appels des lignes fournisseurs sonnent les téléphones sur chaque serveur.
- Les paramètres modifiés sur un serveur s'appliquent sur tous dans les cinq secondes ; les utilisateurs, les contacts, l'historique des appels, les transcriptions des enregistrements et les textes sont partagés.
- Les lampes d'occupation (BLF) affichent les téléphones sur chaque serveur qui sonnent et sont occupés ; les emplacements de stationnement sont partagés, donc un appel stationné sur un serveur peut être repris à partir d'un téléphone sur un autre ; la sonorisation atteint les téléphones sur chaque serveur ; les textes atteignent les téléphones de bureau où qu'ils soient enregistrés.
- Un agent de file d'attente sur un appel sur un serveur est considéré comme occupé sur les autres, et la limite de canaux d'une ligne fournisseur compte les appels sur chaque serveur.
- Les appels en cours sur chaque serveur répertorient également les appels sur les autres (en lecture seule : raccrocher ou écouter sur le serveur qui a l'appel).
- L'enregistrement de l'appel est écrit une seule fois, par le serveur qui a l'appelant, et l'appel est également enregistré là.
Configuration
- Déplacez les données du premier serveur dans PostgreSQL : Paramètres, Base de données.
- Démarrez chaque autre serveur avec la même base de données :
bitvoice -database postgres://…(ou la variable d'environnement BITVOICE_DATABASE). Il rejoint immédiatement ; Serveurs le répertorie. - Sur Serveurs, vérifiez où chaque serveur est accessible (son adresse et son port SIP sur le réseau que les serveurs partagent), et donnez-lui un nom. Les serveurs qui sont chacun accessibles depuis Internet à une adresse qui leur est propre (serveurs cloud avec des adresses IP publiques, pas d'adresse partagée) obtiennent également leur propre adresse publique : les fournisseurs et les téléphones à l'extérieur sont informés de celle-ci, afin que lorsque le serveur prend le relais d'un appel, le son du fournisseur le suive. Laissez-le vide, un serveur utilise l'adresse publique dans les Paramètres.
- Indiquez aux téléphones comment trouver les serveurs (ci-dessous).
- Les lignes fournisseurs (ci-dessous).
Comment les téléphones trouvent les serveurs. Les téléphones configurés par BitVoice (Yealink, Polycom, Grandstream) sont donnés un autre serveur en cours d'exécution comme serveur de secours par eux-mêmes. Pour les autres, Snom et les téléphones configurés manuellement, utilisez l'un des éléments suivants sur Serveurs :
- Un nom DNS pour chaque serveur : un nom tel que pbx.example.com avec des enregistrements SRV (_sip._udp, _sip._tcp, _sips._tcp) répertoriant chaque serveur. Les téléphones configurés par BitVoice reçoivent le nom, et Serveurs vérifie les enregistrements contre les serveurs en cours d'exécution, répertorie ce qui manque et fournit les enregistrements à créer, prêts à être copiés.
- Une adresse partagée : une adresse inutilisée sur le réseau des serveurs, telle que 192.168.1.50/24. Un serveur en cours d'exécution détient l'adresse à un moment donné et informe le réseau immédiatement (gratuitous ARP) ; si cela s'arrête, le prochain serveur prend l'adresse dans les secondes, poursuit ses appels et répond à ses téléphones à la même adresse, sans qu'ils aient besoin de s'enregistrer à nouveau. Cela nécessite Linux et les autorisations NET_ADMIN et NET_RAW (dans un conteneur :
--cap-add NET_ADMIN --cap-add NET_RAW), et les serveurs sur un réseau. Redémarrez chaque serveur après avoir défini cela.
Lignes fournisseurs. Dans chaque trunk, Partagé entre les serveurs indique comment :
- Chaque serveur l'utilise : chaque serveur s'enregistre et effectue ses propres appels. Pour les fournisseurs qui autorisent plusieurs enregistrements sur un compte, ou aucun.
- Un serveur à la fois : un serveur s'enregistre et gère la ligne ; les autres la montrent comme En attente, détenue par ce serveur et envoient leurs appels via celui-ci. Si cela s'arrête, le prochain serveur s'enregistre dans les secondes. Pour les fournisseurs qui autorisent un enregistrement par compte.
Lorsqu'un serveur s'arrête
- Les appels continuent. Chaque serveur conserve une note de ses appels dans la base de données ; lorsqu'un serveur s'arrête, un serveur en cours d'exécution reprend chaque appel dans les secondes, déplace le son vers lui-même et informe les deux extrémités (une nouvelle invitation). Il y a une pause de quelques secondes dans le son. Une arrêt planifié (une mise à niveau, un redémarrage) passe les appels immédiatement, sans pause.
- Un appel dont le téléphone est enregistré sur le serveur qui reprend l'appel est poursuivi là sans déranger ce téléphone : seul l'autre partie est déplacée.
- Ses téléphones continuent via leur serveur de secours, le nom DNS ou l'adresse partagée.
- Un serveur qui ne redémarre que (une mise à niveau, un redémarrage) connaît toujours où ses propres téléphones sont enregistrés : il les conserve dans son dossier de données (
registrations.json), donc les appels les atteignent avant qu'ils ne s'enregistrent à nouveau. - Health et Serveurs le montrent comme arrêté ; lorsqu'il revient, il ne reprend rien du serveur qui a repris.
Entre les serveurs. Les serveurs se rejoignent à leur port SIP via TCP ou TLS s'ils ont un certificat (chacun n'accepte que le certificat que l'autre a publié, et le son entre eux est alors chiffré avec SRTP), et envoient le son vers les ports multimédias les uns des autres (UDP, la plage dans les Paramètres). Les appels entre les serveurs sont signés avec un secret partagé dans la base de données, et ne sont acceptés que d'un membre en cours d'exécution à son adresse propre. Un pare-feu entre eux doit laisser passer ces ports.
Essayez-le d'abord : le lab. BitVoice est livré avec un lab qui exécute deux serveurs, leur base de données et des téléphones de test sur un ordinateur avec Docker, chacun à une adresse propre : deploy/lab/run.sh up construit et démarre, et définit l'adresse partagée ; run.sh call appelle entre les téléphones sur des serveurs différents ; run.sh failover tue le serveur qui transporte l'appel via l'adresse partagée et vérifie que l'appel se poursuit (le son revient en environ cinq secondes) ; run.sh impaired appelle à partir d'un téléphone sur un lien défectueux (délai, jitter et 5 % de perte) et vérifie la qualité de l'appel que BitVoice signale ; run.sh down le supprime. Les pages des serveurs sont à https://127.0.0.1:18501 et :18502 (utilisateur admin).
Où les données sont conservées (SQLite ou PostgreSQL)
/settingsBitVoice conserve ses paramètres et leurs versions sauvegardées, les utilisateurs, les contacts, les enregistrements d'appels, le journal d'audit, les textes, les notes et les transcriptions dans une base de données. Les enregistrements et la messagerie vocale restent des fichiers audio dans le dossier de données.
Fichier propre de ce serveur (SQLite, par défaut) : un seul fichier, bitvoice.db dans le dossier de données, sans rien à installer. Sauvegardez le dossier de données et vous avez tout.
PostgreSQL : pour plusieurs serveurs BitVoice partageant un ensemble de données, ou pour des rapports dans des outils tels que Power BI, Grafana ou Metabase. Dans les Paramètres, Base de données, Déplacer les données dans PostgreSQL : créez une base de données vide et un utilisateur qui la possède, entrez son adresse (postgres://utilisateur:mot_de_passe@hôte:5432/base_de_données), appuyez sur Test, puis Copier les données et redémarrer sur PostgreSQL. Tout est copié en une seule fois (tout ou rien) et BitVoice redémarre dessus ; l'ancien fichier reste où il était. Le déplacement vers le fichier propre du serveur fonctionne de la même manière. Les déplacements sont refusés pendant les appels en cours.
Les serveurs partageant une base de données PostgreSQL voient les modifications de paramètres les uns des autres dans les cinq secondes. Chacun répond toujours à ses propres téléphones et appels ; pour qu'un deuxième serveur prenne le relais des téléphones d'un premier, les téléphones ont besoin des deux adresses (ou d'une adresse qui se déplace).
La base de données peut également être nommée lors du démarrage de BitVoice, avec -database postgres://… ou la variable d'environnement BITVOICE_DATABASE ; elle est alors modifiée là, et non dans les Paramètres.
Anciennes installations : au premier démarrage de cette version, BitVoice copie ses anciens fichiers JSON dans la base de données et les déplace dans pre-database dans le dossier de données.
Hébergement d'autres organisations
/tenantsUn seul BitVoice peut héberger plusieurs organisations. Chacune est un système téléphonique à part entière : ses propres extensions, numéros, troncs, routes, administrateurs, boîte vocale, enregistrements et historique d'appels. Aucune organisation ne peut voir celle d'une autre. Elles partagent uniquement le port SIP, le port IAX2 et les ports multimédias de ce serveur.
Quand l'utiliser
- Un fournisseur, ou une entreprise de technologie de l'information, exécutant des systèmes téléphoniques pour de nombreux petits clients sur un seul serveur.
- Un groupe de bureaux ou de cliniques qui veulent des systèmes séparés, administrés séparément, sur du matériel partagé.
- Plusieurs points de réception d'appels partageant un seul système, chacun conservant ses propres répondeurs d'appels et dossiers.
Le système principal est également une organisation : celle pour laquelle ce serveur a été configuré. Ses administrateurs gèrent les autres.
Ajout d'une organisation
- Ouvrez Organisations (chapitre 65) et appuyez sur Ajouter une organisation.
- Donnez son nom et un nom court (lettres minuscules, chiffres et tirets). Le nom court fait partie de son adresse web,
/t/acme/, et de la connexion de ses téléphones,acme.100. Il ne peut pas être modifié ultérieurement. - Donnez éventuellement son domaine propre, tel que
pbx.acme.example, pointant vers ce serveur. Les téléphones s'enregistrent sur ce domaine, et ses administrateurs l'ouvrent dans un navigateur. - Définissez son premier administrateur : un nom d'utilisateur et un mot de passe d'au moins 12 caractères, ainsi que son pays.
- Définissez éventuellement les limites.
L'organisation démarre immédiatement avec un système téléphonique vide, prêt pour que son administrateur le configure comme décrit dans Premiers pas (chapitre 1).
Comment les appels trouvent l'organisation appropriée
| Une demande | va à |
|---|---|
à partir d'un téléphone s'enregistrant sur pbx.acme.example | l'organisation avec ce domaine |
à partir d'un téléphone se connectant en tant que acme.100 | Acme, extension 100 |
| à partir d'un fournisseur, pour un numéro | l'organisation dont le tronc provient et dont la route d'entrée a ce numéro |
| tout autre chose | le système principal |
Ainsi, deux organisations peuvent avoir toutes deux l'extension 100, et plusieurs peuvent partager un compte fournisseur avec différents numéros.
Où sont ses données
Sur SQLite, chaque organisation a son propre dossier sous tenants/ dans le dossier de données, avec son propre fichier de base de données. Sur PostgreSQL, chaque organisation a son propre schéma dans la même base de données (tenant_acme). Les sauvegardes, les archives et les exports sont par organisation.
Limites
| Limite | Ce qui se passe à cette limite |
|---|---|
| Extensions | l'ajout d'une autre est refusé avec un message |
| Appels simultanés | les nouveaux appels sont refusés (503) jusqu'à ce que l'un se termine |
| Stockage | les nouveaux enregistrements et la boîte vocale ne sont pas conservés |
| Demandes d'IA par jour | les transcriptions, les résumés et la réceptionniste d'IA s'arrêtent jusqu'à minuit UTC |
0 est aucune limite. Les appels d'urgence ne sont jamais refusés : une organisation à sa limite d'appels, ou suspendue, peut toujours appeler le 911 et être rappelée.
Ouverture d'une organisation
Ouvrir vous connecte à son interface web en tant que fournisseur, sans son propre compte ; cela apparaît dans son journal d'audit en tant que fournisseur. Ses administrateurs se connectent à son adresse avec leurs propres comptes. Chaque organisation a son propre cookie de connexion, donc être connecté à l'une ne connecte jamais personne à une autre.
Les organisations ne voient jamais les écrans propres à ce serveur : mises à jour, base de données, autres serveurs, certificat, trace SIP (qui affiche les messages de chaque organisation), générateur d'appels ou cette liste.
Suspension et suppression
Suspendu arrête les connexions et chaque appel, sauf les appels d'urgence ; rien n'est supprimé. Supprimer arrête l'organisation et déplace son dossier de côté (tenants/.removed-<name>-<time>), afin qu'une erreur puisse être annulée manuellement.
Codecs et son
Un codec est la façon dont le son est converti en données lors d'un appel. Les téléphones, les navigateurs et les opérateurs supportent chacun certains ; BitVoice convertit entre n'importe quels deux de ses codecs lorsque les deux parties diffèrent, afin que tout le monde puisse parler à tout le monde. Lorsque les deux utilisent le même codec, le son passe sans être modifié.
Les codecs
| Codec | Son | Bande passante | Utilisé par |
|---|---|---|---|
| G.722 | HD (large bande) | 64 kbit/s | la plupart des téléphones de bureau : le meilleur choix entre eux |
| G.711 µ-law | téléphone | 64 kbit/s | Amérique du Nord et Japon ; chaque opérateur |
| G.711 A-law | téléphone | 64 kbit/s | le reste du monde |
| Opus | HD, tolère les pertes | 24 kbit/s | navigateurs et applications mobiles |
| G.729 | téléphone, un peu plus rugueux | 8 kbit/s | liens étroits, certains opérateurs |
| G.726 (40 kbit/s) | téléphone ; transporte les tons de modem le mieux des taux G.726 | 40 kbit/s | passerelles, certains systèmes DECT |
| G.726 (32 kbit/s) | proche du téléphone | 32 kbit/s | bases DECT, anciennes passerelles |
| G.726 (24 kbit/s) | entre 32 et 16 | 24 kbit/s | certains systèmes DECT |
| G.726 (16 kbit/s) | rugueux | 16 kbit/s | liens très étroits |
| AMR-WB (G.722.2) | HD | 6,6 à 23,85 kbit/s | voix HD des réseaux mobiles, interconnexions VoLTE |
| AMR | téléphone, mobile | 4,75 à 12,2 kbit/s | réseaux mobiles, certains opérateurs et passerelles |
| iLBC | téléphone, tolère les pertes | 13,3 ou 15,2 kbit/s | anciens logiciels de téléphonie et applications |
| Speex | téléphone | 15 kbit/s (2,15 à 24,6) | anciens logiciels de téléphonie, liens vers d'autres systèmes Asterisk |
| GSM | plus rugueux | 13 kbit/s | anciens logiciels de téléphonie et passerelles |
| G.723.1 | rugueux ; converti uniquement avec ffmpeg | 5,3 ou 6,3 kbit/s | très anciens téléphones vidéo et passerelles |
| G.722.1 (Siren 7) | large bande, transporté sans modification | 24 ou 32 kbit/s | téléphones Polycom, téléphones vidéo et de conférence |
| G.722.1C (Siren 14) | super-large bande, transporté sans modification | 24 à 48 kbit/s | téléphones de conférence, systèmes de salle |
| G.719 | bande complète, transporté sans modification | 32 à 128 kbit/s | systèmes de salle de téléprésence |
| Codec2 | très faible bande passante, transporté sans modification | 0,7 à 3,2 kbit/s | liens radio, passerelles radio amateur |
Les paramètres répertorient les codecs que les téléphones peuvent utiliser, dans l'ordre de préférence ; chaque trunk peut avoir sa propre liste. Les ports d'adaptateurs analogiques utilisent toujours G.711, qui est nécessaire pour les télécopieurs, les modems et les panneaux d'alarme.
G.722.1, G.722.1C, G.719 et Codec2 sont transportés sans modification entre deux parties qui les utilisent toutes les deux, avec leur débit binaire ou leur mode conservé dans l'offre (BitVoice ne les convertit pas, donc un appel entre l'un de ces codecs et un téléphone qui ne le prend pas en charge utilise un autre codec que les deux partagent). Placez-les dans une liste, au-dessus de G.711, où les systèmes de salle ou les téléphones de conférence devraient conserver leur plage de sons lorsqu'ils s'appellent mutuellement. Les listes nomment G.722.1 à 32 kHz G7221C, bien que SDP les appelle tous les deux G7221.
G.723.1 passe sans modification entre deux parties qui l'utilisent toutes les deux. Pour permettre à un appareil qui ne prend en charge que G.723.1 de parler à n'importe quel autre appareil, activez Convertir G.723.1 avec ffmpeg dans les paramètres et installez ffmpeg (apt install ffmpeg, brew install ffmpeg) : BitVoice exécute alors ffmpeg comme un programme distinct pour chaque direction qui nécessite une conversion (entendu à l'une ou l'autre fréquence, envoyé à 6,3 kbit/s, le débit que l'encodeur ffmpeg génère), environ 60 ms plus tard que les autres codecs, et l'arrête quelques secondes après la fin de l'appel. BitVoice ne contient pas de code G.723.1 : le code de référence de l'UIT n'a pas de licence qui permet de l'inclure, et ffmpeg est installé et exécuté séparément.
Quel est le coût de la conversion
La conversion prend du temps de processeur, uniquement sur les appels où les deux côtés diffèrent. Par appel, environ 0,3 ms d'un cœur toutes les 20 ms pour Opus et 0,12 ms pour G.729 (environ 60 et 170 appels convertis par cœur) ; le G.726 et le GSM coûtent moins que le G.729 ; le G.711 et le G.722 presque rien. Le G.729 est envoyé sans l'annexe B (pas de trames de silence).
Nettoyage du son
Le nettoyage du son (Paramètres) réduit le bruit de fond constant et égalise les niveaux, pour la messagerie vocale et, si vous le souhaitez, pendant les appels.
Microsoft Teams (Direct Routing)
/trunksBitVoice peut être le contrôleur de session de limite (SBC) pour un locataire Microsoft Teams, de sorte que les utilisateurs de Teams appellent les extensions BitVoice et vos lignes téléphoniques, et que BitVoice fait sonner les utilisateurs de Teams.
Ce dont vous avez besoin : un nom public pour ce serveur dans un domaine que votre locataire Microsoft 365 a vérifié (sbc.example.com), le port 5061 ouvert dans les deux sens vers les réseaux Microsoft 52.112.0.0/14 et 52.120.0.0/14, et un certificat pour ce nom d'une autorité publique. Les utilisateurs de Teams ont besoin d'une licence Phone System.
Étapes
- Paramètres, Certificat : installez le certificat et sa clé privée (PEM). Il est utilisé immédiatement, pour cette interface et pour SIP sur TLS, et BitVoice le présente à Microsoft.
- Troncs, Ajouter, commencez par Microsoft Teams : entrez le nom public du serveur. Le tiroir indique si le certificat le couvre.
- Copiez le PowerShell que le tiroir affiche et exécutez-le en tant qu'administrateur Teams : il ajoute le SBC (New-CsOnlinePSTNGateway), une voie vocale et une stratégie, ainsi qu'une règle de plan d'appel pour que les numéros d'extension courts atteignent BitVoice tel quel ; puis attribuez à chaque utilisateur Teams la stratégie et son numéro.
- Pour faire sonner les utilisateurs Teams à partir de BitVoice, ajoutez une voie sortante pour leurs numéros via le tronc Teams. Teams trouve ses utilisateurs uniquement par des numéros avec + et le code de pays : si les gens les composent sans, ajoutez + et le code de pays dans le Préfixe de la voie (le journal de l'appel indique quand un appel sort sans).
Lorsqu'un utilisateur Teams transfère un appel, Microsoft demande à BitVoice de le placer (une REFER nommant son propre proxy, avec le numéro ou l'ID de l'utilisateur Teams) : BitVoice rappelle exactement ce que Microsoft a nommé, avec le Referred-By que Microsoft a fourni, donc un transfert vers un autre utilisateur Teams fonctionne aussi bien qu'un transfert vers un numéro de téléphone. BitVoice n'envoie jamais un en-tête Replaces à Teams, que Microsoft refuse.
BitVoice envoie des OPTIONS à Microsoft toutes les minutes avec le nom SBC dans Contact, comme Microsoft l'exige, et tente sip, sip2 et sip3.pstnhub.microsoft.com tour à tour. Les médias sont toujours chiffrés (SRTP). La santé avertit lorsque le certificat ne couvre pas le nom, est auto-signé ou se termine bientôt, et lorsque Microsoft cesse de répondre.
Ceci suit les exigences SBC publiées par Microsoft et est testé contre un proxy Microsoft simulé ; BitVoice n'est pas sur la liste des SBC certifiés par Microsoft.
Importation
/importTransfère les extensions, les groupes de sonnerie, les files d'attente et les troncs de FreePBX, Asterisk ou 3CX ; et les personnes, les groupes de chasse, les troncs SIP, les numéros d'arrivée et les modèles de composition de Cisco, Avaya et Mitel. Téléchargez les fichiers exportés, plusieurs à la fois (un .zip ou .tar d'entre eux fonctionne également) ; BitVoice affiche exactement ce qui changerait avant que quoi que ce soit ne soit appliqué, et l'importation devient une révision que vous pouvez annuler sur Changements (chapitre 61).
Déplacement de FreePBX
Le meilleur fichier est une sauvegarde FreePBX : elle contient tout, y compris les mots de passe SIP.
- Dans FreePBX : Admin → Sauvegarde et restauration → Ajouter une sauvegarde. Cochez au moins Core, Groupes de sonnerie, Files d'attente et Messagerie vocale (tous les modules est acceptable), enregistrez, et Exécutez.
- Téléchargez la sauvegarde à partir de sa ligne (le fichier est nommé comme
20261001-100000-1790000000-17.0.19-1234567.tar.gz). - Installez BitVoice sur le nouveau serveur et terminez la configuration avec une extension que FreePBX n'utilise pas (disons 199) et sans ligne téléphonique : l'importation apporte les lignes.
- Sur Importation (chapitre 68), déposez le .tar.gz tel quel. Lisez l'aperçu : les avertissements énumèrent tout ce qui ne peut pas être transféré.
- Choisissez Ajouter. Il s'agit d'une révision sur Changements (chapitre 61) : annulez-la si quelque chose ne semble pas correct, et importez à nouveau.
- Déplacez les téléphones : pointez chacun vers BitVoice (ou configurez-les à partir de Téléphones (chapitre 4)), avec le même numéro d'extension et le même mot de passe SIP qu'ils avaient.
- Testez les appels entrants et sortants, puis déplacez l'enregistrement du transporteur (ou le transfert de numéro) en dernier.
Essayé sur un système réel : un FreePBX 17.0.33 (l'installation officielle Debian 12) avec quatre extensions et messagerie vocale, un tronc PJSIP qui s'enregistre, deux routes de sortie (l'une avec un préfixe de composition), un groupe de sonnerie, une file d'attente avec des pénalités et trois DIDs, sauvegardé par Sauvegarde et restauration avec tous les modules cochés. La sauvegarde est de 70 Mo, presque tout cela étant des fichiers audio et des journaux d'appels : BitVoice les lit à mesure qu'ils arrivent et ne conserve que la configuration, donc une sauvegarde de jusqu'à 512 Mo peut être téléchargée. Tout ce qui précède a été transféré : les mots de passe, les PIN de messagerie vocale et les adresses e-mail, l'enregistrement du tronc et les codecs, les routes avec leurs préfixes, la messagerie vocale du groupe de sonnerie lorsqu'il n'est pas répondu, les pénalités de la file d'attente et les DIDs du groupe, de la file d'attente et de l'extension.
Ce qui est transféré :
- Extensions : le numéro, le nom, l'identifiant de l'appelant sortant, le temps de sonnerie et le mot de passe SIP (BitVoice en crée un nouveau lorsque celui de FreePBX est plus court que 12 caractères : réinsérez-le dans ce téléphone). La messagerie vocale avec son PIN et son adresse e-mail (et si les messages sont envoyés en pièce jointe).
- Troncs : les comptes de transporteur PJSIP et chan_sip : serveur, port, nom d'utilisateur, mot de passe, enregistrement, domaine de provenance, codecs, identifiant de l'appelant, limite de canal. Les troncs désactivés restent éteints. Les troncs DAHDI deviennent le tronc de carte de téléphonie.
- Routes de sortie, dans l'ordre de FreePBX : chaque modèle de préfixe devient des chiffres supprimés, ses chiffres à préfixer ajoutés. Une route dont les modèles suppriment ou ajoutent des chiffres différents devient une route BitVoice pour chacun.
- Groupes de sonnerie : les membres, le temps de sonnerie, sonnerie-tous ou un-à-la-fois (chasse, chasse à la mémoire, premier disponible), et où les appels non répondues vont.
- Files d'attente : les membres avec leurs pénalités, stratégie (sonnerie-tous, moins récent, moins d'appels, robinet, linéaire, aléatoire), temps de sonnerie, temps de rappel et plus longue attente.
- Routes d'arrivée : chaque DID à son extension, groupe de sonnerie, file d'attente, boîte de messagerie vocale, ou raccrochage.
Ce qui ne l'est pas, et est indiqué dans l'aperçu : les IVR, les conditions de temps, les annonces, les suivis, les troncs personnalisés et les contextes, la correspondance de l'identifiant de l'appelant sur les routes, et les numéros externes dans les groupes de sonnerie. Construisez-les sur Menus (chapitre 21), Horaires (chapitre 26) et le Suivi de l'extension. Les sauvegardes plus anciennes (FreePBX 13 et avant) et un mysqldump asterisk simple de la base de données FreePBX sont lus de la même manière.
Autres systèmes
Où chaque exportation est :
- FreePBX (seulement les extensions) : Admin → Bulk Handler → Export → Extensions (CSV).
- Asterisk : pjsip.conf ou sip.conf.
- 3CX : Utilisateurs → Export (CSV).
- Cisco Unified CM : Administration en bloc → Téléphones → Exporter les téléphones, tous les détails ; ou Utilisateurs → Exporter les utilisateurs. La première ligne des téléphones devient l'extension, avec le nom ou l'étiquette de la ligne d'alerte comme nom.
- Avaya IP Office : Manager → Fichier → Import/Export → Export, Utilisateurs.
- Avaya Communication Manager :
list stationenregistré sous forme de CSV ; les stations virtuelles et les VDN sont exclus. - Mitel MiVoice Business : Gestion des données du système → Configuration des utilisateurs et des appareils → Export.
Groupes et routes. Téléchargez-les avec le fichier des personnes, afin que les membres de chaque groupe soient trouvés par numéro ou par nom :
- Cisco Unified CM : Administration en bloc → Importer/Exporter → Exporter, avec Groupe de lignes, Liste de chasse, Pilote de chasse, Tronc SIP et Modèle de route coché ; téléchargez le fichier .tar tel quel. Chaque pilote de chasse devient un groupe d'appel avec les membres de sa liste de chasse, Top Down et Circulaire comme l'un après l'autre, Diffusion comme tout le monde en même temps, le délai de réversion RNA comme le temps d'appel. Les modèles de route deviennent des routes sortantes :
9.[2-9]XXXXXXavec PréPoint devient le modèle9[2-9]XXXXXXen supprimant le 9 ;!devient un point final. Les modèles utilisant@(le plan national) sont répertoriés pour être écrits à la main. - Avaya IP Office : exportez le groupe de chasse ainsi que les utilisateurs (les deux sont au format CSV sans ligne d'en-tête). Le mode de groupe est tout le monde en même temps ; Chasse, Rotary et Longest Waiting sonnent les uns après les autres.
- Avaya Communication Manager :
list hunt-groupenregistré au format CSV, avec les membres dans une colonne Membres ou dans un fichier de membres distinct. - Mitel MiVoice Business : Groupes d'appel et affectation de groupe d'appel (Cascade est l'un après l'autre, Ring All est tout le monde en même temps), et groupes de chasse.
Les troncs issus de ces exportations sont désactivés et ne disposent pas de mots de passe, car les exportations ne les contiennent pas. Les routes sortent sur le tronc importé du même nom ; une route dont le tronc n'est pas ici est exclue et signalée. Les sonneries rotatives et les plus longues inactives sont plus proches d'une file d'attente que d'un groupe d'appel : l'aperçu le signale, vous pouvez donc en faire une.
Ces exportations (toutes sauf une sauvegarde FreePBX) ne contiennent pas de mots de passe SIP, chaque extension reçoit donc un nouveau mot de passe ; les codes PIN de messagerie vocale, les noms et les adresses e-mail sont conservés lorsque l'exportation les contient. Les téléphones Cisco, Avaya H.323/DCP et Mitel exécutent leur propre logiciel et ne peuvent pas être configurés par BitVoice : l'importation indique combien ont été répertoriés. Les téléphones Cisco peuvent être reflashés avec le firmware multiplateforme (SIP) de Cisco ; les téléphones Avaya J100 et Mitel 6800/6900 peuvent s'enregistrer sur BitVoice manuellement en mode SIP.
Configuration en tant que code
Tout ce que les écrans font passe par l'API REST de BitVoice, donc tout peut être scripté, conservé dans Git ou géré avec Terraform. L'API est décrite pour les outils à /api/openapi.json (/api/openapi.json).
Jetons d'API
Créés sur Administrateurs (chapitre 57) : un par programme, en lecture seule ou capable de modifier tout. L'envoyer comme Authorization: Bearer bv_.... Il est affiché une seule fois ; révoquez-le lorsqu'il n'est plus nécessaire. Les modifications d'un jeton apparaissent dans les modifications et le journal d'audit sous son nom.
curl -H "Authorization: Bearer bv_..." https://pbx.example.com/api/extensions
Terraform ou OpenTofu
Le référentiel deploy/terraform montre les extensions, les groupes de sonnerie et les routes gérés avec le fournisseur REST générique : le plan montre ce qui changerait, l'application effectue le changement. Le fournisseur vérifie le certificat de BitVoice ; tant que BitVoice utilise encore son propre certificat auto-signé, obtenez-en un de Let's Encrypt (Paramètres, Certificats) ou définissez bitvoice_insecure = true sur un réseau de confiance (sur Linux, SSL_CERT_FILE pointant vers le certificat de BitVoice fonctionne également). Les ressources sont associées par l'ID que BitVoice leur attribue, donc un deuxième plan ne montre pas de modifications jusqu'à ce que le fichier ou les écrans modifient quelque chose.
Configuration à partir de Git
Dans Paramètres (chapitre 14), Configuration à partir de Git, BitVoice lit la configuration à partir d'un fichier dans un référentiel toutes les quelques minutes et soit affiche ce qui diffère, soit effectue les modifications. Commencez le fichier avec Export pour Git, qui omet les mots de passe ; BitVoice conserve les siens, donc les secrets ne vont jamais dans le référentiel.
Compatibilité Asterisk (AMI, ARI et AGI)
Les outils écrits pour Asterisk peuvent contrôler BitVoice : CRM, tableaux de bord, boutons de composition de numéros, contrôleurs d'enregistreurs d'appels. Activez-le dans Paramètres (chapitre 14), Compatibilité Asterisk. Les outils voient les appels comme des canaux nommés comme PJSIP/100-..., comme sur Asterisk.
AMI
L'interface de gestion sur le port TCP 5038 (AMI écoute sur : cet ordinateur uniquement par défaut). Pris en charge :
| Type | Noms |
|---|---|
| Actions | Connexion (simple ou défi MD5), Ping, Événements, Filtre, ListCommands, CoreShowChannels, Statut, CoreStatus, CoreSettings, PJSIPShowEndpoints, ÉtatExtension, ListeÉtatExtension, ListeÉtatAppareil, Getvar, Originate, Redirect, BlindTransfer, Hangup, Logoff |
| Files d'attente | QueueStatus, QueueSummary, QueuePause, QueueAdd et QueueRemove (ils connectent un agent à, ou le déconnectent de, toutes ses files d'attente), Agents |
| Autre | AppelsEnAttente ; ConfbridgeListRooms, ConfbridgeList, ConfbridgeKick, ConfbridgeMute, ConfbridgeUnmute, ConfbridgeLock, ConfbridgeUnlock ; MailboxCount, MailboxStatus ; PauseMonitor, UnpauseMonitor ; UserEvent ; Reload (rien à recharger : les modifications s'appliquent immédiatement) |
| Événements | Newchannel, Newstate, Hangup, DialBegin, DialEnd, Hold, Unhold, PeerStatus, ContactStatus, MessageWaiting, ConfbridgeJoin, ConfbridgeLeave, ConfbridgeEnd, UserEvent |
Filtre conserve uniquement les événements correspondant à une expression régulière (Event: Newchannel), ou les supprime avec ! au début, comme sur Asterisk. Il n'y a pas de ligne de commande Asterisk : Commande répond avec une erreur.
ARI
À /ari/, avec une authentification de base ou ?api_key=user:secret :
| Requête | Ce qu'elle fait |
|---|---|
GET /ari/channels | les appels en cours |
POST /ari/channels?endpoint=PJSIP/100&extension=5551234 | sonner 100, puis appeler le numéro |
DELETE /ari/channels/{id} | raccrocher |
POST /ari/channels/{id}/redirect?endpoint=PJSIP/102 | envoyer l'appel à 102 |
/ari/endpoints, /ari/bridges, /ari/asterisk/info | téléphones, ponts, version |
/ari/events | un WebSocket d'événements |
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=rtp&format=ulaw | un canal envoyant du son à un programme par RTP (ulaw ou alaw sur UDP) ; son port local est dans le canal UNICASTRTP_LOCAL_PORT |
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=audiosocket&transport=tcp&format=slin&data=<uuid> | le même par AudioSocket |
POST /ari/bridges/{call}/addChannel?channel={id} | le canal de médias externes rejoint un appel : il entend les deux parties et les deux l'entendent ; avec role=listener personne ne l'entend (pour la transcription en direct) |
POST /ari/bridges/{call}/removeChannel?channel={id} | il quitte l'appel ; les deux parties parlent directement à nouveau |
Un canal de médias externes non ajouté à un appel dans une minute est fermé.
Applications ARI
Une application ARI (Asterisk's Stasis()) exécute des appels à partir de votre propre programme. Ajoutez-la sous Applications ARI dans les paramètres, compatibilité Asterisk : un nom, un numéro facultatif d'extensions pour composer, et un fallback. Ensuite, envoyez des appels à celui-ci comme n'importe quelle destination : une route d'entrée, une touche de menu, un planning.
Votre programme se connecte à /ari/events?app=NAME (un WebSocket, avec la connexion dans ?api_key=user:secret). Chaque appel atteignant l'application est répondu et arrive sous forme de StasisStart, avec le canal ; le programme l'exécute ensuite :
| Requête | Ce qu'elle fait |
|---|---|
POST /ari/channels/{id}/play?media=sound:goodbye,digits:42 | joue des invites à partir de Sons (sound:), digits:, number:, tone:beep ou un enregistrement stocké (recording:) ; PlaybackStarted et PlaybackFinished suivent. DELETE /ari/playbacks/{id} l'arrête. |
POST /ari/channels/{id}/record?name=msg1&maxDurationSeconds=60&maxSilenceSeconds=5&beep=true&terminateOn=%23 | enregistre (wav) dans les enregistrements stockés ; RecordingStarted et RecordingFinished. POST /ari/recordings/live/{name}/stop le termine, DELETE le supprime. |
GET /ari/recordings/stored, .../{name}, .../{name}/file, DELETE .../{name} | les enregistrements stockés |
POST /ari/channels/{id}/dtmf?dtmf=123 | envoie des touches au appelant |
GET/POST /ari/channels/{id}/variable?variable=X&value=Y | les variables du canal |
POST /ari/bridges?bridgeId=room1, .../addChannel?channel=a,b, .../removeChannel, .../play, DELETE | ponts de mélange : tout le monde dans un entend tout le monde |
POST /ari/channels/{id}/continue?extension=101 | lâche l'appel : à cette extension, groupe de sonnerie ou file d'attente, sinon le fallback |
DELETE /ari/channels/{id} | raccroche |
POST /ari/channels?endpoint=PJSIP/101&app=NAME | sonne 101 ; répondu, il entre dans l'application |
GET /ari/applications | les applications, si un programme est connecté, et leurs canaux |
POST /ari/channels/{id}/mute?direction=in, DELETE .../mute | met en sourdine ce que dit l'appelant (in), ce qu'il entend (out) ou les deux |
POST/DELETE /ari/channels/{id}/hold, .../moh, POST .../silence | musique d'attente pour l'appelant (ChannelHold, ChannelUnhold), ou silence |
GET/POST /ari/channels/{id}/variables | plusieurs variables à la fois (ChannelVarset) |
POST /ari/channels/{id}/move?app=other | passe le canal à une autre application (StasisEnd, puis StasisStart là-bas ; ApplicationMoveFailed lorsque aucun programme ne l'exécute) |
POST /ari/channels/{id}/snoop?spy=in&app=NAME | un canal d'écoute dans une application qui entend ce que dit l'appelant, pour l'enregistrer (POST /ari/channels/{snoop}/record) |
POST /ari/channels/create?endpoint=PJSIP/101&app=NAME, puis POST .../dial | un canal qui attend jusqu'à ce qu'il soit composé ; les événements Dial indiquent comment la sonnerie se déroule, et il entre dans l'application lorsqu'il est répondu |
GET /ari/channels/{id}/rtp_statistics | paquets et octets envoyés et reçus, perte et gigue |
POST /ari/playbacks/{id}/control?operation=pause | met en pause, reprend, redémarre, recule et avance (trois secondes) |
POST /ari/bridges/{id}/moh, .../record, .../variable, .../play/{playbackId} | musique d'attente pour un pont, enregistrement de son mélange, ses variables |
POST /ari/recordings/stored/{name}/copy, POST/DELETE /ari/recordings/live/{name}/pause, .../mute | copie un enregistrement ; met en pause ou en sourdine un enregistrement live |
POST /ari/applications/{app}/subscription?eventSource=deviceState:Custom:lamp, PUT .../eventFilter | abonnements (canal :, pont :, point de terminaison : PJSIP/100, étatAppareil :) et filtres d'événements ({"disallowed": [{"type": "ChannelVarset"}]}) |
GET /ari/deviceStates, PUT /ari/deviceStates/Custom:lamp?deviceState=INUSE | états des téléphones (PJSIP/100 : NOT_INUSE, INUSE, RINGING, UNAVAILABLE) et états personnalisés que les programmes conservent (DeviceStateChanged) ; l'état du téléphone arrive également sous forme de EndpointStateChange |
GET /ari/mailboxes, PUT /ari/mailboxes/{name}?newMessages=1&oldMessages=0 | comptes de messagerie vocale des extensions (100@default), et boîtes aux lettres qu'un programme conserve lui-même |
GET /ari/sounds | les invites de Sons, dans les langues dans lesquelles elles sont enregistrées, et les sons téléchargés pour les scripts AGI |
PUT /ari/endpoints/sendMessage?to=pjsip:100&body=Hi | un texte sur les téléphones de l'extension 100 |
POST /ari/events/user/{name}?application=NAME | un événement utilisateur à une application (ChannelUserevent) |
GET /ari/asterisk/ping, GET/POST /ari/asterisk/variable, GET /ari/asterisk/modules | ping, variables globales, et parties de BitVoice nommées comme les modules qu'elles représentent |
BitVoice répond à chaque opération de l'ARI publiée d'Asterisk (sa suite de tests appelle chacune et vérifie que ce qui est renvoyé comporte les champs requis par la description d'Asterisk). Certaines n'ont rien à voir ici et répondent 501 avec la raison : modules chargeables (BitVoice est un seul programme), configuration dynamique de Sorcery (BitVoice est configuré dans son interface web), canaux de journal, sources vidéo de ponts (les ponts ARI transportent le son), envoi de REFER aux téléphones et revendication d'appels de diffusion. Un mouchard n'entend que l'appelant (spy=in), et le murmure n'est pas proposé : pontez un canal avec le leur pour leur parler. Les événements de canal pour chaque appel (ChannelCreated, ChannelStateChange, ChannelDestroyed) sont envoyés à chaque programme, comme avec subscribeAll=true d'Asterisk. Les bibliothèques ARI qui lisent l'interface à partir du serveur (ari-client et autres) la trouvent à /ari/api-docs/resources.json. Quels programmes conservent maintenant, sous Applications ARI dans les Paramètres, affiche les applications, les états d'appareil personnalisés, les boîtes aux lettres, les variables globales et les ponts que les programmes ont définis.
Les touches pressées arrivent sous forme de ChannelDtmfReceived ; un appelant qui raccroche sous forme de StasisEnd. Lorsqu'aucun programme n'est connecté, l'appel est acheminé vers le recours de secours ; lorsque la dernière connexion d'un programme se ferme, ses appels y sont également acheminés après cinq secondes (le temps de se reconnecter). Pour la logique d'appel sans programme personnel, utilisez les Scripts (chapitre 27) qui exécutent l'ensemble de l'appel ; pour transmettre l'audio à un programme, Voice bots (chapitre 24).
Scripts AGI
Un script AGI (Asterisk AGI() et EAGI()) exécute une commande d'appel par commande, donc les IVR et les intégrations écrites pour Asterisk (phpagi, pyst2, Asterisk-Java, tout serveur FastAGI) continuent de fonctionner. Ajoutez-le sous Scripts AGI dans les Paramètres, compatibilité Asterisk :
| Champ | Ce que c'est |
|---|---|
| Nom du script | comment les destinations le nomment |
| Adresse | un serveur FastAGI, agi://host:4573/script?x=1 (port 4573 lorsqu'aucun n'est donné), hagi://domain/script pour les serveurs dans les enregistrements SRV _agi._tcp du domaine, essayés dans l'ordre de priorité, ou le nom de fichier d'un programme dans le dossier Programmes AGI |
| Arguments | passés sous la forme agi_arg_1, agi_arg_2 … |
| Numéro à composer | facultatif : les extensions le composent comme n'importe quel numéro |
| Recours de secours | où l'appel est acheminé lorsque le script se termine sans choisir de numéro, ou ne peut pas être joint |
| Exécution la plus longue | un script s'exécutant plus longtemps est arrêté (par défaut une heure) |
| EAGI | pour un programme : l'audio de l'appelant (8 kHz, signé 16 bits, little-endian) sur le descripteur de fichier 3. Linux et macOS |
Test se connecte au serveur (ou vérifie que le programme est présent et exécutable) sans envoyer d'appel. Ensuite, envoyez des appels à celui-ci comme à toute destination.
BitVoice répond à l'appel, envoie les variables agi_ (agi_network_script, agi_callerid, agi_dnid, agi_extension, agi_language …) et exécute les commandes, en répondant comme Asterisk 20 le fait (la suite de tests compare chaque réponse à un enregistrement de la réponse d'Asterisk) :
| Commandes | Notes |
|---|---|
| ANSWER, HANGUP, CHANNEL STATUS, NOOP, VERBOSE | HANGUP avec un nom de canal uniquement met fin à l'appel du script |
| STREAM FILE, CONTROL STREAM FILE, GET OPTION, GET DATA, WAIT FOR DIGIT | touches d'échappement, décalages d'échantillonnage et endpos comme sur Asterisk ; avance rapide, rembobinage et pause dans CONTROL STREAM FILE |
| SAY DIGITS, SAY NUMBER, SAY ALPHA, SAY PHONETIC, SAY DATE, SAY TIME, SAY DATETIME | avec un service de synthèse vocale dans les Paramètres, l'IA les prononce ; sans, les chiffres sont lus à partir des Sons |
| RECORD FILE | s=N silence, un beep, touches d'échappement ; le fichier atterrit dans la bibliothèque de sons |
| SET VARIABLE, GET VARIABLE, GET FULL VARIABLE | CALLERID(num), CALLERID(name), EXTEN, UNIQUEID, CHANNEL … et expressions ${NAME} |
| DATABASE GET, PUT, DEL, DELTREE | base de données d'Asterisk (AstDB), conservée par BitVoice et affichée sous Base de données AGI |
| SET CALLERID, SET EXTENSION, SET CONTEXT, SET PRIORITY, SET AUTOHANGUP, SET MUSIC | SET EXTENSION est où l'appel est acheminé lorsque le script se termine |
| SPEECH CREATE … SPEECH RECOGNIZE | utilise la reconnaissance vocale des Paramètres, l'IA : le résultat est ce que l'appelant a dit, sous la forme text0, pour que le script le compare ; les grammaires sont acceptées et non utilisées |
| EXEC | Answer, Hangup, Playback, Background, Read, Set, MSet, SayDigits, SayNumber, SayAlpha, Wait, Dial (fait sonner chaque numéro à tour de rôle ; DIALSTATUS), Goto, VoiceMail, Queue, MusicOnHold, Record, NoOp, Verbose, Log. Les autres répondent -2, comme Asterisk le fait pour une application manquante |
BitVoice n'a pas de plan de numérotation : là où un script irait plus loin dans le plan de numérotation d'Asterisk (SET EXTENSION, EXEC Goto), l'appel est acheminé vers ce numéro ici (une extension, un groupe d'appels, une file d'attente, un menu ou un numéro extérieur via les routes de sortie) lorsque le script se termine. Les scripts n'appellent jamais les numéros d'urgence. Lorsque l'appelant raccroche, un script FastAGI reçoit HANGUP et un programme SIGHUP ; seules les commandes autorisées sur un canal mort s'exécutent ensuite (511 pour les autres), et la connexion est fermée 30 secondes plus tard si le script continue. Chaque exécution s'affiche sous Dernières exécutions avec ses lignes VERBOSE, et est envoyée au flux d'événements sous la forme agi.ran.
Sons pour les scripts AGI. Les scripts jouent des sons par les noms qu'ils utilisent sur Asterisk : téléchargez-les sous Sons pour les scripts AGI avec un dossier (custom/welcome ; es/custom/welcome pour les appelants en espagnol). Les formats WAV, MP3 et les formats .gsm, .ulaw, .alaw, .sln et .sln16 d'Asterisk sont acceptés ; un chemin comme /var/lib/asterisk/sounds/en/custom/welcome.gsm trouve custom/welcome. Les digits/0 à digits/9 d'Asterisk, beep, silence/N et quelques autres (vm-goodbye, invalid, please-hold) jouent les invites et les tons propres à BitVoice. Ce que les scripts enregistrent est conservé dans la même bibliothèque, marqué enregistré par un script, pour les jours que vous choisissez (30 par défaut). La bibliothèque contient jusqu'à 1 Go.
Programmes. Un programme s'exécute sur ce serveur avec les droits de BitVoice, il n'est donc jamais téléchargé via le web : copiez-le dans le dossier Programmes AGI affiché sur l'écran (DATA/agi-bin) et rendez-le exécutable. Il ne reçoit que PATH et AST_AGI_DIR de l'environnement, s'exécute dans ce dossier et ce qu'il écrit sur la sortie d'erreur standard va dans le journal du serveur. FastAGI envoie des commandes en TCP brut : gardez le serveur sur cet ordinateur ou un réseau privé.
Connexions
Chaque connexion a un Nom d'utilisateur et un Mot de passe. Les connexions sont en lecture seule sauf si elles sont marquées Peut modifier les appels. Conservez AMI sur cet ordinateur à moins que l'outil ne s'exécute ailleurs : AMI est en TCP brut, non chiffré.
Les assistants intelligents (MCP)
Un assistant intelligent tel que Claude, ChatGPT, Gemini ou Cursor peut utiliser BitVoice via le protocole de contexte de modèle (MCP), la méthode standard que les assistants utilisent pour atteindre d'autres programmes. Demandez-lui en termes simples : qui a appelé ce matin et si quelqu'un les a rappelés, ce que le caller du dentiste a dit, pourquoi l'appel de 9 heures est allé à la messagerie vocale, si la ligne du fournisseur est hors service. Avec votre autorisation, il peut également passer un appel, envoyer un texte ou raccrocher un appel.
BitVoice est le serveur MCP, à https://YOUR-SERVER/mcp (HTTP diffusable ; l'adresse s'affiche dans les Paramètres). Rien n'est envoyé à un service d'IA à moins qu'un assistant que vous avez connecté ne le demande, et alors seulement ce qui a été demandé.
Mise en marche
Dans Paramètres (chapitre 14), assistants IA (MCP) :
- Autoriser les assistants IA à se connecter : désactivé par défaut. Désactivé,
/mcpne répond rien d'autre que le fait qu'il est désactivé. - Autoriser les assistants à agir : désactivé par défaut. Désactivé, les assistants ne lisent que, quel que soit leur jeton. Activé, un assistant dont le jeton peut modifier des choses obtient également les outils qui agissent.
La carte affiche l'adresse et les paramètres prêts à copier pour les assistants communs, et liste chaque outil.
Ce qu'un assistant peut faire
Lecture (n'importe quel jeton) :
- calls_now : les appels en cours.
- call_history : les appels passés, recherchés par numéro ou nom, par direction et à partir d'une heure, avec la raison pour laquelle chaque appel a été acheminé.
- extensions : noms, numéros, départements, e-mail ; jamais le mot de passe d'un téléphone.
- phones_connected : quels téléphones sont enregistrés, d'où.
- voicemail, search_transcripts : messages et ce qui a été dit sur les appels enregistrés.
- queues, trunks, health : les files d'attente actuelles, les lignes des fournisseurs, les vérifications propres à BitVoice.
- directory, text_messages : l'annuaire téléphonique de l'entreprise et les conversations de texte.
Action (avec Laisser les assistants agir, et un jeton qui peut modifier des choses) :
- place_call : appeler en un clic. Le téléphone de l'extension sonne d'abord ; lorsque quelqu'un décroche, BitVoice appelle le numéro pour lui, comme s'il l'avait composé, donc ses routes, son identifiant d'appelant et ses limites s'appliquent.
- send_text : un message texte à partir de l'un des numéros de texte de l'organisation.
- hang_up_call : met fin à un appel en cours.
Chaque outil est l'une des routes propres à l'API, exécutée en tant qu'assistant : il voit et modifie exactement ce que son jeton peut, les mêmes vérifications s'appliquent, et ses modifications sont dans le journal d'audit sous son nom. Une réponse est limitée à environ 60 000 caractères ; l'assistant est invité à réduire sa recherche lorsqu'une réponse est tronquée.
Connexion d'un assistant
Les assistants qui se connectent (connecteurs personnalisés Claude.ai et ChatGPT, et d'autres) : ajoutez un connecteur avec l'adresse de BitVoice. L'assistant ouvre la page de connexion de BitVoice dans votre navigateur ; connectez-vous comme d'habitude (mot de passe, authentification à deux facteurs, authentification unique), et la page indique quel assistant demande et où il revient. Un administrateur peut lui permettre d'agir ou de ne lire que ; l'assistant d'un utilisateur ne lit que. Ne pas autoriser le renvoie avec rien. Son accès est alors sur Administrateurs (chapitre 57), jetons API, en tant qu'assistant IA, connecté : il fonctionne à /mcp uniquement, jamais pour le reste de l'API, dure une heure à la fois et se renouvelle pendant jusqu'à 30 jours sans utilisation. Révoquer met fin à son accès immédiatement. Ces assistants atteignent BitVoice à partir de leurs propres serveurs, donc BitVoice a besoin d'une adresse accessible depuis Internet et d'un certificat qu'ils font confiance (Let's Encrypt, dans Certificat (chapitre 14)).
Les assistants qui reçoivent un jeton (Claude Code, Cursor, VS Code et d'autres outils qui acceptent une adresse et un en-tête) : créez un jeton API sur Administrateurs (chapitre 57), ne lire que sauf s'il doit agir, et donnez-le sous la forme Authorization: Bearer bv_... :
claude mcp add --transport http bitvoice https://pbx.example.com:8443/mcp --header "Authorization: Bearer bv_..."
Les assistants qui lancent un programme (Claude Desktop, et d'autres qui acceptent une commande) : le programme BitVoice comporte un pont, bitvoice mcp, qui transmet chaque message au serveur via HTTPS. Donnez-lui l'adresse du serveur et le jeton :
{ "mcpServers": { "bitvoice": { "command": "bitvoice", "args": ["mcp", "-url", "https://pbx.example.com:8443"], "env": { "BITVOICE_TOKEN": "bv_..." } } } }
Avec le certificat propre à BitVoice (et non un certificat émis par une autorité), le pont refuse et imprime son SHA-256 : vérifiez qu'il s'agit de votre serveur, puis ajoutez "-pin", "THAT-SHA256" aux arguments. Seul ce certificat est alors accepté.
Sécurité
- Seuls les jetons : une connexion à BitVoice via un navigateur n'atteint jamais
/mcp, et une page sur un autre site est refusée (Origine), donc une page web ne peut pas utiliser une connexion d'assistant. - Les assistants peuvent se tromper. Donnez-leur un jeton en lecture seule à moins qu'ils n'aient besoin d'agir ; tout ce qu'ils font est dans le journal d'audit, et la mise en place d'un appel fait toujours sonner le téléphone d'une personne d'abord.
- Connexion via OAuth 2.1 comme spécifié par MCP : l'assistant s'enregistre lui-même (clients publics uniquement, avec PKCE), ne revient que vers les adresses qu'il a enregistrées (https, ou http vers son propre ordinateur), et un code n'est valable qu'une fois, pendant une minute.
- Une organisation hébergée sur BitVoice d'un autre donne à ses assistants des jetons ; la connexion via OAuth n'a pas encore été testée.
Archives
/archiveL'archive conserve des copies des enregistrements, de la messagerie vocale et de la configuration ailleurs : un seau Amazon S3 (ou n'importe quel magasin compatible S3) ou un conteneur de stockage d'objets Blob Azure. Si le disque de ce serveur est perdu, l'archive les conserve toujours.
Configuration
- Sur Archive (chapitre 72), choisissez Où archiver : Amazon S3 ou Azure.
- Pour S3 : le Seau, sa Région, un Dossier dans le seau facultatif et Point de terminaison (pour les magasins compatibles S3), ainsi qu'un ID de clé d'accès et une Clé d'accès secrète. Copier la stratégie donne la seule autorisation dont BitVoice a besoin, pour s'attacher à l'utilisateur ou au rôle.
- Pour Azure : une URL SAS de conteneur avec autorisation d'écriture, et un Dossier dans le conteneur facultatif.
- Choisissez ce que copier en plus de la configuration : Enregistrements d'appels, Messagerie vocale, ou les deux.
Ce qui se passe
Toutes les dix minutes, BitVoice copie les nouveaux enregistrements et les messages qui ne sont pas encore dans l'archive, et une fois par jour, une copie datée de la configuration (config/2026-10-13.json). La page affiche la dernière exécution, le dernier succès et toute erreur.
La suppression de quelque chose ici (par rétention ou manuellement) ne supprime pas la copie de l'archive : définissez les règles de cycle de vie propres au seau ou au conteneur pour savoir combien de temps l'archive conserve les choses.
Conservations légales
/holdsUne conservation légale conserve les enregistrements d'appel, les enregistrements et les messages vocaux qui peuvent être nécessaires à une affaire et empêche quiconque de les supprimer, jusqu'à ce qu'elle soit levée. Utilisez-la lorsque un avocat demande de conserver les enregistrements.
Ajout d'une conservation
Sur Conservations légales (chapitre 73), appuyez sur Ajouter :
| Champ | Ce que c'est |
|---|---|
| Nom | le nom de l'affaire |
| Raison | pourquoi, pour le dossier |
| Numéros | les extensions et les numéros externes qu'elle couvre (101, +15551234567), ou Tout |
| De, À | les dates qu'elle couvre ; vide pour aucune limite |
Pendant qu'une conservation est en vigueur
- La conservation laisse ce qu'elle couvre inchangé, quel que soit son âge.
- Personne ne peut supprimer un appel, un enregistrement ou un message vocal conservé, les administrateurs inclus.
- Les appels conservés affichent un cadenas dans Historique des appels (chapitre 47).
Levée
Levée rend ce que la conservation a conservé soumis aux paramètres de conservation à nouveau : les choses plus anciennes que la conservation sont supprimées lors du prochain nettoyage. Les conservations levées restent répertoriées, avec la date et la personne, et l'ajout et la levée des conservations sont dans le journal d'audit.
Métriques : Prometheus, OpenTelemetry, Grafana, SNMP et enregistrements d'appels
/settingsPrometheus analyse /metrics à l'adresse Web. Créez un jeton d'API sous Administrateurs (un jeton de visualisateur suffit) et donnez-le à Prometheus en tant que jeton porteur :
scrape_configs:
- job_name: bitvoice
scheme: https
authorization: { credentials: bv_... }
static_configs: [{ targets: ['pbx.example.com'] }]
Il lit les appels en cours (par état), les appels terminés (par direction et résultat), le temps de conversation, les téléphones enregistrés, l'état de chaque trunk et le temps de trajet aller-retour, les appelants en attente et les agents dans chaque file d'attente, les paquets audio reçus et perdus, un histogramme des scores de qualité d'appel (MOS), et les rappels réservés. Les compteurs repartent de zéro lorsque BitVoice redémarre, comme l'attend Prometheus.
OpenTelemetry : dans les paramètres, Métriques, entrez l'adresse OTLP/HTTP d'un collecteur (et un en-tête tel qu'Authorization, avec sa valeur) pour avoir les mêmes mesures transmises toutes les minutes (ou aussi souvent que vous le paramétrez, à partir de 15 secondes). Envoyer maintenant vérifie les paramètres enregistrés.
Tableau de bord Grafana télécharge un tableau de bord prêt à l'emploi : importez-le dans Grafana et choisissez votre source de données Prometheus.
SNMP
Pour les systèmes de surveillance qui parlent SNMP (Zabbix, PRTG, LibreNMS, Nagios, SolarWinds), activez l'agent SNMP dans les paramètres. Il répond aux requêtes SNMPv2c GET, GETNEXT et GETBULK, en lecture seule, sur le port UDP 161 (ou un autre que vous choisissez : le port 161 nécessite l'autorisation d'ouvrir les ports bas sur Linux), et uniquement à partir des réseaux que vous répertoriez. Choisissez une communauté qui n'est pas publique ou privée : c'est un mot de passe qui traverse le réseau en clair.
Il sert le groupe système standard (sysDescr, sysUpTime, sysContact, sysName, sysLocation) et les valeurs propres à BitVoice sous le base OID : les appels en cours et les sonneries, les téléphones enregistrés, les troncs montés et configurés, les appelants en attente, les appels terminés, les secondes de conversation, les paquets perdus, la qualité d'appel moyenne, un tableau de troncs (nom, monté ou descendu, latence) et un tableau de files d'attente (en attente, agents, répondu, abandonné). Téléchargez BITVOICE-MIB à côté des paramètres pour que votre système de surveillance puisse le charger. BioDream LLC n'a pas encore de numéro d'entreprise, donc le base OID par défaut se trouve dans l'espace expérimental de Net-SNMP ; placez-en un sous votre propre numéro d'entreprise pour le stabiliser.
Les pièges (SNMPv2) sont envoyés à chaque récepteur que vous répertoriez lorsque un tronc tombe ou revient, qu'un appel d'urgence est effectué, ou qu'un serveur d'un cluster cesse de répondre. Le SNMPv3 n'est pas encore pris en charge.
Enregistrements d'appels ailleurs
À côté de l'historique des appels, chaque enregistrement peut aller, à la fin de l'appel, à :
- Syslog (RFC 5424, au format JSON) sur UDP, TCP ou TLS, pour un serveur de journal ou un SIEM.
- Un fichier CSV par jour, avec les colonnes Master.csv d'Asterisk, afin que les outils de rapports et de facturation créés pour Asterisk puissent le lire. Téléchargez les fichiers au pied de l'historique des appels (chapitre 47). Les cellules que une feuille de calcul exécuterait comme une formule sont écrites en toute sécurité.
- Une table PostgreSQL dans une autre base de données, créée la première fois avec les colonnes
cdrd'Asterisk (calldate, clid, src, dst, duration, billsec, disposition, uniqueid…) plus les direction, tronc, coût et MOS de BitVoice. Chaque appel est écrit une seule fois.
Envoyer un enregistrement de test essaie le serveur Syslog et la base de données avec les paramètres enregistrés.
Générateur d'appels
/loadtestLe générateur d'appels place des appels réels avec de l'audio réel dans BitVoice à partir de cet ordinateur : pour voir combien d'appels un serveur prend en charge et à quel point, ou pour vérifier après une modification que les appels vont toujours où ils devraient.
Exécution d'un test
| Paramètre | Ce que c'est |
|---|---|
| Numéro à appeler | un numéro à l'intérieur de BitVoice : une extension, un groupe, une file d'attente, un menu |
| Appels provenant de | le numéro de l'appelant que les appels affichent |
| Répondre en tant que | une extension que le générateur répond pour lui-même ; ou personne, lorsque le numéro répond par lui-même (un menu, le test d'écho) |
| Appels | combien au total |
| En même temps | le maximum en cours ensemble, jusqu'à 2 000. Chaque appel relayé prend des ports multimédias de Multimédia à partir de et Multimédia vers (Paramètres) : la valeur par défaut 10000-20000 contient environ 1 800, donc élargissez-la pour plus |
| Nouveaux par seconde | à quelle vitesse ils commencent |
| Chacun dure (s) | combien de temps chaque conversation dure |
Lecture des résultats
| Résultat | Ce qu'il indique |
|---|---|
| Répondu, Échec | et Pourquoi les appels ont échoué, par raison |
| Temps de réponse, médiane et 95 % | combien de temps les appelants ont attendu |
| Perte audio | la part des paquets audio qui n'ont jamais été reçus |
| Score audio | une estimation de la qualité audio (MOS) : 4 et plus est bon, moins de 3,6 est mauvais |
| Jitter, 95 % des appels | combien les paquets audio sont revenus de manière irrégulière (jitter d'interarrivée RFC 3550, moyenné sur chaque appel) ; les téléphones lissent jusqu'à environ 20 ms |
| Plus grande lacune, pire appel | la plus longue attente entre deux paquets audio dans n'importe quel appel ; ils arrivent tous les 20 ms, donc un blocage du serveur apparaît ici |
| Pauses mémoire, plus longue pause | combien de fois, et pour combien de temps au maximum, le runtime Go a tout arrêté pour nettoyer la mémoire pendant l'exécution |
| Appels en cours dans le temps | un graphique de la charge |
Traçage SIP
/traceLe traçage SIP affiche les messages que BitVoice envoie et reçoit, en temps réel : le premier endroit à regarder lorsque un téléphone ne s'enregistre pas ou qu'un appel échoue, et ce que le service de support d'un fournisseur demandera.
Trouver un message
BitVoice conserve les 2 000 derniers messages en mémoire (rien n'est écrit sur le disque, et ils disparaissent après un redémarrage). Tapez une partie d'un numéro, d'une adresse ou d'un ID d'appel dans le filtre. Appuyez sur Actualiser pour les messages les plus récents.
Choisissez un message pour le voir en entier et, à côté de lui, le flux d'appel : chaque message du même appel dans l'ordre, entre le téléphone, BitVoice et le fournisseur, comme dans la figure.
Lecture d'une trace
| Vous voyez | Cela signifie généralement |
|---|---|
| REGISTER répond 401, puis rien | le téléphone n'a pas le mot de passe, ou a le mauvais |
| REGISTER répond 403 | l'adresse est interdite, ou le téléphone s'enregistre sous une autre extension |
| INVITE répond 404 | aucune route ne correspond au numéro composé (Route d'appel (chapitre 8)) |
| INVITE répond 403 par le fournisseur | le fournisseur refuse l'ID de l'appelant ou le numéro |
| 486 | l'autre côté est occupé |
| 488 | les deux côtés n'ont pas de codec en commun (Codecs (chapitre 66)) |
| 200 OK, puis BYE après environ 30 secondes | l'ACK n'est jamais arrivé : un routeur intermédiaire modifie ou supprime les messages (désactivez son "SIP ALG") |
| Un appel se connecte mais personne n'entend rien | le son est bloqué : vérifiez l'adresse publique dans les paramètres, et les ports multimédias dans le pare-feu |
Sécurité publique : la piste du labo
Le profil du point de réponse 911, la console de dispatch radio et les services NG911 Core. Ils constituent une piste de labo et de partenariat de conception : construits et testés contre des captures enregistrées, des données d'exemple et des substituts, mais non certifiés pour les appels 911 ou la dispatch radio en direct et non encore testés avec un ESInet, un système P25 ou un CAD en direct. Ils sont hors menu jusqu'à ce qu'ils soient activés dans les Paramètres. Les appels d'urgence à partir de vos propres téléphones (Premiers pas) ne font pas partie de cette piste : ils font partie de chaque système téléphonique.
Appels 911 (le profil 911)
/psapBitVoice répond aux appels 911 comme système de gestion d'appels d'un PSAP : les appels du réseau de services d'urgence (l'ESInet, NENA i3) arrivent avec l'emplacement de l'appelant et les données du réseau, le preneur d'appels les voit immédiatement, et le CAD est informé lorsque l'appel est répondu.
Configuration.
- Dans Troncs (chapitre 7), ajoutez le tronc de votre fournisseur ESInet (ou le noyau ESRP de NG911) et activez À partir de l'ESInet.
- Dans Routing des appels (chapitre 8), envoyez ses appels à vos préposés aux appels : une file d'attente, ou un groupe de sonnerie.
- Sur Appels 911, entrez votre ID d'agence (un domaine, comme
psap.county.example.gov) et ce que CAD prend : l'adresse et le port de son écouteur ALI, et son adresse EIDO.
Lorsqu'un appel 911 sonne, il apparaît sur Appels 911 avec :
- l'adresse que le réseau a envoyée (emplacement civique), et la position avec sa précision (à l'intérieur de quelques mètres), représentée sur la carte avec son cercle d'incertitude (une fois une carte configurée, ci-dessous), et un lien vers OpenStreetMap ;
- le fournisseur, le type de service (sans fil, VoIP, résidence, entreprise), l'appareil et l'abonné, lorsque l'appel les a fournis (Données supplémentaires, RFC 7852) ;
- tout ce qui a mal tourné lors de la lecture.
La localisation est incluse dans l'appel (par valeur), ou sous forme de référence que BitVoice récupère avec HELD. Un appel avec une référence a Rebid de localisation : BitVoice demande à nouveau, pour un appelant qui bouge ou dont la première fixation était grossière.
Lorsqu'un rebid modifie la localisation, la vérification de localisation indique laquelle afficher en premier, et pourquoi : la nouvelle localisation en règle générale ; la première lorsqu'il s'agissait d'une fixation précise de l'appareil (GPS, à l'intérieur de 100 m) âgée de moins de deux minutes et que la nouvelle est plus grossière ; et les deux lorsque les deux localisations sont en désaccord de plus de leur incertitude autorisée, de sorte que le préposé aux appels demande à l'appelant. La première localisation reste sur l'appel dans tous les cas.
Lorsqu'un préposé aux appels répond, CAD reçoit, chacun séparément afin qu'un CAD qui est hors service ne retarde pas l'appel :
- le déversement ALI : le bloc de texte que les systèmes CAD lisent (numéro de rappel, classe de service, adresse, position et incertitude, fournisseur), envoyé via TCP ;
- l'EIDO, le document d'incident de NENA-STA-024, par HTTPS POST (avec un jeton porteur si configuré). EIDO sur un appel l'affiche. L'adresse doit être
https, ouhttpsimple uniquement pour un CAD sur le même ordinateur (http://127.0.0.1:…) : un EIDO contient l'emplacement de l'appelant et le jeton, il ne traverse donc jamais un réseau non chiffré, y compris un réseau privé. La même chose s'applique à Envoyer des événements radio à CAD à. L'enregistrement de toute autre adressehttpsimple est refusé ; une adresse enregistrée par une version antérieure reste, de sorte que BitVoice démarre toujours et que d'autres modifications sont toujours enregistrées, mais rien n'est envoyé à celle-ci et État de santé (chapitre 13) l'affiche en rouge jusqu'à ce qu'elle soit modifiée.
L'ALI spill lui-même est du TCP simple, car les écouteurs CAD hérités le prennent, il ne peut donc pas être exigé d'être chiffré. Lorsqu'il va à un autre ordinateur, Health avertit : gardez ce chemin hors de tout réseau partagé, avec un lien série direct (serial:/dev/…) ou un VPN ou un circuit privé vers CAD. Définissez également Agency ID : les EIDOs et le nom de journal i3 nomment l'agence par celui-ci, et Health (chapitre 13) avertit tant qu'il est vide.
Un appel 911 n'est jamais refusé. Un appel vocal provenant de l'ESInet (ou d'un tronc CAMA) dont la route d'entrée le ferait repousser, car la route raccroche, sonne un groupe sans personne dedans ou n'existe pas, ou que personne ne répond, sonne tous les préposés aux appels à la place : toutes les extensions activées, et tout téléphone qui se connecte pendant qu'il sonne, jusqu'à ce que quelqu'un réponde ou que l'appelant raccroche. Un appel texte attend sur cet écran de la même manière. Comment il a été acheminé de l'appel indique ce qui s'est passé, et État de santé (chapitre 13) avertit d'une telle route afin qu'elle puisse être corrigée. Seuls les appels de test (urn:service:test.sos) et les appels qui ne sont pas des appels 911 conservent le refus de leur route.
Ni abandonné par un transfert. Lorsqu'un préposé aux appels transfère un appel 911 et que le transfert ne peut pas se connecter, car l'extension n'a pas de téléphone connecté ou que personne ne répond, l'appel revient à ce préposé aux appels tant qu'il est toujours en ligne. S'il a déjà raccroché (la plupart des téléphones de bureau le font juste après un transfert aveugle), tous les préposés aux appels sonnent à la place, jusqu'à ce que l'un réponde. Un appel 911 n'est jamais confié à la messagerie vocale de l'extension ou à une autre destination d'absence de réponse, et la trace d'acheminement de l'appel indique ce qui s'est passé. Sur n'importe quel appel, un téléphone qui raccroche juste après avoir demandé un transfert libère uniquement lui-même : le transfert se poursuit.
Un appelant qui a disparu. Lorsqu'un côté d'un appel cesse d'envoyer du son pendant une minute (un téléphone qui a perdu de la puissance ou du signal n'envoie pas de signal de fin d'appel) tandis que l'autre côté envoie toujours, l'appel est terminé avec la raison *l'audio de l'appelant s'est arrêté* (ou à qui il appartenait), dans l'enregistrement de l'appel et dans l'événement call.ended que CAD entend (cause, endedBy). Un côté en attente, en train de faxer, ou qui a indiqué qu'il n'envoie rien (un haut-parleur de pagination) n'est jamais terminé de cette façon. Le silence envoie toujours des paquets, un appelant qui ne peut pas parler conserve donc l'appel.
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 (chapitre 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.
Vidéo et photos de l'appelant. Sur un appel 911, Envoyer un lien vidéo à l'appelant crée un lien qui n'ouvre que cet appel : envoyé par SMS à l'appelant à partir du numéro sous Envoyer le lien à partir de, ou lu à haute voix. Lorsqu'il ne peut pas être envoyé par SMS (aucun numéro de SMS n'est défini, ou l'appelant n'a pas envoyé de numéro), l'écran et l'API problem indiquent pourquoi. L'appelant ouvre le lien dans le navigateur de son téléphone (pas d'application) : Partager la vidéo en direct envoie la caméra arrière en direct (WebRTC, WHIP : RFC 9725), et Envoyer des photos ou des vidéos envoie ce qu'il a déjà pris, y compris les fichiers de caméra de tableau de bord et d'action. Sur l'appel :
- la vidéo en direct affiche EN DIRECT ; Regarder la vidéo de l'appelant la lit floutée, et Révéler (peut être choquant) la montre ; Flouter à nouveau la cache ;
- chaque fichier affiche sa taille, quand il a été pris (par l'horloge propre de l'appareil photo), où (à partir de son GPS, lorsqu'il en a un), et son SHA-256, pris lorsqu'il est arrivé, afin qu'une copie puisse plus tard être montrée pour être le même fichier ; Révéler l'ouvre ; Conserver comme preuve conserve les fichiers de l'appel au-delà de la période de rétention ;
- le lien de visualisation en dessous (WHEP) permet à CAD, à l'écran d'une unité ou à une autre position de regarder la même vidéo en direct, sans s'identifier : traitez-le comme une clé.
La vidéo ne prend jamais à partir des appels : chaque vidéo en direct a ses propres ports, ce serveur prend au maximum Vidéos en direct simultanément (4 sauf si défini), chacun demandé de rester en dessous de Débit binaire de la vidéo, et la vidéo qui s'arrête pendant dix secondes est terminée. Les téléphones des appelants doivent atteindre ce serveur à Adresse de lien (https) et ses ports multimédias (UDP). Les fichiers sont conservés Conserver les fichiers et le journal d'exposition jours (vide : jusqu'à suppression), les appels conservés à part.
Enregistrement de la vidéo en direct. Avec Enregistrer la vidéo en direct des appelants activé, la vidéo en direct de l'appelant est conservée avec les photos et les extraits comme un fichier par période de vidéo : les mêmes images que le téléphone a envoyées, non converties, dans un fichier IVF (H.264 ou VP8 avec son propre horodatage pour chaque image), haché tel quel lors de l'écriture. Une image endommagée par un paquet perdu est laissée de côté plutôt que conservée cassée, et le téléphone est invité à fournir une image complète pour continuer. Révéler la lit (à partir d'une copie dans WebM ou MP4 que ffmpeg crée, les mêmes images dans un autre conteneur ; sans ffmpeg, seul le fichier d'origine est téléchargé) ; Télécharger le fichier d'origine fournit le fichier dont le hachage est fait. ffmpeg, VLC et les outils de vidéo forensiques ouvrent le fichier d'origine.
Dans CAD. L'EIDO (NENA-STA-021) envoyé à CAD nomme chaque photo, extrait et enregistrement, ainsi que la vidéo en direct pendant qu'elle dure, comme des données supplémentaires par référence : urlPurpose est caller-photo, caller-video, caller-video-recording ou caller-video-live, et additionalDataByReferenceUrl est le fichier à /m/{viewToken}/{n} ou la vidéo en direct à /whep/{viewToken}. BitVoice envoie à CAD l'EIDO à nouveau lorsqu'un fichier arrive ou que la vidéo en direct commence ou s'arrête. Les liens utilisent Adresse de lien (ou l'adresse publique de ce serveur) ; sans aucune des deux, l'EIDO ne nomme pas de média. Chaque récupération via eux est dans le journal d'exposition. Le flux d'événements dit la même chose (GET /api/events : call.media, call.video). Les EIDOs de BitVoice sont vérifiés contre le schéma EIDO publié par NENA.
Les liens qui n'existent pas sont devinés au plus vite que les connexions : une adresse qui continue d'essayer est éloignée pendant un certain temps. Les fichiers des appelants sont servis dans un bac à sable, jamais comme une page de ce serveur.
Exposition. Chaque révélation d'une vidéo en direct et chaque ouverture d'une photo ou d'un extrait est comptabilisée sous Exposition sur les appels 911 : qui, combien de fois, sur combien d'appels. C'est pour les superviseurs et le programme de bien-être du centre.
La vidéo qu'un téléphone envoie dans l'appel 911 lui-même (vidéo SIP sur l'ESInet) peut être regardée de la même manière : Regarder la prend comme source lorsque aucune vidéo de lien n'est en direct.
Appels avec seulement un numéro. Un appel 911 qui apporte un numéro de rappel et aucune localisation (à partir d'un tronc CAMA, ou d'un appel ESInet dont la localisation n'est pas arrivée) peut être recherché : donnez Recherche de localisation (ALI) l'adresse de l'interface HELD de votre base de données ALI ou de votre serveur de localisation (RFC 5985, demandé par numéro de téléphone comme le spécifie RFC 6155). BitVoice demande dès l'arrivée de l'appel, sans le retenir, et la localisation apparaît sur l'appel lors de la réponse ; l'appel indique quand la recherche a échoué et pourquoi.
Le lien ALI hérité. Sans serveur HELD, BitVoice peut demander à un contrôleur ALI, ou au lien de données de la base de données ALI, de l'ancienne façon : il envoie une demande et lit le dossier en texte, sur le réseau (Adresse du lien ALI hôte:port) ou à partir d'un port série (serial:/dev/ttyUSB0?baud=9600&parity=none, avec bits et stop également ; un adaptateur série USB fonctionne ; sous Linux et macOS, mais pas Windows : là, utilisez un convertisseur série-réseau et son adresse). Demande est ce qui est envoyé : {ani10} le numéro de rappel à 10 chiffres, {ani7} ses sept derniers chiffres, {pos2} la position, STX et ETX ({ani10} lorsqu'il est vide). La réponse est lue jusqu'à son ETX. Les dispositions ALI diffèrent entre les fournisseurs et les États, vous placez donc chaque champ : sa ligne, sa colonne et sa longueur (0 : jusqu'à la fin de la ligne), à partir d'une impression d'un écran ALI ; Rue (ligne entière) divise une ligne de rue en ses parties, ou placez les parties une par une. Collez un dossier d'exemple et Lisez l'exemple pour voir les lignes avec une règle de colonnes et ce que chaque champ lit ; Demander demande lui-même le lien pour un numéro. L'adresse et la position du dossier deviennent l'emplacement de l'appel, son nom le nom de l'appelant, et sa classe de service s'affiche sur l'appel. Les protocoles qui ne sont pas une demande et une réponse texte (PAM, E2 et les protocoles propriétaires des autres fournisseurs) ne sont pas pris en charge : ils nécessitent une passerelle.
Débordement ALI sur un port série. Débordement ALI vers prend également un port série (serial:/dev/ttyS0?baud=9600), pour un CAD qui lit le débordement à partir d'un câble série.
La carte. Sous Carte dans les paramètres 911, donnez à BitVoice ses tuiles de carte : un fichier .mbtiles de tuiles raster (PNG, JPEG ou WebP) sur ce serveur, pour une carte qui fonctionne sans internet (votre équipe SIG, TileMill, gdal2tiles ou un fournisseur de tuiles en crée une pour votre zone), ou un serveur de tuiles avec {z}, {x} et {y} dans son adresse (celui de votre comté, ou un serveur commercial : attention à ses conditions ; les serveurs OpenStreetMap publics ne sont pas pour cela). De quelque manière que ce soit, les navigateurs des préposés aux appels récupèrent les tuiles à partir de BitVoice uniquement : il lit le fichier ou récupère à partir du serveur de tuiles et conserve les dernières tuiles en mémoire. La même carte affiche les positions radio sur la console radio. Les tuiles vectorielles ne sont pas prises en charge.
Le journal i3 conserve les événements i3 NENA de chaque appel (début d'appel, réponse, emplacement, EIDO envoyé), un fichier par jour. Temps de réponse montre combien d'appels ont été répondu dans votre objectif (NENA : 90 % dans les 15 secondes, 95 % dans les 20 secondes), les appels abandonnés et le temps de réponse moyen de chaque préposé aux appels. Une ligne par jour (CSV) télécharge les comptes que les bureaux 911 des États demandent généralement (appels, répondu, abandonné, dans l'objectif et dans les 20 secondes, moyen et plus longue attente) pour les jours choisis ; Une ligne par appel (CSV) liste chaque appel 911 avec le moment où il a été répondu, par qui et s'il s'agissait d'un appel texte. Chaque État a son propre formulaire : organisez le vôtre sous Dispositions de rapport. Un appel texte pris sur cet écran ou via un CAD compte pour la personne qui l'a pris ; un appel que personne n'a pris avant que l'appelant ne parte compte comme abandonné.
Dispositions de rapport. Nouvelle disposition de rapport organise un rapport comme votre formulaire d'État ou de comté : ce que chaque ligne est (un jour, une semaine, un mois, une heure de la journée, un préposé aux appels ou une ligne pour tous), une ligne totale et les colonnes, dans l'ordre, chacune avec son propre en-tête si le formulaire le formule différemment : appels, répondu, abandonné (un comptage ou une part), répondu dans tant de secondes (un comptage ou une part ; les secondes sont les vôtres, donc 10 et 20 pour un formulaire et 15 et 40 pour un autre), répondu après plus de tant de secondes, l'attente moyenne et la plus longue, le temps dans lequel 90 % ont été répondu, la durée moyenne de l'appel et les appels texte (TTY, texte en temps réel, texte vers 911). Une attente compte à partir de l'arrivée de l'appel à la réponse d'un préposé aux appels. Choisissez une disposition et des dates et Exécutez pour le lire ici, Tableur (CSV) pour le télécharger ou Page à imprimer pour une page simple à imprimer ou à enregistrer sous forme de PDF. Les dispositions sont conservées avec les paramètres, elles vont donc avec une sauvegarde et dans Git.
Appels TTY. Les appelants sourds et malentendants peuvent appeler le 911 avec un TTY (un téléphone texte, Baudot à 45,45 bit/s). BitVoice écoute un TTY sur chaque appel 911 vocal, dès le premier moment : ce que l'appelant tape s'affiche sur l'appel à mesure qu'il le tape, sous Texte, avec une pause ou un nouveau ligne commençant une nouvelle ligne. Un appel silencieux peut être un TTY en attente : une fois que vous répondez, Répondre par TTY envoie du texte même avant que tout texte n'arrive. Tapez la réponse et appuyez sur Envoyer : elle est envoyée à l'appelant sous forme de tons TTY (la voix du préposé aux appels est muette pendant qu'il joue, car les TTY prennent des tours), en majuscules, et les règles de politesse TTY s'appliquent : terminez chaque tour par GA ("à vous"), et SK lors de la fermeture. Les caractères que le TTY ne peut pas afficher sont omis. La parole, la musique et les tons de touche ne sont jamais pris pour du texte TTY : un caractère ne compte que lorsque chaque bit est un ton TTY propre. La conversation est conservée avec l'appel dans l'historique des appels et dans le journal i3 (un MessageLogEvent par tour). Décochez Écouter les TTY sur les appels 911 dans les paramètres 911 pour arrêter d'écouter.
Transferts. Un appel 911 envoyé à un autre PSAP conserve son emplacement : le PIDF-LO accompagne l'appel.
Texte en temps réel (RTT). Un téléphone qui envoie du texte à côté de sa voix (RFC 4103, comme les téléphones VoLTE et les appels NG911) voit son texte répondu par BitVoice lui-même, puisque les téléphones de bureau n'en affichent aucun : chaque caractère apparaît sur l'appel à mesure que l'appelant le tape, et votre réponse est renvoyée sous forme de texte. Les paquets perdus sont compensés par la redondance du RTT ; le texte perdu au-delà de celui-ci s'affiche sous la forme de .
Texte vers 911. Un centre de contrôle de texte (TCC) envoie des textes au PSAP sous forme de session sans voix (MSRP, RFC 4975, sur le tronc ESInet). BitVoice répond et attend les appels 911 marqués Texte vers 911, avec les textes qui sont arrivés ; aucun téléphone ne sonne. Prendre ce texte vous rend le preneur d'appel (le temps de réponse est compté à partir de ce moment, et CAD reçoit l'ALI et l'EIDO à ce moment-là) ; répondez dans la boîte en dessous de la conversation, et Fin de conversation lorsque vous avez terminé. La fermeture de la session par le TCC met fin à la conversation. Un message SIP envoyé à l'intérieur d'un dialogue d'appel 911 est traité comme le texte de l'appelant de la même manière, et les réponses sont renvoyées par message SIP. Les textes ne sont acceptés que des troncs marqués À partir de l'ESInet.
Un TCC qui propose la session sur TLS (TCP/TLS/MSRP, chemins msrps, RFC 4975 section 14) l'obtient sur TLS, avec le certificat de ce serveur (Paramètres › Certificats ; sans certificat, une telle offre est refusée). Le certificat du TCC doit être celui que son offre nomme (a=fingerprint, SHA-256) ; lorsqu'il n'en nomme aucun, il doit être tracé jusqu'aux racines de l'agence d'habilitation des PSAP définies sous les services Core, si elles sont définies. La réponse de BitVoice nomme son propre certificat de la même manière.
Toute la conversation, quelle que soit la façon dont elle est arrivée, est conservée avec l'appel dans l'historique des appels et dans le journal i3.
Ce qui n'est pas encore ici : le transfert d'une session de texte via le noyau NG911 (l'ESRP achemine la voix ; une session de texte est répondue là où elle arrive) ; les abonnements propres à la norme de transport EIDO (NENA-STA-024 WebSocket) : BitVoice publie les EIDOs à une adresse.
Console de dispatch radio
/radioLes dispatcheurs parlent sur des canaux radio à partir du même casque que leurs appels téléphoniques. BitVoice atteint les radios via des passerelles radio-sur-IP (RoIP) ; le réseau radio lui-même reste avec celui qui le gère.
Configuration. Sous Configuration de la console, choisissez un numéro de console (800, par exemple) et ajoutez chaque canal : son nom, le port sur ce serveur auquel la passerelle envoie l'audio du canal, et l'adresse et le port de la passerelle pour l'audio sortant. Sur la passerelle : RTP, G.711 µ-law, vers l'adresse de ce serveur et ce port ; activez la radio sur la voix (VOX). Chaque canal utilise son port et le port suivant, en dehors de la plage utilisée par les appels téléphoniques.
Rejoindre. Un dispatcheur compose le numéro de la console à partir de son téléphone de bureau, ou appuie sur Rejoindre avec le téléphone navigateur. Il entend ensuite le trafic de chaque canal mélangé ; Écouter / Muet sur un canal le retire de son casque. Le voyant sur un canal s'allume pendant qu'il reçoit.
Parler. Maintenez le bouton Maintenir pour parler d'un canal (ou mettez-le en focus et maintenez la barre d'espace) : votre voix va à ce canal uniquement, et le canal affiche TX avec votre extension. Un seul dispatcheur parle sur un canal à la fois ; le bouton est gris pour les autres pendant que quelqu'un parle. Rien n'est envoyé à un canal pendant que personne ne parle, donc une radio à déclenchement vocal n'est jamais retenue dans les airs.
Raccorder. Appuyez sur Raccorder sur un canal, puis sur Raccorder ici sur un autre : les deux entendent l'un l'autre (un canal d'incendie et un canal d'entraide, par exemple) jusqu'à ce que vous appuyiez sur Déraccorder.
Groupes de discussion P25. Un canal peut également être un groupe de discussion P25, rejoint directement via l'ISSI (TIA-102.BACA, l'interface entre les sous-systèmes P25 ; avec Envoyer le mot PTT de la console CSSI activé, BitVoice ajoute le mot du sous-système de la console à chaque demande). Choisissez Un groupe de discussion P25 (ISSI), indiquez l'ID du groupe de discussion, l'adresse SIP et l'ID du RFSS qui abrite le groupe de discussion, et un port pour sa voix. Sous Cette console sur le système P25, entrez le WACN et l'ID du système, l'ID RFSS que votre administrateur P25 a donné à cette console, l'ID d'unité que les dispatcheurs transmettent en tant que, et le port SIP que l'ISSI utilise ici ; le système P25 doit connaître ce serveur en tant que RFSS à cette adresse. La tuile affiche P25 pendant que l'appel de groupe est actif (P25 bas et la raison lorsqu'il ne l'est pas), et l'ID d'unité de la radio qui parle, en rouge avec URGENCES lorsqu'il s'agit d'un appel d'urgence. Maintenir pour parler demande au RFSS de la maison le canal (Demande du canal...) ; votre voix part une fois qu'il l'accorde, et si il refuse (quelqu'un avec une priorité plus élevée l'a), la tuile le dit. La voix est convertie en IMBE, le codec vocal P25, dans BitVoice.
Groupes de discussion chiffrés. Sous Clés de chiffrement, ajoutez chaque clé de trafic que votre magasin de radios vous fournit : un nom, l'algorithme (AES-256, DES-OFB ou triple DES), l'ID de clé et la clé elle-même en hex (TIA-102.AAAD). Une clé n'est jamais affichée à nouveau une fois enregistrée, même pour les administrateurs, et laisser le champ vide le conserve. La console entend une transmission chiffrée lorsqu'elle possède la clé avec cet algorithme et cet ID de clé : la tuile affiche un cadenas et l'algorithme à côté de l'unité qui parle. Sans la clé, la transmission est muette, ne sera jamais jouée comme du bruit, et la tuile indique pas de clé : muet. Pour transmettre chiffré sur un groupe de discussion, choisissez une clé sous Transmettre pour ce canal ; la tuile affiche alors TX AES-256 (ou l'algorithme que vous avez choisi). Une exportation complète de la configuration (Paramètres, sauvegarde d'un administrateur) contient les clés, donc conservez ces fichiers aussi sûrs que les clés.
Appels privés. Avec la console sur un système P25, Appeler une radio dans la barre de votre position appelle une radio par son ID d'unité (activez Urgence pour l'appeler en urgence). L'appel devient une tuile à part, Appel privé : unité 197, avec Tenir pour parler comme n'importe quel canal et Raccrocher. Les radios peuvent également appeler la console, sur l'ID d'unité que les dispatchers transmettent : l'appel apparaît comme une tuile marquée appel entrant (en rouge avec URGENCE lorsqu'une radio a appelé en urgence), chaque dispatcher l'entend, et cela se termine lorsque l'une ou l'autre des parties raccroche. Sous Appels privés dans les paramètres P25 de la console, indiquez l'adresse SIP et l'ID de l'RFSS qui abrite les radios (vide utilise le premier groupe de discussion de la maison) et, si les appels privés doivent être chiffrés, la clé à envoyer avec.
Tons d'alerte. Envoyer un ton d'alerte… sur un canal envoie l'un des suivants : Alerte 1, un ton continu de 1000 Hz pendant 3 secondes ; Alerte 2, un ton modulé entre 1000 et 1500 Hz ; Alerte 3, des impulsions de 1000 Hz ; ou un court Bip. Le ton occupe le canal pendant qu'il se joue (la tuile affiche ton et votre extension), chaque dispatcher qui surveille le canal l'entend, et sur un groupe de discussion P25, cela se produit une fois que le RFSS de la maison accorde le canal.
Urgences. Lorsqu'une radio transmet en urgence (son bouton d'urgence), sa tuile devient rouge avec URGENCE et l'ID d'unité, le journal du serveur le note, et le CAD est informé immédiatement (ci-dessous). L'urgence reste active sur chaque console après que la radio ait cessé de parler, jusqu'à ce qu'un dispatcher appuie sur Reconnaître : la tuile indique alors qui l'a reconnue et quand, et le CAD reçoit un événement radio.emergency.ack. La reconnaissance des noms d'unités affichés : si une autre unité d'urgence remplace celle-ci un moment avant, BitVoice refuse et la tuile affiche la nouvelle, donc une deuxième urgence n'est jamais silencieuse par erreur. Le CAD peut également reconnaître via l'API : POST /api/radio/channels/{id}/ack avec {"unit": "bee07.1d5.00044d"} (ou l'ID de radio, "1101") répond 409 lorsque l'urgence du canal est maintenant celle d'une autre unité ; sans corps, cela reconnaît ce que le canal contient.
Sélection simultanée. Pour dire une chose sur plusieurs canaux à la fois, cochez sélection sur chaque canal, puis maintenez Parler sur N canaux dans la barre au-dessus des tuiles. C'est tout ou rien : si un autre dispatcher parle sur l'un d'eux, aucun n'est activé et on vous le dit.
Positions de radio. Les radios signalent leur position via le côté données du système de radio, et non le côté vocal que la console rejoint : service de localisation P25, LRRP de Motorola ou un système propre au fournisseur, collecté par la passerelle de données ou de géolocalisation du magasin de radios. Faites en sorte que la passerelle (ou un petit script à côté) envoie chaque rapport à BitVoice avec un jeton d'API : POST /api/radio/locations avec {"unit": 1205, "lat": 40.2633, "lon": -76.8823, "speed": 42, "heading": 90, "accuracy": 8, "at": "2026-10-15T14:05:00Z"}, ou une liste de jusqu'à 500 (vitesse en km/h, direction en degrés, précision en mètres ; les trois et le moment sont facultatifs). Positions de radio sur la console liste alors la dernière position de chaque radio, avec son nom, et le CAD reçoit chaque position comme un événement radio.location. BitVoice ne décode pas LRRP ou le service de localisation P25 lui-même.
Noms de radio. Sous Noms de radio, nommez les radios par leur ID d'unité P25 (1205 est "Engine 5", par exemple) : la tuile affiche le nom à côté de l'unité pendant qu'elle parle, et le journal de radio et les événements du CAD contiennent ce nom.
Journal de radio et enregistrement. Activez Enregistrer chaque transmission sous Enregistrement et CAD : chaque transmission sur chaque canal, entendue ou envoyée, est conservée comme un enregistrement avec une ligne dans le Journal de radio : quand, le canal, qui (l'unité de radio, ou l'extension du dispatcher), combien de temps, et si c'était une urgence, un ton d'alerte, chiffré ou un appel privé. Une transmission entendue commence avec le premier mot et se termine 1,5 seconde après le dernier mot. Recherchez une unité, un dispatcher ou un canal avec la boîte de recherche, et appuyez sur Lire pour écouter. Les enregistrements sont conservés aussi longtemps que les enregistrements d'appels (Paramètres, Enregistrement).
Données radio au CAD. Entrez l'adresse du CAD sous Envoyer les événements radio au CAD à (et un secret partagé si le CAD en veut un ; il est envoyé comme jeton porteur et n'est plus affiché). BitVoice envoie ensuite chaque événement (radio.unit, radio.emergency, radio.emergency.ack, radio.transmission et radio.location) au format JSON, {"type": ..., "agency": ..., "data": {...}} : radio.unit lorsque une radio commence à parler sur un canal (son ID d'unité, WACN, système, canal, urgence, cryptage), radio.emergency en cas d'urgence (tenté trois fois si le CAD ne répond pas) et radio.transmission pour chaque transmission terminée telle qu'elle apparaît dans le journal radio. Le CAD peut également lire le journal lui-même avec GET /api/radio/log (filtres : channel, q, since, until). Un CAD qui est hors service ne bloque jamais la console. Les positions GPS des radios P25 ne font pas partie de cela : elles voyagent sur les données de paquet P25 (services de localisation), et non sur la voix ISSI.
Pas encore ici : voix P25 Phase 2 (TDMA) dans son propre codage à taux réduit. Un système Phase 2 fonctionne avec la console lorsqu'il transporte de la voix à taux plein (Phase 1) ou que son transcodeur les convertit, ce qui est courant : demandez à votre administrateur P25. Un groupe de discussion dont la voix arrive en blocs que cette console ne décode pas (voix à taux réduit envoyée sans transcodage, probablement) affiche Silent ici sur sa tuile tandis qu'une radio parle, afin que personne ne prenne le silence pour un canal calme. La décodage nécessite deux choses que BitVoice n'a pas : le codage à taux réduit (AMBE+2, breveté jusqu'en 2028 : une licence de son propriétaire, ou un circuit de codage matériel licencié), et le format de bloc de voix à taux réduit ISSI (TIA-102.BACA-B, vendu par TIA, et non public).
**Services du noyau NG911** (ECRF, ESRP, LVF, BCF, LIS, journalisation)
/corePour une autorité 911 d'État ou régionale qui exploite son propre noyau NG911 : BitVoice répond à LoST en tant qu'ECRF et achemine chaque appel 911 en tant qu'ESRP vers le PSAP qui dessert l'appelant.
Zones de service. Exportez vos limites à partir de GIS sous forme de polygones GeoJSON (limites de PSAP pour urn:service:sos ; zones de police, d'incendie ou de services d'urgence pour urn:service:sos.police et les autres) et téléchargez-les sur Services Core. Les propriétés name, uri et number d'un polygone sont lues ; fournissez une URI de PSAP par défaut pour ceux qui n'en ont pas. Éditez une zone pour ajouter les villes ou les comtés qu'elle dessert, pour les appelants dont l'emplacement est une adresse civique uniquement. Essayer un endroit montre quelle zone répond à un emplacement ou à une ville, comme une requête LoST le ferait.
L'ECRF. Activez Répondre aux requêtes LoST et répertoriez les adresses qui peuvent demander (votre ESInet) : d'autres éléments envoient findService à /lost (RFC 5222) et reçoivent l'URI du PSAP. Un service spécifique (sos.police) est répondu à partir de ses propres zones d'abord, puis à partir de sos. Un endroit que aucune de vos zones ne couvre peut aller au Guide forestier (RFC 5582 : l'annuaire national des ECRF) : une requête récursive est effectuée à sa place et sa réponse est renvoyée (les deux serveurs répertoriés dans le chemin de réponse), toute autre requête est redirigée vers celui-ci, et une requête qui a déjà traversé cet ECRF est refusée en tant que boucle.
L'ESRP. Répertoriez les PSAP : l'URI de chacun (telle que les zones le nomment), le tronc qui y accède et son PSAP de débordement, et choisissez le PSAP par défaut. Ensuite, envoyez les appels 911 entrants de l'ESInet à ESRP dans Acheminement des appels (chapitre 8). Chaque appel va au PSAP de son emplacement (à partir des zones de ce serveur, ou d'un ECRF externe via LoST), avec son emplacement et le service qu'il a demandé transportés ; lorsqu'il ne le prend pas, à son PSAP de débordement ; sans emplacement, ou à partir d'un endroit que aucune zone ne couvre, au PSAP par défaut. Chaque décision est dans le journal i3 sur Appels 911 (chapitre 77).
Règles de stratégie. Une fois que l'ECRF a choisi un PSAP, les règles sous Règles de stratégie sont vérifiées dans l'ordre et la première dont toutes les conditions sont remplies décide : envoyer l'appel à un autre PSAP, ou le refuser en tant que busy. Une règle peut examiner le service (appels de feu uniquement, par exemple), le PSAP choisi par l'ECRF, un calendrier (pendant la fermeture du centre de nuit), les appels sans emplacement, les appels que le BCF a marqués comme suspects, et le tronc par lequel l'appel est arrivé. Chaque décision est dans le journal i3 sous la forme d'un événement RouteLogEvent nommant la règle.
Contrôle des frontières (BCF). Avec Vérifier les appels de l'ESInet activé, chaque appel provenant d'un trunk ESInet est vérifié en premier : les adresses sous Toujours refuser sont rejetées, ainsi que les adresses qui déclenchent plus d'appels par minute, ou qui maintiennent plus d'appels en même temps, que vous le permettez (une attaque de déni de service téléphonique envoie des flots d'appels à partir de quelques sources). Les appels rejetés reçoivent un 503 avec Retry-After. Activez Laisser passer l'appel marqué comme suspect pour envoyer de tels appels à la place et laisser une règle de stratégie décider (vers un centre qui les écran, ou refusé) ; un appelant réel dans un flot n'est alors pas perdu. Contrôle des frontières : derniers répertorie ce qui a été refusé ou marqué. Vérifier les signatures STIR/SHAKEN vérifie l'identifiant de l'appelant signé (l'en-tête Identity) de chaque appel qui en porte un, par rapport aux racines STI définies sous Écran d'appel dans les paramètres : un appel dont la signature échoue passe marqué comme suspect, pour qu'une règle de stratégie l'envoie ailleurs, et est répertorié dans le journal BCF ; un appel 911 n'est jamais refusé pour cela, et les appels non signés (la plupart d'entre eux aujourd'hui) sont laissés inchangés. Chaque appel quitte BitVoice comme une nouvelle demande à part (BitVoice est un agent de bout en bout), ne transportant que les en-têtes et les corps que BitVoice comprend et transmet : l'emplacement, les données supplémentaires et la session. Inspecter les médias vérifie chaque paquet RTP d'un appel ESInet avant qu'il ne soit utilisé ou transmis : les paquets provenant d'une adresse autre que celle que l'offre SDP a donnée, avec un type de charge utile que l'offre n'a pas nommé, avec des longueurs d'en-tête (CSRC, extension, padding) qui ne correspondent pas au paquet, plus grands que Plus grand paquet (1 500 octets si vide), ou au-delà de Paquets par seconde (150 si vide ; G.711 à 20 ms envoie 50) sont supprimés et comptabilisés. Le premier de chaque type, puis le 10e, le 100e, etc., va dans Contrôle des frontières : derniers (comme *médias supprimés*) et les notes de l'appel. L'appel n'est jamais terminé pour ses médias : l'appelant conserve les bons paquets. Les appels provenant de troncs CAMA proviennent du programme de carte local et ne sont pas inspectés.
Validation d'adresse (LVF). Téléchargez vos données d'adresse GIS 911 sous forme de GeoJSON, dans le modèle de données GIS NENA (NENA-STA-006) : les lignes centrales de route avec FromAddr_L, ToAddr_L, Parity_L, IncMuni_L et le reste, et les points d'adresse de site/structure avec Add_Number, St_Name, Inc_Muni. Une requête LoST avec validateLocation="true" obtient alors les parties valides, non valides et non vérifiées de l'adresse dans sa réponse (RFC 5222), afin que les transporteurs et les serveurs de localisation puissent corriger une adresse avant qu'un appel 911 ne l'utilise. Vérifier une adresse fait la même chose ici : un point d'adresse exact est la meilleure correspondance, puis un segment de rue dont la plage sur le côté droit de la route contient le numéro (les côtés impairs et pairs sont respectés) ; les orthographes telles que Street et St, North et N sont traitées de la même manière.
Le service de journalisation i3. Activez Exécuter un service de journalisation i3 : les autres éléments de votre cœur (ESRPs, BCFs, PSAPs) envoient leurs événements de journal (NENA-STA-010), chacun signé comme un JWS avec le certificat de l'élément dans son en-tête x5c, par POST à /i3log/LogEvents à partir des adresses autorisées. Chacun vient sous la forme d'un JWS dans la forme JSON aplatie (signé, ou non signé avec l'algorithme none, que peut prendre un service de journalisation : marqué comme non tracé au PCA), est vérifié et conservé, et la réponse est son ID d'événement de journal. Lisez à nouveau avec GET /i3log/LogEvents/{logEventId} ; répertoriez avec GET /i3log/LogEvents (startTime, endTime, logEventType, limit, start) ; trouvez les ID des appels ou des incidents avec /i3log/LogEventIds, /CallIds, /IncidentIds et /AgencyIds ; et lisez la conversation textuelle d'un appel avec /i3log/Conversations?callId=. GET /i3log/Versions indique ce que parle ce service. Événements de journal reçus répertorie les événements d'une journée avec qui a signé chacun. Chaque réponse est vérifiée par rapport à la définition OpenAPI publiée par NENA du service ; le service n'a pas encore été testé avec les éléments d'un autre fournisseur.
Agence d'habilitation des PSAP. Collez les certificats racine du PCA sous Racines de l'Agence d'habilitation des PSAP : un événement de journal signé est alors pris uniquement lorsque le certificat du signataire est lié à l'un d'eux (et n'a pas expiré), et est affiché avec PCA. Sans eux, seule la signature est vérifiée, et l'événement est affiché comme non tracé au PCA.
Enregistrements de localisation (LIS). Activez Répondre aux demandes de localisation (LIS) et téléchargez une feuille de calcul (CSV) d'enregistrements de localisation : une ligne d'en-tête, et sur chaque ligne un numéro (les données ALI exportées), un réseau (une plage d'adresses telle que 10.20.3.0/24, ou une adresse : un bâtiment, un étage, un VLAN, un réseau Wi-Fi) ou une adresse MAC (un appareil : un téléphone de bureau, un port de commutateur de prise murale), puis l'adresse sous la forme hno, rd, sts, unit, floor (ou flr), a3 (ville), a1 (état), pc et pays, avec lat, lon et rayon lorsque cela est connu (d'autres noms, tels que téléphone, rue, code postal, sous-réseau et IP, sont également compris). Les PSAP, les passerelles de réseau héritées et les téléphones demandent ensuite /held (HELD, RFC 5985) à partir des adresses autorisées et reçoivent un PIDF-LO. Une demande nomme son appareil par numéro de téléphone, adresse IP ou adresse MAC (RFC 6155) ; une demande qui ne nomme aucun d'entre eux est répondu pour l'adresse à partir de laquelle elle provient, comme un LIS sur un réseau de bureau ou de campus. Une adresse est localisée par le réseau le plus étroit qui la contient, donc un /24 d'un étage l'emporte sur un /16 de campus. Un appareil sans enregistrement reçoit locationUnknown de HELD ; une identité d'une autre nature (un NAI, un port) reçoit notLocatable. Un PSAP BitVoice pointe son Recherche de localisation (ALI) ici. Rechercher un numéro, une adresse ou une adresse MAC vérifie un enregistrement et indique quel réseau il provient. Un numéro, un réseau ou une adresse MAC répertorié à nouveau remplace son ancien enregistrement ; Remplacer chaque enregistrement recommence à zéro. Seules les adresses autorisées sont répondues : un LIS qui répond à toute adresse qui lui est demandée ne doit pas être ouvert à quiconque.
The i3 web services. Under NENA i3 web services, switch on what this core offers the other elements of your ESInet, at /i3/<service>/v1, for the addresses under May ask only. Each answers as NENA's published OpenAPI definitions say (NENA-STA-010.3, the NENA911 repositories), and each has a tab under i3 web services:
- Policy Store (
/i3/PolicyStore/v1/Policies,/PolicyEnums): agencies store, update and delete their routing policies (Policy Routing Rules), each a JWS signed by the agency that owns it (the signer's certificate must name the owner, and come from the PCA when its roots are set). A policy is kept byte for byte as it came. The ESRP runs them: the OriginationRoutePolicy for This ESRP's incoming queue first, else the NormalNextHopRoutePolicy of the PSAP the ECRF chose. Of the rules whose conditions hold, the highest priority acts; when its route fails (busy, no answer within its rnaTimer, 20 seconds when it gives none), the next one does; a BusyAction answers 600 Busy Everywhere. Conditions taken: time periods, SIP headers, Additional Data, body types, location (circle or civic), call suspicion, queue state (BitVoice's own PSAPs), LoST service URN and Normal-NextHop, call source, request URI, incoming queue, and the SDP offer's media and languages; service state and security posture are taken as unknown (Unreachable and Green, as the standard says). Body-part, CAP and calling-number-verification conditions are not run: they count as false. Without a stored policy, the Policy rules above decide. The tab lists what is stored and lets you paste one, or sign one with this server's certificate. - Discrepancy reports (
/i3/DiscrepancyReports/v1): other agencies report problems with this server's services; each shows on the tab, where you answer it with a resolution, sent to the reporter. File a report sends one to another agency's DR service; its answer and later resolution show under Reports this server filed. - Bad actors (
/i3/BadActor/v1/BadActors, with the BCF): each call the BCF passes on carries its source's ID (Call-Info: <sip:ID>;purpose=emergency-source); a PSAP that finds that source attacking reports the ID, and the BCF refuses its calls, or raises their suspicion score for the policies, for A report lasts hours. Lift ends a report early. - Geocode and MSAG conversion (
/i3/Gcs/v1,/i3/Mcs/v1): civic address to position and back from the LVF's address points (the nearest within 150 m), and civic address to MSAG address (120 N MARKET STREET, HARRISBURG CITY, PA) and back, from the centerlines'MSAGComm_L/MSAGComm_Rfields. Answers are JSON objects, or XML when the asker asks for it. - Additional Data (
/i3/Adr/v1/AdditionalData?callerUri=): blocks you keep by caller (RFC 7852 XML), served by value, or by reference for an asker that wants JSON. One block per caller is served by value: the first kept. - Locator (
/i3/ServiceAgencyLocator/v1): this agency's own record (its ID from the 911 calls page, with its logging and discrepancy addresses) and the agencies you add. - Dequeue (
/i3/DequeueRegistration/v1/Registrations): positions or PSAPs sign up to take a queue's calls (this ESRP's queue, or a PSAP's URI); the ESRP sends calls for that queue to them, the most preferred first (preference 5 before 1), over the PSAP's trunk. - Test calls: a PSAP asks this core to send it test calls (
/i3/TestCall/v1/SendTestCalls/{agency ID}: every so many minutes, five at least, between two dates, with a location); BitVoice places each tourn:service:test.sosover the PSAP's trunk and keeps what came back. Place one now tries one. - PSAP states (SIP, not REST): Subscribe to each PSAP's queue and service state has the ESRP SUBSCRIBE (RFC 6665) to every PSAP listed, over its trunk, for
emergency-QueueStateandemergency-ServiceState(NENA-STA-010.3 4.2.1.3 and 2.4.2), for an hour at a time, renewed before it ends. What the PSAPs NOTIFY shows under PSAP states and is what the policy rules' queue state, service state and security posture conditions read. A PSAP whose queue says Inactive, Disabled, Full or ResourceExhausted (or holds its most calls), or whose service says Unstaffed, ScheduledMaintenanceDown, Overloaded, GoingDown or Down, is passed over for its overflow, and the call's notes say so; when every PSAP in the chain says it cannot take calls, the call is sent as listed anyway, never left with nowhere to go. A PSAP that does not answer the SUBSCRIBE is Unreachable (as the standard says a subscriber must assume) and is tried again each minute; one that refuses it (489, 603 ...) is tried again in ten minutes. - This server's states: Tell other elements this server's element, service and queue state answers SUBSCRIBEs for
emergency-ElementState,emergency-ServiceStateandemergency-QueueStatefrom the addresses under May ask (others get 603 Decline; a queue that is not this server's incoming queue, 488). The queue's length is the 911 calls not yet answered here, and it says Full at Most calls waiting in the queue (20 when blank); the service says Overloaded at this server's call limit, else Normal. NOTIFYs go out when the state changes, at most one a second, and once a minute regardless (the standard's default rates); their bodies are checked against NENA's notify-body schemas.
Test d'appels à un PSAP. Un PSAP BitVoice répond à un appel de test de l'ESInet (urn:service:test.sos, NENA-STA-010.3 section 9, RFC 6881) par lui-même : sa réponse indique le nom du PSAP, le service et l'emplacement de l'appel, les trois premiers paquets de son sont renvoyés, puis il raccroche. Un deuxième test du même endroit dans les deux minutes suivantes est refusé (486), tout comme un cinquième à la fois. Un ESRP transmet un appel de test comme un appel réel, toujours marqué comme un test. Désactivez Répondre aux appels de test sur la page des appels 911 pour les refuser (404).
Algorithmes JWS : NENA-STA-010.3 demande EdDSA avec Ed448. La bibliothèque standard de Go, que BitVoice utilise pour chaque étape cryptographique, dispose d'Ed25519 mais pas d'Ed448, les signatures EdDSA sont donc vérifiées avec des clés Ed25519, et les signatures ECDSA et RSA sont également prises ; un certificat Ed448 est refusé.
Did you mean. Une adresse qui n'est pas valide obtient jusqu'à cinq suggestions à partir des mêmes données, les meilleures en premier, chacune indiquant pourquoi : une rue à une ou deux lettres de distance (un échange de deux lettres compte comme une), la même rue dans la ville suivante, ou le numéro le plus proche de la rue, du même côté lorsque cela est possible (les numéros pairs restent pairs). Utiliser remplit une suggestion. Une position avec l'adresse. Fournir une latitude et une longitude (et le rayon de la position, lorsque cela est connu) avec l'adresse : la position est vérifiée contre le point d'adresse propre à l'adresse, en permettant son rayon et 100 m de plus (la taille d'un terrain et l'erreur de SIG). La réponse donne la distance et si les deux sont d'accord, et, lorsqu'ils ne sont pas d'accord, le point d'adresse le plus proche de la position. Une adresse connue uniquement à partir de lignes centrales de route n'a pas de point à vérifier, et la réponse le dit. La validation de l'emplacement de LoST n'a pas de place pour l'un ou l'autre, les transporteurs qui demandent par LoST obtiennent donc uniquement la validation.