Manuel de BitVoice

Un système téléphonique open-source dans un seul programme, configuré entièrement dans l'interface web : extensions, files d'attente, salles de conférence, portail du personnel, organisations hébergées et laboratoire de suivi de la sécurité publique.
79 chapitres · 63 figures · 58 mille mots · BioDream LLC

Sommaire

  1. Partie 1. Premiers pas
    1. 1. Premiers pas
    2. 2. Maturité de chaque partie
    3. 3. Extensions
    4. 4. Connexion des téléphones
    5. 5. Téléphones Skinny et passerelles MGCP
    6. 6. Cartes de téléphonie
    7. 7. Troncs
    8. 8. Acheminement des appels
    9. 9. Ensembles de codes PIN
    10. 10. Recherche d'identifiant d'appelant
    11. 11. Appels d'urgence
    12. 12. Sites et 911 de bureau
    13. 13. État de santé
    14. 14. Paramètres
    15. 15. Les écrans dans votre langue
  2. Partie 2. Où les appels aboutissent
    1. 16. Flux d'appel
    2. 17. Groupes de sonnerie
    3. 18. Files d'attente
    4. 19. Appel sortant automatique
    5. 20. Sons : invites, langues et musique d'attente
    6. 21. Menus (répondeur automatique)
    7. 22. Annuaire par nom
    8. 23. Accès téléphonique (DISA)
    9. 24. Robots vocaux (AudioSocket)
    10. 25. Basculants jour/nuit
    11. 26. Horaires
    12. 27. Scripts (JavaScript et Lua)
    13. 28. Réceptionniste IA, triage de la messagerie vocale et questions
    14. 29. Boîte vocale
    15. 30. Appels en rappel
    16. 31. Liens d'appel et appel de site Web
  3. Partie 3. Appels quotidiens
    1. 32. Codes de fonction, transfert et numéros de vitesse
    2. 33. Le portail du personnel
    3. 34. Salles de conférence
    4. 35. Paging et haut-parleurs de plafond
    5. 36. Poste de travail partagé
    6. 37. Appels d'hôtel et appels de réveil
    7. 38. Contacts sur chaque téléphone
    8. 39. Calendriers et ne pas déranger
    9. 40. Applications mobiles
    10. 41. Appels vidéo
    11. 42. Télécopie : envoi et réception, machines à télécopie et téléphones analogiques
    12. 43. Boîte de réception : chat web, WhatsApp et Messenger
    13. 44. Messagerie commerciale (SMS)
    14. 45. Transfert des briefings
  4. Partie 4. Clients et analyse
    1. 46. Appels en cours
    2. 47. Historique des appels
    3. 48. Chronologie client
    4. 49. CRM : cartes d'appelants et journalisation des appels
    5. 50. Aperçu d'appel pour les superviseurs
    6. 51. Enregistrement des appels et paiements par carte
    7. 52. Consentement à l'enregistrement
    8. 53. Qualité de l'appel
    9. 54. Coûts et budgets
    10. 55. Réputation de l'identifiant de l'appelant et appels personnalisés
    11. 56. Protection contre les spams et STIR/SHAKEN
  5. Partie 5. Exécution de BitVoice
    1. 57. Administrateurs
    2. 58. Authentification unique
    3. 59. Annuaire d'entreprise (Active Directory et LDAP)
    4. 60. Sécurité
    5. 61. Changements, sauvegardes et importation
    6. 62. Mises à jour
    7. 63. Plusieurs serveurs en un seul système téléphonique
    8. 64. Où les données sont conservées (SQLite ou PostgreSQL)
    9. 65. Hébergement d'autres organisations
    10. 66. Codecs et son
    11. 67. Microsoft Teams (Direct Routing)
    12. 68. Importation
    13. 69. Configuration en tant que code
    14. 70. Compatibilité Asterisk (AMI, ARI et AGI)
    15. 71. Les assistants intelligents (MCP)
    16. 72. Archives
    17. 73. Conservations légales
    18. 74. Métriques : Prometheus, OpenTelemetry, Grafana, SNMP et enregistrements d'appels
    19. 75. Générateur d'appels
    20. 76. Traçage SIP
  6. Partie 6. Sécurité publique : la piste du labo
    1. 77. Appels 911 (le profil 911)
    2. 78. Console de dispatch radio
    3. 79. **Services du noyau NG911** (ECRF, ESRP, LVF, BCF, LIS, journalisation)
Partie 1

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.

Chapitre 1

Premiers pas

Dans l'interface web : /

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.

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

Ce dont vous avez besoin

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

Extensionsone per person1Phonesconnect each one2Trunkyour carrier3Call routingwhere calls go4Healthwhat is missing5Every step has a page in the menu; Health lists anything still missing, emergency calling first.
Figure 2. The first hour: five steps from a new install to a working phone system
  1. Extensions : une par personne ou par poste. Chaque a un numéro et un mot de passe SIP. Ouvrir les extensions (chapitre 3)
  2. 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)
  3. Trunk : votre compte d'entreprise de téléphonie, pour appeler des numéros externes et être appelé. Ouvrir les trunks (chapitre 7)
  4. 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)
  5. É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 :

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èmeComment l'exécuterOù sont ses données
Linux./bitvoice (ou le service systemd dans la version)~/.config/BitVoice
macOS./bitvoice~/Library/Application Support/BitVoice
Windowsdouble-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

PortPour quoi
5060 UDP et TCPSIP : téléphones et troncs
5061 TCPSIP sur TLS (signalisation chiffrée)
4569 UDPTroncs IAX2, uniquement une fois qu'un est configuré
1720 TCPTroncs H.323, uniquement une fois qu'un est configuré
2000 TCPTéléphones Skinny (SCCP), uniquement lorsqu'il est activé
2727 UDPPasserelles MGCP, uniquement lorsqu'il est activé
10000–20000 UDPLe son des appels (RTP), défini dans les Paramètres
8443 TCPCette 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

