Einen Anruf tätigen
An der Spitze der ViewController Klasse, direkt unterhalb der client Deklaration eine String-Eigenschaft hinzufügen, die einen Verweis auf einen laufenden Aufruf enthält
class ViewController: UIViewController, NXMClientDelegate {
...
let client = VGVoiceClient()
var callID: String?
...
}
Aufgrund der Nichtigkeit der callID Eigenschaft, die callButtonPressed Methode kann nun verwendet werden, um entweder Anrufe zu tätigen oder zu beenden; die placeCall und endCall werden für jeden Fall ausgelöst.
Ersetzen Sie die aktuelle callButtonPressed Methode mit dem unten stehenden Code:
@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)
}
}
}
}
Wenn der Anruf getätigt wird, wird die callServer Funktion aufgerufen wird. Diese übergibt die Informationen im Wörterbuch, in diesem Fall die Nummer des Anrufers, an Ihren Webhook-Server. Ihr Webhook antwortet mit einem Call-Control-Objekt, das Vonage mitteilt, mit wem es Ihren Anruf verbinden soll. Beim Beenden des Anrufs wird die hangup Funktion wird aufgerufen, bei Erfolg callID wird auf Null gesetzt.
HINWEIS: Stellen Sie sicher, dass Sie die PHONE_NUMBER unten mit der tatsächlichen Telefonnummer, die Sie anrufen möchten, im E.164-Format (z. B. 447700900000). Stellen Sie außerdem sicher, dass der Webhook-Server, den Sie in den vorherigen Schritten erstellt haben, noch läuft.
Das war's! Sie können jetzt den Anruf erstellen, ausführen und platzieren! Zauberhaft! Sobald der Anruf eingeht, können Sie ihn entgegennehmen und den In-App-Sprachanruf hören.
Webhaken
Während Sie den Anruf tätigen, schalten Sie bitte auf das Endgerät um und beachten Sie die Anzeige /voice/answer Endpunkt, der zum Abrufen des NCCO aufgerufen wird:
NCCO request:
- callee: 447700900000
Außerdem durchläuft der Anruf verschiedene Phasen, /voice/event werden Ereignisse gesendet:
...
---
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'
}
HINWEIS: Wenn der Anruf abgeschlossen ist, enthalten die Ereignisse auch Informationen zu Dauer und Preis.
In-App-Sprachanrufe tätigen
Sie tätigen einen Sprachanruf von einer iOS-App zu einem Telefon mit dem iOS Client SDK.