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 and meeting_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_idIn the URL. EnableX Video Room ID to which the Call will be bridged
fromCLI of EnableX Phone Number
toDestination / Dial-Out Phone Number
t

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_idIn the URL. EnableX Video Room ID to which the Call will be bridged
voice_idIn the URL. Voice-ID of the Call which needs to be bridged with the Room
t

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_idIn the URL. EnableX Video Room ID to from where the Voice Call will be removed
voice_idIn the URL. Voice-ID of the Call which needs to be bridged with the Room
t

Response JSON

{ 
	state : "removed",  
	voice_id : "String",
	room_id: "String" 
} 

Error Codes

404room_id / voice_id not found
500Outbound voice call failed / Room join failed
503Service unavailable
407Authentication required