Return to LanScape's home page Go back a page...       Active TopicsActive Topics   Display List of Forum MembersMember List   Knowledge Base SearchSearch   HelpHelp  RegisterRegister  LoginLogin

LanScape VOIP Media Engine™ - Technical Support
 LanScape Support Forum -> LanScape VOIP Media Engine™ - Technical Support
Subject Topic: Trying to connect in and outgoing calls - Media Bridge Post ReplyPost New Topic
Author
Message << Prev Topic | Next Topic >>
niko888
Intermediate
Intermediate


Joined: December 10 2006
Location: United States
Posts: 3
Posted: December 11 2006 at 8:56pm | IP Logged Quote niko888

Hi there,

we are trying to use the Media Engine for the following scenario:

A user is placing a call and the SIP proxy is sending him to our application. The call gets connected and the system then is starting another call to a far enpoint (VoIP carrier gateway)while we decide on the second call which codecs should be used (transcoding between call legs) and where the calls need to be routed to. We need that for a edge proxy application. We tried to solve it using your conference feature but this way we can only handle one incoming call at a time which is not sufficient. We need to connect unlimited incoming and outgoing calls. Any idea of how to approach that? Is there a "hidden" (b2bua) back2back user agent functionality we have not seen yet? A hint would be greatly appreciated.

call 1.
call -> lanscape proxy -> our app takes call, connects to outgoing call leg -> voip carrier A
call 2.
call -> lanscape proxy -> our app takes call, connects to outgoing call leg -> voip carrier B
etc.

Best regards

niko888
Back to Top View niko888's Profile Search for other posts by niko888
 
support
Administrator
Administrator


Joined: January 26 2005
Location: United States
Posts: 1666
Posted: December 12 2006 at 11:51am | IP Logged Quote support

Hi niko888,

This sounds like a typical “Media Bridge” application.

Here is how we normally handle situations like this:

1) The VOIP Media Engine in the media bridge app should be configured using SWITCH_LINE mode. See the LineMode structure member of the START_SIP_TELEPHONY_PARAMS structure. Also, the Media engine should not use local multimedia audio – it’s not needed. Not enabling multimedia audio will help to reduce CPU usage.

2)
Some SIP user agent (soft phone) makes a call using the proxy.

3)
The proxy is set up to route the call to your VOIP Media Engine “Media Bridge” application. We will arbitrarily assume that the soft phone wants to use iLBC 20Ms media – however it could use any media type supported by the “Media Bridge” application (VOIP Media Engine).

4)
The “Media Bridge” app (based on its own rules) places another call to the appropriate VoIP carrier gateway using the required gateway codec (probably G729). Once the VoIP carrier gateway answers the outgoing call, the “Media Bridge” app will answer the incoming call originating from the soft phone.

5) Here is the important step: Once both “call legs” are established, your “Media Bridge” app can use the receive IVR and transmit IVR interfaces of each call to “tie” the 2 phone calls together. Remember, we have 2 calls going on. The call from the original soft phone and the call the “Media Bridge” app made to the gateway.

By connecting the 2 separate phone lines via the Rx and Tx IVR interfaces, you can effectively wire the 2 calls together and not have to worry about format/rate conversion. The media engine will do all of that for you.

In the Developer’s reference see the following sections for Tx and Rx IVR interfaces:

IVR Phone Line - Receiver Interface
IVR Phone Line – Transmitter Interface


6) If either side of the “Media Bridge” call terminates the call, your “Media Bridge” application should simply hang up the other related phone line and terminate the cross wiring using the Tx and Rx IVR interfaces of the used phone lines.

In the above scenario – calls 1 and 2 from your original description are completely isolated from one another.

If this is not exactly what you need, repost so we can go further.


Support
Back to Top View support's Profile Search for other posts by support Visit support's Homepage
 
niko888
Intermediate
Intermediate


Joined: December 10 2006
Location: United States
Posts: 3
Posted: December 12 2006 at 5:00pm | IP Logged Quote niko888

Thank you very much! Works like a charm!

Time to buy a license for more lines:-)

Best

niko888
Back to Top View niko888's Profile Search for other posts by niko888
 
niko888
Intermediate
Intermediate