Chapitre 2

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.

ZoneMaturitéCe qu'il repose sur
Troncs SIP : enregistrement, appels entrants et sortants, identification de l'appelant, occupé, touches (RFC 4733)Testé sur le terrainun 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 SIPTesté sur le terrainAsterisk 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, basculementTesté sur le terrainkill -9 et arrêt planifié sur EC2 : l'appel se poursuit, la ligne du fournisseur se déplace
Installation en une commandeTesté sur le terrainUbuntu 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 terrain2 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 terrainune 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éceptionnisteTesté sur le terrainun modèle réel via OpenRouter
Faits et résumés sans modèle linguistiqueTesté logicielappels 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 Linuxwhisper-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 ManagerTesté sur le terraincompte AWS réel, notre propre SigV4
Surveillance SNMP et piègesTesté sur le terrainsnmpwalk et snmptrapd de net-snmp
Let's EncryptTesté sur le terrainémet et renouvelle le certificat de la démonstration publique
Images de machine (AWS) et configuration en tant que codeTesté sur le terrainune 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 IAX2Vérifié contre une référenceAsterisk 23
ICE complet derrière NAT (client STUN et TURN)Vérifié contre une référenceagent 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érenceChromium 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érenceAsterisk 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érenceOpenLDAP 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érencechaque 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'écranVérifié contre une référenceTrois 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érencechaque 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 MCPVérifié contre une référencele 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é logicielcontre 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 languesTesté logicielchaque 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.323Vérifié contre une référenceH323Plus 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 WebSocketVérifié contre une référenceJsSIP et SIP.js
Codecs : GSM, G.726, iLBC, MP3 de musique d'attenteVérifié contre une référenceffmpeg, le programme de référence RFC 3951 et minimp3, échantillon pour échantillon
Codecs : G.711, G.722, G.729, Opus, SpeexVérifié contre une référenceG.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-WBVérifié contre une référence, avec un écart connuAMR-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, Codec2Testé logicielnos 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/E1Vérifié contre une référencelibpri (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&MVérifié contre une référenceOpenR2 ; 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érencelibss7 (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 terrainun 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, CyberDataTesté logicielles formats documentés des fournisseurs ; pas sur des combinés réels
Téléphones Skinny (SCCP) et passerelles MGCPVérifié contre une référenceSkinny : 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 RoutingTesté logicielcontre 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érencechaque 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 WebVé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 VaultVérifié contre une référenceEspoCRM (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, suggestionsTesté logicielles 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 AndroidTesté 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'appelantLabsché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 TCAPVérifié contre une référenceOsmoSTP 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é logicielchaque 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 E2Non 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
Chapitre 3

Extensions

Dans l'interface web : /extensions

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

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

Ajout d'une extension

  1. Ouvrez Extensions (chapitre 3) et appuyez sur Ajouter une extension. Le prochain numéro disponible et un mot de passe SIP fort sont remplis.
  2. 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).
  3. Remplissez l'emplacement 911 : le site, l'étage et la pièce. Il est envoyé avec les appels d'urgence.
  4. Choisissez ce qui se passe Si personne ne répond : messagerie vocale par défaut, ou une autre extension, un groupe ou un menu.
  5. Enregistrez. L'extension peut s'authentifier immédiatement.

Les champs

ChampFonction
Numéro2 à 8 chiffres ; aucun autre poste, groupe, file d'attente, pièce ou code de fonction ne peut l'avoir
Mot de passe SIPce avec quoi le téléphone s'authentifie ; au moins 12 caractères ; Générer en crée un nouveau
Sonnerie poursecondes avant que Si personne ne répond ne se produise (25 par défaut)
Identifiant de l'appelant externele numéro affiché sur les appels sortants ; vide utilise celui du trunk
Peut appeler des numéros externesdésactivé limite le téléphone aux appels internes et aux numéros d'urgence
Enregistrer les appelslorsque 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éphonechiffrement des médias (SRTP) ; utilisez-le avec TLS pour que les clés restent privées
Départementregroupe 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 :

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é

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.

Chapitre 4

Connexion des téléphones

Dans l'interface web : /phones

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

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

Configuration automatique (provisioning)

  1. 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.
  2. Choisissez la marque : Yealink, Poly, Grandstream (y compris les adaptateurs analogiques HT), Snom, Fanvil, Cisco, Mitel, Sangoma, Algo ou CyberData.
  3. 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.
  4. 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.

FabricantModèles testésCe qu'il obtient
YealinkT3x, T4x, T5xcompte, touches BLF, heure, codecs
PolyVVX, Edge Eles mêmes, au format propre à Poly
GrandstreamGRP, GXP, HT802/814compte par port sur les adaptateurs
SnomD7xxcompte, 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) :

MarqueModèlesFichier que l'appareil demande
FanvilSérie X et Vson adresse MAC .cfg
Cisco6800, 7800, 8800 multiplateforme (3PCC), adaptateurs SPAson adresse MAC .xml (le micrologiciel d'entreprise nécessite d'abord le micrologiciel multiplateforme)
Mitel (Aastra)6800, 6900 SIPson adresse MAC .cfg, en majuscules
SangomaSérie Sle fichier au format Fanvil
Algohaut-parleurs de sonorisation, sirènes, adaptateursalgop et son adresse MAC .conf
CyberDatahaut-parleurs, interphones, adaptateurs de sonorisationson 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) :

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

Chapitre 5

Téléphones Skinny et passerelles MGCP

Dans l'interface web : /desk-phones

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

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

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

Chapitre 6

Cartes de téléphonie

Dans l'interface web : /cards

