WebRTC voice API overview (BYON)
- 1 Overview
- 1.1 Introduction
- 1.2 API Spec
- 1.2.1 Roles, Actors and Scope
- 1.2.2 Authentication and Authorization
- 1.2.3 Pre-Conditions
- 1.2.4 Activities/Steps
- 1.2.5 Post-Conditions
- 1.2.6 Exceptions
- 1.2.7 API Endpoint details
- 1.2.8 Event status enumeration
Overview
Bring your own number (BYON) service aims to provide consumers with the ability to use their phone number (MSISDN) for outgoing and incoming calls from non-SIM card devices. To access the service, users are required to authenticate using their digital credentials associated with their MNO account, in example their operator app credentials. As registration from a web endpoint is necessary to enable the service on non-SIM card devices.
Outgoing calls made through the service will display the user's MSISDN as the caller number, ensuring that the recipient recognizes the user's phone number on their caller ID.
Incoming calls introduce a unique functionality whereby multiple devices will ring simultaneously. This includes the user's smartphone and the web endpoint they have registered from. This design enables users to conveniently answer calls from any of these devices, depending on their preference or accessibility. The service is compatible with various devices that support web browsing environments, such as laptops, PCs, and XR immersive glasses.
The service specification emphasizes the accessibility and flexibility of utilizing one's phone number across different non-SIM card devices. By leveraging this web-based service, users can extend their communication capabilities beyond traditional SIM-based devices, enhancing their overall communication experience.
Introduction
This service brings new functionalities for the WebRTC services, whose idea is to integrate BYON API to maintain the client number in out-bound and in-bound calls from web comms service.
Out-bound calls:
Recipient receives call as if it was from User's normal phone number.
Maintains common number through web communication service and standard subscription.
Facilitates number recognition and call-back for co-workers, partners and/or clients.
In-bound calls:
Receive phone calls simultaneously on phone subscription and web communication service.
Presents 'Occupied user' info to caller user is already in phone call.
Facilitates common multi-channel contact with co-workers, partners and/or clients.
API Spec
Roles, Actors and Scope
Roles: Customer-user
Actors: Application service providers, hyperscalers, application developers.
Scope:
Register to Network โ Register the client endpoint instance to MNO's IMS Network.
Create Notification Channel โ Create Notification channel of specified type to receive notifications from the network (e.g. incoming call).
Place an Out Call โ Place an outbound voice call request to the MNO's IMS Network.
Receive an Incoming Call - Receive an incoming call request from the MNO's IMS network.
Authentication and Authorization
The defined APIs use OAUTH 2.0 client credentials and uses the Access Token granted by the CSP's IDP for its usage. This must be the initial procedure to be completed before invoking any of the service APIs.
Pre-Conditions
The preconditions are listed below:
The customer-user must have operator/MNO (provider of the native MSISDN) provided credentials to log in to the web app.
Activities/Steps
Starts when: The customer-user logs into the communication application in the browser.
Ends when: The customer-user logs out of the communication application in the browser or closes the browser.
Post-Conditions
The customer-user places an outgoing voice call or accepts an incoming voice call.
Exceptions
Several exceptions might occur during the API operations,
Unauthorized: Invalid credentials.
<additional ones to be added>
API Endpoint details
Registration and Connection Management (RACM)
Endpoint | Operation | Description |
---|---|---|
POST /session | Create a RACM session | Registers the client instance into MNO's IMS Network via the WebRTC Gateway. This request will include the Access Token received from the MNO's IDP (auth server).On successful RACM session creation, the client endpoint reusing the device's MSISDN will be successfully registered in MNO's IMS network, ready to accept any call origination or termination request. |
PUT /session/{sessionId} | Modify a RACM session | This modification request is to share refreshed Access Token received from MNO's IDP (auth server). |
DELETE /session/{sessionId} | Delete a RACM session | When the customer-user gracefully logs out of the application, the RACM session will be deleted, resulting in de-registration from the MNO's IMS network. |
Notification Channel Management
Endpoint | Operation | Description |
---|---|---|
POST /channels | Create a Notification channel | Creates a notification channel of specified type (e.g. Websocket, PNS, webhook) in order to receive notifications from the network. These notification channels will be used to send following notifications from the network, |
Incoming call (network -> client)
Any other notifications from the network such as call setup status, call modification status, etc. |
OneToOne Call (outgoing)
Endpoint | Operation | Description |
---|---|---|
POST /session | Create a Voice session | Create an Outbound (1-1) Voice session. This request when received at the WebRTC GW triggers an outgoing call request into the MNO's IMS network. The call setup status (inprogress, ringing, connected, release) is sent over the websocket notification channel. |
PUT /session/{sessionId}/status | Modify a Voice session | This modification request is to modify the call object attributes such as media properties included in the SDP (e.g. call placed on hold). |
DELETE /session/{sessionId} | Delete a Voice session | When the call is released from the client's end, the corresponding Voice session object is deleted, which will trigger the WebRTC GW to initiate a Call release into the CSP's IMS network. |
ย | ย | When the call is released from the network's end, the call release notification is sent over the websocket notification channel, which will result in deleting of the Voice session object. |
OneToOne Call (incoming)
Endpoint | Operation | Description |
---|---|---|
ย | ย | Notification for inbound call is received via the websocket notification channel. The Voice session object is created by default prior to sending this inbound call notification. |
PUT /session/{sessionId}/status | Modify a Voice session | This modification request is to modify the call object attributes such as media properties included in the SDP (e.g. call placed on hold). |
DELETE /session/{sessionId} | Delete a Voice session | When the call is terminated from the client's end, the corresponding Voice session object is deleted, which will trigger the WebRTC GW to initiate a Call release into the MNO's IMS network. |
ย | ย | When the call is released from the network's end, the call release notification is sent over the websocket notification channel, which will result in deleting of the Voice session object. |
Event status enumeration
There are defined a series of status for the call. These status are used by the session endpoint for PUT actions and also used by the event notification channel.
Status are:
Status | SIP Response | Description |
---|---|---|
| n/a | Initial status of transaction |
| 183 Session progress | Updated info about a session |
| 180 Ringing | Destination user agent is alerting the user |
| n/a | Call progressing |
| 200 OK | Session in place |
| n/a | The call is being terminated, but not defined the reason. It needs to add a "reason" |
| n/a | Status when a call on hold |
| n/a | Status for a call that is resumed |
| n/a | 487 Resquest terminated or CANCEL+200OK |
| 603 Decline | The destination does not want to participate |
| 412 / 430 | Call terminated and failed without 200 OK |
| 182 Queued | Call pending to be processed |
| 408 Request Timeout | No answer before timer expires |
| 404 Not found | Destination requested not found |
| 486 Busy here | Callee is busy |
ย