BitVoice マニュアル

1 つのプログラムで構成されるオープンソースの電話システム。Web インターフェイス内で完全に設定可能: 拡張線、キュー、会議室、スタッフ ポータル、ホスト組織、および公共安全研究所トラック。
79 章 · 63 図 · 12 千語 · BioDream LLC

目次

  1. パート 1. はじめに
    1. 1. はじめに
    2. 2. 各部分の成熟度
    3. 3. 拡張子
    4. 4. 電話機の接続
    5. 5. Skinny 電話機と MGCP ゲートウェイ
    6. 6. 電話カード
    7. 7. トランク
    8. 8. 通話ルーティング
    9. 9. PINセット
    10. 10. 発信者IDの検索
    11. 11. 緊急呼び出し
    12. 12. サイトとオフィスの911
    13. 13. ヘルス
    14. 14. 設定
    15. 15. 画面の言語
  2. パート 2. 通話の行き先
    1. 16. 通話フロー
    2. 17. リンググループ
    3. 18. キュー
    4. 19. 発信ダイヤラー
    5. 20. サウンド: プロンプト、言語、ホールドミュージック
    6. 21. メニュー(自動応答)
    7. 22. 名前によるダイヤルディレクトリ
    8. 23. ダイヤルイン(DISA)
    9. 24. 音声ボット(AudioSocket)
    10. 25. 日/夜トグル
    11. 26. スケジュール
    12. 27. スクリプト(JavaScriptおよびLua)
    13. 28. AI 受付、ボイスメール トライエージ、質問
    14. 29. ボイスメール
    15. 30. コールバック
    16. 31. コール リンクと Web サイトからの呼び出し
  3. パート 3. 日常の通話
    1. 32. 機能コード、転送、高速ダイヤル
    2. 33. スタッフポータル
    3. 34. 会議ルーム
    4. 35. ページングとオーバーヘッド スピーカー
    5. 36. ホットデスク
    6. 37. ホテルと目覚まし通話
    7. 38. すべての電話の連絡先
    8. 39. カレンダーと着信拒否
    9. 40. モバイル アプリ
    10. 41. ビデオ通話
    11. 42. ファクス:送信と受信、ファクス機とアナログ電話
    12. 43. 受信トレイ: Web チャット、WhatsApp、Messenger
    13. 44. ビジネス テキスト (SMS)
    14. 45. 転送ブリーフィング
  4. パート 4. 顧客と洞察
    1. 46. 進行中の通話
    2. 47. 通話履歴
    3. 48. 顧客タイムライン
    4. 49. CRM: 呼び出し先カードと通話ログ
    5. 50. コール インサイト (呼び出し分析) for 監督者
    6. 51. 通話の録音とカードの支払い
    7. 52. 録音の同意
    8. 53. 通話品質
    9. 54. コストと予算
    10. 55. 発信者IDの評判とブランド化された通話
    11. 56. スパム保護とSTIR/SHAKEN
  5. パート 5. BitVoice の実行
    1. 57. 管理者
    2. 58. シングルサインオン
    3. 59. 会社ディレクトリ (Active Directory と LDAP)
    4. 60. セキュリティ
    5. 61. 変更、バックアップ、インポート
    6. 62. 更新
    7. 63. 複数のサーバーを1つの電話システムとして
    8. 64. データを保存する場所(SQLiteまたはPostgreSQL)
    9. 65. 他の組織のホスティング
    10. 66. コーデックと音声
    11. 67. Microsoft Teams(Direct Routing)
    12. 68. インポート
    13. 69. コードとしての構成
    14. 70. Asterisk との互換性 (AMI、ARI、AGI)
    15. 71. AI アシスタント (MCP)
    16. 72. アーカイブ
    17. 73. 法的保持
    18. 74. メトリクス: Prometheus、OpenTelemetry、Grafana、SNMP、通話レコード
    19. 75. 通話ジェネレーター
    20. 76. SIPトレース
  6. パート 6. 公共の安全性: ラボトラック
    1. 77. 911 通話 (911 プロファイル)
    2. 78. 無線ディスパッチコンソール
    3. 79. NG911コアサービス (ECRF、ESRP、LVF、BCF、LIS、ログ)
パート 1

はじめに

新規インストールから動作する電話システムまで: 拡張線、電話、電話会社、通話の行き先、オフィスからの緊急通話、およびすべてが準備できていることを確認する方法。

チャプター 1

はじめに

Web インターフェイス内で: /

BitVoiceは1つのプログラムで完結した電話システムです: 電話がサインインする交換機、呼び出し先が移動するメニューとキュー、ボイスメール、録音、会議室、ファックス、および電話会社への接続。すべてはブラウザで設定され、このマニュアルで説明されている画面で行われます。編集する構成ファイルはありませんし、インストールするものもありません。

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

必要なもの

最初の開始

BitVoiceを開始し、印刷されたアドレスを開きます (デスクトップではブラウザ自体が開きます)。WebインターフェイスはHTTPSのみで、このコンピュータでも。独自の証明書をインストールするまで (設定、証明書)、BitVoiceは自己生成の証明書を使用するため、ブラウザは一度警告します: サイトに続行することを選択してください。セットアップウィザードは4つの質問をします: 組織の名前と国、最初の管理者のパスワード、最初の拡張番号、および電話会社 (ある場合)。国は緊急番号、呼び出し音、および電話番号の書き方を決定します。

最初の1時間

Extensionsone per person1Phonesconnect each one2Trunkyour carrier3Call routingwhere calls go4Healthwhat is missing5Every step has a page in the menu; Health lists anything still missing, emergency calling first.
図 2. The first hour: five steps from a new install to a working phone system
  1. 拡張番号: 1人または1台のデスクにつき1つ。各々に番号とSIPパスワードがあります。拡張番号を開く (章 3)
  2. 電話: デスク電話、ソフトフォン、またはブラウザ電話を各拡張番号に接続します。電話を開く (章 4)
  3. トランク: 電話会社のアカウントで、外部番号に電話し、電話を受けることができます。トランクを開く (章 7)
  4. 呼び出しルーティング: 外部からの呼び出し先 (人、リンググループ、メニュー) および外部呼び出しに使用するトランク。呼び出しルーティングを開く (章 8)
  5. ヘルスはまだ欠けているものを示します。緊急呼び出しを最初に。ヘルスを開く (章 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:

同じコマンドを再度実行してアップグレードします(または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
Windowsbitvoice.exeをダブルクリック%APPDATA%\BitVoice

Windowsでは、BitVoiceを使用中に開いたウィンドウを保持してください(ウィンドウを閉じるとBitVoiceが停止します)。また、Windowsがネットワークの使用を許可するかどうかを尋ねた場合は、電話が接続できるようにプライベートネットワークを許可してください。-dataはデータを他の場所に配置します。-httpsおよび-sipはアドレスとポートを選択します。-log FILEは、ウィンドウに表示されるすべての内容をファイルに書き出すため、ウィンドウが監視されていないコンピュータで使用します。

使用するポート

ポート用途
5060 UDPとTCPSIP: 電話とトランク
5061 TCPSIP over TLS(暗号化シグナリング)
4569 UDPIAX2トランク、設定後にのみ
1720 TCPH.323トランク、設定後にのみ
2000 TCPSkinny(SCCP)電話、有効にした場合のみ
2727 UDPMGCPゲートウェイ、有効にした場合のみ
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))です:これらは、設定で有効にされるまでメニューから除外され、ライブ使用には認定されていません。自分の電話からの緊急通話は、そのトラックの一部ではありません。すべての電話システムで最初の開始から動作します。

操作の方法

チャプター 2

各部分の成熟度

各部分がどの程度証明されているか、明確に。 フィールドテスト: 実際のシステムと実際のネットワーク(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 を使用
チャプター 3

拡張子

Web インターフェイス内で: /extensions

拡張子は、人物またはデスクに割り当てられる番号です。電話機は拡張子番号と SIP パスワード でサインインします。指定された番号への通話は、すべてのサインインしている電話機で同時に鳴ります。

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

拡張子の追加

  1. 拡張子 (章 3) を開き、拡張子を追加 を押します。次の利用可能な番号と強力な SIP パスワード が自動的に入力されます。
  2. 人物の 名前 (他の電話機からの通話時に表示される) と メールアドレス (ボイスメールのメール送信に使用) を入力します。
  3. 911 ロケーション を入力します: サイト、階、部屋。これは緊急通話時に送信されます。
  4. 誰も応答しない場合 に何が起こるかを選択します: デフォルトはボイスメール、または別の拡張子、グループ、またはメニュー。
  5. 保存します。拡張子はすぐにサインインできます。

フィールド

フィールド機能
番号2 ~ 8 桁; 他の拡張子、グループ、キュー、部屋、または機能コードと重複できません
SIP パスワード電話機がサインインするために使用; 最低 12 文字; 生成 で新しいパスワードを作成します
鳴らす時間誰も応答しない場合 が発生するまでの秒数 (デフォルトは 25)
外部発信者 ID外部への通話時に表示される番号; 空の場合、トランクの番号が使用されます
外部番号への通話を許可オフにすると、電話機は内部通話と緊急番号のみに限定されます
通話の録音設定で選択された拡張子のみを録音する場合
ホットデスクサインインした人物に応じて共有電話機が変化します
この電話機への通話を暗号化メディア暗号化 (SRTP); TLS と組み合わせて使用してください
部門この拡張子の通話コストをグループ化します

フォローミー、ピックアップ、インターコム

各人物の独自の通話ハンドリングは、拡張子のボックス内にあります:

現在の転送

設定の下にある 現在の転送 は、人物が電話機またはスタッフポータルから設定した現在の状態 (通話を一切受けない、すべての通話の転送、忙しいときの通話の転送、応答しない通話の転送) を表示および変更します。これらは設定ではなく、現在の状態を表します: これらの設定を変更しても、変更履歴には反映されません。

接続されているもの

接続されたデバイス

開いている拡張子は、すべてのサインインしているデバイスを表示します: 電話機のメーカーとモデル、接続方法 (UDP、TCP、TLS、またはブラウザー)、およびサインインした時間。電話機に提供するアドレスとポートも表示されます。

チャプター 4

電話機の接続

Web インターフェイス内で: /phones

任意のSIP電話機またはアプリケーションが機能します。サーバーのアドレスとポート5060を指定し、ユーザーとして拡張子番号を、パスワードとしてSIPパスワードを使用します。大手4社のデスク電話機は、代わりに自動的に設定され、誰もが電話機のキーパッドにパスワードを入力する必要はありません。

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

自動設定(プロビジョニング)

  1. Phones (章 4)で電話機を追加を押し、電話機のMACアドレス(電話機の下のラベルに記載)と、電話機が所属する拡張子を入力します。
  2. メーカーを選択します: Yealink、Poly、Grandstream(HTアナログアダプターを含む)、Snom、Fanvil、Cisco、Mitel、Sangoma、Algo、またはCyberData。
  3. 電話機にBitVoiceのアドレスを通知します。DHCPサーバーで、オプション66を画面に表示されるプロビジョニングアドレスに設定し、ネットワーク上のすべての電話機がそれを自動的に検出できるようにします。あるいは、電話機のWebページの自動プロビジョニングの下で同じアドレスを入力します。
  4. 電話機を再起動します。電話機はHTTPS経由でファイルを取得し、サインインし、ラインキーは電話機上のユーザーを表示します。

HTTPSまたはプレーンHTTP。電話機は、可能な場合はHTTPS経由でファイルを取得します。古い電話機の一部はHTTPSを使用できない場合があり、多くの電話機はBitVoiceによって自己署名された証明書を信頼しません。そうした電話機の場合、画面は同じポートのプレーンhttp://アドレスも表示します。プレーンHTTPは、これらのファイルのみに使用されます。すべての他のページはまだHTTPSに切り替わります。プレーンHTTP経由で電話機のSIPパスワードがネットワークを横断するため、信頼できるオフィスネットワークに限定するか、または認証局から証明書をインストールし、電話機のみのHTTPSをオンにします。

ファイルには、拡張子、パスワード、タイムゾーン、コーデック、ビジーランプキー、およびこのサーバーのアドレスが含まれます。プロビジョニングは、電話機が一度だけ受け取るユーザー名とパスワードによって保護されます。

メーカーテスト済みモデル内容
YealinkT3x、T4x、T5xアカウント、BLFキー、時間、コーデック
PolyVVX、Edge E同じもの、Poly独自の形式で
GrandstreamGRP、GXP、HT802/814アダプターの各ポートのアカウント
SnomD7xxアカウント、キー、時間

これらのメーカーもプロビジョニングされますが、まだそれらのデバイスでテストされていません(Phones画面では未テストとマークされます)。

メーカーモデルデバイスが要求するファイル
FanvilXシリーズとVシリーズMACアドレス.cfg
Cisco6800、7800、8800マルチプラットフォーム(3PCC)、SPAアダプターMACアドレス.xml(エンタープライズファームウェアでは、マルチプラットフォームファームウェアが最初に必要)
Mitel(Aastra)6800、6900 SIPMACアドレス.cfg(大文字)
SangomaSシリーズ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):

スタッフフォン

任意のコンピューターまたはモバイルブラウザで#/phoneを開きます。ユーザーは拡張番号とSIPパスワードでサインインします。管理者アカウントは不要です。これは完全な電話機能です。ダイヤル、応答、ホールド、転送、キーパッドが使用できます。自身の転送とボイスメールについては、#/meのスタッフポータル (以下のスタッフポータル (章 33)を参照) を使用します。

モバイルアプリ

BitVoiceアプリは、iPhoneとAndroid用に提供されています。拡張番号のページからQRコードを使用してペアリングします。呼び出しは、AppleのプッシュサービスとGoogleのプッシュサービスを使用してアプリを起動します。アプリは閉じている場合でも、呼び出し音が鳴ります(プッシュが設定された後;以下参照)。

チャプター 5

Skinny 電話機と MGCP ゲートウェイ

Web インターフェイス内で: /desk-phones

SIP をサポートしていない電話機やゲートウェイも使用できます。 Skinny 電話機と MGCP ゲートウェイ (通話下) は、2 つの古いプロトコルをサポートしています:

各 Skinny 電話機または MGCP ラインは、その拡張子のもう 1 つのデバイスです: 拡張子の他の電話機と同時に鳴り、拡張子として外線に通話し、拡張子のデバイスの一覧に表示されます。各デバイスの状態がページに表示されます。

動作確認

ホールド、転送、会議は現在、他の電話機から実行され、Skinny電話の2行目は使用されていない。

セキュリティ

両方のプロトコルにはパスワードが存在しない。Skinny電話はローカルネットワークからの接続のみを許可し、MGCPコマンドはゲートウェイのアドレス(またはローカルネットワーク)からの接続のみを許可する。両方のポートをインターネットから遮断する。

まだコマンドを処理中のゲートウェイは最初に "100 Trying" と応答することがあります: BitVoice はその後コマンドを再送する前に長く待機し、最終的な応答 (000) を確認します。RFC 3435 に従っています。ゲートウェイが監視しないポートは、ゲートウェイ自身の拒否をページに表示します。たとえば、ゲートウェイはポートの監視を拒否しました: 507 Unsupported Functionality は、アナログポートのないメディアゲートウェイからのものです。

テスト方法

チャプター 6

電話カード

Web インターフェイス内で: /cards

BitVoiceコンピュータ内の電話カード(Digium、Sangoma、OpenVoxなど、Linux DAHDIドライバーを使用するカード)を使用して、アナログ電話機や電話会社の回線を接続できる。別のプログラムであるbitvoice-dahdiがカードを駆動し、コンピュータのネットワーク接続を介してBitVoiceに接続するため、BitVoice自身はカーネルドライバーに直接アクセスせず、カードの問題が電話システムを停止させることはない。