Une 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

  1. Installez les pilotes DAHDI et configurez les ports comme d'habitude dans /etc/dahdi/system.conf (fxoks=1-4 pour les ports avec des téléphones, fxsks=5-8 pour les ports avec des lignes, et les tons du pays dans loadzone et defaultzone), puis exécutez dahdi_cfg.
  2. 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.
  3. 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.
  4. 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.
  5. Démarrez bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.token en 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

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

  1. Dans /etc/dahdi/system.conf, configurez l'étendue pour le PRI comme d'habitude (span=1,1,0,esf,b8zs, bchan=1-23, hardhdlc=24 pour un T1 ; span=1,1,0,ccs,hdb3,crc4, bchan=1-15,17-31, hardhdlc=16 pour un E1), puis exécutez dahdi_cfg.
  2. 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é.
  3. 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.

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 :

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 :

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.

Chapitre 7

Troncs

Dans l'interface web : /trunks

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

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

Ajout d'un trunk SIP

  1. Sur Troncs (chapitre 7) appuyez sur Ajouter un trunk.
  2. 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.
  3. Entrez le nom d'utilisateur et le mot de passe, et activez Enregistrement si le fournisseur le demande (la plupart le font).
  4. 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.

  1. Ajoutez une route d'entrée pour votre numéro et une route de sortie qui utilise ce trunk (Routing des appels (chapitre 8)).
ChampFonction
TransportUDP (habituel), TCP ou TLS pour la signalisation chiffrée
Enregistrementconnectez-vous toutes les quelques minutes, afin que le fournisseur sache où envoyer les appels
Nom d'utilisateur d'authentificationuniquement lorsque le fournisseur fournit un nom d'utilisateur distinct
Domaine de l'expéditeurle domaine dans l'adresse de l'expéditeur, lorsque le fournisseur en demande un
ID de l'appelantle numéro affiché sur les appels sortants ; l'ID de l'appelant d'une extension l'emporte
Accepter également les appels deles 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ésla 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édiasSRTP, 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
Codecslaissez-le sur *même que les paramètres*, ou choisissez ce que ce fournisseur prend en charge, en commençant par le meilleur
Tarifscoû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.

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

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

StatutSignification
enregistréconnecté ; les appels peuvent arriver
prêtne s'enregistre pas, ou IAX2 en attente d'appels
injoignablele 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 attenteles serveurs partagent ce trunk à tour de rôle et un autre le détient
Chapitre 8

Acheminement des appels

Dans l'interface web : /routes

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

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

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.

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

Dialled2125550199Emergency 911Long distance 1NXXNXXXXXXLocal NXXNXXXXXXInternational 011.matchTrunk AfirstTrunk Bif A failsN is 2–9, X is any digit, . is anything more; emergency numbers never fail for want of a pattern.
Figure 8. Outgoing routes: the first pattern that matches, its trunks in order
MotifCorrespond à
Xn'importe quel chiffre
Z1 à 9
N2 à 9
[1-5]l'un d'un ensemble
. à la finun ou plusieurs chiffres supplémentaires
NXXNXXXXXXun numéro nord-américain à 10 chiffres
1NXXNXXXXXXle même avec 1 devant
011.un appel international depuis les États-Unis

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.

Chapitre 9

Ensembles de codes PIN

Dans l'interface web : /pin-sets

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

  1. Ajouter un ensemble de codes PIN et lister ses codes PIN (4 à 10 chiffres chacun).
  2. 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 account dans l'API).
  3. 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.

Chapitre 10

Recherche d'identifiant d'appelant

Dans l'interface web : /lookups

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

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.

Chapitre 11

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

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

Ce que BitVoice fait sur chaque appel d'urgence

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

  1. Vérifiez les numéros d'urgence dans Paramètres (chapitre 14) (définis par pays : 911 et 933 aux États-Unis).
  2. Ajoutez chaque bâtiment sous Sites (chapitre 12), avec son adresse de rue et les réseaux que ses téléphones utilisent.
  3. Attribuez chaque extension son site, son étage et sa pièce.
  4. 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.
  5. Remplissez Prévenir et Envoyer également un e-mail.
  6. 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é.

Chapitre 12

Sites et 911 de bureau

Dans l'interface web : /sites

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

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

Ajout d'un site

Sur Sites (chapitre 12), appuyez sur Ajouter :

ChampCe que c'est
Nomce que les gens l'appellent : Bureau principal
Rue, Ville, État ou province, Code postal, Paysl'adresse civique à laquelle les intervenants d'urgence sont envoyés
Réseauxles 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é

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

Chapitre 13

État de santé

Dans l'interface web : /health

L'é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érificationPourquoi cela est important
Les appels d'urgence peuvent sortirune route et un tronc fonctionnel transportent les numéros d'urgence
Les extensions sans emplacement d'urgenceleurs appels 911 ne transporteraient pas d'étage ou de pièce
Le service téléphoniqueSIP est à l'écoute, et sur quel port
Les téléphones non connectésles extensions où personne n'est connecté
Les troncsenregistrés, ou la raison pour laquelle ils ne le sont pas
Les menus sans invite enregistréeles appelants entendraient le silence
Le fuseau horaireles horaires suivent
Les enregistrements et leur conservationl'espace disque, et combien de temps les enregistrements sont conservés
Les certificatsquand le certificat TLS expire
Les coffres-forts de clésles secrets qu'un coffre-fort ne peut pas lire
Les autres serveursquand 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.

Chapitre 14

Paramètres

Dans l'interface web : /settings

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