Joined: December 10 2006
Location: United States
Posts: 3
Posted: December 12 2006 at 5:12pm | IP Logged Quote niko888

And now there is the next challenge. Since A and B are completely isolated what would be the easiest way to tell A what's going on during the call setup? For example if the caller is connected to A and B is getting a busy signal we need to pass this information to A. Any hint in the right direction would be appreciated.

Best

niko888
Back to Top View niko888's Profile Search for other posts by niko888
 
support
Administrator
Administrator


Joined: January 26 2005
Location: United States
Posts: 1666
Posted: December 13 2006 at 6:49am | IP Logged Quote support

Hi niko888,

Sorry. We don’t quite understand what you want to do. From the original problem description you posted we thought your application was representative of a B2BUA or a “media bridge”.

Our understanding is that “Call 1” to “VOIP carrier A” should be totally isolated from “Call 2” to “VOIP carrier B” in all respects.

Maybe we are being mentally challenged here right now. We are not sure what you mean. Please elaborate a bit more and we will assist further.


Support
Back to Top View support's Profile Search for other posts by support Visit support's Homepage
 
support
Administrator
Administrator


Joined: January 26 2005
Location: United States
Posts: 1666
Posted: December 13 2006 at 10:05am | IP Logged Quote support

Hi niko888,

We know that you are working with us on other development projects. We checked with another person here and we now understand your last request.

Let’s take the following example:

1)
A soft phone calls a certain phone number using the Centrex SIP proxy server.

2)
The SIP proxy then decides that the call must be forwarded to an “edge proxy” (or “media bridge”) that is developed by you using the VOIP Media Engine. I will use the term “media bridge” for the VOIP Media Engine application because that is the term we use here.

3)
The media bridge detects the incoming call from the proxy. We will identify this as “call leg 1”. This signals the media bridge to determine what VOIP gateway the call should further be routed to.

The media bridge then starts another call to the appropriate VOIP gateway. This is “call leg 2”.

4)
As you stated, what you need is to be able to terminate “call leg 1” using a defined SIP error code in the case that “call leg 2” to the gateway cannot be completed or experiences and error (like 486 “Busy Here”).


You can currently do this in your application but with limited error information passed back to the originating soft phone.

For example:
Right now, if the media engine calls the gateway (“call leg 2”), it can detect the following events:

Gateway lines are all consumed and the gateway returns “busy” (SipFarEndIsBusy)
All other gateway errors (SipFarEndError).
Gateway accepts the call (SipInCall).

Using the “event log” capability of the media engine, here are example event streams that can be sent to an application for these scenarios:

Code:

"Call leg 2" - Gateway is busy:
IMMEDIATE_NOTIFICATION, Phone Line 0, SipOutgoingCallInitializing
PHONE_LINE_NOTIFICATION, Phone Line 0: SipOutgoingCallStart
PHONE_LINE_NOTIFICATION, Phone Line 0: SipDialTone
PHONE_LINE_NOTIFICATION, Phone Line 0: SipDialing
PHONE_LINE_NOTIFICATION, Phone Line 0: SipSendInvite
IMMEDIATE_NOTIFICATION, SipModifySipMessage
PHONE_LINE_NOTIFICATION, Phone Line 0: SipStartOutgoingRing
IMMEDIATE_NOTIFICATION, SipModifySipMessage
PHONE_LINE_NOTIFICATION, Phone Line 0: SipReceivedProvisionalResponse
PHONE_LINE_NOTIFICATION, Phone Line 0: SipReceived100Trying
PHONE_LINE_NOTIFICATION, Phone Line 0: SipWaitForInviteOk
IMMEDIATE_NOTIFICATION, SipModifySipMessage
PHONE_LINE_NOTIFICATION, Phone Line 0: SipFarEndIsBusy
IMMEDIATE_NOTIFICATION, SipModifySipMessage
PHONE_LINE_NOTIFICATION, Phone Line 0: SipOnHook