設定方法

  1. DAHDIドライバーをインストールし、/etc/dahdi/system.confでポートを設定する(fxoks=1-4を電話機用ポートに、fxsks=5-8を回線用ポートに、国別の音声設定をloadzoneとdefaultzoneに指定)し、dahdi_cfgを実行する。
  2. 電話カード(Callsの下)で電話カードを使用を有効にする。トークンが生成されるので、/etc/bitvoice/cards.tokenなどのrootのみが読み取り可能なファイルにコピーする。
  3. DAHDIチャネル番号で各ポートを追加する:電話ポート(FXS、電話機、ファックス、ドアフォン)を拡張子に、回線ポート(FXO、電話会社の回線)を回線番号に設定する。ヨーロッパや世界の大部分ではA-law、北米や日本ではµ-lawを選択する。
  4. 回線の場合、電話カード回線プロトコルを使用したトランクをTrunksで追加し、番号をルーティングする。インバウンドルートは各回線の番号に一致する。
  5. bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.tokenをサービスユーザーとして実行する(/dev/dahdiを開くことができるユーザー)。Linuxのダウンロードにあるbitvoiceの隣にある。ページに表示されるのは、サービスが実行中かどうかと各ポートの状態で、変更は10秒以内に反映される。別のプログラムが保持しているチャネル(またはdahdi_cfgがまだ設定していないチャネル)は、2秒ごとに再試行されるため、開始順序は重要ではない。

動作確認

デジタル回線: T1およびE1PRI

T1(23回線)またはE1(30回線)プライマリレートISDN回線は、デジタルカード(Digium/Sangoma TEシリーズ、OpenVox Dシリーズなど)に接続する。BitVoiceはPRIプロトコル(Q.921、Dチャネル、Q.931コールコントロール)を直接扱うため、すべての呼び出しはダイヤルされた番号とcaller IDで接続され、発信は拡張子のcaller IDで接続され、電話会社は遠端の着信、呼び出し、または忙線を通知する。

  1. /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を実行する。
  2. デジタル回線(電話カード (章 6)の下)で、スパンを追加する:T1またはE1、最初のDAHDIチャネル、BitVoiceが電話会社の回線上のPBXであるか(通常)、またはネットワーク上のPBXであるか(別のPBXが電話会社の回線に接続するようにBitVoiceに接続する)、電話会社が提供したスイッチタイプを選択する。
  3. カードトランクが存在しない場合は、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 チャネルです。

EuroISDN(明示的な呼び出し転送)と料金通知に関する名前、転送、転送は、PRIと同様にBRIでも機能する。

E&M トランク (T1)

E&M (ローブドビット信号: /etc/dahdi/system.conf の e&m=1-24) で設定された T1 チャネルは、24 本のトランクを提供し、それぞれが独自の信号で制御されます: タイライン、チャンネルバンク、長距離キャリアの機能グループ D トランクです。デジタルライン の下に T1 を追加し、信号 を E&M に設定します。

発信は、空いているトランクを確保し、開始信号を待ちます (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)に設定し、以下の情報を入力します:

リンク セットのリンクの数。同じバリアント、ポイント コード、ネットワークを持つスパンは 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、フックフラッシュ、およびカード自体が行うものを超えるエコーキャンセル。

チャプター 7

トランク

Web インターフェイス内で: /trunks

トランクは、電話会社とのアカウントです。外部の番号との間で呼び出しを運ぶものです。大多数は SIP トランクですが、Asterisk または FreePBX サーバー、または IAX2 プロバイダーは、IAX2 で代わりに使用できます。

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

SIP トランクの追加

  1. トランク (章 7) で トランクを追加 を押します。
  2. 電話会社が提供した プロバイダー サーバー (sip.provider.com) と、ポート (5060 でない場合) を入力します。
  3. ユーザー名 と パスワード を入力し、プロバイダーが登録を指示した場合 (ほとんどの場合) に 登録 をオンにします。
  4. 保存します。数秒以内にトランクは 登録済み と表示されます。そうでない場合、理由がトランクの横に表示されます。

トランクのヘルスチェック