SectionCe qu'il y a
Systèmenom, pays, fuseau horaire, langue, l'adresse publique que les téléphones et les fournisseurs voient
Numérosle test d'écho, les numéros de messagerie vocale et de stationnement, et les numéros d'urgence
Codecsles codecs que les téléphones peuvent utiliser, dans l'ordre de préférence (Codecs (chapitre 66))
Enregistrement d'appelsdésactivé, chaque appel, ou les extensions sélectionnées ; règles de consentement ; durée de conservation des enregistrements
Sonnettoyage pour la messagerie vocale et pendant les appels
Protectioninterdictions après échecs de connexion, réseaux de confiance, appels par extension, numéros premium
Urgenceenvoi de l'adresse de l'appelant, qui est notifié, qui reçoit un courriel, mode d'urgence
IAle service d'IA, les modèles et les fonctionnalités d'IA activées (IA (chapitre 28))
Authentification uniquele fournisseur d'identité (Authentification unique (chapitre 58))
Compatibilité AsteriskAMI 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 Workspacepersonnes et contacts partagés dans les Contacts, et calendriers pour les absences (Contacts (chapitre 38), Calendriers (chapitre 39))
Applications mobilesle service de notification qui réveille les applications
Courrielle serveur de messagerie pour la messagerie vocale, les télécopies et les alertes
Coffres de cléssecrets conservés dans AWS Secrets Manager ou Azure Key Vault
Configuration à partir de Gitmaintenir la configuration à jour avec un fichier dans un référentiel
Base de donnéesSQLite ou PostgreSQL (Base de données (chapitre 64))
Certificatle 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 :

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.

Chapitre 15

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.

Partie 2

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.

Chapitre 16

Flux d'appel

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

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

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.

Chapitre 17

Groupes de sonnerie

Dans l'interface web : /ring-groups

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

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

Stratégies de sonnerie

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?

UtiliserLorsque
Un groupe de sonneriequelques personnes, dont n'importe laquelle peut prendre l'appel, et l'appel doit sonner maintenant
Une file d'attenteles appelants peuvent devoir attendre qu'une personne soit libre, et doivent entendre leur position
Un groupe de prisechaque personne a ses propres appels, mais les collègues peuvent répondre à leur place
Chapitre 18

Files d'attente

Dans l'interface web : /queues

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

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

Comment les appels sont offerts

StratégieQui est appelé
Le plus longtemps inactifl'agent libre qui a attendu le plus longtemps depuis son dernier appel
Tour de rôlechaque agent libre à tour de rôle, en continuant à partir du dernier
Appeler touschaque agent libre en même temps
Le moins d'appelsl'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éatoiren'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

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.

ÉtatSignification
disponiblelibre ; sera offert l'appelant suivant
sonnerieest offert un appel
occupéen appel
rétablissementvient de finir ; le temps de rétablissement est en cours
en pauseen pause, avec la raison donnée
absenten 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.

Chapitre 19

Appel sortant automatique

Dans l'interface web : /dialer

L'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 :

ModeComment il appelle
Aperçuun agent demande le prochain contact, voit ses détails, puis l'appelle (leur téléphone sonne d'abord) ou le saute
Progressifun appel pour chaque agent libre
Puissanceun nombre fixe d'appels pour chaque agent libre (1 à 3)
PrédictifBitVoice 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
  1. 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.
  2. Ouvrez Contacts et Ajoutez une liste : un fichier CSV avec une ligne d'en-tête et une colonne appelée number (ou phone) ; name et toute autre colonne sont affichés à l'agent en aperçu. Les numéros en double et erronés sont ignorés.
  3. 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.
  4. 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.

Chapitre 20

Sons : invites, langues et musique d'attente

Dans l'interface web : /sounds

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

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'entendQuelle musique
quelqu'un mis en attentela 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'attentela musique de la file d'attente, sinon la musique par défaut
un appelant en attente d'un animateur de conférencela 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à.

Chapitre 22

Annuaire par nom

Dans l'interface web : /directories

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

  1. 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.
  2. Choisissez ce que les appelants épèlent : le nom de famille (le plus courant), le prénom, ou les deux.
  3. 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.

Chapitre 23

Accès téléphonique (DISA)

Dans l'interface web : /dial-in

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

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

Chapitre 24

Robots vocaux (AudioSocket)

Dans l'interface web : /voice-bots

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

  1. Ajouter un robot vocal : son nom, l'adresse du robot (10.0.0.9:9092) et, facultativement, un numéro pour le composer.
  2. 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.
  3. 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).

Chapitre 25

Basculants jour/nuit

Dans l'interface web : /toggles

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

  1. 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.
  2. Choisissez qui peut le basculer à partir d'un téléphone (personne choisie permet à n'importe quelle extension).
  3. 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).

Chapitre 26

Horaires

Dans l'interface web : /schedules

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

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

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.

Chapitre 27

Scripts (JavaScript et Lua)

Dans l'interface web : /scripts

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

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

Conçu pour être sécurisé

Ce qu'un script voit

call a :

ChampCe que c'est
from, fromNamele numéro et le nom de l'appelant
tole numéro composé
directioninbound ou internal
trunkle trunk par lequel il est arrivé
weekday, hour, minutel'heure actuelle (0 est dimanche)
dateYYYY-MM-DD

What it returns

A destination, {type, target}: type is extension, ringgroup, queue, menu, schedule, voicemail or hangup, and target is its number. Returning nothing uses the fallback. log("text") writes to the script's run list.

JavaScript

if (call.from.startsWith("212")) {
  log("New York caller")
  return { type: "ringgroup", target: "600" }
}
if (call.weekday === 0 || call.weekday === 6) return { type: "voicemail", target: "100" }

Lua

if string.sub(call.from, 1, 3) == "212" then
  log("New York caller")
  return { type = "ringgroup", target = "600" }
end
if call.weekday == 0 or call.weekday == 6 then
  return { type = "voicemail", target = "100" }
end

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 :

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

Chapitre 28

Réceptionniste IA, triage de la messagerie vocale et questions

Dans l'interface web : /receptionists

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

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

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 :

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.

EnsembleFaits trouvésFaits trouvés que personne n'attendait
Formation (les règles ont été écrites à partir de celui-ci)41 sur 410
Retenue, noté froid, avant que toute règle ne soit écrite à partir de celui-ci27 sur 40 (67%)2
Retenue, après un deuxième cycle de règles écrites à partir de ses manques40 sur 400
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.

Chapitre 29

Boîte vocale

