Utilizing Nokia VoIP Client
Article Metadata
Code Example
Article
Generally CTelephony APIs are used for telephony functions but these APIs doesn’t work for VoIP calls.
We have to use the following three APIs for VoIP calls
1. Phone Client Dial
2. Phone Client Extension
3. Log engine
Functionalities provided by these APIs
1.Phone Client Dial – CPhCltDialer can be used to dial VoIP calls by setting the calltype as EPhCltCallVoIP. This API is available in Extensions plugin package for S60 3rd MR Edition SDK.
Another way to dial Voip call is to use AIW APIs.
2.Phone Client Extension – CphCltExtFactory function CPhCltCommandHandlerLD() returns CPhCltCommandHandler object. CPhCltCommandHandler can be used to handle VoIP calls – Answer incoming call, Hold / Resume call, Mute / Unmute , Hangup VoIP call.. This API is available in Extensions plugin package for S60 3rd MR Edition SDK.
3. Log engine can be used to get notification about the incoming call. This API is available in Public S60 3rd SDK For Symbian OS, For C++, MR itself. Also note that notification about the incoming VoIP call can be obtained using KPSUidTelephonyCallHandling PS key, which is available in Extensions plugin package for S60 3rd MR Edition SDK)
VoIP Example:
The attached VoipCallHandle Example can demonstrate the following use cases- Dial , Answer incoming call, Hold / Resume , Mut/Unmute Incoming call.
This example gives notification about the incoming VoIP call with the caller id.The Answer, Hold/Resume , Mute/unmute , Hangup can be done to the call with the corresponding menu options. For dialing the VoIP call ,we have to enter the callee SIP URI id in the “Enter Sip address” dialog.
Preconditions that should be followed before using this example -
We should have the correct Sip and VoIP profiles. WLAN coverage should be there.
Test Environment:
This example is tested in N95, with the Gizmo VoIP setup. Building it in S60 3.0 FP1 environment will make it work in N95 also.
Known Issues:
If this application is used for 3.0 devices then we should built it in S60 3.0 MR SDK and if it is used for FP1 devices then it should be built it in S60 3.0 FP1 SDK.
Please note that making a VoIP call using AIW doesn’t work in N95 8G as it will throw KErrArgument error. So it is advisable to use Phone Client Dial for this case.


I tried the example and it works fine on most of the devices except answer incoming VoIP call doesn't work on E61. It returns error -2.
Does anyone has an idea what could be the reason? I build the SIS with MR SDK.
Thanks, Darko
19 Sep
2009
A very good article, which gives overview and essential requirements to start developeing application for VOIP calls. The required APIs and their functionalities are explained with an example. The example is really good.
The article is very useful to intermediate developers who wants to use VOIP in their applications.