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

Reply via email to