Dans l'interface web : /voicemail

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

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

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ètreCe qu'il fait
Message le plus long10 à 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'accueilenregistré dans le navigateur, téléchargé ou enregistré à partir du téléphone ; sans celui-ci, les appelants entendent un beep

L'écouter

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.

Chapitre 30

Appels en rappel

Dans l'interface web : /callbacks

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

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

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.

Partie 3

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.

Chapitre 32

Codes de fonction, transfert et numéros de vitesse

Dans l'interface web : /codes

Les 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

CodeCe qu'il fait
*72transférer chaque appel (puis le numéro et #, ou le numéro directement après : *722125550199)
*73arrêter de transférer chaque appel
*90 / *91transférer lorsqu'on est sur un appel / arrêter
*52 / *53transférer lorsqu'un appel n'est pas répondu / arrêter
*78 / *79ne pas déranger activé / désactivé
*76basculer ne pas déranger (ton montant : maintenant activé)
*21basculer le suivi d'appel sur et hors
*8répondre à un appel qui sonne dans votre groupe de prise d'appel
** et une extensionrépondre à l'appel qui sonne sur cette extension
*80 et une extensioninterphone : ce téléphone répond sur son haut-parleur
*0 et un codeun raccourci
*62appel 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 basculementbasculer un commutateur jour/nuit (chapitre 25) sur ou arrière
*32bloquer 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))
*43le test d'écho
*97votre messagerie vocale
70garer un appel (le transférer ici) ; 71 à 79 le reprendre
*45 / *46agents de file d'attente : se connecter ou déconnecter / mettre en pause ou reprendre
*33 / *34se connecter / déconnecter à un poste de travail partagé
*7 / *8 pendant un appelmettre en pause et reprendre l'enregistrement (paiements par carte)

Transfert

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

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

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

*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

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

Interphone

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

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

Chapitre 33

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.

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

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

OngletCe qui s'y trouve
Où vont les appelsne 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 vocalemessages à 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 appelsles appels personnels, les plus récents en premier, sans enregistrements
Code PINmodifier 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).

Chapitre 34

Salles de conférence

Dans l'interface web : /conferences

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

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

Configuration d'une salle

  1. Ouvrez Salles de conférence (chapitre 34) et appuyez sur Ajouter une salle de conférence.
  2. Donnez-lui un numéro (n'importe quel numéro libre, 500 par défaut) et un nom.
  3. 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é.
  4. Définissez éventuellement un code PIN de leader, différent du code PIN. La personne qui le saisit rejoint en tant que leader.
  5. Pour autoriser les appelants externes, pointez une route d'entrée (ou une touche de menu) vers la salle.

Options

OptionCe qu'elle fait
Attendre le leaderles 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 muetpour 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 salletoute 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 personnesactivé par défaut
Nombre maximum de personnes50 par défaut, jusqu'à 200

Touches pendant un appel

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 :

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.

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.

Chapitre 35

Paging et haut-parleurs de plafond

Dans l'interface web : /paging

Le 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

  1. Sur Diffusion (chapitre 35) appuyez sur Ajouter un groupe de diffusion et attribuez-lui un numéro (800 par défaut) et un nom.
  2. Choisissez les téléphones. Les haut-parleurs surplombs configurés en tant qu'extensions (type Haut-parleur surplomb) peuvent également en être membres.
  3. 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

DiffusionInterphone
Qui entendtout le monde dans le groupeune extension
Réponsenon, à sens uniqueoui, dans les deux sens
Commentcomposer 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.

Chapitre 36

Poste de travail partagé

Dans l'interface web : /phones

Un 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

  1. Au téléphone, composez *33 et attendez le ton.
  2. Entrez votre extension et #, et attendez le ton.
  3. 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.

Chapitre 37

Appels d'hôtel et appels de réveil

Dans l'interface web : /hotel

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

Le système hôtelier (PMS)

Chapitre 38

Contacts sur chaque téléphone

Dans l'interface web : /contacts

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

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

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 :

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

  1. Dans le centre d'administration Entra, Inscriptions d'applications, Nouvelle inscription : nommez-la BitVoice, locataire unique, sans adresse de redirection.
  2. Autorisations d'API, Ajouter une autorisation, Microsoft Graph, Autorisations d'application : User.Read.All, OrgContact.Read.All et Calendars.ReadBasic. Ensuite Accorder un consentement d'administrateur.
  3. Certificats et secrets, Nouveau secret client : copiez sa valeur (affichée une seule fois).
  4. 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) :

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

Chapitre 39

Calendriers et ne pas déranger

Dans l'interface web : /extensions

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

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

Dans l'extension, Calendrier et ne pas déranger, collez l'adresse privée du calendrier :

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.

Chapitre 40

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.

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

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 :

PushCe dont vous avez besoin
Relais de notification pushle relais BioDream (avec hébergement ou support) ou votre propre bvpush : son Adresse de relais, ID de clé et Secret
Applications personnaliséesvos 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

  1. Ouvrez l'extension et appuyez sur Ajouter un téléphone.
  2. 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 :

Les autres onglets

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.

Chapitre 41

Appels vidéo

Dans l'interface web : /settings

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

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

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

Chapitre 42

Télécopie : envoi et réception, machines à télécopie et téléphones analogiques

Dans l'interface web : /faxes

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

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

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 :

Chapitre 43

Boîte de réception : chat web, WhatsApp et Messenger

Dans l'interface web : /inbox

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

WhatsApp

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.

Chapitre 44

Messagerie commerciale (SMS)

Dans l'interface web : /texts

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

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

Configuration

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

Chapitre 45

Transfert des briefings

Dans l'interface web : /settings

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

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

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.

Partie 4

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.

Chapitre 46

Appels en cours

Dans l'interface web : /calls

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

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

Ce que les administrateurs peuvent faire

