Does it print out all the contacts for one id or does it print out all id:s? Strange if il_show_contact retrieves all id:s
any how, which modules have you enbaled to be able to do such a call? On Tue, Nov 13, 2012 at 7:22 AM, Carsten Bock <[email protected]> wrote: > Hi, > > i use the XML-RPC-Client from the ZendFramework, at it works like a charm: > > private function getCPEInfo($id) { > $xml_servers = array( > 'http://127.0.0.1:5060/RPC', > ); > > try { > if (!$this->xml_client) { > // Choose random Server > $this->xml_client = new > Zend_XmlRpc_Client($xml_servers[rand(0,count($xml_servers)-1)]); > } > > $result = array(); > $cpe = array(); > $query_result = $this->xml_client->call('mi', > array('ul_show_contact', 'location', $id.'@localhost')); > foreach($query_result as $line) { > $cpe = array(); > list($cpe['contact'], $rest) = > explode('>', $line, 2); > $cpe['contact'] = substr($cpe['contact'], 11); > $contents = explode(';', $rest); > foreach($contents as $entry) { > list($key, $value) = > explode('=', $entry); > switch($key) { > case 'expires': > case 'cflags': > case 'user_agent': > case 'received': > $cpe[$key] = $value; > break; > default: > } > } > if (isset($cpe['user_agent'])) > $cpe['user_agent'] = substr($cpe['user_agent'], 1, -1); > if (isset($cpe['received'])) > $cpe['received'] = substr($cpe['received'], 1, -1); > $result[] = $cpe; > } > > return $result; > } catch ( Exception $e ) { > return "Unable to connect (".$e->getMessage().")"; > } > } > > I definitely cannot explain, no matter how many entries i have per account: > > 1. Endgerät: > Kontakt-URI: sip:xxx@xxx:4099 > Gültigkeit: noch 3392 Sekunden > NAT: kein NAT erkannt > Endgerät: Genexis OCG1018MX v1.7.1.1c > > 2. Endgerät: > Kontakt-URI: sip:xxx@xxx:5060 > Gültigkeit: noch 3469 Sekunden > NAT: kein NAT erkannt > Endgerät: Patton SN-DTA 1BIS2V 00A0BA075803 R6.2 2012-07-13 H323 SIP > M5T SIP Stack/4.0.30.30 > > 3. Endgerät: > Kontakt-URI: sip:xxx@xxx:5060 > Gültigkeit: noch 954 Sekunden > NAT: kein NAT erkannt > Endgerät: Patton SN-DTA 1BIS2V 00A0BA0761CC R6.2 2012-07-13 H323 SIP > M5T SIP Stack/4.0.30.30 > > Kind regards, > Carsten > > 2012/11/13 Carlos Ruiz Díaz <[email protected]> >> >> Hello, >> >> I've been through this problem a few weeks ago with my module that exports >> nested structures through xmlrpc. Apparently, there's a limitation in the >> technology itself that makes the nested structures to be overwritten >> everytime the response XML is parsed, if you look closely, you will notice >> that this makes sense since the structures are indexed by the name of the >> field, which is the same for every record. That's the reason of only one row >> being displayed even though the whole recordset was sent out. >> >> I tried with three different php libraries, even with xmlrpc_decode() that >> is the official function for decoding xmlrpc responses in php. >> >> I didn't find a solution but I ended up using a workaround sending the >> values using CSV format which was later parsed by the PHP in charge of >> displaying the data. >> >> Regards. >> >> Carlos. >> >> On Mon, Nov 12, 2012 at 11:43 PM, Daniel-Constantin Mierla >> <[email protected]> wrote: >>> >>> Hello, >>> >>> I am not a python parameter, but seems a limitation of the xmlrpc_test2.py >>> tool, the tcp dump shows that the records are sent back in the xmlrpc >>> response. >>> >>> You will have to look inside/troubleshoot the xmlrpc_test2.py and see why >>> it fails. >>> >>> Cheers, >>> Daniel >>> >>> >>> On 11/12/12 9:58 AM, Kristofer Signer wrote: >>> >>> Hello, >>> >>> running kamailio 3.3.2. >>> >>> On Mon, Nov 12, 2012 at 1:48 PM, Daniel-Constantin Mierla >>> <[email protected]> wrote: >>>> >>>> Hello, >>>> >>>> >>>> On 11/12/12 10:02 AM, Kristofer Signer wrote: >>>>> >>>>> Hello, >>>>> >>>>> I'm trying to dig in to the kamailio XMLRPC interfaces and the >>>>> limitations I read in >>>>> http://www.kamailio.org/docs/modules/stable/modules/xmlrpc.html#xmlrpc.implementation.limitations >>>>> >>>>> is really a no go for us. >>>> >>>> which one is a 'no go'? Nested structures are supported in the last >>>> version, iirc, the readme does not seem to be updated for this case. >>> >>> the 'no go' is the structure {AoR, HashID, Contact, AoR, HashID, Contacts, >>> ...} >>>> >>>> >>>> >>>>> >>>>> For example, when to retrieve user locations and list of dialogs we get a >>>>> xml document which is not so well formatted and we can not successfully >>>>> parse it in an xmlrpc-parser. >>>>> >>>>> Is there other options for xmlrpc module? >>>> >>>> >>>> If the body is not successfully parsed, it is a bug. The limitation is >>>> about not supporting all the data types, but when a reply is xmlrpc sent, >>>> it should be valid. Can you test it with 1-2 location records that fail >>>> and post the xmrpc here as well as the log error messages from the xml >>>> parser? >>> >>> >>> Actually, I don't get any errors. I'm using the python example provided in >>> kamailio src and that example will only parse out one record. >>> >>> >>> [krsi@vera examples]$ python xmlrpc_test2.py ul.dump foo >>> {'Domain': 'location', 'Stats': {'Records': 2, 'Max-Slots': 1}, 'AoRs': >>> {'HashID': 1731621673, 'AoR': 'jkp-01', 'Contacts': {'Contact': {'Ruid': >>> 'uloc-50a0ea3c-124bf-1', 'Received': '[not set]', 'Path': '[not set]', >>> 'Reg-Id': 0, 'Expires': 99, 'Flags': 0, 'User-Agent': 'Jitsi1.0-Linux', >>> 'Q': 0.0, 'Instance': '[not set]', 'State': 'CS_SYNC', 'CSeq': 11, >>> 'Methods': 18446744073709551615L, 'CFlags': 0, 'Address': >>> 'sip:[email protected]:25060;transport=udp;registering_acc=foo_bar_com', >>> 'Call-ID': '61ac73a44826f3887a5db2371b044275@0:0:0:0:0:0:0:0', 'Socket': >>> 'udp:192.168.0.82:5060'}}}, 'Size': 512} >>> >>> As you can see,. there should be two records but only one is parsed. >>> >>> >>> Here is the response body from tcpdump >>> >>> <?xml version="1.0"?> >>> <methodResponse> >>> <params> >>> <param> >>> <value><struct> >>> >>> <member><name>Domain</name><value><string>location</string></value></member> >>> <member><name>Size</name><value><int>512</int></value></member> >>> <member> >>> <name>AoRs</name> >>> <value><struct> >>> >>> <member><name>AoR</name><value><string>jkp-02</string></value></member> >>> >>> <member><name>HashID</name><value><int>1731621670</int></value></member> >>> <member> >>> <name>Contacts</name> >>> <value><struct> >>> <member> >>> <name>Contact</name> >>> <value><struct> >>> >>> <member><name>Address</name><value><string>sip:[email protected]:35060</string></value></member> >>> >>> <member><name>Expires</name><value><int>768</int></value></member> >>> >>> <member><name>Q</name><value><double>0.000000</double></value></member> >>> >>> <member><name>Call-ID</name><value><string>[email protected]</string></value></member> >>> >>> <member><name>CSeq</name><value><int>383</int></value></member> >>> >>> <member><name>User-Agent</name><value><string>Twinkle/1.4.2</string></value></member> >>> <member><name>Received</name><value><string>[not >>> set]</string></value></member> >>> <member><name>Path</name><value><string>[not >>> set]</string></value></member> >>> >>> <member><name>State</name><value><string>CS_SYNC</string></value></member> >>> <member><name>Flags</name><value><int>0</int></value></member> >>> >>> <member><name>CFlags</name><value><int>0</int></value></member> >>> >>> <member><name>Socket</name><value><string>udp:192.168.0.82:5060</string></value></member> >>> >>> <member><name>Methods</name><value><int>6111</int></value></member> >>> >>> <member><name>Ruid</name><value><string>uloc-50a0ea3c-124c0-1</string></value></member> >>> <member><name>Instance</name><value><string>[not >>> set]</string></value></member> >>> >>> <member><name>Reg-Id</name><value><int>0</int></value></member> >>> </struct></value> >>> </member> >>> </struct></value> >>> </member> >>> <member> >>> <name>AoR</name><value><string>jkp-01</string></value></member> >>> >>> <member><name>HashID</name><value><int>1731621673</int></value></member> >>> <member> >>> <name>Contacts</name> >>> <value><struct> >>> <member> >>> <name>Contact</name> >>> <value><struct> >>> >>> <member><name>Address</name><value><string>sip:[email protected]:25060</string></value></member> >>> >>> <member><name>Expires</name><value><int>185</int></value></member> >>> >>> <member><name>Q</name><value><double>0.000000</double></value></member> >>> >>> <member><name>Call-ID</name><value><string>61ac73a44826f3887a5db2371b044275@0:0:0:0:0:0:0:0</string></value></member> >>> >>> <member><name>CSeq</name><value><int>12</int></value></member> >>> >>> <member><name>User-Agent</name><value><string>Jitsi1.0-Linux</string></value></member> >>> <member><name>Received</name><value><string>[not >>> set]</string></value></member> >>> <member><name>Path</name><value><string>[not >>> set]</string></value></member> >>> >>> <member><name>State</name><value><string>CS_SYNC</string></value></member> >>> >>> <member><name>Flags</name><value><int>0</int></value></member> >>> >>> <member><name>CFlags</name><value><int>0</int></value></member> >>> >>> <member><name>Socket</name><value><string>udp:192.168.0.82:5060</string></value></member> >>> >>> <member><name>Methods</name><value><int>18446744073709551615</int></value></member> >>> >>> <member><name>Ruid</name><value><string>uloc-50a0ea3c-124bf-1</string></value></member> >>> <member><name>Instance</name><value><string>[not >>> set]</string></value></member> >>> >>> <member><name>Reg-Id</name><value><int>0</int></value></member> >>> </struct></value> >>> </member> >>> </struct></value> >>> </member> >>> </struct></value> >>> </member> >>> <member> >>> <name>Stats</name> >>> <value><struct> >>> <member><name>Records</name><value><int>2</int></value></member> >>> <member><name>Max-Slots</name><value><int>1</int></value></member> >>> </struct></value> >>> </member> >>> </struct></value> >>> </param> >>> </params> >>> </methodResponse> >>> >>> >>> >>> and for reference, the same command from kamctl: >>> >>> [krsi@sipproxy1 ~]$ kamctl mi ul_dump >>> Domain:: location table=512 records=2 max_slot=1 >>> AOR:: jkp-02 >>> Contact:: sip:[email protected]:35060 Q= >>> Expires:: 1961 >>> Callid:: [email protected] >>> Cseq:: 383 >>> User-agent:: Twinkle/1.4.2 >>> State:: CS_SYNC >>> Flags:: 0 >>> Cflag:: 0 >>> Socket:: udp:192.168.0.82:5060 >>> Methods:: 6111 >>> Ruid:: uloc-50a0ea3c-124c0-1 >>> Reg-Id:: 0 >>> AOR:: jkp-01 >>> Contact:: sip:[email protected]:25060 Q= >>> Expires:: 298 >>> Callid:: >>> 61ac73a44826f3887a5db2371b044275@0:0:0:0:0:0:0:0 >>> Cseq:: 10 >>> User-agent:: Jitsi1.0-Linux >>> State:: CS_SYNC >>> Flags:: 0 >>> Cflag:: 0 >>> Socket:: udp:192.168.0.82:5060 >>> Methods:: 4294967295 >>> Ruid:: uloc-50a0ea3c-124bf-1 >>> Reg-Id:: 0 >>> >>> >>> Thanks >>> ./Kristofer >>> >>>> >>>> For example, siremis uses the xmlrpc interface and all is ok with handling >>>> the replies. It uses a library from php pear. >>>> >>>> Cheers, >>>> Daniel >>>> >>>> -- >>>> Daniel-Constantin Mierla - http://www.asipto.com >>>> http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda >>>> >>> >>> >>> -- >>> Daniel-Constantin Mierla - http://www.asipto.com >>> http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda >>> >>> >>> _______________________________________________ >>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list >>> [email protected] >>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users >>> >> >> >> _______________________________________________ >> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list >> [email protected] >> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users >> > > > > -- > Carsten Bock > CEO (Geschäftsführer) > > ng-voice GmbH > Schomburgstr. 80 > D-22767 Hamburg / Germany > > http://www.ng-voice.com > mailto:[email protected] > > Office +49 40 34927219 > Fax +49 40 34927220 > > Sitz der Gesellschaft: Hamburg > Registergericht: Amtsgericht Hamburg, HRB 120189 > Geschäftsführer: Carsten Bock > Ust-ID: DE279344284 > > Hier finden Sie unsere handelsrechtlichen Pflichtangaben: > http://www.ng-voice.com/imprint/ > > _______________________________________________ > SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list > [email protected] > http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users _______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list [email protected] http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
