アプリ内通話
In-App Callingは、Voice APIを使用して、モバイルアプリケーションやウェブアプリケーションに直接リアルタイムの音声通信を組み込むことができます。WebRTC テクノロジーをベースに構築されており、アプリ内のユーザー間でリッチでインタラクティブな通話体験を実現するために必要なコア機能を提供する一方で、必要に応じて外部エンドポイントに接続することもできます。
In-App Voiceは、アプリケーションのユーザーがアプリケーションのインターフェイスを離れることなく、音声通話の発信と着信を行うことを可能にします。1対1の会話とグループ会話の両方をサポートし、シームレスなコミュニケーション体験を構築するのに役立つコントロールとイベントを提供します。
この機能は、Voice APIとクライアント側のSDKによって提供され、これらのAPIは、メディア・ストリーミング、コール・シグナリング、コール・ライフサイクル管理を一括して処理します。
コア能力
ユーザーコントロール
アプリケーションは、ユーザーが通話体験をリアルタイムで管理できるように、内蔵の音声コントロールを提供できます。一般的なコントロールには以下が含まれます:
- マイクのミュートとミュート解除
- 通話を終了することなく着信音声を消音するイヤーマフ機能
これらのコントロールは、柔軟なインタラクションを可能にし、通話中の使い勝手を向上させます。
通話通知
プッシュ通知を使ってユーザーに着信を通知することができます。これにより、アプリがバックグラウンドで実行されている場合や、デバイスがロックされている場合でも、ユーザーに確実に連絡することができます。
1:1およびグループ通話
アプリ内通話は、2人のユーザー間の直接通話と動的なグループ通話の両方をサポートしています。参加者をリアルタイムで追加または削除できるように通話を構成し、会議や共同作業のユースケースを可能にします。
DTMFサポート
この機能は、通話中にDTMFトーンの送信をサポートし、IVRシステムやその他のテレフォニー・サービスとのやり取りを可能にします。
通話の継続性
などの機能により、信頼性とユーザー体験を向上させることができる:
- 切断された通話への自動再接続
- 同じユーザーの異なるデバイス間でアクティブな通話を移動する
これらの機能は、ネットワークの変更やデバイスの切り替えがあっても、中断のない通信を維持するのに役立ちます。
Voice APIによる拡張性
In-App Callingは、Vonageの広範なVoice APIプラットフォームの一部です。この統合により、アプリ内通話をアプリ間通信の枠を超えて拡張し、外部のテレフォニーサービスやリアルタイムサービスに接続することができます。
Voice APIには以下の機能がある:
- 電話(PSTN)への通話
- SIP対応機器への通話
- ウェブソケットを介した他のサービスへの接続
- 通話管理
- 複雑なコールフロー構成
- 音声ストリームの録音
- 電話会議
- 音声合成メッセージ
この柔軟性により、In-Appコミュニケーションと従来のテレフォニーや自動音声ワークフローを組み合わせることができます。
データの保持と保管
デフォルトでは、通話によって作成された会話と関連する通話レグは2日間保存されます。この保存期間は、APIダッシュボードのVoice機能の詳細設定でConversations TTLまたはLegs Persistence Timeを設定することで変更できます。
これらの値を調整することで、データストレージをアプリケーションの運用要件やコンプライアンス要件に合わせることができます。
ユーザーの作成
Vonage Clientにログインし、アプリ内通話機能に参加するユーザーを作成します:会話、通話など。
ターミナルで以下のコマンドを実行し、Aliceというユーザーを作成してください:
vonage users create `
--name='Alice'
✅ Creating User
User ID: USR-00000000-0000-0000-0000-000000000000
Name: Alice
Display Name: Not Set
Image URL: Not Set
Time to Live: Not Set
Channels:
None Set
vonage users create ^
--name='Alice'
✅ Creating User
User ID: USR-00000000-0000-0000-0000-000000000000
Name: Alice
Display Name: Not Set
Image URL: Not Set
Time to Live: Not Set
Channels:
None Set
ユーザーIDは、ログインや通話開始など、SDKによるタスクの実行に使用されます。
ユーザーJWTの生成
JWT は、Client SDK でユーザーを認証するために使用されます。
アリスのJWTを生成するには、以下のコマンドを実行してください(あなたの情報に置き換えてください):
# A command with parameters
vonage jwt create `
--app-id='00000000-0000-0000-0000-000000000000' `
--private-key=./private.key `
--sub='Alice' `
--acl='{\"paths\":{\"\/*\/users\/**\":{},\"\/*\/conversations\/**\":{},\"\/*\/sessions\/**\":{},\"\/*\/devices\/**\":{},\"\/*\/push\/**\":{},\"\/*\/knocking\/**\":{},\"\/*\/legs\/**\":{}}}'
# Will produce a token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2wiOnsicGF0aHMiOnsiLyovcnRjLyoqIjp7fSwiLyovdXNlcnMvKioiOnt9LCIvKi9jb252ZXJzYXRpb25zLyoqIjp7fSwiLyovc2Vzc2lvbnMvKioiOnt9LCIvKi9kZXZpY2VzLyoqIjp7fSwiLyovcHVzaC8qKiI6e30sIi8qL2tub2NraW5nLyoqIjp7fSwiLyovbGVncy8qKiI6e319fSwiZXhwIjoxNzQxMTgyMzA3LCJzdWIiOiJBbGljZSIsImp0aSI6Ijg1MTViNzk2LTA1YjktNGFkMS04MTRkLTE1NWZjZTQzZWM1YiIsImlhdCI6MTc0MTE4MTQwNywiYXBwbGljYXRpb25faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ.BscMdDXZ1-nuLtKyPJvw9tE8E8ZjJvTPJPMT9y0TjPz4Q7qqNaqxcjglc5QPtYEjh2YpZH6btSKbUF4XTClI026Hl5_QOBlnayYo7jXwhba16fa5PeyzSf30QFGFrHbANwrQJFVCjd329SZUpwK4GxgB1gf230NhbfmkhegKezqicru2WTGCKm8kQncYliFwIEYUlcRAb2c8xcaVrn_6QNNahyeJRwGFfWpIkX0Oe-S4RDlPjoq47_gYWac9MmaetB4Dd3Yp531AuniGV5JiIShkaEwuY4Zyov4Hcmajm4Lm_UFY119la7vzHis0P7cT9pPUDe5cyPj7eT8-VhitfQ
REM A command with parameters
vonage jwt create ^
--app-id='00000000-0000-0000-0000-000000000000' ^
--private-key=./private.key ^
--sub='Alice' ^
--acl="{\"paths\":{\"\/*\/users\/**\":{},\"\/*\/conversations\/**\":{},\"\/*\/sessions\/**\":{},\"\/*\/devices\/**\":{},\"\/*\/push\/**\":{},\"\/*\/knocking\/**\":{},\"\/*\/legs\/**\":{}}}"
REM Will produce a token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2wiOnsicGF0aHMiOnsiLyovcnRjLyoqIjp7fSwiLyovdXNlcnMvKioiOnt9LCIvKi9jb252ZXJzYXRpb25zLyoqIjp7fSwiLyovc2Vzc2lvbnMvKioiOnt9LCIvKi9kZXZpY2VzLyoqIjp7fSwiLyovcHVzaC8qKiI6e30sIi8qL2tub2NraW5nLyoqIjp7fSwiLyovbGVncy8qKiI6e319fSwiZXhwIjoxNzQxMTgyMzA3LCJzdWIiOiJBbGljZSIsImp0aSI6Ijg1MTViNzk2LTA1YjktNGFkMS04MTRkLTE1NWZjZTQzZWM1YiIsImlhdCI6MTc0MTE4MTQwNywiYXBwbGljYXRpb25faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ.BscMdDXZ1-nuLtKyPJvw9tE8E8ZjJvTPJPMT9y0TjPz4Q7qqNaqxcjglc5QPtYEjh2YpZH6btSKbUF4XTClI026Hl5_QOBlnayYo7jXwhba16fa5PeyzSf30QFGFrHbANwrQJFVCjd329SZUpwK4GxgB1gf230NhbfmkhegKezqicru2WTGCKm8kQncYliFwIEYUlcRAb2c8xcaVrn_6QNNahyeJRwGFfWpIkX0Oe-S4RDlPjoq47_gYWac9MmaetB4Dd3Yp531AuniGV5JiIShkaEwuY4Zyov4Hcmajm4Lm_UFY119la7vzHis0P7cT9pPUDe5cyPj7eT8-VhitfQ
上記のコマンドは、JWTの有効期限を24時間にデフォルト設定します。有効期限を短い時間に変更するには --exp の旗を掲げている。
注:本番アプリケーションでは、バックエンドがクライアントのリクエストに応じてJWTを生成するエンドポイントを公開することが期待される。