Hi,
Victor Gonzalez Chamorro wrote:
El 19/11/2010 10:18 a.m., Stefan Sayer escribió:
Hi,
Victor Gonzalez Chamorro wrote:
Hello,
Im new to sems, i was trying the ivr pin_collect example with refer.
All is working fine, except the refer message. I get a [onSipReply,
AmB2BSession.cpp:199] DEBUG: onSipReply: REFER -> 400 Bad Request
(Refer-to missing) (fwd=false) error.
I want to know if i have to explicitly put the Refer-to in before i call
self.redirect, if so what function should i call to do this
the REFER normally sent out is a custom call-flow REFER, where the
server that takes the call just takes over the whole call with a
Re-Invite (see Readme.pin_collect.txt).
Here you try to explain how a refer works or are you telling me how the
example works?
As I'm sure you know, REFER is a well-defined method (rfc3515).
For load balancing conferences among SEMS servers, and sending
incoming calls where the conference room is not known before the user
has entered it (via keypad DTMF), a custom "transfer" call flow was
invented, which works that way that the conference-bridge-SEMS sends a
Re-INVITE to take over the call, and the pin-collect-SEMS just forgets
the call (without sending BYE). For this to work, the
conference-bridge-sems needs to know the dialog identifiers and the
route set and the next hop. When this proprietary call flow was
implemented in SEMS, unfortunately as method name "REFER" was chosen;
now I would rather name it TRANSFER or something else. note that this
call flow is not specified anywhere else than in the SEMS
documentation, and I doubt that anyone else is using this method (even
though it is really clever).
I've added (git master) another option as "REFER", where a standard
REFER is sent in the dialog, there the Refer-To contains the user and
the pin.
In the example from the last stable version to download, when i try the
application, the refer message was sent out but without the Refer-to
header. That's why i get a 400 error from the server i sent the message.
I made some modifications to the IVR code and change the transfer
function, to the refer function. In the original example code, the
python wrapper call the tranfer function and not the refer. I didnt
understand why was that.
the pin_collect application was meant to be working together with the
SEMS conference application.
now in the git master version, you can select between the two types of
REFER.
btw, it looks like you are routing the REFER back to the SEMS instance
- I don't know if this is what you are actually trying to do.
Im routing the refer thru a Kamailio in the same machine, and then goes
to a softphone in another machine
Stefan
I have another last question, could i make a transfer of a call without
using the refer? just in case you know how
if you want to connect in back-to-back user agent mode, you can from
python use the connectCallee function. SEMS will then send out an
INVITE to the transfer target, and if that one answers, the caller
will get a Re-INVITE with the SDP from the target. SEMS will stay in
the signaling path in that scenario.
If you want to have SEMS stay in both signaling and media paths (and
e.g. mix in something), you can either use DSM with mod_conference
(see e.g. the quizconnect tutorial); or use the AmB2ABSession class
from C++, see b2b_connect example, or callback application, or
jukecall example.
using DSM and the low level signaling events (sipRequest/sipReply),
and mod_dlg, you can also do standard 3PCC with SEMS, but this
requires having a look at the call flows in detail, and possibly
adding some functions to craft sip requests in mod_dlg.
Stefan
Thanks
_______________________________________________
Sems mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/sems
--
Stefan Sayer
VoIP Services Consulting and Development
Warschauer Str. 24
10243 Berlin
tel:+491621366449
sip:[email protected]
email/xmpp:[email protected]
_______________________________________________
Sems mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/sems