Place a call
At the top of the ViewController class, right below the client declaration, add a string property to hold a reference to any call in progress
Based on the nullability of the callID property, the callButtonPressed method can now be used to either place or end calls; the placeCall and endCall methods are triggered for each case.
Replace the current callButtonPressed method with the code below:
When placing the call, the callServer function is called. This will pass the information in the dictionary, in this case the callee number, to your webhook server. Your webhook will reply with a call control object telling Vonage who to connect your call to. When ending the call, the hangup function is called, if successful callID is set nil.
NOTE: Make sure to replace PHONE_NUMBER below with the actual phone number you want to call, in the E.164 format (for example, 447700900000). Also, make sure that the webhook server you built in the previous steps is still running.
That's it! You can now build, run and place the call! Magic! Once the call comes through you can answer it and hear the in-app voice call.
Webhooks
As you proceed with placing the call, please switch to the terminal and notice the /voice/answer endpoint being called to retrieve the NCCO:
NCCO request:
- callee: 447700900000
Also, as the call progresses through various stages, /voice/event is being sent events:
...
---
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: As the call is completed, events will also contain duration and pricing information.
Making an in-app voice call
You make a voice call from an iOS app to a phone using thr iOS Client SDK.