BitVoice マニュアル
目次
- パート 1. はじめに
- パート 2. 通話の行き先
- パート 3. 日常の通話
- パート 4. 顧客と洞察
- パート 5. BitVoice の実行
- 57. 管理者
- 58. シングルサインオン
- 59. 会社ディレクトリ (Active Directory と LDAP)
- 60. セキュリティ
- 61. 変更、バックアップ、インポート
- 62. 更新
- 63. 複数のサーバーを1つの電話システムとして
- 64. データを保存する場所(SQLiteまたはPostgreSQL)
- 65. 他の組織のホスティング
- 66. コーデックと音声
- 67. Microsoft Teams(Direct Routing)
- 68. インポート
- 69. コードとしての構成
- 70. Asterisk との互換性 (AMI、ARI、AGI)
- 71. AI アシスタント (MCP)
- 72. アーカイブ
- 73. 法的保持
- 74. メトリクス: Prometheus、OpenTelemetry、Grafana、SNMP、通話レコード
- 75. 通話ジェネレーター
- 76. SIPトレース
- パート 6. 公共の安全性: ラボトラック
はじめに
新規インストールから動作する電話システムまで: 拡張線、電話、電話会社、通話の行き先、オフィスからの緊急通話、およびすべてが準備できていることを確認する方法。
はじめに
/BitVoiceは1つのプログラムで完結した電話システムです: 電話がサインインする交換機、呼び出し先が移動するメニューとキュー、ボイスメール、録音、会議室、ファックス、および電話会社への接続。すべてはブラウザで設定され、このマニュアルで説明されている画面で行われます。編集する構成ファイルはありませんし、インストールするものもありません。
必要なもの
- 実行するコンピュータ: 小規模オフィスのサーバー、仮想マシン、クラウドインスタンス、または最初の確認のために自分のラップトップ。Linux、macOS、Windowsすべてで動作します。Raspberry Pi 4は小規模オフィスを動かします。
- 電話: Yealink、Poly、Grandstream、またはSnomのデスク電話は自動的に設定されます; 他のSIP電話またはソフトフォンは独自の設定で動作します; また、すべてのブラウザは電話でもあります。
- トランク (電話会社とのアカウント) を外部番号に電話し、電話を受けるために。トランクなしで開始できます: 拡張番号は互いに電話し、エコーテストも可能です。
最初の開始
BitVoiceを開始し、印刷されたアドレスを開きます (デスクトップではブラウザ自体が開きます)。WebインターフェイスはHTTPSのみで、このコンピュータでも。独自の証明書をインストールするまで (設定、証明書)、BitVoiceは自己生成の証明書を使用するため、ブラウザは一度警告します: サイトに続行することを選択してください。セットアップウィザードは4つの質問をします: 組織の名前と国、最初の管理者のパスワード、最初の拡張番号、および電話会社 (ある場合)。国は緊急番号、呼び出し音、および電話番号の書き方を決定します。
最初の1時間
- 拡張番号: 1人または1台のデスクにつき1つ。各々に番号とSIPパスワードがあります。拡張番号を開く (章 3)
- 電話: デスク電話、ソフトフォン、またはブラウザ電話を各拡張番号に接続します。電話を開く (章 4)
- トランク: 電話会社のアカウントで、外部番号に電話し、電話を受けることができます。トランクを開く (章 7)
- 呼び出しルーティング: 外部からの呼び出し先 (人、リンググループ、メニュー) および外部呼び出しに使用するトランク。呼び出しルーティングを開く (章 8)
- ヘルスはまだ欠けているものを示します。緊急呼び出しを最初に。ヘルスを開く (章 13)
次に、テスト呼び出しを行います: どの電話からでも*43をダイヤルします。エコーテストです。自分自身の音が戻ってくるので、音が両方向に動作することを証明します。
1つのコマンドでインストール
curl -fsSL https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.sh | sh
WindowsのPowerShellで:
irm https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.ps1 | iex
It downloads the latest release for the computer, checks it against the release's SHA-256 sums and BioDream's release signature (with OpenSSL 3, or else with OpenSSH's ssh-keygen, which Windows 10 and 11, macOS and Ubuntu 20.04 have; ssh-keygen checks releases from v0.1.14 on), and installs it as a service that starts by itself:
- Linux:
/usr/local/bin/bitvoice, abitvoicesystem user, data in/var/lib/bitvoice, the systemd servicebitvoicewith the web interface on port 443. When ufw or firewalld is on, it opens 443, SIP (5060, 5061) and the calls' audio ports (10000 to 20000 UDP). It prints the address to open and the setup code the wizard asks for from another computer. - macOS: BitVoice in your Applications folder (
~/Applications/BitVoice.app), started when you sign in, the web interface on port 8443, data in~/Library/Application Support/BitVoice(open to you alone) and logs in~/Library/Logs/BitVoice(bitvoice.log, kept under 10 MB). Open BitVoice from Launchpad or Spotlight to reach the web interface; when it was stopped, that starts it again. It runs undercaffeinate, so the Mac does not go to sleep while BitVoice runs: a sleeping Mac answers no calls, and even its short maintenance sleeps stop everything for many seconds. The screen may still turn off. Run by hand, usecaffeinate -i -s ./bitvoicefor the same. For a Mac that answers calls while nobody is signed in, install withsudo(curl -fsSL https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.sh | sudo sh): then BitVoice is in/Applications, starts with the Mac, runs as a hidden user of its own (_bitvoice), serves the web interface on port 443, keeps its data in/Library/Application Support/BitVoiceand its logs in/Library/Logs/BitVoice, and the Mac's firewall, when on, lets it accept connections. One of the two per Mac: the installer refuses the other while one is there. When the Mac's firewall is on, a BitVoice installed for you asks once whether it may accept incoming connections: allow it, so phones can connect. If something already uses the port, the installer names it and stops (choose another withBITVOICE_HTTPS=:8444).sh install.sh --uninstall(withsudofor the Mac's own) removes it and keeps the data;--purgeremoves the data and logs too. Tried on macOS 26 (Apple silicon), installed for one person: installed, signature checked with the Mac's own ssh-keygen, a second start on the same data refused, back after the program was killed, started again from the app, upgraded in place, a tampered program refused, a port in use refused, uninstalled keeping the data, reinstalled on it, and purged with nothing left. The install for the whole Mac (sudo) is tried on every change on GitHub's macOS machines (Apple silicon): running as_bitvoiceon port 443, a user install beside it refused, back after the program was killed, upgraded, purged with nothing left (the hidden user too). Intel Macs are not tried yet. - Windows: as administrator,
C:\Program Files\BitVoice, started with Windows, data inC:\ProgramData\BitVoice, and a firewall rule for private and domain networks; otherwise for you alone, started when you sign in. It works in Windows PowerShell 5.1 (what Windows Server has) and in PowerShell 7, and in 5.1 started from inside 7. BitVoice writes its log tobitvoice.login the data folder (kept under 10 MB, the older part inbitvoice.log.1), and the installer prints the setup code the wizard asks for from another computer. Windows calls a new Wi-Fi or network Public until told otherwise, and the firewall rule lets nothing in there: for a home or office network the installer says how to make it Private (Settings, Network & internet, the network's Properties); for a cloud server it prints the rule to add (open the ports in the provider's firewall too). Installed as administrator, the data folder is readable by administrators only (it holds the database and the keys), and the Start menu's BitVoice opens the web interface; installed for you, the Start menu starts BitVoice, or opens it when it is already running. Either way it is in Settings, Apps, Installed apps, which removes it and asks whether to remove its data too. Tried on Windows 11 (as administrator and not) and on Windows Server 2022 on Amazon EC2: installed, reached from outside, running again after a restart. - Tried on: Ubuntu 24.04 and 20.04, Debian 12 and Fedora 42 (each with systemd): installed, signature checked, a second start on the same data refused, back after the program was killed, upgraded in place, a tampered program refused, uninstalled keeping the data, reinstalled on it, and purged with nothing left.
- Linux on a cloud server: the address it prints is the machine's own, private one; the installer says so. Open the server by its public address or name, with 443, SIP and the audio ports open in the provider's firewall.
同じコマンドを再度実行してアップグレードします(またはUpdates (章 62)を使用)。sh -s -- --version v0.1.5(パイプの後)でリリースを選択します。--uninstallでプログラムとサービスを削除し、データを保持します。--purgeでデータも削除します。Windowsの場合、スクリプトを保存し、.\install.ps1 -Version v0.1.5、-Uninstall、または-Purgeを実行するか、インストール済みアプリで削除します。インターネットに接続されていないサーバーの場合、リリースのアーカイブとSHA256SUMSをフォルダーにコピーし、BITVOICE_FROMを設定します。
どこで動作する
BitVoiceはLinux、macOS、Windowsで動作します。
| システム | 起動方法 | データの場所 |
|---|---|---|
| Linux | ./bitvoice(またはリリースのsystemdサービス) | ~/.config/BitVoice |
| macOS | ./bitvoice | ~/Library/Application Support/BitVoice |
| Windows | bitvoice.exeをダブルクリック | %APPDATA%\BitVoice |
Windowsでは、BitVoiceを使用中に開いたウィンドウを保持してください(ウィンドウを閉じるとBitVoiceが停止します)。また、Windowsがネットワークの使用を許可するかどうかを尋ねた場合は、電話が接続できるようにプライベートネットワークを許可してください。-dataはデータを他の場所に配置します。-httpsおよび-sipはアドレスとポートを選択します。-log FILEは、ウィンドウに表示されるすべての内容をファイルに書き出すため、ウィンドウが監視されていないコンピュータで使用します。
使用するポート
| ポート | 用途 |
|---|---|
| 5060 UDPとTCP | SIP: 電話とトランク |
| 5061 TCP | SIP over TLS(暗号化シグナリング) |
| 4569 UDP | IAX2トランク、設定後にのみ |
| 1720 TCP | H.323トランク、設定後にのみ |
| 2000 TCP | Skinny(SCCP)電話、有効にした場合のみ |
| 2727 UDP | MGCPゲートウェイ、有効にした場合のみ |
| 10000–20000 UDP | 通話の音(RTP)、設定で指定 |
| 8443 TCP | このWebインターフェイス、HTTPSのみ(平文HTTPはHTTPSに転送) |
別の電話システムがすでに5060を使用している場合、BitVoiceは次の空きポートを使用し、ヘルスチェックで通知します。
Webインターフェイスのすべて
すべての設定には画面があり、すべての画面にはこのマニュアルの章があります。設定ファイル、コマンドライン、または別のツールは必要ありません。自動化の場合、同じ画面はREST APIとして使用でき、設定はGitのファイルに従うことができます(Configuration as code (章 69))が、どちらも必須ではありません。
BitVoiceの目的
BitVoiceは、最初にオフィスとコンタクトセンターの電話システム、およびプロバイダーのホスト電話サービスです:このマニュアルの最初の5つのパートに記載されているすべてのものです。911応答ポイントプロファイル、ラジオディスパッチコンソール、NG911 Core Servicesは、別のラボとデザインパートナートラック(Public safety (章 77))です:これらは、設定で有効にされるまでメニューから除外され、ライブ使用には認定されていません。自分の電話からの緊急通話は、そのトラックの一部ではありません。すべての電話システムで最初の開始から動作します。
操作の方法
- どこでも⌘K(Ctrl+K)を押して画面にジャンプするか、拡張子の名前または番号を入力して開きます。
- 電話では、メニューは左上の☰ボタンにあります(右上には検索があります)。ページを選択すると、ページは再び閉じられます。
- すべての画面には、右上にこのマニュアルの章を開くヘルプリンクがあります。
- 変更は、設定のすべてのバージョンを保持します。変更内容を確認し、元に戻すことができます。
- フッターのメニューには、3つのテーマ(ミッドナイト、ダーク、ライト)があります。
各部分の成熟度
各部分がどの程度証明されているか、明確に。 フィールドテスト: 実際のシステムと実際のネットワーク(Amazon EC2、インターネット、実際のプロバイダーサービス)に対して実行されました。 リファレンスに対してチェック: 独立した実装または標準の独自のデータに対してテストされました。 ソフトウェアテスト: BitVoiceの独自のテストとブラウザーテストのみ、まだ実際の機器やアカウントではテストされていません。 ラボ: 公共安全部分、ライブ使用には認定されていません。
| エリア | 成熟度 | 依存先 |
|---|---|---|
| SIP トランク: 登録、着信・発信、発信者 ID、忙線、キー (RFC 4733) | フィールドテスト済み | 商用キャリア、SIP.US (デモアカウント、EC2 から): 公共電話網への発信と着信 (UDP と TLS で、キャリアの証明書を確認)、MOS 4.39、パケットロスなし。T38Fax (FAX 着信、UDP 上の登録)。Asterisk をキャリアとして、インターネット越しの EC2 上で、MOS 4.4。Kamailio 5.7 (TLS 上のダイジェスト認証付き登録、双方向通話、キー) と FreeSWITCH 1.11 (TLS と SRTP、双方向通話、G.722 から G.711) を相手先として、MOS 4.39 |
| デスクフォン (SIP) | フィールドテスト済み | Asterisk をデスクフォンとして、インターネット越しに。実際の Yealink、Poly、または Grandstream ハンドセットはまだ試していない |
| ブラウザフォン (WebRTC) | フィールドテスト済み | EC2 外から、Chromium ブラウザで音のやり取りを行った |
| 2 台のサーバー、1 台の PostgreSQL、フェイルオーバー | フィールドテスト済み | EC2 上で、強制終了と計画的な停止: 通話は継続され、プロバイダーラインは移動した |
| 1 コマンドインストール | フィールドテスト済み | Ubuntu 24.04 (x86、Arm)、Debian 12、Amazon Linux 2023、Windows Server 2022、Windows 11 (管理者としておよび管理者以外として、PowerShell 5.1 と 7 で)、Ubuntu 20.04 と Fedora 42 (コンテナ内)、macOS 26 (Apple Silicon 上、1 人のユーザー向けと CI 用の sudo で); 再起動後も機能する |
| 容量 | フィールドテスト済み | 同時通話 2,000 件、パケットロスなし、MOS 4.41、16 vCPU の c7i.4xlarge (約 10 vCPU 使用) 上で; c7g.large、c7i.large、t4g.small、M4、Lightsail nano 上では同時 200 件。2,000 件の場合、ジッター 4.0 ms (95% の通話)、最大パケット間隔 74 ms、最大 GC パウゼ 4.2 ms |
| FreePBX への移行 (インポート) | フィールドテスト済み | 実際の FreePBX 17.0.33 バックアップ (70 MB) を全てインポート; FreePBX 独自の形式からのものも |
| AI トランスクリプト、サマリー、レセプショニスト | フィールドテスト済み | 実際のモデルを OpenRouter 経由で使用 |
| 言語モデルなしの事実とサマリー | ソフトウェアテスト済み | 発明された 911 通話のみ: 閉じたセットで 43 件中 23 件 (53%) の事実、41/41 件のトレーニングデータ、ホールドアウト 27/40 件。実際の通話では測定していない |
| サーバー上の音声からテキスト (whisper) | フィールドテスト済み (macOS と Linux) | whisper-server 1.9.5 を BitVoice で実行: Mac と Ubuntu (EC2 上の x86-64) で、ライブ通話とボイスメールのトランスクリプトを電話アプリのフィールドテストで書き込んだ; すべてのプラットフォーム向けのダウンロードを CI でビルドして試した |
| S3 へのアーカイブ、AWS Secrets Manager からのシークレット | フィールドテスト済み | 実際の AWS、独自の SigV4 |
| SNMP 監視とトラップ | フィールドテスト済み | net-snmp の snmpwalk と snmptrapd |
| Let's Encrypt | フィールドテスト済み | 公開デモの証明書を発行して更新 |
| マシンイメージ (AWS) とコードとしての構成 | フィールドテスト済み | Ubuntu 24.04 から deploy/cloud/build-images.sh でビルドした EC2 イメージ: それから作成した各サーバーは新規に開始される; deploy/terraform と OpenTofu 1.13 (作成、変更、ドリフトなし、破棄)。Azure イメージはまだ試していない |
| IAX2 トランク | リファレンスに対して確認済み | Asterisk 23 |
| フル ICE (STUN と TURN クライアント) | リファレンスに対して確認済み | Chromium の ICE エージェント (ホスト候補とリレーのみ)、JsSIP ソフトフォンと BitVoice のオファー、coturn 4.18 と BitVoice独自の TURN サーバーをリレーとして使用、Chromium の mDNS ホスト名を解決。まだ、実際の NAT ルーター背後のサーバーから試していない |
| ICE 再開 (通話中のネットワーク変更) | リファレンスに対して確認済み | Chromium がブラウザフォン通話で ICE を再開 (BitVoice を ICE-lite とフルエージェントとして)、SIP.js 0.21 が SIP 上の WebSocket で再 INVITE によって再開: 双方向の新しい資格情報、双方向の新しい候補ペア、再開中に毎秒半分の間隔で音を送信。まだ、Wi-Fi からモバイルネットワークへの実際の移動は試していない |
| SIP History-Info と Diversion (転送通話) | リファレンスに対して確認済み | Asterisk 20 の PJSIP (双方向): Asterisk の転送通話を BitVoice が読み取り、BitVoice の転送を Asterisk の REDIRECTING() が History-Info から読み取る; RFC 7044 エントリを転送時に保持して拡張。まだ、キャリアまたは Teams から送信されたものは試していない |
| 会社ディレクトリ (LDAP、Active Directory) | リファレンスに対して確認済み | OpenLDAP 2.4 (StartTLS と LDAPS、1,203 人の読み取り、グループ、認証)、Samba 4 の Active Directory (LDAPS、1,000 を超えるページング、無効化されたアカウントを除外、リンググループとロールのためのネストされたグループ)。まだ、Microsoft の Windows Server ドメインコントローラーに対しては試していない |
| ARI (Asterisk REST インターフェイス) | リファレンスに対して確認済み | Asterisk の公開 ARI のすべての操作を呼び出し、回答をモデルが必要とするフィールドと比較; ari-client 2.2.0、Asterisk の JavaScript ライブラリ、/ari/api-docs の読み取りとアプリケーションの実行 |
| ビデオ会議 (SFU、シミュキャスト) とスクリーンシェア | リファレンスに対して確認済み | 3 つの Chromium ブラウザが 1 つのルームで、各々が 3 つのサイズ (VP8 シミュキャスト) を送信して受信; タイルの拡大と縮小に合わせてサイズを切り替える。カメラと共有スクリーン (Chromium のスクリーンキャプチャ) を H.264 ルームで。まだ、Firefox または Safari、インターネット越し、または 3 つ以上のカメラで試していない; H.264 シミュキャストはブラウザーの順序によってのみレイヤーを選択する |
| AGI と FastAGI (Asterisk ゲートウェイ インターフェイス) | リファレンスに対して確認済み | すべてのコマンドの回答を Asterisk 20.6 と比較 (FastAGI 上); FastAGI サーバーを pyst2 で書き、呼び出しを実行; EAGI オーディオをプログラムに。まだ、実際の IVR では試していない |
| MCP 上の AI アシスタント | リファレンスに対して確認済み | 公式 MCP TypeScript SDK (1.32.2) をクライアントとして使用 (ツールのリストと API トークンによる呼び出し、Streamable HTTP (プロトコル 2025-11-25) 上の OAuth 認証のエンドツーエンド (発見、登録、PKCE、トークン、更新)); Chromium 上の同意ページ; stdio ブリッジをテストサーバーに対して。まだ、Claude、ChatGPT、または他のアシスタント自体は試していない (インターネットからアクセス可能なサーバーと信頼できる証明書が必要) |
| Microsoft 365 と Google Workspace (連絡先とカレンダー) | ソフトウェアテスト済み | Microsoft Graph (ユーザー、組織連絡先、カレンダーの getSchedule、クライアント資格情報トークン) と Google の People API、Calendar freeBusy、JWT ベアラー トークンのスタンドインに対して (これらはそれぞれの公開リファレンスから作成); スタンドインは BitVoice が送信するもの (JWT の署名とクレーム、ページング、リクエストボディ) を確認。まだ、実際の Microsoft 365 テナントまたは Google Workspace ドメインでは試していない |
| 14 言語での画面 | ソフトウェアテスト済み | コードから約 5,000 個のテキストピース (JSX テキスト、文字列、サーバーメッセージ) を Llama 3.3 70B で 13 言語に機械翻訳; チェックにより 99% が保持された (同じプレースホルダー、住所、コードが変更されていない); ドイツ語はブラウザーテスト (サインイン、メニュー、検索、フォーム、英語への戻り) で描画。まだ、どの言語でも人間によるレビューは行っていない |
| H.323 トランク | リファレンスに対して確認済み | H323Plus 1.28 (simph323 で WAV ファイルの再生と録音) を EC2 上で使用: 双方向の通話で、Fast Connect と G.711 を使用し、双方が相手の音を聞く、MOS 4.39; Asterisk の chan_ooh323 でも呼設定が可能 (Asterisk 22 では chan_ooh323 の音が壊れている) |
| SIP over WebSocket | リファレンスに対して確認済み | JsSIP と SIP.js |
| コーデック: GSM、G.726、iLBC、MP3 ホールドミュージック | リファレンスに対して確認済み | ffmpeg、RFC 3951 リファレンスプログラム、minimp3 をサンプルごとに |
| コーデック: G.711、G.722、G.729、Opus、Speex | リファレンスに対して確認済み | G.711 と G.722 をバイトごととサンプルごとに spandsp で比較; G.729 のデコーダーを ITU のテストベクターセット (bcg729 ではできない) でサンプルごとに比較; Opus パケットを libopus 1.6.1 でデコードし、libopus のパケットを libopus でデコード; Speex パケットと音は libspeex 1.2.1 と同一; Android アプリで Opus 通話 |
| コーデック: AMR-NB、AMR-WB | リファレンスに対して確認済み (既知のギャップあり) | AMR-WB は opencore-amr とサンプルごとに一致し、3GPP のテストシーケンスでは 3GPP のデコーダーと完全に一致 (167/198)、測定可能な低下なし。AMR-NB エンコーダーは opencore-amr とフレームごとに一致するが、デコーダーは近いが完全に一致しない (約 31 dB 離れており、opencore から)。両方とも goamr ライブラリから |
| コーデック (変更なし): G.722.1 (Siren 7)、G.722.1C (Siren 14)、G.719、Codec2 | ソフトウェアテスト済み | 自前のテスト: ビットレートまたはモードで提供され、回答され、双方向のパケットはバイトごとに一致。G.722.1 と G.719 には自由なリファレンスコードがないため、変換は行わない。まだ、実際の Polycom またはルームシステムでは試していない |
| ISDN PRI と BRI、T1/E1 | リファレンスに対して確認済み | libpri (Asterisk の)、双方向; DAHDI 3.4 カーネルドライバ経由で EC2 上の Asterisk 20 の chan_dahdi (電話会社として): 双方向の通話で番号と名前を使用、23 チャネルすべてを同時に使用、MOS 4.39。まだ、物理カードまたは線路は試していない |
| MFC-R2、E&M | リファレンスに対して確認済み | OpenR2; MF トーンは自前のテストで。まだ、実際のカードまたは線路は試していない |
| SS7 (ISUP、MTP、リンクセットの変更) | リファレンスに対して確認済み | libss7 (Asterisk の chan_dahdi ライブラリ)、ITU、ANSI。まだ、実際のキャリアリンクは試していない |
| FAX (T.30、T.38) | フィールドテスト済み | FAX キャリア、T38Fax (無料トライアル、EC2 から): BitVoice が T.38 で公共電話網に FAX を送信して受信、2 ページ、14,400 ビット/秒、ページが完全に到着; ユーザー名とパスワードでの登録。Asterisk (spandsp を使用) と T38Fax の間で FAX を中継、2 ページ、14,400 ビット/秒、双方向。spandsp (Asterisk 20 を使用) で T.38 上の FAX 受信と送信、エラー訂正付き。まだ、ハードウェア FAX ゲートウェイは試していない |
| プロビジョニング: Yealink、Poly、Grandstream、Snom、Fanvil、Cisco、Mitel、Sangoma、Algo、CyberData | ソフトウェアテスト済み | ベンダーのドキュメント形式; まだ、実際のハンドセットでは試していない |
| Skinny (SCCP) フォン、MGCP ゲートウェイ | リファレンスに対して確認済み | Skinny: mwicat/sccp ライブラリのオープンソースフォン、Wireshark のディスセクターですべてのメッセージを読み取り、Asterisk の chan_skinny のサイズと同じ; MGCP: Yate の MGCP ゲートウェイ (再起動、暫定的な回答、確認; アナログポートがないため、通話はなし)。まだ、Cisco フォンまたはゲートウェイハードウェアは試していない |
| Microsoft Teams Direct Routing | ソフトウェアテスト済み | Microsoft の公開 Direct Routing SIP ルールに従ったシミュレートされた Microsoft プロキシに対して (OPTIONS、Contact、user=phone、クライアント証明書、Teams によって要求される転送による REFER と x-m、x-t); まだ、Teams テナントは試していない (Microsoft では Teams Phone ライセンスを無料で提供していない) |
| ホテル (FIAS) | リファレンスに対して確認済み | Oracle の FIAS 2.20.23仕様書に従った BitVoice が送信するすべてのレコード; 自前のテスト。まだ、Opera 自体では試していない |
| テキストメッセージ、WhatsApp、Messenger、Web チャット | リファレンスに対して確認済み (Twilio、Telnyx、Bandwidth、Vonage、TextMagic、WhatsApp) | Twilio、Telnyx、Bandwidth、Vonage、TextMagic を介したテキストメッセージ、WhatsApp テキスト、テンプレート、テンプレートリストを、提供元の OpenAPI 仕様書 (Stoplight Prism、仕様書に従わないものは拒否) から作成したモックに対して。Vonage では、キーは HTTP Basic に含める必要がある (フォームでは不要)。SignalWire は Twilio API を話す; Plivo、Flowroute、VoIP.ms、Messenger には公開仕様書がないため、ドキュメントから作成したスタンドインに対して確認。まだ、実際のアカウントでは試していない |
| CRM 呼び出しカード、Azure Blob、Azure Key Vault | リファレンスに対して確認済み | EspoCRM (オープンソース CRM、Docker 内) を呼び出しカードとして; Microsoft の Azurite エミュレーターを使用した Blob アップロード (コンテナーの SAS、拒否); Lowkey Vault を使用した Key Vault とマネージド ID。まだ、Azure 自体またはホスト CRM では試していない |
| スパムフィルタリング: ロボットテスト、未知の発信者、スパムデータベース、*32、提案 | ソフトウェアテスト済み | BitVoice の独自テスト: SIP 上のプロバイダーからロボットテストを受け、キー (RFC 4733) を押してパスまたは失敗;既知、常に許可された発信者と緊急の呼び戻しを同時に呼び出し; Twilio の Lookup と Nomorobo アドオンの方法で回答するスタンドインに対するスパムデータベース; デスクフォンから *32; 通話履歴からの提案; ブラウザーテストでの設定。まだ、実際のロボコールまたは有料データベースでは試していない |
| iPhone と Android アプリ | フィールドテスト済み (Android) | Android: Google Pixel 8 (Android 16、Wi-Fi) で、BitVoice (EC2 上、Let's Encrypt 証明書) に対して、リンクでペアリング、Android の呼び出し通知で鳴り、回答、双方向のオーディオ、画面オフとバックグラウンドで接続を維持 (呼び出し中の通知、ハングアップ); バックグラウンドではプッシュ通知なし。AWS Device Farm の Google Pixel 11 (Android 17): ペアリング、鳴り、回答、発信; Opus、MOS 4.1。iPhone: アプリ (SwiftUI、CallKit、PushKit VoIP) を最新の SDK (Xcode 27) でビルドし、サーバーが Apple VoIP プッシュ (APNs、ES256) に署名; Android と同じ実デバイスの修正と App Store リスティング (ios/AppStore)。両アプリはフルエクステンション: 転送 (盲、REFER 経由)、ホールド、2 回目の呼び出し、キーパッドとミュート、レセント、視覚ボイスメール (トランスクリプト付き)、スタッフのビジーランプ、連絡先、スタッフチャット (同僚のプレゼンス、ダイレクトメッセージ、ルーム、バックグラウンドでの通知とアプリ終了時のプッシュ)、ビデオルームピッカー (SFU ルームの一覧、参加者、参加として表示) とライブ AI トランスクリプト (AI.LiveCallTranscripts); 転送、ホールド、ライブトランスクリプト、チャットの同僚へのリーチ、ルームの一覧、ルームの参加、チャットのプッシュはそれぞれエンジンレベルのテストまたは API テストまたはブラウザーテストでカバー。Pixel 8 (2026-10-30、デバッグビルド、EC2、Let's Encrypt): 通知から鳴り、回答、ホールドと再開 (Android の呼び出し状態に従う)、Android の呼び出しシステムから発信、双方向の Opus、MOS 4.38、パケットロスなし; ビデオルームに参加し、カメラ (初回使用時に要求) を使用してデスクトップカメラを見た; バックグラウンドでのチャットメッセージが通知され、チャットを開いた。ホールドと転送はネイティブの呼び出し画面 (CallKit、Telecom) に到達。まだ、iPhone では実行しておらず、Apple Developer アカウントが必要 |
| 911 プロファイル、ラジオコンソール、NG911 Core Services、発信者ビデオ | ラボ | NENA のスキーマとサンプルデータ、Wireshark、spandsp、OpenSSL、ExifTool、ffmpeg、NIST P25 キャプチャ (mbelib で解包された IMBE ボイスフレーム: ピッチ、ハーモニクス、ボイス、振幅と同じ); まだ、実際の ESInet、P25 システム、PSAP CAD では試しておらず、認定も受けていない |
| P25 フェーズ 2 ハーフレート音声 (AMBE+2) | 提供なし | 2028 年まで特許により使用不可 |
| Ed448 署名 (NENA) | 提供なし | Go の標準ライブラリにはないため、BitVoice は独自の暗号化を実装しない; Ed25519 を使用 |
| SS7 シグナル転送 (STP)、SCCP、TCAP | リファレンスに対して確認済み | OsmoSTP 2.3.0 を M3UA/TCP で使用し、libosmo-sigtran の SCCP エコーユーザーを背後で使用: UDT と XUDT を双方向に、UDTS を返し、STP を介したグローバルタイトル変換、リンクセット上のスイッチが IP を介してエコーに到達。TCAP は libosmo-asn1-tcap を使用。ITU のみ; SCTP、接続指向の SCCP、SCCP 管理はなし。まだ、実際のキャリアでは試していない |
| MFC-R2 中国バリアント (中国 No. 1) | ソフトウェアテスト済み | 呼のすべての信号を Cisco の公開中国テーブルと呼のシーケンス (KA、KD、グループ B は KD によって、C と D ビット 11) と比較。OpenR2 の中国バリアントは自ら矛盾しているため、テスト対象となるプログラムがない; まだ、実際の線路では試していない |
| ALI over PAM または E2 | 提供なし | PAM は Intrado の独自プロトコルで、公開仕様書がない; E2 (J-STD-036、NENA 05-001) はモバイル位置情報センターと ALI データベースの間で動作し、PSAP では動作しない。BitVoice は、リクエストとテキストの ALI リンクと HELD を使用 |
拡張子
/extensions拡張子は、人物またはデスクに割り当てられる番号です。電話機は拡張子番号と SIP パスワード でサインインします。指定された番号への通話は、すべてのサインインしている電話機で同時に鳴ります。
拡張子の追加
- 拡張子 (章 3) を開き、拡張子を追加 を押します。次の利用可能な番号と強力な SIP パスワード が自動的に入力されます。
- 人物の 名前 (他の電話機からの通話時に表示される) と メールアドレス (ボイスメールのメール送信に使用) を入力します。
- 911 ロケーション を入力します: サイト、階、部屋。これは緊急通話時に送信されます。
- 誰も応答しない場合 に何が起こるかを選択します: デフォルトはボイスメール、または別の拡張子、グループ、またはメニュー。
- 保存します。拡張子はすぐにサインインできます。
フィールド
| フィールド | 機能 |
|---|---|
| 番号 | 2 ~ 8 桁; 他の拡張子、グループ、キュー、部屋、または機能コードと重複できません |
| SIP パスワード | 電話機がサインインするために使用; 最低 12 文字; 生成 で新しいパスワードを作成します |
| 鳴らす時間 | 誰も応答しない場合 が発生するまでの秒数 (デフォルトは 25) |
| 外部発信者 ID | 外部への通話時に表示される番号; 空の場合、トランクの番号が使用されます |
| 外部番号への通話を許可 | オフにすると、電話機は内部通話と緊急番号のみに限定されます |
| 通話の録音 | 設定で選択された拡張子のみを録音する場合 |
| ホットデスク | サインインした人物に応じて共有電話機が変化します |
| この電話機への通話を暗号化 | メディア暗号化 (SRTP); TLS と組み合わせて使用してください |
| 部門 | この拡張子の通話コストをグループ化します |
フォローミー、ピックアップ、インターコム
各人物の独自の通話ハンドリングは、拡張子のボックス内にあります:
- フォローミー は、ここにある電話機が応答しない場合に、他の番号 (携帯電話、別のデスクなど) に順番に鳴ります。外部番号を押して通話を受ける場合は、携帯電話で 1 を押す必要があります。詳細は 機能コード (章 32) を参照してください。
- ピックアップグループ: 同じグループの誰でも、
*8をダイヤルすることで、この拡張子の鳴っている通話を受けることができます。 - インターコムを許可:
*80とこの番号で、スピーカーで自動的に応答します。この機能をオフにすると、インターコムを使用しない人物の設定が可能です。 - 独自のスピードダイヤル: この人物のみが使用できる短いコード、
*0の後にダイヤルします。
現在の転送
設定の下にある 現在の転送 は、人物が電話機またはスタッフポータルから設定した現在の状態 (通話を一切受けない、すべての通話の転送、忙しいときの通話の転送、応答しない通話の転送) を表示および変更します。これらは設定ではなく、現在の状態を表します: これらの設定を変更しても、変更履歴には反映されません。
接続されているもの
- 電話機: デスク電話、ソフトフォン、またはアプリ。
- ドアステーション: ドアにあるインターコム。誰かが応答すると、キーを押すか、ドアを開ける を Live 通話で押します。ドアコントローラーのアドレスが設定されている場合、BitVoice はそのアドレス (2N、Axis、Akuvox、リレー ボード) に呼び出しを行います。設定されていない場合、コードはステーションに送信され、ステーションがドアを開けます。
- オーバーヘッドスピーカー: その番号への通話はすぐに応答され、スピーカーで聞こえます。
- アナログアダプターポート: アダプターに接続された古い電話機、ファックス、またはアラームパネル。通話は G.711 のみを使用しますが、これはファックスが必要とするものです。
接続されたデバイス
開いている拡張子は、すべてのサインインしているデバイスを表示します: 電話機のメーカーとモデル、接続方法 (UDP、TCP、TLS、またはブラウザー)、およびサインインした時間。電話機に提供するアドレスとポートも表示されます。
電話機の接続
/phones任意のSIP電話機またはアプリケーションが機能します。サーバーのアドレスとポート5060を指定し、ユーザーとして拡張子番号を、パスワードとしてSIPパスワードを使用します。大手4社のデスク電話機は、代わりに自動的に設定され、誰もが電話機のキーパッドにパスワードを入力する必要はありません。
自動設定(プロビジョニング)
- Phones (章 4)で電話機を追加を押し、電話機のMACアドレス(電話機の下のラベルに記載)と、電話機が所属する拡張子を入力します。
- メーカーを選択します: Yealink、Poly、Grandstream(HTアナログアダプターを含む)、Snom、Fanvil、Cisco、Mitel、Sangoma、Algo、またはCyberData。
- 電話機にBitVoiceのアドレスを通知します。DHCPサーバーで、オプション66を画面に表示されるプロビジョニングアドレスに設定し、ネットワーク上のすべての電話機がそれを自動的に検出できるようにします。あるいは、電話機のWebページの自動プロビジョニングの下で同じアドレスを入力します。
- 電話機を再起動します。電話機はHTTPS経由でファイルを取得し、サインインし、ラインキーは電話機上のユーザーを表示します。
HTTPSまたはプレーンHTTP。電話機は、可能な場合はHTTPS経由でファイルを取得します。古い電話機の一部はHTTPSを使用できない場合があり、多くの電話機はBitVoiceによって自己署名された証明書を信頼しません。そうした電話機の場合、画面は同じポートのプレーンhttp://アドレスも表示します。プレーンHTTPは、これらのファイルのみに使用されます。すべての他のページはまだHTTPSに切り替わります。プレーンHTTP経由で電話機のSIPパスワードがネットワークを横断するため、信頼できるオフィスネットワークに限定するか、または認証局から証明書をインストールし、電話機のみのHTTPSをオンにします。
ファイルには、拡張子、パスワード、タイムゾーン、コーデック、ビジーランプキー、およびこのサーバーのアドレスが含まれます。プロビジョニングは、電話機が一度だけ受け取るユーザー名とパスワードによって保護されます。
| メーカー | テスト済みモデル | 内容 |
|---|---|---|
| Yealink | T3x、T4x、T5x | アカウント、BLFキー、時間、コーデック |
| Poly | VVX、Edge E | 同じもの、Poly独自の形式で |
| Grandstream | GRP、GXP、HT802/814 | アダプターの各ポートのアカウント |
| Snom | D7xx | アカウント、キー、時間 |
これらのメーカーもプロビジョニングされますが、まだそれらのデバイスでテストされていません(Phones画面では未テストとマークされます)。
| メーカー | モデル | デバイスが要求するファイル |
|---|---|---|
| Fanvil | XシリーズとVシリーズ | MACアドレス.cfg |
| Cisco | 6800、7800、8800マルチプラットフォーム(3PCC)、SPAアダプター | MACアドレス.xml(エンタープライズファームウェアでは、マルチプラットフォームファームウェアが最初に必要) |
| Mitel(Aastra) | 6800、6900 SIP | MACアドレス.cfg(大文字) |
| Sangoma | Sシリーズ | Fanvil形式のファイル |
| Algo | ページングスピーカー、ストローブ、アダプター | algopとMACアドレス.conf |
| CyberData | スピーカー、インターコム、ページングアダプター | MACアドレス.xml |
それぞれがアカウントを持ち、サーバー(およびバックアップサーバー、複数のサーバー)、トランスポートと暗号化、およびボイスメール番号(ある場合)を持ちます。AlgoおよびCyberDataスピーカーの拡張子をオーバーヘッドスピーカーに設定して、呼び出しをすぐに受け付けます。
プロビジョニングのない電話
ソフトフォンや他のメーカーの電話は、同じ3つの情報を持ちます:サーバー(このコンピューターのアドレス、ポート5060、またはTLSの5061)、ユーザー(拡張子番号)、パスワード(SIPパスワード)。Healthは、間違ったパスワードを試した電話をリストし、数回試みた後、アドレスは一時的に禁止されます(セキュリティ (章 60)を参照)。
ブラウザ電話
すべての画面の下部にある電話アイコンは、拡張子用にこのブラウザを電話にし、自分のマイクとスピーカーを使用します。WebRTCを使用します:音声はエンドツーエンドで暗号化され、ほとんどのファイアウォールを通じて設定なしで動作します。
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 (章 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.
WebSocketには独自のサインインは必要ありません:ソフトフォンはSIPでサインインし、失敗したサインインと多すぎるリクエストは、他の電話と同様に、そのアドレスに対してカウントされます。別のサイトから提供されるソフトフォンページは、このサーバーの証明書を信頼する必要があります(Let's Encryptを使用)。現在のChromeは、パブリックWebページがローカルネットワークのサーバーに到達する前に、ユーザーに確認を求めます。
2つの独立したライブラリ、JsSIP 3.13とSIP.js 0.21でテストしました:各ライブラリの2つのソフトフォンが登録され、互いに呼び出し、BitVoiceを介して相互に音声を聞くことができます。他のソフトフォン(LinphoneのWebクライアント、Zoiperのクライアント)は同じプロトコルを使用しますが、試験されていません。
TURN、UDPをブロックするネットワーク用
一部のネットワーク(ホテル、ゲストWi-Fi、厳格な会社ファイアウォール)は、UDPを出さない、またはWebRTCが通過できないNATの後ろにコンピューターを隠します。そうした場合、設定 (章 14)でTURNサーバーを有効にします:BitVoiceは、ポート3478(UDPとTCP)と、証明書を使用してポート5349上のTLSで、独自のTURNサーバー(RFC 8656)を実行します。ブラウザ電話、スタッフ電話、および呼び出しリンクには、短期間有効な資格情報が与えられ、直接メディアポートに到達できない場合に使用されます。音声は依然としてエンドツーエンドで暗号化され、BitVoiceはそれを独自のアドレスにのみリレーするため、誰もそれを使用して他のものに到達することはできません。
TURNポート、TLSポート、およびリレーポート(変更しない限り49152から49407)をファイアウォールで開きます。TLS上のTURNには、ブラウザが使用する名前に対して信頼できる証明書(Let's Encrypt (章 14)など)が必要です。証明書が到着するまで、BitVoiceはそれをブラウザに提供しません(ブラウザは試み、失敗し、待機します)。証明書が到着するとすぐに提供されます。ファイアウォールがHTTPSのみを許可するサーバーでは、ポートを443に設定してファイアウォールを通過します。
呼び出し中のネットワークの変更
呼び出し中の電話が別のネットワークに移動した場合(オフィスのWi-Fiからモバイルネットワークに、またはラップトップのWi-Fiから別のWi-Fiに)、新しいアドレスが割り当てられ、古いパスは音を伝送しなくなります。ブラウザーフォンとBitVoiceアプリは、自動的にネットワークの変更を検出します。ブラウザーがネットワークの変更を通知した場合、または呼び出しのパスが2秒間応答しなかった場合、電話はICE(RFC 8445 9)を再起動します。電話は、現在の呼び出しに新しいICE資格情報を提供し、BitVoiceは新しいICE資格情報で応答し、新しいパスを確認し、呼び出しを新しいパスに移動します。暗号化は同じキーで続行されます。移動中、呼び出しは再接続中...と表示されます。パスがまだ機能している場合、音の途切れはありません。古いパスは、新しいパスで音が流れるまで呼び出しを継続します。WebSocket上のSIPソフトフォン(JsSIP、SIP.js)も、新しいICE資格情報で再INVITEを実行して同じことを行います。BitVoiceでは、ICE-liteまたはNATの背後で何も切り替える必要はありません。
BitVoice を NAT の後ろで使用する
上記の TURN サーバーは、厳格なネットワークにあるブラウザが、パブリック アドレスを持たない BitVoice に到達するのを助けます。BitVoice 自体にパブリック アドレスがない場合 (ポート フォワーディングのないルーターの後ろにあるオフィス内、またはマシンにパブリック アドレスがないクラウド ネットワーク内)、設定 (章 14) の BitVoice を NAT の後ろで使用 で このサーバーは NAT の後ろにある をオンにします。BitVoice は、1 つのアドレスで応答するのではなく、ICE (RFC 8445) に完全に参加します (ICE-lite):
- ブラウザに自身のアドレス、STUN サーバーが見るパブリック アドレス、サインインした TURN サーバー (UDP; 各々のユーザー名とパスワード) 上のリレーを提供し、ブラウザと同様に各アドレスのペアを確認します。
- すべての呼び出しを TURN 経由でリレー は、ブラウザのメディアをすべて TURN サーバー経由で送信します (必要なネットワーク用)。
- 自分のアドレスを見つける は、呼び出しと同様にサーバーに問い合わせ、BitVoice が提供するアドレス (自身のアドレス、STUN を介して見えるパブリック アドレス、リレー) をリストアップします。
- ブラウザ フォン、呼び出しリンク、エコー テスト、SIP-over-WebSocket ソフトフォンに対して機能します (どちらの役割でも)。BitVoice はブラウザのオファーに応答し、ソフトフォンにオファーします。mDNS 名 (
name.local) の後ろにアドレスを隠すブラウザは、ローカル ネットワークで解決され、ブラウザのアドレス (ウェブ サーバーが見たもの) は最初からリレーを介して許可されます。 - デフォルトでオフ; 各呼び出しにサーバーの応答時間 (最大 1.5 秒) が追加されます。発信者ビデオは、どちらの場合でも ICE-lite を使用します。
スタッフフォン
任意のコンピューターまたはモバイルブラウザで#/phoneを開きます。ユーザーは拡張番号とSIPパスワードでサインインします。管理者アカウントは不要です。これは完全な電話機能です。ダイヤル、応答、ホールド、転送、キーパッドが使用できます。自身の転送とボイスメールについては、#/meのスタッフポータル (以下のスタッフポータル (章 33)を参照) を使用します。
モバイルアプリ
BitVoiceアプリは、iPhoneとAndroid用に提供されています。拡張番号のページからQRコードを使用してペアリングします。呼び出しは、AppleのプッシュサービスとGoogleのプッシュサービスを使用してアプリを起動します。アプリは閉じている場合でも、呼び出し音が鳴ります(プッシュが設定された後;以下参照)。
Skinny 電話機と MGCP ゲートウェイ
/desk-phonesSIP をサポートしていない電話機やゲートウェイも使用できます。 Skinny 電話機と MGCP ゲートウェイ (通話下) は、2 つの古いプロトコルをサポートしています:
- Skinny (SCCP): SCCP ファームウェアを実行する Cisco デスク電話機 (79xx、69xx、89xx)。各電話機をその MAC アドレスで追加し、拡張子を選択します。Skinny 電話機を許可 をオンにし、電話機の TFTP 設定ファイルまたはメニューで BitVoice (TCP ポート 2000) を指します。
- MGCP (RFC 3435): BitVoice が個別に操作するゲートウェイ (アナログ電話アダプター、ラインカードなど)。ゲートウェイをそのエンドポイント名で使用するドメイン名、アドレス、各ラインの拡張子で追加します。ゲートウェイの呼び出しエージェントを BitVoice (UDP ポート 2727) に設定します。
各 Skinny 電話機または MGCP ラインは、その拡張子のもう 1 つのデバイスです: 拡張子の他の電話機と同時に鳴り、拡張子として外線に通話し、拡張子のデバイスの一覧に表示されます。各デバイスの状態がページに表示されます。
動作確認
- Skinny: 登録、表示上のラインと番号、着信音、ダイヤル(パウゼや#の後に、またはダイヤルパッドから直接)、呼び出し音、着信時caller ID、受話器、スピーカー、ソフトキーの操作(NewCall、Redial、Answer、EndCall)、忙線、再接続音。
- MGCP: 着信音、ゲートウェイによる数字収集、caller ID付きの呼び出し音、呼び出し音、忙線、再接続音、オーディオ接続(CRCX、DLCX)。ゲートウェイの再起動(RSIP)により、ポートが再設定される。
- オーディオはG.711 µ-lawを使用しているが、BitVoiceは相手側のフォーマットに自動変換する。
ホールド、転送、会議は現在、他の電話機から実行され、Skinny電話の2行目は使用されていない。
セキュリティ
両方のプロトコルにはパスワードが存在しない。Skinny電話はローカルネットワークからの接続のみを許可し、MGCPコマンドはゲートウェイのアドレス(またはローカルネットワーク)からの接続のみを許可する。両方のポートをインターネットから遮断する。
まだコマンドを処理中のゲートウェイは最初に "100 Trying" と応答することがあります: BitVoice はその後コマンドを再送する前に長く待機し、最終的な応答 (000) を確認します。RFC 3435 に従っています。ゲートウェイが監視しないポートは、ゲートウェイ自身の拒否をページに表示します。たとえば、ゲートウェイはポートの監視を拒否しました: 507 Unsupported Functionality は、アナログポートのないメディアゲートウェイからのものです。
テスト方法
- Skinny: mwicat/sccp ライブラリを使用して作成された 2 台の電話が別の Skinny 実装に登録し、相互に電話し、応答し、切断します。未登録の電話は拒否されます。Wireshark の Skinny 分析ツールは、BitVoice が送信するすべてのメッセージをエラーなく読み取り、Asterisk の chan_skinny が Cisco 電話に送信するメッセージと同じサイズになります。
- MGCP: Yate の MGCP ゲートウェイ (再起動、暫定的な応答、確認、拒否) と BitVoice の独自のテストゲートウェイを使用して、全体の電話をテストします。Yate のゲートウェイにはアナログポートがないため、電話は通じませんでした。
電話カード
/cardsBitVoiceコンピュータ内の電話カード(Digium、Sangoma、OpenVoxなど、Linux DAHDIドライバーを使用するカード)を使用して、アナログ電話機や電話会社の回線を接続できる。別のプログラムであるbitvoice-dahdiがカードを駆動し、コンピュータのネットワーク接続を介してBitVoiceに接続するため、BitVoice自身はカーネルドライバーに直接アクセスせず、カードの問題が電話システムを停止させることはない。
設定方法
- DAHDIドライバーをインストールし、/etc/dahdi/system.confでポートを設定する(
fxoks=1-4を電話機用ポートに、fxsks=5-8を回線用ポートに、国別の音声設定をloadzoneとdefaultzoneに指定)し、dahdi_cfgを実行する。 - 電話カード(Callsの下)で電話カードを使用を有効にする。トークンが生成されるので、/etc/bitvoice/cards.tokenなどのrootのみが読み取り可能なファイルにコピーする。
- DAHDIチャネル番号で各ポートを追加する:電話ポート(FXS、電話機、ファックス、ドアフォン)を拡張子に、回線ポート(FXO、電話会社の回線)を回線番号に設定する。ヨーロッパや世界の大部分ではA-law、北米や日本ではµ-lawを選択する。
- 回線の場合、電話カード回線プロトコルを使用したトランクをTrunksで追加し、番号をルーティングする。インバウンドルートは各回線の番号に一致する。
bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.tokenをサービスユーザーとして実行する(/dev/dahdiを開くことができるユーザー)。Linuxのダウンロードにあるbitvoiceの隣にある。ページに表示されるのは、サービスが実行中かどうかと各ポートの状態で、変更は10秒以内に反映される。別のプログラムが保持しているチャネル(またはdahdi_cfgがまだ設定していないチャネル)は、2秒ごとに再試行されるため、開始順序は重要ではない。
動作確認
- 電話機:着信音、ダイヤル(BitVoiceの独自の音声検出により数字が収集される)、呼び出し音、忙線、再接続音、着信時caller ID、受話器、スピーカー、ソフトキーの操作(RFC 4733イベントとしても送信される)。
- 回線:呼び出し音、交換機の着信音、着信時に呼び出し音、遠端の切断を検出(ループ電流または極性、回線に依存)。アナログ回線は遠端の着信を通知しないため、発信は番号がダイヤルされた後に着信したとみなされる。
- 音声はG.711を使用しているが、BitVoiceは相手側のフォーマットに自動変換する。
デジタル回線: T1およびE1PRI
T1(23回線)またはE1(30回線)プライマリレートISDN回線は、デジタルカード(Digium/Sangoma TEシリーズ、OpenVox Dシリーズなど)に接続する。BitVoiceはPRIプロトコル(Q.921、Dチャネル、Q.931コールコントロール)を直接扱うため、すべての呼び出しはダイヤルされた番号とcaller IDで接続され、発信は拡張子のcaller IDで接続され、電話会社は遠端の着信、呼び出し、または忙線を通知する。
- /etc/dahdi/system.confで、PRI用のスパンを設定する(
span=1,1,0,esf,b8zs、bchan=1-23、hardhdlc=24をT1用に、span=1,1,0,ccs,hdb3,crc4、bchan=1-15,17-31、hardhdlc=16をE1用に)し、dahdi_cfgを実行する。 - デジタル回線(電話カード (章 6)の下)で、スパンを追加する:T1またはE1、最初のDAHDIチャネル、BitVoiceが電話会社の回線上のPBXであるか(通常)、またはネットワーク上のPBXであるか(別のPBXが電話会社の回線に接続するようにBitVoiceに接続する)、電話会社が提供したスイッチタイプを選択する。
- カードトランクが存在しない場合は、Trunksで追加し、電話会社が提供する番号(DID)にインバウンドルートを設定する。
発信はPRIを優先し、アナログ回線は後に使用する。忙線、不正な番号、または使用可能なチャネルがない場合は、ネットワークが通知する通りに、忙線、見つかりません、または利用不可として返される。ページには、各スパンのDチャネルが接続されているかどうかと、チャネルの使用状況が表示される。T1チャネルはローブドビットシグナリング(fxsks、fxoks)で設定され、アナログポートと同様に動作する。
名前、転送、転送。発信者の名前は、Display要素から、またはNational ISDN-2の場合、ネットワークが送信する名前として呼び出される。また、電話機に表示され、発信する場合は拡張子の名前が同じ方法で送信される。転送された番号は、転送理由(忙しい、応答なし、無条件)とともにDiversionとして渡される。PRI経由で転送された場合、拡張子の番号が転送番号として送信され、遠隔側と電話会社がどの呼び出しのものかを知ることができる。外部からの呼び出しが受信された場合、BitVoiceはネットワークに接続された番号を通知する。
スパンの電話会社経由の転送を有効にすると、同じライン上の別の番号に転送された場合、BitVoiceはネットワークに2つの呼び出しを直接接続するように依頼する。National ISDN-2と5ESSラインではTwo B-Channel Transfer、Nortel DMS-100ではRelease Link Trunk転送、EuroISDNでは明示的な呼び出し転送(保持された呼び出しを後で接続)が使用される。DMS-100では、BitVoiceが配置した呼び出しのみに転送識別子が提供されるため、2つの呼び出しのうち1つは外部への呼び出し(通常の場合:転送または転送された呼び出し)である必要がある。両方のチャネルは、ネットワークが呼び出しを接続した直後に解放される。このラインではサービス(電話会社に「2つのBチャネル転送」または「ECT」を依頼)が必要であり、ネットワークが拒否した場合、転送は従来通りBitVoice経由で機能する。
カードなしで試す
DAHDI独自のダイナミックスパンをカードの代わりに使用できます: カーネル内で接続された2つのスパン、1つにBitVoice、もう1つに別のPBX (Asteriskのchan_dahdiなど) を電話会社として使用します。dahdi、dahdi_dynamic、dahdi_dynamic_locをロードし、/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
最後の番号(タイミング)を両方とも0に設定する。DAHDIのタイマーが動作する。スパンが互いのタイミングソースになっている場合、もう一方が送信したときのみに動作し、Dチャネルが来て行く。ここでスパン1をT1(最初のチャネル1)として追加し、別のPBXをチャネル25から48までのネットワーク側として設定する。
基本レート ISDN (BRI)
BRI は 2 つの電話 (B1 と B2) を同時に運ぶことができ、ヨーロッパの小規模オフィスで一般的です。また、ISDN デスク電話にも接続されます。BRI カード (Digium B410P、OpenVox、Junghanns などの HFC ベースのカード) は、PRI カードと同様に DAHDI を使用して動作します: /etc/dahdi/system.conf のスパンの設定は span=1,1,0,ccs,ami で、bchan=1-2 および hardhdlc=3 です。デジタルライン の下に追加し、ラインタイプを BRI に設定します。そのチャネルは B1、B2、D チャネルです。
- BitVoiceはPBX(ユーザーサイド)、ポイントツーポイント:電話会社からのPBXライン(ドイツの*Anlagenanschluss*):呼び出しは番号を持ち、発信は拡張子の番号を持つ。
- ユーザーサイド、マルチポイント:他のデバイスと共有されるライン(*Mehrgeräteanschluss*):BitVoiceはネットワークに自身のTEI(端末識別子)を要求し、ライン上の他のデバイスとともに呼び出しに応答する。電話会社は番号(MSN)を送信し、インバウンドルートが一致する。
- BitVoiceはネットワーク、マルチポイント:ISDN電話機はカードのSバスに接続される。各電話機はBitVoiceにTEIを要求し、バスへの呼び出しはバス上のすべての電話機に呼び出しを送信し、最初に応答した電話機が呼び出しを受け取り、他の電話機は呼び出しを停止する。数字はISDN電話機が数字を入力するように収集され、完了、#が押された、または4秒間数字が入力されなかった場合に収集を停止する。カードトランクを使用して、ラインからバスへの番号をルーティングする。
EuroISDN(明示的な呼び出し転送)と料金通知に関する名前、転送、転送は、PRIと同様にBRIでも機能する。
E&M トランク (T1)
E&M (ローブドビット信号: /etc/dahdi/system.conf の e&m=1-24) で設定された T1 チャネルは、24 本のトランクを提供し、それぞれが独自の信号で制御されます: タイライン、チャンネルバンク、長距離キャリアの機能グループ D トランクです。デジタルライン の下に T1 を追加し、信号 を E&M に設定します。
- 開始信号:ウィンク開始(通常:遠隔側が番号を入力する準備ができたときにウィンクし、BitVoiceが呼び出しを受け取ったときにウィンクする)、即時開始(番号が占有直後に続く)、遅延ダイヤル(遠隔側が準備ができたときにオフフックし、番号を入力する)、またはFeature Group D(ウィンク開始でMF番号、発信者の番号が最初に送信される:KP 00 ANI ST、次にKP番号ST;ANIは発信者IDとなる)。
- 番号の送信方法:DTMF、またはMF(MF R1、KP番号ST)として送信される。
- 番号が送信されない場合:遠隔側が番号をダイヤルせずにトランクを占有した場合に呼び出しを受ける番号(例:フロントデスクへのプライベートライン)。
発信は、空いているトランクを確保し、開始信号を待ちます (5 秒以内にウィンクがない場合は「ウィンクなし」とみなされ、呼び出しは失敗します)。番号を送信し、遠端がオフフックされたときに応答されます (応答監視)。着信は、拡張子が応答したときにオフフックすることで応答されます。
CAMA トランク (911、ラボ トラック)。CAMA トランク経由で 911 選択ルーターからまだ供給されている PSAP は、開始信号を CAMA (911 トランク) に設定します。ルーターは確保し、BitVoice はウィンクし、ルーターは ANI (呼び出し元番号) を MF で送信します: 拡張 CAMA として KP、2 つの情報桁、10 桁、ST; 伝統的な CAMA として KP、1 つの番号付け計画桁、7 桁、ST。伝統的な CAMA の場合、番号付け計画 0 から 3 のエリア コード の下に、各番号付け計画桁が表すエリア コードをリストします (ルーターの設定シートに記載されています)。数字が 3 を超える場合、ルーターは線を識別できません。各呼び出しは、911 のインバウンド ルートに 911 呼び出しとして移動し、ANI はコールバック番号として使用され、BitVoice はその番号で場所を検索します (後述の 911 呼び出し (章 77)、場所検索 (ALI) を参照)。情報桁は呼び出しに CAMA (II 00) として表示されます。
MFC-R2 (E1)
ラテンアメリカ、亞洲、アフリカの一部では、E1ラインはISDNではなくMFC-R2です。30回路あり、各回路は16番目のタイムスロットのAビットとBビットに線信号があり、番号、発信者のカテゴリ、発信者の番号は強制多周波信号(Q.441)で交換されます(ITU-T Q.421)。/etc/dahdi/system.confでスパンの設定をCASにします(span=1,1,0,cas,hdb3、cas=1-15:1101、cas=17-31:1101、dchan削除)。デジタルラインの下にE1を追加し、信号をMFC-R2に設定し、国別バリアントを選択します: ITU-T、アルゼンチン、ブラジル、中国、コロンビア、チェコ共和国、エクアドル、メキシコ、フィリピン、ベネズエラです。各国は一部の信号を異なる方法で割り当てています(忙しいことを示す方法、番号の終了を通知する方法、メキシコのグループCの追加)。バリアントにはそれらが含まれます。中国No. 1は、番号の後に発信者のクラス(KA)と番号を要求し、最後に電話の種類(KD: 3、ローカル電話)を送信し、KDによって忙しいことを読み取り、CビットとDビットの両方を1に設定します: そこでは、cas=1-15:1111およびcas=17-31:1111と書きます。
各回路は双方向の電話を運ぶことができます。着信電話は、ダイヤルされた番号と発信者の番号(非通知番号は匿名として表示)とともに、着信ルートに到達します。忙しい内線または間違った番号は、バリアントによっては忙しいまたは割り当てられていないと信号されます。発信電話は、番号と内線の発信者ID、または発信者がそれを隠す場合の「番号非通知」信号を送信します。
MFC-R2 信号は、提供されているすべてのバリアントと双方向でテストされます。包括して拒否された呼び出しも含みます。E&M は BitVoice の独自のシミュレート チャネルに対してテストされます。
SS7
キャリアは、ISDNではなくSS7で信号化されたT1またはE1を提供する場合があります。音声回路は電話を運び、各回路は回路識別コード(CIC)で命名されます。また、1つのタイムスロットは、キャリアの信号転送ポイントまたはスイッチへの信号リンクを運び、ISUPによって電話が設定されます。BitVoiceは、キャリアが割り当てるポイントコードを持つ独自の信号ポイントになります。/etc/dahdi/system.confでスパンの設定をクリアチャネルにし、信号タイムスロットをmtp2またはhardhdlcにします(E1の場合は16番目のタイムスロット、T1の場合は24番目のタイムスロット)。デジタルラインの下にスパンを追加し、信号をSS7 (ISUP)に設定し、以下の情報を入力します:
- SS7 バリアント: ANSI (北米; ポイント コード ネットワーク クラスター メンバー、例: 245-16-1) または ITU-T (世界の大部分; ポイント コード ゾーン エリア ポイント、例: 1-10-2、またはプレーン番号)。
- 私たちのポイント コード と 隣接ポイント コード、ネットワーク (国内、通常、または国際)、信号 リンク コード (SLC、指定されていない場合は 0)、および 最初の CIC: スパンの最初の音声チャネルのコード、他のチャネルは順番に続きます。これらはすべてキャリアから来ます。
リンク セットのリンクの数。同じバリアント、ポイント コード、ネットワークを持つスパンは 1 つのリンク セット (最大 16 個のリンク) になります: 各スパンの信号リンクはそのリンクの 1 つで、独自の リンク コード が必要であり、各スパンのサーキットはそれに属します (CIC は重複できません)。トラフィックは、サービス中のリンク間でメッセージの SLS によって共有されます。つまり、1 つの呼び出しのメッセージは 1 つのリンクに留まります。リンクが故障した場合 (リンク テストに応答がない、またはメッセージが確認されない)、そのトラフィックは他のリンクに切り替わります (Q.704: COO と COA、遠端が受け取っていないメッセージが別のリンクで再送信される、または時間内に応答がない場合は時間で切り替わります)。すべてのスパンの呼び出しは続行され、電話カード はサービス中のリンクの数とこのスパンの状態を示します。リンクが復帰してテストされた場合、トラフィックは戻ります (CBD と CBA)。リンク セットは、すべてのリンクがダウンした場合のみダウンします。libss7 と 2 つのリンクを使用したテストでは、libss7 はネットワーク管理メッセージのみをその SLS で指定されたリンクで受け取ります。つまり、切断されたリンクについての切り替えメッセージ (Q.704 に従って別のリンクで送信される) はそこでドロップされ、両端は時間で切り替わります。これは機能します。BitVoice の両端間では、COO と COA によって切り替わります。
リンクが確立すると、BitVoiceはそれを整列させます(MTPレベル2、緊急プローブ期間を単一リンクのリンクセットとして使用)。リンクテスト(SLTM/SLTA)でそれを証明し、トラフィックの再開を許可し、すべての回路をリセットします(GRS)。着信は、ダイヤルされた番号、発信者の番号(非通知の場合は匿名)、転送元の番号、およびANSIの場合は発信者の名前で着信ルートに到達します。発信は、拡張子の発信者IDと名前を持ちます。キャリアによる回路のブロックまたはリセットは遵守されます。デュアルシーケンスの場合、ポイントコードが高い側が偶数の回路を保持し、BitVoiceは保持した回路を最初に取ります。
SS7は、libss7( Asteriskのchan_dahdiが使用するSS7ライブラリ)、ITU、およびANSIに対してテストされます: 整列、リンクテスト、トラフィックの再開、回路のリセット、および番号と名前を持つ双方向の呼び出し; また、BitVoiceは、リンク上で失われたフレーム( MTP2のエラーコレクションによって再送される)とデュアルシーケンスで自身に対してテストされます。シグナル転送(他のSTPとして)とSCCP/TCAP(番号ポータビリティの検索、無料通訳)は提供されません: PBXはエンドポイントであり、それらはキャリアのものです。
信号転送点(STP)。 bitvoice-dahdiは、ITS SS7リンクセットのSTPとしても機能します。デジタルラインの下にある信号転送点(SS7)をオンにします。そのSTPポイントコードは、スパンのものです。他のポイントコードのメッセージを渡すをオンにすると、1つのリンクセットから別のリンクセットの隣接ポイントへのメッセージはそのリンクセットに送られ、他のポイントコードへのメッセージはIP STP(M3UA)に送られます。IP STPまたはシグナリングゲートウェイは、ホスト:ポートでM3UA(RFC 4666)を使用してTCPで接続され、リンクセットのポイントからのメッセージは同じ方法で戻ります(BitVoiceは、ポイントコードとその背後のものを登録します。ただし、ルーティングコンテキストが指定されている場合は除きます)。グローバルタイトル変換は、STPにグローバルタイトルで送信されたSCCPメッセージを、最長一致プレフィックスに基づいてポイントコードとサブシステムに送信します。送信できないメッセージは、送信者にUDTSまたはXUDTSとして返されます。STPのステータスは、M3UAリンクとパスされたメッセージの数、翻訳されたメッセージの数、返されたメッセージの数を表示します。STPのSCCP(UDT、XUDT、UDTS、XUDTS)とTCAP(Begin、Continue、End、Abort、ダイアログとコンポーネント)は、Osmocomに対してチェックされます。OsmoSTPを使用してM3UAで接続し、libosmo-sigtranのSCCPエコーユーザーを使用してlibosmo-asn1-tcapのTCAPコーダーを使用します。SCTPは提供されていません(Goにはありません)。M3UAはTCPで接続され、OsmoSTPと多くのIP STPで使用されます。接続指向のSCCP、ANSIリンクセット、SCCP管理(SST、SSA)は提供されていません。
課金通知。ヨーロッパのISDN回線では、課金通知をオンにすると、BitVoiceは各発信ごとに電話会社に課金額を通知するよう依頼します: 発信中(AOC-D)と発信終了時(AOC-E)に、金額または課金単位で。最後の金額は、通話のレコード(課金 1.50ユーロにHistoryとCostsの通話の横に)に記載されます。通話のレートから計算された金額ではなく、トランクのレートから計算された金額に代わって、通話のコストとして使用されます。電話会社は、回線でこのサービスを提供する必要があります。SIPトランクは、INFOまたはBYEの3GPP AOC XMLとして同じ通知を送信でき、BitVoiceは同じ方法でそれを保持します。
PRIコードは、libpri( Asteriskが使用するISDNライブラリ)に対してテストされます。ユーザー側とネットワーク側の両方で、National ISDN-2とEuroISDNの呼び出し、名前、転送先の番号、明示的な呼び出し転送、2つのBチャネル転送、およびDMS-100リリースリンクトランクリクエストのバイトごとにテストされます( libpriのPBXがBitVoiceによってDMS-100に参加)。また、BRIでは、ポイントツーポイントとマルチポイントの両方で、端末とネットワーク(TEI割り当て、バスへの呼び出しブロードキャスト、数字ごとのダイヤル)としてテストされます。
まだ利用できません: アナログ電話機で表示される発信者ID、またはアナログ回線から読み取られる発信者ID、フックフラッシュ、およびカード自体が行うものを超えるエコーキャンセル。
トランク
/trunksトランクは、電話会社とのアカウントです。外部の番号との間で呼び出しを運ぶものです。大多数は SIP トランクですが、Asterisk または FreePBX サーバー、または IAX2 プロバイダーは、IAX2 で代わりに使用できます。
SIP トランクの追加
- トランク (章 7) で トランクを追加 を押します。
- 電話会社が提供した プロバイダー サーバー (
sip.provider.com) と、ポート (5060 でない場合) を入力します。 - ユーザー名 と パスワード を入力し、プロバイダーが登録を指示した場合 (ほとんどの場合) に 登録 をオンにします。
- 保存します。数秒以内にトランクは 登録済み と表示されます。そうでない場合、理由がトランクの横に表示されます。
トランクのヘルスチェック
2つ以上のトランクがある発信ルートでは、BitVoiceは15秒ごとにそれぞれが使用可能かどうかを判断します。トランクは、プロバイダーの応答が停止した場合、または最後の発信が連続して失敗した場合(連続失敗回数内、Within(分)、設定、トランクのヘルスチェック)に他のトランクが使用されます。ただし、発信が成功している場合は、キープアライブチェックに失敗しただけではトランクは移動しません。また、すべてのトランクが同時に失敗した場合、原因はこのシステムのインターネット接続である可能性が高いため、トランクは移動しません。トランクの移動には、2回連続での判断(30秒)が必要なので、トランクはフラップしません。トランクは完全に除外されることはありません。其他のトランクが失敗した場合でも、緊急発信には常にすべてのトランクが使用可能です。トランクのページには、判断とその理由が表示され、他のトランクを使用した発信のレコードにはその旨が記載されます。
- 受信ルートと、このトランクを使用する発信ルートを追加してください。(ルーティング (章 8))
| フィールド | 機能 |
|---|---|
| トランスポート | 通常はUDP、TCP、または暗号化されたシグナリング用のTLS |
| 登録 | 数分ごとにプロバイダーに登録し、プロバイダーが呼び出し先を知るようにする |
| 認証ユーザー名 | プロバイダーが別のユーザー名を提供する場合のみ |
| Fromドメイン | 呼び出し先アドレスのドメイン、プロバイダーが要求する場合 |
| 発信者ID | 発信時の表示番号; 拡張子の発信者IDが優先される |
| 以下のアドレスからの呼び出しを受け付ける | プロバイダーの他のアドレスまたはネットワークからの呼び出しを受け付ける。ここで登録された電話機からの呼び出しや、組み込みの呼び出し生成ツールからの呼び出しは、127.0.0.1を許可していてもトランクのものとして扱われません |
| 同時呼び出し数 | プランで許可される同時呼び出し数; これを超える呼び出しはルートの次のトランクに振り分けられる |
| メディアの暗号化 | SRTP、プロバイダーがサポートする場合。SRTPをサポートしないプロバイダーには、呼び出しは暗号化されずに接続され、暗号化なしと呼び出し履歴にマークされる |
| 暗号化を要求 | (メディアの暗号化と共に)プロバイダーが暗号化しない呼び出しを拒否する: SRTPをサポートしないプロバイダーが応答した発信は切断され、SRTPをサポートしないプロバイダーが送信した呼び出しは拒否され、呼び出し履歴に理由が記載される |
| コーデック | *設定と同じ*のままにするか、プロバイダーがサポートするコーデックを選択する(優先順位付き) |
| 料金 | 番号プレフィックスごとの呼び出し料金、料金 (章 54)用 |
クラウドプロバイダー
開始からMicrosoft Teams Direct Routing、Amazon Chime SDK Voice Connector、またはAzure Communication Servicesを選択すると、各サービスの設定方法に関する注釈が表示されます。Teamsについては、別の章で説明しています(Microsoft Teams (章 67))。
AsteriskおよびFreePBXへのIAX2トランク
IAX2プロトコルを選択して、他のAsteriskサーバーまたはFreePBXサーバー、またはIAX2プロバイダーに接続します。IAX2は、シグナリングと音声を1つのUDPポート(4569)で運ぶため、ファイアウォールを通過するのが容易です。
- サーバーアドレス: 対向サーバー。対向サーバーがBitVoiceに登録する場合(変更するアドレスを持つ支店など)、空のままにします。その場合、ユーザー名とパスワードは対向サーバーが登録するものと同じになります。
- ユーザー名とパスワード: 両側で同じものを使用します。BitVoiceはMD5チャレンジに応答し、呼び出しトークンを処理します。
- 登録: 対向サーバーに登録し、呼び出しを受け付けるようにします。
Asterisk側では、以下のようなピア設定で十分です:
[bitvoice] type=friend host=dynamic secret=the shared password context=from-bitvoice
IAX2ポート4569は、最初のIAX2トランクが追加されるまで開放されません。したがって、同じコンピューター上で動作するAsteriskは、その時まで開放されません。
H.323トランク
H.323プロトコルを選択して、H.323をサポートする古いゲートウェイ、PBX、ビデオ会議システムに接続します。ゲートウェイのアドレス(ポート1720)を指定し、ゲートウェイからの呼び出しのみを受け付けます。呼び出しはFast ConnectとG.711(μ-lawまたはA-law; トランクのコーデックリストでは1つに絞られる場合があります)で設定され、音声はゲートウェイとBitVoiceのメディアポートの間で直接やり取りされます。BitVoiceは、他のパーティーが使用するものに変換します。
ここでのH.323は、故意に小さく設計されています。ゲートキーパー(RAS)、H.245(Fast Connectを使用できないゲートウェイは呼び出しを受けられず、通知されます)、ビデオ、H.235セキュリティはありません。発信者IDは、Q.931の発信番号または発信者のダイヤルアリースから取得され、名前は表示またはH.323 IDから取得されます。BitVoiceのH.225.0とH.245のエンコードは、独立したASN.1エンコーダーに対して確認されていますが、まだゲートウェイハードウェアに対して確認されていません。
転送された通話
通話がすでに転送されている場合(誰かの番号があなたの番号に転送されている、またはTeamsユーザーの場合)、プロバイダーはHistory-Info(RFC 7044)またはDiversion(RFC 5806)で通知します。BitVoiceはどちらも読み取ります:通話履歴 (章 47)には転送元の番号が表示され、最初にダイヤルされた番号と理由がツールチップに表示され、通話の履歴には理由が記載されます(forwardedFrom、original、forwardReason)。プロバイダーが履歴を非公開にする場合、番号は保持されません。
拡張番号が通話をトランク経由で転送する場合(すべての通話、忙しい場合、応答がない場合)、プロバイダーはどの拡張番号が通話を転送したかと理由を通知します。つまり、プロバイダーはあなたの番号を表示し、正しいアカウントに請求できます。デフォルトでは、両方のヘッダーが使用され、通話が受信された履歴が保持され、転送が追加されます。プロバイダーがどちらか一方に混乱する場合、トランクの詳細、転送された通話の所有者で設定できます。T1/E1電話カードの場合、どちらのヘッダーもネットワークのリダイレクト番号になります。
ステータスの意味
| ステータス | 意味 |
|---|---|
| registered | サインイン済み; 通話を受信可能 |
| ready | 登録されていない、またはIAX2が通話を待機中 |
| unreachable | サーバーの名前がDNSにない、または応答なし |
| failed | プロバイダーがサインインを拒否; 理由が表示される |
| standby | サーバーがこのトランクを共有し、別のサーバーが保持中 |
通話ルーティング
/routes通話ルーティングは、2つのことを決定します。外部からの通話の行き先を、ダイヤルされた番号によって決定し、外部への通話に使用するトランクを決定します。
受信ルート
各受信ルートは、呼ばれた番号(または任意の番号)と一致し、通話を目的の場所に送信します。目的地は、拡張番号、リンググループ、キュー、メニュー、スケジュール、スクリプト、会議室、AIレセプション、またはボイスメールになります。番号は、どのような形式でも一致します。+1 212 555 0100、2125550100、12125550100は同じです。
- 1つの番号のルートは、任意の番号のルートよりも優先されます。
- ルートは1つのトランクに限定できます。2つのプロバイダーが両方送信する番号の場合に使用します。
- 緊急モードがオンの場合(設定)、すべての受信通話は、ルートの設定に関係なく、1つの場所に送信されます。避難、閉鎖、インシデントの場合に使用します。
発信ルート
発信ルートは、パターンに基づいてダイヤルされた番号と一致し、トランクに送信します。最初のトランクがダウンまたは満杯の場合、次のトランクが試されます。
| パターン | 一致 |
|---|---|
X | 任意の数字 |
Z | 1から9 |
N | 2から9 |
[1-5] | 一連の数字の1つ |
. の末尾 | 1つ以上の追加の数字 |
NXXNXXXXXX | 10桁の北米番号 |
1NXXNXXXXXX | 1を先頭に付けた同じ番号 |
011. | 米国からの国際通話 |
- 削除は、先頭の数字を削除します(外部線の9をダイヤルする場合)。先頭に追加は、数字を先頭に追加します(国コードの場合)。
- ルートの順序は重要です。パターンに一致する最初のルートが使用されます。ルートの順序を変更するには、ドラッグします。
- プレミアム番号(900など)は、ルートがそれらを指定しない限り拒否されます。
緊急番号
緊急番号は常に機能します。正確に一致するルートが使用されます。ルートがない場合、すべてのトランクが順番に試されます。緊急番号への通話は、拡張番号の制限、ホスト組織の制限、またはルートの欠如のために拒否されることはありません。ヘルスは、トランクが緊急番号を運ぶことができない場合に警告します。
PINセット
/pin-setsPINセット (章 9)は、出発ルートが外線に接続する前に要求するPINのリストである。国際電話や長距離電話をPINを持つ人に限定したり、クライアントやプロジェクトのコードで請求するために使用する。
- PINセットの追加し、PIN(4〜10桁)をリストする。
- 呼び出しレコードにPINを保持をオンにすると、使用されたPINを各呼び出しのレコードにアカウントコードとして書き込む(CSV、syslog、PostgreSQLの呼び出しレコード出力、およびAPIの
account)。 - 呼び出しルーティング (章 8)で、出発ルートを開き、PINの要求の下でセットを選択する。
そのルートを通じて番号をダイヤルする呼び出し先は、「PINを入力してハッシュを押してください」と聞き、PINを入力し、呼び出しは外線に出る。3回間違えると、呼び出しは終了し、試行はセキュリティイベントとしてログに記録される。緊急番号は、どのルートを通じてもPINを要求しない。転送された呼び出しやフォローミー番号も要求しない。電話からダイヤルする人だけにPINを要求する。
発信者IDの検索
/lookups多くの電話会社は、発信者の番号のみを送信し、名前は送信しない。BitVoiceは、まず会社の連絡先 (章 38)を参照し、その後、入ってくるルートは発信者IDの検索 (章 10)を要求することができる。
- Web アドレス: ご自身の CRM または名前で応答するサービス。
{number}を番号が入る場所に置きます (https://crm.example.com/api/callers?phone={number})。 プレーンテキストの回答は名前を最初の行に表示します。JSON の場合は、名前フィールドをドット表記で指定します (data.contact.name; 数字はリストにステップします、例:results.0.name)。 基本認証はオプションです。 - OpenCNAM: 北米の着信者名データベース、ご自身のアカウント SID および認証トークンを使用します。
呼び出しルーティング (章 8)の入ってくるルートで、発信者IDの検索を選択する。電話は、呼び出し中に名前を表示し、呼び出しレコードにも名前が記録される。
検索は、呼び出しを遅らせることはない。BitVoiceは、最大で待ち(デフォルトは1.5秒、最大5秒)待機し、その後名前がなくても呼び出しを開始する。回答は、1日間(または設定した時間、または-1で保存しない)保存されるため、頻繁に呼び出しを行う場合は、毎回検索されない。サービスが名前を知らない番号は、1時間後に再度検索される。検索ページの試してみるは、設定通りに即座に番号を要求する。
緊急呼び出し
緊急番号は、すべての拡張子から、外部番号を呼び出せない拡張子からも呼び出される。この章では、BitVoiceが管理する電話からの緊急呼び出しについて説明する。オフィスから911への呼び出しについてである。911呼び出しの応答は、911プロファイル (章 77)である。
BitVoiceが緊急呼び出しで行うこと
- ルーティング: 常にルーティングする。番号を最初に指定するルートが優先される。ルートがなければ、すべての動作するトランクが順番に使用される。制限は、緊急呼び出しを止めることはない。外部呼び出しを許可されていない拡張子、ホスト組織の呼び出し制限に達している、または停止されている、トランクのチャネル制限に達している場合でもである。
- 発信者の場所の送信: 発信者のアドレスの送信がオンになっている場合、呼び出しはサイトの市民アドレス、階、部屋をPIDF-LOとしてプロバイダーに送信する。
- サイト内の通知(米国でのKari's Law):通知の下にある拡張子は、電話にメッセージを受け取り、すべてのBitVoice画面にアラートが表示され、メールもの下にあるアドレスには、発信者の名前、拡張子、サイト、階、部屋が記載されたメールが送信され、誰かが応答者に会うことができる。
- 呼び戻しの許可: 緊急呼び出しの後1時間以内に、受信する呼び出しは拒否されない。応答ポイントは、必ず電話を掛け返すことができる。
設定
- 設定 (章 14)で緊急番号(国ごとに設定される。米国では911と933)を確認する。
- サイト (章 12)にすべての建物を追加し、通りアドレスと電話が使用するネットワークを指定する。
- すべての拡張子にサイト、階、部屋を割り当てる。
- 出発ルートとトランクが緊急呼び出しを運ぶことを確認する。ヘルス (章 13)は、運ぶことができない場合に警告する。
- 通知とメールもを入力する。
- 米国では
933をダイヤルして、プロバイダーが保持しているアドレスを聞く。
リモートワーカー
サイトのネットワーク外から登録する電話は、リモートワーカーである。電話のページでは、現在の場所を尋ね、指定されたアドレスが使用される。アラートには、確認されなかった場合のメッセージが表示される。
緊急モード
別のもの: 1つのスイッチがすべての着信呼び出しを1つの場所(避難、閉鎖、インシデント)に送信する。呼び出し先を設定し、オプションコード(例: *55)と許可された拡張子を設定 (章 14)で設定します。ダッシュボード (章 1)でオン/オフを切り替えるか、コードをダイヤルしてオン/オフを切り替えることができます。赤いバーがすべての画面に表示されます。
サイトとオフィスの911
/sitesサイトは建物です。住所と電話が使用するネットワークです。サイトは、緊急通話が呼び出し元の場所を、階や部屋まで特定する方法です。米国では、Kari's LawとRAY BAUM'S Actは、企業の電話システムからこれを正確に要求しています。
サイトの追加
サイト (章 12)で追加を押します。
| フィールド | 内容 |
|---|---|
| 名前 | 人が呼ぶ名前: 本社 |
| 街、市、州または県、郵便番号、国 | 応答者が送信される市民住所 |
| ネットワーク | 電話が使用するアドレス範囲、たとえば10.1.0.0/16;1行につき1つ |
次に、各拡張番号にサイト、階、部屋を指定します。ヘルス (章 13)には、場所のない拡張番号が表示されます。
電話の場所の特定方法
- サイトのネットワークから登録する電話は、そのサイトにあり、拡張番号の階と部屋にあります。
- ホットデスクは、デスク自身のサイト、階、部屋を持ち、サインインした人ではありません。(ホットデスク (章 36))
- サイトのネットワークの外部から登録する電話はリモートワーカーです。新しい場所からの最初の緊急対応可能な登録時に、ユーザーは電話ページでアドレスを確認するように求められます。緊急通話はそのアドレスを持ちます。
- リモートワーカーが確認しなかった場合、通話はまだ発信されますが、通常のサイトとともに、警告はアドレスが確認されなかったことを示します。
サイトの警告
Email when someone calls 911が設定されている場合、指定された人々は緊急通話が開始されると、呼び出し元の名前、拡張番号、サイト、階、部屋を受け取ります。誰かが応答者に会うことができます。通知拡張番号は、電話にメッセージを受け取り、BitVoiceのすべての開いている画面に警告が表示されます。緊急通話 (章 11)を参照してください。
ヘルス
/healthヘルスでは、システムが通話の受付に準備ができているか、また準備ができていない場合は何をすればよいかがわかります。各行では、問題がわかりやすい言葉で説明され、問題を解決するための画面へのリンクが提供されます。すべての変更の後、必ず確認してください。
チェック項目
| チェック | 重要性 |
|---|---|
| 緊急通話の発信 | ルートと動作するトランクが緊急番号を運ぶ |
| 緊急ロケーションのない拡張子 | 911通話が床や部屋を運ばない |
| 電話サービス | SIPがリッスンしているポート |
| 接続されていない電話 | 誰もサインインしていない拡張子 |
| トランク | 登録されているか、登録されていない理由 |
| プロンプトのないメニュー | 呼び出し先が沈黙を聞く |
| タイムゾーン | スケジュールがそれに従う |
| 録音と保持 | ディスク容量、録音の保持期間 |
| 証明書 | TLS証明書の有効期限 |
| キーボールト | ボールトが読み取ることができないシークレット |
| 他のサーバー | 複数のサーバーがデータベースを共有している場合、各サーバーの稼働状況 |
問題は色分けされています。赤は通話を停止するもの(緊急ルートがない)、黄色は確認すべきもの(電話が接続されていない)、灰色は情報提供のみです。
設定
/settings設定には、システム全体に関するすべての情報が含まれます。各セクションは個別に保存され、すべての保存は 変更 (章 61) にリビジョンとして保存されます。
| セクション | 内容 |
|---|---|
| システム | 名称、国、タイムゾーン、言語、電話およびプロバイダーが見る公開アドレス |
| 番号 | エコーテスト番号、ボイスメール番号、パーク番号、緊急番号 |
| コーデック | 使用可能なコーデック(優先順位付き、コーデック (章 66)) |
| 通話記録 | 記録なし、すべての通話、選択した拡張番号;同意ルール;記録の保持期間 |
| サウンド | ボイスメールおよび通話中のクリーンアップ |
| 保護 | ログイン失敗による禁止、信頼できるネットワーク、拡張番号ごとの通話数、プレミアム番号 |
| 緊急 | 呼び出し先のアドレスの送信、通知先、メール先、緊急モード |
| AI | AIサービス、モデル、有効なAI機能(AI (章 28)) |
| シングルサインオン | IDプロバイダー(シングルサインオン (章 58)) |
| Asterisk互換性 | Asterisk用に書かれたプログラム向けのAMIおよびARI(Asterisk互換性 (章 70)) |
| AIアシスタント(MCP) | AIアシスタント(ClaudeやChatGPTなど)が接続できるか、またアクションを実行できるか(AIアシスタント (章 71)) |
| Microsoft 365およびGoogle Workspace | 人物および共有連絡先を連絡先に、カレンダーを不在表示に(連絡先 (章 38)、カレンダー (章 39)) |
| モバイルアプリ | アプリを起動するプッシュサービス |
| メール | ボイスメール、ファクシミリ、警報が通過するメールサーバー |
| キーボールト | AWS Secrets ManagerまたはAzure Key Vaultに保存されたシークレット |
| Gitからの構成 | リポジトリ内のファイルと構成を同期させる |
| データベース | SQLiteまたはPostgreSQL(データベース (章 64)) |
| 証明書 | このインターフェイスおよびSIP over TLSの証明書:Let's Encryptから、手動でインストール、またはBitVoice独自のもの |
パスワードとキーは、保存後は再表示されません。空のままにしておくと、変更されません。ビューアーは、すべてのシークレットが削除された設定を表示します。
証明書とLet's Encrypt
BitVoiceは、自己署名証明書で開始します。これは、ブラウザと電話で警告されます。公開名を持つサーバーの場合、Let's Encrypt を有効にします。名前 (pbx.example.com) と、オプションでメールアドレスを入力し、適用します。BitVoiceは、Let's Encryptから無料の証明書を取得し、Webインターフェイス、SIP over TLS、Teamsで使用し、約30日前に更新します (Let's Encrypt証明書の有効期限は90日以下)。ステータス行には、発行日、更新日、および失敗した場合は理由が表示されます。再試行は、1時間後、次に減少する頻度で、Let's Encryptの制限内で行われます。今すぐ確認 をクリックすると、すぐに試行されます。
Let's Encrypt は、インターネットから各名前でサーバーに到達して、所有権を証明する必要があります。
- http-01 (Web インターフェイスがポート 443 にある場合を除くデフォルト選択): ポート 80 へのリクエスト。BitVoice はポート 80 自身で応答します (Linux では、低いポートを開く権限が必要です。たとえば、
setcap cap_net_bind_service=+ep bitvoice)。または、ルーターでポート 80 を Web インターフェイスのポートに転送します。ポート 80 に到着する他のすべてのものは、証明書の名前のみに対して HTTPS に送信されます。BitVoice がポート 80 を開くことができない場合、Let's Encrypt ボックスは理由と許可方法 (このプログラムの正確なsetcap行または systemd のAmbientCapabilities=CAP_NET_BIND_SERVICE、または別のプログラムがすでにポートを保持している) をアンバーカラーで表示します。 名前のテスト は、Let's Encrypt が行うように、各名前に対してインターネット上でテスト ファイルを要求し、各名前に対して BitVoice に到達したか、別のものに到達したか、または DNS にないかを表示します。いくつかのルーターは、自分のパブリック アドレスを内部にループバックしません (ヘアピン NAT なし)。そこでは、内部からのテストは失敗しますが、外部からの Let's Encrypt は成功します。 - tls-alpn-01: ポート 443 への TLS 接続、Web インターフェイスのポートで応答: ポート 443 で Web インターフェイスを持つサーバーの場合です。
アカウント バインドが不要な他の ACME 認証局 (会社独自の step-ca、テスト用の Let's Encrypt ステージング サービスなど) は、認証局 の下で選択されます。ワイルドカード名には、BitVoice で実行できない DNS 証明が必要です: これらの証明書は手動でインストールしてください。クラスターの各サーバーには独自の証明書が発行されます。
画面の言語
BitVoiceの画面は、英語と13の他の言語(ドイツ語、フランス語、スペイン語、イタリア語、ポルトガル語、オランダ語、ポーランド語、スウェーデン語、デンマーク語、ノルウェー語、フィンランド語、日本語、中国語簡体字)で利用できます。
選択方法
各ブラウザには独自の言語があります。メニュー(テーマの隣の言語リスト)、サインインページ、またはセットアップウィザードの最初のページで選択できます。選択するまで、BitVoiceはブラウザの言語を使用します(ブラウザの言語がリストされている場合)。選択は、このブラウザのみに保存されます。つまり、1つのサーバーで2人のユーザーがそれぞれ異なる言語で作業できます。
すべての画面要素が翻訳されています。メニュー、見出し、ボタン、ヒント、サーバーからのメッセージ、スクリーンリーダーが発表する名前です。検索(⌘K)で、ページ名(英語または選択言語)でページを見つけることができます。次のものは変更されません。ユーザーが入力するテキスト(名前、番号、メモ)、アドレス、コード、エディター内のスクリプト、製品およびプロトコルの名前。日付と数字は、ブラウザーの設定に従います。
翻訳方法と品質
翻訳は、約5,000の画面テキストすべてに対して、大規模な言語モデル(機械)によって生成されます。人間によるチェックは行われていません。画面が生成する一部の文は、読みにくい場合があります。また、用語が2つの場所で2つの方法で翻訳される場合があります。翻訳されていないもの(新しい画面など)は英語のままです。
ヘルプは、英語のマニュアルを保持しています。各章の先頭には、bitvoice.orgにある翻訳された同じ章へのリンクがあります(こちらも機械翻訳です)。
電話側は別です。呼び出し先が聞く音声(プロンプト、ボイスメールメニュー)は、デフォルトのプロンプト言語(サウンド (章 20))で、拡張番号またはキューが独自の言語を持っている場合を除きます。
通話の行き先
呼出者が移動する構成要素: グループおよびキュー、メニューおよびスケジュール、スクリプトおよび AI 受付、ボイスメール、およびすべてを示す図。
通話フロー
/flow全ての状況を確認
全ての状況を確認、呼出フロー (章 16)の最上部では、全ての呼出プランを、発生する可能性のある全ての状況で試行します。これは、サンプルではありません。
- 来年を通じて、実際にスケジュールが到達する、開放と閉鎖の全ての組み合わせ(各祝日を含む)、15分間隔で;
- 日/夜のトグル(または、6つを超える場合は、それぞれが単独で切り替わる);
- 全ての着信ルート、および各メニューで呼び出し先が押すことができる全てのキー、および途中の全ての「誰も応答しない」と全てのキューのタイムアウト;
- 全ての内部番号が全ての緊急番号をダイヤルする。
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.
変更前のチェックは、平易な言葉で尋ねる からの提案と、このリビジョンを復元する の両方で実行されます。どの変更が現在動作しているものを壊すかを示します。
通話を試みる
誰が呼んでいるか(拡張番号または外部番号)、何をダイヤルし、いつ呼んだかを入力し、試してみるを押します。BitVoiceは、実際の通話と同じように通話を追跡しますが、実際には電話が鳴りません。受信ルート、スケジュール、ルーティングスクリプト(サンドボックス内で実行)、メニュー、グループ、キュー、および誰も応答しない場合の動作が表示されます。この通話のパスはマークされ、他の方法(メニューのキー、スケジュールの別の側面)を開くことができます。緑は正常に機能し、黄色は確認が必要(電話が接続されていない、スクリプトがフォールバックする)、赤は通話が失敗します。すべての電話が接続されていると仮定するをチェックすると、設計どおりの計画が表示されます。到着は、1つしか受け取らないルートのトランクを選択します。
ダイアグラム
ダイアグラムは、外部からの通話がどのように流れるかを、ボックスごとに表示します。各受信ルート、メニュー、グループ、キュー、スケジュール、スクリプト、およびそれらが接続する人です。
ボックス(またはTabキーで移動してEnterキーを押す)をクリックして、そこからの通話の先を変更します。ルートの宛先、拡張番号またはグループの誰も応答しない場合、スケジュールの開放および閉鎖先、メニューのキー(その場でキーを追加または削除)、スクリプトのフォールバック、または受付の人の人。保存すると、変更は他の変更と同様にチェックされ、修正が作成されます。フルエディターを開くは、アイテムの独自のページに移動します。受信ルートを追加は、ダイアグラムを離れることなくルートを追加します。
リンググループ
/ring-groupsリンググループは、1つの番号が複数の拡張番号に同時に鳴るものです。セールスチーム、フロントデスクとそのバックアップ、ワークショップのすべての人が対象です。
鳴動戦略
- 同時に: メンバーのすべての電話が同時に鳴り、最初に応答した人が通話を受け取ります。他のメンバーの電話は鳴り止みます。
- 順番に: 各メンバーはグループの鳴動時間内で順番に鳴ります。メンバーを矢印で移動するか、Alt+↑およびAlt+↓で移動します。
カレンダーにミーティングが設定されている、または「着信を拒否」がオンになっているメンバーはスキップされ、グループは他のメンバーに鳴ります。モバイルアプリを使用しているメンバーは、プッシュ通知で起動し、鳴ります。
##誰も応答しない場合 誰も鳴動時間内に応答しない場合、通話は誰も応答しない場合に設定された場所に送信されます。メンバーのボイスメール、キュー、メニュー、別のグループなどです。設定がない場合、通話は呼び出し元が諦めるまで鳴り続けます。
グループ、キュー、またはピックアップのどれを使用するか?
| 使用 | いつ |
|---|---|
| リンググループ | 少数の人が対象で、どれでも通話を受け取ることができ、通話がすぐに鳴る必要がある場合 |
| キュー | 呼び出し元が待たされる可能性があり、順番が聞こえる必要がある場合 |
| ピックアップグループ | 各人が独自の通話を受け取り、同僚が代わりに応答できる場合 |
キュー
/queuesキューは、音楽と共に呼び出し元を順番に保持し、次の空いているエージェントに鳴ります。コンタクトセンターの中心であり、呼び出しが人が受け取るよりも速く来るオフィスでは便利です。
着信の振分け
| 振分け戦略 | どのエージェントが呼び出されるか |
|---|---|
| 最も長くアイドル | 最後に呼び出されてから最も長く待っているエージェント |
| 循環 | 各エージェントが順番に呼ばれ、最後のエージェントから続く |
| 全員に呼び出し | 全てのエージェントが同時に呼ばれる |
| 最も少ない呼び出し | 今日最も少ない呼び出しを受けたエージェント |
| 順番 (線形) | 常にリストの先頭から: 最初のエージェント |
| ランダム | 任意のエージェントが呼ばれる |
| 重み付きランダム | 任意のエージェントが呼ばれるが、ペナルティの低いエージェントが呼ばれる確率が高い |
- 順序: エージェントのリストは順序付けられています。エージェントを上下に移動します。順序とラウンドロビンはそれに続きます。
- ペナルティ ランク エージェント (0 ~ 100、空の場合 0): コールは、ペナルティが最も低い空いているエージェントに提示され、ペナルティが高いエージェントは、ペナルティが低いエージェントが空いていない場合のみ呼び出されます。1 つのキュー内の最初のラインとオーバーフローラインの両方に使用します。
- 重み 共有エージェントを持つキューをランク付けします。重みが高いキューに待機者がいる場合、そのキューのエージェントは、そのキューのコーラーを優先的に処理します。
- ラップアップ エージェントに、コール後に次のコールまでの時間を与えます。
- 最長待ち: 待ち時間が長いコーラーは、キューのタイムアウト先に転送されます。0 の場合、待ち時間は無制限です。
- ホールドミュージック: コーラーは、キューのミュージック (任意の サウンド (章 20) クラス)、システムのミュージック、またはキュー音を聞きます。
- 待機中のコーラーに通知 その順番と、待機時間の予想 (今日回答したコーラーの平均待機時間、分単位) を、キューの言語で、一定間隔で通知します。通知の言葉は、サウンド (章 20) のキューのプロンプトから来ます。プロンプトが録音されるまで、通知は行われません。
The キュー スクリーンはリアルタイムのウォールボード: 誰が待っているか、どのくらい待っているか、そして各エージェントの状態。
エージェント
エージェントは *45 をダイヤルしてすべてのキューにログインまたはログアウトし、*46 をダイヤルして一時停止 (休憩) または再開する; 一時停止またはログアウト中のエージェントは呼び出しを受けない。ウォールボードには同じボタンがあり、エージェントが一時停止した理由が表示される。
| 状態 | 意味 |
|---|---|
| 利用可能 | 空いている; 次の呼び出しを受けることができる |
| 呼び出し中 | 呼び出しが行われている |
| 忙しい | 呼び出しが行われている |
| ラップアップ | 呼び出しが終了し、ラップアップ時間が経過中 |
| 一時停止 | 休憩中で、理由が表示される |
| 不在 | ミーティングまたは時間外で、カレンダーから |
| ログアウト | キューの呼び出しを受けない |
監督者
ライブコール (章 46) の 監視 は監督者の電話を呼び出し、監督者が応答すると 傍受 (誰にも聞こえない) 、 囁き (エージェントのみが聞こえる) 、または 割り込み (両者が聞こえる) を行うことができ、呼び出し中に切り替えることができる。
スティッキー キューと VIP
キューで スティッキー を有効にすると、30 日以内 (または設定した日数以内) に応答した呼び出し (返信呼び出し) は、最後に応答したエージェントが空いている場合、優先的に呼び出される。 VIP 呼び出し はキューの最後に表示され、すべてのキューで優先的に呼び出され、ボードに VIP として表示される。
発信ダイヤラー
/dialer発信ダイヤラー (章 19)は、キュー (章 18)のエージェントの連絡先のリストを呼び出します: 更新、約束のリマインダー、請求、アンケート。各キャンペーンには、キュー、リスト、呼び出し方が異なります:
| モード | 呼び出し方 |
|---|---|
| プレビュー | エージェントが次の連絡先を要求し、詳細を確認し、呼び出します(エージェントの電話が最初に鳴ります)またはスキップします |
| 逐次的 | 各フリーのエージェントにつき1回の呼び出し |
| パワー | 各フリーのエージェントにつき一定数の呼び出し(1から3) |
| 予測的 | BitVoiceは、エージェントごとの呼び出し回数を調整し、放棄された呼び出しが少ない場合に積極的に、放棄率が制限に近づくにつれて控えめにします |
- キャンペーンを追加し、キュー、発信者ID(連絡先が見る番号)、時間帯、電話の鳴動時間、試行回数、試行間隔を設定します。
- 連絡先を開き、リストを追加します: ヘッダー行と
number(またはphone)という名前の列を持つCSVファイルです。nameと他の列は、プレビューでエージェントに表示されます。重複した番号と不正な番号はスキップされます。 - キャンペーンでメッセージを録音します: 誰が呼び出し、理由、そして「これらの呼び出しを受けない場合は9を押してください」というメッセージです。これは、エージェントがフリーでない場合に答えられた人に再生され、また、必要に応じて応答機のあいさつ後に再生されます。
- 開始します。呼び出しは、時間帯内のみに行われ、キャンペーンが一時停止または予定の呼び出しがない場合に停止します。
人と機械。BitVoiceは、応答後の最初の数秒を傾聴します。長い無断の挨拶は答答機です。短い「こんにちは?」と一時停止は人です。機械は切断できます(そして再試行できます)、メッセージを残すことができます、またはエージェントに渡すことができます。疑問がある場合は、応答を人として扱います。
放棄された通話。エージェントが2秒以内に利用可能でない場合に応答した人は、メッセージを聞き、放棄としてカウントされます。パワーダイアルと予測ダイアルの場合、最後の100回の応答での放棄された通話の割合がキャンペーンの制限(変更しない場合は3%、米国規則)を超えた場合、キャンペーンは1つの通話を1人のエージェントにつきダイヤルします。キャンペーンは放棄率、鳴っている通話、利用可能なエージェントを表示します。
着信拒否。どのキャンペーンも、どのリストから来たかに関係なく、着信拒否リストにある番号に通話しません。誰でもメッセージ中に9を押すと、すぐに追加されます。手動で番号を追加するか、API (POST /api/dnc) を使用します。国民登録簿(米国ではFTCのNational Do Not Call Registry:ダイヤルするエリアコードを平文ファイルとしてダウンロード)を選択して、国民登録簿とインポートを選択します。各行の番号はカウントされます (212,5550100 としてFTCが書くように、または1行に1つの番号)。ヘッダーと破損した行はスキップされ、カウントされます。最後のインポートを置き換えるをオンにすると、前のダウンロードの番号は最初に削除されます。したがって、登録簿から削除された番号は再び呼び出されるようになります。手動で追加された番号や9を押して追加された番号は、常に残ります。登録簿は少なくとも31日ごとに更新する必要があります(米国規則)。ページはリストと登録簿からのリストの数をカウントします。APIはPOST /api/dnc/import?replace=1で、ファイルをボディとして使用します。
サウンド: プロンプト、言語、ホールドミュージック
/soundsサウンド (章 20) には、BitVoice が呼び出しに応じて再生するすべての音声や音楽 (グリーティングやメニューのプロンプトを除く) が含まれる。
プロンプト、すべての言語
プロンプト は BitVoice が呼び出しに応じて再生する 1 つの音声: 「PIN を入力してください」、「あなたの順番は」など。ダイヤルバイネーム ディレクトリ、ダイヤルイン (DISA) 、起床呼び出し、キューのアナウンスはこれらのプロンプトで話す。BitVoice には英語、スペイン語、フランス語、ドイツ語、イタリア語、ポルトガル語、オランダ語、ポーランド語のプロンプトが用意されている。数字は数字ごとに読み上げられ、各言語で同じように聞こえる。
- 呼び出しに聞こえる はすべての呼び出しに適用される言語を設定する。キュー、ダイヤルイン番号、ディレクトリ、または拡張子では別の言語を選択できる。
- 各プロンプトは ブラウザで録音 できる、 アップロード できる (任意のオーディオ ファイル; 電話音声に変換される) 、または スピーチサービスで生成 できる (設定で指定されたスピーチ モデルを使用して、1 つのボタンで言語のすべてのプロンプトを生成する)。
- 言語を追加 する (例: sv、ja、pt-BR など) 。その言語のプロンプトは録音またはアップロードされ、英語のプロンプトがガイドとして表示される。
- 言語でプロンプトが見つからない場合、デフォルト言語で再生され、英語で再生される。プロンプトが全くない場合、短い音が鳴るので、プロンプトを 1 つも録音しなくてもすべての機能が利用できる。
ホールドミュージック
ホールドミュージックは クラス (Calm、Jazz、Sales オファーなど) にグループ化され、各クラスはトラックのリストで、連続して再生される (最初から、または シャッフル する) 。ブラウザで読み込める任意の形式のトラック (最大 15 分) をアップロードできる。MP3 と WAV ファイルは、API (PUT /api/music/{class}/{name}) に直接送信して、BitVoice でデコードできる (MPEG-1、2、2.5 Layer III、minimp3 と同じサンプルを生成するデコーダーを使用)。
インターネットラジオ。クラスはトラックの代わりにストリームを再生することができます: インターネットラジオの下にMP3ストリームのアドレス(Icecast、Shoutcast、ほとんどのインターネットラジオ)を入力します。BitVoiceは、最初の呼出者がそのクラスで保留になったときに接続し、1つのストリームをすべての待機者に再生し、最後の呼出者が退出した後半分の1分後に切断します。ストリームに到達できない場合、クラスのトラック(またはトラックがない場合は保留音)が再生され、クラスは理由を表示します。
| 誰が聞く | どの音楽 |
|---|---|
| 保留された誰か | 保留者の拡張子の選択した音楽、またはデフォルト |
| パークされた呼出者 | 呼出者をパークした人の音楽、またはデフォルト |
| キューで待機している呼出者 | キューの音楽、またはデフォルト |
| 会議リーダーを待機している呼出者 | デフォルト |
すべてのデフォルトは保留音になることができますので、音楽を選択するまで何も変わりません。キューまたは拡張子で保留音を選択すると、音がそのまま保持されます。
名前によるダイヤルディレクトリ
/directories名前によるダイヤルディレクトリ (章 22)を使用すると、呼出者は番号を知らなくても誰かを呼ぶことができます: キーパッドで名前の最初の文字を入力します(2はABC、3はDEF、9はWXYZまで)そして接続されます。
- ディレクトリを追加し、名前を付け、番号(411など)を割り当てます。番号を空のままにすると、メニューのオプションとして使用できます。
- 呼出者が入力するものを選択します: 姓(通常)、名、またはどちらでも。
- 誰がリストされるかを選択します。誰もリストされない場合は、電話を持っているすべての人がリストされます。
呼出者は「名前の最初の3文字を入力してください」と聞きます。1つのマッチがすぐに接続されます。複数のマッチがある場合は、8件ずつ読み出されます: 各人の名前、その後「この人に電話するには1を押してください」など、9はさらに多くの名前です。マッチしない場合は「誰もマッチしません」というメッセージが表示され、再試行します(3回まで)。
発音された名前: 各人の拡張子で名前を録音します(発音された名前: ブラウザで録音するか、ファイルをアップロードします)そして、ディレクトリはそれを読み出します。ディレクトリの独自の言葉は、サウンド (章 20)のディレクトリのプロンプトから来ます。
ダイヤルイン(DISA)
/dial-inダイヤルイン (章 23)(DISA、「直接内向きシステムアクセス」)を使用すると、誰かが外部から電話し、自分が誰であるかを証明し、再びオフィスを通じて電話をかけることができます: 呼出はオフィスの発信者ID、ルート、レートで行われます。まるで彼らが机の前にいるかのように。
- ダイヤルインを追加し、PIN(4から10桁)と、許可された番号(これらの番号のみから)、または両方を設定します。2つのうち1つは必須です。
- 呼出が行われる拡張子を選択します: その外部呼出の許可、発信者ID、および発信ルートが適用されます。外部呼出が許可されている必要があります。
- 内部でダイヤルする番号を割り当て、呼出ルーティング (章 8)(ダイヤルインを宛先として選択)に電話番号を送信します。
呼出者は「PINを入力してハッシュを押してください」と聞きます。その後、「電話番号を入力してハッシュを押してください」と聞きます。接続されます。言葉は、サウンド (章 20)のダイヤルインのプロンプトから来ます。
音声ボット(AudioSocket)
/voice-botsボイスボット (章 24)は、独自のプログラム (AIエージェント、音声認識IVR、レコーダー) で、AudioSocketを介して呼び出しを受け取ります。AudioSocketはAsteriskが使用するシンプルなプロトコルです。BitVoiceは呼び出しに応答し、ボットへのTCP接続を開き、呼び出しのUUIDを送信し、次に呼び手の音声を20msフレームの8kHz 16ビットリニアオーディオとして送信し、各キーの押下を送信します。ボットが送信する音声は呼び手に再生されます。AsteriskのAudioSocket用に書かれたボットやスピーチサービスコネクタは、BitVoiceで変更せずに使用できます。
- 音声ボットを追加:その名前、ボットのアドレス (
10.0.0.9:9092)、および、オプションで、そのボットにダイヤルする番号。 - ボットが呼び出しを受けられない場合、または切断した場合に、呼び手がどこに行くかを選択します(人、キュー、ボイスメール):必須です。ボットがダウンしているために呼び手がドロップされることはありません。
- 呼び出しルーティング (章 8)から、メニューのオプション、スケジュール、またはトグルから呼び出しをボットに送信します。
ボットがAudioSocketの切断を送信すると、呼び出しは終了します。呼び手が切断すると、ボットに1つの切断が送信されます。3秒以内に到達できないボット、または切断せずに切断されたボットは、呼び手をフォールバックに渡し、障害はログに記録されます。
既に進行中の呼び出しにプログラムを参加させるには(傍受トランスライター、誰にも囁かないアシスタント)、ARIの外部メディアを使用します。Asteriskの互換性 (章 70)を参照してください。
日/夜トグル
/toggles日/夜切り替え (章 25)は、呼び出しフロー (FreePBXではコールフローコントロールと呼ばれます) の切り替えスイッチです。呼び出しは、通常の先行先に転送されます。あるいは、誰かが切り替えを実行している間、別の先行先に転送されます。例えば、オフィスが嵐のために早めに閉じた場合、誰かが*281をダイヤルして切り替えを実行し、切り替えが元に戻るまで、呼び出しはボイスメールに転送されます。切り替えは、再起動を跨いで保持されます。
- トグルを追加、コード(1から3桁:
*28の後にダイヤル)を指定し、通常と切り替わったときの呼び出しの宛先を選択します。どちらの側もスケジュールになる可能性があります。したがって、トグルは営業時間の前に配置できます。 - 電話から切り替えることができる人を選択します(誰も選択しないと、どの拡張子でも切り替えることができます)。
- 呼び出しルーティング (章 8)から、メニューのオプション、またはスケジュールから呼び出しをトグルに送信します。
*28とコード(上昇トーン:切り替え、下降トーン:通常)をダイヤルして切り替えます。トグルページの隣の切り替えも使用できます。または、API (POST /api/toggles/{id}/state) を使用します。トグルが切り替わっている間、*281を監視するバズィランプキーは点灯します。したがって、閉じる人がデスクから見ることができます。トグルコード自体は、機能コード (章 32)にあります。
スケジュール
/schedulesスケジュールは、開いているときは一方に、閉じているときは他方に通話を送る。受信ルートをスケジュールに指向し、スケジュールをメニュー(開いているとき)とボイスメール(閉じているとき)に指向する。
営業時間
各行は曜日と時間からと時間までのセットである。複数の行が許可される:月曜日から金曜日は9:00から17:00、土曜日は10:00から13:00。営業時間は深夜を跨ぐことができる(22:00から06:00)ため、夜間シフトに使用する。
休日
休日は、営業時間に関係なく、終日閉じているとみなされる。各日付を名前とともに追加する;名前は、Call flow (章 16)でその日に通話を試みたときに表示される。
時間帯
時間帯は、Settingsで指定したものである。時計が変わると、スケジュールはローカル時間に従う。
スクリプト(JavaScriptおよびLua)
/scriptsスクリプトは、メニュー、スケジュール、グループだけでは不十分な場合に、通話をどこに送るかを決定する:特定の地域からの呼び出しを特定のオフィスに、VIP番号を直接人に、独自のデータから決定する。あるいは、通話全体を実行に設定すると、通話に答え、AsteriskのダイヤルプランやAGIスクリプトのように実行する:プロンプト、音声、キー、録音、着信、渡し(以下)。スクリプトは、Scripts (章 27)でJavaScriptまたはLuaで書かれる。
デザインによる安全性
- ルーティングスクリプトは、200ミリ秒を超えて実行されない。失敗したり時間がかかりすぎたりすると、通話はスクリプトのフォールバックに送られるため、ミスは決して通話を失わない。(呼び出しスクリプトには、以下に記載されている独自の制限がある。)
- サンドボックスで実行される:ネットワークやディスクにアクセスできない。ルーティングスクリプトは選択のみを行い、呼び出しスクリプトは以下に記載されている手順のみを実行できる。
- 緊急呼び出しは、決してスクリプトを実行しない。
スクリプトの見え方
call には:
| フィールド | これは何ですか? |
|---|---|
from, fromName | 発信者の番号と名前 |
to | ダイヤルされた番号 |
direction | inbound または internal |
trunk | これが来るトランク |
weekday, hour, minute | 現在の時間 (0 は日曜日) |
date | YYYY-MM-DD |
これが返すもの
目的地、 {type, target}: type は extension, ringgroup, queue, menu, schedule, voicemail、または hangup であり、target はその番号です。何も返さない場合は、フォールバックを使用します。 log("text") は、スクリプトの実行リストに書き込みます。
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
スクリプトの使用方法
受信ルート、メニューキー、またはスケジュールをスクリプトに指します。 テスト は、呼び出しを実際に発信せずに、説明した呼び出しで実行します。実行リストには、実際の実行ごとに決定、所要時間、およびエラーが表示されます。 呼び出しフロー (章 16) も、呼び出しを試みるときにスクリプトを実行します。
呼び出し全体を実行するスクリプト
呼び出し全体を実行 を選択します。スクリプトは呼び出しに応答し、上から下に向かって実行されます。各ステップは、完了するまで待機します。
| Step | What it does |
|---|---|
play(name) | plays a prompt from Sounds (章 20) in the caller's language (goodbye, digit-5...), digits:1234, or a tone: beep, confirm, error, off, hold. A prompt not recorded yet is a beep. |
say(text) | speaks the words with the speech service in Settings, AI (a beep without one) |
collect({max, timeout, interDigit, end, say, prompt}) | gathers keys: at most max (32), waiting timeout seconds for the first (5) and interDigit for each next (3), until end (#). say or prompt asks first. Returns the keys, "" when none. |
record({box, seconds, beep}) | records a message into an extension's mailbox, until # or the time; returns its seconds |
wait(seconds) | waits, returning a key pressed |
dial(destination, ringSeconds) | rings it with the caller hearing ringback. Answered: they talk and the script is done (true). Not answered: false, and the script carries on. |
transfer(destination) | hands the call on; the script is done |
hangup() | ends the call |
log(text) | writes to the run list |
目的地は、番号 (ここでは拡張子、リンググループ、またはキュー、または外部番号を経由する出発ルート; 緊急番号はありません) または上記のように {type, target} です。サウンド中に押されたキーはそれを停止します。 play と say はそれを返し、次の collect はそれから始まります。目的地を返すと、呼び出しはそこに送られます。
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 には同じステップ (collect{max = 1}) があります。スクリプトに ダイヤルする番号 を与えて、拡張子から呼び出します。
その制限は、呼び出しを安全に保ちます。スクリプトの独自のコードは、2 つのステップ間で最大 0.25 秒実行できます。呼び出しは最大 1,000 ステップを取ります。スクリプト全体は、最長実行時間 (10 分、または指定した場合、最大 60 分)後に停止します。失敗した場合、停止された場合、または終了せずに終了した場合、呼び出しは フォールバック に移動します。呼び出し者が電話を切断すると、すぐに停止します。 試してみる は、指定したキーのシーケンスでスクリプトを実行し、各ステップをリストし、呼び出しを発信しません。
AI 受付、ボイスメール トライエージ、質問
/receptionistsAI 機能は、設定 (章 14) で指定された AI サービス (デフォルトは OpenRouter) または独自のサービスを使用します。必要な情報はサービスに送信されるため、信頼できるサービスを選択してください。911 センターの場合、政府のクラウドはローカルとみなされます。
AI 受付
受付として呼び出し先を選択します: ルート、メニュー オプション、または拡張番号の 応答なし。自動応答であることを表示し、承認情報 からのみ応答し、メッセージを残し、コールバックを予約します (詳細は コールバック (章 30) を参照)。0 を押すか、人に応答するように依頼すると、常に有人に接続され、AI サービスまたは音声モデルに問題がある場合も、呼び出し先は AI によってブロックされることはありません。
モデル
モデル はテキスト処理を実行します: 要約、受付の応答、平文での質問。音声からテキストへの変換には、オーディオを処理できるモデルが必要です。音声テキスト モデル (例: google/gemini-2.5-flash on OpenRouter) を設定して、テキストのみのモデル (例: meta-llama/llama-3.3-70b-instruct) を使用します。
ビルディング内の音声テキスト
言語モデルを使用せずに音声を書き留めることができます。音声認識器 (whisper) がオーディオを聞き取り、発言内容を書き留めるだけです。 誰が音声を書き留めるか、AI 設定では、3 つの選択肢があります。
- 上記のモデル: オーディオは AI サービスに送信され、モデルはオーディオを受け付ける必要があります。
- このサーバー: BitVoice 自身で whisper を実行します。 Whisper モデル を選択して保存します: BitVoice は一度、whisper.cpp プロジェクトからモデルを取得します (
baseは 60 MB;small、medium、large-v3-turboはより正確で遅いです; すべて約 100 言語を理解します)。公開された SHA-256 と比較して検証し、whisper.cpp のwhisper-serverを 127.0.0.1 で起動します。停止した場合は再起動します。呼出音声はコンピューターから出ないため、通話ごとに支払いは発生しません。whisper-server(MIT ライセンス) は、BitVoice のダウンロードに含まれています。インストーラーは、BitVoice の隣に配置します。BitVoice は、独自にインストールされたもの (brew install whisper.cpp) も見つけます。設定では、状態が表示されます (モデルを取得中、起動中、実行中、または実行できない理由)。ヘルス (章 13) でも表示されます。実行中でない場合、書き留めは失敗し、理由が表示されます。代わりに他の場所に送信されることはありません。 - 音声テキストサービス: ビルディング内の別のコンピューター (
http://192.168.1.20:8178/inference) 上の whisper.cpp のwhisper-server、または任意の OpenAI 互換の…/audio/transcriptions( そのモデル、たとえば whisper-1、 そのキー と共に)。プライベート ネットワーク アドレスまたはこのコンピューターへのプレーンhttpのみを受け付けるため、他のすべての場合はhttpsが必要です。実行するには:whisper-server -m ggml-base-q5_1.bin --host 0.0.0.0 --port 8178 -l auto
誰が書いたかはわかりませんが、すべての書き起こしはそこに保存されます: ボイスメール、録音された通話、生の911通話、および受付担当者が発信者を聞くとき。モデルがない場合、モデルは空のままにすることができます: 書き起こしは書かれ、要約は事実から書かれます (以下参照)、言語モデルが必要なもの (アクションアイテム、ボイスメールのトライエージ、通話の洞察、受付担当者の返答、平易な言葉での質問) は省略されます。認識器が何を聞いたかについてのメモ、たとえば [BLANK_AUDIO] または (silence) は削除されます。つまり、静かな部分は何も言われていないように読み取られることはありません。
通話で述べられた事実 (言語モデルなし)
すべての書き起こしは、言語モデルなしで、ルールによって読み取られます。ルールでは、通話担当者が注目する事実が抽出されます: 什么が起こったか、どこで起こったか、誰がけがをしたか (または誰もけがをしていないか)、状態 (呼吸、目を覚ましている、出血 ...)、危険 (火災、煙、ガス、武器、化学物質、燃料)、車両、発信者が必要な人との関係、およびコールバック番号。各事実は、文と発言者の側面とともに、書き起こしの 通話で述べられた事実 に表示されます。モデルがない場合、要約はこれらの事実のみから書かれ、そこに書かれています。
- 誰も言わなかったことは追加されません。 "誰もけがをしていない" は事実の 1 つです; 発信者が誰かの言葉を伝えている ("彼女は彼が呼吸をしていないと言っている") は 報告 としてマークされます; "24 パイン レーン。いいえ、すみません、42" は 42 を保持します; 素の "いいえ" は直前に聞かれた質問に答えます。
- それは忠実ですが、完全ではありません: 認識できない単語は見落とされます。 3 つのセットの作成された 911 通話 (実際の発信者の言葉は使用されていません) について、次のことがわかります:
| セット | 見つかった事実 | 誰も期待していない事実 |
|---|---|---|
| トレーニング (ルールはこれから書かれました) | 41 個中 41 個 | 0 |
| ホールドアウト、スコアリング前、ルールが書かれる前 | 40 個中 27 個 (67%) | 2 |
| ホールドアウト、ルールの 2 回目の書き込み後 | 40 個中 40 個 | 0 |
| シール、スコアリング前 (ルールはこれから書かれません) | 43 個中 23 個 (53%) | 3 |
シール スコアは、見たことがない通話での期待スコアです。3 つのセットは、ルールと同じ人によって書かれました。つまり、実際の通話では、より低いスコアになる可能性があります。事実は書き起こしの隣で読み取り、代わりに読み取るのではなく、常に読み取ります。
より大きなモデルは、より多くのプロセッサを必要とします: サーバーが一度に多くの通話を書き出す場合、base から始めるか、GPU を使用してビルのスピーチ トゥ テキスト サービスを使用します。 Apple コンピューターでは、whisper は GPU を使用します。
ボイスメールのトライエージ
ボイスメールを書き起こし、要約する をオンにすると、各メッセージは緊急度 (緊急、通常、低優先度) と種類 (セールス、サポート、請求 ...) でマークされます。緊急メッセージは、すべての管理者の画面にアラートを表示します。
平易な言葉で尋ねる
変更 (章 61) で、変更 ("午後 5 時以降のセールス通話をボイスメールに送信する") を説明します。 AI はそれを提案し、BitVoice はそれを他の変更と同じようにチェックし、正確に何が変わるかを表示します。何も変更されません。 適用 を押すまで、そしてそれが復元できるリビジョンになります。パスワードは AI に送信されません。
ボイスメール
/voicemail各拡張子にはメールボックスを設定できます。応答しなかった場合、呼び出し者はあいさつを聞き、メッセージを残します。該当者は、電話で聞いたり、画面で読んだり、メールで受け取ったりします。
ボイスメールの有効化
拡張子で ボイスメール を有効にします。 誰も応答しない場合 は、メールボックスに設定されます。 PIN (4 ~ 10 桁) を設定します。PIN は、他の電話からメールボックスを開き、スタッフ ポータルとホット デスクにサインインします。
| 設定 | これは何をしますか? |
|---|---|
| 最長メッセージ | 10 ~ 900 秒 (デフォルトは 180) |
| 新しいメッセージをメールで送信 | 拡張子のメール アドレスに、メッセージが添付されて |
| あいさつ | ブラウザで録音、または電話からアップロード、または録音します。なければ、呼び出し者はビープを聞きます |
メッセージの聞き方
- 拡張子の電話から、
*97をダイヤルします。メッセージは新しいものから再生されます。キーを押して、各メッセージを再生、削除、または保持します。 - 他の電話から、
*97をダイヤルし、メールボックス番号と PIN を入力します。 - ボイスメール (章 29) (管理者) またはスタッフ ポータル (該当者) で: 再生、既読マーク、削除。
- 新しいメッセージがある場合、電話のメッセージ ライトは点灯します。
AI を使用する場合
ボイスメールを書き出して要約する (設定、AI) を有効にすると、各メッセージは書き出され、1 行で要約され、種類 (営業、サポート、請求) に応じて緊急、通常、または低優先度としてマークされます。緊急メッセージは、すべての管理者の画面にアラートを表示します。 AI (章 28) を参照してください。
サウンドのクリーンアップ
サウンドのクリーンアップ (設定) は、メッセージを保存するときに、一定の背景ノイズを除去し、レベルを均一にします。したがって、車の中や混雑した通りからのメッセージは、聞きやすくなります。
コールバック
/callbacks返信用に依頼した人。AIレセプションが依頼された場合、コールバックを予約します。コールバックでは、名前、呼び出す番号(呼び出している番号を提供)、適切な時間、内容を収集し、読み返し、同意した場合のみ予約します。正確な時間を約束することはありません。管理者は手動でコールバックを追加することもできます。
新しいコールバックは、すべての開いている画面にアラートを表示し、レセプションの メッセージを受け取る メールボックスの所有者にメールが送信されます(その拡張子にメールアドレスが設定され、設定でメールが設定されている場合)。
返信用に、自分の拡張子を選択し、 返す を押します。まず自分の電話が鳴り、受話した後、BitVoiceが通常のルートと発信者IDで番号に電話します。次に、メモを追加する場合は 完了 を押します(または キャンセル )。完了したコールバックは、開いているものの下に保持され、再度開くことができます。
コール リンクと Web サイトからの呼び出し
/call-linksコール リンクは、ブラウザからビジネスに直接電話をかけられる Web アドレスです。電話番号やアプリは不要です。メール サインに配置したり、チラシや店舗の窓に QR コードを印刷したり、Web サイトに Web ボタン を貼り付けたりします。
コール リンク (章 31) で、リンクを追加し、呼び出しの行き先 (拡張子、グループ、キュー、メニュー、AI 受付、スケジュール、またはボイスメール) を選択し、保存します。ページにはアドレスと QR コードが表示されます。呼び出し者は、タイトルとあなたが設定した言葉を確認し、名前を入力するように求められ (あなたが要求した場合)、マイクを許可し、今すぐ呼び出し を押します。キーパッドはメニューで機能します。誰が応答しても、Web: と呼び出し者の名前が表示されます。
開く をオフに切り替えて、ラインを閉じます (ページにはその旨が記載されます)。 同時呼び出し では、1 つのリンクを介して同時に呼び出される呼び出しの数を制限します (設定しない場合は 5)。アドレスには、推測できない長いランダムな部分が含まれているため、繰り返し間違ったアドレスは、失敗したサインインと同様にブロックされます。呼び出し者のマイクは、ページが HTTPS で提供されている必要があります。したがって、HTTPS アドレスを配布します。
日常の通話
人々が毎日電話で行うこと、および自分で設定すること: 転送、フォローミー、ピックアップ、会議室、ページング、ホット デスク、ファックスおよびテキスト。
機能コード、転送、高速ダイヤル
/codes機能コードは、ユーザーが自分の設定を変更し、機能にアクセスするために電話でダイヤルするものです。これらは、電話自体に設定を必要とせずに、すべての電話 (デスク電話またはソフト電話) で機能します。上昇トーンは完了を示し、下降トーンは拒否を示します。
コードの一覧
| コード | 機能 |
|---|---|
*72 | すべての着信を転送する (番号と #、または番号のみ: *722125550199) |
*73 | すべての着信の転送を停止する |
*90 / *91 | 通話中の転送 / 停止 |
*52 / *53 | 着信応答なしの転送 / 停止 |
*78 / *79 | 着信拒否のオン / オフ |
*76 | 着信拒否の切り替え (上昇トーン: 現在オン) |
*21 | フォローミーのオン / オフの切り替え |
*8 | ピックアップグループの着信を応答する |
** と拡張子 | 指定の拡張子の着信を応答する |
*80 と拡張子 | インターコム: その電話がスピーカーで応答する |
*0 とコード | スピードダイヤル |
*62 | 起床呼: 聞く、予約する (4 桁、例: 0630) またはキャンセル (星) |
*68 と数字 | 部屋の状態、ホテルのハウスキーピング用 |
*28 とトグルコード | 日/夜トグル (章 25) を切り替える、または戻す |
*32 | 最後の着信者をブロック: 最後の外部番号がこの電話に着信したブロックリスト (スパム保護 (章 56)) に追加される |
*43 | エコーテスト |
*97 | 自分のボイスメール |
70 | コールをパーク (転送); 71 から 79 までを取り出す |
*45 / *46 | キュー エージェント: ログインまたはログアウト / 一時停止または再開 |
*33 / *34 | ホットデスクにサインイン / サインアウトする |
*7 / *8 (通話中) | 録音を一時停止および再開する (カード支払い) |
転送
*72を使用すると、すべての呼び出しが転送されます。コードをダイヤルし、トーンを聞き、次に番号と#をダイヤルします。または、コードの直後に番号をダイヤルします。*90は、呼び出しが来ている間に呼び出しが転送されます。*52は、呼び出しが応答しない場合に呼び出しが転送されます。*73、*91、*53を使用すると、これらの転送をキャンセルできます。
他の拡張子への転送は、その拡張子の独自の設定 (ボイスメール、フォローミー) を使用します (最大4回のホップ)。外部番号への転送は、発信ルートを経由し、外部呼び出しを許可する必要があります。
転送は、設定ではなく、実行中の状態です: 設定すると、リビジョンは作成されず、再起動を超えて保持されます。拡張子 (章 3) とスタッフポータルでは、転送を表示および変更できます。
通知しない
*78 でオン、*79 でオフ、*76 で切り替えます。通知しないがオンの場合、呼び出しはボイスメールまたは拡張子の応答なしの宛先に転送されます。手動で設定された通知しないは、カレンダー (カレンダー (章 39)) を上書きします。緊急のコールバックは、まだ鳴ります。
フォローミー
*21 は、フォローミー番号が設定された拡張子 (拡張子自身またはスタッフ ポータルに設定) に対してフォローミーをオン/オフします。机は最初にその鳴り時間で鳴り、次にフォローミー番号を一つずつまたはすべて同時に鳴らします。外部番号で 1 を押す がオンになっている場合、相手は音を聞いて 1 を押して通話を受け付けます。ボイスメールまたは無音は決してそうせず、15 秒後に通話は次に進みます。
他人の電話に応答する
*8はあなたの ピックアップ グループ (各拡張子に設定; 名前は大文字/小文字を区別せずに比較) 内で最も古い鳴っている電話に応答します。**と拡張子はその拡張子で鳴っている電話に応答します:**101。
インターコム
*80 と拡張子は自動応答でその拡張子を呼びます: その電話はスピーカーで応答し、両側で話すことができます。Yealink、Grandstream、Snom は BitVoice の Call-Info ヘッダーを読み取り、Poly は Alert-Info を読み取ります; 一部の電話では、電話自身の設定でインターコムを許可する必要があります。拡張子はインターコムを拒否できます; その場合、電話は通常の方法で鳴ります。ドア ステーションは決してインターコムを受け付けません。
スピード ダイヤル
*0 とコードは保存された番号をダイヤルします: *05。会社のスピード ダイヤルはこのページにあります; 各人は拡張子またはスタッフ ポータルに独自のスピード ダイヤルを持つことができ、会社の同じコードを持つものよりも優先されます。コードは 1 から 3 桁です。
コードの変更
すべてのコードは 機能コード (章 32) で変更できます、または off で無効にできます。2 つの機能はコードを共有できません。また、コードは拡張子またはグループの番号にはなり得ません: BitVoice はどれが競合するかを示します。エコー、ボイスメール、パーク番号は 設定 (章 14) にあります。
スタッフポータル
スタッフポータルにより、管理者なしで各自が自分の通話を管理できます。着信拒否、転送、フォローミー、速呼、ボイスメールとそのあいさつ、PIN、自分の通話の一覧です。サーバーのアドレスの #/me にあり、サインインページからリンクされています。
サインイン
各人は 拡張番号 と ボイスメールPIN でサインインします。電話からボイスメールを開くときと同じPINです。PINのない拡張子はサインインできません。管理者が拡張子にPINを設定します。
同じアドレスからの繰り返し試行は、10分間ロックアウトされます。ポータルのセッションは、常に各自の設定のみに到達します。別の拡張子、設定、または誰かの録音には到達できません。
各人ができること
| タブ | 内容 |
|---|---|
| 着信先 | 着信拒否;毎回の通話、忙しいとき、応答しないときの転送;フォローミー番号;自分の速呼 |
| ボイスメール | 再生および削除するメッセージ、AIがオンの場合のトランスクリプトとサマリー;あいさつを録音またはアップロード |
| 自分の通話 | 自分の通話の一覧、新しいものから、録音なし |
| PIN | PINの変更、現在のPINの入力 |
ここで設定した転送と着信拒否は、電話から機能コードで設定したものと同じです(機能コード (章 32) を参照)。最後に設定したものが有効です。フォローミー番号と速呼は、拡張子の設定の一部なので、変更すると 変更 (章 61) に修正が作成され、各自のものとして記録されます。
チャットとプレゼンス
ポータルの チャット タブには、同僚の現在の状態が表示されます: 利用可能, 通話中, 着信, 不在 (ドンドン打ち止め、会議またはカレンダーからの休暇、理由付き) または オフライン (電話未接続)、および入力したステータス (「昼食中、14時に戻ります」)。誰かを選択してメッセージを送信できます。メッセージはすぐに到着し、名前の横に未読数が表示されます。 チームルーム (設定、スタッフチャット) は、グループまたはメンバーが指定されていない場合はすべての人の会話です。
メッセージは、会話に参加している人だけが見ることができます。管理者はルームを管理しますが、メッセージを読むことはありません。設定、 スタッフチャット でチャットをオフにしたり、メッセージを保持する期間を設定できます (0 で会話ごとに最新の 1000 件を保持)。
会議ルーム
/conferences会議ルームは、複数の人々が同時に話し合うためにダイヤルする番号です。スタッフはデスクからダイヤルします。外部からの呼び出しは、受信ルートまたはルームを指すメニューオプションを介して到達します。
ルームの設定
- 会議ルーム (章 34) を開き、 会議ルームの追加 を押します。
- 番号 (任意の空き番号、デフォルトは 500) と 名前 を入力します。
- オプションで PIN を設定します。呼び出し先は音を聞き、PIN を入力して # を押します。PIN が 3 回間違えると、呼び出しは終了します。
- オプションで リーダー PIN を設定します。これは PIN と異なります。誰かがそれを入力すると、リーダーとして参加します。
- 外部からの呼び出しを許可するには、受信ルート (またはメニューキー) をルームに指します。
オプション
| オプション | 機能 |
|---|---|
| リーダーを待つ | リーダーが参加するまで、他の参加者は保留音を聞きます。最後のリーダーが退出すると、ルームは閉じられ、すべての参加者は切断されます。リーダー PIN が必要です。 |
| 参加者をミュート | ブリーフィングや講義用: リーダーが話し、参加者は聞きます。参加者は 1 を押して話すことを求め、リーダーは参加者をミュート解除します。 |
| ルームの録音 | 全体のシステムで録音がオフになっていない限り、ルーム全体が 1 つの録音として 通話履歴 (章 47) に保存されます |
| 参加・退出時の音 | デフォルトでオン |
| 同時参加者数 | デフォルトで 50、最大 200 |
通話中のキー
1自分のミュートとミュート解除 (参加者がミュートされているルームでは、話すことを求めます)。2リーダー用: ルームをロックして新しい参加者を拒否し、ロックを解除します。
ルームの使用中
使用中のルームはページに表示され、誰が参加しているか、誰が話しているか (緑のライト)、誰がミュートされているか、誰が話すことを求めているか、誰がまだリーダーを待っているかが表示されます。管理者は誰でもミュートまたはミュート解除したり、参加者を削除したり、ルームをロックまたはロック解除したりできます。
ルーム内のすべての参加者は、ミュートされていない他の参加者を聞きます。各人の電話は独自のコーデックを使用できます。各参加者の通話ごとに通話レコードが保持され、ルーム自体のレコードも保持されます。
HD オーディオ
ルームで HD オーディオ をオンにすると、8 kHz ではなく 16 kHz でミックスされます。ワイドバンド電話 (G.722、Opus、ブラウザ電話) を使用する人は、HD で互いに話します。通常の電話 (G.711、プロバイダー経由のモバイル) を使用する人は、通常のルームを聞きます。ライブビューでは、ルームと HD のメンバーがマークされます。HD には、電話が使用するコーデックに G.722 が含まれている必要があります (システムのリストの先頭、設定、コーデック)。ルームの録音は電話の品質のままです。
ビデオルーム
ルームで ビデオ をオンにすると、ビデオ電話 (およびソフトフォン) がカメラを送信し、1 つの画像を表示します。話し手に切り替わります (Asterisk の ConfBridge と同様)。
- 話し手の追跡: 誰かが 1 秒間話した後、1 秒間話していない場合、すべての参加者が話し手を表示します。話し手は、前に話した人を表示します。
- リーダーの表示: すべての参加者がリーダー (リーダー PIN で参加) を表示します。リーダーは、最後に話した人を表示します。
- グリッド: すべての参加者が同時にすべての参加者を表示します (1 つの画像が画面を埋め、2 つの画像が横に並び、2x2、3x3 まで、最大 9 つの画像)。各参加者は、参加順に自分の場所に表示されます。
BitVoice は画像をデコードせずに切り替えますので、ほとんどコストがかかりません。また、各新しい画像の電話に完全なフレーム (RTCP PLI および FIR、およびほとんどのデスク電話が回答する SIP INFO 画像の高速更新) を要求するので、切り替えはすぐに表示されます。各参加者のビデオはルームの ビデオコーデック (H.264 であるか、VP8 を選択しない限り) を使用します。ビデオコーデックのない電話は、音のみで参加します。各ビューアーは、1 つの安定したストリーム (1 つのソース、独自のペイロードタイプ) を取得します。画面に表示されている誰かがビデオを使用しているかどうか、画面に表示 されているかどうかがライブビューにマークされます。
グリッドは異なります: BitVoiceはサーバーのffmpegにすべての画像を渡し、デコードして1280x720の画像に15フレーム/秒で配置し、1回だけすべての人が見るためにエンコードします。 ffmpegをインストールします (設定、ビデオ変換、見つかったかどうかを示します)。見つからない場合は、グリッドルームはスピーカーに従います。ルームの画面にはその旨が表示されます。各画像はプロセッサ時間を消費します: 小さなサーバーの場合は、同時に数個のルームにのみグリッドを保持します。カメラが送信しているメンバーのみが表示されます: ビデオなしで参加する人や、カメラが停止した人はグリッドから抜けます (静止したカメラでは凍結しません)。変更すると、数秒以内にグリッドが再構成され、画像に短い一時停止が生じます。10人目以降は音声のみが聞こえますが、表示されません。ライブビューにはグリッドのサイズとグリッド内のメンバーが表示されます。
すべてのビデオ (ブラウザ)
すべてのビデオを選択すると、ルームには独自のページが作成されます (会議ルーム、ビデオルームを開く、または #/video-room/NUMBER)。各人はカメラで参加を押します: ブラウザはカメラを1回送信し (3つのサイズで同時送信)、他のすべてのカメラを独自の画像で受信します。BitVoiceは画像をデコードせずに転送します (選択的な転送ユニット、SFU)。したがって、プロセッサ時間のコストは少なく、各ブラウザのアップロードと各ビューアーのダウンロードがルームを制限するため、最大16個のカメラを使用できます。
- 大きな画像はカメラのフルサイズを取得し、小さな画像は小さなサイズを取得します。大きくするを押すと、サイズを入れ替えます。入れ替えは、新しいサイズの次の完全な画像で発生し、BitVoiceはすぐに要求します (RTCP PLI)。
- アップロードが不足しているブラウザは、最大サイズの送信を停止します。ビューアーは、まだ送信されている最大サイズを受信します。
- 音声はルームの会議です: 参加するとルームがブラウザ電話で呼び出され、電話からルームにダイヤルした人はすべての音声を聞きます。ビデオ電話は、話している人を表示します。
- PINが設定されたルームは、ページでPINの入力を求めます。ページにはBitVoiceへのサインインが必要です。
画面の共有: 画面を共有 をクリックし、ブラウザーのピッカーで画面、ウィンドウ、またはブラウザータブを選択します。部屋のすべての人が、大きな画像として表示され、テキストは鮮明に表示されます (ネットワークが遅い場合、画像のレートが低下します)。カメラを接続する必要はありません。 共有を停止、またはブラウザーの 共有を停止 バーをクリックして停止します。
- 部屋では、1 つの共有画面のみが表示されます。誰かが共有している間、他の人のボタンは待機状態になり、共有している人物の名前が表示されます。共有された画面は、16 台のカメラにカウントされません。
- 別の人物を大きな画像にするには、 大きな画像にする をクリックします (カメラと同じように)。画面は部屋に残ります。
- 画面の画像のみが共有され、音は共有されません。部屋の音は、会議のままです。
- 画面の共有ができない電話ブラウザー (ほとんどの電話ブラウザー) では、ボタンがグレーアウト表示されます。デスク電話やビデオ電話などの部屋にダイヤルする電話は、共有された画面を表示しません。話している人物を表示します。
ページングとオーバーヘッド スピーカー
/pagingページングは一度に多くの電話を鳴らします: ページング番号をダイヤルし、電話グループのすべての電話が自動的にスピーカーで応答します。倉庫、学校、店舗フロアへのアナウンスに使用します。
ページンググループの設定
- ページング (章 35)でページンググループの追加を押し、番号(デフォルトは800)と名前を付ける。
- 電話を選択する。オーバーヘッドスピーカー(拡声器)を拡張子(種類オーバーヘッドスピーカー)として設定したものもメンバーになることができる。
- オプションとして、マルチキャストアドレスとポート。
マルチキャスト
マルチキャストも、マルチキャストアドレスとポート(239.0.1.10:5000)にページを送信し、G.711 µ-lawとしてオーバーヘッドスピーカーと多くのデスク電話が呼び出しごとに聞くことができる。グループにはマルチキャストアドレスのみが含まれる場合がある。1つのネットワークで動作する。ルーターは、マルチキャストを許可するように設定されていない限り、マルチキャストを通過させることはない。
ページングとインターコム
| ページング | インターコム | |
|---|---|---|
| 誰が聞く | グループ内の全員 | 1つの拡張子 |
| 反応 | なし、一方向 | あり、双方向 |
| 方法 | グループの番号をダイヤル | *80と拡張子 |
自動応答しない電話は、ページに応答しない。自動応答(インターコム)を許可する必要がある電話もある。
ホットデスク
/phonesホットデスクは、誰がログインしたかによって共有電話になります。 固定デスクがない事務所用に作成します。 ホットデスク を有効にすることで、電話が設定されている拡張子 (デスクの独自の拡張子、たとえば 900 デスク 3) で作成します。
ログインとログアウト
- 電話で
*33をダイヤルし、音が鳴るまで待ちます。 - 拡張子と # を入力し、音が鳴るまで待ちます。
- ボイスメール PIN と # を入力します。 上昇トーンはログインに成功したことを示し、下降トーンは拒否されたことを示します。
その後、拡張子への通話はこのデスクにも他の電話にも鳴り、ここから行う通話はあなたの番号と名前が表示され、コストではあなたのものとしてカウントされます。 別のデスクにログインすると、そこに移動します。 *34 でログアウトします。 5 回間違えると、デスクは 10 分間ロックされます。
ホットデスクの管理
電話 (章 4) で、ホットデスク は誰がどこにログインしているかを表示します。 管理者は、誰かをログイン (PIN を使用せず) またはログアウトさせることができます。 コードと、毎日誰もログインしていない時間は、設定にあります。 ログインは再起動を超えて保持されます。
ホテルと目覚まし通話
/hotel目覚まし通話
誰でも目覚まし通話を予約できます。ゲスト、夜勤、呼び出し対応者。自分の電話から*62をダイヤルします。BitVoiceは設定されているもの(ある場合)を示し、次に4桁の時間(0630)を入力します。星を押してキャンセルします。ホテル (章 37)では、管理者は任意の拡張子に対して1回、または毎日、目覚まし通話を予約できます。
システムの名前で電話が鳴る;受け答えると「Good morning. This is your wake-up call.」(Sounds (章 20)の起床プロンプト、ゲストまたは拡張子の言語で)が聞こえる。受け答えられない場合、5分間隔で3回試みられ、最後に受付拡張子が鳴ることができる。複数のサーバーがある場合、起床呼び出しは1つだけ行う。
ゲストルーム
各部屋の電話の拡張子でゲストルームをオンにする。Hotelでは、各部屋のゲスト、起床呼び出し、部屋のステータスが表示され、チェックインとチェックアウトボタンがある。
- バーウェイの空室: 誰もチェックインしていない部屋は、拡張子と緊急番号しか呼び出せない。緊急呼び出しは常に機能する。
- チェックアウト時にクリア: 部屋のボイスメールを削除し、起床呼び出し、転送、着信拒否をキャンセルし、次のゲストのために準備する。
- ゲストの言語(チェックインから)は、部屋のプロンプトが言われる言語である。
- 部屋のステータス: ハウスキーピングは部屋の電話から
*68と数字(*683)をダイヤルする;ホテルシステムは各数字の意味を決定する。
ホテルシステム(PMS)
- FIAS: BitVoiceは、ホテルシステム(Oracle OperaおよびFIASを話す多くのシステム)のFIASインターフェイスに接続します。チェックイン、ルーム移動、チェックアウト、起こし予約を受け取り、起こし結果、ルームステータス、通話料金を送信します。リンクがダウンしている間、送信するものは待機し、復帰時に送信されます。ページはリンクの状態を示します。レコードはOracleのFIAS 2.20.23仕様に従います。BitVoiceは、電話システム(IF PB)として自己を説明し、通話料金は直接の料金(PT C)で、通貨の最小単位で、ダイヤルした数字は+やスペースなしで、起こし結果は予約された時間を繰り返します。したがって、ホテルシステムはそれを要求に一致させることができます。
- REST API: ホテルシステムは、
POST /api/hotel/rooms/<room>/checkin(名前、口座、言語)、/checkout、およびPUT /api/wakeups/<room>を呼び出します。APIキーは、[設定]、自動化から取得します。料金は、JSONとして指定されたアドレスに投稿されます。 - 通話料金: 室が占有されている場合、外部からの着信通話は、トランクの料金(コスト (章 54)から)とマークアップを加えた金額で、客の請求書に記載されます。
すべての電話の連絡先
/contacts連絡先 は会社のディレクトリです: 供給者、クライアント、その他の事務所への電話番号です。 すべての電話では、拡張子と共にリストされ、ここにリストされている番号が鳴り込むと、電話と発信者カードには連絡先の名前が表示されます (プロバイダーが名前を送信しなかった場合)。 番号は、どのように書かれても一致します: +1 212 555 0100 と 2125550100 は同じ電話線です。
連絡先の追加
連絡先を追加 で、1 回に 1 人ずつ追加します。 仕事、携帯電話、自宅、その他の番号を何個でも追加できます。 インポート では、最初の行に列名 (名前、会社、仕事、携帯電話、自宅、メール、ノート) が含まれる CSV ファイルを使用します。 BitVoice はファイル全体を最初に確認し、間違っている行を示します。 同じ名前の連絡先がすでにある場合、更新されます。 すべての連絡先を置き換える でリストを新しく開始します。 エクスポート で、リストを CSV ファイルとしてダウンロードします。
デスク電話
電話 (章 4) (プロビジョニング) で設定された電話は、追加の設定なしでディレクトリを受け取ります:
- Yealink: リモート電話帳「会社」が毎時更新されます。
- Grandstream: 電話帳ダウンロードが毎時行われます。
- Polycom: ディレクトリ ファイルが電話起動時に読み込まれます。
- Snom: リストは電話の設定に書き込まれるため、電話が次に設定を確認したときに更新されます。
ブラウザ電話
連絡先 をキーパッドの下で見つけて、名前または番号を検索し、呼び出し準備をします。
Microsoft 365 または Google Workspace から
BitVoice は、組織のディレクトリと連携して連絡先を同期できます。ディレクトリ内の電話番号を持つすべての人物と、共有連絡先 (Exchange の組織連絡先または Google の共有ドメイン連絡先)。設定 (章 14) の Microsoft 365 と Google Workspace で、サービスを選択し、必要な情報を入力し、 今すぐ確認 をクリックします。サインインして人数を数え、メールで一致する拠点を通知します。保存すると、連絡先が半分の時間以内に同期され、次に 連絡先を同期 をクリックすると、すぐに同期されます。
Microsoft 365 (アプリ登録; 管理者同意を付与できる必要があります):
- Entra 管理センターで、 アプリの登録、 新しい登録: BitVoice という名前、シングルテナント、リダイレクトアドレスなし。
- API のアクセス許可、 アクセス許可の追加、 Microsoft Graph、 アプリケーションのアクセス許可:
User.Read.All、OrgContact.Read.All、Calendars.ReadBasic。次に、 管理者同意を付与。 - 証明書とシークレット、 新しいクライアントシークレット: 値をコピーします (1 回のみ表示)。
- BitVoice で、ディレクトリ (テナント) ID、クライアント ID、シークレットを入力します。シークレットは有効期限が切れます (Microsoft では最大 2 年): 有効期限が切れた場合、カードはシークレットが拒否されたことを示します。新しいシークレットを作成し、貼り付けます。
Google Workspace (サービスアカウント; スーパーアドミニストレータである必要があります):
- Google Cloud の 1 つのプロジェクトで、 People API と Google Calendar API を有効にし、 サービスアカウント を作成し、 キー (JSON) を追加します。
- Google Admin コンソールで、 セキュリティ、 アクセスとデータの制御、 API の制御、 ドメイン全体の委任、 新しい追加: サービスアカウントのクライアント ID、スコープ
https://www.googleapis.com/auth/directory.readonly,https://www.googleapis.com/auth/calendar.freebusy。 - BitVoice で、キー ファイルとサービスアカウントが動作する管理者のメールアドレスを入力します。
次の情報が含まれます:
- 人物の職場番号と携帯電話番号、名前、メールアドレス、および役職と部門が連絡先のメモとして記載され、組織の名前が会社として記載されます。番号のない人物は除外されます (連絡先には番号が必要)。無効になっているアカウントは除外されます。
- サービスから取得した連絡先は、サービス名でマークされ、サービス内で変更されます。ここで連絡先を変更または削除すると、次の同期で変更が元に戻ります。ここで作成された連絡先またはスプレッドシートからインポートされた連絡先は、変更されません。
- BitVoice は読み取りのみを実行します。アクセスは上記の読み取り専用のアクセス許可であり、シークレットまたはキーは他のシークレットとともに保存されます。ビューアーはこれを表示できず、Git 用のエクスポートでは除外されます。
カレンダーと着信拒否
/extensions拡張子は、担当者のカレンダーに従うことができます。会議中や休暇中、着信はボイスメールに転送されるか、別の拡張子または携帯電話に転送され、誰も応答しない電話に鳴ることはありません。リング グループでは、他の人が鳴り、キューでは、エージェントは 不在 として表示されます。
拡張子で、カレンダーと着信拒否 に、カレンダーのプライベート アドレスを貼り付けます。
- Outlook: 設定、カレンダー、共有カレンダー、カレンダーの公開; カレンダーを選択し、"すべての詳細を表示" を選択し、ICS リンクをコピーします。
- Google Calendar: 設定、左側のカレンダー、次に iCal 形式のシークレット アドレス。
確認 では、すぐに読み取り、次の忙しい時間を一覧表示します。BitVoice は各カレンダーを 5 分ごとに読み取ります。休暇 (1 日のイベントおよび Outlook の "出張中") は常にカウントされます。会議は、会議を忙しい時間としてカウント が有効になっている場合にのみカウントされます。 "無料" とマークされたイベントは、キャンセルされたイベントはカウントされません。繰り返し会議 (スキップされた発生や移動された発生を含む) は理解されます。カレンダーを読み取ることができない場合、ヘルスではその旨を表示します。
今すぐ着信拒否 では、カレンダーが何を示唆しようとも、着信を停止します。拡張子の一覧では、誰が不在で、いつまで不在かが表示されます。
プライベート アドレスは、パスワードのように機能します。誰でもそのカレンダーを読み取ることができるため、他のシークレットとともに保管されます。
すべてのカレンダーを一度に: Microsoft 365とGoogle Workspace
個別のアドレスではなく、BitVoiceはMicrosoft 365またはGoogle Workspaceからすべての人のカレンダーを読み取ることができます。設定 (章 14)でMicrosoft 365とGoogle Workspaceを設定します(手順については連絡先 (章 38)を参照)。カレンダーは不在を示すをオンにします。各拡張子は、メールアドレスによってその人にマッチングされます。個別のアドレスを持つ拡張子は、そのアドレスを使用します。この拡張子の設定(会議は忙しいとみなす、忙しいときの通話)は、個別のアドレスと同じように適用されます。
- Microsoft 365は、会議から時間外を示します。会議が外出中としてマークされている場合、それは時間外としてカウントされます。暫定的な会議や、空きまたは他の場所で作業している時間は、電話の鳴動を停止しません。プライベート会議は「会議中」として表示され、タイトルは表示されません。
- Google Workspaceは、理由を示さずに忙しい時間を提供します。したがって、それらは常に会議としてカウントされます。
- カレンダーは5分ごとに読み取られ、設定が変更されたときにもすぐに読み取られます。サービスが知らないメールアドレスを持つ拡張子は、そのカレンダー部分でそれを示します。
モバイル アプリ
iPhone と Android 用の BitVoice アプリは、モバイル フォンを拡張番号の 1 つのフォンにします。フォン独自の呼び出し画面で鳴ります。アプリが閉じている場合でも、デスク フォンのように鳴ります。
プッシュの設定
閉じたアプリは、プッシュ メッセージによって呼び出されます。設定 (章 14) の モバイル アプリ で、以下のいずれかを選択します。
| プッシュ | 必要なもの |
|---|---|
| プッシュ リレー | BioDream のリレー (ホスティングまたはサポートと共に) または独自の bvpush: リレー アドレス、キー ID、シークレット |
| 独自のアプリ | 独自のビルド: Apple の場合は チーム ID、バンドル ID、キー ID、キー (.p8); Google の場合は Firebase サービス アカウント (JSON) |
このサーバーの https アドレスを、オフィス内のみでなく、どこからでもアクセスできるように アプリが使用するアドレス に設定します。
フォンのペアリング
- 拡張番号を開き、フォンを追加 を押します。
- アプリで QR コードをスキャンします。コードは 1 回のみ、10 分間有効です。
呼び出しが来る場合
BitVoice はアプリを起動し、フォンの独自の呼び出し画面で鳴り、他のフォンと同様に応答されます。拡張番号のページには、ペアリングされたフォンの一覧、各フォンが 呼び出しに起動できる か、最後に確認された時刻、最後に起動された時刻、プッシュの問題が表示されます。ペア解除 を押すと、フォンはすぐに鳴りません (紛失したフォンの場合)。
呼び出し中
アプリは、ダイヤラーではなく完全な拡張機能です。
- 転送:呼び出しを別の拡張番号または外部番号に転送します(呼び出し画面の転送またはアプリのボタン)。パーク番号に転送すると、呼び出しはパークされます。
- ホールドと再開:呼び出し画面またはアプリからホールドと再開が可能です。ホールド中の呼び出しは、ホールドミュージックを聞くことができます。
- 2回目の呼び出し:1回目の呼び出しをホールドしたまま、2回目の呼び出しをダイヤルし、呼び出しを切り替えることができます。
- キーパッド音(DTMF)とミュート。
その他のタブ
- 最近の通話: この拡張子からの通話と着信、最新のものから、タップして返信(欠席通話は目立つ)。
- ボイスメール: 各メッセージとその書き起こし (章 29)(AIが書き出す)で、再生、返信、または削除。
- チーム: 誰が利用可能、通話中、鳴っている、または不在(忙しいランプ)で、呼び出すか現在の通話を転送する。
- 連絡先: 会社のディレクトリで、名前を見つけて呼び出す。
- チャット: 職員用チャット(チャットとプレゼンス)で、同僚のプレゼンスとダイレクトメッセージ、チームルームが電話内にあります。バックグラウンドにあるときに新しいメッセージが表示され、タップするとチャットを開きます。アプリが閉じているときは、同じプッシュで呼び出しと同じように届きます。
- ビデオルームに参加: ビデオルーム (章 34)(現在何人がいるかを含む)から選択します。電話の上に開き、電話は下で継続して動作し、拡張子として参加します:管理者によるサインインは不要です。最初のとき、電話はカメラの使用を求めます。退室、またはAndroidのBackで電話に戻り、ルームの音は電話の独自の通話画面に表示されたまま、通話として続きます。
- あなたが行う通話も電話の独自の通話システム(CallKit on iPhone、AndroidのTelecom)上に表示されます。したがって、Bluetooth、車、または腕時計で表示され、同時に到着するモバイル通話はそれらを認識します。
通話中のライブ書き起こし
通話をライブで書き出すを有効にすると(設定 (章 14)、AI)、通話の両側が話されている間に書き出され、通話中の電話に表示されます。オーディオは、通話中はスピーチツートEXTサービス(独自のコンピュータに設定されている場合)またはAIサービスに送信されます。これは、911のライブ書き起こし (章 13)と同じ書き起こしです。
ビデオ通話
/settingsビデオデスク電話、ソフトフォン、ビデオドアホンなどの両方の電話機がビデオを送信する場合、ビデオは BitVoice を介して相互に送信されます。設定は不要です: Settings → ビデオ通話 がオフになっている場合を除き、常に有効です。
- BitVoice はビデオを中継します。各電話機には独自のポートがあり、電話機は互いのアドレスを学習しません。共通のコーデック (ほとんどのビデオ電話機には H.264 があります) がある場合、ビデオはデコードされません。共通のコーデックがない場合、変換 (以下参照) が可能です。コーデックが同じ番号付けされている場合、BitVoice は中継中に番号を変更します。
- ビデオは、音声が暗号化されている電話機に送信される場合、暗号化 (SRTP) されます。
- パケットの損失後に新しいビデオを要求する電話機のリクエストは、もう一方の電話機に到達し、ビデオはすぐに回復します。
- 通話中にカメラをオンにする (ソフトフォンのビデオボタン) ことも機能します: もう一方の電話機に最初にリクエストが送信され、ビデオは同意したときに開始されます。
- ビデオのない電話機、または外部番号への通話の場合、音声のみが送信されます。保留中またはパークされている場合、ビデオは一時停止し、通話が再開されると再開されます。転送された後、ビデオは新しいパーティーがビデオを送信する場合にのみ継続されます。
- ビデオは音声よりもネットワークを大量に使用します (約 0.5 ~ 2 Mbit/s、各通話ごとに片道): スローローカルリンクとメディアポート範囲で考慮してください。
ビデオの変換
共通のビデオコーデック (ほとんどのビデオ電話機には H.264 があります) を共有する電話機とアプリは、ビデオをそのまま相互に送信します。2 つのパーティーが共通のコーデックを持たない場合 (H.264 のみのデスク電話機と VP8 のみのブラウザの場合)、Settings の H.264 と VP8 の間でビデオを変換 をオンにします: BitVoice は両方のコーデックを提供し、各パーティーに独自のコーデックで応答し、ffmpeg で変換します。ffmpeg はサーバーにインストールする必要があります (apt install ffmpeg、brew install ffmpeg; またはパスを指定)。変換には約 1 つのプロセッサコアが必要であり、わずかな遅延が発生するため、デフォルトではオフになっています。必要な場合のみ使用されます。Settings では、ffmpeg が見つかったかどうかが表示されます。
ファクス:送信と受信、ファクス機とアナログ電話
/faxesファクス機、アナログ電話、ドアフォン、古い回線は、SIPゲートウェイ(またはBitVoiceコンピュータ内のテレフォニーカード;テレフォニーカード (章 6)を参照)を介して接続します:ATA(Grandstream HTシリーズ、1つまたは2つのアナログ電話またはファクス機)、または、大きなゲートウェイ(Patton SmartNode、AudioCodes MediaPackおよびMediant)を使用して、多くのアナログポート、ISDN回線(BRI/PRI)、または古いアナログ回線(FXO)を接続します。各ポートは、電話と同様に、BitVoiceに拡張子として登録されます。
ファクシミリを受信する。ファクシミリで、ファクシミリ番号(300など)を追加し、各ファクシミリが送信されるメールアドレスを指定します。次に、電話ルーティング (章 8)で、電話番号の呼び出しをそれに送信します。BitVoiceはファクシミリ機として応答し、T.38に切り替え、ファクシミリを受信します。各ファクシミリはPDFになり、ファクシミリ(表示、PDF)に保存され、メールで送信されます。途中で中断されたファクシミリは、到着したページを保持し、通知します。リスト内の各ファクシミリは、番号と異なる場合、送信または受信機の独自のIDと、ページの送信速度(14,400ビット/秒が最も速い;低速でファクシミリが繰り返し失敗する機械は、通常、線路が悪いことを示します)を表示します。この機能を使用するには、T.38をサポートするプロバイダー(ほとんどのプロバイダー)が必要です。音声として送信されたファクシミリは、この方法では受信できません。T38Fax(ファクシミリキャリア)でテストしました:sip.t38fax.com(ポート5080、UDP)へのトランクを登録するには、ユーザー名とパスワードを使用します。ファイアウォールを介して、BitVoiceの前方のネットワーク(8.34.182.0/24と8.20.91.0/24)からのUDPを許可します。
ファクスの送信。ファクスで、ファクスを送信を選択し、ファクス番号を選択し、送信先の番号を入力し、必要に応じてメモを入力し(これは最初のページになります)、ドキュメントを追加します。テキストファイルと画像(PNG、JPEG、GIF)は、どこでも機能します。PDFにはサーバーにpopplerが必要です (apt install poppler-utils、apk add poppler-utils、brew install poppler)。Word、Excel、OpenDocument、RTFには、LibreOfficeも必要です。ページには、サーバーが実行できるものが表示されます。各ページには、ファクス機が印刷するヘッダー行が付きます:時間、ファクス番号の名前、そのID、ページ数。呼出は、IDの数字から行われます(+1 212 555 0300は+12125550300から呼び出されます)、または、IDが番号でない場合、ファクス番号自体から呼び出されます。ページは、北米ではUSレター、他の地域ではA4サイズになります。国設定によって決定されます。
BitVoiceは、出発ルートを介して番号に呼び出しを行い、最も速い速度(14,400ビット/秒、線路が悪い場合は遅く)で送信します。1つのファクス番号からのファクスは、1つずつ送信されます。忙しい番号、または応答がない番号は、5分後にもう一度試み、合計3回試みます。送信されたファクスは、受信ファクスとともにリストされます:送信、送信待ち、失敗(再試行とともに)、または、途中で中断された場合、一部送信。
メールからファクス。リストの下で、BitVoiceが読み取るメールボックスを設定します(IMAP over TLS、ポート993;GoogleおよびMicrosoftのメールボックスの場合は、アプリパスワードを使用)。次に、テストおよび保存を実行します。許可された送信者は、ファクス番号を件名に含むメールをそのメールボックスに書き込みます(Fax 212 555 0199)、または、メールサーバーがプラスアドレスを受け入れる場合、プラスアドレス (fax+2125550199@example.com) に書き込みます。添付ファイルはページになり、メールの本文は表紙ノートになります(署名および引用メールは除きます)。これは、送信者をリストするファクス番号から行われます:その各ファクスをメールで送信アドレスは、常に送信できます。また、ファクスをメールで送信できるを追加すると、他の送信者(全アドレス、または@example.comなどのドメイン)も追加できます。送信者は、ファクスが送信されたとき、または送信できなかった理由について、メールで通知を受け取ります。
メールは簡単に偽造できるため、BitVoiceは、メールが送信者のドメインから実際に送信された場合にのみ、ファクスメッセージを送信します(DKIM、SPF、またはDMARC;メールサーバーが追加する認証結果行)。他のメッセージは、返信なしで破棄されます。外部メールが到達できないメールボックスの場合のみ、送信者のドメインが保証していないメールを受け入れるを切り替えてください。
ファクシミリ機をゲートウェイで使用する。 BitVoiceは、インターネットのファクシミリ標準であるT.38を使用してファクシミリを転送します。ゲートウェイがファクシミリ音を検知すると、T.38に切り替わり、BitVoiceは相手側(プロバイダーまたは別のゲートウェイ)に切り替えるように要求し、ファクシミリを中継します。相手側がT.38をサポートしていない場合、G.711で音声としてファクシミリが転送されます。ライブコールでは、ファクシミリが転送中はファクシミリ (T.38) と表示されます。
信頼性の高いファクシミリのために:
- ゲートウェイでT.38を使用し、T.38をサポートするプロバイダーを選択します。
- ポートの拡張子をアナログアダプターポート (拡張子、種別) にします。BitVoiceは、ファクシミリ音を転送するために必要なG.711のみを提供します。
- ゲートウェイのファクシミリポートで: ファクシミリモードT.38、PCMUまたはPCMAのみ、ラインエコーキャンセラーをオフにし、固定の高ジッターバッファーを使用します。
受信トレイ: Web チャット、WhatsApp、Messenger
/inbox受信トレイ Inbox (章 43) には、すべての書き込み会話が 1 つのリストにまとめられています: Web サイトのチャットボックス、WhatsApp、Facebook Messenger、テキスト (章 44)。Web インターフェイスにサインインしている誰でも回答できます。最初に回答した人が会話を担当します (誰でも 回答者 で会話を譲ることができます)。会話を終了すると、相手が再び書き込むまで会話は保留されます。未読会話はカウントされ、リストは自動的に更新されます。
Web サイトのチャットボックス
チャンネル で、Web チャットを有効にし、タイトル、色、最初の行を選択し、サイトのページに表示する行を配置します:
<script src="https://pbx.example.com:8443/webchat.js" async></script>
すべてのページの右下にチャットボタンが表示され、訪問者は名前を入力して会話を開始できます。会話はブラウザに保持されるため、ページを移動しても会話は続きます。表示するサイトのみ にサイトをリストして、ボックスが他のサイトで実行されないようにします。訪問者は、このサーバーのアドレスにインターネットからアクセスし、ブラウザが信頼する証明書 (Let's Encrypt (章 14)) を持っている必要があります。1 分以内に同じアドレスから 10 件の新しいチャットは受け付けません。
WhatsApp Business 番号は Meta の Cloud API で使用します。Meta の開発者サイトで、WhatsApp アプリを作成し、番号を追加し、システム ユーザーを作成して永久アクセストークンを取得します。チャンネル で WhatsApp を有効にし、電話番号 ID と ビジネス アカウント ID (両方を API 設定から取得) と アクセストークン とアプリの アプリシークレット を入力し、保存します。アプリの WhatsApp 構成で、Webhook を設定します: BitVoice が表示するコールバック アドレスと検証トークンに *messages* をサブスクライブします。
WhatsApp では、顧客の最後のメッセージから 24 時間以内に自由に回答できます。その後は、WhatsApp マネージャーで承認された メッセージ テンプレート のみを受け付けます。回答ボックスはテンプレート ピッカーに変わります: テンプレート (アカウントのテンプレートと言語、種類が表示されます) を選択し、値 ({{1}}、{{2}} ...) を入力し、プレビューを確認し (これが顧客に表示されるものです) 、テンプレートを送信 します。インボックスで埋め込むことができないテンプレートは、理由とともにグレーアウトして表示されます: 画像、ビデオ、またはドキュメント ヘッダーを持つもの、ヘッダーに変数を持つもの、ボタンのリンクにコード ボタンを持つもの、名前付きパラメーターを持つもの、または未承認のものです。WhatsApp マネージャーでテンプレートを作成します。Meta は通常数分以内にそれぞれをレビューします。
Facebook Messenger
Facebook ページの場合: Meta アプリで Messenger を追加し、ページを接続し、ページアクセストークンを作成します。チャンネル で、ページ ID、ページアクセストークン、アプリシークレット を入力し、Webhook (BitVoice が表示するアドレスと検証トークン) を設定します: *messages* と *messaging_postbacks* をサブスクライブします。回答は、相手の最後のメッセージから 24 時間以内に許可されます。その後 7 日間は、Meta の *human agent* タグで送信された回答 (アプリが Human Agent 権限を要求する必要があります) を許可します。自動応答はこの間は送信されません。7 日間経過すると、相手が再び書き込むまで回答は受け付けられません。
すべての Webhook は、アプリシークレット (Meta の署名) で確認され、Meta が 2 回送信したメッセージは 1 回だけ保持されます。画像、音声メモ、その他の添付ファイルは、それらが何であるか (「[画像]」) が表示され、Meta のアプリで開くことができます。
自動応答 が設定されている場合、すべての新しい会話の最初のメッセージにすぐに回答します。
ビジネス テキスト (SMS)
/textsビジネス番号からテキスト メッセージを送受信します: テキスト。テキストはテキスト プロバイダーを介して送信されます。組み込み: TextMagic、Twilio、SignalWire、Telnyx、Bandwidth、Vonage、Plivo、Flowroute、VoIP.ms、さらに 独自の Webhook で任意のサービスまたは独自のゲートウェイ。プロバイダー アカウントは同時に複数使用できます。各番号はどのプロバイダーを使用するかを示します。
設定
- プロバイダーのポータルで、アカウントの API 詳細を確認します。フォームでは、プロバイダーがそれらを呼ぶもの (Twilio: アカウント SID と認証トークン; Telnyx: API キー; Bandwidth: API ユーザー、パスワード、アカウント ID、メッセージング アプリケーション ID; SignalWire: またスペース アドレス) を尋ね、どこで見つけるかを示します。
- テキスト で、テキスト設定 を開き、プロバイダーを追加し、保存します。BitVoice は受信テキスト用のアドレスを表示します: これをプロバイダーで受信メッセージを送信するアドレス (コールバック、Webhook、またはメッセージ URL) として設定します。VoIP.ms の場合は、アドレスの末尾に
?from={FROM}&to={TO}&message={MESSAGE}&id={ID}を追加します。同じアドレスに送信された配信レシートは無視されます。BitVoice はインターネットからアクセス可能である必要があります。 - テキストを送信する番号 (国コードを含む) と、どのプロバイダーを使用するか、受信時にメールで通知する拡張子を追加します。
US 10DLC
USキャリアは、登録されていない通常の事業用番号からのテキストメッセージをブロックします。テキストメッセージプロバイダーでブランドとキャンペーンを登録し、Textsのチェックリストでステータスを追跡し、サンプルメッセージにキャリアが期待するオプトアウトワードが不足している場合に警告します。
会話
各会話では、誰から(Contactsから)、未読のテキスト、スレッドが表示されます。Enterキーで送信します。カウンタでは、長いメッセージが何個のテキストメッセージになるかが表示されます。誰かがSTOPと返信すると、その番号からさらにメッセージを送信することはできなくなります。受信したテキストメッセージも、BitVoiceの通知として表示されます。
転送ブリーフィング
/settings呼び出し先が自分で説明する必要がないように:転送される呼び出しのブリーフィングをオンにすると(設定、AI)、呼び出しが転送されたときに、BitVoiceは呼び出し先に対して、呼び出しの要約(呼び出し元、要望、約束事項など)を2文で書きます。これは、ブラウザーホン、Live calls (章 46)、およびデスクフォンのスクリーン(SIPメッセージを表示する電話機の場合)に表示されます。
AIレセプションが呼び出しを担当者に渡した場合も、ブリーフィングは呼び出し先に表示されます。
これにはAIサービスと音声認識モデル(設定、AI)が必要であり、呼び出しのオーディオデータ(最大5分間)がサービスに送信されて書き出されます。要約には数秒かかりますが、電話が鳴り始めた直後に表示される場合があります。
顧客と洞察
誰が呼んだか、およびどのように行われたかを知る: ライブ通話および履歴、顧客タイムライン、CRM、録音および同意、品質、コスト、および発信者 ID の評判。
進行中の通話
/calls進行中の通話は、進行中のすべての通話を、発生するたびに更新して表示します。誰が誰に電話したか、どのくらい長く続いているか、そのコーデック、品質です。
管理者ができること
| アクション | 内容 |
|---|---|
| 切断 | 通話を両側で終了する |
| ドアを開ける | ドアステーションからの通話の場合 |
| 録音を一時停止 | カード番号の場合: 一時停止した部分は録音では無音で、履歴にマークされます (通話の録音 (章 51)) |
| 聞く | 通話を静かに聞く |
| ささやく | エージェントだけに話す; 呼び出し元は聞こえません |
| 参加 | 通話に参加する; すべての人があなたの声を聞きます |
聞く、ささやく、または参加するには、監視を押し、電話からで使用する電話を選択し、私に呼びかけるを押します。電話が鳴り、応答すると通話に参加します。参加中は、聞く、ささやく、参加するのを切り替えることができます。
その他の表示
- 外部通話が鳴っている間に、呼び出しカード(CRMから、または過去の通話; CRM (章 49)を参照)
- 転送された通話のための書かれたブリーフィング (転送ブリーフィング (章 45))
- 呼び出し元IDの判定: 検証済み、部分的に検証済み、または検証されていない (スパム保護 (章 56))
- 複数のサーバーがある場合、他のサーバー上的の通話も、読み取り専用: 切断またはサーバー上的の通話を聞く
通話が終了すると、通話履歴 (章 47)に移動します。
通話履歴
/history終了したすべての通話: 誰が誰に電話したか、いつ、どのくらい長く続いたか、どのように終了したか。列を並べ替え、録音を再生(カード番号の場合、一時停止がマークされます)、リストをCSVとしてダウンロードします。レコードを保持する期間は、設定、通話の録音で設定できます。法的保持 (章 73)により、長期間保持されます。
ルーティングの経路
各通話結果の下の ルーティングの経路 では、平易な言葉と順序で、通話がどのようにルーティングされたかが記載されています。受信ルート、スケジュールの開閉状態と時間、トグルボタンの状態、ルーティングスクリプトの選択(またはフォールバックの選択)、メニューのキー入力、不在者、電話未接続者、応答なし、発信ルートとトランクの使用(およびヘルスジャッジが他のトランクの後ろに移動したトランク)、通話の録音に対する同意ルールの適用などが記載されます。
品質、音質、暗号化
品質 列には、各応答通話のスコア(MOS、5点満点)と、該当する場合は2つのマークが表示されます。
- 音なし : 通話が接続されたが、電話またはプロバイダーから音が届かなかった(5秒未満の通話、ファックス、保留通話、ページングは除く)。通話品質 (章 53)を参照して、確認する項目をご覧ください。
- 暗号化なし : BitVoiceが暗号化(SRTP)を要求したが、相手側が暗号化なしで応答した。 暗号化 とは、音声が送信側のすべての相手と暗号化されたことを意味します。プロバイダーからの暗号化されていない通話を拒否するには、トランクの 暗号化を要求 を有効にします。
トランスクリプトと検索
AIが有効で、録音通話のトランスクリプトを取得 が有効(設定、AI)になっている場合、各録音通話は、要約とアクションアイテム(誰かが同意したことや依頼されたこと)とともに書き出されます。各通話の側面は、録音から個別に書き出されるため、トランスクリプトでは誰が何を言ったか、いつ言ったかがわかります。録音の隣にあるトランスクリプトボタンを開くと、トランスクリプトが開きます。管理者は、個別の通話をトランスクリプト化したり、再度トランスクリプト化したりできます。
発言を検索 では、トランスクリプト、要約、行動アイテムから通話を検索できます。録音された通話のみがトランスクリプト化されます。トランスクリプトは、録音とともに削除され、トランスクリプトの読み取りまたは検索は、録音の再生と同様に、監査ログに記録されます。
顧客タイムライン
/timeline顧客タイムラインでは、1 つの電話番号に関するすべての情報が、過去 1 年間で最新のものから表示され、受け答えする人が全体像を把握できるようになります。
表示されるもの
| 項目 | 内容 |
|---|---|
| 通話 | 受け手にした人、通話時間、音声テキスト、要約、録音、テキスト |
| ボイスメール | 要約 |
| テキスト | 相手とのやり取り |
| コールバック | 要求されたものと、実行状況 |
| ノート | チームの独自ノート |
番号はどのように書かれても一致します: +1 212 555 0100 と 2125550100 は同じです。
開く
呼び出しカード (タイムライン) から、連絡先から、着信履歴の着信から、テキスト会話から、または タイムライン (章 48) の上部で番号を入力して開きます。
ノート
管理者は チーム用ノートを追加 できます: タイムラインに表示され、誰が書き込んだかといつ書き込んだかがわかり、削除も可能です。
CRM: 呼び出し先カードと通話ログ
/settings設定 (章 14) の CRM で、顧客システムを接続します。Web アドレスを持つ任意のシステムと連携できます。各製品ごとにコードを書く必要はありません。
呼び出し先カード
外部からの通話が着信中、ライブ通話でカードが表示されます。カードには、呼び出し先が誰であるか (CRM から、または拡張子の名前から)、90 日以内に何回呼び出し先が呼ばれたか、待機中の コールバック (章 30)、最後のトランスクリプト化された通話の要約が表示されます。ブラウザーフォンでは、応答者に短いカードが表示されます。カードには、呼び出し先が誰であるか、過去の通話、待機中のコールバックが表示されますが、他の人の通話要約は表示されません。
名前の場合、Lookup address を設定します: BitVoice は、{number} の代わりに呼び出し者の番号でそれを要求します (GET)。Lookup header とその値 (ボールト参照も機能します) を送信し、名前、会社、url、ノートを含む JSON を期待します。404 は、未知であることを意味します。回答は 5 分間保持されます。Open in CRM link を使用すると、呼び出し者のカードにリンクが表示されます。Look it up を使用して、保存する前に番号を試すことができます。
CRMの独自の回答
ほとんどのCRMは、BitVoiceの{"name": ...}と異なり、独自の形式で検索結果を返します。回答フィールドを開き、各部分がどこにあるかをドット表記で指定します。名前はオブジェクトに、数字はリストにステップします。したがって、list.0.nameは最初のヒットの名前です。連絡先にリンクは、CRMが提供するリンクへのパス、または波括弧内のパスを持つWebアドレス、たとえばhttps://crm.example.com/#Contact/view/{list.0.id}です。空のフィールドは、BitVoiceの名前を読み取ります。誰も見つからなかった場合は404と同じです。カードは、呼び出し先が不明であることを示します。保存する前に、調べるで番号を試してみます。
たとえば、EspoCRM(実際のEspoCRMに対してテスト済み):APIユーザーを作成します(管理、APIユーザー、APIキーによる認証)が、連絡先と口座を読み取ることができるロールで、次のように設定します。
- 検索アドレス:
https://crm.example.com/api/v1/Contact?select=name,accountName,description&maxSize=1&where%5B0%5D%5Btype%5D=equals&where%5B0%5D%5Battribute%5D=phoneNumber&where%5B0%5D%5Bvalue%5D={number} - 検索ヘッダー
X-Api-Key、値はAPIユーザーのキー - 回答フィールド: 名前
list.0.name、会社list.0.accountName、メモlist.0.description、リンクhttps://crm.example.com/#Contact/view/{list.0.id}
EspoCRMは国際形式(+15405550117)で番号を保持しています。BitVoiceが渡した形式です。他のCRMは自分の検索アドレスとフィールド名で同じように動作します。APIドキュメントで回答の形状を確認するか、調べるでメッセージ名を見つけることができます。
通話ログ
通話ログアドレスと署名シークレットを設定し、通話が終了するたびにそこにイベントを送信します (event call.ended)。また、要約、行動アイテム、トランスクリプトが作成されたときにも送信されます (call.summarized)。また、予約されたコールバック (callback.new) も送信されます。各POSTには、X-BitVoice-Event、X-BitVoice-Timestamp、X-BitVoice-Signature: sha256= が付加されます。これは、シークレット、タイムスタンプ、ドット、ボディのHMAC-SHA256です。配信に失敗した場合は、約1分間で4回再試行されます。まだ失敗する場合は、ヘルスチェックで通知されます。テストイベントを送信は、アドレスとシークレットを確認します。
コール インサイト (呼び出し分析) for 監督者
/qualityコンタクト センター向け: 監督者が聞くための、呼び出しに関する証拠。自動スコアリングではありません。
呼び出しの トランスクリプト では、どのように進行したか が表示されます。これは、録音の音だけから測定されます: 各側がどれだけ話したか、各側の最長の連続した話し手、どれだけの頻度で各側が話し始めたか、どれだけの時間両側が同時に話したか、および静かな時間 (長い沈黙は通常、ホールドまたは空気です)。
トランスクリプトされた呼び出しの進行状況をメモする (設定、AI) が有効になっている場合、AI もトランスクリプトを読み取り、呼び出し者の最初と最後の様子、および最大 6 つの瞬間 (うまくいった、確認する (呼び出し者に話しかけたり、長いホールド、不明な回答)、回答されなかった (呼び出し者が質問したが回答されなかった質問)、および 約束した (誰かが行うと言ったこと)) を示します。各瞬間には、時間と発言された言葉が表示されます。管理者は、トランスクリプトされた呼び出しに対して この呼び出しを確認する を要求できます。
コール品質 (章 50) の 会話、担当者別 では、期間中のトランスクリプトされた呼び出しが、担当者ごとにまとめられます: 話し手のシェア、最長の連続した話し手、呼び出し者に話しかけた頻度、静かな時間、呼び出し者が不機嫌な状態で終了した呼び出し、およびフラグ付きの瞬間。呼び出しを聞くために選択するために使用します。ランキングには使用しないでください。
コーチング ノート では、呼び出しについてのあなたの言葉を、関連する瞬間に記述できます。 どのように進行したか の下で、瞬間 (1:05、または開始時点の場合は空のまま) と コーチング ノート を記入し、ノートを追加 を押します。ノートは、呼び出し順に、誰が書き、いつ書いたかとともに表示されます。管理者はノートを書き込みまたは削除し、ビューアーはトランスクリプトとともにノートを読み取り、ノートの追加または削除は監査ログに記録されます。ノートは録音とともに保存されます。録音の保持と法的保持もノートをカバーします。コール品質の コーチング ノート では、担当者ごとのノート数をカウントします。
通話の録音とカードの支払い
録音は 設定 (章 14) で 通話の録音 を設定します: オフ、すべての通話、または 通話を録音する というマークの付いた拡張子の通話のみ。録音は 通話履歴 (章 47) から再生され、AI を有効にすると書き出され、要約されます。
告知
一部の場所では、通話の全員に録音されていることを知らせる必要があります: 告知, ビープ, および地域ごとのルールは、録音の同意 (章 52)に記載されています。
カード支払い(PCI DSS)
カード番号は録音に保持してはいけません。呼び出し先が番号を読み上げる前に、拡張子の人物は *7 を押します。 *8 で録音を再開します。 ライブ通話 (章 46) の 録音を一時停止 も同じ効果があります。 一時停止された部分は録音では無音となり、通話履歴にも記載されるため、監査員はどこで、どのくらいの時間一時停止されたかを確認できます。
会議室
会議室の録音 を有効にした部屋は、1 つの部屋全体の録音として保持されます (会議室 (章 34))。
保存期間
設定により、録音、通話履歴、ボイスメールの保存期間を設定できます。古いものは 1 時間以内に自動的に削除されます。 法的保留 (章 73) されているものは、保存期間に関係なく保持されます。 アーカイブ (章 72) を使用すると、コピーを別の場所に保存できます。
管理者と閲覧者は録音を再生し、トランスクリプトを読むことができます。ただし、管理者だけが通話をトランスクリプト化したり、再度トランスクリプト化したりできます。 録音を再生したり、トランスクリプトを読んだりしたことは監査ログに記録されます。
録音の同意
/settings一部の地域では、1人が録音することを知っていればよい場合もありますが、他の地域では、すべての参加者に通知するか同意を得る必要があります。設定の通話録音で、録音中の呼び出しに対する通知方法を選択します。
- 通知なし。
- アナウンス: 通話が接続されたときに、双方に通知(同じ場所に録音、例「この通話はトレーニングと品質のために録音されます」)が流れ、通知が終了した後に録音が開始されます。通知が録音されるまで、15秒間隔で3つのビープ音が流れ、Healthにも表示されます。
- ビープ: 録音中、双方に15秒間隔で短い音が流れます。
ルールは、外部番号(呼び込みの場合は呼び出し元、呼び出し先の場合はダイヤルされた番号)で選択され、最長一致検索されます。例えば、1415(カリフォルニア)ではアナウンス、49(ドイツ)では録音しない、その他は上記の設定に従います。ルールの通知なしは通知せずに録音します。録音しないは、録音対象から外します。拡張子間の通話は、主な設定に従います。
自分の番号もカウントされます: ルールは、外部番号とあなたの番号 (着信時の呼ばれた番号、発信時の発信者ID) の両方に対してマッチされ、最も保護的なものが勝ちます (「録音しない」が「アナウンス」よりも前に、「ビープ」が「通知しない」よりも前に来ます)。 したがって、同意が必要な場所にある事務所は、どこにいても誰に電話しても、アナウンスします。 パーティーが異なるルールに該当する場合、通話履歴 (章 47) には、どのルールが適用されたか、そしてなぜ適用されたかが表示されます。
録音は、カード支払いなどの場合、通話中に一時停止することもできます。 ただし、これらは法律上の助言ではありません。 あなたとあなたの呼び出し先の場所の法律を確認してください。
通話品質
/qualityBitVoice が各通話の両側で受信した音質、過去 1 日、1 週間、1 か月、または 90 日間から。 電話は サイト (章 12) (または「サイトなし」) によってグループ化され、外部からの通話はプロバイダーのラインによってグループ化されます。
各地点は、その地点の通話状況、平均スコア(MOS、5点満点:4以上は良好、3.6未満は音質が悪い)、到達しなかった音パケットの割合、ジッター(不均一な遅延)を表示します。その下に、BitVoiceは問題点を平易な言葉で説明します。たとえば、「本社のネットワークでのパケットロス:3.2%の音が到達しなかった、主に14:00〜16:00の間」というように、確認すべき点を示します。バー図は、1時間ごとの音のロスを示します。
診断は、同じ通話の2つの半分を比較します。サイトの電話からの音と、同じ通話が通過したプロバイダからの音。当該半分がクリーンに到達した場合、ロスは当該地点の側にあると判断され、当該地点はその旨を示します。当該半分が両方とも音をロスした場合、当該地点は単独で非難されるべきではなく、当該システムの独自のインターネットリンクを指します。当該地点がすべて同時に音をロスした場合、原因は同様に共通のものです。これがどのように決定されたか は、理由を段階的にリストします(コール品質ルールブック、セキュリティ (章 60) を参照、「BitVoiceが決定する方法」)。3回未満の通話がある地点は、判断されません。通話ごとの品質は、通話履歴 (章 47) (品質列)および、通話中は ライブ通話 (章 46) にも表示されます。
一方から全く音が到達しなかった通話は、別途 音なし の下に数えられ、先頭に表示されます。これは、音質が悪いことではなく、音が到達しなかったことを示し、ほぼ常にファイアウォールまたはNATルーターがSIPを許可し、メディアをブロックしていることを意味します。当該地点のアドバイスは、確認すべき点を示します(プロバイダーの場合、メディアアドレス範囲)。
コストと予算
/costsBitVoice は、プロバイダーが課金する金額に基づいて各通話の価格を算出し、月ごとの支出を部門、人物、トランク別に表示し、最も高価な通話を表示します。
価格
トランク (章 7) でトランクを開き、通話価格 を開きます。 各価格は、プロバイダーに送信される数字 (数字のみ、例: 44 はイギリス、1900 は米国の有料番号) で始まる番号をカバーします。 一致する最長の価格が勝ちます。 数字がなければ、すべての他の番号に適用されます。 分당価格、応答した通話ごとの課金、請求ステップ (60 秒、6 秒、または 1 秒の細かいステップ) および最小価格を入力します。 着信通話、分당 は、受信するための無料番号の価格です。 どのくらいの価格になるか は、誰かが番号をダイヤルする前に確認します。 通貨はコストで設定されます。
通話のコストは、終了時に固定され、当時の価格で計算されます。 価格の変更は過去の通話のコストを変更しません。 コストでは、価格のない応答した通話の数が表示されます。
部門と予算
拡張子に 部門 (拡張子内) を割り当てます。 コストで、すべての通話または 1 つの部門の予算を追加します: アラートが BitVoice に表示され、予算のアドレスとアラート アドレスにメールが送信されます (80% と 100% の両方で)。
アラーム
1 時間あたりの発信コストがこの金額を超える は、発信通話が 1 時間以内にその金額を超えたときにアラートを引き起こします。 高価な通話の突然の連続は、通常、通話料金詐欺 (盗まれた電話パスワード) の兆候です: 通話履歴を確認し、次に拡張子またはトランクを無効にします。
発信者IDの評判とブランド化された通話
/reputation電話会社は、Spamフィルターを実行し、ビジネス番号を「スパムが可能」またはブロックすることができます。その場合、ほとんどの人が応答しません。発信者IDの評判は、自分の通話から各発信番号の評判を監視し、次の点についてプレーンテキストで説明します:
- 応答: 応答した通話の割合と、前の期間の割合。半分以下、または20%未満の低下は、通常、新しいラベルの兆候です。
- すぐに切断: 10秒以内に終了した応答通話。
- スパムとして拒否: キャリアのフィルターによって拒否された通話(SIP 608)または、人物によって不要とマークされた通話(607)。1つの608は、番号がラベル付けされたことを意味します。
- 大量の使用: 1つの番号から1日あたり約150回の通話は、ロボコールの特徴であり、フィルターによって検出されます。
20回未満の通話を持つ番号は、評価するには十分な数の通話がないと表示されます。
発信番号 では、各番号に 名前 (発信者の名前として送信される)、 呼び出し理由 、および ロゴ (https:// 画像) を割り当てることができます。 ブランド化された発信者 ID を送信 が有効になっているトランクでは、ロゴと理由は富豪な呼び出しデータ (RFC 9796 Call-Info) として送信され、ブランド化された呼び出しをサポートするキャリアでは、呼び出された電話に表示されます。ほとんどの電話では、代わりにプロバイダーが設定する呼び出し者名 (CNAM) データベースからの名前が表示されます: プロバイダーに問い合わせてください。 監視 では、監視対象の番号がラベル付けされたように見え始めたときに、ヘルスに警告を表示します。
ページには、番号がラベル付けされたときに実行する必要のある手順も記載されています。
スパム保護とSTIR/SHAKEN
/settings米国とカナダでは、呼び出しの開始プロバイダーが呼び出し元ID(STIR/SHAKEN)に署名します:Aはプロバイダーが呼び出し元が番号を使用できることを確認した場合、Bはプロバイダーが呼び出し元を確認したが番号が不明な場合、Cはプロバイダーが呼び出しを転送した場合です。プロバイダーはBitVoiceにその判定(verstat)を通知するか、署名付きのIdentityヘッダーを渡します。BitVoiceは署名、1分以内に発行されたか、呼び出しの番号が記載されているかを確認します。判定は検証済み、部分的に検証済み、検証されていない、または未検証として、Live callsおよびCall historyに表示されます。
設定のスパム保護で、呼び出し元IDの検証に失敗した場合の動作(鳴らす、ラベル付けて鳴らす、拒否する)や、検証されていない場合の動作、番号が非公開の場合の動作を選択できます。ラベル付きの呼び出しは、呼び出し元の名前の前にスパム?(または独自のラベル)と表示されます。ブロックされた番号は拒否されます。*で終わるエントリは番号の範囲をブロックします(+1900*はすべての米国プレミアムレート番号)。常に許可の番号は拒否またはラベル付けされません。Call historyでは、呼び出し元の隣のブロックボタンをクリックしてブロックリストに追加できます。拒否された呼び出しはブロック済みとして表示されます。
緊急通話から1時間以内に、拒否された通話はありません(拒否された通話はラベル付けされて鳴ります)。ESInetまたはCAMAトランクからの911通話は、拒否または遅延されることはありません。
BitVoiceが知らない呼び出し先
呼び出し先は、常に許可されている場合、または連絡先 (章 38)に登録されている場合、または過去1年以内にここから呼び出された場合、または過去90日以内にロボットテストに合格した場合に知られているとみなされます。番号は、書き方に関係なく(国コード、1、0、または+を含むかどうか)一致します。BitVoiceが知らない呼び出し先の下で、他のすべての呼び出し先に対して何が起こるかを選択します。
| 選択 | 呼び出し先が受けるもの |
|---|---|
| 通常の鳴動 | 通話は通常の鳴動のように鳴ります(デフォルト) |
| ロボットテスト | BitVoiceが応答し、「接続するには、押してください」というメッセージと数字(各通話ごとに異なる)を再生します。正しいキーを押すと、通話は元の宛先に接続されます。誤ったキーまたは何も押さない(2回)と、ロボットテストに失敗した場合の宛先に接続され、または別れのメッセージが再生されます。ロボコールはキーを押しません |
| 他の場所に送る | 何も鳴りません。選択した場所に直接接続されます。例えば、ボイスメールボックスに接続されます |
ロボットテストには単語が必要です: サウンド (章 20)で、スクリーニングプロンプトと呼び出し先の言語の数字1から9を録音または作成します(音声サービスを使用)。これらが録音されるまで、通常の呼び出しとして鳴ります(呼び出し先がテストを聞くことができないため、テストに合格することはできません)。ヘルスはその旨を通知します。テストに合格した呼び出し先は90日間、既知の呼び出し先としてカウントされます。テストは呼び出しに応答するため、呼び出し先のプロバイダーは、その瞬間から通常の応答した呼び出しと同様に課金を開始します。呼び出し履歴には、各呼びしの結果(合格、不合格、送信)と理由トレイルが表示されます。
スパムデータベース
BitVoiceは、不明な呼び出し先について、呼び出し前に評価サービスに問い合わせることができます。 Twilioを介してNomoroboを使用 で、Twilio LookupにNomoroboのスパムスコアを入力します(NomoroboアドオンをTwilioアカウントにインストールし、アカウントSIDと認証トークンを入力します)。他のサービスもJSONで回答する場合は、 {e164} (+12125550142) または {number} (プロバイダーが送信した形式) でアドレスを指定し、評価結果が含まれるフィールド (評価フィールド、ドット表記のパス) と、スパムとみなされるスコア ( スパムスコア、真、または スパムテキスト に含まれるテキスト、たとえばBLOCK) を指定します。スパムと判断された呼び出し先の処理方法を選択します: ラベル付きで鳴らす、ロボットテスト、または拒否します。
- これらのサービスは 1回の照会ごとに料金を請求します。既知の発信者は決して照会されず、各回答は1日間保持されます (回答の保持)。
- 遅いまたは壊れたサービスは、決して呼び出しを保持しません。最大待ち時間 (変更しない限り1.5秒) 後、呼び出しは「スパムではない」という回答があるかのように鳴ります。
- テスト は、現在番号について照会します (そして、他の照会と同じように課金されます)。
最後の発信者をブロックする
望ましくない呼び出しを受けた直後、電話機から *32 (機能コード (章 32)) をダイヤルします。最後の 1 日間に電話機に鳴った外部番号がブロックリストに追加され、電話機は番号を読みます。常に許可される番号はブロックされず、電話機はその旨を通知します。各ブロックは監査ログに記録され、ブロックした人物が記載されます。
呼び出し履歴から提案する
BitVoice は、外部からの呼び出し履歴を最後の 30 日間読み取り、繰り返し呼び出しを行う番号を特定します。3 回以上の呼び出し、ほとんどの呼び出しが 10 秒以内に終了、または 2 回のロボットテストに失敗し、実際の会話 (30 秒以上話す) がない場合、その番号は提案されます。既知の番号は除外されます。各番号には理由が付いています。 ブロック をクリックすると、ブロックリストに追加され、 スパムではない をクリックすると、もう二度と提案されません。誰かが明示的にブロックするまで、番号はブロックされません。
STI認証局に対する証明書の確認には、証明書をSTI認証局の下に貼り付けます。証明書がなければ、BitVoiceは呼び出しが証明書で署名されていることを確認しますが、証明書が発行された認証局については確認しません。
自分の通話に署名する
ほとんどのプロバイダーは、顧客の通話に署名します。署名を許可するプロバイダー (または BitVoice を実行しているプロバイダー) の場合、トランク (トランク (章 7)) の 呼び出し元 ID に署名 を有効にし、STI 証明書 (STI 認証局から発行されたサービス プロバイダー コード トークンを含む) とその 秘密キー (P-256) を指定します。 トランクを介して外部に出るすべての通話には、署名付きの Identity ヘッダー (ES256、SHAKEN 要求) が付加されます。
- 証明書アドレス (x5u) は、呼び出し先が証明書を取得する場所です。 空のままにすると、BitVoice は
/stir/<trunk>.pemで公開します (設定の公開アドレス)。 これはインターネットから HTTPS でアクセス可能である必要があります。 - 保証: 自動で、システムの番号 (ルーティングされた番号、トランクまたは拡張番号に設定された呼び出し元 ID) で呼び出しを行う拡張番号の場合に A、他の番号で呼び出しを行う拡張番号の場合に B、外部から転送された通話の場合に C となります。 または、A、B、または C に固定します。
- 通話履歴では、署名付きの通話を 署名 A、B、または C でマークします。 署名できない通話は中断されません。 理由はログに記録されます。
BitVoice の実行
安全性と稼働の維持: 管理者とサインイン、セキュリティ、変更と更新、複数のサーバー、ホストされた組織、コーデック、Teams、インポート、自動化、および障害の検出ツール。
管理者
/users管理者は、このWebインターフェイスにサインインする人々です。自分自身のコールのみを管理するスタッフは、代わりにスタッフポータルを使用し、ここでのアカウントは必要ありません (スタッフポータル (章 33))。
ロール
| ロール | 可能性 |
|---|---|
| 管理者 | 何でも変更可能、録音を再生する、すべてのシークレットフィールドの存在を表示する (値は表示されません) |
| ビューアー | 何でも表示可能、変更不可; シークレットは非表示 |
ロールまたはパスワードの変更は、すべての場所で同時にサインアウトします。
2段階認証
各人は、自分自身の2段階認証を有効にします: 設定 で認証アプリのキーが表示され、コードを入力すると有効になります。その後、サインイン時にパスワードに加えてコードも要求されます。無効にするには、パスワードが必要です。
シングルサインオン
シングルサインオン (設定) を使用すると、人々は組織のアカウント (Microsoft Entra、Google、Okta、OpenID Connectプロバイダー) でサインインし、最初のサインイン時にアカウントが作成されます。 シングルサインオン (章 58) を参照してください。
APIトークン
プログラム (Terraform、スクリプト) は、パスワードの代わりにAPIトークンを使用します。これは、このページで作成され、1回だけ表示され、いつでも取り消すことができます。各トークンは、管理者またはビューアーです。名前を指定して人物を表す (CADの場合) を使用して作成されたトークンは、X-BitVoice-On-Behalf-Of ヘッダーを含むことができ、レコードにはその人物の名前が表示されます (911コール (章 77))。
シングルサインオン
シングルサインオンは、OpenID Connectプロバイダー (Microsoft Entra ID、Google、Okta、Keycloakなど) を通じて、ユーザーがBitVoiceにサインインできるようにします。組織を離れると、アクセスも削除されます。
設定
設定 (章 14)で、シングルサインオン:
- プロバイダーにアプリケーションを登録し、ここに表示されるリダイレクトアドレスを使用します。
- プロバイダーを設定により、一般的なプロバイダーの発行者を設定します。プロバイダーのクライアントIDとクライアントシークレットをコピーします。
- プロバイダーの管理者グループとビューアーグループの名前を付けます。グループクレームは、プロバイダーがこれらのグループを配置する場所 (
groupsであるか、設定されている場合) です。 - オプションで、サインインページのボタンテキストを変更します。
- シングルサインオンを使用をオンにします。
動作方法
- ここでのアカウントは、最初のサインイン時に作成されます。グループによって役割が設定され、プロバイダーで誰かをグループ間で移動すると、ここでの役割が変更されます。
- どちらの種類のグループにも属していない人は拒否され、拒否は監査ログに記録されます。
- パスワードも許可をオフにすると、パスワードはこのコンピューターでのみ機能し、プロバイダーの停止によりロックアウトされることはありません。
会社ディレクトリ (Active Directory と LDAP)
BitVoice は、会社ディレクトリ、Active Directory、または別の LDAP サーバー (OpenLDAP、Samba、389 Directory Server、FreeIPA) を読み取ることができます: 電話番号を持つ人は拡張機能になり、ディレクトリ グループは呼び出しグループを満たします。また、ディレクトリ パスワードで Web インターフェイスにサインインします。BitVoice はディレクトリを読み取るだけであり、決して書き込まない。
接続
設定 (章 14)で、会社ディレクトリ:
- Active Directory または OpenLDAP または別の LDAP サーバー を選択します: これにより、読み取られる属性 (sAMAccountName または uid を使用したサインイン名、displayName または cn、メール、電話番号) が設定されます。これらのいずれかをそのボックスで変更します。
- サーバー:
ldaps://dc1.example.com(ポート 636)、または StartTLS をオンにしたldap://...。平文の LDAP は、サーバーがこのコンピューター以外の場合、拒否されます (パスワードが暗号化されずにネットワークを渡るため)。サーバーの証明書が独自の証明機関から来ている場合、会社証明機関に貼り付けます。 - 読み取りアカウントとそのパスワード: 人とグループを読み取ることが許可されたアカウント (
reader@example.comon Active Directory)。パスワードは、キーボールト参照 (設定、キーボールト) になる場合があります。 - ベース DN: 人とグループが配置されている場所 (
dc=example,dc=com)。どの人は、LDAP フィルターを使用してこれらの範囲を狭めます。Active Directory では、無効なアカウントは常に除外されます。 - テストは、読み取りアカウントでサインインし、すべてのユーザーを読み取り、変更を加えずに実行します: これは、見つかった人の数、電話番号を持つ人の数、および各人が取得する拡張機能を示します。
拡張番号と呼び出しグループ
- 拡張番号の作成と更新 を有効にすると、番号を持つ各ユーザーに拡張番号が作成されます: 番号の最後の 保持する桁数 (4:
+1 212 555 0123の場合、0123; 0: すべての桁、2~8 桁の場合)。 新しい拡張番号には SIP パスワードとランダムな PIN のボイスメールが付きます。 ユーザーの名前とメールアドレスはディレクトリから取得されます。 - ディレクトリが所有する拡張番号: 番号、名前、メールアドレスはディレクトリの同期時に追跡されます。 その他の設定 (デバイス、転送、ボイスメール設定) はあなたのものです。
- 手動で作成した拡張番号は、ディレクトリが所有するものでない限り、ディレクトリに乗っ取られません。 同じ番号を持つ 2 人のユーザー、すでに他の拡張番号で使用されている番号、または長さの違う番号は 確認する に表示され、変更は行われません。
- 退職者の拡張番号を無効化 を有効にすると、ディレクトリが作成した拡張番号は、ユーザーが退職した、無効化された、または番号を失った場合に無効化され、復帰時に有効化されます。
- ディレクトリ グループから呼び出しグループを埋める: 各行はグループのメンバーの拡張番号を呼び出しグループに追加します (Active Directory の入れ子になったグループもカウント)。 拡張番号を持たないメンバーのグループは、呼び出しグループを変更しません。
- ディレクトリは、読み込み間隔 分 (デフォルト: 60 分) 毎に読み込まれ、同期 で即時に読み込まれます。 各同期で変更が行われると、1 つの 変更 (章 61) として "会社ディレクトリ同期" という名前で保存され、取り消し可能です。 最後の同期のレポートはボタンの下に表示されます。
サインイン
ここでディレクトリ名とパスワードでサインインをオンにすると、サインインページは BitVoice のアカウントに加えてディレクトリ名とパスワードを受け付けます:
- 管理者グループのメンバーは管理者としてサインインし、ビューアーグループのメンバーはビューアーとしてサインインします (ビューアーグループがない場合、ディレクトリ内の他のすべてのユーザー)。グループは名前 (cn) または DN で指定され、Active Directory ではネストされたグループがカウントされます。どちらのグループにも属していない人は拒否されます。
- ここでのアカウントは、最初のサインイン時に作成され、役割は毎回サインイン時にグループに従います。BitVoice の同じ名前のアカウントを決して引き継がない。
- 空のパスワードは常に拒否され (LDAP では匿名サインインとみなされるため)、無効なアカウントはサインインできません。名前は、ディレクトリに到達する前にエスケープされます。
- 2 段階のサインインは、これらのアカウントに追加できます。
セキュリティ
/securityインターネット上の電話システムは、数時間以内に攻撃される: スキャナーがすべてのSIPポートのパスワードを試み、侵入されたシステムはプレミアム番号への呼び出しを実行します。BitVoiceは、デフォルトでこれに対して耐性を持っています。
パスワードの推測に対して
- ログインに失敗したアドレスは、一定期間(設定、保護)で一時的に禁止されます: デフォルトでは、1分間に10回の失敗でアドレスが1時間禁止されます。禁止されたアドレスはセキュリティ (章 60)にリストされ、解除できます。
- 信頼されたネットワークは、禁止されません: オフィスのネットワークです。
- SIPパスワードは生成され、少なくとも12文字、1拡張子につき1つです。1つの拡張子としてログインした電話は、他の拡張子として登録することはできません。
- 禁止されたスキャナーは、回答を得られません。したがって、学習することはありません。
不正アクセスに対して
- 拡張子は、許可された場合のみ、外部番号に呼び出しを行うことができます。
- プレミアムレート番号は、ルートが指定しない限り拒否されます。
- 通話詐欺防止 (以下) は、国外への呼び出しを判断します。
- コスト (章 54) は、予算と過剰な支出に関するアラートを表示します: 1時間に1つの国への多数の呼び出し。
- 各拡張子は、同時に最大4つの呼び出しを行うことができます (設定、保護)。
通話詐欺防止
設定でオンにします。国外への呼び出し (プラス記号、00、または011、北米以外の国で+1を共有する国、たとえばジャマイカ) は、呼び出し前に判断されます:
| 状況 | 行動 |
|---|---|
| 90日以内に同じ国への呼び出し | 許可 |
| 90日以内に同じ国への最初の呼び出し | 許可、報告 |
| 営業時間外、または外部からの呼び出し (ダイヤルイン、転送) | PINの要求 (未設定の場合、拒否) |
| 1つの拡張子からの10分間の国外への呼び出し | 拒否 |
| パスワードの推測中に国外への最初の呼び出し (1時間以内に3回の失敗、または禁止) | 拒否 |
| 緊急番号 | 常に許可 |
常に許可される国 (国コード、たとえば44) と 例外 (1つの拡張子が1日間、旅行のために) は、「最初の呼び出し」と「営業時間外」を取り消します。ただし、多数の呼び出しや攻撃は、承認されたように見えるため、許可されません。呼び出し履歴が読み取れない場合、防止は、最初の呼び出しであるかどうかを判断できません。何かが測定されていない場合、安全ではありません。PINの要求を行います。すべての判断は、セキュリティ (章 60) に理由とともにリストされ、呼び出し履歴 (章 47) の呼び出しレコードにも表示されます。
BitVoiceの判断方法
BitVoiceの判断者 (通話詐欺防止、トランクヘルス判断、呼び出し品質診断、911呼び出し位置チェック) は、それぞれ ルールブック に従います: 測定された事実、支持される結論、例外、選択肢。BitVoiceの判断方法、セキュリティ (章 60) に表示されます。判断者が保持するルール:
- すべての回答は理由とともに来ます: 什么が保持されたか、什么が反対されたか、什么がそれを覆したか。
- 測定されていないものは、未知です。未知が回答を変えることができる場合、判断者は慎重な選択を行い、測定できなかったことを示します。
- 「判断不能」は回答です: ルールが状況を未決定に残した場合、判断者は慎重な選択を行い、示します。
- 各ルールブックは、使用前にすべての組み合わせでチェックされます (BitVoiceの開始時、テスト時): 同時に2つの選択肢はありません。すべてのルールは到達可能です。画面は、各ルールブックがチェックされた状況の数を示します。
暗号化
- TLS はシグナリング (5061ポート) を暗号化し、パスワードと番号がネットワーク上で読み取れないようにします。
- SRTP は呼び出し音を暗号化します。ブラウザ電話とアプリは常にこれを使用します。
- Webインターフェースは、8443ポートでHTTPSを使用し、独自の証明書、またはインストールした証明書を使用します。
誰が何ができるか
- 管理者はすべての設定を変更できます。閲覧者はすべての設定を表示できますが、変更はできません。スタッフは自身の通話のみにポータルを使用します。
- 管理者のすべてに 2 段階認証 を有効にします (管理者 (章 57)): 認証アプリからのコード。
- シングル サインオン (章 58) を使用すると、アイデンティティ プロバイダー経由でサインインできます。
- 監査ログ では、すべての管理操作と実行者を記録し、編集はできません。
変更、バックアップ、インポート
/changes保存されたすべての変更は、番号、変更者、日時、概要を含むリビジョンです。設定の内容は決して失われることはありません。
リビジョンの比較と復元
- 変更内容 は、リビジョンとその前のリビジョンの差をフィールドごとに表示します。
- 復元 は、復元によって変更される内容を表示し、確認を求めます。復元は新しいリビジョンとして保存されるため、元に戻すこともできます。
エクスポートとインポート
- エクスポート は、設定を 1 つのファイルとしてダウンロードします (シークレットは除く、または含めることができます)。
- インポート は、ファイルの変更を適用する前にプレビューします。
- インポート (章 68) は、FreePBX と Asterisk の設定、3CX のユーザー リスト、Cisco Unified CM、Avaya、Mitel の CSV エクスポートも読み取ります。
- アーカイブ (章 72) は、バックアップ、録音、ボイスメールを Amazon S3 または Azure にコピーします。
同時変更
2 人以上の管理者が同時に同じ設定を編集することはできません。2 回目の保存は拒否され、メッセージが表示され、内容は失われません。
更新
/updatesBitVoiceの更新は、1回のクリックで安全に行えます。新しいバージョンを確認し、古いバージョンの隣にインストールし、新しいバージョンが起動しない場合は自動的に元に戻ります。
更新のインストール
- 新しいリリースをダウンロードして解凍します。プログラムの隣に、BioDreamからの署名ファイル(
bitvoice.sigまたはWindowsのbitvoice.exe.sig)があります。 - 更新 (章 62)で、プログラムと
.sigファイルをアップロードします。 - インストールを押します。デフォルトでは、BitVoiceは通話が進行中でないことを待ちますが、すぐにインストールすることもできます。
- BitVoiceは新しいバージョンで再起動します。複数のサーバーがある場合、進行中の通話は別のサーバーに引き継がれ、続行されます。
元に戻す
前のバージョンは保持されます。元に戻すをクリックすると、1回のクリックで前のバージョンに戻ります。新しいバージョンが2回起動に失敗した場合、または1分間起動しない場合、自動的に前のバージョンに置き換えられます。
署名
v0.1.3以降のすべてのリリースには、BioDreamのリリースキーが含まれています。BioDreamの署名付きプログラムのみがインストールされます。署名のないファイル、他の人の署名付きファイル、または1バイトだけ変更されたファイルは、署名が一致しませんというエラーで拒否されます。ページには、このビルドがチェックされるかどうか(必須)が表示されます。
| 構成 | 更新を許可 |
|---|---|
| リリース版 (v0.1.3 以降) | BioDream によって署名されたプログラムのみ |
| v0.1.2 以前、または独自ビルド | すべてのプログラム: キーなしの場合、.sig ファイルはチェックできず、無視されます |
複数のサーバーを1つの電話システムとして
/servers2つ以上のBitVoiceサーバーが1つのPostgreSQLデータベースを共有することで、1つの電話システムとして動作します:
- どのサーバーに登録されているかに関係なく、通話は電話に達します: リンググループ、キュー、転送、プロバイダー線からの通話はすべて、すべてのサーバー上的の電話に鳴ります。
- 設定は、1つのサーバーで変更されると、5秒以内にすべてのサーバーに適用されます。ユーザー、連絡先、通話履歴、録音のトランスクリプト、テキストは共有されます。
- バズィランプ (BLF) は、すべてのサーバー上的の電話の鳴り、忙し状態を表示します。パーキング スロットは共有されるため、1つのサーバーでパークされた通話は、別のサーバー上的の電話から受け取ることができます。ページングは、すべてのサーバー上的の電話に達します。テキストは、デスク電話に達します。
- キューのエージェントは、別のサーバー上的の通話中でも、忙しとしてカウントされます。プロバイダー線のチャネル制限は、すべてのサーバー上的の通話をカウントします。
- ライブコールは、各サーバー上的の通話をリストアップします (読み取り専用: 切断またはサーバー上的の通話を傍受します)。
- 通話レコードは、1つのサーバーによって書き込まれ、そこで録音されます。
設定
- 最初のサーバーのデータをPostgreSQLに移動します: 設定、データベース。
- 各サーバーを同じデータベースで起動します:
bitvoice -database postgres://…(またはBITVOICE_DATABASE環境変数)。すぐに参加します。サーバーにリストされます。 - サーバーで、各サーバーがどこからアクセスできるか (ネットワーク内のアドレスとSIPポート) を確認し、名前を付けます。各サーバーがインターネットからアクセスできる独自のアドレス (クラウドサーバー、パブリックIP、共有アドレスなし) がある場合は、独自のパブリックアドレスも設定します: プロバイダーと外部の電話は、そのアドレスを使用します。空の場合、サーバーは設定内のパブリックアドレスを使用します。
- 電話にサーバーを見つける方法を教えます (以下)。
- プロバイダー線 (以下)。
電話がサーバーを見つける方法。BitVoiceが設定した電話 (Yealink、Polycom、Grandstream) は、別の実行中のサーバーをバックアップとして自動的に設定します。他の電話 (Snom、手動設定) の場合は、サーバー上的の以下のいずれかを使用します:
- 各サーバーに対応するDNS名: 例: pbx.example.com、_sip._udp、_sip._tcp、_sips._tcpのSRVレコードで各サーバーをリストします。BitVoiceが設定した電話は、この名前を使用し、サーバーはレコードを確認し、不足しているものをリストし、レコードを作成する準備ができています。
- 共有アドレス: サーバーのネットワーク上的の未使用アドレス (例: 192.168.1.50/24)。1つの実行中のサーバーがこのアドレスを保持し、ネットワークに通知します (gratuitous ARP)。停止すると、次のサーバーがこのアドレスを引き継ぎ、同じアドレスで通話を継続し、電話に回答します (再登録不要)。LinuxとNET_ADMIN、NET_RAWの権限が必要です (コンテナ内の場合:
--cap-add NET_ADMIN --cap-add NET_RAW)。サーバーは1つのネットワーク上に配置する必要があります。設定後、各サーバーを再起動します。
プロバイダー線。各トランク内のサーバー間で共有は、以下の方法で設定します:
- 各サーバーが使用する: 各サーバーが登録し、独自の通話を処理します。複数の登録を許可するプロバイダーまたは登録不要のプロバイダーに対応します。
- 1つのサーバーが使用する: 1つのサーバーが登録し、ラインを保持します。他のサーバーは待機中、保持中として表示し、通話をこのサーバーを介して送信します。停止すると、次のサーバーが登録し、ラインを引き継ぎます。1つの登録のみを許可するプロバイダーに対応します。
サーバーが停止した場合
- 通話は継続します。各サーバーはデータベースに通話を記録します。停止すると、実行中のサーバーが通話を引き継ぎ、サウンドを移動し、両端に通知します (re-INVITE)。サウンドに数秒間のギャップが生じます。計画的な停止 (アップグレード、再起動) の場合は、ギャップなく通話を引き継ぎます。
- 停止したサーバーに登録されている電話の通話は、他のサーバーに移動せずに継続されます。移動されるのは、相手側のみです。
- 電話はバックアップサーバー、DNS名、または共有アドレスを介して継続的に動作します。
- サーバーが再起動する (アップグレード、再起動) のは、登録情報を保持します。
registrations.jsonに登録情報を保持しているため、電話が再登録する前に通話に応答できます。 - 健全性とサーバーは、停止したサーバーを表示します。サーバーが復帰すると、引き継いだサーバーから何も取り戻しません。
サーバー間。サーバーはSIPポートを介してTCP、または証明書がある場合はTLS(各サーバーは他方のサーバーが公開した証明書のみを受け入れ、音声はSRTPで暗号化される)で相互に接続し、メディアポート(UDP、設定で指定した範囲)を介して音声を送信します。サーバー間の呼び出しは、データベースに共有するシークレットで署名され、実行中のメンバーのアドレスからの呼び出しのみを受け付けます。サーバー間のファイアウォールは、これらのポートを許可する必要があります。
まず試してみましょう: ラボ。BitVoiceには、Dockerを使用して1台のコンピューターで2つのサーバー、データベース、テスト電話を実行するラボが付属しています。各サーバーは独自のアドレスで実行されます: deploy/lab/run.sh upを実行してビルドして起動し、共有アドレスを設定します。run.sh callを実行して、別のサーバーにある電話同士で通話します。run.sh failoverを実行して、共有アドレスを介して呼び出しを行っているサーバーを終了し、呼び出しが続行されることを確認します(音声は約5秒で復帰します)。run.sh impairedを実行して、悪いリンク(遅延、ジッター、5%の損失)から電話を実行し、BitVoiceが報告する呼び出し品質を確認します。run.sh downを実行してラボを削除します。サーバーのページはhttps://127.0.0.1:18501および:18502(ユーザーadmin)にあります。
データを保存する場所(SQLiteまたはPostgreSQL)
/settingsBitVoiceは、設定とその保存されたバージョン、ユーザー、連絡先、通話レコード、監査ログ、テキスト、ノート、トランスクリプトをデータベースに保存します。録音とボイスメールは、データフォルダー内の音声ファイルとして残ります。
このサーバーの独自のファイル(SQLite、デフォルト):データフォルダー内の単一のファイルbitvoice.dbで、インストールするものはありません。データフォルダーをバックアップしてすべてを保持します。
PostgreSQL:複数のBitVoiceサーバーが1つのデータセットを共有する場合、またはPower BI、Grafana、またはMetabaseなどのツールでレポートを作成する場合に使用します。設定、データベース、PostgreSQLにデータを移動で、空のデータベースと所有者ユーザーを作成し、データベースのアドレス(postgres://ユーザー:パスワード@ホスト:5432/データベース)を入力し、テストを押してからデータをコピーしてPostgreSQLで再起動を押します。すべてのデータが1回でコピーされ(すべてまたはなし)、BitVoiceはPostgreSQLで再起動します。古いファイルはそのまま残ります。サーバーの独自のファイルに戻すことも同じ方法で機能します。呼び出しが進行中の場合、移動は拒否されます。
PostgreSQLデータベースを共有するサーバーは、5秒以内に設定の変更を相互に確認できます。各サーバーはまだ独自の電話と呼び出しに応答します。2番目のサーバーが1番目のサーバーの電話を引き継ぐには、電話は両方のアドレス(またはアドレスを移動する1つのアドレス)が必要です。
データベースは、-database postgres://…またはBITVOICE_DATABASE環境変数でBitVoiceが起動するときにも指定できます。その場合は設定ではなくそこで変更されます。
古いインストール:このバージョンの最初の起動時に、BitVoiceは古いJSONファイルをデータベースにコピーし、データフォルダー内のpre-databaseに移動します。
他の組織のホスティング
/tenants1 つの BitVoice で複数の組織をホストできます。各組織は独自の電話システムです: 独自の拡張子、番号、トランク、ルート、管理者、ボイスメール、録音、通話履歴。各組織は他の組織のものを見ることはできません。共有されるのは、このサーバーの SIP ポート、IAX2 ポート、メディア ポートのみです。
いつ使用するか
- 複数の小規模顧客の電話システムを 1 つのサーバーで実行するプロバイダーまたは IT 公司。
- 共有ハードウェア上で個別に管理される別々のシステムを望むオフィスまたはクリニックのグループ。
- 独自の通話受付者とレコードを保持しながら 1 つのシステムを共有する複数の受付ポイント。
メイン システムは組織の 1 つです: このサーバーが設定されたときの組織。メイン システムの管理者は他の組織を管理します。
組織の追加
- 組織 (章 65) を開き、組織の追加 を押します。
- 組織の 名前 と 短い名前 (小文字の文字、数字、ハイフン) を入力します。短い名前はその Web アドレス (
/t/acme/) と電話のサインイン (acme.100) の一部です。後で変更することはできません。 - 任意で、組織の 独自のドメイン (例:
pbx.acme.example) を設定します。このドメインはこのサーバーを指します。電話はこのドメインに登録され、管理者はブラウザーで開きます。 - 組織の 最初の管理者 を設定します: ユーザー名、少なくとも 12 文字のパスワード、国です。
- 任意で 制限 を設定します。
組織はすぐに空の電話システムで開始され、管理者が はじめに (章 1) に記載されているように設定する準備が整います。
通話が正しい組織を見つける方法
| 要求 | 行き先 |
|---|---|
pbx.acme.example に登録する電話からの要求 | そのドメインを持つ組織 |
acme.100 としてサインインする電話からの要求 | Acme、拡張子 100 |
| プロバイダーからの番号の要求 | そのトランクが来る組織およびその番号を持つ受信ルート |
| それ以外のすべて | メイン システム |
したがって、2 つの組織は両方とも拡張子 100 を持つことができ、複数の組織は異なる番号を持つ 1 つのプロバイダー アカウントを共有できます。
データの保存場所
SQLite の場合、各組織にはデータ フォルダーの tenants/ 下に独自のフォルダーがあり、独自のデータベース ファイルがあります。PostgreSQL の場合、各組織には同じデータベース (tenant_acme) 内に独自のスキーマがあります。バックアップ、Archive、エクスポートは組織ごとに実行されます。
制限
| 制限 | その制限に達したときの動作 |
|---|---|
| 拡張子 | 追加の拡張子を追加することが拒否され、メッセージが表示されます |
| 同時通話 | 新しい通話が拒否され (503)、既存の通話が終了するまで待機します |
| ストレージ | 新しい録音やボイスメールが保存されません |
| 1 日の AI リクエスト | トランスクリプト、サマリー、AI 受付が停止し、翌日の午前 0 時 (UTC) まで待機します |
0 は制限なしを意味します。緊急通話は決して拒否されません: 通話制限に達した組織または停止された組織でも、911 に通話し、返信を受けることができます。
組織の開く
開く は、提供者としてその Web インターフェイスにサインインします。その組織の管理者は独自のアドレスで独自のアカウントでサインインします。各組織には独自のサインイン Cookie があるため、1 つの組織にサインインしていることは他の組織にサインインしていることを意味しません。
組織はこのサーバーのスクリーンを見ることはできません: アップデート、データベース、他のサーバー、証明書、SIP トレース (すべての組織のメッセージが表示されます)、通話生成器、またはこのリスト。
停止および削除
停止 はサインインとすべての通話 (緊急通話を除く) を停止します。何も削除されません。削除 は組織を停止し、そのフォルダーを別の場所 (tenants/.removed-<name>-<time>) に移動します。したがって、ミスは手動で修正できます。
コーデックと音声
コーデックは、電話での音声をデータに変換する方法です。電話、ブラウザー、キャリアはそれぞれいくつかのコーデックをサポートしています。BitVoiceは、2つのパーティーが異なるコーデックを使用する場合に、どのコーデックでも変換を行うため、すべてのパーティーが通信できます。両方のパーティーが同じコーデックを使用する場合、音声は変更せずに通過します。
コーデック
| コーデック | 音声 | 帯域幅 | 使用 | |
|---|---|---|---|---|
| G.722 | HD (ワイドバンド) | 64 kbit/s | 大多数のデスク電話: それらの間で最良の選択 | |
| G.711 µ-law | 電話 | 64 kbit/s | 北米と日本; すべてのキャリア | |
| G.711 A-law | 電話 | 64 kbit/s | 世界の他の地域 | |
| Opus | HD、損失に対応 | 24 kbit/s | ブラウザーとモバイルアプリ | |
| G.729 | 電話、少し粗い | 8 kbit/s | 薄いリンク、キャリアの一部 | |
| G.726 (40 kbit/s) | 電話; モデムトーンを最もよく伝えるG.726レート | 40 kbit/s | ゲートウェイ、一部のDECTシステム | |
| G.726 (32 kbit/s) | 電話に近い | 32 kbit/s | DECTベース、古いゲートウェイ | |
| G.726 (24 kbit/s) | 32と16の間 | 24 kbit/s | 一部のDECTシステム | |
| G.726 (16 kbit/s) | 粗い | 16 kbit/s | 非常に薄いリンク | |
| AMR-WB (G.722.2) | HD | 6.6から23.85 kbit/s | モバイルネットワークのHDボイス、VoLTEインターコネクト | |
| AMR | 電話、モバイル | 4.75から12.2 kbit/s | モバイルネットワーク、キャリアとゲートウェイの一部 | |
| iLBC | 電話、損失に対応 | 13.3または15.2 kbit/s | 古いソフトフォンとアプリ | |
| Speex | 電話 | 15 kbit/s (2.15から24.6) | 古いソフトフォン、Asteriskシステムへのリンク | |
| GSM | 粗い | 13 kbit/s | 古いソフトフォンとゲートウェイ | |
| G.723.1 | 粗い; ffmpegでのみ変換 | 5.3または6.3 kbit/s | 非常に古いビデオフォンとゲートウェイ | |
| G.722.1 (Siren 7) | ワイドバンド、変更せずに伝送 | 24または32 kbit/s | Polycom電話、ビデオと会議電話 | |
| G.722.1C (Siren 14) | スーパーワイドバンド、変更せずに伝送 | 24から48 kbit/s | 会議電話、ルームシステム | |
| G.719 | フルバンド、変更せずに伝送 | 32から128 kbit/s | テレプレゼンスルームシステム | |
| Codec2 | 非常に低い帯域幅、変更せずに伝送 | 0.7から3.2 kbit/s | ラジオリンク、アマチュア無線ゲートウェイ |
設定では、電話が使用できるコーデックをリストアップし、最も優先度の高いものから表示します。各トランクには独自のリストを持つことができます。アナログアダプターポートは常にG.711を使用します。これは、ファックス、モデム、警報パネルが必要とするものです。
G.722.1、G.722.1C、G.719、Codec2は、両方のパーティーがこれらのコーデックを使用する場合、変更せずに伝送されます (BitVoiceはこれらのコーデックを変換しません)。ルームシステムまたは会議電話が相互に通信するときに音声の範囲を維持する必要がある場合は、これらのコーデックをG.711より上位にリストに追加します。リストでは、G.722.1を32 kHzのG7221Cと呼びますが、SDPでは両方をG7221と呼びます。
G.723.1は、両方のパーティーがG.723.1を使用する場合、変更せずに伝送されます。G.723.1専用デバイスが他のデバイスと通信できるようにするには、設定でG.723.1をffmpegで変換を有効にし、ffmpegをインストールします (apt install ffmpeg、brew install ffmpeg)。BitVoiceは、変換が必要な各方向でffmpegを個別のプログラムとして実行します (受信はどちらのレートでも、送信は6.3 kbit/sで、ffmpegのエンコーダーが生成するレート)。これは、他のコーデックよりも約60 ms遅れて実行され、呼び出しの終了後数秒で停止します。BitVoiceには、G.723.1のコードは含まれていません。ITUのリファレンスコードには、包含を許可するライセンスがないため、ffmpegは個別にインストールおよび実行されます。
変換のコスト
変換には、両側が異なる場合にのみ、プロセッサ時間がかかります。1回の通話につき、約0.3msの1コアが20msごとにOpusに、0.12msがG.729に使用されます(約60回と170回の変換通話が1コアで可能)。G.726とGSMはG.729よりも低コストで、G.711とG.722はほとんどコストがかかりません。G.729は、サイレンスフレームなしでAnnex Bなしで送信されます。
サウンドクリーンアップ
サウンドクリーンアップ (設定)は、ボイスメールと、必要に応じて通話中にも、定常的な背景ノイズを低減し、レベルを均一にします。
Microsoft Teams(Direct Routing)
/trunksBitVoiceは、Microsoft Teamsテナントのセッションボーダーコントローラー(SBC)として機能できます。TeamsユーザーはBitVoiceの拡張子を呼び出し、BitVoiceは電話回線を呼び出します。
必要なもの:Microsoft 365テナントが検証したドメイン内のこのサーバーの公開名(sbc.example.com)、52.112.0.0/14および52.120.0.0/14のMicrosoftネットワークへの両方向の5061ポートの開放、および公開名の公開認証局からの証明書。TeamsユーザーにはPhone Systemライセンスが必要です。
手順
- 設定、証明書: 証明書とその秘密鍵(PEM)をインストールします。すぐに使用され、このインターフェイスとSIP over TLSの両方で使用され、BitVoiceはMicrosoftに提示します。
- トランク、追加: Microsoft Teamsから開始します。サーバーの公開名を入力します。ドロワーは証明書がそれをカバーしているかどうかを示します。
- ドロワーが表示するPowerShellをコピーし、Teams管理者として実行します。SBC (New-CsOnlinePSTNGateway)を追加し、音声ルートとポリシー、および短い拡張番号がダイヤルされたままBitVoiceに到達するためのダイヤルプランルールを追加します。次に、各Teamsユーザーにポリシーと番号を割り当てます。
- BitVoiceからTeamsユーザーに電話するには、Teamsトランク経由のアウトバウンドルートを追加します。Teamsは、+と国コードを含む番号でのみユーザーを見つけることができます。ユーザーが+と国コードなしでダイヤルした場合、ルートのPrependに+と国コードを追加します(理由トレイルは、+と国コードなしで出ていく場合にそう示します)。
Teamsユーザーが通話を転送すると、MicrosoftはBitVoiceに通話を配置するように要求します(REFERで自分のプロキシを指定し、番号またはTeamsユーザーのIDを指定します)。BitVoiceは、Microsoftが指定したものを正確に呼び戻します。Referred-ByヘッダーをTeamsに送信しないため、Microsoftは拒否します。
BitVoiceは、Microsoftが要求するように、SBC名をContactに含むOPTIONSをMicrosoftに1分ごとに送信し、sip、sip2、sip3.pstnhub.microsoft.comを順番に試みます。メディアは常に暗号化されます(SRTP)。ヘルスは、証明書が名前をカバーしていない、自己署名である、または期限切れの場合、Microsoftが応答を停止した場合に警告します。
これは、Microsoftの公開されたSBC要件に従い、シミュレートされたMicrosoftプロキシに対してテストされています。BitVoiceは、Microsoftの認定SBCリストに含まれていません。
インポート
/importFreePBX、Asterisk、または 3CX から、内部番号、リング グループ、キュー、トランクをインポートします。Cisco、Avaya、Mitel から、ユーザー、ハント グループ、SIP トランク、受信番号、ダイヤル パターンをインポートします。エクスポートされたファイルをアップロードします (複数のファイルを一度にアップロードできます。.zip または .tar ファイルも使用できます)。BitVoice は、適用される変更を正確に表示し、インポートは 変更 (章 61) で取り消すことができるリビジョンになります。
FreePBX から移行
最も適切なファイルは、FreePBX のバックアップです。すべて、SIP パスワードを含みます。
- FreePBX で、管理 → バックアップと復元 → バックアップの追加 に移動します。少なくとも コア、リング グループ、キュー、ボイスメール (すべてのモジュール) を選択し、保存して、実行 をクリックします。
- バックアップ ファイルをその行からダウンロードします (ファイル名は
20261001-100000-1790000000-17.0.19-1234567.tar.gzのようになります)。 - BitVoice を新しいサーバーにインストールし、FreePBX で使用されていない 1 つの内部番号 (たとえば 199) と電話線なしで設定を完了します。インポートにより、電話線が追加されます。
- インポート (章 68) で、.tar.gz ファイルをそのままドロップします。プレビューを読みます: 警告は、インポートできないすべての項目をリストします。
- 追加 を選択します。これは、変更 (章 61) に 1 つのリビジョンとして表示されます。何かが間違っているように見える場合は、そこで取り消し、再度インポートします。
- 電話を移動します: 各電話を BitVoice (または 電話 (章 4) からプロビジョニング) に指し、同じ内部番号と SIP パスワードを使用します。
- 内線および外線の通話をテストし、最後にキャリアの登録 (または番号 ポーティング) を移動します。
実際のシステムで試しました: FreePBX 17.0.33 (公式の Debian 12 インストール) で、4 つの内部番号とボイスメール、PJSIP トランク (登録あり)、2 つのアウトバウンド ルート (1 つはダイヤル プレフィックスあり)、リング グループ、ペナルティ付きキュー、3 つの DIDs、すべてのモジュールが選択された Backup & Restore によるバックアップです。バックアップは 70 MB で、ほとんどがサウンド ファイルと通話履歴です: BitVoice はそれを読み込み、構成のみを保持します。最大 512 MB のバックアップをアップロードできます。すべてがインポートされました: パスワード、ボイスメール PIN とメール、トランクの登録とコーデック、ルートとそのプレフィックス、リング グループのボイスメール (応答なし)、キューのペナルティと DIDs、グループ、キュー、内部番号。
インポートされるもの:
- 内部番号: 番号、名前、アウトバウンド コーラー ID、着信時間、SIP パスワード (FreePBX のパスワードが 12 文字未満の場合、BitVoice は新しいパスワードを作成します: その電話で再入力します)。ボイスメールとその PIN とメール アドレス (メッセージが添付されて送信されるかどうか)。
- トランク: PJSIP と chan_sip キャリア アカウント: サーバー、ポート、ユーザー名、パスワード、登録、From ドメイン、コーデック、コーラー ID、チャネル制限。オフになっているトランクはオフのままです。DAHDI トランクはテレフォニー カード トランクになります。
- アウトバウンド ルート: FreePBX の順序で、各パターンのプレフィックスはドロップされた数字になり、プレフィックスは追加された数字になります。パターンが異なる数字をドロップまたは追加するルートは、BitVoice では各パターンごとに 1 つのルートになります。
- リング グループ: メンバー、着信時間、すべての着信 (順番に) または 1 つずつ (ハント、メモリ ハント、最初の利用可能) で、応答がない場合の行き先。
- キュー: メンバーとそのペナルティ、戦略 (すべての着信、最新の着信、最も少ない着信、ラウンド ロビン、線形、ランダム)、着信時間、ラップアップ時間、最長待ち時間。
- 受信ルート: 各 DID から内部番号、リング グループ、キュー、ボイスメール ボックス、またはハングアップまで。
インポートされないもの、プレビューで表示されるもの: IVR、時間条件、発表、フォローミー、カスタム トランクとコンテキスト、ルートのコーラー ID 一致、リング グループの外部番号。これらは、メニュー (章 21)、スケジュール (章 26) および内部番号の フォローミー で構築します。FreePBX 13 以前のバージョンおよび mysqldump asterisk による FreePBX データベースのプレーン バックアップも、同じ方法で読み取ります。
他のシステム
各エクスポートは以下の通りです:
- FreePBX (拡張のみ): Admin → Bulk Handler → Export → Extensions (CSV).
- Asterisk: pjsip.conf または sip.conf.
- 3CX: Users → Export (CSV).
- Cisco Unified CM: Bulk Administration → Phones → Export Phones、すべての詳細; または Users → Export Users。電話の最初の行は拡張番号になり、その行のアラート名またはラベルはその名前になります。
- Avaya IP Office: Manager → File → Import/Export → Export、Users.
- Avaya Communication Manager:
list stationを CSV として保存; 仮想ステーションと VDN は除外されます。 - Mitel MiVoice Business: System Data Management → User and Device Configuration → Export.
グループとルート。人々のファイルとともにアップロードしてください。各グループのメンバーは番号または名前で見つけることができます:
- Cisco Unified CM: Bulk Administration → Import/Export → Export、Line Group、Hunt List、Hunt Pilot、SIP Trunk、Route Pattern を選択; .tar ファイルをそのままアップロードします。各ハントパイロットは、ハントリストのライングループのメンバーを持つリンググループになります。Top Down と Circular は順番に、Broadcast は同時に、RNA リバーションタイムアウトはリング時間になります。ルートパターンはアウトバウンドルートになります:
9.[2-9]XXXXXXで PreDot はパターン9[2-9]XXXXXXになり、9 を削除します。!は最終的なドットになります。@(国番号) を使用するパターンは、手動で書き込むためにリストされます。 - Avaya IP Office: ユーザーとともにハントグループをエクスポートします (両方ともヘッダー行のない CSV です)。グループモードは同時に、ハント、ローテリー、ロングウェイトは順番に鳴ります。
- Avaya Communication Manager:
list hunt-groupを CSV として保存します。メンバーはメンバーカラムまたは別のメンバーファイルに含まれます。 - Mitel MiVoice Business: リンググループとリンググループ割り当て (Cascade は順番に、Ring All は同時に)、およびハントグループ。
これらのエクスポートから得られるトランクは、初期状態ではオフになっており、パスワードがありません。ルートは同じ名前のインポートトランクで出力されます。トランクが存在しないルートは除外され、通知されます。ローテーティングとロングアイドルリングは、リンググループよりもキューに近いです: プレビューではそう表示されますので、キューにすることができます。
これらのエクスポート (FreePBX のバックアップを除く) には SIP パスワードが含まれていないため、各拡張機能には新しいパスワードが割り当てられます。ボイスメール PIN、名前、電子メールアドレスは、エクスポートに含まれている場合にのみ移行されます。Cisco、Avaya H.323/DCP、Mitel の電話機は、それぞれのメーカーの独自ソフトウェアを実行しており、BitVoice によって設定することはできません: インポートでは、リストされている電話機の数が表示されます。Cisco の電話機は、Cisco のマルチプラットフォーム (SIP) ファームウェアで再フラッシュできます。Avaya J100 および Mitel 6800/6900 の電話機は、SIP モードで手動で BitVoice に登録できます。
コードとしての構成
すべての画面操作はBitVoiceのREST APIを介して行われるため、すべての操作をスクリプト化したり、Gitに保存したり、Terraformで管理したりできます。APIは、/api/openapi.json (/api/openapi.json)でツール向けに説明されています。
APIトークン
管理者 (章 57)で作成できます。1つのプログラムにつき1つ、読み取り専用またはすべての変更を許可するトークンを作成できます。Authorization: Bearer bv_...として送信します。トークンは1回だけ表示され、必要なくなったら取り消す必要があります。トークンの変更は、変更履歴と監査ログの下の名前で表示されます。
curl -H "Authorization: Bearer bv_..." https://pbx.example.com/api/extensions
TerraformまたはOpenTofu
リポジトリのdeploy/terraformには、汎用のRESTプロバイダーを使用して管理される拡張、リンググループ、ルートが表示されます。プランでは、変更されるものが表示され、適用では変更が実行されます。プロバイダーはBitVoiceの証明書を確認します。BitVoiceがまだ自身の自己署名証明書を使用している場合、Let's Encryptから証明書を取得する(設定、証明書)、または信頼できるネットワークでbitvoice_insecure = trueを設定します(Linuxでは、SSL_CERT_FILEをBitVoiceの証明書を指すように設定することもできます)。リソースは、BitVoiceが割り当てるIDで一致されます。したがって、2回目のプランでは、ファイルまたは画面が何らかの変更を加えるまで、変更は表示されません。
Gitからの構成
設定 (章 14)のGitからの構成で、BitVoiceはリポジトリ内のファイルから構成を読み取り、数分ごとに、変更点を表示したり、変更を適用したりします。ファイルの先頭にGit用のエクスポートを追加して、パスワードを除外します。BitVoiceは自身のパスワードを保持するため、シークレットはリポジトリに入力されることはありません。
Asterisk との互換性 (AMI、ARI、AGI)
Asterisk 用に作成されたツールは、BitVoice を制御できます: CRM、ウォールボード、クリックツーダイヤル ボタン、コールレコーダーのコントローラー。設定 (章 14)で、Asterisk との互換性をオンにします。ツールは、Asterisk と同様に、PJSIP/100-... のように名前が付けられたチャネルとして呼び出しを表示します。
AMI
管理者インターフェース(TCPポート5038)。AMI listens on: デフォルトではこのコンピュータのみに接続します。サポートされているものは以下の通りです。
| 種類 | 名前 |
|---|---|
| アクション | ログイン(平文またはMD5チャレンジ)、Ping、イベント、フィルタ、コマンドリスト、CoreShowChannels、ステータス、CoreStatus、CoreSettings、PJSIPShowEndpoints、ExtensionState、ExtensionStateList、DeviceStateList、Getvar、Originate、Redirect、BlindTransfer、Hangup、Logoff |
| キュー | QueueStatus、QueueSummary、QueuePause、QueueAddおよびQueueRemove(エージェントをすべてのキューにサインインまたはサインアウトさせる)、エージェント |
| その他 | ParkedCalls;ConfbridgeListRooms、ConfbridgeList、ConfbridgeKick、ConfbridgeMute、ConfbridgeUnmute、ConfbridgeLock、ConfbridgeUnlock;MailboxCount、MailboxStatus;PauseMonitor、UnpauseMonitor;UserEvent;Reload(再読み込みするものはありません:変更はすぐに適用されます) |
| イベント | Newchannel、Newstate、Hangup、DialBegin、DialEnd、Hold、Unhold、PeerStatus、ContactStatus、MessageWaiting、ConfbridgeJoin、ConfbridgeLeave、ConfbridgeEnd、UserEvent |
フィルタ は、正規表現に一致するイベントのみを保持します (Event: Newchannel)、または ! を先頭に付けてそれらを削除します。Asteriskと同様です。Asteriskのコマンドラインはありません:コマンド はエラーで応答します。
ARI
/ari/ で、基本認証または ?api_key=user:secret を使用します。
| リクエスト | 実行する内容 |
|---|---|
GET /ari/channels | 進行中の通話 |
POST /ari/channels?endpoint=PJSIP/100&extension=5551234 | 100 に着信し、番号に電話します |
DELETE /ari/channels/{id} | 切断 |
POST /ari/channels/{id}/redirect?endpoint=PJSIP/102 | 通話を 102 に転送します |
/ari/endpoints、/ari/bridges、/ari/asterisk/info | 電話、ブリッジ、バージョン |
/ari/events | イベントの WebSocket |
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=rtp&format=ulaw | RTP (ulaw または alaw over UDP) でプログラムに音を送信するチャネル;ローカル ポートはチャネルの UNICASTRTP_LOCAL_PORT にあります |
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=audiosocket&transport=tcp&format=slin&data=<uuid> | AudioSocket で同じことを行います |
POST /ari/bridges/{call}/addChannel?channel={id} | 外部メディア チャネルが通話に参加します:両方の当事者が聞こえ、両方の当事者がそれを聞きます。role=listener の場合、誰もそれを聞きません(ライブ トランスクリプションの場合) |
POST /ari/bridges/{call}/removeChannel?channel={id} | それが通話を終了します:2 つの当事者が直接話し合うことができます |
1 分以内に通話に追加されない外部メディア チャネルは閉じられます。
ARI アプリケーション
ARI アプリケーション(Asterisk の Stasis())は、独自のプログラムから通話を実行します。ARI アプリケーション の下に追加します。設定、Asterisk 互換性:名前、任意の 番号 拡張子をダイヤルする、フォールバック。次に、どの宛先のようにそれに通話を送信します:受信ルート、メニューキー、スケジュール。
プログラムは /ari/events?app=NAME に接続します(WebSocket、?api_key=user:secret にログイン情報)。アプリケーションに到達する各通話は、チャネルと共に StasisStart として回答されます。プログラムはそれを実行します。
| リクエスト | 実行する内容 |
|---|---|
POST /ari/channels/{id}/play?media=sound:goodbye,digits:42 | サウンドからプロンプトを再生します (sound:)、digits:、number:、tone:beep、または保存された録音 (recording:);PlaybackStarted と PlaybackFinished が続きます。DELETE /ari/playbacks/{id} で停止します。 |
POST /ari/channels/{id}/record?name=msg1&maxDurationSeconds=60&maxSilenceSeconds=5&beep=true&terminateOn=%23 | 保存された録音 (wav) に録音します;RecordingStarted と RecordingFinished。POST /ari/recordings/live/{name}/stop で終了し、DELETE で破棄します。 |
GET /ari/recordings/stored、.../{name}、.../{name}/file、DELETE .../{name} | 保存された録音 |
POST /ari/channels/{id}/dtmf?dtmf=123 | 呼び出し先にキーを送信します |
GET/POST /ari/channels/{id}/variable?variable=X&value=Y | チャネルの変数 |
POST /ari/bridges?bridgeId=room1、.../addChannel?channel=a,b、.../removeChannel、.../play、DELETE | ミキシング ブリッジ:各人が他のすべての人を聞きます |
POST /ari/channels/{id}/continue?extension=101 | 通話を放棄します:その拡張子、リング グループ、またはキューに、さもなければフォールバックに |
DELETE /ari/channels/{id} | 切断 |
POST /ari/channels?endpoint=PJSIP/101&app=NAME | 101 に着信します。回答すると、アプリケーションに参加します |
GET /ari/applications | アプリケーション、プログラムが接続されているかどうか、およびチャネル |
POST /ari/channels/{id}/mute?direction=in、DELETE .../mute | 呼び出し先が話すことをミュートします (in)、呼び出し先が聞くことをミュートします (out)、または両方 |
POST/DELETE /ari/channels/{id}/hold、.../moh、POST .../silence | ホールド音楽を呼び出し先に (ChannelHold、ChannelUnhold)、または沈黙 |
GET/POST /ari/channels/{id}/variables | 複数の変数を一度に (ChannelVarset) |
POST /ari/channels/{id}/move?app=other | チャネルを別のアプリケーションに渡します (StasisEnd、次に StasisStart そこに;ApplicationMoveFailed がプログラムがそれを実行しない場合) |
POST /ari/channels/{id}/snoop?spy=in&app=NAME | アプリケーション内のスヌープ チャネルが呼び出し先の話を聞きます。録音する (POST /ari/channels/{snoop}/record) |
POST /ari/channels/create?endpoint=PJSIP/101&app=NAME、次に POST .../dial | ダイヤルされるまで待機するチャネル;Dial イベントは着信の進行状況を伝え、回答するとアプリケーションに参加します |
GET /ari/channels/{id}/rtp_statistics | 送信および受信のパケットとバイト、損失およびジッター |
POST /ari/playbacks/{id}/control?operation=pause | 一時停止、再開、リスタート、逆再生、前進 (3 秒) |
POST /ari/bridges/{id}/moh、.../record、.../variable、.../play/{playbackId} | ブリッジにホールド音楽、ミックスの録音、変数 |
POST /ari/recordings/stored/{name}/copy、POST/DELETE /ari/recordings/live/{name}/pause、.../mute | 録音のコピー;ライブの録音を一時停止またはミュート |
POST /ari/applications/{app}/subscription?eventSource=deviceState:Custom:lamp、PUT .../eventFilter | サブスクリプション (channel:、bridge:、endpoint:PJSIP/100、deviceState:) およびイベント フィルタ ({"disallowed": [{"type": "ChannelVarset"}]}) |
GET /ari/deviceStates、PUT /ari/deviceStates/Custom:lamp?deviceState=INUSE | 電話の状態 (PJSIP/100: NOT_INUSE、INUSE、RINGING、UNAVAILABLE) およびプログラムが保持するカスタム状態 (DeviceStateChanged);電話の状態は EndpointStateChange としても到着します |
GET /ari/mailboxes、PUT /ari/mailboxes/{name}?newMessages=1&oldMessages=0 | 拡張子のボイスメール カウント (100@default)、およびプログラムが保持するメールボックス |
GET /ari/sounds | サウンドのプロンプト、言語、AGI スクリプト用にアップロードされたサウンド |
PUT /ari/endpoints/sendMessage?to=pjsip:100&body=Hi | 拡張子 100 の電話にテキスト |
POST /ari/events/user/{name}?application=NAME | アプリケーションへのユーザー イベント (ChannelUserevent) |
GET /ari/asterisk/ping、GET/POST /ari/asterisk/variable、GET /ari/asterisk/modules | ピング、グローバル変数、BitVoice の Asterisk のモジュールに相当するコンポーネント |
BitVoiceはAsteriskの公開されたARIのすべての操作に答えます(そのテストスイートはそれぞれを呼び出し、返されるものにAsteriskの説明で必要とされるフィールドがあるかどうかを確認します)。いくつかはここでは何もしませんし、501で理由を返します: ロード可能なモジュール(BitVoiceは1つのプログラムです)、Sorceryの動的構成(BitVoiceはWebインターフェイスで設定されます)、ログチャンネル、ブリッジのビデオソース(ARIブリッジは音を運びます)、電話にREFERを送信すること、および放送呼び出しを要求すること。スヌープは呼び出し先のみを聞きます(spy=in)、whisperは提供されません: チャンネルを彼らのものとブリッジして彼らと話します。すべての呼び出しのチャンネルイベント(ChannelCreated、ChannelStateChange、ChannelDestroyed)は、AsteriskのsubscribeAll=trueのように、すべてのプログラムに送信されます。サーバーからインターフェイスを読み取るARIライブラリ(ari-clientなど)は、/ari/api-docs/resources.jsonでそれを見つけます。どのプログラムが現在保持しているか、設定のARIアプリケーションでは、アプリケーション、カスタムデバイス状態、メールボックス、グローバル変数、ブリッジをプログラムが設定したものが表示されます。
押されたキーの到着はChannelDtmfReceivedとして到着します。呼び手が電話を切るとStasisEndになります。プログラムが接続されていない場合、呼び出しはフォールバックに移動します。プログラムの最後の接続が閉じると、5秒後に呼び出しもフォールバックに移動します(再接続する時間)。独自のプログラムなしで呼び出しロジックの場合、呼び出し全体を実行するスクリプト (章 27)を使用してください。オーディオをプログラムに渡すには、音声ボット (章 24)を使用してください。
AGIスクリプト
AGIスクリプト(AsteriskのAGI()とEAGI())は、コマンドごとに呼び出しを実行します。したがって、Asterisk用に書かれたIVRと統合(phpagi、pyst2、Asterisk-Java、任意のFastAGIサーバー)は、引き続き機能します。設定のAsterisk互換性の下のAGIスクリプトに追加してください。
| フィールド | それが何であるか |
|---|---|
| スクリプト名 | 宛先がそれをどのように呼ぶか |
| アドレス | FastAGIサーバー、agi://host:4573/script?x=1(ポート4573が指定されていない場合)、hagi://domain/scriptドメインの _agi._tcp SRVレコードのサーバー(優先順序で試みます)、またはAGIプログラムフォルダーのプログラムファイル名 |
| 引数 | agi_arg_1、agi_arg_2として渡されます… |
| 呼び出す番号 | オプション: 拡張機能はそれを任意の番号として呼び出します |
| フォールバック | スクリプトが終了したとき、または番号を選択せずに到達できないときに呼び出し先が移動する場所 |
| 最長実行時間 | 実行時間が長いスクリプトは停止されます(デフォルトは1時間) |
| EAGI | プログラムの場合: 呼び出し先のオーディオ(8 kHz、16ビット符号付き、リトルエンディアン)がファイル記述子3にあります。LinuxおよびmacOS |
テストは、呼び出しを送信せずにサーバーに接続します(またはプログラムが存在し、実行可能であることを確認します)。次に、任意の宛先のようにそれに呼び出しを送信します。
BitVoiceは呼び出しに答え、agi_変数(agi_network_script、agi_callerid、agi_dnid、agi_extension、agi_languageなど)を送信し、Asterisk 20が行うようにコマンドを実行し、答えます(テストスイートはAsteriskの答えの記録と比較して答えを確認します)。
| コマンド | ノート |
|---|---|
| ANSWER、HANGUP、CHANNEL STATUS、NOOP、VERBOSE | HANGUPはチャンネル名のみでスクリプトの呼び出しを終了します |
| STREAM FILE、CONTROL STREAM FILE、GET OPTION、GET DATA、WAIT FOR DIGIT | エスケープキー、サンプルオフセット、Asteriskと同じ終了位置; CONTROL STREAM FILEの高速再生、巻き戻し、ポーズ |
| SAY DIGITS、SAY NUMBER、SAY ALPHA、SAY PHONETIC、SAY DATE、SAY TIME、SAY DATETIME | 設定のスピーチサービスで、AIがそれらを話します。そうでない場合、数字はサウンドから話されます |
| RECORD FILE | s=N沈黙、ビープ、エスケープキー; ファイルはサウンドライブラリに保存されます |
| SET VARIABLE、GET VARIABLE、GET FULL VARIABLE | CALLERID(num)、CALLERID(name)、EXTEN、UNIQUEID、CHANNEL…および${NAME}式 |
| DATABASE GET、PUT、DEL、DELTREE | Asteriskのデータベース(AstDB)、BitVoiceによって保持され、AGIデータベースの下に表示されます |
| SET CALLERID、SET EXTENSION、SET CONTEXT、SET PRIORITY、SET AUTOHANGUP、SET MUSIC | SET EXTENSIONは、スクリプトが終了したときに呼び出し先が移動する場所です |
| SPEECH CREATE … SPEECH RECOGNIZE | 設定のAIのスピーチを使用してテキストに変換します: 結果は呼び出し先が話したもので、text0としてスクリプトに渡されます。グラマーは受け入れられ、使用されません |
| EXEC | Answer、Hangup、Playback、Background、Read、Set、MSet、SayDigits、SayNumber、SayAlpha、Wait、Dial(順番に各番号を呼び出し、DIALSTATUS)、Goto、VoiceMail、Queue、MusicOnHold、Record、NoOp、Verbose、Log。Asteriskが見つからないアプリケーションの場合と同様に、他のものは-2で答えます |
BitVoiceにはダイヤルプランはありません。Asteriskのダイヤルプランでスクリプトが進むところ(SET EXTENSION、EXEC Goto)では、スクリプトが終了したときに呼び出し先が移動する番号(拡張機能、リンググループ、キュー、メニュー、またはアウトバウンドルートを介して外部番号)に移動します。スクリプトは緊急番号を呼び出しません。呼び出し先が電話を切ると、FastAGIスクリプトはHANGUPを受け取り、プログラムはSIGHUPを受け取ります。ただし、死んだチャンネルで実行できるコマンドのみが実行され、30秒後にスクリプトが続行されると接続が閉じられます。各実行は最後の実行の下に表示され、イベントストリームにagi.ranとして送信されます。
AGIスクリプトのサウンド。スクリプトは、Asteriskで使用する名前でサウンドを再生します。Asteriskの.gsm、.ulaw、.alaw、.sln、.sln16、WAV、MP3をAGIスクリプトのサウンドの下にフォルダーとともにアップロードします(custom/welcome;es/custom/welcomeはスペイン語を話す呼び出し先の場合)。パス/var/lib/asterisk/sounds/en/custom/welcome.gsmはcustom/welcomeを見つけます。Asteriskのdigits/0–digits/9、beep、silence/N、およびいくつかの他のもの(vm-goodbye、invalid、please-hold)は、BitVoiceのプロンプトとトーンを再生します。スクリプトが録音したものは、同じライブラリに保存され、スクリプトによって録音されたとマークされ、選択した日数(デフォルトは30日)保持されます。ライブラリは最大1 GBまで保持します。
プログラム。このサーバーでBitVoiceの権限で実行されるプログラムなので、ウェブ経由でアップロードすることはありません。画面に表示されるAGIプログラムフォルダー (DATA/agi-bin) にコピーし、実行可能にします。環境からPATHとAST_AGI_DIRのみを受け取り、そのフォルダーで実行され、標準エラーに出力した内容はサーバーログに記録されます。FastAGIはプレーンなTCPでコマンドを送信するため、サーバーをこのコンピューターまたはプライベートネットワーク上に保管してください。
ログイン
各ログインにはユーザー名とシークレットがあります。ログインは読み取り専用です。AMIはプレーンな、暗号化されていないTCPなので、AMIをこのコンピューター上に保管してください。ツールが別の場所で実行される場合は、AMIをそのコンピューター上に保管してください。
AI アシスタント (MCP)
Claude、ChatGPT、Gemini、または Cursor のような AI アシスタントは、モデル コンテキスト プロトコル (MCP) を使用して BitVoice と通信できます。MCP は、アシスタントが他のプログラムにアクセスするための標準的な方法です。例えば、朝に着信した番号や、誰かがその番号に返信したかどうか、歯医者からの着信者の話した内容、9 時の着信がボイスメールに転送された理由、プロバイダーの回線がダウンしているかどうかを尋ねることができます。ご自身の許可があれば、アシスタントは着信を発信したり、テキストを送信したり、着信を切断したりすることもできます。
BitVoice は、https://YOUR-SERVER/mcp (ストリーミング HTTP; アドレスは設定で表示されます) で MCP サーバーを提供します。AI サービスに情報が送信されるのは、アシスタントが接続して情報を要求した場合のみであり、要求された情報のみが送信されます。
有効化
設定 (章 14) で、AI アシスタント (MCP):
- AI アシスタントの接続を許可: デフォルトでオフです。オフの場合、
/mcpには何も応答しません。 - アシスタントの操作を許可: デフォルトでオフです。オフの場合、アシスタントは読み取りのみが可能で、トークンに関係なく操作は行えません。オンの場合、アシスタントはトークンに応じて操作を行うことができます。
カードには、一般的なアシスタントのアドレスと設定が表示され、すべてのツールがリストされます。
アシスタントが行えること
読み取り (任意のトークン):
- calls_now: 現在進行中の着信。
- call_history: 過去の着信、番号または名前で検索、方向と時間から、着信の理由を含む。
- extensions: 名前、番号、部門、メール; 電話のパスワードは含みません。
- phones_connected: 登録されている電話と場所。
- voicemail、search_transcripts: メッセージと録音された通話の内容。
- queues、trunks、health: 現在のキュー、プロバイダーの回線、BitVoice のチェック。
- directory、text_messages: 会社の電話帳とテキスト会話。
操作 ( アシスタントの操作を許可 と、操作を許可するトークンが必要):
- place_call: 着信を発信します。拡張子の電話が最初に鳴り、誰かが応答すると、BitVoice はその番号をダイヤルします。ルーティング、発信者 ID、制限は適用されます。
- send_text: 組織のテキスト送信番号からテキストメッセージを送信します。
- hang_up_call: 進行中の着信を終了します。
すべてのツールは API のルートとして実行され、アシスタントとして実行されます。アシスタントは、トークンに応じて情報を表示または変更できます。回答は約 60,000 文字に制限され、検索が切断された場合はアシスタントに絞り込みを求められます。
アシスタントの接続
サインインするアシスタント (Claude.ai および ChatGPT カスタム コネクタなど): BitVoice のアドレスでコネクタを追加します。アシスタントは BitVoice のサインインをブラウザで開き、通常の方法 (パスワード、2 段階認証、シングル サインオン) でサインインし、ページはどのアシスタントが要求し、どこに戻るかを表示します。管理者は、アシスタントがアクションを実行できるようにするか、読み取りのみ にすることができます。ビューアーのアシスタントは読み取りのみです。許可しない は、アシスタントを何もなしで拒否します。アシスタントのアクセスは、管理者 (章 57) の API トークンとして AI アシスタント、サインイン として機能し、 /mcp のみで機能し、使用されていない場合に最大 30 日間で 1 時間ごとに更新されます。 取り消し は、アクセスを即時に終了します。これらのアシスタントは、自身のサーバーから BitVoice に接続するため、インターネットからアクセス可能なアドレスと、信頼できる証明書 (Let's Encrypt、証明書 (章 14)) が必要です。
トークンを与えられたアシスタント (Claude Code、Cursor、VS Code など、住所とヘッダーを受け取るツール): 管理者 (章 57) で API トークンを作成し、読み取りのみ (アクションを実行する必要がない場合) にし、Authorization: Bearer bv_... として提供します。
claude mcp add --transport http bitvoice https://pbx.example.com:8443/mcp --header "Authorization: Bearer bv_..."
プログラムを開始するアシスタント (Claude Desktop など、コマンドを受け取るもの): BitVoice プログラムには、HTTPS でサーバーに各メッセージを渡すブリッジ bitvoice mcp が含まれています。サーバーのアドレスとトークンを提供します。
{ "mcpServers": { "bitvoice": { "command": "bitvoice", "args": ["mcp", "-url", "https://pbx.example.com:8443"], "env": { "BITVOICE_TOKEN": "bv_..." } } } }
With BitVoice's own certificate (not one from an authority), the bridge refuses it and prints its SHA-256: check it is your server's, then add "-pin", "THAT-SHA256" to the arguments. Only that certificate is then accepted.
安全に残す
- トークンのみ: ブラウザの BitVoice へのサインインは
/mcpに到達しないこと、および他のサイトのページは拒否される (Origin) ため、Web ページではアシスタント接続を使用できません。 - アシスタントは誤った情報を提供する可能性があります。アクションを実行する必要がない場合は、読み取り専用トークンを提供します。アシスタントが実行したすべてのアクションは監査ログに記録され、呼び出しは常に人の電話に最初に鳴ります。
- MCP で指定された OAuth 2.1 によるサインイン: アシスタントは自身を登録します (パブリック クライアントのみ、PKCE を使用)。登録されたアドレス (https、または自身のコンピューターの http) へのみ戻り、コードは 1 分間有効です。
- 他の BitVoice でホストされている組織は、アシスタントにトークンを提供します。そこでの OAuth によるサインインはまだ試されていません。
アーカイブ
/archiveアーカイブは、録音、ボイスメール、設定などのコピーを別の場所に保存します: Amazon S3 バケット (または S3 互換ストア) または Azure Blob Storage コンテナーです。如果このサーバーのディスクが失われる場合、アーカイブにはまだコピーが残っています。
設定
- アーカイブ (章 72) で、アーカイブ先 を選択します: Amazon S3 または Azure。
- S3 の場合: バケット、リージョン、バケット内のオプションの フォルダー と エンドポイント (S3 互換ストア用)、および アクセスキー ID と シークレットアクセスキー。ポリシーをコピー により、ユーザーまたはロールにアタッチするための唯一の権限が付与されます。
- Azure の場合: 書き込み権限を持つ コンテナーの SAS URL と、オプションの コンテナ内のフォルダー。
- 構成以外にコピーするものを選択します: 通話録音、ボイスメール、または両方。
どうなる
BitVoice は、10 分ごとにアーカイブにまだない新しい録音とメッセージをコピーし、1 日に 1 回、日付付きの構成 (config/2026-10-13.json) をコピーします。ページには、最後の実行、最後の成功、およびエラーが表示されます。
ここで何かを削除すると (保持期間または手動で)、アーカイブのコピーは削除されません。バケットまたはコンテナーのライフサイクル ルールを設定して、アーカイブが項目を保持する期間を指定します。
法的保持
/holds法的保持により、特定の事案に関連する通話レコード、録音、ボイスメールを保持し、誰もがそれらを削除することを防ぎます。弁護士がレコードの保存を依頼した場合に使用します。
保持の追加
法的保持 (章 73) で 追加 を押します。
| フィールド | 内容 |
|---|---|
| 名前 | 事案の名前 |
| 理由 | 記録のための理由 |
| 番号 | カバーする拡張子と外部番号 (101, +15551234567 )、または すべて |
| から、まで | カバーする日付;空白の場合、制限なし |
保持中
- 保持は、保持対象のものをその年齢に関係なく保持します。
- 誰もが保持された通話、録音、ボイスメールを削除できません。管理者も含みます。
- 保持された通話は、通話履歴 (章 47) にロックを表示します。
解除
解除 により、保持していたものが保持設定に従って削除されるようになります。解除された保持は、解除日時と解除者とともにリストに残り、保持の追加と解除は監査ログに記録されます。
メトリクス: Prometheus、OpenTelemetry、Grafana、SNMP、通話レコード
/settingsPrometheus は Web アドレスの /metrics をスクラップします。管理者 (または閲覧者) 用の API トークンを作成し、Prometheus にそのベアラー トークンとして提供します。
scrape_configs:
- job_name: bitvoice
scheme: https
authorization: { credentials: bv_... }
static_configs: [{ targets: ['pbx.example.com'] }]
Prometheus は、進行中の通話 (状態別)、終了した通話 (方向と結果別)、話時間、登録された電話、各トランクの状態とラウンドトリップ時間、待機中の呼び出し先、各キューのエージェント、受信したサウンド パケットと失われたパケット、MOS ( Mean Opinion Score) のヒストグラム、予約されたコールバックなどを読み取ります。 カウンタは、Prometheus が期待するように、BitVoice の再起動時にゼロから再開します。
OpenTelemetry: 設定、メトリクスで、コレクターの OTLP/HTTP アドレス (およびヘッダーとその値) を入力して、同じ測定を 1 分間 (または設定した間隔で、最短 15 秒) 推送します。 今すぐプッシュ は保存された設定を確認します。
Grafana ダッシュボード をダウンロードすると、事前に作成されたダッシュボードが入手できます。Grafana でインポートし、Prometheus データ ソースを選択します。
SNMP
SNMP を使用する監視システム (Zabbix、PRTG、LibreNMS、Nagios、SolarWinds) では、設定で SNMP エージェント を有効にします。SNMPv2c の GET、GETNEXT、GETBULK を読み取り専用で、UDP ポート 161 (または別のポート、Linux では低いポートを開く権限が必要) で回答し、リストしたネットワークのみから回答します。 コミュニティ を選択します (public や private 以外)。これは、ネットワークを経由するパスワードです。
システム グループ (sysDescr、sysUpTime、sysContact、sysName、sysLocation) と BitVoice 独自の値を、ベース OID の下に提供します。進行中の通話と着信、登録された電話、トランクのアップとセットアップ、待機中の呼び出し先、終了した通話、話時間、失われたパケット、平均の通話品質、トランク テーブル (名前、状態、待ち時間) とキュー テーブル (待機、エージェント、回答、放棄) です。設定の隣の BITVOICE-MIB をダウンロードして、監視システムで読み込みます。BioDream LLC には現在、エンタープライズ番号がないため、デフォルトのベース OID は Net-SNMP の実験スペースにあります。安定性を保つために、自分のエンタープライズ番号の下に配置します。
トラップ (SNMPv2) は、トランクがダウンしたり復帰したり、緊急通話が行われたり、クラスターのサーバーが応答を停止したりしたときに、各レシーバーに送信されます。SNMPv3 は現在サポートされていません。
通話レコードの別の場所
通話履歴の隣に、各レコードは通話終了時に以下の場所に送信できます。
- Syslog (RFC 5424、JSON 形式) を、UDP、TCP、または TLS で送信します。ログ サーバーまたは SIEM 用です。
- 1 日あたりの CSV ファイル、Asterisk の Master.csv 列と同じ形式で、Asterisk 用に作成されたレポートおよび請求ツールが読み取れるようにします。通話履歴 (章 47) の下部でファイルをダウンロードします。スプレッドシートで式として実行されるセルは、安全に書き込まれます。
- PostgreSQL テーブル、別のデータベース内の Asterisk の
cdr列 (calldate、clid、src、dst、duration、billsec、disposition、uniqueid…) と BitVoice の方向、トランク、コスト、MOS を含むテーブルに、各通話を 1 回だけ書き込みます。
テストレコードを送信 は、保存された設定で Syslog サーバーとデータベースをテストします。
通話ジェネレーター
/loadtest通話ジェネレーターは、このコンピューターからBitVoiceに実際の通話とオーディオを配置します。サーバーが何通話を処理できるか、またどれほどうまく処理できるかを確認したり、変更後に通話が予想どおりに進行するかを確認したりするために使用します。
テストの実行
| 設定 | 内容 |
|---|---|
| 呼び出す番号 | BitVoice 内の番号: 拡張番号、グループ、キュー、メニュー |
| 呼び出し元 | 表示される呼び出し元番号 |
| 応答として | 自動応答する拡張番号、または誰も応答しない場合 (メニュー、エコーテスト) |
| 呼び出し | 合計数 |
| 同時 | 進行中の最大数 (最大 2,000)。各リレー呼び出しは、Media from と Media to (設定) からメディア ポートを使用します。デフォルトの 10000-20000 は約 1,800 を保持するため、より多くの場合には拡大してください |
| 1 秒あたりの新規呼び出し | 呼び出しの開始速度 |
| 各呼び出しの継続時間 (秒) | 各呼び出しの通話時間 |
結果の読み取り
| 結果 | 説明 |
|---|---|
| 回答、失敗 | および 呼び出し失敗の理由、理由ごとに |
| 回答時間、中央値、95% | 呼び出し待ち時間 |
| オーディオ ロスト | 到達しなかった音声パケットの割合 |
| オーディオ スコア | 音質の推定 (MOS): 4 以上は良好、3.6 未満は悪い |
| ジッター、95% の呼び出し | 音声の到着タイミングの不均一さ (RFC 3550 の平均到着ジッター); 電話は約 20 ms までスムーズに処理します |
| 最長のギャップ、最悪の呼び出し | どの呼び出しでも音声パケット間の最長の待ち時間; パケットは 20 msごとに到着するため、サーバーの停止はここに表示されます |
| メモリ パウズ、最長のパウズ | Go ランタイムがメモリを整理するためにすべてを停止した頻度と、実行中の最大の停止時間 |
| 進行中の呼び出し数の時間経過 | ロードのグラフ |
SIPトレース
/traceSIPトレースでは、BitVoiceが送受信するメッセージがリアルタイムに表示されます。これは、電話が登録できない場合や通話が失敗した場合に最初に確認するべき場所であり、プロバイダーのサポートデスクもこれを要求します。
メッセージの検索
BitVoiceは、最後の2,000件のメッセージをメモリに保持しています(ディスクに書き込まれたものはありませんが、再起動後に消去されます)。フィルタで番号、住所、またはCall-IDの一部を入力します。最新のメッセージを表示するには、更新 を押します。
メッセージを選択すると、メッセージの全文と、隣接する 通話フロー が表示されます。通話フローには、電話、BitVoice、プロバイダーの間で交換されるすべてのメッセージが、通話の順序で表示されます。
トレースの読み取り
| 表示 | 通常の意味 |
|---|---|
| REGISTERが401で応答し、その後何もなし | 電話のパスワードが間違っている、またはパスワードが設定されていない |
| REGISTERが403で応答 | アドレスが禁止されている、または電話が別の拡張子としてサインインしている |
| INVITEが404で応答 | ダイヤルされた番号に一致するルートがない (ルーティング (章 8)) |
| INVITEがプロバイダーによって403で応答 | プロバイダーが発信者IDまたは番号を拒否している |
| 486 | 相手が忙しい |
| 488 | 両側が共通のコーデックを持っていない (コーデック (章 66)) |
| 200 OK、その後約30秒でBYE | ACKが到着しなかった: 中間のルーターがSIPメッセージを書き換えたりドロップしたりしている (ルーターの"SIP ALG"を無効にする) |
| 通話が接続されるが、音が聞こえない | 音がブロックされている: 設定の公開アドレスと、ファイアウォールのメディアポートを確認してください |
公共の安全性: ラボトラック
911対応ポイントプロファイル、ラジオディスパッチコンソール、およびNG911 Coreサービス。ラボと設計パートナートラック: 記録されたキャプチャ、サンプルデータ、およびスタンドインに対して構築およびテストされましたが、ライブ911またはラジオディスパッチに認定されていないし、まだライブESInet、P25システム、またはCADでテストされていません。設定で有効化されるまで、メニューから除外されます。自分の電話からの緊急通報(はじめに)とは、このトラックの一部ではありません: それはすべての電話システムの一部です。
911 通話 (911 プロファイル)
/psapBitVoice は PSAP の通話処理システムとして 911 通話に応答します: 緊急サービスネットワーク (ESInet、NENA i3) からの通話は、発信者の位置とネットワークデータで到着し、通話処理者はすぐにそれらを確認し、CAD に通知されます。
設定
- トランク (章 7)で、ESInetプロバイダ(またはNG911コアのESRP)からのトランクを追加し、ESInetからを有効にします。
- 呼出ルーティング (章 8)で、その呼出を呼出受付者に送信します: キュー、またはリンググループ。
- 911呼出で、機関ID(ドメイン、例:
psap.county.example.gov)とCADが受け取る情報(ALIリスナーのアドレスとポート、EIDOアドレス)を入力します。
911呼出が鳴る時、911呼出に以下の情報が表示されます:
- 住所(シビックロケーション)と位置(不確実性の範囲内)、地図上に不確実性の円を描き、OpenStreetMapへのリンク;
- プロバイダ、サービス種別(ワイヤレス、VoIP、住宅、事業所)、デバイス、サブスクリバー、追加データ(RFC 7852);
- 読み取りエラーの情報。
位置情報は、呼出に含まれる(値として)またはBitVoiceがHELDで取得する。参照を持つ呼出には再取得位置があり、BitVoiceは移動中または初期位置が不正確な場合に再度問い合わせます。
位置の再取得によって位置が変更された場合、位置チェックでどちらの位置を優先するか、理由とともに表示されます: 新しい位置を優先するルール; 初期位置が精密なデバイスフィックス(GPS、100m以内)で2分以内に取得された場合と新しい位置が不正確な場合、初期位置を優先; 位置が不確実性の範囲を超えて異なる場合、呼出受付者が呼出者に確認するように両方を表示します。初期位置は呼出に残ります。
呼出受付者が応答した時、CADは以下の情報を受け取ります:
- ALIスピル: CADシステムが読み取るテキストブロック(コールバック番号、サービスクラス、アドレス、位置、不確実性、プロバイダ)、TCPで送信;
- EIDO: NENA-STA-024のインシデントドキュメント、HTTPS POSTで送信(ベアラートークンが設定されている場合)。EIDOは呼出に表示されます。アドレスは
httpsでなければなりません。プライベートネットワークを含むネットワークを越えては暗号化されないため、httpはCADが同じコンピュータにある場合(http://127.0.0.1:…)のみ許可されます。CADへのラジオイベントの送信も同様です。保存されたhttpアドレスは拒否されます。古いバージョンで保存されたアドレスはBitVoiceの起動と他の変更の保存に影響しないですが、ヘルス (章 13)では赤で表示され、変更されるまで送信されません。
ALIスピル自体はプレーンTCPです。レガシーカッドリスナーがそれを受け取るため、暗号化を要求することはできません。別のコンピュータに送信する場合、ヘルスは警告を表示します: 共有ネットワークからそのパスを外し、シリアルリンク(serial:/dev/…)またはVPN、プライベート回線を使用してCADに接続します。機関IDも設定します: EIDOsとi3ログでは機関IDで機関を識別し、ヘルス (章 13)では空の場合に警告を表示します。
911呼出は拒否されません。ESInet(またはCAMAトランク)からの音声呼出で、受信ルートが拒否する場合(ルートが切断される、グループに誰もいない、存在しない、または誰も応答しない)、すべての呼出受付者が代わりに呼び出されます: 有効なすべての内部番号と、呼び出しが鳴っている間に接続する電話。誰かが応答するか、呼出者が切断するまで続きます。テキスト呼出も同様に待機します。呼出のルーティングの経過では何が起こったかが表示され、ヘルス (章 13)ではそのようなルートについて警告を表示して修正できるようにします。テスト呼出(urn:service:test.sos)と911呼出でない呼出のみが拒否されます。
転送によっても切断されません。呼出受付者が911呼出を転送し、転送が接続できない場合(内部番号に電話が接続されていない、または誰も応答しない)、呼出は呼出受付者に戻ります。呼出受付者が既に切断している場合(ほとんどのデスク電話がブラインド転送後にすぐに切断する)、すべての呼出受付者が代わりに呼び出され、誰かが応答するまで続きます。911呼出は内部番号のボイスメールやその他の応答なしの宛先に転送されることはありません。ルーティングの経過では何が起こったかが表示されます。どの呼出でも、電話が転送を要求した直後に切断した場合、電話のみが解放され、転送は続行されます。
呼出者が消えた場合。呼出の片側が音声を送信を停止し(電源や信号を失った電話がハングアップを送信しない)、もう一方の側がまだ音声を送信している場合、呼出は*呼出者のオーディオが停止した*という理由で終了され、呼出記録とcall.endedイベント(cause、endedBy)に記録されます。ホールド中、ファクシング中、または音声を送信しないことを示した側は、この方法で終了されません。サイレンスはパケットを送信するため、話すことができない呼出者でも呼出は維持されます。
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 (章 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.
発信者ビデオと写真。 911通話の場合、発信者にビデオリンクを送信 を選択すると、発信者専用のリンクが生成されます。このリンクは、リンクを送信元 の番号からテキストメッセージで送信され、または読み上げられます。テキストメッセージが送信できない場合 (テキストメッセージ用の番号が設定されていない、または発信者が番号を送信していない場合)、スクリーンとAPIの problem は、理由を表示します。発信者は、携帯電話のブラウザ (アプリ不要) でリンクを開きます。ライブビデオを共有 を選択すると、バックカメラのライブビデオ (WebRTC、WHIP: RFC 9725) が送信され、写真またはビデオを送信 を選択すると、発信者がすでに撮影した写真やビデオ (ダッシュカメラやアクションカメラのファイルを含む) が送信されます。通話中:
- ライブビデオは ライブ と表示され、発信者のビデオを表示 を選択すると、ぼかした状態で再生され、表示 (ショックを受ける可能性あり) を選択すると、元の状態で表示され、再びぼかす を選択すると、再びぼかした状態になります。
- 各ファイルには、サイズ、撮影時刻 (カメラの時計による)、撮影場所 (GPS情報があれば)、および SHA-256 ハッシュ値 (到着時に計算されるため、後でファイルのコピーが同じであることを証明できます) が表示されます。表示 を選択すると、ファイルが開き、証拠として保持 を選択すると、通話のファイルが保持期間を超えて保持されます。
- ビデオの視聴リンク (WHEP) を使用すると、CAD、ユニットのスクリーン、または他の位置から、同じライブビデオをサインインせずに視聴できます。視聴リンクをキーとして扱います。
ビデオは通話から自動的に取得されません。各ライブビデオには独自のポートがあり、このサーバーは同時に ライブビデオ数 (設定されていない場合は4) のポートを受け付け、各ビデオは ビデオビットレート を超えないように要求され、10秒間ビデオが停止すると終了されます。発信者の携帯電話は、このサーバーに リンクアドレス (https) とメディアポート (UDP) で接続する必要があります。ファイルは、ファイルと公開ログの保持期間 (空の場合、削除されるまで) に設定された日数間保持され、保持通話を除きます。
ライブビデオの録音。 発信者のライブビデオを録音 を有効にすると、発信者のライブビデオは写真やクリップとともに、1つのファイル (IVFファイル、H.264またはVP8、各フレームにタイムスタンプ) として保持されます。ファイルは、書き込み時にハッシュ化されます。パケットロスによって破損したフレームは除外され、携帯電話は次のフレームの送信を要求されます。表示 を選択すると、ファイルが再生され (ffmpegを使用してWebMまたはMP4ファイルに変換され、同じフレームが別のコンテナに格納されます。ffmpegがなければ、元のファイルがダウンロードされます)。元のファイルをダウンロード を選択すると、ハッシュ化されたファイルがダウンロードされます。ffmpeg、VLC、フォレンジックビデオツールで元のファイルを開くことができます。
CADへの送信。 CADに送信されるEIDO (NENA-STA-021) には、各写真、クリップ、録音、ライブビデオ (継続中) が、参照による追加データとして名前が付けられます。urlPurpose は caller-photo、caller-video、caller-video-recording、または caller-video-live となり、additionalDataByReferenceUrl は /m/{viewToken}/{n} または /whep/{viewToken} となります。BitVoiceは、ファイルが到着したとき、またはライブビデオが開始または停止したときに、CADにEIDOを再送信します。リンクは リンクアドレス (またはこのサーバーのパブリックアドレス) を使用します。どちらも設定されていない場合、EIDOにはメディアが含まれません。すべてのリンクを介したアクセスは、公開ログに記録されます。イベントストリームも同じ情報を提供します (GET /api/events: call.media、call.video)。BitVoiceのEIDOは、NENAの公開EIDOスキーマに対して検証されます。
存在しないリンクは、サインインよりも高速に推測されません。繰り返しアクセスを試みるアドレスは、一時的にアクセスが拒否されます。発信者からのファイルは、サンドボックスで提供され、このサーバーのページとして提供されることはありません。
公開。 ライブビデオの表示回数と写真やクリップの開封回数は、911通話の 公開 にカウントされます。公開回数は、誰が、どのくらいの頻度で、どのくらいの通話数に対して行われたかが記録されます。これは、監督者とセンターのウェルネスプログラムのために使用されます。
911通話自体 (SIPビデオを介したESInet) で送信されるビデオも、同じ方法で視聴できます。視聴 を選択すると、リンクビデオがライブでない場合に、ビデオをソースとして使用します。
番号のみの通話。 場所情報 (CAMAトランクまたはESInet通話の場合) がない場合、911通話の番号から場所を検索できます。場所検索 (ALI) に、ALIデータベースまたは場所サーバーのHELDインターフェース (RFC 5985、RFC 6155に従って電話番号で問い合わせ) のアドレスを指定します。BitVoiceは、通話が到着したときに問い合わせを実行し、回答が返されたときに場所が通話に表示されます。通話は、検索が失敗した場合と理由を表示します。
ALIレガシーリンク。HELDサーバーがなければ、BitVoiceはALIコントローラー、またはALIデータベースのデータリンクに、旧方式で問い合わせることができます: リクエストを送信し、ネットワーク(ALIリンクアドレスホスト:ポート)またはシリアルポート(serial:/dev/ttyUSB0?baud=9600&parity=none、bitsとstopも使用可能; USBシリアルアダプターが機能します; LinuxとmacOSでは使用可能ですが、Windowsでは使用不可: その代わりに、シリアルからネットワークへのコンバーターとそのアドレスを使用します)からテキストとしてレコードを読み取ります。リクエストは送信する内容です: {ani10} 10桁のコールバック番号、 {ani7} その最後の7桁、 {pos2} ポジション、 STXと ETX(空白の場合: {ani10})。答えはそのETXまで読み取ります。ALIレイアウトはプロバイダーと州によって異なります。したがって、各フィールドを配置します: その行、列、長さ(0: 行の末尾まで)、ALI画面の印刷物から。Street(全行)は、ストリート行をその部分に分割するか、または各部分を個別に配置します。サンプルレコードを貼り付け、サンプルを読み取るをクリックして、列のルーラーと各フィールドの読み取り結果を表示します。問い合わせるは、リンク自体に番号を問い合わせます。レコードの住所とポジションは、呼び出しの場所になり、その名前は呼び出し人の名前になり、サービスクラスは呼び出しに表示されます。リクエストとテキスト回答以外のプロトコル(PAM、E2、他社の独自プロトコル)は使用されません: これらはゲートウェイが必要です。
シリアルポートを介したALIスピル。ALIスピル先も、シリアルポート(serial:/dev/ttyS0?baud=9600)を受け付けます。これは、シリアルケーブルからスピルを読み取るCAD用です。
マップ。911の設定の マップ の下で、BitVoiceにマップタイルを指定します: このサーバー上のラスタータイル (PNG、JPEG、またはWebP) の .mbtilesファイル (あなたのGISチーム、TileMill、gdal2tiles、またはタイルベンダーがあなたの地域のものを作成します) 、またはそのアドレスに{z}、{x}、{y}が含まれる タイルサーバー (あなたの県のもの、または商用のもの: その利用条件に注意してください。公開されているOpenStreetMapサーバーは、この目的では使用できません) 。どちらの場合も、呼出受付者のブラウザーはタイルをBitVoiceのみから取得します: ファイルを読み取り、またはタイルサーバーから取得して最後のタイルをメモリに保持します。同じマップは、無線コンソール上で無線の位置を表示します。ベクタータイルはサポートされていません。
i3ログは、各呼び出しのNENA i3イベント(呼び出し開始、応答、位置、EIDO送信)を保持します。1日1ファイル。応答時間は、目標内に応答された呼び出しの数(NENA: 15秒以内90%、20秒以内95%)、放棄された呼び出し、各呼び出し先の平均応答時間を表示します。1日1行(CSV)は、州の911事務所が通常要求するカウント(呼び出し、応答、放棄、目標内、20秒以内、平均、最長待ち時間)を、選択した日付範囲でダウンロードします。1呼び出し1行(CSV)は、各911呼び出しを、応答時間、応答者、テキスト呼び出しかどうかとともにリストします。各州には独自のフォームがあります: あなたのフォームをレポートレイアウトの下に配置します。この画面またはCADを介して受け付けたテキスト呼び出しは、受け付けた人物の下にカウントされます。誰も受け付けなかった場合、呼び出し先が放棄したとみなされます。
レポートレイアウト。新しいレポートレイアウトは、州または郡のフォームに基づいてレポートを配置します: 各行が何を表すか(1日、1週間、1ヶ月、1日の時間帯、呼び出し先、または1行すべて)、合計行、列(順序付き)、各列に独自の見出し(フォームが異なる場合)。呼び出し、応答、放棄(数または割合)、一定秒数以内に応答した呼び出し(数または割合; 秒数はあなたが決めます。1つのフォームでは10秒と20秒、別のフォームでは15秒と40秒)、一定秒数を超えて応答した呼び出し、平均および最長待ち時間、90%が応答された時間、平均呼び出し時間、テキスト呼び出し(TTY、リアルタイムテキスト、テキストto 911)。待ち時間は、呼び出しの到着から呼び出し先の応答までをカウントします。レイアウトを選択し、日付を選択して、実行をクリックしてここで読み取り、スプレッドシート(CSV)をクリックしてダウンロード、または印刷用ページをクリックして、印刷またはPDFとして保存するためのプレーンページを取得します。レイアウトは設定とともに保存されるため、バックアップとGitに含まれます。
TTY呼び出し。聴覚障害者の呼び出し先は、TTY(テキスト電話、Baudot 45.45ビット/秒)を使用して911に呼び出します。BitVoiceは、すべての911呼び出しの音声から最初の瞬間からTTYを探します: 呼び出し先が入力したテキストは、呼び出し下のテキストとして入力されたときに表示され、一定の間隔または新しい行で新しい行が開始されます。無音の呼び出しは、TTYを待っている可能性があります: 応答した後、TTYで応答をクリックすると、テキストを送信できます。返信を入力し、送信をクリックします: これはTTYトーン(呼び出し先の声は、TTYトーンが再生中はミュートされます。TTYは交互に通信します)として呼び出し先に送信され、TTYのマナーに従います: 各ターンはGA(「続けてください」)で終了し、SKで終了します。TTYで表示できない文字は省略されます。音声、音楽、タッチトーンは、TTYテキストとして認識されることはありません: 文字は、すべてのビットがきれいなTTYトーンである場合のみカウントされます。会話は、呼び出し履歴とi3ログ(1ターンあたり1つのMessageLogEvent)に呼び出しとともに保持されます。911呼び出しでTTYを探すことを停止するには、911設定の911呼び出しでTTYを探すにチェックを外します。
転送。別のPSAPに転送された911通話は、位置情報を保持します: PIDF-LOが通話とともに転送されます。
リアルタイムテキスト (RTT)。音声とともにテキストを送信する電話(VoLTE電話やNG911通話のように、RFC 4103)では、BitVoice自体がテキストに応答します。デスク電話ではテキストは表示されないため、各文字が入力されるたびに通話に表示され、応答はテキストとして返されます。RTTが持つ冗長性により、パケットが失われた場合でもテキストは復元されます。冗長性を超えて失われたテキストはとして表示されます。
911へのテキスト。テキスト制御センター (TCC) は、音声のないセッション (MSRP、RFC 4975、ESInetトランク上) でPSAPにテキストを送信します。BitVoiceが応答し、911通話にマークされた911へのテキストで待機します。テキストは誰の電話にも表示されません。このテキストを取りますで、通話を受け付けることができます (応答時間のカウントが開始され、CADがALIスピルとEIDOを取得します)。会話の下にあるボックスに返信し、完了したら会話の終了をクリックします。TCCがセッションを閉じると、セッションも終了します。911通話のダイアログ内で送信されたSIP MESSAGEも、同じ方法で呼び出しのテキストとして取り扱われ、応答はSIP MESSAGEで返されます。テキストは、ESInetからとマークされたトランクからのもののみを受け付けます。
TLS (TCP/TLS/MSRP、msrps: パス、RFC 4975のセクション14) でセッションを提供するTCCは、TLSでセッションを確立します。このサーバーの証明書 (設定 > 証明書; 証明書がない場合はオファーが拒否されます) を使用します。TCCの証明書は、オファーで指定されたもの (a=fingerprint、SHA-256) でなければなりません。証明書が指定されていない場合は、Coreサービスで設定されたPSAPクレデンシャルエージェンシーのルートを使用して検証されます (設定されている場合)。BitVoiceの応答も証明書を同じ方法で指定します。
どちらの方法で会話が行われたかに関係なく、会話全体は、通話履歴とi3ログに通話とともに保存されます。
まだ実装されていない機能: NG911コアを介したテキストセッションの転送 (ESRPは音声をルーティングする; テキストセッションは到着した場所で応答される); EIDO伝達標準の独自サブスクリプション (NENA-STA-024 WebSocket): BitVoiceはEIDOsを1つのアドレスに投稿します。
無線ディスパッチコンソール
/radioディスパッチャーは、電話コールと同じヘッドセットから無線チャンネルで会話します。BitVoiceは、無線オーバーIP (RoIP) ゲートウェイを介して無線にアクセスします。無線ネットワーク自体は、運用者が管理します。
設定。コンソール設定 の下で、コンソール番号(例: 800)を選択し、各チャンネルを追加します: 名前、サーバーがゲートウェイからチャンネルのオーディオを受信するポート、ゲートウェイのアドレスとオーディオの送信ポート。ゲートウェイでは、RTP、G.711 µ-law、サーバーのアドレスとポート、音声キーシング(VOX)。各チャンネルは、独自のポートと次のポートを使用します(電話コールの範囲外)。
参加。ディスパッチャーは、デスク電話からコンソール番号をダイヤルするか、ブラウザ電話で参加 を押します。次に、すべてのチャンネルのトラフィックがミックスされて聞こえます。聞こえる / ミュート を使用して、ヘッドセットからチャンネルを除外します。ランプは、チャンネルが受信中には点灯します。
話す。チャンネルの 話す ボタンを押して保持します(または、フォーカスしてスペースバーを押します): 声はそのチャンネルにのみ送信され、チャンネルには TX と拡張子が表示されます。1人のディスパッチャーが1つのチャンネルで話すことができます。ボタンは、誰かが話している間、他のディスパッチャーにはグレーアウトされます。誰も話していない場合、チャンネルに何も送信されません。したがって、音声キーシングの無線は、空中で保持されることはありません。
パッチ。1つのチャンネルの パッチ を押し、別のチャンネルの ここにパッチ を押します: 2つのチャンネルは、パッチ解除 を押すまで、相互に通信します(例: 消防チャンネルと相互援助チャンネル)。
P25トークグループ。チャンネルは、P25トークグループでもあります。直接ISSI (TIA-102.BACA、P25サブシステム間のインターフェイス) を介して参加します(CSSIコンソールPTTワードを送信 がオンの場合、BitVoiceは各リクエストにコンソールサブシステムのワードを追加します)。P25トークグループ (ISSI) を選択し、トークグループID、トークグループのホームRFSSのSIPアドレスとID、および音声のポートを指定します。このコンソールのP25システム の下で、WACNとシステムID、RFSS ID (P25管理者がこのコンソールに割り当てたもの)、ディスパッチャーが送信するユニットID、およびISSIが使用するSIPポートを入力します。P25システムは、このサーバーをこのアドレスのRFSSとして認識する必要があります。タイルには、グループコールがアクティブな間 P25 が表示され、グループコールがアクティブでない場合は P25ダウン と理由が表示されます。タイルには、無線が話しているユニットIDが赤で表示され、緊急コールの場合は EMERGENCY です。話す は、ホームRFSSにチャンネルを要求します(チャンネルを要求中...); チャンネルが許可されると、音声が送信され、拒否されると(優先度の高いユーザーがチャンネルを使用中) タイルにはその旨が表示されます。音声は、BitVoice内でP25ボコーダであるIMBEに変換されます。
暗号化トークグループ。暗号化キーの下に、無線店が提供する各トラフィックキーを追加します: 名前、アルゴリズム (AES-256、DES-OFB、またはトリプルDES)、キーID、ヘックス形式 (TIA-102.AAAD) のキー自身。保存したキーは、管理者であっても二度と表示されず、フィールドを空のままにすると保持されます。コンソールは、同じアルゴリズムとキーIDを持つキーがある場合、暗号化された送信を聞くことができます: タイルにはロックとアルゴリズムが表示され、話しているユニットの横に表示されます。キーがなければ、送信はミュートされ、ノイズとして再生されることはなく、タイルには キーなし: ミュート と表示されます。トークグループで暗号化して送信するには、チャンネルの 送信 でキーを選択します。すると、タイルには TX AES-256 (または選択したアルゴリズム) と表示されます。完全な設定のエクスポート (設定、管理者のバックアップ) にはキーが含まれるため、これらのファイルをキーと同じように安全に保管してください。
プライベートコール。コンソールがP25システム上にある場合、ポジションバーの 無線を呼ぶ で、ユニットID (緊急時は 緊急 をオンにします) で1つの無線を呼びます。コールは、独自のタイル プライベートコール: ユニット 197 になり、他のチャンネルと同じように 話し始める と 切断 します。無線もコンソールを呼び出すことができます。コンソールが送信するユニットIDで呼び出され、タイルは 着信 (緊急時は赤で 緊急 と表示) とマークされ、すべてのディスパッチャーが聞き、どちらかが切断すると終了します。コンソールのP25設定の プライベートコール で、無線のホームであるRFSSのSIPアドレスとIDを指定します (最初のトークグループのホームを使用する場合は空のままにします)。また、プライベートコールを暗号化する場合は、送信するためのキーも指定します。
アラートトーン。チャンネルで アラートトーンの送信... を実行すると、次のいずれかが送信されます: アラート 1 (3 秒間の 1000 Hz の連続トーン)、アラート 2 (1000 Hz と 1500 Hz の間のワブルトーン)、アラート 3 (1000 Hz のパルストーン)、または短い ビープ。トーンはチャンネルを保持し (タイルには トーン と拡張子が表示され)、すべてのディスパッチャーがチャンネルを監視している場合はトーンが送信され、P25トークグループの場合はホームRFSSがチャンネルを許可した後に送信されます。
緊急事態。無線が緊急ボタンを押して送信すると、そのタイルは赤色で 緊急 とユニットIDが表示され、サーバーログに記録され、すぐにCADに通知されます (以下参照)。無線が話し終わった後も、コンソール上で緊急事態は解除されないままです。ディスパッチャーが 確認 を押すと、タイルには確認したユニットと確認時刻が表示され、CADには radio.emergency.ack イベントが送信されます。確認は表示されているユニットに対して行われます。確認した瞬間に別のユニットの緊急事態に置き換えられた場合は、BitVoiceは確認を拒否し、タイルには新しいユニットが表示されます。つまり、別の緊急事態が誤って解除されることはありません。CADはAPI経由で確認を行うこともできます: POST /api/radio/channels/{id}/ack に {"unit": "bee07.1d5.00044d"} (または無線ID "1101") を含むボディを送信すると、409エラーが返されます (チャンネルの緊急事態は現在別のユニットのものであるため)。ボディがなければ、チャンネルが保持している緊急事態を確認します。
シミュルセレクト。複数のチャンネルで同時に話すには、各チャンネルで 選択 にチェックを入れ、タイルの上にあるバーで N チャンネルで話す を長押しします。すべてのチャンネルで話すか、話さないかのどちらかです。如果他のディスパッチャーがそのうちの1つのチャンネルで話している場合、どのチャンネルもキーされず、どのチャンネルで話しているかが通知されます。
無線の位置。無線は、コンソールが参加する音声側ではなく、無線システムのデータ側を介して位置情報を報告します。P25のロケーションサービス、モトローラのLRRP、またはベンダー独自のサービスを使用し、無線店のデータまたはAVLゲートウェイで収集します。ゲートウェイ (またはその隣に配置された小さなスクリプト) で、各レポートをAPIトークンでBitVoiceにPOSTします: POST /api/radio/locations に {"unit": 1205, "lat": 40.2633, "lon": -76.8823, "speed": 42, "heading": 90, "accuracy": 8, "at": "2026-10-15T14:05:00Z"} または最大500件のリスト (速度はkm/h、方角は度、精度はメートル; これら3つと時間はオプション)。コンソールの 無線の位置 では、各無線の最後の位置が名前とともにリストされ、CADには各位置が radio.location イベントとして送信されます。BitVoiceはLRRPまたはP25のロケーションサービスを自身で解析しません。
無線の名前。無線の名前 の下で、P25ユニットID (例: 1205は「エンジン5」) で無線に名前を付けます。タイルには、無線が話している間にユニットIDの隣に名前が表示され、無線ログとCADのイベントには名前が含まれます。
無線ログと録音。録音とCAD の下で すべての送信を録音 をオンにすると、各チャンネルで聞いたり送信したりしたすべての送信が、無線ログ の行とともに録音として保持されます。行には、いつ、どのチャンネル、誰 (無線のユニットまたはディスパッチャーの拡張子)、どのくらいの長さ、緊急事態、警報トーン、暗号化、プライベートコールであったかが記載されます。聞いた送信は最初の言葉から始まり、最後の言葉の1.5秒後に終了します。検索ボックスでユニット、ディスパッチャー、またはチャンネルを探し、再生 を押して聞きます。録音は、コール録音と同じ期間保持されます (設定、録音)。
Radio data to CAD. Give CAD's address under Send radio events to CAD at (and a shared secret if CAD wants one; it is sent as a bearer token and never shown again). BitVoice then POSTs each event (radio.unit, radio.emergency, radio.emergency.ack, radio.transmission and radio.location) as JSON, {"type": ..., "agency": ..., "data": {...}}: radio.unit when a radio starts talking on a channel (its unit ID, WACN, system, the channel, emergency, encryption), radio.emergency for an emergency (tried three times if CAD does not answer), and radio.transmission for each finished transmission as it appears in the radio log. CAD can also read the log itself with GET /api/radio/log (filters: channel, q, since, until). A CAD that is down never holds up the console. P25 radios' GPS positions are not part of this: they travel over P25 packet data (location services), not over the ISSI's voice.
まだ利用できない機能:P25 Phase 2(TDMA)音声の独自の半レートボーカーダー。Phase 2システムは、ISSIトークグループがフルレート(Phase 1)音声を運ぶか、トランスコーダがそれらを変換する場合(一般的)、コンソールで動作します。音声がブロックで到着し、このコンソールがデコードできないトークグループ(半レート音声がトランスコードされずに送信される、最も可能性が高い)は、そのタイルにここでは静かなと表示され、誰もが静寂を静かなチャンネルと間違えることはありません。このデコードには、BitVoiceが持っていない2つのものが必要です:半レートボーカーダー(AMBE+2、2028年まで特許;所有者からライセンスを取得するか、ライセンスされたハードウェアボーカーダチップ)、およびISSIの半レート音声ブロック形式(TIA-102.BACA-B、TIAによって販売され、公開されていません)。
NG911コアサービス (ECRF、ESRP、LVF、BCF、LIS、ログ)
/core州または地域の911機関が独自のNG911コアを運用する場合: BitVoiceはECRFとしてLoSTに応答し、各911通話をESRPとしてPSAPにルーティングします。
サービスエリア。GISから境界をGeoJSONポリゴンとしてエクスポートし (PSAP境界の場合はurn:service:sos、警察、消防、またはEMSエリアの場合はurn:service:sos.policeなど)、コアサービスにアップロードします。ポリゴンのname、uri、numberプロパティが読み取られます。URIが指定されていないものには、デフォルトのPSAP URIを指定します。編集で、市や郡を追加して、位置が市民住所のみの場合の呼び出し先を指定します。場所を試すで、位置または市がどのエリアに該当するかをLoSTクエリのように確認します。
ECRF。LoSTクエリに応答を有効にし、許可されたアドレス (ESInet) をリストします。他の要素は/lost (RFC 5222) にfindServiceを送信し、PSAPのURIを受け取ります。特定のサービス (sos.policeなど) は、sosサービスから最初に応答され、次にsosサービスから応答されます。カバーされていない場所は、フォレストガイド (RFC 5582: ECRFsの国立ディレクトリ) に移動できます。フォレストガイドで再帰クエリが行われ、回答が返されます (回答のパスの両方のサーバーがリストされます)。他のクエリはフォレストガイドにリダイレクトされ、すでにこのECRFを通過したクエリはループとして拒否されます。
ESRP。PSAPをリストし、各PSAPのURI (エリアで指定されたもの)、到達するトランク、オーバーフローのPSAPを指定し、デフォルトのPSAPを選択します。次に、ESInetの着信911通話をESRPに送信します (通話ルーティング (章 8))。各通話は、位置 (このサーバーのエリアから、またはLoSTによる外部ECRFから) とサービスを要求したサービスを携帯し、PSAPが通話を受け付けない場合はオーバーフローに移動します。位置がない場合、またはカバーされていない場所からの場合、デフォルトのPSAPに移動します。各決定は、911通話 (章 77) のi3ログに記録されます。
ポリシールール。ECRFがPSAPを選択した後、ポリシールールのルールを順にチェックし、すべての条件を満たす最初のルールで決定します: 通話を別のPSAPに送信するか、忙しいとして拒否します。ルールは、サービス (消防のみなど)、ECRFが選択したPSAP、スケジュール (夜間シフトのセンターが閉じている場合)、位置がない通話、BCFが疑わしいとマークした通話、および通話が到着したトランクを確認できます。各決定は、ルールを指定するRouteLogEventとしてi3ログに記録されます。
国境制御 (BCF)。 ESInet からの呼び出しを確認 をオンにすると、ESInet トランクからのすべての呼び出しは最初に確認されます: 常に拒否 の下にあるアドレスは拒否され、1 分間に許可された回数以上の呼び出しを開始するアドレス、または同時に許可された回数以上の呼び出しを保持するアドレスも拒否されます (テレフォニー拒否サービス攻撃は、少数のソースから大量の呼び出しを送信します)。 拒否された呼び出しは 503 と Retry-After を受け取ります。 疑わしい呼び出しを許可 をオンにすると、拒否された呼び出しを代わりに送信し、ポリシールールで決定します (スクリーンを実行するセンターに送信するか、拒否します)。 フラッドの中の実際の呼び手は失われません。 国境制御: 最新 は、拒否または疑わしい呼び出しを一覧表示します。 STIR/SHAKEN 署名を確認 は、Identity ヘッダー (呼び出し元 ID) を持つすべての呼び出しを、呼び出しフィルタリング の下の STI ルートと比較して確認します。 署名が失敗した呼び出しは、ポリシールールで別の場所に送信され、BCF ログに記録されます。 911 呼び出しは、署名のために拒否されることはありません。 署名のない呼び出し (現在の大部分) は、変更されません。 各呼び出しは、BitVoice として新しいリクエストとして送信され、BitVoice が理解して転送するヘッダーとボディのみを持ちます: ロケーション、追加データ、およびセッション。 メディアを検査 は、ESInet 呼び出しのすべての RTP パケットを、使用または転送される前に確認します: SDP が指定したアドレス以外のアドレスからのパケット、オファーで指定されていないペイロードタイプのパケット、パケットに適合しないヘッダー長 (CSRCs、拡張、パディング) のパケット、最大パケット (空の場合、1,500 バイト) を超えるパケット、または パケット/秒 (空の場合、150; G.711 の 20 ms は 50 を送信) を超えるパケットは、ドロップされ、カウントされます。 各種類の最初のパケット、次に 10 番目、100 番目などは、国境制御: 最新 (メディアドロップとして) および呼び出しのノートに記録されます。 呼び出しは、メディアのために終了されることはありません: 呼び出し元は、有効なパケットを保持します。 CAMA トランクからの呼び出しは、ローカルカードプログラムから来ており、検査されません。
住所の検証 (LVF)
911 GIS 住所データを GeoJSON でアップロードします (NENA GIS データモデル: NENA-STA-006)。道路中心線には FromAddr_L、ToAddr_L、Parity_L、IncMuni_L などがあり、サイト/構造の住所ポイントには Add_Number、St_Name、Inc_Muni などがあります。LoST クエリでは validateLocation="true" で、住所の有効な部分、無効な部分、未確認の部分が回答 (RFC 5222) として取得されます。キャリアと位置サーバーは、911 呼び出し前に住所を修正できます。 住所を確認する は、ここでも同じことを行います: 正確な住所ポイントが最も良い一致です。次に、右側の道路の範囲内に番号が含まれるストリートセグメント (奇数と偶数の側が尊重されます)。Street と St、North と N などのスペルは同じとみなされます。
i3 ロギング サービス。 i3 ロギング サービスを実行 をオンにすると、コアの他の要素 (ESRP、BCF、PSAP) がログ イベント (NENA-STA-010) を送信します。各イベントは、要素の証明書が x5c ヘッダーに含まれた JWS で署名され、許可されたアドレスから /i3log/LogEvents に POST されます。各イベントは、フラット化された JSON 形式 (署名済み、または none アルゴリズムで署名されていない、後者はログ サービスで使用可能: PCA へのトレースが不可能とマークされます) で送信され、確認および保存され、ログ イベント ID が回答として返されます。GET /i3log/LogEvents/{logEventId} で読み取り、GET /i3log/LogEvents (startTime、endTime、logEventType、limit、start) でリスト表示します。/i3log/LogEventIds、/CallIds、/IncidentIds、/AgencyIds で、呼び出しまたはインシデントの ID を見つけることができ、/i3log/Conversations?callId= で呼び出しのテキスト会話を読み取ります。GET /i3log/Versions で、このサービスが使用するバージョンを確認できます。受信ログ イベント は、1 日のイベントをリストし、各イベントの署名者を表示します。すべての回答は、NENA が公開した OpenAPI 定義に対して確認されます。このサービスはまだ他のベンダーの要素でテストされていません。
PSAP 資格機関。 PCA のルート証明書を PSAP 資格機関ルート に貼り付けます: 署名付きログイベントは、署名者の証明書がその 1 つにチェーンされ (かつ期限切れでない) 場合にのみ受け入れられ、PCA と表示されます。 それらがない場合、署名のみが確認され、イベントは PCA へのトレースが付けられていない と表示されます。
ロケーションレコード (LIS)。 ロケーション要求の回答 (LIS) を有効にし、ロケーションレコードのスプレッドシート (CSV) をアップロードします: ヘッダー行と、各行に 番号 (ALI データ、エクスポート済み)、 ネットワーク (10.20.3.0/24 などのアドレス範囲、または 1 つのアドレス: ビル、フロア、VLAN、Wi-Fi ネットワーク) または MAC アドレス (1 台のデバイス: デスクフォン、壁ジャックのスイッチポート)、次に hno、rd、sts、unit、floor (または flr)、 a3 (市)、 a1 (州)、 pc、 国 としてのアドレス、 lat、lon、 radius (存在する場合)。PSAP、レガシーネットワークゲートウェイ、電話機は、許可されたアドレスから /held (HELD、RFC 5985) を要求し、PIDF-LO を受け取ります。要求は、電話番号、IP アドレス、または MAC アドレス (RFC 6155) でデバイスを指定します。どれも指定しない要求は、要求元のアドレスに対して回答されます (オフィスまたはキャンパスネットワークの LIS として)。アドレスは、それを保持する最も狭いネットワークによって位置付けられます。つまり、フロアの /24 がキャンパスの /16 を上回ります。レコードのないデバイスは、HELD の locationUnknown を受け取ります。別の種類の ID (NAI、ポート) は、notLocatable を受け取ります。BitVoice PSAP は、ロケーション検索 (ALI) をここに設定します。 番号、住所、または MAC アドレスの検索 はレコードを確認し、どのネットワークから来たかを示します。再度リストされている番号、ネットワーク、または MAC アドレスは、古いレコードを置き換えます。 すべてのレコードを置き換える は、新しいものから始めます。許可されたアドレスのみが回答されます: どのアドレスについても回答する LIS は、誰に対してもオープンになっていない必要があります。
The i3 web services. Under NENA i3 web services, switch on what this core offers the other elements of your ESInet, at /i3/<service>/v1, for the addresses under May ask only. Each answers as NENA's published OpenAPI definitions say (NENA-STA-010.3, the NENA911 repositories), and each has a tab under i3 web services:
- Policy Store (
/i3/PolicyStore/v1/Policies,/PolicyEnums): agencies store, update and delete their routing policies (Policy Routing Rules), each a JWS signed by the agency that owns it (the signer's certificate must name the owner, and come from the PCA when its roots are set). A policy is kept byte for byte as it came. The ESRP runs them: the OriginationRoutePolicy for This ESRP's incoming queue first, else the NormalNextHopRoutePolicy of the PSAP the ECRF chose. Of the rules whose conditions hold, the highest priority acts; when its route fails (busy, no answer within its rnaTimer, 20 seconds when it gives none), the next one does; a BusyAction answers 600 Busy Everywhere. Conditions taken: time periods, SIP headers, Additional Data, body types, location (circle or civic), call suspicion, queue state (BitVoice's own PSAPs), LoST service URN and Normal-NextHop, call source, request URI, incoming queue, and the SDP offer's media and languages; service state and security posture are taken as unknown (Unreachable and Green, as the standard says). Body-part, CAP and calling-number-verification conditions are not run: they count as false. Without a stored policy, the Policy rules above decide. The tab lists what is stored and lets you paste one, or sign one with this server's certificate. - Discrepancy reports (
/i3/DiscrepancyReports/v1): other agencies report problems with this server's services; each shows on the tab, where you answer it with a resolution, sent to the reporter. File a report sends one to another agency's DR service; its answer and later resolution show under Reports this server filed. - Bad actors (
/i3/BadActor/v1/BadActors, with the BCF): each call the BCF passes on carries its source's ID (Call-Info: <sip:ID>;purpose=emergency-source); a PSAP that finds that source attacking reports the ID, and the BCF refuses its calls, or raises their suspicion score for the policies, for A report lasts hours. Lift ends a report early. - Geocode and MSAG conversion (
/i3/Gcs/v1,/i3/Mcs/v1): civic address to position and back from the LVF's address points (the nearest within 150 m), and civic address to MSAG address (120 N MARKET STREET, HARRISBURG CITY, PA) and back, from the centerlines'MSAGComm_L/MSAGComm_Rfields. Answers are JSON objects, or XML when the asker asks for it. - Additional Data (
/i3/Adr/v1/AdditionalData?callerUri=): blocks you keep by caller (RFC 7852 XML), served by value, or by reference for an asker that wants JSON. One block per caller is served by value: the first kept. - Locator (
/i3/ServiceAgencyLocator/v1): this agency's own record (its ID from the 911 calls page, with its logging and discrepancy addresses) and the agencies you add. - Dequeue (
/i3/DequeueRegistration/v1/Registrations): positions or PSAPs sign up to take a queue's calls (this ESRP's queue, or a PSAP's URI); the ESRP sends calls for that queue to them, the most preferred first (preference 5 before 1), over the PSAP's trunk. - Test calls: a PSAP asks this core to send it test calls (
/i3/TestCall/v1/SendTestCalls/{agency ID}: every so many minutes, five at least, between two dates, with a location); BitVoice places each tourn:service:test.sosover the PSAP's trunk and keeps what came back. Place one now tries one. - PSAP states (SIP, not REST): Subscribe to each PSAP's queue and service state has the ESRP SUBSCRIBE (RFC 6665) to every PSAP listed, over its trunk, for
emergency-QueueStateandemergency-ServiceState(NENA-STA-010.3 4.2.1.3 and 2.4.2), for an hour at a time, renewed before it ends. What the PSAPs NOTIFY shows under PSAP states and is what the policy rules' queue state, service state and security posture conditions read. A PSAP whose queue says Inactive, Disabled, Full or ResourceExhausted (or holds its most calls), or whose service says Unstaffed, ScheduledMaintenanceDown, Overloaded, GoingDown or Down, is passed over for its overflow, and the call's notes say so; when every PSAP in the chain says it cannot take calls, the call is sent as listed anyway, never left with nowhere to go. A PSAP that does not answer the SUBSCRIBE is Unreachable (as the standard says a subscriber must assume) and is tried again each minute; one that refuses it (489, 603 ...) is tried again in ten minutes. - This server's states: Tell other elements this server's element, service and queue state answers SUBSCRIBEs for
emergency-ElementState,emergency-ServiceStateandemergency-QueueStatefrom the addresses under May ask (others get 603 Decline; a queue that is not this server's incoming queue, 488). The queue's length is the 911 calls not yet answered here, and it says Full at Most calls waiting in the queue (20 when blank); the service says Overloaded at this server's call limit, else Normal. NOTIFYs go out when the state changes, at most one a second, and once a minute regardless (the standard's default rates); their bodies are checked against NENA's notify-body schemas.
テストコールをPSAPで受ける。BitVoiceのPSAPは、ESInet (urn:service:test.sos、NENA-STA-010.3のセクション9、RFC 6881) からテストコールに応答します。応答では、PSAPの名前、サービス、コールの場所、最初の3パケットの音が返され、切断されます。2分以内に同じ場所から2回目のテストコールは拒否されます(486)。5回目のテストコールも拒否されます。ESRPはテストコールを実際のコールのように渡しますが、まだテストとしてマークされます。911コールページの テストコールに応答 をオフにすると、テストコールは拒否されます(404)。
JWSアルゴリズム: NENA-STA-010.3では、Ed448を使用したEdDSAが求められます。BitVoiceが使用するGoの標準ライブラリにはEd25519はありますが、Ed448はありません。したがって、EdDSA署名はEd25519キーで確認され、ECDSAおよびRSA署名も受け入れられます。Ed448証明書は拒否されます。
あなたの意図。有効でないアドレスは、同じデータから最大5つの提案を受け取ります。各提案には、理由が示されます: ストリートの1文字または2文字の違い(入れ替わった文字のペアは1つの違いとしてカウントされます)、同じストリートの次の町、またはストリートの最も近い番号(可能な場合は同じ側にあります: 偶数は偶数のままです)。使用 は提案を埋めます。位置とアドレス。アドレスとともに緯度と経度(および位置の半径がわかっている場合はそれも)を指定します: 位置はアドレスの独自のアドレスポイントに対して確認され、半径と100mの追加(地図の精度とGISエラーのサイズ)が許可されます。回答には距離と2つの位置が一致するかどうかが示され、不一致の場合は位置に最も近いアドレスポイントが示されます。道路中心線のみから知られているアドレスには確認するポイントがないため、回答にはその旨が記載されます。LoSTのvalidateLocationにはどちらも場所がないため、LoSTで問い合わせるキャリアは検証のみを受け取ります。