2つ以上のトランクがある発信ルートでは、BitVoiceは15秒ごとにそれぞれが使用可能かどうかを判断します。トランクは、プロバイダーの応答が停止した場合、または最後の発信が連続して失敗した場合(連続失敗回数内、Within(分)、設定、トランクのヘルスチェック)に他のトランクが使用されます。ただし、発信が成功している場合は、キープアライブチェックに失敗しただけではトランクは移動しません。また、すべてのトランクが同時に失敗した場合、原因はこのシステムのインターネット接続である可能性が高いため、トランクは移動しません。トランクの移動には、2回連続での判断(30秒)が必要なので、トランクはフラップしません。トランクは完全に除外されることはありません。其他のトランクが失敗した場合でも、緊急発信には常にすべてのトランクが使用可能です。トランクのページには、判断とその理由が表示され、他のトランクを使用した発信のレコードにはその旨が記載されます。

  1. 受信ルートと、このトランクを使用する発信ルートを追加してください。(ルーティング (章 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)で運ぶため、ファイアウォールを通過するのが容易です。

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

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サーバーがこのトランクを共有し、別のサーバーが保持中
チャプター 8

通話ルーティング

Web インターフェイス内で: /routes

通話ルーティングは、2つのことを決定します。外部からの通話の行き先を、ダイヤルされた番号によって決定し、外部への通話に使用するトランクを決定します。

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

受信ルート

各受信ルートは、呼ばれた番号(または任意の番号)と一致し、通話を目的の場所に送信します。目的地は、拡張番号、リンググループ、キュー、メニュー、スケジュール、スクリプト、会議室、AIレセプション、またはボイスメールになります。番号は、どのような形式でも一致します。+1 212 555 0100、2125550100、12125550100は同じです。

発信ルート

発信ルートは、パターンに基づいてダイヤルされた番号と一致し、トランクに送信します。最初のトランクがダウンまたは満杯の場合、次のトランクが試されます。

Dialled2125550199Emergency 911Long distance 1NXXNXXXXXXLocal NXXNXXXXXXInternational 011.matchTrunk AfirstTrunk Bif A failsN is 2–9, X is any digit, . is anything more; emergency numbers never fail for want of a pattern.
図 8. Outgoing routes: the first pattern that matches, its trunks in order
パターン一致
X任意の数字
Z1から9
N2から9
[1-5]一連の数字の1つ
. の末尾1つ以上の追加の数字
NXXNXXXXXX10桁の北米番号
1NXXNXXXXXX1を先頭に付けた同じ番号
011.米国からの国際通話

緊急番号

緊急番号は常に機能します。正確に一致するルートが使用されます。ルートがない場合、すべてのトランクが順番に試されます。緊急番号への通話は、拡張番号の制限、ホスト組織の制限、またはルートの欠如のために拒否されることはありません。ヘルスは、トランクが緊急番号を運ぶことができない場合に警告します。

チャプター 9

PINセット

Web インターフェイス内で: /pin-sets

PINセット (章 9)は、出発ルートが外線に接続する前に要求するPINのリストである。国際電話や長距離電話をPINを持つ人に限定したり、クライアントやプロジェクトのコードで請求するために使用する。

  1. PINセットの追加し、PIN(4〜10桁)をリストする。
  2. 呼び出しレコードにPINを保持をオンにすると、使用されたPINを各呼び出しのレコードにアカウントコードとして書き込む(CSV、syslog、PostgreSQLの呼び出しレコード出力、およびAPIのaccount)。
  3. 呼び出しルーティング (章 8)で、出発ルートを開き、PINの要求の下でセットを選択する。

そのルートを通じて番号をダイヤルする呼び出し先は、「PINを入力してハッシュを押してください」と聞き、PINを入力し、呼び出しは外線に出る。3回間違えると、呼び出しは終了し、試行はセキュリティイベントとしてログに記録される。緊急番号は、どのルートを通じてもPINを要求しない。転送された呼び出しやフォローミー番号も要求しない。電話からダイヤルする人だけにPINを要求する。

チャプター 10

発信者IDの検索

Web インターフェイス内で: /lookups

多くの電話会社は、発信者の番号のみを送信し、名前は送信しない。BitVoiceは、まず会社の連絡先 (章 38)を参照し、その後、入ってくるルートは発信者IDの検索 (章 10)を要求することができる。

呼び出しルーティング (章 8)の入ってくるルートで、発信者IDの検索を選択する。電話は、呼び出し中に名前を表示し、呼び出しレコードにも名前が記録される。

検索は、呼び出しを遅らせることはない。BitVoiceは、最大で待ち(デフォルトは1.5秒、最大5秒)待機し、その後名前がなくても呼び出しを開始する。回答は、1日間(または設定した時間、または-1で保存しない)保存されるため、頻繁に呼び出しを行う場合は、毎回検索されない。サービスが名前を知らない番号は、1時間後に再度検索される。検索ページの試してみるは、設定通りに即座に番号を要求する。

チャプター 11

緊急呼び出し

緊急番号は、すべての拡張子から、外部番号を呼び出せない拡張子からも呼び出される。この章では、BitVoiceが管理する電話からの緊急呼び出しについて説明する。オフィスから911への呼び出しについてである。911呼び出しの応答は、911プロファイル (章 77)である。

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

BitVoiceが緊急呼び出しで行うこと

  1. ルーティング: 常にルーティングする。番号を最初に指定するルートが優先される。ルートがなければ、すべての動作するトランクが順番に使用される。制限は、緊急呼び出しを止めることはない。外部呼び出しを許可されていない拡張子、ホスト組織の呼び出し制限に達している、または停止されている、トランクのチャネル制限に達している場合でもである。
  2. 発信者の場所の送信: 発信者のアドレスの送信がオンになっている場合、呼び出しはサイトの市民アドレス、階、部屋をPIDF-LOとしてプロバイダーに送信する。
  3. サイト内の通知(米国でのKari's Law):通知の下にある拡張子は、電話にメッセージを受け取り、すべてのBitVoice画面にアラートが表示され、メールもの下にあるアドレスには、発信者の名前、拡張子、サイト、階、部屋が記載されたメールが送信され、誰かが応答者に会うことができる。
  4. 呼び戻しの許可: 緊急呼び出しの後1時間以内に、受信する呼び出しは拒否されない。応答ポイントは、必ず電話を掛け返すことができる。

設定

  1. 設定 (章 14)で緊急番号(国ごとに設定される。米国では911と933)を確認する。
  2. サイト (章 12)にすべての建物を追加し、通りアドレスと電話が使用するネットワークを指定する。
  3. すべての拡張子にサイト、階、部屋を割り当てる。
  4. 出発ルートとトランクが緊急呼び出しを運ぶことを確認する。ヘルス (章 13)は、運ぶことができない場合に警告する。
  5. 通知とメールもを入力する。
  6. 米国では933をダイヤルして、プロバイダーが保持しているアドレスを聞く。

リモートワーカー

サイトのネットワーク外から登録する電話は、リモートワーカーである。電話のページでは、現在の場所を尋ね、指定されたアドレスが使用される。アラートには、確認されなかった場合のメッセージが表示される。

緊急モード

別のもの: 1つのスイッチがすべての着信呼び出しを1つの場所(避難、閉鎖、インシデント)に送信する。呼び出し先を設定し、オプションコード(例: *55)と許可された拡張子を設定 (章 14)で設定します。ダッシュボード (章 1)でオン/オフを切り替えるか、コードをダイヤルしてオン/オフを切り替えることができます。赤いバーがすべての画面に表示されます。

チャプター 12

サイトとオフィスの911

Web インターフェイス内で: /sites

サイトは建物です。住所と電話が使用するネットワークです。サイトは、緊急通話が呼び出し元の場所を、階や部屋まで特定する方法です。米国では、Kari's LawとRAY BAUM'S Actは、企業の電話システムからこれを正確に要求しています。

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

サイトの追加

サイト (章 12)で追加を押します。

フィールド内容
名前人が呼ぶ名前: 本社
街、市、州または県、郵便番号、国応答者が送信される市民住所
ネットワーク電話が使用するアドレス範囲、たとえば10.1.0.0/16;1行につき1つ

次に、各拡張番号にサイト、階、部屋を指定します。ヘルス (章 13)には、場所のない拡張番号が表示されます。

電話の場所の特定方法

  1. サイトのネットワークから登録する電話は、そのサイトにあり、拡張番号の階と部屋にあります。
  2. ホットデスクは、デスク自身のサイト、階、部屋を持ち、サインインした人ではありません。(ホットデスク (章 36))
  3. サイトのネットワークの外部から登録する電話はリモートワーカーです。新しい場所からの最初の緊急対応可能な登録時に、ユーザーは電話ページでアドレスを確認するように求められます。緊急通話はそのアドレスを持ちます。
  4. リモートワーカーが確認しなかった場合、通話はまだ発信されますが、通常のサイトとともに、警告はアドレスが確認されなかったことを示します。

サイトの警告

Email when someone calls 911が設定されている場合、指定された人々は緊急通話が開始されると、呼び出し元の名前、拡張番号、サイト、階、部屋を受け取ります。誰かが応答者に会うことができます。通知拡張番号は、電話にメッセージを受け取り、BitVoiceのすべての開いている画面に警告が表示されます。緊急通話 (章 11)を参照してください。

チャプター 13

ヘルス

Web インターフェイス内で: /health

ヘルスでは、システムが通話の受付に準備ができているか、また準備ができていない場合は何をすればよいかがわかります。各行では、問題がわかりやすい言葉で説明され、問題を解決するための画面へのリンクが提供されます。すべての変更の後、必ず確認してください。

チェック項目

チェック重要性
緊急通話の発信ルートと動作するトランクが緊急番号を運ぶ
緊急ロケーションのない拡張子911通話が床や部屋を運ばない
電話サービスSIPがリッスンしているポート
接続されていない電話誰もサインインしていない拡張子
トランク登録されているか、登録されていない理由
プロンプトのないメニュー呼び出し先が沈黙を聞く
タイムゾーンスケジュールがそれに従う
録音と保持ディスク容量、録音の保持期間
証明書TLS証明書の有効期限
キーボールトボールトが読み取ることができないシークレット
他のサーバー複数のサーバーがデータベースを共有している場合、各サーバーの稼働状況

問題は色分けされています。赤は通話を停止するもの(緊急ルートがない)、黄色は確認すべきもの(電話が接続されていない)、灰色は情報提供のみです。

チャプター 14

設定

Web インターフェイス内で: /settings

設定には、システム全体に関するすべての情報が含まれます。各セクションは個別に保存され、すべての保存は 変更 (章 61) にリビジョンとして保存されます。

セクション内容
システム名称、国、タイムゾーン、言語、電話およびプロバイダーが見る公開アドレス
番号エコーテスト番号、ボイスメール番号、パーク番号、緊急番号
コーデック使用可能なコーデック(優先順位付き、コーデック (章 66))
通話記録記録なし、すべての通話、選択した拡張番号;同意ルール;記録の保持期間
サウンドボイスメールおよび通話中のクリーンアップ
保護ログイン失敗による禁止、信頼できるネットワーク、拡張番号ごとの通話数、プレミアム番号
緊急呼び出し先のアドレスの送信、通知先、メール先、緊急モード
AIAIサービス、モデル、有効な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 は、インターネットから各名前でサーバーに到達して、所有権を証明する必要があります。

アカウント バインドが不要な他の ACME 認証局 (会社独自の step-ca、テスト用の Let's Encrypt ステージング サービスなど) は、認証局 の下で選択されます。ワイルドカード名には、BitVoice で実行できない DNS 証明が必要です: これらの証明書は手動でインストールしてください。クラスターの各サーバーには独自の証明書が発行されます。

チャプター 15

画面の言語

BitVoiceの画面は、英語と13の他の言語(ドイツ語、フランス語、スペイン語、イタリア語、ポルトガル語、オランダ語、ポーランド語、スウェーデン語、デンマーク語、ノルウェー語、フィンランド語、日本語、中国語簡体字)で利用できます。

選択方法

各ブラウザには独自の言語があります。メニュー(テーマの隣の言語リスト)、サインインページ、またはセットアップウィザードの最初のページで選択できます。選択するまで、BitVoiceはブラウザの言語を使用します(ブラウザの言語がリストされている場合)。選択は、このブラウザのみに保存されます。つまり、1つのサーバーで2人のユーザーがそれぞれ異なる言語で作業できます。

すべての画面要素が翻訳されています。メニュー、見出し、ボタン、ヒント、サーバーからのメッセージ、スクリーンリーダーが発表する名前です。検索(⌘K)で、ページ名(英語または選択言語)でページを見つけることができます。次のものは変更されません。ユーザーが入力するテキスト(名前、番号、メモ)、アドレス、コード、エディター内のスクリプト、製品およびプロトコルの名前。日付と数字は、ブラウザーの設定に従います。

翻訳方法と品質

翻訳は、約5,000の画面テキストすべてに対して、大規模な言語モデル(機械)によって生成されます。人間によるチェックは行われていません。画面が生成する一部の文は、読みにくい場合があります。また、用語が2つの場所で2つの方法で翻訳される場合があります。翻訳されていないもの(新しい画面など)は英語のままです。

ヘルプは、英語のマニュアルを保持しています。各章の先頭には、bitvoice.orgにある翻訳された同じ章へのリンクがあります(こちらも機械翻訳です)。

電話側は別です。呼び出し先が聞く音声(プロンプト、ボイスメールメニュー)は、デフォルトのプロンプト言語(サウンド (章 20))で、拡張番号またはキューが独自の言語を持っている場合を除きます。

パート 2

通話の行き先

呼出者が移動する構成要素: グループおよびキュー、メニューおよびスケジュール、スクリプトおよび AI 受付、ボイスメール、およびすべてを示す図。

チャプター 16

通話フロー

Web インターフェイス内で: /flow
CarrierIncoming routeby number dialledScheduleopen or closed?openclosedMenu1 sales, 2 supportRing grouprings everyone for 25 sVoicemailafter hoursif nobody answers
図 11. How a call from outside finds its way

全ての状況を確認

全ての状況を確認、呼出フロー (章 16)の最上部では、全ての呼出プランを、発生する可能性のある全ての状況で試行します。これは、サンプルではありません。

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キーを押す)をクリックして、そこからの通話の先を変更します。ルートの宛先、拡張番号またはグループの誰も応答しない場合、スケジュールの開放および閉鎖先、メニューのキー(その場でキーを追加または削除)、スクリプトのフォールバック、または受付の人の人。保存すると、変更は他の変更と同様にチェックされ、修正が作成されます。フルエディターを開くは、アイテムの独自のページに移動します。受信ルートを追加は、ダイアグラムを離れることなくルートを追加します。

チャプター 17

リンググループ

Web インターフェイス内で: /ring-groups

リンググループは、1つの番号が複数の拡張番号に同時に鳴るものです。セールスチーム、フロントデスクとそのバックアップ、ワークショップのすべての人が対象です。

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

鳴動戦略

カレンダーにミーティングが設定されている、または「着信を拒否」がオンになっているメンバーはスキップされ、グループは他のメンバーに鳴ります。モバイルアプリを使用しているメンバーは、プッシュ通知で起動し、鳴ります。

##誰も応答しない場合 誰も鳴動時間内に応答しない場合、通話は誰も応答しない場合に設定された場所に送信されます。メンバーのボイスメール、キュー、メニュー、別のグループなどです。設定がない場合、通話は呼び出し元が諦めるまで鳴り続けます。

グループ、キュー、またはピックアップのどれを使用するか?

使用いつ
リンググループ少数の人が対象で、どれでも通話を受け取ることができ、通話がすぐに鳴る必要がある場合
キュー呼び出し元が待たされる可能性があり、順番が聞こえる必要がある場合
ピックアップグループ各人が独自の通話を受け取り、同僚が代わりに応答できる場合
チャプター 18

キュー

Web インターフェイス内で: /queues

キューは、音楽と共に呼び出し元を順番に保持し、次の空いているエージェントに鳴ります。コンタクトセンターの中心であり、呼び出しが人が受け取るよりも速く来るオフィスでは便利です。

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

着信の振分け

振分け戦略どのエージェントが呼び出されるか
最も長くアイドル最後に呼び出されてから最も長く待っているエージェント
循環各エージェントが順番に呼ばれ、最後のエージェントから続く
全員に呼び出し全てのエージェントが同時に呼ばれる
最も少ない呼び出し今日最も少ない呼び出しを受けたエージェント
順番 (線形)常にリストの先頭から: 最初のエージェント
ランダム任意のエージェントが呼ばれる
重み付きランダム任意のエージェントが呼ばれるが、ペナルティの低いエージェントが呼ばれる確率が高い

The キュー スクリーンはリアルタイムのウォールボード: 誰が待っているか、どのくらい待っているか、そして各エージェントの状態。

エージェント

エージェントは *45 をダイヤルしてすべてのキューにログインまたはログアウトし、*46 をダイヤルして一時停止 (休憩) または再開する; 一時停止またはログアウト中のエージェントは呼び出しを受けない。ウォールボードには同じボタンがあり、エージェントが一時停止した理由が表示される。

状態意味
利用可能空いている; 次の呼び出しを受けることができる
呼び出し中呼び出しが行われている
忙しい呼び出しが行われている
ラップアップ呼び出しが終了し、ラップアップ時間が経過中
一時停止休憩中で、理由が表示される
不在ミーティングまたは時間外で、カレンダーから
ログアウトキューの呼び出しを受けない

監督者

ライブコール (章 46) の 監視 は監督者の電話を呼び出し、監督者が応答すると 傍受 (誰にも聞こえない) 、 囁き (エージェントのみが聞こえる) 、または 割り込み (両者が聞こえる) を行うことができ、呼び出し中に切り替えることができる。

スティッキー キューと VIP

キューで スティッキー を有効にすると、30 日以内 (または設定した日数以内) に応答した呼び出し (返信呼び出し) は、最後に応答したエージェントが空いている場合、優先的に呼び出される。 VIP 呼び出し はキューの最後に表示され、すべてのキューで優先的に呼び出され、ボードに VIP として表示される。

チャプター 19

発信ダイヤラー

Web インターフェイス内で: /dialer

発信ダイヤラー (章 19)は、キュー (章 18)のエージェントの連絡先のリストを呼び出します: 更新、約束のリマインダー、請求、アンケート。各キャンペーンには、キュー、リスト、呼び出し方が異なります:

モード呼び出し方
プレビューエージェントが次の連絡先を要求し、詳細を確認し、呼び出します(エージェントの電話が最初に鳴ります)またはスキップします
逐次的各フリーのエージェントにつき1回の呼び出し
パワー各フリーのエージェントにつき一定数の呼び出し(1から3)
予測的BitVoiceは、エージェントごとの呼び出し回数を調整し、放棄された呼び出しが少ない場合に積極的に、放棄率が制限に近づくにつれて控えめにします
  1. キャンペーンを追加し、キュー、発信者ID(連絡先が見る番号)、時間帯、電話の鳴動時間、試行回数、試行間隔を設定します。
  2. 連絡先を開き、リストを追加します: ヘッダー行とnumber(またはphone)という名前の列を持つCSVファイルです。nameと他の列は、プレビューでエージェントに表示されます。重複した番号と不正な番号はスキップされます。
  3. キャンペーンでメッセージを録音します: 誰が呼び出し、理由、そして「これらの呼び出しを受けない場合は9を押してください」というメッセージです。これは、エージェントがフリーでない場合に答えられた人に再生され、また、必要に応じて応答機のあいさつ後に再生されます。
  4. 開始します。呼び出しは、時間帯内のみに行われ、キャンペーンが一時停止または予定の呼び出しがない場合に停止します。

人と機械。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で、ファイルをボディとして使用します。

チャプター 20

サウンド: プロンプト、言語、ホールドミュージック

Web インターフェイス内で: /sounds

サウンド (章 20) には、BitVoice が呼び出しに応じて再生するすべての音声や音楽 (グリーティングやメニューのプロンプトを除く) が含まれる。

プロンプト、すべての言語

プロンプト は BitVoice が呼び出しに応じて再生する 1 つの音声: 「PIN を入力してください」、「あなたの順番は」など。ダイヤルバイネーム ディレクトリ、ダイヤルイン (DISA) 、起床呼び出し、キューのアナウンスはこれらのプロンプトで話す。BitVoice には英語、スペイン語、フランス語、ドイツ語、イタリア語、ポルトガル語、オランダ語、ポーランド語のプロンプトが用意されている。数字は数字ごとに読み上げられ、各言語で同じように聞こえる。

ホールドミュージック

ホールドミュージックは クラス (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分後に切断します。ストリームに到達できない場合、クラスのトラック(またはトラックがない場合は保留音)が再生され、クラスは理由を表示します。

誰が聞くどの音楽
保留された誰か保留者の拡張子の選択した音楽、またはデフォルト
パークされた呼出者呼出者をパークした人の音楽、またはデフォルト
キューで待機している呼出者キューの音楽、またはデフォルト
会議リーダーを待機している呼出者デフォルト

すべてのデフォルトは保留音になることができますので、音楽を選択するまで何も変わりません。キューまたは拡張子で保留音を選択すると、音がそのまま保持されます。

チャプター 22

名前によるダイヤルディレクトリ

Web インターフェイス内で: /directories

名前によるダイヤルディレクトリ (章 22)を使用すると、呼出者は番号を知らなくても誰かを呼ぶことができます: キーパッドで名前の最初の文字を入力します(2はABC、3はDEF、9はWXYZまで)そして接続されます。

  1. ディレクトリを追加し、名前を付け、番号(411など)を割り当てます。番号を空のままにすると、メニューのオプションとして使用できます。
  2. 呼出者が入力するものを選択します: 姓(通常)、名、またはどちらでも。
  3. 誰がリストされるかを選択します。誰もリストされない場合は、電話を持っているすべての人がリストされます。

呼出者は「名前の最初の3文字を入力してください」と聞きます。1つのマッチがすぐに接続されます。複数のマッチがある場合は、8件ずつ読み出されます: 各人の名前、その後「この人に電話するには1を押してください」など、9はさらに多くの名前です。マッチしない場合は「誰もマッチしません」というメッセージが表示され、再試行します(3回まで)。

発音された名前: 各人の拡張子で名前を録音します(発音された名前: ブラウザで録音するか、ファイルをアップロードします)そして、ディレクトリはそれを読み出します。ディレクトリの独自の言葉は、サウンド (章 20)のディレクトリのプロンプトから来ます。

チャプター 23

ダイヤルイン(DISA)

Web インターフェイス内で: /dial-in

ダイヤルイン (章 23)(DISA、「直接内向きシステムアクセス」)を使用すると、誰かが外部から電話し、自分が誰であるかを証明し、再びオフィスを通じて電話をかけることができます: 呼出はオフィスの発信者ID、ルート、レートで行われます。まるで彼らが机の前にいるかのように。

  1. ダイヤルインを追加し、PIN(4から10桁)と、許可された番号(これらの番号のみから)、または両方を設定します。2つのうち1つは必須です。
  2. 呼出が行われる拡張子を選択します: その外部呼出の許可、発信者ID、および発信ルートが適用されます。外部呼出が許可されている必要があります。
  3. 内部でダイヤルする番号を割り当て、呼出ルーティング (章 8)(ダイヤルインを宛先として選択)に電話番号を送信します。

呼出者は「PINを入力してハッシュを押してください」と聞きます。その後、「電話番号を入力してハッシュを押してください」と聞きます。接続されます。言葉は、サウンド (章 20)のダイヤルインのプロンプトから来ます。

チャプター 24

音声ボット(AudioSocket)

Web インターフェイス内で: /voice-bots

ボイスボット (章 24)は、独自のプログラム (AIエージェント、音声認識IVR、レコーダー) で、AudioSocketを介して呼び出しを受け取ります。AudioSocketはAsteriskが使用するシンプルなプロトコルです。BitVoiceは呼び出しに応答し、ボットへのTCP接続を開き、呼び出しのUUIDを送信し、次に呼び手の音声を20msフレームの8kHz 16ビットリニアオーディオとして送信し、各キーの押下を送信します。ボットが送信する音声は呼び手に再生されます。AsteriskのAudioSocket用に書かれたボットやスピーチサービスコネクタは、BitVoiceで変更せずに使用できます。

  1. 音声ボットを追加:その名前、ボットのアドレス (10.0.0.9:9092)、および、オプションで、そのボットにダイヤルする番号。
  2. ボットが呼び出しを受けられない場合、または切断した場合に、呼び手がどこに行くかを選択します(人、キュー、ボイスメール):必須です。ボットがダウンしているために呼び手がドロップされることはありません。
  3. 呼び出しルーティング (章 8)から、メニューのオプション、スケジュール、またはトグルから呼び出しをボットに送信します。

ボットがAudioSocketの切断を送信すると、呼び出しは終了します。呼び手が切断すると、ボットに1つの切断が送信されます。3秒以内に到達できないボット、または切断せずに切断されたボットは、呼び手をフォールバックに渡し、障害はログに記録されます。

既に進行中の呼び出しにプログラムを参加させるには(傍受トランスライター、誰にも囁かないアシスタント)、ARIの外部メディアを使用します。Asteriskの互換性 (章 70)を参照してください。

チャプター 25

日/夜トグル

Web インターフェイス内で: /toggles

日/夜切り替え (章 25)は、呼び出しフロー (FreePBXではコールフローコントロールと呼ばれます) の切り替えスイッチです。呼び出しは、通常の先行先に転送されます。あるいは、誰かが切り替えを実行している間、別の先行先に転送されます。例えば、オフィスが嵐のために早めに閉じた場合、誰かが*281をダイヤルして切り替えを実行し、切り替えが元に戻るまで、呼び出しはボイスメールに転送されます。切り替えは、再起動を跨いで保持されます。

  1. トグルを追加、コード(1から3桁:*28の後にダイヤル)を指定し、通常と切り替わったときの呼び出しの宛先を選択します。どちらの側もスケジュールになる可能性があります。したがって、トグルは営業時間の前に配置できます。
  2. 電話から切り替えることができる人を選択します(誰も選択しないと、どの拡張子でも切り替えることができます)。
  3. 呼び出しルーティング (章 8)から、メニューのオプション、またはスケジュールから呼び出しをトグルに送信します。

*28とコード(上昇トーン:切り替え、下降トーン:通常)をダイヤルして切り替えます。トグルページの隣の切り替えも使用できます。または、API (POST /api/toggles/{id}/state) を使用します。トグルが切り替わっている間、*281を監視するバズィランプキーは点灯します。したがって、閉じる人がデスクから見ることができます。トグルコード自体は、機能コード (章 32)にあります。

チャプター 26

スケジュール

Web インターフェイス内で: /schedules

スケジュールは、開いているときは一方に、閉じているときは他方に通話を送る。受信ルートをスケジュールに指向し、スケジュールをメニュー(開いているとき)とボイスメール(閉じているとき)に指向する。

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

営業時間

各行は曜日と時間からと時間までのセットである。複数の行が許可される:月曜日から金曜日は9:00から17:00、土曜日は10:00から13:00。営業時間は深夜を跨ぐことができる(22:00から06:00)ため、夜間シフトに使用する。

休日

休日は、営業時間に関係なく、終日閉じているとみなされる。各日付を名前とともに追加する;名前は、Call flow (章 16)でその日に通話を試みたときに表示される。

時間帯

時間帯は、Settingsで指定したものである。時計が変わると、スケジュールはローカル時間に従う。

チャプター 27

スクリプト(JavaScriptおよびLua)

Web インターフェイス内で: /scripts

スクリプトは、メニュー、スケジュール、グループだけでは不十分な場合に、通話をどこに送るかを決定する:特定の地域からの呼び出しを特定のオフィスに、VIP番号を直接人に、独自のデータから決定する。あるいは、通話全体を実行に設定すると、通話に答え、AsteriskのダイヤルプランやAGIスクリプトのように実行する:プロンプト、音声、キー、録音、着信、渡し(以下)。スクリプトは、Scripts (章 27)でJavaScriptまたはLuaで書かれる。

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

デザインによる安全性

スクリプトの見え方

call には:

フィールドこれは何ですか?
from, fromName発信者の番号と名前
toダイヤルされた番号
directioninbound または internal
trunkこれが来るトランク
weekday, hour, minute現在の時間 (0 は日曜日)
dateYYYY-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) も、呼び出しを試みるときにスクリプトを実行します。

呼び出し全体を実行するスクリプト

呼び出し全体を実行 を選択します。スクリプトは呼び出しに応答し、上から下に向かって実行されます。各ステップは、完了するまで待機します。

StepWhat 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 分)後に停止します。失敗した場合、停止された場合、または終了せずに終了した場合、呼び出しは フォールバック に移動します。呼び出し者が電話を切断すると、すぐに停止します。 試してみる は、指定したキーのシーケンスでスクリプトを実行し、各ステップをリストし、呼び出しを発信しません。

チャプター 28

AI 受付、ボイスメール トライエージ、質問

Web インターフェイス内で: /receptionists

AI 機能は、設定 (章 14) で指定された AI サービス (デフォルトは OpenRouter) または独自のサービスを使用します。必要な情報はサービスに送信されるため、信頼できるサービスを選択してください。911 センターの場合、政府のクラウドはローカルとみなされます。

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

AI 受付

受付として呼び出し先を選択します: ルート、メニュー オプション、または拡張番号の 応答なし。自動応答であることを表示し、承認情報 からのみ応答し、メッセージを残し、コールバックを予約します (詳細は コールバック (章 30) を参照)。0 を押すか、人に応答するように依頼すると、常に有人に接続され、AI サービスまたは音声モデルに問題がある場合も、呼び出し先は AI によってブロックされることはありません。

モデル

モデル はテキスト処理を実行します: 要約、受付の応答、平文での質問。音声からテキストへの変換には、オーディオを処理できるモデルが必要です。音声テキスト モデル (例: google/gemini-2.5-flash on OpenRouter) を設定して、テキストのみのモデル (例: meta-llama/llama-3.3-70b-instruct) を使用します。

ビルディング内の音声テキスト

言語モデルを使用せずに音声を書き留めることができます。音声認識器 (whisper) がオーディオを聞き取り、発言内容を書き留めるだけです。 誰が音声を書き留めるか、AI 設定では、3 つの選択肢があります。

誰が書いたかはわかりませんが、すべての書き起こしはそこに保存されます: ボイスメール、録音された通話、生の911通話、および受付担当者が発信者を聞くとき。モデルがない場合、モデルは空のままにすることができます: 書き起こしは書かれ、要約は事実から書かれます (以下参照)、言語モデルが必要なもの (アクションアイテム、ボイスメールのトライエージ、通話の洞察、受付担当者の返答、平易な言葉での質問) は省略されます。認識器が何を聞いたかについてのメモ、たとえば [BLANK_AUDIO] または (silence) は削除されます。つまり、静かな部分は何も言われていないように読み取られることはありません。

通話で述べられた事実 (言語モデルなし)

すべての書き起こしは、言語モデルなしで、ルールによって読み取られます。ルールでは、通話担当者が注目する事実が抽出されます: 什么が起こったか、どこで起こったか、誰がけがをしたか (または誰もけがをしていないか)、状態 (呼吸、目を覚ましている、出血 ...)、危険 (火災、煙、ガス、武器、化学物質、燃料)、車両、発信者が必要な人との関係、およびコールバック番号。各事実は、文と発言者の側面とともに、書き起こしの 通話で述べられた事実 に表示されます。モデルがない場合、要約はこれらの事実のみから書かれ、そこに書かれています。

セット見つかった事実誰も期待していない事実
トレーニング (ルールはこれから書かれました)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 に送信されません。

チャプター 29

ボイスメール

Web インターフェイス内で: /voicemail

各拡張子にはメールボックスを設定できます。応答しなかった場合、呼び出し者はあいさつを聞き、メッセージを残します。該当者は、電話で聞いたり、画面で読んだり、メールで受け取ったりします。

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

ボイスメールの有効化

拡張子で ボイスメール を有効にします。 誰も応答しない場合 は、メールボックスに設定されます。 PIN (4 ~ 10 桁) を設定します。PIN は、他の電話からメールボックスを開き、スタッフ ポータルとホット デスクにサインインします。

設定これは何をしますか?
最長メッセージ10 ~ 900 秒 (デフォルトは 180)
新しいメッセージをメールで送信拡張子のメール アドレスに、メッセージが添付されて
あいさつブラウザで録音、または電話からアップロード、または録音します。なければ、呼び出し者はビープを聞きます

メッセージの聞き方

AI を使用する場合

ボイスメールを書き出して要約する (設定、AI) を有効にすると、各メッセージは書き出され、1 行で要約され、種類 (営業、サポート、請求) に応じて緊急、通常、または低優先度としてマークされます。緊急メッセージは、すべての管理者の画面にアラートを表示します。 AI (章 28) を参照してください。

サウンドのクリーンアップ

サウンドのクリーンアップ (設定) は、メッセージを保存するときに、一定の背景ノイズを除去し、レベルを均一にします。したがって、車の中や混雑した通りからのメッセージは、聞きやすくなります。

チャプター 30

コールバック

Web インターフェイス内で: /callbacks

返信用に依頼した人。AIレセプションが依頼された場合、コールバックを予約します。コールバックでは、名前、呼び出す番号(呼び出している番号を提供)、適切な時間、内容を収集し、読み返し、同意した場合のみ予約します。正確な時間を約束することはありません。管理者は手動でコールバックを追加することもできます。

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

新しいコールバックは、すべての開いている画面にアラートを表示し、レセプションの メッセージを受け取る メールボックスの所有者にメールが送信されます(その拡張子にメールアドレスが設定され、設定でメールが設定されている場合)。

返信用に、自分の拡張子を選択し、 返す を押します。まず自分の電話が鳴り、受話した後、BitVoiceが通常のルートと発信者IDで番号に電話します。次に、メモを追加する場合は 完了 を押します(または キャンセル )。完了したコールバックは、開いているものの下に保持され、再度開くことができます。

パート 3

日常の通話

人々が毎日電話で行うこと、および自分で設定すること: 転送、フォローミー、ピックアップ、会議室、ページング、ホット デスク、ファックスおよびテキスト。

チャプター 32

機能コード、転送、高速ダイヤル

Web インターフェイス内で: /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 (通話中)録音を一時停止および再開する (カード支払い)

転送

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

他の拡張子への転送は、その拡張子の独自の設定 (ボイスメール、フォローミー) を使用します (最大4回のホップ)。外部番号への転送は、発信ルートを経由し、外部呼び出しを許可する必要があります。

転送は、設定ではなく、実行中の状態です: 設定すると、リビジョンは作成されず、再起動を超えて保持されます。拡張子 (章 3) とスタッフポータルでは、転送を表示および変更できます。

通知しない

*78 でオン、*79 でオフ、*76 で切り替えます。通知しないがオンの場合、呼び出しはボイスメールまたは拡張子の応答なしの宛先に転送されます。手動で設定された通知しないは、カレンダー (カレンダー (章 39)) を上書きします。緊急のコールバックは、まだ鳴ります。

フォローミー

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

*21 は、フォローミー番号が設定された拡張子 (拡張子自身またはスタッフ ポータルに設定) に対してフォローミーをオン/オフします。机は最初にその鳴り時間で鳴り、次にフォローミー番号を一つずつまたはすべて同時に鳴らします。外部番号で 1 を押す がオンになっている場合、相手は音を聞いて 1 を押して通話を受け付けます。ボイスメールまたは無音は決してそうせず、15 秒後に通話は次に進みます。

他人の電話に応答する

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

インターコム

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

*80 と拡張子は自動応答でその拡張子を呼びます: その電話はスピーカーで応答し、両側で話すことができます。Yealink、Grandstream、Snom は BitVoice の Call-Info ヘッダーを読み取り、Poly は Alert-Info を読み取ります; 一部の電話では、電話自身の設定でインターコムを許可する必要があります。拡張子はインターコムを拒否できます; その場合、電話は通常の方法で鳴ります。ドア ステーションは決してインターコムを受け付けません。

スピード ダイヤル

*0 とコードは保存された番号をダイヤルします: *05。会社のスピード ダイヤルはこのページにあります; 各人は拡張子またはスタッフ ポータルに独自のスピード ダイヤルを持つことができ、会社の同じコードを持つものよりも優先されます。コードは 1 から 3 桁です。

コードの変更

すべてのコードは 機能コード (章 32) で変更できます、または off で無効にできます。2 つの機能はコードを共有できません。また、コードは拡張子またはグループの番号にはなり得ません: BitVoice はどれが競合するかを示します。エコー、ボイスメール、パーク番号は 設定 (章 14) にあります。

チャプター 33

スタッフポータル

スタッフポータルにより、管理者なしで各自が自分の通話を管理できます。着信拒否、転送、フォローミー、速呼、ボイスメールとそのあいさつ、PIN、自分の通話の一覧です。サーバーのアドレスの #/me にあり、サインインページからリンクされています。

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

サインイン

各人は 拡張番号 と ボイスメールPIN でサインインします。電話からボイスメールを開くときと同じPINです。PINのない拡張子はサインインできません。管理者が拡張子にPINを設定します。

同じアドレスからの繰り返し試行は、10分間ロックアウトされます。ポータルのセッションは、常に各自の設定のみに到達します。別の拡張子、設定、または誰かの録音には到達できません。

各人ができること

タブ内容
着信先着信拒否;毎回の通話、忙しいとき、応答しないときの転送;フォローミー番号;自分の速呼
ボイスメール再生および削除するメッセージ、AIがオンの場合のトランスクリプトとサマリー;あいさつを録音またはアップロード
自分の通話自分の通話の一覧、新しいものから、録音なし
PINPINの変更、現在のPINの入力

ここで設定した転送と着信拒否は、電話から機能コードで設定したものと同じです(機能コード (章 32) を参照)。最後に設定したものが有効です。フォローミー番号と速呼は、拡張子の設定の一部なので、変更すると 変更 (章 61) に修正が作成され、各自のものとして記録されます。

チャットとプレゼンス

ポータルの チャット タブには、同僚の現在の状態が表示されます: 利用可能, 通話中, 着信, 不在 (ドンドン打ち止め、会議またはカレンダーからの休暇、理由付き) または オフライン (電話未接続)、および入力したステータス (「昼食中、14時に戻ります」)。誰かを選択してメッセージを送信できます。メッセージはすぐに到着し、名前の横に未読数が表示されます。 チームルーム (設定、スタッフチャット) は、グループまたはメンバーが指定されていない場合はすべての人の会話です。

メッセージは、会話に参加している人だけが見ることができます。管理者はルームを管理しますが、メッセージを読むことはありません。設定、 スタッフチャット でチャットをオフにしたり、メッセージを保持する期間を設定できます (0 で会話ごとに最新の 1000 件を保持)。

チャプター 34

会議ルーム

Web インターフェイス内で: /conferences

会議ルームは、複数の人々が同時に話し合うためにダイヤルする番号です。スタッフはデスクからダイヤルします。外部からの呼び出しは、受信ルートまたはルームを指すメニューオプションを介して到達します。

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

ルームの設定

  1. 会議ルーム (章 34) を開き、 会議ルームの追加 を押します。
  2. 番号 (任意の空き番号、デフォルトは 500) と 名前 を入力します。
  3. オプションで PIN を設定します。呼び出し先は音を聞き、PIN を入力して # を押します。PIN が 3 回間違えると、呼び出しは終了します。
  4. オプションで リーダー PIN を設定します。これは PIN と異なります。誰かがそれを入力すると、リーダーとして参加します。
  5. 外部からの呼び出しを許可するには、受信ルート (またはメニューキー) をルームに指します。

オプション

オプション機能
リーダーを待つリーダーが参加するまで、他の参加者は保留音を聞きます。最後のリーダーが退出すると、ルームは閉じられ、すべての参加者は切断されます。リーダー PIN が必要です。
参加者をミュートブリーフィングや講義用: リーダーが話し、参加者は聞きます。参加者は 1 を押して話すことを求め、リーダーは参加者をミュート解除します。
ルームの録音全体のシステムで録音がオフになっていない限り、ルーム全体が 1 つの録音として 通話履歴 (章 47) に保存されます
参加・退出時の音デフォルトでオン
同時参加者数デフォルトで 50、最大 200

通話中のキー

ルームの使用中

使用中のルームはページに表示され、誰が参加しているか、誰が話しているか (緑のライト)、誰がミュートされているか、誰が話すことを求めているか、誰がまだリーダーを待っているかが表示されます。管理者は誰でもミュートまたはミュート解除したり、参加者を削除したり、ルームをロックまたはロック解除したりできます。

ルーム内のすべての参加者は、ミュートされていない他の参加者を聞きます。各人の電話は独自のコーデックを使用できます。各参加者の通話ごとに通話レコードが保持され、ルーム自体のレコードも保持されます。

HD オーディオ

ルームで HD オーディオ をオンにすると、8 kHz ではなく 16 kHz でミックスされます。ワイドバンド電話 (G.722、Opus、ブラウザ電話) を使用する人は、HD で互いに話します。通常の電話 (G.711、プロバイダー経由のモバイル) を使用する人は、通常のルームを聞きます。ライブビューでは、ルームと HD のメンバーがマークされます。HD には、電話が使用するコーデックに G.722 が含まれている必要があります (システムのリストの先頭、設定、コーデック)。ルームの録音は電話の品質のままです。

ビデオルーム

ルームで ビデオ をオンにすると、ビデオ電話 (およびソフトフォン) がカメラを送信し、1 つの画像を表示します。話し手に切り替わります (Asterisk の ConfBridge と同様)。

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個のカメラを使用できます。

画面の共有: 画面を共有 をクリックし、ブラウザーのピッカーで画面、ウィンドウ、またはブラウザータブを選択します。部屋のすべての人が、大きな画像として表示され、テキストは鮮明に表示されます (ネットワークが遅い場合、画像のレートが低下します)。カメラを接続する必要はありません。 共有を停止、またはブラウザーの 共有を停止 バーをクリックして停止します。

チャプター 35

ページングとオーバーヘッド スピーカー

Web インターフェイス内で: /paging

ページングは一度に多くの電話を鳴らします: ページング番号をダイヤルし、電話グループのすべての電話が自動的にスピーカーで応答します。倉庫、学校、店舗フロアへのアナウンスに使用します。

ページンググループの設定

  1. ページング (章 35)でページンググループの追加を押し、番号(デフォルトは800)と名前を付ける。
  2. 電話を選択する。オーバーヘッドスピーカー(拡声器)を拡張子(種類オーバーヘッドスピーカー)として設定したものもメンバーになることができる。
  3. オプションとして、マルチキャストアドレスとポート。

マルチキャスト

マルチキャストも、マルチキャストアドレスとポート(239.0.1.10:5000)にページを送信し、G.711 µ-lawとしてオーバーヘッドスピーカーと多くのデスク電話が呼び出しごとに聞くことができる。グループにはマルチキャストアドレスのみが含まれる場合がある。1つのネットワークで動作する。ルーターは、マルチキャストを許可するように設定されていない限り、マルチキャストを通過させることはない。

ページングとインターコム

ページングインターコム
誰が聞くグループ内の全員1つの拡張子
反応なし、一方向あり、双方向
方法グループの番号をダイヤル*80と拡張子

自動応答しない電話は、ページに応答しない。自動応答(インターコム)を許可する必要がある電話もある。

チャプター 36

ホットデスク

Web インターフェイス内で: /phones

ホットデスクは、誰がログインしたかによって共有電話になります。 固定デスクがない事務所用に作成します。 ホットデスク を有効にすることで、電話が設定されている拡張子 (デスクの独自の拡張子、たとえば 900 デスク 3) で作成します。

ログインとログアウト

  1. 電話で *33 をダイヤルし、音が鳴るまで待ちます。
  2. 拡張子と # を入力し、音が鳴るまで待ちます。
  3. ボイスメール PIN と # を入力します。 上昇トーンはログインに成功したことを示し、下降トーンは拒否されたことを示します。

その後、拡張子への通話はこのデスクにも他の電話にも鳴り、ここから行う通話はあなたの番号と名前が表示され、コストではあなたのものとしてカウントされます。 別のデスクにログインすると、そこに移動します。 *34 でログアウトします。 5 回間違えると、デスクは 10 分間ロックされます。

ホットデスクの管理

電話 (章 4) で、ホットデスク は誰がどこにログインしているかを表示します。 管理者は、誰かをログイン (PIN を使用せず) またはログアウトさせることができます。 コードと、毎日誰もログインしていない時間は、設定にあります。 ログインは再起動を超えて保持されます。

チャプター 37

ホテルと目覚まし通話

Web インターフェイス内で: /hotel

目覚まし通話

誰でも目覚まし通話を予約できます。ゲスト、夜勤、呼び出し対応者。自分の電話から*62をダイヤルします。BitVoiceは設定されているもの(ある場合)を示し、次に4桁の時間(0630)を入力します。星を押してキャンセルします。ホテル (章 37)では、管理者は任意の拡張子に対して1回、または毎日、目覚まし通話を予約できます。

システムの名前で電話が鳴る;受け答えると「Good morning. This is your wake-up call.」(Sounds (章 20)の起床プロンプト、ゲストまたは拡張子の言語で)が聞こえる。受け答えられない場合、5分間隔で3回試みられ、最後に受付拡張子が鳴ることができる。複数のサーバーがある場合、起床呼び出しは1つだけ行う。

ゲストルーム

各部屋の電話の拡張子でゲストルームをオンにする。Hotelでは、各部屋のゲスト、起床呼び出し、部屋のステータスが表示され、チェックインとチェックアウトボタンがある。

ホテルシステム(PMS)

チャプター 38

すべての電話の連絡先

Web インターフェイス内で: /contacts

連絡先 は会社のディレクトリです: 供給者、クライアント、その他の事務所への電話番号です。 すべての電話では、拡張子と共にリストされ、ここにリストされている番号が鳴り込むと、電話と発信者カードには連絡先の名前が表示されます (プロバイダーが名前を送信しなかった場合)。 番号は、どのように書かれても一致します: +1 212 555 0100 と 2125550100 は同じ電話線です。

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

連絡先の追加

連絡先を追加 で、1 回に 1 人ずつ追加します。 仕事、携帯電話、自宅、その他の番号を何個でも追加できます。 インポート では、最初の行に列名 (名前、会社、仕事、携帯電話、自宅、メール、ノート) が含まれる CSV ファイルを使用します。 BitVoice はファイル全体を最初に確認し、間違っている行を示します。 同じ名前の連絡先がすでにある場合、更新されます。 すべての連絡先を置き換える でリストを新しく開始します。 エクスポート で、リストを CSV ファイルとしてダウンロードします。

デスク電話

電話 (章 4) (プロビジョニング) で設定された電話は、追加の設定なしでディレクトリを受け取ります:

ブラウザ電話

連絡先 をキーパッドの下で見つけて、名前または番号を検索し、呼び出し準備をします。

Microsoft 365 または Google Workspace から

BitVoice は、組織のディレクトリと連携して連絡先を同期できます。ディレクトリ内の電話番号を持つすべての人物と、共有連絡先 (Exchange の組織連絡先または Google の共有ドメイン連絡先)。設定 (章 14) の Microsoft 365 と Google Workspace で、サービスを選択し、必要な情報を入力し、 今すぐ確認 をクリックします。サインインして人数を数え、メールで一致する拠点を通知します。保存すると、連絡先が半分の時間以内に同期され、次に 連絡先を同期 をクリックすると、すぐに同期されます。

Microsoft 365 (アプリ登録; 管理者同意を付与できる必要があります):

  1. Entra 管理センターで、 アプリの登録、 新しい登録: BitVoice という名前、シングルテナント、リダイレクトアドレスなし。
  2. API のアクセス許可、 アクセス許可の追加、 Microsoft Graph、 アプリケーションのアクセス許可: User.Read.All、 OrgContact.Read.All、 Calendars.ReadBasic。次に、 管理者同意を付与。
  3. 証明書とシークレット、 新しいクライアントシークレット: 値をコピーします (1 回のみ表示)。
  4. BitVoice で、ディレクトリ (テナント) ID、クライアント ID、シークレットを入力します。シークレットは有効期限が切れます (Microsoft では最大 2 年): 有効期限が切れた場合、カードはシークレットが拒否されたことを示します。新しいシークレットを作成し、貼り付けます。

Google Workspace (サービスアカウント; スーパーアドミニストレータである必要があります):

  1. Google Cloud の 1 つのプロジェクトで、 People API と Google Calendar API を有効にし、 サービスアカウント を作成し、 キー (JSON) を追加します。
  2. Google Admin コンソールで、 セキュリティ、 アクセスとデータの制御、 API の制御、 ドメイン全体の委任、 新しい追加: サービスアカウントのクライアント ID、スコープ https://www.googleapis.com/auth/directory.readonly,https://www.googleapis.com/auth/calendar.freebusy。
  3. BitVoice で、キー ファイルとサービスアカウントが動作する管理者のメールアドレスを入力します。

次の情報が含まれます:

チャプター 39

カレンダーと着信拒否

Web インターフェイス内で: /extensions

拡張子は、担当者のカレンダーに従うことができます。会議中や休暇中、着信はボイスメールに転送されるか、別の拡張子または携帯電話に転送され、誰も応答しない電話に鳴ることはありません。リング グループでは、他の人が鳴り、キューでは、エージェントは 不在 として表示されます。

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

拡張子で、カレンダーと着信拒否 に、カレンダーのプライベート アドレスを貼り付けます。

確認 では、すぐに読み取り、次の忙しい時間を一覧表示します。BitVoice は各カレンダーを 5 分ごとに読み取ります。休暇 (1 日のイベントおよび Outlook の "出張中") は常にカウントされます。会議は、会議を忙しい時間としてカウント が有効になっている場合にのみカウントされます。 "無料" とマークされたイベントは、キャンセルされたイベントはカウントされません。繰り返し会議 (スキップされた発生や移動された発生を含む) は理解されます。カレンダーを読み取ることができない場合、ヘルスではその旨を表示します。

今すぐ着信拒否 では、カレンダーが何を示唆しようとも、着信を停止します。拡張子の一覧では、誰が不在で、いつまで不在かが表示されます。

プライベート アドレスは、パスワードのように機能します。誰でもそのカレンダーを読み取ることができるため、他のシークレットとともに保管されます。

すべてのカレンダーを一度に: Microsoft 365とGoogle Workspace

個別のアドレスではなく、BitVoiceはMicrosoft 365またはGoogle Workspaceからすべての人のカレンダーを読み取ることができます。設定 (章 14)でMicrosoft 365とGoogle Workspaceを設定します(手順については連絡先 (章 38)を参照)。カレンダーは不在を示すをオンにします。各拡張子は、メールアドレスによってその人にマッチングされます。個別のアドレスを持つ拡張子は、そのアドレスを使用します。この拡張子の設定(会議は忙しいとみなす、忙しいときの通話)は、個別のアドレスと同じように適用されます。

チャプター 40

モバイル アプリ

iPhone と Android 用の BitVoice アプリは、モバイル フォンを拡張番号の 1 つのフォンにします。フォン独自の呼び出し画面で鳴ります。アプリが閉じている場合でも、デスク フォンのように鳴ります。

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

プッシュの設定

閉じたアプリは、プッシュ メッセージによって呼び出されます。設定 (章 14) の モバイル アプリ で、以下のいずれかを選択します。

プッシュ必要なもの
プッシュ リレーBioDream のリレー (ホスティングまたはサポートと共に) または独自の bvpush: リレー アドレス、キー ID、シークレット
独自のアプリ独自のビルド: Apple の場合は チーム ID、バンドル ID、キー ID、キー (.p8); Google の場合は Firebase サービス アカウント (JSON)

このサーバーの https アドレスを、オフィス内のみでなく、どこからでもアクセスできるように アプリが使用するアドレス に設定します。

フォンのペアリング

  1. 拡張番号を開き、フォンを追加 を押します。
  2. アプリで QR コードをスキャンします。コードは 1 回のみ、10 分間有効です。

呼び出しが来る場合

BitVoice はアプリを起動し、フォンの独自の呼び出し画面で鳴り、他のフォンと同様に応答されます。拡張番号のページには、ペアリングされたフォンの一覧、各フォンが 呼び出しに起動できる か、最後に確認された時刻、最後に起動された時刻、プッシュの問題が表示されます。ペア解除 を押すと、フォンはすぐに鳴りません (紛失したフォンの場合)。

呼び出し中

アプリは、ダイヤラーではなく完全な拡張機能です。

その他のタブ

通話中のライブ書き起こし

通話をライブで書き出すを有効にすると(設定 (章 14)、AI)、通話の両側が話されている間に書き出され、通話中の電話に表示されます。オーディオは、通話中はスピーチツートEXTサービス(独自のコンピュータに設定されている場合)またはAIサービスに送信されます。これは、911のライブ書き起こし (章 13)と同じ書き起こしです。

チャプター 41

ビデオ通話

Web インターフェイス内で: /settings

ビデオデスク電話、ソフトフォン、ビデオドアホンなどの両方の電話機がビデオを送信する場合、ビデオは BitVoice を介して相互に送信されます。設定は不要です: Settings → ビデオ通話 がオフになっている場合を除き、常に有効です。

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

ビデオの変換

共通のビデオコーデック (ほとんどのビデオ電話機には H.264 があります) を共有する電話機とアプリは、ビデオをそのまま相互に送信します。2 つのパーティーが共通のコーデックを持たない場合 (H.264 のみのデスク電話機と VP8 のみのブラウザの場合)、Settings の H.264 と VP8 の間でビデオを変換 をオンにします: BitVoice は両方のコーデックを提供し、各パーティーに独自のコーデックで応答し、ffmpeg で変換します。ffmpeg はサーバーにインストールする必要があります (apt install ffmpeg、brew install ffmpeg; またはパスを指定)。変換には約 1 つのプロセッサコアが必要であり、わずかな遅延が発生するため、デフォルトではオフになっています。必要な場合のみ使用されます。Settings では、ffmpeg が見つかったかどうかが表示されます。

チャプター 42

ファクス:送信と受信、ファクス機とアナログ電話

Web インターフェイス内で: /faxes

ファクス機、アナログ電話、ドアフォン、古い回線は、SIPゲートウェイ(またはBitVoiceコンピュータ内のテレフォニーカード;テレフォニーカード (章 6)を参照)を介して接続します:ATA(Grandstream HTシリーズ、1つまたは2つのアナログ電話またはファクス機)、または、大きなゲートウェイ(Patton SmartNode、AudioCodes MediaPackおよびMediant)を使用して、多くのアナログポート、ISDN回線(BRI/PRI)、または古いアナログ回線(FXO)を接続します。各ポートは、電話と同様に、BitVoiceに拡張子として登録されます。

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

ファクシミリを受信する。ファクシミリで、ファクシミリ番号(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) と表示されます。

信頼性の高いファクシミリのために:

チャプター 43

受信トレイ: Web チャット、WhatsApp、Messenger

Web インターフェイス内で: /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

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 のアプリで開くことができます。

自動応答 が設定されている場合、すべての新しい会話の最初のメッセージにすぐに回答します。

チャプター 44

ビジネス テキスト (SMS)

Web インターフェイス内で: /texts

ビジネス番号からテキスト メッセージを送受信します: テキスト。テキストはテキスト プロバイダーを介して送信されます。組み込み: TextMagic、Twilio、SignalWire、Telnyx、Bandwidth、Vonage、Plivo、Flowroute、VoIP.ms、さらに 独自の Webhook で任意のサービスまたは独自のゲートウェイ。プロバイダー アカウントは同時に複数使用できます。各番号はどのプロバイダーを使用するかを示します。

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

設定

  1. プロバイダーのポータルで、アカウントの API 詳細を確認します。フォームでは、プロバイダーがそれらを呼ぶもの (Twilio: アカウント SID と認証トークン; Telnyx: API キー; Bandwidth: API ユーザー、パスワード、アカウント ID、メッセージング アプリケーション ID; SignalWire: またスペース アドレス) を尋ね、どこで見つけるかを示します。
  2. テキスト で、テキスト設定 を開き、プロバイダーを追加し、保存します。BitVoice は受信テキスト用のアドレスを表示します: これをプロバイダーで受信メッセージを送信するアドレス (コールバック、Webhook、またはメッセージ URL) として設定します。VoIP.ms の場合は、アドレスの末尾に ?from={FROM}&to={TO}&message={MESSAGE}&id={ID} を追加します。同じアドレスに送信された配信レシートは無視されます。BitVoice はインターネットからアクセス可能である必要があります。
  3. テキストを送信する番号 (国コードを含む) と、どのプロバイダーを使用するか、受信時にメールで通知する拡張子を追加します。

US 10DLC

USキャリアは、登録されていない通常の事業用番号からのテキストメッセージをブロックします。テキストメッセージプロバイダーでブランドとキャンペーンを登録し、Textsのチェックリストでステータスを追跡し、サンプルメッセージにキャリアが期待するオプトアウトワードが不足している場合に警告します。

会話

各会話では、誰から(Contactsから)、未読のテキスト、スレッドが表示されます。Enterキーで送信します。カウンタでは、長いメッセージが何個のテキストメッセージになるかが表示されます。誰かがSTOPと返信すると、その番号からさらにメッセージを送信することはできなくなります。受信したテキストメッセージも、BitVoiceの通知として表示されます。

チャプター 45

転送ブリーフィング

Web インターフェイス内で: /settings

呼び出し先が自分で説明する必要がないように:転送される呼び出しのブリーフィングをオンにすると(設定、AI)、呼び出しが転送されたときに、BitVoiceは呼び出し先に対して、呼び出しの要約(呼び出し元、要望、約束事項など)を2文で書きます。これは、ブラウザーホン、Live calls (章 46)、およびデスクフォンのスクリーン(SIPメッセージを表示する電話機の場合)に表示されます。

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

AIレセプションが呼び出しを担当者に渡した場合も、ブリーフィングは呼び出し先に表示されます。

これにはAIサービスと音声認識モデル(設定、AI)が必要であり、呼び出しのオーディオデータ(最大5分間)がサービスに送信されて書き出されます。要約には数秒かかりますが、電話が鳴り始めた直後に表示される場合があります。

パート 4

顧客と洞察

誰が呼んだか、およびどのように行われたかを知る: ライブ通話および履歴、顧客タイムライン、CRM、録音および同意、品質、コスト、および発信者 ID の評判。

チャプター 46

進行中の通話

Web インターフェイス内で: /calls

進行中の通話は、進行中のすべての通話を、発生するたびに更新して表示します。誰が誰に電話したか、どのくらい長く続いているか、そのコーデック、品質です。

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

管理者ができること

アクション内容
切断通話を両側で終了する
ドアを開けるドアステーションからの通話の場合
録音を一時停止カード番号の場合: 一時停止した部分は録音では無音で、履歴にマークされます (通話の録音 (章 51))
聞く通話を静かに聞く
ささやくエージェントだけに話す; 呼び出し元は聞こえません
参加通話に参加する; すべての人があなたの声を聞きます

聞く、ささやく、または参加するには、監視を押し、電話からで使用する電話を選択し、私に呼びかけるを押します。電話が鳴り、応答すると通話に参加します。参加中は、聞く、ささやく、参加するのを切り替えることができます。

その他の表示

通話が終了すると、通話履歴 (章 47)に移動します。

チャプター 47

通話履歴

Web インターフェイス内で: /history

終了したすべての通話: 誰が誰に電話したか、いつ、どのくらい長く続いたか、どのように終了したか。列を並べ替え、録音を再生(カード番号の場合、一時停止がマークされます)、リストをCSVとしてダウンロードします。レコードを保持する期間は、設定、通話の録音で設定できます。法的保持 (章 73)により、長期間保持されます。

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

ルーティングの経路

各通話結果の下の ルーティングの経路 では、平易な言葉と順序で、通話がどのようにルーティングされたかが記載されています。受信ルート、スケジュールの開閉状態と時間、トグルボタンの状態、ルーティングスクリプトの選択(またはフォールバックの選択)、メニューのキー入力、不在者、電話未接続者、応答なし、発信ルートとトランクの使用(およびヘルスジャッジが他のトランクの後ろに移動したトランク)、通話の録音に対する同意ルールの適用などが記載されます。

品質、音質、暗号化

品質 列には、各応答通話のスコア(MOS、5点満点)と、該当する場合は2つのマークが表示されます。

トランスクリプトと検索

AIが有効で、録音通話のトランスクリプトを取得 が有効(設定、AI)になっている場合、各録音通話は、要約とアクションアイテム(誰かが同意したことや依頼されたこと)とともに書き出されます。各通話の側面は、録音から個別に書き出されるため、トランスクリプトでは誰が何を言ったか、いつ言ったかがわかります。録音の隣にあるトランスクリプトボタンを開くと、トランスクリプトが開きます。管理者は、個別の通話をトランスクリプト化したり、再度トランスクリプト化したりできます。

発言を検索 では、トランスクリプト、要約、行動アイテムから通話を検索できます。録音された通話のみがトランスクリプト化されます。トランスクリプトは、録音とともに削除され、トランスクリプトの読み取りまたは検索は、録音の再生と同様に、監査ログに記録されます。

チャプター 48

顧客タイムライン

Web インターフェイス内で: /timeline

顧客タイムラインでは、1 つの電話番号に関するすべての情報が、過去 1 年間で最新のものから表示され、受け答えする人が全体像を把握できるようになります。

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

表示されるもの

項目内容
通話受け手にした人、通話時間、音声テキスト、要約、録音、テキスト
ボイスメール要約
テキスト相手とのやり取り
コールバック要求されたものと、実行状況
ノートチームの独自ノート

番号はどのように書かれても一致します: +1 212 555 0100 と 2125550100 は同じです。

開く

呼び出しカード (タイムライン) から、連絡先から、着信履歴の着信から、テキスト会話から、または タイムライン (章 48) の上部で番号を入力して開きます。

ノート

管理者は チーム用ノートを追加 できます: タイムラインに表示され、誰が書き込んだかといつ書き込んだかがわかり、削除も可能です。

チャプター 49

CRM: 呼び出し先カードと通話ログ

Web インターフェイス内で: /settings

設定 (章 14) の CRM で、顧客システムを接続します。Web アドレスを持つ任意のシステムと連携できます。各製品ごとにコードを書く必要はありません。

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

呼び出し先カード

外部からの通話が着信中、ライブ通話でカードが表示されます。カードには、呼び出し先が誰であるか (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キーによる認証)が、連絡先と口座を読み取ることができるロールで、次のように設定します。

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回再試行されます。まだ失敗する場合は、ヘルスチェックで通知されます。テストイベントを送信は、アドレスとシークレットを確認します。

チャプター 50

コール インサイト (呼び出し分析) for 監督者

Web インターフェイス内で: /quality

コンタクト センター向け: 監督者が聞くための、呼び出しに関する証拠。自動スコアリングではありません。

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

呼び出しの トランスクリプト では、どのように進行したか が表示されます。これは、録音の音だけから測定されます: 各側がどれだけ話したか、各側の最長の連続した話し手、どれだけの頻度で各側が話し始めたか、どれだけの時間両側が同時に話したか、および静かな時間 (長い沈黙は通常、ホールドまたは空気です)。

トランスクリプトされた呼び出しの進行状況をメモする (設定、AI) が有効になっている場合、AI もトランスクリプトを読み取り、呼び出し者の最初と最後の様子、および最大 6 つの瞬間 (うまくいった、確認する (呼び出し者に話しかけたり、長いホールド、不明な回答)、回答されなかった (呼び出し者が質問したが回答されなかった質問)、および 約束した (誰かが行うと言ったこと)) を示します。各瞬間には、時間と発言された言葉が表示されます。管理者は、トランスクリプトされた呼び出しに対して この呼び出しを確認する を要求できます。

コール品質 (章 50) の 会話、担当者別 では、期間中のトランスクリプトされた呼び出しが、担当者ごとにまとめられます: 話し手のシェア、最長の連続した話し手、呼び出し者に話しかけた頻度、静かな時間、呼び出し者が不機嫌な状態で終了した呼び出し、およびフラグ付きの瞬間。呼び出しを聞くために選択するために使用します。ランキングには使用しないでください。

コーチング ノート では、呼び出しについてのあなたの言葉を、関連する瞬間に記述できます。 どのように進行したか の下で、瞬間 (1:05、または開始時点の場合は空のまま) と コーチング ノート を記入し、ノートを追加 を押します。ノートは、呼び出し順に、誰が書き、いつ書いたかとともに表示されます。管理者はノートを書き込みまたは削除し、ビューアーはトランスクリプトとともにノートを読み取り、ノートの追加または削除は監査ログに記録されます。ノートは録音とともに保存されます。録音の保持と法的保持もノートをカバーします。コール品質の コーチング ノート では、担当者ごとのノート数をカウントします。

チャプター 51

通話の録音とカードの支払い

録音は 設定 (章 14) で 通話の録音 を設定します: オフ、すべての通話、または 通話を録音する というマークの付いた拡張子の通話のみ。録音は 通話履歴 (章 47) から再生され、AI を有効にすると書き出され、要約されます。

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

告知

一部の場所では、通話の全員に録音されていることを知らせる必要があります: 告知, ビープ, および地域ごとのルールは、録音の同意 (章 52)に記載されています。

カード支払い(PCI DSS)

カード番号は録音に保持してはいけません。呼び出し先が番号を読み上げる前に、拡張子の人物は *7 を押します。 *8 で録音を再開します。 ライブ通話 (章 46) の 録音を一時停止 も同じ効果があります。 一時停止された部分は録音では無音となり、通話履歴にも記載されるため、監査員はどこで、どのくらいの時間一時停止されたかを確認できます。

会議室

会議室の録音 を有効にした部屋は、1 つの部屋全体の録音として保持されます (会議室 (章 34))。

保存期間

設定により、録音、通話履歴、ボイスメールの保存期間を設定できます。古いものは 1 時間以内に自動的に削除されます。 法的保留 (章 73) されているものは、保存期間に関係なく保持されます。 アーカイブ (章 72) を使用すると、コピーを別の場所に保存できます。

管理者と閲覧者は録音を再生し、トランスクリプトを読むことができます。ただし、管理者だけが通話をトランスクリプト化したり、再度トランスクリプト化したりできます。 録音を再生したり、トランスクリプトを読んだりしたことは監査ログに記録されます。

チャプター 53

通話品質

Web インターフェイス内で: /quality

BitVoice が各通話の両側で受信した音質、過去 1 日、1 週間、1 か月、または 90 日間から。 電話は サイト (章 12) (または「サイトなし」) によってグループ化され、外部からの通話はプロバイダーのラインによってグループ化されます。

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

各地点は、その地点の通話状況、平均スコア(MOS、5点満点:4以上は良好、3.6未満は音質が悪い)、到達しなかった音パケットの割合、ジッター(不均一な遅延)を表示します。その下に、BitVoiceは問題点を平易な言葉で説明します。たとえば、「本社のネットワークでのパケットロス:3.2%の音が到達しなかった、主に14:00〜16:00の間」というように、確認すべき点を示します。バー図は、1時間ごとの音のロスを示します。

診断は、同じ通話の2つの半分を比較します。サイトの電話からの音と、同じ通話が通過したプロバイダからの音。当該半分がクリーンに到達した場合、ロスは当該地点の側にあると判断され、当該地点はその旨を示します。当該半分が両方とも音をロスした場合、当該地点は単独で非難されるべきではなく、当該システムの独自のインターネットリンクを指します。当該地点がすべて同時に音をロスした場合、原因は同様に共通のものです。これがどのように決定されたか は、理由を段階的にリストします(コール品質ルールブック、セキュリティ (章 60) を参照、「BitVoiceが決定する方法」)。3回未満の通話がある地点は、判断されません。通話ごとの品質は、通話履歴 (章 47) (品質列)および、通話中は ライブ通話 (章 46) にも表示されます。

一方から全く音が到達しなかった通話は、別途 音なし の下に数えられ、先頭に表示されます。これは、音質が悪いことではなく、音が到達しなかったことを示し、ほぼ常にファイアウォールまたはNATルーターがSIPを許可し、メディアをブロックしていることを意味します。当該地点のアドバイスは、確認すべき点を示します(プロバイダーの場合、メディアアドレス範囲)。

チャプター 54

コストと予算

Web インターフェイス内で: /costs

BitVoice は、プロバイダーが課金する金額に基づいて各通話の価格を算出し、月ごとの支出を部門、人物、トランク別に表示し、最も高価な通話を表示します。

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

価格

トランク (章 7) でトランクを開き、通話価格 を開きます。 各価格は、プロバイダーに送信される数字 (数字のみ、例: 44 はイギリス、1900 は米国の有料番号) で始まる番号をカバーします。 一致する最長の価格が勝ちます。 数字がなければ、すべての他の番号に適用されます。 分당価格、応答した通話ごとの課金、請求ステップ (60 秒、6 秒、または 1 秒の細かいステップ) および最小価格を入力します。 着信通話、分당 は、受信するための無料番号の価格です。 どのくらいの価格になるか は、誰かが番号をダイヤルする前に確認します。 通貨はコストで設定されます。

通話のコストは、終了時に固定され、当時の価格で計算されます。 価格の変更は過去の通話のコストを変更しません。 コストでは、価格のない応答した通話の数が表示されます。

部門と予算

拡張子に 部門 (拡張子内) を割り当てます。 コストで、すべての通話または 1 つの部門の予算を追加します: アラートが BitVoice に表示され、予算のアドレスとアラート アドレスにメールが送信されます (80% と 100% の両方で)。

アラーム

1 時間あたりの発信コストがこの金額を超える は、発信通話が 1 時間以内にその金額を超えたときにアラートを引き起こします。 高価な通話の突然の連続は、通常、通話料金詐欺 (盗まれた電話パスワード) の兆候です: 通話履歴を確認し、次に拡張子またはトランクを無効にします。

チャプター 55

発信者IDの評判とブランド化された通話

Web インターフェイス内で: /reputation

電話会社は、Spamフィルターを実行し、ビジネス番号を「スパムが可能」またはブロックすることができます。その場合、ほとんどの人が応答しません。発信者IDの評判は、自分の通話から各発信番号の評判を監視し、次の点についてプレーンテキストで説明します:

20回未満の通話を持つ番号は、評価するには十分な数の通話がないと表示されます。

発信番号 では、各番号に 名前 (発信者の名前として送信される)、 呼び出し理由 、および ロゴ (https:// 画像) を割り当てることができます。 ブランド化された発信者 ID を送信 が有効になっているトランクでは、ロゴと理由は富豪な呼び出しデータ (RFC 9796 Call-Info) として送信され、ブランド化された呼び出しをサポートするキャリアでは、呼び出された電話に表示されます。ほとんどの電話では、代わりにプロバイダーが設定する呼び出し者名 (CNAM) データベースからの名前が表示されます: プロバイダーに問い合わせてください。 監視 では、監視対象の番号がラベル付けされたように見え始めたときに、ヘルスに警告を表示します。

ページには、番号がラベル付けされたときに実行する必要のある手順も記載されています。

チャプター 56

スパム保護とSTIR/SHAKEN

Web インターフェイス内で: /settings

米国とカナダでは、呼び出しの開始プロバイダーが呼び出し元ID(STIR/SHAKEN)に署名します:Aはプロバイダーが呼び出し元が番号を使用できることを確認した場合、Bはプロバイダーが呼び出し元を確認したが番号が不明な場合、Cはプロバイダーが呼び出しを転送した場合です。プロバイダーはBitVoiceにその判定(verstat)を通知するか、署名付きのIdentityヘッダーを渡します。BitVoiceは署名、1分以内に発行されたか、呼び出しの番号が記載されているかを確認します。判定は検証済み、部分的に検証済み、検証されていない、または未検証として、Live callsおよびCall historyに表示されます。

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

設定のスパム保護で、呼び出し元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) を指定します。スパムと判断された呼び出し先の処理方法を選択します: ラベル付きで鳴らす、ロボットテスト、または拒否します。

最後の発信者をブロックする

望ましくない呼び出しを受けた直後、電話機から *32 (機能コード (章 32)) をダイヤルします。最後の 1 日間に電話機に鳴った外部番号がブロックリストに追加され、電話機は番号を読みます。常に許可される番号はブロックされず、電話機はその旨を通知します。各ブロックは監査ログに記録され、ブロックした人物が記載されます。

呼び出し履歴から提案する

BitVoice は、外部からの呼び出し履歴を最後の 30 日間読み取り、繰り返し呼び出しを行う番号を特定します。3 回以上の呼び出し、ほとんどの呼び出しが 10 秒以内に終了、または 2 回のロボットテストに失敗し、実際の会話 (30 秒以上話す) がない場合、その番号は提案されます。既知の番号は除外されます。各番号には理由が付いています。 ブロック をクリックすると、ブロックリストに追加され、 スパムではない をクリックすると、もう二度と提案されません。誰かが明示的にブロックするまで、番号はブロックされません。

STI認証局に対する証明書の確認には、証明書をSTI認証局の下に貼り付けます。証明書がなければ、BitVoiceは呼び出しが証明書で署名されていることを確認しますが、証明書が発行された認証局については確認しません。

自分の通話に署名する

ほとんどのプロバイダーは、顧客の通話に署名します。署名を許可するプロバイダー (または BitVoice を実行しているプロバイダー) の場合、トランク (トランク (章 7)) の 呼び出し元 ID に署名 を有効にし、STI 証明書 (STI 認証局から発行されたサービス プロバイダー コード トークンを含む) とその 秘密キー (P-256) を指定します。 トランクを介して外部に出るすべての通話には、署名付きの Identity ヘッダー (ES256、SHAKEN 要求) が付加されます。

パート 5

BitVoice の実行

安全性と稼働の維持: 管理者とサインイン、セキュリティ、変更と更新、複数のサーバー、ホストされた組織、コーデック、Teams、インポート、自動化、および障害の検出ツール。

チャプター 57

管理者

Web インターフェイス内で: /users

管理者は、このWebインターフェイスにサインインする人々です。自分自身のコールのみを管理するスタッフは、代わりにスタッフポータルを使用し、ここでのアカウントは必要ありません (スタッフポータル (章 33))。

ロール

ロール可能性
管理者何でも変更可能、録音を再生する、すべてのシークレットフィールドの存在を表示する (値は表示されません)
ビューアー何でも表示可能、変更不可; シークレットは非表示

ロールまたはパスワードの変更は、すべての場所で同時にサインアウトします。

2段階認証

各人は、自分自身の2段階認証を有効にします: 設定 で認証アプリのキーが表示され、コードを入力すると有効になります。その後、サインイン時にパスワードに加えてコードも要求されます。無効にするには、パスワードが必要です。

シングルサインオン

シングルサインオン (設定) を使用すると、人々は組織のアカウント (Microsoft Entra、Google、Okta、OpenID Connectプロバイダー) でサインインし、最初のサインイン時にアカウントが作成されます。 シングルサインオン (章 58) を参照してください。

APIトークン

プログラム (Terraform、スクリプト) は、パスワードの代わりにAPIトークンを使用します。これは、このページで作成され、1回だけ表示され、いつでも取り消すことができます。各トークンは、管理者またはビューアーです。名前を指定して人物を表す (CADの場合) を使用して作成されたトークンは、X-BitVoice-On-Behalf-Of ヘッダーを含むことができ、レコードにはその人物の名前が表示されます (911コール (章 77))。

チャプター 58

シングルサインオン

シングルサインオンは、OpenID Connectプロバイダー (Microsoft Entra ID、Google、Okta、Keycloakなど) を通じて、ユーザーがBitVoiceにサインインできるようにします。組織を離れると、アクセスも削除されます。

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

設定

設定 (章 14)で、シングルサインオン:

  1. プロバイダーにアプリケーションを登録し、ここに表示されるリダイレクトアドレスを使用します。
  2. プロバイダーを設定により、一般的なプロバイダーの発行者を設定します。プロバイダーのクライアントIDとクライアントシークレットをコピーします。
  3. プロバイダーの管理者グループとビューアーグループの名前を付けます。グループクレームは、プロバイダーがこれらのグループを配置する場所 (groups であるか、設定されている場合) です。
  4. オプションで、サインインページのボタンテキストを変更します。
  5. シングルサインオンを使用をオンにします。

動作方法

チャプター 59

会社ディレクトリ (Active Directory と LDAP)

BitVoice は、会社ディレクトリ、Active Directory、または別の LDAP サーバー (OpenLDAP、Samba、389 Directory Server、FreeIPA) を読み取ることができます: 電話番号を持つ人は拡張機能になり、ディレクトリ グループは呼び出しグループを満たします。また、ディレクトリ パスワードで Web インターフェイスにサインインします。BitVoice はディレクトリを読み取るだけであり、決して書き込まない。

接続

設定 (章 14)で、会社ディレクトリ:

  1. Active Directory または OpenLDAP または別の LDAP サーバー を選択します: これにより、読み取られる属性 (sAMAccountName または uid を使用したサインイン名、displayName または cn、メール、電話番号) が設定されます。これらのいずれかをそのボックスで変更します。
  2. サーバー: ldaps://dc1.example.com (ポート 636)、または StartTLS をオンにした ldap://...。平文の LDAP は、サーバーがこのコンピューター以外の場合、拒否されます (パスワードが暗号化されずにネットワークを渡るため)。サーバーの証明書が独自の証明機関から来ている場合、会社証明機関に貼り付けます。
  3. 読み取りアカウントとそのパスワード: 人とグループを読み取ることが許可されたアカウント (reader@example.com on Active Directory)。パスワードは、キーボールト参照 (設定、キーボールト) になる場合があります。
  4. ベース DN: 人とグループが配置されている場所 (dc=example,dc=com)。どの人は、LDAP フィルターを使用してこれらの範囲を狭めます。Active Directory では、無効なアカウントは常に除外されます。
  5. テストは、読み取りアカウントでサインインし、すべてのユーザーを読み取り、変更を加えずに実行します: これは、見つかった人の数、電話番号を持つ人の数、および各人が取得する拡張機能を示します。

拡張番号と呼び出しグループ

サインイン

ここでディレクトリ名とパスワードでサインインをオンにすると、サインインページは BitVoice のアカウントに加えてディレクトリ名とパスワードを受け付けます:

チャプター 60

セキュリティ

Web インターフェイス内で: /security

インターネット上の電話システムは、数時間以内に攻撃される: スキャナーがすべてのSIPポートのパスワードを試み、侵入されたシステムはプレミアム番号への呼び出しを実行します。BitVoiceは、デフォルトでこれに対して耐性を持っています。

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

パスワードの推測に対して

不正アクセスに対して

通話詐欺防止

設定でオンにします。国外への呼び出し (プラス記号、00、または011、北米以外の国で+1を共有する国、たとえばジャマイカ) は、呼び出し前に判断されます:

状況行動
90日以内に同じ国への呼び出し許可
90日以内に同じ国への最初の呼び出し許可、報告
営業時間外、または外部からの呼び出し (ダイヤルイン、転送)PINの要求 (未設定の場合、拒否)
1つの拡張子からの10分間の国外への呼び出し拒否
パスワードの推測中に国外への最初の呼び出し (1時間以内に3回の失敗、または禁止)拒否
緊急番号常に許可

常に許可される国 (国コード、たとえば44) と 例外 (1つの拡張子が1日間、旅行のために) は、「最初の呼び出し」と「営業時間外」を取り消します。ただし、多数の呼び出しや攻撃は、承認されたように見えるため、許可されません。呼び出し履歴が読み取れない場合、防止は、最初の呼び出しであるかどうかを判断できません。何かが測定されていない場合、安全ではありません。PINの要求を行います。すべての判断は、セキュリティ (章 60) に理由とともにリストされ、呼び出し履歴 (章 47) の呼び出しレコードにも表示されます。

BitVoiceの判断方法

BitVoiceの判断者 (通話詐欺防止、トランクヘルス判断、呼び出し品質診断、911呼び出し位置チェック) は、それぞれ ルールブック に従います: 測定された事実、支持される結論、例外、選択肢。BitVoiceの判断方法、セキュリティ (章 60) に表示されます。判断者が保持するルール:

暗号化

誰が何ができるか

チャプター 61

変更、バックアップ、インポート

Web インターフェイス内で: /changes

保存されたすべての変更は、番号、変更者、日時、概要を含むリビジョンです。設定の内容は決して失われることはありません。

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

リビジョンの比較と復元

エクスポートとインポート

同時変更

2 人以上の管理者が同時に同じ設定を編集することはできません。2 回目の保存は拒否され、メッセージが表示され、内容は失われません。

チャプター 62

更新

Web インターフェイス内で: /updates

BitVoiceの更新は、1回のクリックで安全に行えます。新しいバージョンを確認し、古いバージョンの隣にインストールし、新しいバージョンが起動しない場合は自動的に元に戻ります。

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

更新のインストール

  1. 新しいリリースをダウンロードして解凍します。プログラムの隣に、BioDreamからの署名ファイル(bitvoice.sigまたはWindowsのbitvoice.exe.sig)があります。
  2. 更新 (章 62)で、プログラムと.sigファイルをアップロードします。
  3. インストールを押します。デフォルトでは、BitVoiceは通話が進行中でないことを待ちますが、すぐにインストールすることもできます。
  4. BitVoiceは新しいバージョンで再起動します。複数のサーバーがある場合、進行中の通話は別のサーバーに引き継がれ、続行されます。

元に戻す

前のバージョンは保持されます。元に戻すをクリックすると、1回のクリックで前のバージョンに戻ります。新しいバージョンが2回起動に失敗した場合、または1分間起動しない場合、自動的に前のバージョンに置き換えられます。

署名

v0.1.3以降のすべてのリリースには、BioDreamのリリースキーが含まれています。BioDreamの署名付きプログラムのみがインストールされます。署名のないファイル、他の人の署名付きファイル、または1バイトだけ変更されたファイルは、署名が一致しませんというエラーで拒否されます。ページには、このビルドがチェックされるかどうか(必須)が表示されます。

構成更新を許可
リリース版 (v0.1.3 以降)BioDream によって署名されたプログラムのみ
v0.1.2 以前、または独自ビルドすべてのプログラム: キーなしの場合、.sig ファイルはチェックできず、無視されます
チャプター 63

複数のサーバーを1つの電話システムとして

Web インターフェイス内で: /servers

2つ以上のBitVoiceサーバーが1つのPostgreSQLデータベースを共有することで、1つの電話システムとして動作します:

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

設定

  1. 最初のサーバーのデータをPostgreSQLに移動します: 設定、データベース。
  2. 各サーバーを同じデータベースで起動します: bitvoice -database postgres://… (またはBITVOICE_DATABASE環境変数)。すぐに参加します。サーバーにリストされます。
  3. サーバーで、各サーバーがどこからアクセスできるか (ネットワーク内のアドレスとSIPポート) を確認し、名前を付けます。各サーバーがインターネットからアクセスできる独自のアドレス (クラウドサーバー、パブリックIP、共有アドレスなし) がある場合は、独自のパブリックアドレスも設定します: プロバイダーと外部の電話は、そのアドレスを使用します。空の場合、サーバーは設定内のパブリックアドレスを使用します。
  4. 電話にサーバーを見つける方法を教えます (以下)。
  5. プロバイダー線 (以下)。

電話がサーバーを見つける方法。BitVoiceが設定した電話 (Yealink、Polycom、Grandstream) は、別の実行中のサーバーをバックアップとして自動的に設定します。他の電話 (Snom、手動設定) の場合は、サーバー上的の以下のいずれかを使用します:

プロバイダー線。各トランク内のサーバー間で共有は、以下の方法で設定します:

サーバーが停止した場合

サーバー間。サーバーは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)にあります。

