Fazer uma ligação
Este guia explica como fazer uma chamada usando o Vonage Client SDK. Antes de começar, certifique-se de ter adicionado o SDK ao seu aplicativo e (Android, iOS, JS).
NOTA: No iOS, espera-se que você utilize o CallKit para chamadas recebidas e realizadas. Siga as Chamadas de saída usando o CallKit do iOS postagem no blog.
Fazendo uma ligação
O serverCall Esse método permite que você inicie uma chamada de voz usando o recurso repleto de funcionalidades Voice API. Quando esse método é chamado, o answer_url webhook que está configurado para o seu Aplicativo Vonage será executado. Isso define o lógica e recursos da ligação.
// After creating a session
client.serverCall({to:phoneNumberOrUsername})
.then(callId => {
console.log("Id of created call: ", callId);
})
.catch(error => {
console.error("Error making call: ", error);
});
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
}
}
Dados personalizados
Incluir seus próprios dados personalizados permite que você passe o contexto, no formato chave-valor, para o seu answer_url servidor de webhooks. Se você fornecer um valor com o to chave, ela preencherá o nível superior to na consulta que você faz ao seu servidor de webhook. Outros dados estarão na seção custom_data objeto.
// After creating a session
client.serverCall({to:phoneNumberOrUsername, device_name: "Alice app"})
.then(callId => {
console.log("Id of created call: ", callId);
})
.catch(error => {
console.error("Error making call: ", error);
});
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
...
}
Os dados estarão disponíveis na consulta da solicitação enviada ao seu answer_url servidor de webhooks:
{
"to": "447000000000",
"from_user": "Alice",
"conversation_uuid": "CON-8dd32088-66be-42ae-b0af-c9e12ca588ed",
"uuid": "54c255ca-9c1c-4ecd-b175-a1d022dc7b07",
"custom_data": {
"to": "447000000000",
"device_name": "Alice app"
}
}
Ouvir eventos de chamada
Para acompanhar as atualizações sobre o status de uma chamada — por exemplo, para saber se o outro participante atendeu ou desligou —, você deve monitorar os eventos de status da ligação.
Para ver atualizações sobre o andamento da convocatória:
// After creating a session
client.on("legStatusUpdate", (callId, legId, status) => {
console.log({callId, legId, status});
});
client.on("callInvite", (callId, from, channelType) => {
// Answer / Reject Call
console.log({callId, from, channelType});
});
client.on("callHangup", (callId, callQuality, reason) => {
console.log(`Call ${callId} has hung up, callQuality:${callQuality}, reason:${reason}`);
});
client.on("sessionError", (error) => {
console.error({error});
});
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
}
Adicione a corrente ViewController, ou algo semelhante, como delegado para o cliente de voz:
client.delegate = self
ViewController agora terá que estar em conformidade com VGVoiceClientDelegate, o didReceiveLegStatusUpdateForCall A função irá mantê-lo informado sobre as alterações nas etapas da chamada ativa:
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
}
}