Realizar una llamada
Por último, vamos a configurar la posibilidad de realizar llamadas desde esta aplicación.
En el onCreate añada el receptor de RTC Hangup:
client.setOnCallHangupListener { callId, callQuality, isRemote ->
onGoingCall = null
hideUI()
startCallButton.visibility = View.VISIBLE
waitingForIncomingCallTextView.visibility = View.VISIBLE
}
Este escuchador de llamadas se encargará de cuando la otra persona en la llamada cuelgue. Cuando esto ocurra, restableceremos la aplicación a su estado original.
Añade el código de escucha de la llamada de inicio en onCreate también:
startCallButton.setOnClickListener { startCall() }
Para iniciar la llamada después de pulsar start call añadir el botón startCall método inside Mainctivity clase:
@SuppressLint("MissingPermission")
fun startCall() {
client.serverCall(mapOf("to" to otherUser)) {
err, outboundCall ->
when {
err != null -> {
connectionStatusTextView.text = err.localizedMessage
}
else -> {
onGoingCall = outboundCall
hideUI()
endCallButton.visibility = View.VISIBLE
}
}
}
}
El método anterior inicia la llamada.
Webhooks
Mientras realiza la llamada, cambie al terminal y observe el icono /voice/answer al que se llama para recuperar la NCCO:
NCCO request:
- callee: 447700900000
Además, a medida que la convocatoria avanza por las distintas fases, /voice/event se envían eventos:
...
---
VOICE EVENT:
{
from: null,
to: 'Alice',
uuid: '2da93da3-bcac-47ee-b48e-4a18fae7db08',
conversation_uuid: 'CON-1a28b1f8-0831-44e6-8d58-42739e7d4c77',
status: 'started',
direction: 'inbound',
timestamp: '2021-03-10T10:36:21.285Z'
}
---
VOICE EVENT:
{
headers: {},
from: 'Alice',
to: '447700900000',
uuid: '8aa86e22-8d45-4201-b8d8-3dcd76e76429',
conversation_uuid: 'CON-1a28b1f8-0831-44e6-8d58-42739e7d4c77',
status: 'started',
direction: 'outbound',
timestamp: '2021-03-10T10:36:27.080Z'
}
---
...
---
VOICE EVENT:
{
start_time: null,
headers: {},
rate: null,
from: 'Alice',
to: '447700900000',
uuid: '8aa86e22-8d45-4201-b8d8-3dcd76e76429',
conversation_uuid: 'CON-1a28b1f8-0831-44e6-8d58-42739e7d4c77',
status: 'answered',
direction: 'outbound',
network: null,
timestamp: '2021-03-10T10:36:31.604Z'
}
---
VOICE EVENT:
{
headers: {},
end_time: '2021-03-10T10:36:36.000Z',
uuid: '8aa86e22-8d45-4201-b8d8-3dcd76e76429',
network: '23433',
duration: '5',
start_time: '2021-03-10T10:36:31.000Z',
rate: '0.10000000',
price: '0.00833333',
from: 'Unknown',
to: '447700900000',
conversation_uuid: 'CON-1a28b1f8-0831-44e6-8d58-42739e7d4c77',
status: 'completed',
direction: 'outbound',
timestamp: '2021-03-10T10:36:35.585Z'
}
---
VOICE EVENT:
{
headers: {},
end_time: '2021-03-10T10:36:35.000Z',
uuid: '2da93da3-bcac-47ee-b48e-4a18fae7db08',
network: null,
duration: '15',
start_time: '2021-03-10T10:36:20.000Z',
rate: '0.00',
price: '0',
from: null,
to: 'Alice',
conversation_uuid: 'CON-1a28b1f8-0831-44e6-8d58-42739e7d4c77',
status: 'completed',
direction: 'inbound',
timestamp: '2021-03-10T10:36:36.187Z'
}
NOTA: A medida que se completa la llamada, los eventos también contendrán información sobre la duración y el precio.
En end call para reflejar el estado actual de la llamada:

Hacer una llamada de voz de aplicación a aplicación
Realiza una llamada de voz desde una aplicación Android a la misma aplicación Android instalada en otro dispositivo utilizando el SDK Android Client.