[NEW] exchanging info between dialogs

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[NEW] exchanging info between dialogs

Bogdan-Andrei Iancu
Hi,

just added to the dialog module a new function that allow you to
exchange data between dialogs - mainly to extract data from a different
ongoing dialog.

Such functionality is vital in complex scenarios (PBX related) like
attended call transfer - in such cases you may want to route a new call
based on information of existing dialogs.

Real case example:

    OpenSIPS is doing dispatching over a set of Asterisk boxes (which
act as SIP servers).
    A calls B and the call is established (by dispatching from OpenSIPS)
via A1 Asterisk server
    A wants to transfer B to a new party C, so A makes a new call to C
-> this call must end on A1 also, without going via dispatcher in openSIPS.
    So, when A calls C, OpenSIPS will check if A has an already existing
call and if so, it will send the new call to the same Asterisk box as
the existing call.

In such a case, for each call, you need to attached to the call (as
dialog variables) the callee, caller and the Asterisk box . When a new
call is coming, you check if the new caller is already involved in a
call and if so, fetch the value of the proxy in order to send to the
same box.

For more about the technical details of the function, see
       http://www.opensips.org/html/docs/modules/devel/dialog.html#id272137

Regards,
Bogdan

--
Bogdan-Andrei Iancu
www.voice-system.ro


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: [NEW] exchanging info between dialogs

erik pepermans
Hi,

I have the following scenario :


A1 asterisk server initiates a call to A2 asterisk server thru opensips;
This A2 calls A and A lands on A1 asking A to dial a number. A then
initiates a new call to A2 asterisk server thru opensips which calls B. A
talks to B.

The issue is that when B hangs up the 'BYE' message is not sent to A1, but
twice to A2. The session on A1 hangs forever.

Does the below fix this ?

Brgds
Erik

-----Oorspronkelijk bericht-----
Van: [hidden email]
[mailto:[hidden email]] Namens Bogdan-Andrei Iancu
Verzonden: woensdag 28 april 2010 17:47
Aan: [hidden email]; [hidden email];
[hidden email]
Onderwerp: [OpenSIPS-Users] [NEW] exchanging info between dialogs


Hi,

just added to the dialog module a new function that allow you to
exchange data between dialogs - mainly to extract data from a different
ongoing dialog.

Such functionality is vital in complex scenarios (PBX related) like
attended call transfer - in such cases you may want to route a new call
based on information of existing dialogs.

Real case example:

    OpenSIPS is doing dispatching over a set of Asterisk boxes (which
act as SIP servers).
    A calls B and the call is established (by dispatching from OpenSIPS)
via A1 Asterisk server
    A wants to transfer B to a new party C, so A makes a new call to C
-> this call must end on A1 also, without going via dispatcher in openSIPS.
    So, when A calls C, OpenSIPS will check if A has an already existing
call and if so, it will send the new call to the same Asterisk box as
the existing call.

In such a case, for each call, you need to attached to the call (as
dialog variables) the callee, caller and the Asterisk box . When a new
call is coming, you check if the new caller is already involved in a
call and if so, fetch the value of the proxy in order to send to the
same box.

For more about the technical details of the function, see
       http://www.opensips.org/html/docs/modules/devel/dialog.html#id272137

Regards,
Bogdan

--
Bogdan-Andrei Iancu
www.voice-system.ro


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.



--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: [NEW] exchanging info between dialogs

Bogdan-Andrei Iancu
Hi Erik,

how does your opensips distribute the requests among the asterisk
servers ? dispatching? or ?

Regards,
Bogdan

erik pepermans wrote:

> Hi,
>
> I have the following scenario :
>
>
> A1 asterisk server initiates a call to A2 asterisk server thru opensips;
> This A2 calls A and A lands on A1 asking A to dial a number. A then
> initiates a new call to A2 asterisk server thru opensips which calls B. A
> talks to B.
>
> The issue is that when B hangs up the 'BYE' message is not sent to A1, but
> twice to A2. The session on A1 hangs forever.
>
> Does the below fix this ?
>
> Brgds
> Erik
>
> -----Oorspronkelijk bericht-----
> Van: [hidden email]
> [mailto:[hidden email]] Namens Bogdan-Andrei Iancu
> Verzonden: woensdag 28 april 2010 17:47
> Aan: [hidden email]; [hidden email];
> [hidden email]
> Onderwerp: [OpenSIPS-Users] [NEW] exchanging info between dialogs
>
>
> Hi,
>
> just added to the dialog module a new function that allow you to
> exchange data between dialogs - mainly to extract data from a different
> ongoing dialog.
>
> Such functionality is vital in complex scenarios (PBX related) like
> attended call transfer - in such cases you may want to route a new call
> based on information of existing dialogs.
>
> Real case example:
>
>     OpenSIPS is doing dispatching over a set of Asterisk boxes (which
> act as SIP servers).
>     A calls B and the call is established (by dispatching from OpenSIPS)
> via A1 Asterisk server
>     A wants to transfer B to a new party C, so A makes a new call to C
> -> this call must end on A1 also, without going via dispatcher in openSIPS.
>     So, when A calls C, OpenSIPS will check if A has an already existing
> call and if so, it will send the new call to the same Asterisk box as
> the existing call.
>
> In such a case, for each call, you need to attached to the call (as
> dialog variables) the callee, caller and the Asterisk box . When a new
> call is coming, you check if the new caller is already involved in a
> call and if so, fetch the value of the proxy in order to send to the
> same box.
>
> For more about the technical details of the function, see
>        http://www.opensips.org/html/docs/modules/devel/dialog.html#id272137
>
> Regards,
> Bogdan
>
>  


--
Bogdan-Andrei Iancu
www.voice-system.ro


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: [NEW] exchanging info between dialogs

erik pepermans
Hi Bogdan,

I included an ngrep sip trace file which should explain :

2 asterisk servers on public addresses 11.01.01.001 and 22.02.02.002 are
connected to OpenSIPS which listens on port 5071 at private address
192.168.5.1 (public address 99.09.09.009)

- 11.01.01.001 sends an invite to 192.168.5.1 with the phone number of A
- 192.168.5.1 prefixes the phone number of A via drouting module
- 192.168.5.1 sends an invite to 22.02.02.002 with the prefixed phone number
of A
- 22.02.02.002 dials A
- A picks up the phone and dials the phone number of B
- 22.02.02.002 sends an invite to 192.168.5.1 with the phone number of B
- 192.168.5.1 prefixes the phone number of B via drouting module
- 192.168.5.1 sends an invite to 22.02.02.002 with the prefixed phone number
of B
- 22.02.02.002 dials B
- B picks up the phone and talks to A

So far so good; both legs have their own dialog did; then

- B hangs up
- 22.02.02.002 sends BYE to 192.168.5.1
- 192.168.5.1 sends BYE to 22.02.02.002 where I expect it should go to
11.01.01.001

11.01.01.001 never receives a BYE and keeps the session live forever -

Thanks for your effort -

Brgds
Erik

-----Oorspronkelijk bericht-----
Van: [hidden email]
[mailto:[hidden email]] Namens Bogdan-Andrei Iancu
Verzonden: maandag 10 mei 2010 14:47
Aan: OpenSIPS users mailling list
Onderwerp: Re: [OpenSIPS-Users] [NEW] exchanging info between dialogs


Hi Erik,

how does your opensips distribute the requests among the asterisk
servers ? dispatching? or ?

Regards,
Bogdan

erik pepermans wrote:

> Hi,
>
> I have the following scenario :
>
>
> A1 asterisk server initiates a call to A2 asterisk server thru opensips;
> This A2 calls A and A lands on A1 asking A to dial a number. A then
> initiates a new call to A2 asterisk server thru opensips which calls B. A
> talks to B.
>
> The issue is that when B hangs up the 'BYE' message is not sent to A1, but
> twice to A2. The session on A1 hangs forever.
>
> Does the below fix this ?
>
> Brgds
> Erik
>
> -----Oorspronkelijk bericht-----
> Van: [hidden email]
> [mailto:[hidden email]] Namens Bogdan-Andrei Iancu
> Verzonden: woensdag 28 april 2010 17:47
> Aan: [hidden email]; [hidden email];
> [hidden email]
> Onderwerp: [OpenSIPS-Users] [NEW] exchanging info between dialogs
>
>
> Hi,
>
> just added to the dialog module a new function that allow you to
> exchange data between dialogs - mainly to extract data from a different
> ongoing dialog.
>
> Such functionality is vital in complex scenarios (PBX related) like
> attended call transfer - in such cases you may want to route a new call
> based on information of existing dialogs.
>
> Real case example:
>
>     OpenSIPS is doing dispatching over a set of Asterisk boxes (which
> act as SIP servers).
>     A calls B and the call is established (by dispatching from OpenSIPS)
> via A1 Asterisk server
>     A wants to transfer B to a new party C, so A makes a new call to C
> -> this call must end on A1 also, without going via dispatcher in
openSIPS.

>     So, when A calls C, OpenSIPS will check if A has an already existing
> call and if so, it will send the new call to the same Asterisk box as
> the existing call.
>
> In such a case, for each call, you need to attached to the call (as
> dialog variables) the callee, caller and the Asterisk box . When a new
> call is coming, you check if the new caller is already involved in a
> call and if so, fetch the value of the proxy in order to send to the
> same box.
>
> For more about the technical details of the function, see
>
http://www.opensips.org/html/docs/modules/devel/dialog.html#id272137
>
> Regards,
> Bogdan
>
>  


--
Bogdan-Andrei Iancu
www.voice-system.ro


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.


--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