チャプター 64

データを保存する場所(SQLiteまたはPostgreSQL)

Web インターフェイス内で: /settings

BitVoiceは、設定とその保存されたバージョン、ユーザー、連絡先、通話レコード、監査ログ、テキスト、ノート、トランスクリプトをデータベースに保存します。録音とボイスメールは、データフォルダー内の音声ファイルとして残ります。

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

このサーバーの独自のファイル(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に移動します。

チャプター 65

他の組織のホスティング

Web インターフェイス内で: /tenants

1 つの BitVoice で複数の組織をホストできます。各組織は独自の電話システムです: 独自の拡張子、番号、トランク、ルート、管理者、ボイスメール、録音、通話履歴。各組織は他の組織のものを見ることはできません。共有されるのは、このサーバーの SIP ポート、IAX2 ポート、メディア ポートのみです。

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

いつ使用するか

メイン システムは組織の 1 つです: このサーバーが設定されたときの組織。メイン システムの管理者は他の組織を管理します。

組織の追加

  1. 組織 (章 65) を開き、組織の追加 を押します。
  2. 組織の 名前 と 短い名前 (小文字の文字、数字、ハイフン) を入力します。短い名前はその Web アドレス (/t/acme/) と電話のサインイン (acme.100) の一部です。後で変更することはできません。
  3. 任意で、組織の 独自のドメイン (例: pbx.acme.example) を設定します。このドメインはこのサーバーを指します。電話はこのドメインに登録され、管理者はブラウザーで開きます。
  4. 組織の 最初の管理者 を設定します: ユーザー名、少なくとも 12 文字のパスワード、国です。
  5. 任意で 制限 を設定します。

組織はすぐに空の電話システムで開始され、管理者が はじめに (章 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>) に移動します。したがって、ミスは手動で修正できます。

チャプター 66

コーデックと音声

コーデックは、電話での音声をデータに変換する方法です。電話、ブラウザー、キャリアはそれぞれいくつかのコーデックをサポートしています。BitVoiceは、2つのパーティーが異なるコーデックを使用する場合に、どのコーデックでも変換を行うため、すべてのパーティーが通信できます。両方のパーティーが同じコーデックを使用する場合、音声は変更せずに通過します。

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

コーデック

コーデック音声帯域幅使用
G.722HD (ワイドバンド)64 kbit/s大多数のデスク電話: それらの間で最良の選択
G.711 µ-law電話64 kbit/s北米と日本; すべてのキャリア
G.711 A-law電話64 kbit/s世界の他の地域
OpusHD、損失に対応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/sDECTベース、古いゲートウェイ
G.726 (24 kbit/s)32と16の間24 kbit/s一部のDECTシステム
G.726 (16 kbit/s)粗い16 kbit/s非常に薄いリンク
AMR-WB (G.722.2)HD6.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/sPolycom電話、ビデオと会議電話
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なしで送信されます。

サウンドクリーンアップ

サウンドクリーンアップ (設定)は、ボイスメールと、必要に応じて通話中にも、定常的な背景ノイズを低減し、レベルを均一にします。

チャプター 67

Microsoft Teams(Direct Routing)

Web インターフェイス内で: /trunks

BitVoiceは、Microsoft Teamsテナントのセッションボーダーコントローラー(SBC)として機能できます。TeamsユーザーはBitVoiceの拡張子を呼び出し、BitVoiceは電話回線を呼び出します。

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

必要なもの:Microsoft 365テナントが検証したドメイン内のこのサーバーの公開名(sbc.example.com)、52.112.0.0/14および52.120.0.0/14のMicrosoftネットワークへの両方向の5061ポートの開放、および公開名の公開認証局からの証明書。TeamsユーザーにはPhone Systemライセンスが必要です。

手順

  1. 設定、証明書: 証明書とその秘密鍵(PEM)をインストールします。すぐに使用され、このインターフェイスとSIP over TLSの両方で使用され、BitVoiceはMicrosoftに提示します。
  2. トランク、追加: Microsoft Teamsから開始します。サーバーの公開名を入力します。ドロワーは証明書がそれをカバーしているかどうかを示します。
  3. ドロワーが表示するPowerShellをコピーし、Teams管理者として実行します。SBC (New-CsOnlinePSTNGateway)を追加し、音声ルートとポリシー、および短い拡張番号がダイヤルされたままBitVoiceに到達するためのダイヤルプランルールを追加します。次に、各Teamsユーザーにポリシーと番号を割り当てます。
  4. 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リストに含まれていません。

チャプター 68

インポート

Web インターフェイス内で: /import

FreePBX、Asterisk、または 3CX から、内部番号、リング グループ、キュー、トランクをインポートします。Cisco、Avaya、Mitel から、ユーザー、ハント グループ、SIP トランク、受信番号、ダイヤル パターンをインポートします。エクスポートされたファイルをアップロードします (複数のファイルを一度にアップロードできます。.zip または .tar ファイルも使用できます)。BitVoice は、適用される変更を正確に表示し、インポートは 変更 (章 61) で取り消すことができるリビジョンになります。

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

FreePBX から移行

最も適切なファイルは、FreePBX のバックアップです。すべて、SIP パスワードを含みます。

  1. FreePBX で、管理 → バックアップと復元 → バックアップの追加 に移動します。少なくとも コア、リング グループ、キュー、ボイスメール (すべてのモジュール) を選択し、保存して、実行 をクリックします。
  2. バックアップ ファイルをその行からダウンロードします (ファイル名は 20261001-100000-1790000000-17.0.19-1234567.tar.gz のようになります)。
  3. BitVoice を新しいサーバーにインストールし、FreePBX で使用されていない 1 つの内部番号 (たとえば 199) と電話線なしで設定を完了します。インポートにより、電話線が追加されます。
  4. インポート (章 68) で、.tar.gz ファイルをそのままドロップします。プレビューを読みます: 警告は、インポートできないすべての項目をリストします。
  5. 追加 を選択します。これは、変更 (章 61) に 1 つのリビジョンとして表示されます。何かが間違っているように見える場合は、そこで取り消し、再度インポートします。
  6. 電話を移動します: 各電話を BitVoice (または 電話 (章 4) からプロビジョニング) に指し、同じ内部番号と SIP パスワードを使用します。
  7. 内線および外線の通話をテストし、最後にキャリアの登録 (または番号 ポーティング) を移動します。

実際のシステムで試しました: FreePBX 17.0.33 (公式の Debian 12 インストール) で、4 つの内部番号とボイスメール、PJSIP トランク (登録あり)、2 つのアウトバウンド ルート (1 つはダイヤル プレフィックスあり)、リング グループ、ペナルティ付きキュー、3 つの DIDs、すべてのモジュールが選択された Backup & Restore によるバックアップです。バックアップは 70 MB で、ほとんどがサウンド ファイルと通話履歴です: BitVoice はそれを読み込み、構成のみを保持します。最大 512 MB のバックアップをアップロードできます。すべてがインポートされました: パスワード、ボイスメール PIN とメール、トランクの登録とコーデック、ルートとそのプレフィックス、リング グループのボイスメール (応答なし)、キューのペナルティと DIDs、グループ、キュー、内部番号。

インポートされるもの:

インポートされないもの、プレビューで表示されるもの: IVR、時間条件、発表、フォローミー、カスタム トランクとコンテキスト、ルートのコーラー ID 一致、リング グループの外部番号。これらは、メニュー (章 21)、スケジュール (章 26) および内部番号の フォローミー で構築します。FreePBX 13 以前のバージョンおよび mysqldump asterisk による FreePBX データベースのプレーン バックアップも、同じ方法で読み取ります。

他のシステム

各エクスポートは以下の通りです:

グループとルート。人々のファイルとともにアップロードしてください。各グループのメンバーは番号または名前で見つけることができます:

これらのエクスポートから得られるトランクは、初期状態ではオフになっており、パスワードがありません。ルートは同じ名前のインポートトランクで出力されます。トランクが存在しないルートは除外され、通知されます。ローテーティングとロングアイドルリングは、リンググループよりもキューに近いです: プレビューではそう表示されますので、キューにすることができます。

これらのエクスポート (FreePBX のバックアップを除く) には SIP パスワードが含まれていないため、各拡張機能には新しいパスワードが割り当てられます。ボイスメール PIN、名前、電子メールアドレスは、エクスポートに含まれている場合にのみ移行されます。Cisco、Avaya H.323/DCP、Mitel の電話機は、それぞれのメーカーの独自ソフトウェアを実行しており、BitVoice によって設定することはできません: インポートでは、リストされている電話機の数が表示されます。Cisco の電話機は、Cisco のマルチプラットフォーム (SIP) ファームウェアで再フラッシュできます。Avaya J100 および Mitel 6800/6900 の電話機は、SIP モードで手動で BitVoice に登録できます。

チャプター 69

コードとしての構成

すべての画面操作はBitVoiceのREST APIを介して行われるため、すべての操作をスクリプト化したり、Gitに保存したり、Terraformで管理したりできます。APIは、/api/openapi.json (/api/openapi.json)でツール向けに説明されています。

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

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は自身のパスワードを保持するため、シークレットはリポジトリに入力されることはありません。

チャプター 70

Asterisk との互換性 (AMI、ARI、AGI)

Asterisk 用に作成されたツールは、BitVoice を制御できます: CRM、ウォールボード、クリックツーダイヤル ボタン、コールレコーダーのコントローラー。設定 (章 14)で、Asterisk との互換性をオンにします。ツールは、Asterisk と同様に、PJSIP/100-... のように名前が付けられたチャネルとして呼び出しを表示します。

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

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=5551234100 に着信し、番号に電話します
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=ulawRTP (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=NAME101 に着信します。回答すると、アプリケーションに参加します
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、VERBOSEHANGUPはチャンネル名のみでスクリプトの呼び出しを終了します
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 FILEs=N沈黙、ビープ、エスケープキー; ファイルはサウンドライブラリに保存されます
SET VARIABLE、GET VARIABLE、GET FULL VARIABLECALLERID(num)、CALLERID(name)、EXTEN、UNIQUEID、CHANNEL…および${NAME}式
DATABASE GET、PUT、DEL、DELTREEAsteriskのデータベース(AstDB)、BitVoiceによって保持され、AGIデータベースの下に表示されます
SET CALLERID、SET EXTENSION、SET CONTEXT、SET PRIORITY、SET AUTOHANGUP、SET MUSICSET EXTENSIONは、スクリプトが終了したときに呼び出し先が移動する場所です
SPEECH CREATE … SPEECH RECOGNIZE設定のAIのスピーチを使用してテキストに変換します: 結果は呼び出し先が話したもので、text0としてスクリプトに渡されます。グラマーは受け入れられ、使用されません
EXECAnswer、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をそのコンピューター上に保管してください。

チャプター 71

AI アシスタント (MCP)

Claude、ChatGPT、Gemini、または Cursor のような AI アシスタントは、モデル コンテキスト プロトコル (MCP) を使用して BitVoice と通信できます。MCP は、アシスタントが他のプログラムにアクセスするための標準的な方法です。例えば、朝に着信した番号や、誰かがその番号に返信したかどうか、歯医者からの着信者の話した内容、9 時の着信がボイスメールに転送された理由、プロバイダーの回線がダウンしているかどうかを尋ねることができます。ご自身の許可があれば、アシスタントは着信を発信したり、テキストを送信したり、着信を切断したりすることもできます。

BitVoice は、https://YOUR-SERVER/mcp (ストリーミング HTTP; アドレスは設定で表示されます) で MCP サーバーを提供します。AI サービスに情報が送信されるのは、アシスタントが接続して情報を要求した場合のみであり、要求された情報のみが送信されます。

有効化

設定 (章 14) で、AI アシスタント (MCP):

カードには、一般的なアシスタントのアドレスと設定が表示され、すべてのツールがリストされます。

アシスタントが行えること

読み取り (任意のトークン):

操作 ( アシスタントの操作を許可 と、操作を許可するトークンが必要):

すべてのツールは 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.

安全に残す

チャプター 72

アーカイブ

Web インターフェイス内で: /archive

アーカイブは、録音、ボイスメール、設定などのコピーを別の場所に保存します: Amazon S3 バケット (または S3 互換ストア) または Azure Blob Storage コンテナーです。如果このサーバーのディスクが失われる場合、アーカイブにはまだコピーが残っています。

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

設定

  1. アーカイブ (章 72) で、アーカイブ先 を選択します: Amazon S3 または Azure。
  2. S3 の場合: バケット、リージョン、バケット内のオプションの フォルダー と エンドポイント (S3 互換ストア用)、および アクセスキー ID と シークレットアクセスキー。ポリシーをコピー により、ユーザーまたはロールにアタッチするための唯一の権限が付与されます。
  3. Azure の場合: 書き込み権限を持つ コンテナーの SAS URL と、オプションの コンテナ内のフォルダー。
  4. 構成以外にコピーするものを選択します: 通話録音、ボイスメール、または両方。

どうなる

BitVoice は、10 分ごとにアーカイブにまだない新しい録音とメッセージをコピーし、1 日に 1 回、日付付きの構成 (config/2026-10-13.json) をコピーします。ページには、最後の実行、最後の成功、およびエラーが表示されます。

ここで何かを削除すると (保持期間または手動で)、アーカイブのコピーは削除されません。バケットまたはコンテナーのライフサイクル ルールを設定して、アーカイブが項目を保持する期間を指定します。

チャプター 73

法的保持

Web インターフェイス内で: /holds

法的保持により、特定の事案に関連する通話レコード、録音、ボイスメールを保持し、誰もがそれらを削除することを防ぎます。弁護士がレコードの保存を依頼した場合に使用します。

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

保持の追加

法的保持 (章 73) で 追加 を押します。

フィールド内容
名前事案の名前
理由記録のための理由
番号カバーする拡張子と外部番号 (101, +15551234567 )、または すべて
から、までカバーする日付;空白の場合、制限なし

保持中

解除

解除 により、保持していたものが保持設定に従って削除されるようになります。解除された保持は、解除日時と解除者とともにリストに残り、保持の追加と解除は監査ログに記録されます。

チャプター 74

メトリクス: Prometheus、OpenTelemetry、Grafana、SNMP、通話レコード

Web インターフェイス内で: /settings

Prometheus は Web アドレスの /metrics をスクラップします。管理者 (または閲覧者) 用の API トークンを作成し、Prometheus にそのベアラー トークンとして提供します。

BitVoicePrometheusscrapes /metricsOpenTelemetrypushed each minuteGrafanathe ready-made dashboardCalls, phones, trunks, queues, packets lost, quality scores, callbacks.
図 58. Metrics: Prometheus pulls, OpenTelemetry is pushed
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 サーバーとデータベースをテストします。

チャプター 75

通話ジェネレーター

Web インターフェイス内で: /loadtest

通話ジェネレーターは、このコンピューターからBitVoiceに実際の通話とオーディオを配置します。サーバーが何通話を処理できるか、またどれほどうまく処理できるかを確認したり、変更後に通話が予想どおりに進行するかを確認したりするために使用します。

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

テストの実行

設定内容
呼び出す番号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 ランタイムがメモリを整理するためにすべてを停止した頻度と、実行中の最大の停止時間
進行中の呼び出し数の時間経過ロードのグラフ
チャプター 76

SIPトレース

Web インターフェイス内で: /trace

SIPトレースでは、BitVoiceが送受信するメッセージがリアルタイムに表示されます。これは、電話が登録できない場合や通話が失敗した場合に最初に確認するべき場所であり、プロバイダーのサポートデスクもこれを要求します。

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

メッセージの検索

BitVoiceは、最後の2,000件のメッセージをメモリに保持しています(ディスクに書き込まれたものはありませんが、再起動後に消去されます)。フィルタで番号、住所、またはCall-IDの一部を入力します。最新のメッセージを表示するには、更新 を押します。

メッセージを選択すると、メッセージの全文と、隣接する 通話フロー が表示されます。通話フローには、電話、BitVoice、プロバイダーの間で交換されるすべてのメッセージが、通話の順序で表示されます。

トレースの読み取り

表示通常の意味
REGISTERが401で応答し、その後何もなし電話のパスワードが間違っている、またはパスワードが設定されていない
REGISTERが403で応答アドレスが禁止されている、または電話が別の拡張子としてサインインしている
INVITEが404で応答ダイヤルされた番号に一致するルートがない (ルーティング (章 8))
INVITEがプロバイダーによって403で応答プロバイダーが発信者IDまたは番号を拒否している
486相手が忙しい
488両側が共通のコーデックを持っていない (コーデック (章 66))
200 OK、その後約30秒でBYEACKが到着しなかった: 中間のルーターがSIPメッセージを書き換えたりドロップしたりしている (ルーターの"SIP ALG"を無効にする)
通話が接続されるが、音が聞こえない音がブロックされている: 設定の公開アドレスと、ファイアウォールのメディアポートを確認してください
パート 6

公共の安全性: ラボトラック

911対応ポイントプロファイル、ラジオディスパッチコンソール、およびNG911 Coreサービス。ラボと設計パートナートラック: 記録されたキャプチャ、サンプルデータ、およびスタンドインに対して構築およびテストされましたが、ライブ911またはラジオディスパッチに認定されていないし、まだライブESInet、P25システム、またはCADでテストされていません。設定で有効化されるまで、メニューから除外されます。自分の電話からの緊急通報(はじめに)とは、このトラックの一部ではありません: それはすべての電話システムの一部です。

チャプター 77

911 通話 (911 プロファイル)

Web インターフェイス内で: /psap

BitVoice は PSAP の通話処理システムとして 911 通話に応答します: 緊急サービスネットワーク (ESInet、NENA i3) からの通話は、発信者の位置とネットワークデータで到着し、通話処理者はすぐにそれらを確認し、CAD に通知されます。

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

設定

  1. トランク (章 7)で、ESInetプロバイダ(またはNG911コアのESRP)からのトランクを追加し、ESInetからを有効にします。
  2. 呼出ルーティング (章 8)で、その呼出を呼出受付者に送信します: キュー、またはリンググループ。
  3. 911呼出で、機関ID(ドメイン、例: psap.county.example.gov)とCADが受け取る情報(ALIリスナーのアドレスとポート、EIDOアドレス)を入力します。

911呼出が鳴る時、911呼出に以下の情報が表示されます:

位置情報は、呼出に含まれる(値として)またはBitVoiceがHELDで取得する。参照を持つ呼出には再取得位置があり、BitVoiceは移動中または初期位置が不正確な場合に再度問い合わせます。

位置の再取得によって位置が変更された場合、位置チェックでどちらの位置を優先するか、理由とともに表示されます: 新しい位置を優先するルール; 初期位置が精密なデバイスフィックス(GPS、100m以内)で2分以内に取得された場合と新しい位置が不正確な場合、初期位置を優先; 位置が不確実性の範囲を超えて異なる場合、呼出受付者が呼出者に確認するように両方を表示します。初期位置は呼出に残ります。

呼出受付者が応答した時、CADは以下の情報を受け取ります:

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) が送信され、写真またはビデオを送信 を選択すると、発信者がすでに撮影した写真やビデオ (ダッシュカメラやアクションカメラのファイルを含む) が送信されます。通話中:

ビデオは通話から自動的に取得されません。各ライブビデオには独自のポートがあり、このサーバーは同時に ライブビデオ数 (設定されていない場合は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つのアドレスに投稿します。

チャプター 78

無線ディスパッチコンソール

Web インターフェイス内で: /radio

ディスパッチャーは、電話コールと同じヘッドセットから無線チャンネルで会話します。BitVoiceは、無線オーバーIP (RoIP) ゲートウェイを介して無線にアクセスします。無線ネットワーク自体は、運用者が管理します。

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

設定。コンソール設定 の下で、コンソール番号(例: 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によって販売され、公開されていません)。

チャプター 79

NG911コアサービス (ECRF、ESRP、LVF、BCF、LIS、ログ)

Web インターフェイス内で: /core

州または地域の911機関が独自のNG911コアを運用する場合: BitVoiceはECRFとしてLoSTに応答し、各911通話をESRPとしてPSAPにルーティングします。

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

サービスエリア。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:

テストコールを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で問い合わせるキャリアは検証のみを受け取ります。