電話をかける
このガイドでは、Vonage Client SDKを使って電話をかける方法を説明します。始める前に、お使いのアプリにSDKが追加されていることを確認してください。アンドロイド, iOS, JS).
注:iOSでは、発着信にCallKitを使用することが想定されています。以下の手順に従ってください。 iOSのCallKitを使った発信 ブログ記事
電話をかける
について serverCall メソッドを使って音声通話を開始することができます。 Voice API.このメソッドが呼び出されると answer_url ウェブフック に設定されている Vonageアプリケーション が実行される。それが 論理と能力 通話中
val client = VoiceClient(this.application.applicationContext)
client.serverCall(mapOf("to" to "PHONE_NUMBER")) {
err, outboundCall ->
when {
err != null -> {
// Handle call error.
}
else -> {
// Handle call success.
}
}
}
let client = VGVoiceClient()
client.serverCall(["to": "PHONE_NUMBER"]) { error, callID in
if error == nil {
// Handle call success.
} else {
// Handle call failure
}
}
カスタムデータ
独自のカスタムデータを含めることで、コンテキストをキー・バリュー形式で answer_url ウェブフック・サーバー。もし to キーを押すと、トップレベルに to をウェブフック・サーバーに送信します。その他のデータは custom_data オブジェクトがある。
client.serverCall(mapOf("to" to "PHONE_NUMBER", "device_name" to "Alice app")) {
err, outboundCall ->
...
}
client.serverCall(["to": "PHONE_NUMBER", "device_name": "Alice app"]) { error, callID in
...
}
このデータは、リクエストのクエリで利用できる。 answer_url ウェブフックサーバー:
コールイベントを聞く
通話の状態の更新を確認するには、例えば、相手のメンバーが通話に出たか、 切ったかを知るには、レッグステータスイベントを聞く必要がある。
通話状況のアップデートを確認する:
client.setOnLegStatusUpdate { callId, legId, status ->
// Call leg updates
}
client.setCallInviteListener { callId, from, channelType ->
// Handling incoming call invite
}
client.setOnCallHangupListener { callId, callQuality, reason ->
// Handle hangups
}
client.setSessionErrorListener { error ->
// Handle session errors
}
現在の ViewControllerなどを音声クライアントのデリゲートとして使用する:
client.delegate = self
ViewController に準拠しなければならなくなった。 VGVoiceClientDelegateその didReceiveLegStatusUpdateForCall 関数は、アクティブな通話のコールレグの変更を更新する:
extension ViewController: VGVoiceClientDelegate {
func voiceClient(_ client: VGVoiceClient, didReceiveLegStatusUpdateForCall callId: String, withLegId legId: String, andStatus status: String) {
// Call leg updates
}
func voiceClient(_ client: VGVoiceClient, didReceiveHangupForCall callId: String, withQuality callQuality: VGRTCQuality, reason: VGHangupReason) {
// Handle hangups
}
func client(_ client: VGBaseClient, didReceiveSessionErrorWith reason: VGSessionErrorReason) {
// Handle session errors
}
}