ActionCe que cela fait
Raccrochermet fin à l'appel pour les deux côtés
Ouvrir la portepour un appel à partir d'une station d'entrée
Mettre en pause l'enregistrementpour 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))
Écouterentendre l'appel en silence
Chuchoterparler à l'agent uniquement ; l'appelant ne vous entend pas
Intervenirrejoindre 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é

Lorsqu'un appel se termine, il est déplacé vers Historique des appels (chapitre 47).

Chapitre 47

Historique des appels

Dans l'interface web : /history

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

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

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 :

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.

Chapitre 48

Chronologie client

Dans l'interface web : /timeline

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

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

Ce qu'il affiche

ÉlémentAvec
Appelsqui les a pris, combien de temps ils ont duré, ainsi que avec une transcription, un résumé, l'enregistrement et la transcription
Messageries vocalesleurs résumés
Textesles deux sens
Retours d'appeldemandés et s'ils ont été effectués
Notesles 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.

Chapitre 49

CRM : cartes d'appelants et journalisation des appels

Dans l'interface web : /settings

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

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

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 :

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.

Chapitre 50

Aperçu d'appel pour les superviseurs

Dans l'interface web : /quality

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

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

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.

Chapitre 51

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.

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

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.

Chapitre 53

Qualité de l'appel

Dans l'interface web : /quality

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

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

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

Chapitre 54

Coûts et budgets

Dans l'interface web : /costs

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

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

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.

Chapitre 55

Réputation de l'identifiant de l'appelant et appels personnalisés

Dans l'interface web : /reputation

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

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

Chapitre 56

Protection contre les spams et STIR/SHAKEN

Dans l'interface web : /settings

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

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

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 :

ChoixCe que l'appelant reçoit
Sonnance normalel'appel sonne comme n'importe quel autre (par défaut)
Test robotique d'abordBitVoice 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 ailleursrien 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é.

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

Partie 5

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.

Chapitre 57

Administrateurs

Dans l'interface web : /users

Les 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ôlePeut
Administrateurmodifier tout, lire les enregistrements, voir l'existence de chaque champ secret (mais jamais sa valeur)
Observateurvoir 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)).

Chapitre 58

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.

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

Configuration

Dans Paramètres (chapitre 14), Authentification unique :

  1. Inscrivez une application auprès du fournisseur, avec l'Adresse de redirection affichée ici.
  2. Remplir pour un fournisseur définit l'Émetteur pour les plus courants ; copiez l'ID client et le Secret client du fournisseur.
  3. Nommez les Groupes d'administrateurs et les Groupes de visionneurs du fournisseur. Réclamation de groupes est où le fournisseur les place (groups sauf si défini).
  4. Modifiez facultativement le Texte du bouton sur la page de connexion.
  5. Activez Utiliser l'authentification unique.

Fonctionnement

Chapitre 59

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 :

  1. 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.
  2. Serveur : ldaps://dc1.example.com (port 636), ou ldap://... 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.
  3. Compte de lecture et Son mot de passe : un compte autorisé à lire les personnes et les groupes (reader@example.com sur Active Directory). Le mot de passe peut être une référence au coffre de clés (Paramètres, Coffres de clés).
  4. 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.
  5. 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

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 :

Chapitre 60

Sécurité

Dans l'interface web : /security

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

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

Contre les devinettes de mots de passe

Contre la fraude

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 :

SituationCe qu'il fait
Un appel à l'étranger vers un pays que cette extension a appelé au cours des 90 derniers joursle laisse passer
Un premier appel vers ce pays en 90 joursle 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 extensionle 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'urgencele 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 :

Chiffrement

Qui peut faire quoi

Chapitre 61

Changements, sauvegardes et importation

Dans l'interface web : /changes

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

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

Comparaison et restauration

Exportation et importation

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.

Chapitre 62

Mises à jour

Dans l'interface web : /updates

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

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

Installation d'une mise à jour

  1. Téléchargez la nouvelle version et décompressez-la. À côté du programme se trouve sa signature de BioDream : bitvoice.sig, ou bitvoice.exe.sig sur Windows.
  2. Sur Mises à jour (chapitre 62), téléchargez le programme et son fichier .sig.
  3. Appuyez sur Installer. Par défaut, BitVoice attend qu'il n'y ait plus d'appels en cours ; vous pouvez également installer immédiatement.
  4. 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écutezLes mises à jour acceptent
une version, v0.1.3 ou ultérieureuniquement les programmes signés par BioDream
v0.1.2 ou antérieure, ou une compilation personnaliséen'importe quel programme : sans clé, un fichier .sig ne peut pas être vérifié et est ignoré
Chapitre 63

Plusieurs serveurs en un seul système téléphonique

Dans l'interface web : /servers

Deux serveurs BitVoice ou plus qui partagent une base de données PostgreSQL fonctionnent comme un seul système téléphonique :

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

Configuration

  1. Déplacez les données du premier serveur dans PostgreSQL : Paramètres, Base de données.
  2. 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.
  3. 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.
  4. Indiquez aux téléphones comment trouver les serveurs (ci-dessous).
  5. 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 :

Lignes fournisseurs. Dans chaque trunk, Partagé entre les serveurs indique comment :

Lorsqu'un serveur s'arrête

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

Chapitre 64

Où les données sont conservées (SQLite ou PostgreSQL)

Dans l'interface web : /settings

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

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

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.

Chapitre 65

Hébergement d'autres organisations

Dans l'interface web : /tenants

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

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

Quand l'utiliser

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

  1. Ouvrez Organisations (chapitre 65) et appuyez sur Ajouter une organisation.
  2. 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.
  3. 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.
  4. Définissez son premier administrateur : un nom d'utilisateur et un mot de passe d'au moins 12 caractères, ainsi que son pays.
  5. 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 demandeva à
à partir d'un téléphone s'enregistrant sur pbx.acme.examplel'organisation avec ce domaine
à partir d'un téléphone se connectant en tant que acme.100Acme, extension 100
à partir d'un fournisseur, pour un numérol'organisation dont le tronc provient et dont la route d'entrée a ce numéro
tout autre chosele 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

