In the RCS services a call can be routed through the IP network directly to another RCS user or to the PSTN network (GSM or landline numbers). Calls to other users are referred to as onnet while calls out to PSTN networks as offnet. The difference between these two services is in their cost to the user as onnet calls are free while offnet are charged according to the tariff imposed by the provider. Also the onnet calls offer more features which include video calling, hd audio and others described further.
For RCS contacts the user can select how we wants to connect, either onnet or offnet (if the RCS contact is registered with phone number). For non RCS contacts the only option is to use offnet routing.
Onnet calls (free users to user)
Calls among users remain within the provider’s network (Onnet). For the OTT providers the term Onnet refers to the communication which go through the network elements (softswitches, media servers etc.) of the provider. Therefore it is important to offload the provider’s side from the media traffic, especially with the rapid growth of video communication and wide band (HD) codecs for voice. To address this issue we introduced the support for ICE mechanism in the dialers which allow for peer to peer communication.
For audio the OPUS codec is utilized which supports adjustable bitrate and several audio preprocessing algorithms which guarantee high quality in changing network conditions.
Video calling is based on VP8 code with congestion control mechanism.
ICE – peer to peer
The ICE framework provides a mechanism for finding the most efficient media path. The preference is set for direct peer to peer calls between users. Call request is sent from client A to B using SIP through the SIP server (Voipswitch). When answered by B both dialers start sending packets to one another trying direct path – to their NATs IP addresses, and the path via media relay server. In most cases (more than 95% of NATs) the peer to peer path will be established successfully. If for some reasons the direct path cannot be established the ICE framework will seamlessly connect through the server.
The ICE framework comprises a set of mechanisms which not only help to find the best route but also are the most efficient in NAT traversing. ICE has been selected also by the WebRTC and is now obligatory in their standard.
Video call can be initiated directly by clicking on the appropriate icon (the one with a camera icon) in the contact details view or on the video shortcut on the main Contacts. The other side will get the call with an option to accept video or audio only.
The other method is to initiate audio only call and enable video later, during the call, by clicking on the video icon on the “in a call” screen.
During video call the control buttons disappear after two seconds and come back when you touch the screen, then goes off again after two seconds of inactivity.
During a call functions
While in a call the screen is composed of following elements (from the top):
- quality indicator
- name of the other party
- active or on Hold information
- mute microphone
- record audio
- bottom bar with actions:
- end call
- send instant message
- send attachment
- turn on video
- additional options menu
- the additional options menu include following actions:
- add call
- transfer call
- merge into conference (enabled if there are more than one call)
The application controls the RTP (media) stream and measures various quality factors, the main being the lost packet count. The check is performed for both audio and video. When the measured quality of the stream drops below one of 3 predefined quality levels it will be signaled by changing the icon and displaying a popup with adequate text. The levels are excellent, good and poor. They are related to the MOS metrics (Mean Opinion Score).
Recording works only for audio. When in a call a user can press the record button and start recording the conversation. The recording will contain whole conversation i.e. combined streams of all parties. The recordings are stored in wav format, each recording in a separate file. The files can be retrieved from a device using iTunes/file sharing menu.
Instant messaging in a call
Tapping the chat icon will bring the keypad and an input field where you can compose and send a text message. It works exactly same way as in the Chat menu with only difference that the messages overlay the main call view.
When you receive a new message a badge will be shown on the message icon, also there is a short beep indicating its arrival.
Tapping on the clip icon brings more options for sending attachments. They include location sharing and picture. Please note that sending picture during a video call is not available.
These features work the same way as in the chat menu where you can find more details.
This function is available from the extended menu. An active call can be transferred to some other number or another Vippie user. The phone number can be typed from the dialpad or be selected from the Contacts list.
When you tap the transfer button the other party is put on hold. After selecting the number or Vippie user the active call is disconnected from your dialer and then the server tries to connect to the new destination. As you do not know if this operation succeeded or not this type of transfer is called blind transfer.
The application supports up to 4 concurrent calls. You can switch between them by tapping on an avatar representing particular caller.
When there is a new call coming while you are in a call already, you will hear a beep and see the new avatar shown on the call view.
If you want to add a new call click on the extended menu and then select the plus icon. Similarly to the transfer feature you will be presented with an option to choose the number from dialpad or to choose an item from the contacts list.
Active calls can be merged into a conference. It works only for audio, the mixing is done on the application side hence the limit to 4 active callers. To start a conference go to extended menu and tap the merge calls icon.
Offnet calls (RCS Out)
RCS Out is a service allowing users to place calls to PSTN numbers through the provider’s voip platform. Calls are sent over internet to the provider and from there to telephony network. Such calls are usually charged according to the tariff set by the provider.
The offnet calls can be initiated from:
- Contacts by tapping on non RCS entry.
- Contact view of non RCS contact
- Contact view of RCS user by selecting the paid call button
- From the dialpad menu
If user does not have enough balance on his account the server will send back the “payment required” error which will bring a popup with adequate information. The balance can be topped up through the Account menu (if online payment option is enabled by a provider)
Before placing an offnet call the app allows for checking the cost per minute. In the contact view a user can tap on the dollar icon in order to see the rate. Also the rate is presented when dialing from the dialpad after entering phone number.
Calling from dialpad
After entering first 3 digits into the phone number input field the dialer will check the rate per minute for the entered destination and show it below the number, along with the destination name. These information are retrieved from the server from the tariff associated with the user account.
In the left bottom corner the user account balance is displayed. Taping on it will take the user to the Account menu.
Taping the call button will trigger a lookup that checks if the entered number belongs to an RCS user. If so you will be presented with an option to call onnet for free. Still, you can opt for paid call.
Recents menu (call log)
The calls are grouped in threads by the caller ID. If more calls came subsequently from the same caller they will be grouped in one thread. Each thread or a single call entry has an arrow icon indicating whether it was incoming, outgoing or missed call.
Taping on the row in the call log list takes us to the call details view which shows more information on the caller and exact time of calls from and/or to him.