Video Server Module of EnableX Voice Server acts as a bridge between Voice call and EnableX Video Room. It provisions the following:
- Distribution of incoming call to EnableX Gateway
- Bridging an ongoing call to existing EnableX Video Room
- Bridging an ongoing call to a new EnableX Video Room
- Better control of incoming voice calls to EnableX video room
Phone Number Management
From Enablex portal, you must select a Phone Number & assign to your Project’s Video Service. Make sure you that used the right Phone Number for your geography and call direction (Incomign and/or Outgoing Call).
Inbound Call Service in to Video Room
If you want to allow the inbound voice calls in to video room, your need to have Inbound Voice enabled in your Subscription. Further, Phone Number with inbound call enabled must be assigned to your Video Project.
Using Video Server API, you need to create your Video Room with settings.sip.enabled:true in the JSON Payload to enable inbound sip/pstn dialing. The response JSON contains sip object as:
{ sip: {
enabled: true,
meeting_id: "String",
pin: "String"
}
}
Use the sip.meeting_id
and sip.pin
while dialing-in to the room in response to IVR Prompt to join.
Outbound Call Service from Video Room
If you want to allow the outbound voice calls from Video Room, your need to have Outbound Voice enabled in your Subscription. Further, Phone Number with outbound call enabled must be assigned to your Video Project.
Client SDK, used to develop Client End-Point Application, provides API for making outbound call from ongoing Video Session. The API initiates call and related Event-Handler notifies Call Progress & Status for you to create effective UI/UX. Refer API Documentation of following Client SDKs:
Integration Overview
Inbound Call to EnableX Video Room
Voice Server does distribution of incoming call for the EnableX Shared and the Exclusive Phone Number. It does the following:
- It plays a prompt to accept the pin and the
meeting_id
from the user - It validates the
pin
andmeeting_id
and retrieves Video Room information from Video Service - Finally, it forwards the call to free EnableX Gateway with
room_id
added in custom header
To use this feature, EnableX Phone Number should be subscribed to Video Room Service.
Outbound Call from EnableX Video Room / Application Server
This functionality allows Application Server to make outbound call to a Phone Number and once the Call is answered it bridges it to EnableX Video Room.
Outbound/Inbound Call to/from ongoing EnableX Video Room
This functionality allows Client End Point Application to make outbound call to a Phone Number from ongoing Video Room. Also, Voice Service allows bridging of Inbound Call to ongoing Video Room.
Outbound/Inbound Call to/from New EnableX Video Room
This functionality allows an ongoing Outbound/Inbound Voice Call may be bridged to a new EnableX Video Room after creating it.
Voice Call as joining EnableX Video Room as Moderator
EnableX Video Service allows Inbound Voice Call to join a Video Room as a Moderator usigng a new mpin
(Moderator PIN). Using Video Server API, you need to create your Video Room with settings.sip.enabled:true in the JSON Payload to enable inbound sip/pstn dialing. The response JSON contains sip object as:
{ sip: {
enabled: true,
meeting_id: "String",
pin: "String",
mpin: "String"
}
}
Note: This is coming up in Phase-II. Currently you get pin
only for joining as participant.
DTMF Control handling for EnableX Video Room
Voice Service handles in-session DTMF Control and passes to EnableX Video Room for execution via EnableX Gateway. Video Room Session Control and User-Line Control Commands for Participant and Moderator are available as DTMF input.
Synchronous CDR handling
Voice Service CDR to EnableX Video Room is identified with voice_id
. Call Progress status, from Call initiation till disconnection all events are logged with the voice_id
for reference of a call’s life-cycle.
Load Balancing
For high avaibility of Voice Service, new Voice Service instance is automatially spinned when incoming call rate increases and no plugin avaialble to handle calls. This also alarms and notifies Event Reportig Module.
Note: This is coming up in Phase-IV.
Voice Server API to connect Video Room
Dial Out a Number & join a Video Room
Use this API Route from Application Server to initiate a call to a Phone Number and bridge it to a EnableX Video Room identified by the given room_id
.
Route: https://api.enablex.io/voice/v1/room/$room_id/join
Request Example:
POST https://api.enablex.io/voice/v1/room/$room_id/join Authorization: Basic XXXXXX Content-Type: application/json { "name": "String", "owner_ref": "String", "from": "Phone_Number", "to": "Phone_Number", "event_url": "Webhook_URL" }
room_id | In the URL. EnableX Video Room ID to which the Call will be bridged |
from | CLI of EnableX Phone Number |
to | Destination / Dial-Out Phone Number |
Response JSON
{ state : "initiated", voice_id : "String", room_id: "String", timestamp: Date }
Event JSON on Webhook
Call Progress or State changes are posted on the Webhook URL. Given below a reference of JSON posted on Webhook when the call joined the Video Room:
{ state : "joined", voice_id : "String", room_id: "String", timestamp: Date }
Bridge an ongoing Inbound/Outbound Voice call to a Video Room
Use this API Route from Application Server to bridge an ongoing Inbound or Outbound Voice Call to a EnableX Video Room.
Route: https://api.enablex.io/voice/v1/room/$room_id/call/$voice_id/join
Request Example:
PUT https://api.enablex.io/voice/v1/room/$room_id/call/$voice_id/join Authorization: Basic XXXXXX
room_id | In the URL. EnableX Video Room ID to which the Call will be bridged |
voice_id | In the URL. Voice-ID of the Call which needs to be bridged with the Room |
Response JSON
{ state : "initiated", voice_id : "String", room_id: "String", timestamp: Date }
Event JSON on Webhook
Call Progress or State changes are posted on the Webhook URL. Given below a reference of JSON posted on Webhook when the call joined the Video Room:
{ state : "joined", voice_id : "String", room_id: "String", timestamp: Date }
Remove bridged Voice Call from a Video Room
Use this API Route from Application Server to remove a bridged Voice Call from a EnableX Video Room.
Route: https://api.enablex.io/voice/v1/room/$room_id/call/$voice_id
Request Example:
DELETE https://api.enablex.io/voice/v1/room/$room_id/call/$voice_id Authorization: Basic XXXXXX
room_id | In the URL. EnableX Video Room ID to from where the Voice Call will be removed |
voice_id | In the URL. Voice-ID of the Call which needs to be bridged with the Room |
Response JSON
{ state : "removed", voice_id : "String", room_id: "String" }
Error Codes
404 | room_id / voice_id not found |
500 | Outbound voice call failed / Room join failed |
503 | Service unavailable |
407 | Authentication required |