LimiteCe qui se passe à cette limite
Extensionsl'ajout d'une autre est refusé avec un message
Appels simultanésles nouveaux appels sont refusés (503) jusqu'à ce que l'un se termine
Stockageles nouveaux enregistrements et la boîte vocale ne sont pas conservés
Demandes d'IA par jourles 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.

Chapitre 66

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

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

Les codecs

CodecSonBande passanteUtilisé par
G.722HD (large bande)64 kbit/sla plupart des téléphones de bureau : le meilleur choix entre eux
G.711 µ-lawtéléphone64 kbit/sAmérique du Nord et Japon ; chaque opérateur
G.711 A-lawtéléphone64 kbit/sle reste du monde
OpusHD, tolère les pertes24 kbit/snavigateurs et applications mobiles
G.729téléphone, un peu plus rugueux8 kbit/sliens étroits, certains opérateurs
G.726 (40 kbit/s)téléphone ; transporte les tons de modem le mieux des taux G.72640 kbit/spasserelles, certains systèmes DECT
G.726 (32 kbit/s)proche du téléphone32 kbit/sbases DECT, anciennes passerelles
G.726 (24 kbit/s)entre 32 et 1624 kbit/scertains systèmes DECT
G.726 (16 kbit/s)rugueux16 kbit/sliens très étroits
AMR-WB (G.722.2)HD6,6 à 23,85 kbit/svoix HD des réseaux mobiles, interconnexions VoLTE
AMRtéléphone, mobile4,75 à 12,2 kbit/sréseaux mobiles, certains opérateurs et passerelles
iLBCtéléphone, tolère les pertes13,3 ou 15,2 kbit/sanciens logiciels de téléphonie et applications
Speextéléphone15 kbit/s (2,15 à 24,6)anciens logiciels de téléphonie, liens vers d'autres systèmes Asterisk
GSMplus rugueux13 kbit/sanciens logiciels de téléphonie et passerelles
G.723.1rugueux ; converti uniquement avec ffmpeg5,3 ou 6,3 kbit/strès anciens téléphones vidéo et passerelles
G.722.1 (Siren 7)large bande, transporté sans modification24 ou 32 kbit/stéléphones Polycom, téléphones vidéo et de conférence
G.722.1C (Siren 14)super-large bande, transporté sans modification24 à 48 kbit/stéléphones de conférence, systèmes de salle
G.719bande complète, transporté sans modification32 à 128 kbit/ssystèmes de salle de téléprésence
Codec2très faible bande passante, transporté sans modification0,7 à 3,2 kbit/sliens 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.

Chapitre 67

Microsoft Teams (Direct Routing)

Dans l'interface web : /trunks

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

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

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

  1. 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.
  2. Troncs, Ajouter, commencez par Microsoft Teams : entrez le nom public du serveur. Le tiroir indique si le certificat le couvre.
  3. 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.
  4. 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.

Chapitre 68

Importation

Dans l'interface web : /import

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

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

Déplacement de FreePBX

Le meilleur fichier est une sauvegarde FreePBX : elle contient tout, y compris les mots de passe SIP.

  1. 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.
  2. Téléchargez la sauvegarde à partir de sa ligne (le fichier est nommé comme 20261001-100000-1790000000-17.0.19-1234567.tar.gz).
  3. 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.
  4. 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é.
  5. 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.
  6. 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.
  7. 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é :

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 :

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 :

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.

Chapitre 69

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

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

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.

Chapitre 70

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.

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

AMI

L'interface de gestion sur le port TCP 5038 (AMI écoute sur : cet ordinateur uniquement par défaut). Pris en charge :

