Hello,
I have encountered a problem with connecting a call to a web conference
via B2B
My setup is as per the tutorial and has
ser 10.1.39.11:5060 forwarding calls to localhost 127.0.0.1:10070
ser 10.1.39.11:10070 / 127.0.0.1:10070 receives and processes calls for sems
sems hosts the usual collection of applications including my python ivr
application and webconference
The call sequence:
sip:[EMAIL PROTECTED] calls my ser-sems setup at 10.1.39.5060 and is
connected to my application
my application uses di methods to create a web conference
[EMAIL PROTECTED]:10070 and dial out to other attendees
my application then uses connectCallee to connect a B2B leg of the
original call to [EMAIL PROTECTED]:10070
An SDP parsing error is then returned.
The reason I want to use a B2B leg is so that when the originator
sip:[EMAIL PROTECTED] hangs up, my application can kick all the other users
out and close the conference.
The relevant log section is
sip_request.webconference
INVITE
00077901
10.1.39.11
10.1.39.11
10070
sip:[EMAIL PROTECTED]:10070
sip:[EMAIL PROTECTED]:10070
"Comcen 1" <sip:[EMAIL PROTECTED]>
<sip:[EMAIL PROTECTED]:10070>
[EMAIL PROTECTED]
3AA62A3A-4871DFB9000C390F-B7222B90
10
21518:81063001
.
.
P-MsgFlags: 0
.
>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:127): req.method = <INVITE>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:128): req.user = <00077901>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:129): req.domain =
<10.1.39.11>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:130): req.dstip =
<10.1.39.11>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:131): req.port = <10070>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:132): req.r_uri =
<sip:[EMAIL PROTECTED]:10070>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:133): req.from_uri =
<sip:[EMAIL PROTECTED]:10070>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:134): req.from = <"Comcen
1" <sip:[EMAIL PROTECTED]>>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:135): req.to =
<<sip:[EMAIL PROTECTED]:10070>>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:136): req.callid =
<[EMAIL PROTECTED]>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:137): req.from_tag =
<3AA62A3A-4871DFB9000C390F-B7222B90>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:138): req.to_tag = <>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:141): cseq_str = <10>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:147): cseq = <10>(10)
(15884) DEBUG: execute (AmInterfaceHandler.cpp:149): req.key =
<21518:81063001>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:150): req.route = <>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:151): req.next_hop = <>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:156): hdrs = <P-MsgFlags: 0
>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:161): body = <>
(15884) DEBUG: execute (AmInterfaceHandler.cpp:172): Request OK:
dispatch it!
(15884) DEBUG: onInvite (WebConference.cpp:195): direct room access
match. connecting to room '901'
(15884) DEBUG: WebConferenceDialog (WebConference.cpp:563): set conf_id
to 901
(15884) DEBUG: setPlayoutType (AmRtpAudio.cpp:219): Adaptive playout
buffer activated
(15884) DEBUG: setLocalTag (AmSession.cpp:205):
AmSession::setLocalTag(4A15194A-4871DFB9000C85B3-B7FD98E0)
(15884) DEBUG: start (AmThread.cpp:135): Thread 0 is just created.
(15884) DEBUG: postEvent (AmEventQueue.cpp:48): AmEventQueue: trying to
post event
(15884) DEBUG: postEvent (AmEventQueue.cpp:56): AmEventQueue: event posted
(15884) DEBUG: run (AmServer.cpp:93): revents = 0
(15884) DEBUG: write (AmPlayoutBuffer.cpp:42): initialized recv_offset
with 388778017 (100720 - 388878737)
(15884) DEBUG: _start (AmThread.cpp:68): Thread 3069311888 is starting.
(15884) DEBUG: processEvents (AmEventQueue.cpp:69): before processing event
(15884) DEBUG: process (AmSession.cpp:425): AmSession::process
(15884) DEBUG: process (AmSession.cpp:429): Session received SIP Event
(15884) DEBUG: onSipRequest (AmSession.cpp:482): onSipRequest: method =
INVITE
(15884) ERROR: parse_sdp_line_ex (AmSdp.cpp:471): parse_sdp_line :
unexpected end of text while looking for 'v'
(15884) ERROR: acceptAudio (AmSession.cpp:644): 400 session description
parsing failed
(15884) ERROR: onInvite (AmSession.cpp:595): 400 session description
parsing failed
(15884) DEBUG: init (AmCtrlInterface.cpp:231): AmUnixCtrlInterface::init
@ /tmp/649E1975-4871DFB9000DB5C0-B6F1FB90
(15884) DEBUG: write_to_socket (AmUtils.cpp:592): sending:
<:t_reply:/tmp/649E1975-4871DFB9000DB5C0-B6F1FB90
400
session description parsing failed
21518:81063001
1288D27E-4871DFB9000DB5D5-B6F1FB90
I should also point out that I get a python error in the script about
this time that is located shortly after connectCallee function call. It
seems that there may be a bit of corruption occurring during
ConnectCallee that is causing both problems.
Here is the relevant part of the log
(15884) DEBUG: Ivr-Python: ***MyConference*** SetUpConference B2B
connect callee <sip:[EMAIL PROTECTED]:10070> sip:[EMAIL PROTECTED]:10070
(15884) DEBUG: IvrDialogBase_b2b_connectCallee (IvrDialogBase.cpp:323):
args != Py_None
(15884) DEBUG: createCalleeSession (Ivr.cpp:800): Created B2BUA callee
leg, From: "Comcen 1" <sip:[EMAIL PROTECTED]>
(15884) DEBUG: start (AmThread.cpp:135): Thread 0 is just created.
(15884) DEBUG: relayEvent (AmB2BSession.cpp:163):
AmB2BSession::relayEvent: id=3AA62A3A-4871DFB9000C390F-B7222B90
(15884) DEBUG: postEvent (AmEventQueue.cpp:48): AmEventQueue: trying to
post event
(15884) DEBUG: postEvent (AmEventQueue.cpp:56): AmEventQueue: event posted
(15884) DEBUG: Ivr-Python: ***MyConference*** SetUpConference - exit
/usr/local/lib/sems/ivr/multicall.py:195: RuntimeWarning: tp_compare
didn't return -1 or -2 for exception
if foundConf == False : # Nobody to conference - so error
(15884) ERROR: Ivr-Python: ********** Ivr-Python exception report
****************
(15884) ERROR: Ivr-Python: exceptions.TypeError raised: function takes
exactly 1 argument (2 given)
(15884) ERROR: Ivr-Python: File '/usr/local/lib/sems/ivr/multicall.py':
line 195
(15884) ERROR: Ivr-Python: ********** end of Ivr-Python exception report
*********
For reference my python code works correctly if the ConnectCallee call
is commented out. Here is the relevant python code
def SetUpConference (self, myowner):
debug ("***MyConference*** SetUpConference")
res = self.SerProx.di('webconference', 'roomCreate',
self.room)
self.code = res[0]
resultstring = res[1]
self.adminpin = res[2] # we need admin PIN for
later operations
# Call our invitees first
for x in self.invitelist :
self.SerProx.di('di_dial', 'dial',
'webconference', self.room, self.oper, x)
# Make B2B call to the conference
remoteURI = "sip:00077" + self.room + "@" + self.server
remoteParty = "<" + remoteURI + ">"
debug ("***MyConference*** SetUpConference B2B connect
callee " + remoteParty + " " + remoteURI)
myowner.connectCallee( remoteParty, remoteURI )
debug ("***MyConference*** SetUpConference - exit")
return True
<...snip...>
foundConf = False
for x in IvrDialog.globconf :
if x.oper == caller :
foundConf = True
x.SetUpConference ( self ) <<<< Call to
SetUpConference
break
if foundConf == False : # Nobody to conference
- so error <<< Line 195 is error point
self.bye()
self.stopSession()
Finally, just a note, ServerInfo does not behave as described in the
documentation. It actually returns a single string rather than three
parameters
_______________________________________________
Sems mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/sems