Passer un appel
En haut de la page ViewController juste en dessous de la classe client ajouter une propriété de type "string" pour contenir une référence à tout appel en cours
class ViewController: UIViewController, NXMClientDelegate {
...
let client = VGVoiceClient()
var callID: String?
...
}
Sur la base de la nullité de la callID la propriété callButtonPressed peut désormais être utilisée pour passer un appel ou y mettre fin ; la méthode placeCall et endCall sont déclenchées dans chaque cas.
Remplacer l'actuel callButtonPressed avec le code ci-dessous :
@IBAction func callButtonPressed(_ sender: Any) {
if callID == nil {
placeCall()
} else {
endCall()
}
}
func placeCall() {
callButton.setTitle("End Call", for: .normal)
client.serverCall(["to": "PHONE_NUMBER"]) { error, callId in
DispatchQueue.main.async { [weak self] in
guard let self else { return }
if error == nil {
self.callID = callId
} else {
self.callButton.setTitle("Call", for: .normal)
self.connectionStatusLabel.text = error?.localizedDescription
}
}
}
}
func endCall() {
guard let callID else { return }
client.hangup(callID) { error in
DispatchQueue.main.async { [weak self] in
guard let self else { return }
if error == nil {
self.callID = nil
self.callButton.setTitle("Call", for: .normal)
}
}
}
}
Lors de l'émission de l'appel, le callServer est appelée. Celle-ci transmet les informations contenues dans le dictionnaire, en l'occurrence le numéro de l'appelant, à votre serveur webhook. Votre webhook répondra avec un objet de contrôle d'appel indiquant à Vonage à qui connecter votre appel. Lorsque vous mettez fin à l'appel, l'objet de contrôle d'appel hangup est appelée, en cas de succès callID est mis à zéro.
NOTE : Veillez à remplacer PHONE_NUMBER ci-dessous avec le numéro de téléphone que vous souhaitez appeler, au format E.164 (par exemple, 447700900000). Assurez-vous également que le serveur webhook que vous avez construit dans les étapes précédentes est toujours en cours d'exécution.
Voilà, c'est fait ! Vous pouvez maintenant construire, exécuter et passer l'appel ! Magique ! Une fois l'appel passé, vous pouvez y répondre et entendre l'appel vocal in-App Voice.
Crochets Web
Pendant que vous passez l'appel, basculez sur le terminal et remarquez l'icône de l'appelant. /voice/answer appelé pour récupérer le NCCO :
NCCO request:
- callee: 447700900000
En outre, au fur et à mesure que l'appel passe par différentes étapes, /voice/event est envoyé des événements :
...
---
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'
}
NOTE : Lorsque l'appel est terminé, les événements contiennent également des informations sur la durée et la tarification.
Passer un appel vocal in-App Voice
Vous passez un appel vocal depuis une application iOS vers un téléphone à l'aide du Client SDK iOS.