TypeNoms
ActionsConnexion (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'attenteQueueStatus, QueueSummary, QueuePause, QueueAdd et QueueRemove (ils connectent un agent à, ou le déconnectent de, toutes ses files d'attente), Agents
AutreAppelsEnAttente ; ConfbridgeListRooms, ConfbridgeList, ConfbridgeKick, ConfbridgeMute, ConfbridgeUnmute, ConfbridgeLock, ConfbridgeUnlock ; MailboxCount, MailboxStatus ; PauseMonitor, UnpauseMonitor ; UserEvent ; Reload (rien à recharger : les modifications s'appliquent immédiatement)
ÉvénementsNewchannel, 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êteCe qu'elle fait
GET /ari/channelsles appels en cours
POST /ari/channels?endpoint=PJSIP/100&extension=5551234sonner 100, puis appeler le numéro
DELETE /ari/channels/{id}raccrocher
POST /ari/channels/{id}/redirect?endpoint=PJSIP/102envoyer l'appel à 102
/ari/endpoints, /ari/bridges, /ari/asterisk/infotéléphones, ponts, version
/ari/eventsun WebSocket d'événements
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=rtp&format=ulawun 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êteCe qu'elle fait
POST /ari/channels/{id}/play?media=sound:goodbye,digits:42joue 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=%23enregistre (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=123envoie des touches au appelant
GET/POST /ari/channels/{id}/variable?variable=X&value=Yles variables du canal
POST /ari/bridges?bridgeId=room1, .../addChannel?channel=a,b, .../removeChannel, .../play, DELETEponts de mélange : tout le monde dans un entend tout le monde
POST /ari/channels/{id}/continue?extension=101lâ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=NAMEsonne 101 ; répondu, il entre dans l'application
GET /ari/applicationsles applications, si un programme est connecté, et leurs canaux
POST /ari/channels/{id}/mute?direction=in, DELETE .../mutemet en sourdine ce que dit l'appelant (in), ce qu'il entend (out) ou les deux
POST/DELETE /ari/channels/{id}/hold, .../moh, POST .../silencemusique d'attente pour l'appelant (ChannelHold, ChannelUnhold), ou silence
GET/POST /ari/channels/{id}/variablesplusieurs variables à la fois (ChannelVarset)
POST /ari/channels/{id}/move?app=otherpasse 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=NAMEun 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 .../dialun 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_statisticspaquets et octets envoyés et reçus, perte et gigue
POST /ari/playbacks/{id}/control?operation=pausemet 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, .../mutecopie un enregistrement ; met en pause ou en sourdine un enregistrement live
POST /ari/applications/{app}/subscription?eventSource=deviceState:Custom:lamp, PUT .../eventFilterabonnements (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=0comptes de messagerie vocale des extensions (100@default), et boîtes aux lettres qu'un programme conserve lui-même
GET /ari/soundsles 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=Hiun texte sur les téléphones de l'extension 100
POST /ari/events/user/{name}?application=NAMEun événement utilisateur à une application (ChannelUserevent)
GET /ari/asterisk/ping, GET/POST /ari/asterisk/variable, GET /ari/asterisk/modulesping, 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 :

ChampCe que c'est
Nom du scriptcomment les destinations le nomment
Adresseun 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
Argumentspassés sous la forme agi_arg_1, agi_arg_2 …
Numéro à composerfacultatif : les extensions le composent comme n'importe quel numéro
Recours de secoursoù l'appel est acheminé lorsque le script se termine sans choisir de numéro, ou ne peut pas être joint
Exécution la plus longueun script s'exécutant plus longtemps est arrêté (par défaut une heure)
EAGIpour 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) :

CommandesNotes
ANSWER, HANGUP, CHANNEL STATUS, NOOP, VERBOSEHANGUP avec un nom de canal uniquement met fin à l'appel du script
STREAM FILE, CONTROL STREAM FILE, GET OPTION, GET DATA, WAIT FOR DIGITtouches 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 DATETIMEavec un service de synthèse vocale dans les Paramètres, l'IA les prononce ; sans, les chiffres sont lus à partir des Sons
RECORD FILEs=N silence, un beep, touches d'échappement ; le fichier atterrit dans la bibliothèque de sons
SET VARIABLE, GET VARIABLE, GET FULL VARIABLECALLERID(num), CALLERID(name), EXTEN, UNIQUEID, CHANNEL … et expressions ${NAME}
DATABASE GET, PUT, DEL, DELTREEbase 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 MUSICSET EXTENSION est où l'appel est acheminé lorsque le script se termine
SPEECH CREATE … SPEECH RECOGNIZEutilise 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
EXECAnswer, 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é.

Chapitre 71

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

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

Action (avec Laisser les assistants agir, et un jeton qui peut modifier des choses) :

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é

Chapitre 72

Archives

Dans l'interface web : /archive

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

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

Configuration

  1. Sur Archive (chapitre 72), choisissez Où archiver : Amazon S3 ou Azure.
  2. 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.
  3. Pour Azure : une URL SAS de conteneur avec autorisation d'écriture, et un Dossier dans le conteneur facultatif.
  4. 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.

Chapitre 73

Conservations légales

Dans l'interface web : /holds

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

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

Ajout d'une conservation

Sur Conservations légales (chapitre 73), appuyez sur Ajouter :

ChampCe que c'est
Nomle nom de l'affaire
Raisonpourquoi, pour le dossier
Numérosles 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

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.

Chapitre 74

Métriques : Prometheus, OpenTelemetry, Grafana, SNMP et enregistrements d'appels

Dans l'interface web : /settings

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

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

Envoyer un enregistrement de test essaie le serveur Syslog et la base de données avec les paramètres enregistrés.

Chapitre 75

Générateur d'appels

Dans l'interface web : /loadtest

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

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

Exécution d'un test

ParamètreCe que c'est
Numéro à appelerun numéro à l'intérieur de BitVoice : une extension, un groupe, une file d'attente, un menu
Appels provenant dele numéro de l'appelant que les appels affichent
Répondre en tant queune 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)
Appelscombien au total
En même tempsle 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ésultatCe qu'il indique
Répondu, Échecet Pourquoi les appels ont échoué, par raison
Temps de réponse, médiane et 95 %combien de temps les appelants ont attendu
Perte audiola part des paquets audio qui n'ont jamais été reçus
Score audioune estimation de la qualité audio (MOS) : 4 et plus est bon, moins de 3,6 est mauvais
Jitter, 95 % des appelscombien 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 appella 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 pausecombien 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 tempsun graphique de la charge
Chapitre 76

Traçage SIP

Dans l'interface web : /trace

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

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

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 voyezCela signifie généralement
REGISTER répond 401, puis rienle téléphone n'a pas le mot de passe, ou a le mauvais
REGISTER répond 403l'adresse est interdite, ou le téléphone s'enregistre sous une autre extension
INVITE répond 404aucune route ne correspond au numéro composé (Route d'appel (chapitre 8))
INVITE répond 403 par le fournisseurle fournisseur refuse l'ID de l'appelant ou le numéro
486l'autre côté est occupé
488les deux côtés n'ont pas de codec en commun (Codecs (chapitre 66))
200 OK, puis BYE après environ 30 secondesl'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 rienle son est bloqué : vérifiez l'adresse publique dans les paramètres, et les ports multimédias dans le pare-feu
Partie 6

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.

Chapitre 77

Appels 911 (le profil 911)

Dans l'interface web : /psap

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

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

Configuration.

  1. Dans Troncs (chapitre 7), ajoutez le tronc de votre fournisseur ESInet (ou le noyau ESRP de NG911) et activez À partir de l'ESInet.
  2. Dans Routing des appels (chapitre 8), envoyez ses appels à vos préposés aux appels : une file d'attente, ou un groupe de sonnerie.
  3. 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 :

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 :

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

Chapitre 78

Console de dispatch radio

Dans l'interface web : /radio

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

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

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

Chapitre 79

**Services du noyau NG911** (ECRF, ESRP, LVF, BCF, LIS, journalisation)

Dans l'interface web : /core

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

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

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:

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.