"Call leg 2" - All other gateway errors.
IMMEDIATE_NOTIFICATION, Phone Line 0, SipOutgoingCallInitializing
PHONE_LINE_NOTIFICATION, Phone Line 0: SipOutgoingCallStart
PHONE_LINE_NOTIFICATION, Phone Line 0: SipDialTone
PHONE_LINE_NOTIFICATION, Phone Line 0: SipDialing
PHONE_LINE_NOTIFICATION, Phone Line 0: SipSendInvite
IMMEDIATE_NOTIFICATION, SipModifySipMessage
IMMEDIATE_NOTIFICATION, SipModifySipMessage
PHONE_LINE_NOTIFICATION, Phone Line 0: SipStartOutgoingRing
IMMEDIATE_NOTIFICATION, SipModifySipMessage
PHONE_LINE_NOTIFICATION, Phone Line 0: SipReceivedProvisionalResponse
PHONE_LINE_NOTIFICATION, Phone Line 0: SipReceived100Trying
PHONE_LINE_NOTIFICATION, Phone Line 0: SipWaitForInviteOk
PHONE_LINE_NOTIFICATION, Phone Line 0: SipReceived180Ringing
IMMEDIATE_NOTIFICATION, SipModifySipMessage
PHONE_LINE_NOTIFICATION, Phone Line 0: SipFarEndError
IMMEDIATE_NOTIFICATION, SipModifySipMessage
PHONE_LINE_NOTIFICATION, Phone Line 0: SipOnHook


"Call leg 2" – Accepted by the gateway:
IMMEDIATE_NOTIFICATION, Phone Line 0, SipOutgoingCallInitializing
PHONE_LINE_NOTIFICATION, Phone Line 0: SipOutgoingCallStart
PHONE_LINE_NOTIFICATION, Phone Line 0: SipDialTone
PHONE_LINE_NOTIFICATION, Phone Line 0: SipDialing
PHONE_LINE_NOTIFICATION, Phone Line 0: SipSendInvite
IMMEDIATE_NOTIFICATION, SipModifySipMessage
IMMEDIATE_NOTIFICATION, SipModifySipMessage
PHONE_LINE_NOTIFICATION, Phone Line 0: SipStartOutgoingRing
IMMEDIATE_NOTIFICATION, SipModifySipMessage
PHONE_LINE_NOTIFICATION, Phone Line 0: SipReceivedProvisionalResponse
PHONE_LINE_NOTIFICATION, Phone Line 0: SipReceived100Trying
PHONE_LINE_NOTIFICATION, Phone Line 0: SipWaitForInviteOk
PHONE_LINE_NOTIFICATION, Phone Line 0: SipReceived180Ringing
IMMEDIATE_NOTIFICATION, SipModifySipMessage
PHONE_LINE_NOTIFICATION, Phone Line 0: SipInviteOkReceived
PHONE_LINE_NOTIFICATION, Phone Line 0: SipSendInviteAck
IMMEDIATE_NOTIFICATION, SipModifySipMessage
PHONE_LINE_NOTIFICATION, Phone Line 0: SipOutgoingCallConnected
PHONE_LINE_NOTIFICATION, Phone Line 0: SipInCall


If the media bridge application detects the SipFarEndIsBusy or SipFarEndError events, then it knows that “call leg 2” to the gateway cannot be completed. In this case, the media bridge can abort “call leg 1” using the AbortIncomingCall() API procedure.

The only problem with this approach is that the originating soft phone will not be relayed the actual error code of the gateway. The soft phone will receive an error code of "480 Temporarily Unavailable" due to the media bridge executing the AbortIncomingCall() API procedure for “call leg 1”.


If we want to relay the actual gateway error response codes (or other error codes) to the soft phone, we will need to add additional functionality to the media engine. You can activate your support contract so that we may do this work.

It would amount to adding a new event that will be sent to the media bridge application that would specify the returned “call leg 2” SIP error code from the gateway. Also, the AbortIncomingCall() API procedure would need to be modified so that it can accept a SIP error code instead of simply defaulting to "480 Temporarily Unavailable".


Support
Back to Top View support's Profile Search for other posts by support Visit support's Homepage
 

If you wish to post a reply to this topic you must first login
If you are not already registered you must first register

  Post ReplyPost New Topic
Printable version Printable version

Forum Jump
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot delete your posts in this forum
You cannot edit your posts in this forum
You cannot create polls in this forum
You cannot vote in polls in this forum






Contact LanScape Hear what the Lawyers have to say How youm may use this site Read your privacy rights