Hi Kristian!
It is easy to catch a on-hold reINVITE: has_totag() and search for
0.0.0.0 in the SDP. But the problem is the whole logic behind it.
Example A calls B. Then B put A on hold. What do you want to achive -
music on hold for A or B? For B IMO it is not necessary as B probably
does something else now. Usually you want MOH for A.
Thus, how to get MOH for A? if A has no built in support for MOH, you
have to:
1. tell you MOH server to send RTP to A
2. make A to accept RTP from the MOH server.
For 1. you have to send an INVITE to the MOH server with the SDP of A -
triggered by a reINVITE from B - quite difficult
For 2. (if A is behind NAT) you have to make A to send RTP to the MOH
server to open the pinhole in the NAT. Thus send a reINVITE to A with
the SDP of the MOH server.
I have no clue how this can be done with openser. For this you need a
B2BUA - like asterisk and sems and the call must be routed from the
beginning via the B2BUA.
regards
klaus
Kristian Kielhofner wrote:
On 5/10/07, Klaus Darilion
<klaus.mailinglists(a)pernau.at> wrote:
Hi!
You cant do MOH in openser. MOH is an endpoint feature. Some phones
allow to configure a MOH URI (SNOM) which I guess is used for reINVITEs.
Maybe you can implement it with sems - catch the on-hold reINVITE and
"tell" sems to stream RTP to the other party - ask the sems guys.
regards
klaus
klaus,
Thanks for the reply. I'm not looking to do anything too special in
openser. If anything, all I need to do is add a check for the address
in the SDP for an INVITE.
Some phones do allow you to configure a MOH URL but not all do. I'd
like to come up with something that will work for me and other people
in the community on any phone. Plain 'ol generic SIP is probably the
only way (this is how Asterisk does it so seamlessly).
If I implement this with SEMS I will have the same problem. As you
said, I still need to "catch" the on-hold re-INVITE from the phone and
send it to SEMS. I already have Asterisk servers (and I'm much more
familiar with Asterisk than SEMS), I might as well try to send the
intercepted (for lack of a better term) re-INVITE to Asterisk (and
have Asterisk process it as a normal call) - not to SEMS (although it
would probably also work for SEMS in place of Asterisk).
It looks like textops might be able to do this in a hack-ish sort of
way... I'll try it and see what happens but I would certainly like
something cleaner.
What would need to be added to OpenSER to support checking for this?
Even exposing a few of the values (perhaps as pseudo-variables) from
the SDP on an INVITE would be a great start. I'm sure that this is
more of a dev list question but I thought that I would ask here
first...
Thanks again for the reply!