zzcb.txt (21K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [NEW] exchanging info between dialogs

Bogdan-Andrei Iancu
Hi Erik,

erik pepermans wrote:

> Hi Bogdan,
>
> I included an ngrep sip trace file which should explain :
>
> 2 asterisk servers on public addresses 11.01.01.001 and 22.02.02.002 are
> connected to OpenSIPS which listens on port 5071 at private address
> 192.168.5.1 (public address 99.09.09.009)
>
> - 11.01.01.001 sends an invite to 192.168.5.1 with the phone number of A
> - 192.168.5.1 prefixes the phone number of A via drouting module
> - 192.168.5.1 sends an invite to 22.02.02.002 with the prefixed phone number
> of A
> - 22.02.02.002 dials A
> - A picks up the phone and dials the phone number of B
> - 22.02.02.002 sends an invite to 192.168.5.1 with the phone number of B
> - 192.168.5.1 prefixes the phone number of B via drouting module
> - 192.168.5.1 sends an invite to 22.02.02.002 with the prefixed phone number
> of B
> - 22.02.02.002 dials B
> - B picks up the phone and talks to A
>
> So far so good; both legs have their own dialog did; then
>
> - B hangs up
> - 22.02.02.002 sends BYE to 192.168.5.1
> - 192.168.5.1 sends BYE to 22.02.02.002 where I expect it should go to
> 11.01.01.001
>  
why do you expect to be send to 001 ? B is involved in only one dialog
(second one) between A (behind .002) and B (behind .002)...  So, why the
BYE should be sent to .001 when the other call leg (A) is behind .002 ??

Regards,
Bogdan

> 11.01.01.001 never receives a BYE and keeps the session live forever -
>
> Thanks for your effort -
>
> Brgds
> Erik
>
> -----Oorspronkelijk bericht-----
> Van: [hidden email]
> [mailto:[hidden email]] Namens Bogdan-Andrei Iancu
> Verzonden: maandag 10 mei 2010 14:47
> Aan: OpenSIPS users mailling list
> Onderwerp: Re: [OpenSIPS-Users] [NEW] exchanging info between dialogs
>
>
> Hi Erik,
>
> how does your opensips distribute the requests among the asterisk
> servers ? dispatching? or ?
>
> Regards,
> Bogdan
>
> erik pepermans wrote:
>  
>> Hi,
>>
>> I have the following scenario :
>>
>>
>> A1 asterisk server initiates a call to A2 asterisk server thru opensips;
>> This A2 calls A and A lands on A1 asking A to dial a number. A then
>> initiates a new call to A2 asterisk server thru opensips which calls B. A
>> talks to B.
>>
>> The issue is that when B hangs up the 'BYE' message is not sent to A1, but
>> twice to A2. The session on A1 hangs forever.
>>
>> Does the below fix this ?
>>
>> Brgds
>> Erik
>>
>> -----Oorspronkelijk bericht-----
>> Van: [hidden email]
>> [mailto:[hidden email]] Namens Bogdan-Andrei Iancu
>> Verzonden: woensdag 28 april 2010 17:47
>> Aan: [hidden email]; [hidden email];
>> [hidden email]
>> Onderwerp: [OpenSIPS-Users] [NEW] exchanging info between dialogs
>>
>>
>> Hi,
>>
>> just added to the dialog module a new function that allow you to
>> exchange data between dialogs - mainly to extract data from a different
>> ongoing dialog.
>>
>> Such functionality is vital in complex scenarios (PBX related) like
>> attended call transfer - in such cases you may want to route a new call
>> based on information of existing dialogs.
>>
>> Real case example:
>>
>>     OpenSIPS is doing dispatching over a set of Asterisk boxes (which
>> act as SIP servers).
>>     A calls B and the call is established (by dispatching from OpenSIPS)
>> via A1 Asterisk server
>>     A wants to transfer B to a new party C, so A makes a new call to C
>> -> this call must end on A1 also, without going via dispatcher in
>>    
> openSIPS.
>  
>>     So, when A calls C, OpenSIPS will check if A has an already existing
>> call and if so, it will send the new call to the same Asterisk box as
>> the existing call.
>>
>> In such a case, for each call, you need to attached to the call (as
>> dialog variables) the callee, caller and the Asterisk box . When a new
>> call is coming, you check if the new caller is already involved in a
>> call and if so, fetch the value of the proxy in order to send to the
>> same box.
>>
>> For more about the technical details of the function, see
>>
>>    
> http://www.opensips.org/html/docs/modules/devel/dialog.html#id272137
>  
>> Regards,
>> Bogdan
>>
>>  
>>    
>
>
>  
> ------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> [hidden email]
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users


--
Bogdan-Andrei Iancu
www.voice-system.ro


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: [NEW] exchanging info between dialogs

erik pepermans
In reply to this post by erik pepermans
Hi Bogdan,

I presume the first BYE to OpenSIPS should be forwarded to 11.01.01.001 ?

What do you suggest as a solution ?


U 2010/05/06 22:50:01.372924 22.02.02.002:5060 -> 192.168.5.1:5071
BYE sip:0479984159@11.01.01.001 SIP/2.0.
Via: SIP/2.0/UDP 22.02.02.002:5060;branch=z9hG4bK09456547;rport.
Route: <sip:192.168.5.1:5071;lr=on;did=244.7d4366b6>.
From: <sip:0479984159@192.168.5.1:5071>;tag=as467b1d3e.
To: "0479984159" <sip:[hidden email]>;tag=as1a9a691f.
Call-ID: [hidden email].
CSeq: 102 BYE.
User-Agent: Asterisk PBX.
Max-Forwards: 70.
X-Asterisk-HangupCause: Normal Clearing.
X-Asterisk-HangupCauseCode: 16.
Content-Length: 0.
.

#
U 2010/05/06 22:50:01.390636 192.168.5.1:5071 -> 22.02.02.002:5060
BYE sip:0479984159@22.02.02.002:5060 SIP/2.0.
Via: SIP/2.0/UDP 192.168.5.1:5071;branch=z9hG4bK1133.551ea136.0.
Via: SIP/2.0/UDP
22.02.02.002:5060;received=22.02.02.002;branch=z9hG4bK09456547;rport=5060.
From: <sip:0479984159@192.168.5.1:5071>;tag=as467b1d3e.
To: "0479984159" <sip:[hidden email]>;tag=as1a9a691f.
Call-ID: [hidden email].
CSeq: 102 BYE.
User-Agent: Asterisk PBX.
Max-Forwards: 69.
X-Asterisk-HangupCause: Normal Clearing.
X-Asterisk-HangupCauseCode: 16.
Content-Length: 0.

Brgds
Erik

-----Oorspronkelijk bericht-----
Van: [hidden email]
[mailto:[hidden email]] Namens erik pepermans
Verzonden: maandag 10 mei 2010 23:11
Aan: 'OpenSIPS users mailling list'
Onderwerp: Re: [OpenSIPS-Users] [NEW] exchanging info between dialogs


Hi Bogdan,

I included an ngrep sip trace file which should explain :

2 asterisk servers on public addresses 11.01.01.001 and 22.02.02.002 are
connected to OpenSIPS which listens on port 5071 at private address
192.168.5.1 (public address 99.09.09.009)

- 11.01.01.001 sends an invite to 192.168.5.1 with the phone number of A
- 192.168.5.1 prefixes the phone number of A via drouting module
- 192.168.5.1 sends an invite to 22.02.02.002 with the prefixed phone number
of A
- 22.02.02.002 dials A
- A picks up the phone and dials the phone number of B
- 22.02.02.002 sends an invite to 192.168.5.1 with the phone number of B
- 192.168.5.1 prefixes the phone number of B via drouting module
- 192.168.5.1 sends an invite to 22.02.02.002 with the prefixed phone number
of B
- 22.02.02.002 dials B
- B picks up the phone and talks to A

So far so good; both legs have their own dialog did; then

- B hangs up
- 22.02.02.002 sends BYE to 192.168.5.1
- 192.168.5.1 sends BYE to 22.02.02.002 where I expect it should go to
11.01.01.001

11.01.01.001 never receives a BYE and keeps the session live forever -

Thanks for your effort -

Brgds
Erik

-----Oorspronkelijk bericht-----
Van: [hidden email]
[mailto:[hidden email]] Namens Bogdan-Andrei Iancu
Verzonden: maandag 10 mei 2010 14:47
Aan: OpenSIPS users mailling list
Onderwerp: Re: [OpenSIPS-Users] [NEW] exchanging info between dialogs


Hi Erik,

how does your opensips distribute the requests among the asterisk
servers ? dispatching? or ?

Regards,
Bogdan

erik pepermans wrote:

> Hi,
>
> I have the following scenario :
>
>
> A1 asterisk server initiates a call to A2 asterisk server thru opensips;
> This A2 calls A and A lands on A1 asking A to dial a number. A then
> initiates a new call to A2 asterisk server thru opensips which calls B. A
> talks to B.
>
> The issue is that when B hangs up the 'BYE' message is not sent to A1, but
> twice to A2. The session on A1 hangs forever.
>
> Does the below fix this ?
>
> Brgds
> Erik
>
> -----Oorspronkelijk bericht-----
> Van: [hidden email]
> [mailto:[hidden email]] Namens Bogdan-Andrei Iancu
> Verzonden: woensdag 28 april 2010 17:47
> Aan: [hidden email]; [hidden email];
> [hidden email]
> Onderwerp: [OpenSIPS-Users] [NEW] exchanging info between dialogs
>
>
> Hi,
>
> just added to the dialog module a new function that allow you to
> exchange data between dialogs - mainly to extract data from a different
> ongoing dialog.
>
> Such functionality is vital in complex scenarios (PBX related) like
> attended call transfer - in such cases you may want to route a new call
> based on information of existing dialogs.
>
> Real case example:
>
>     OpenSIPS is doing dispatching over a set of Asterisk boxes (which
> act as SIP servers).
>     A calls B and the call is established (by dispatching from OpenSIPS)
> via A1 Asterisk server
>     A wants to transfer B to a new party C, so A makes a new call to C
> -> this call must end on A1 also, without going via dispatcher in
openSIPS.

>     So, when A calls C, OpenSIPS will check if A has an already existing
> call and if so, it will send the new call to the same Asterisk box as
> the existing call.
>
> In such a case, for each call, you need to attached to the call (as
> dialog variables) the callee, caller and the Asterisk box . When a new
> call is coming, you check if the new caller is already involved in a
> call and if so, fetch the value of the proxy in order to send to the
> same box.
>
> For more about the technical details of the function, see
>
http://www.opensips.org/html/docs/modules/devel/dialog.html#id272137
>
> Regards,
> Bogdan
>
>  


--
Bogdan-Andrei Iancu
www.voice-system.ro


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.


--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.



--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users