Hello,
several days ago I committed support for accessing components of xml
documents using pseudo-variables based on XPath syntax. The new
$xml(...) PV is implemented in the presence_xml module as it works with
xml docs and links libxml2.
Short description in the cookbook:
https://sip-router.org/wiki/cookbooks/pseudo-variables/devel#presence_xml_p…
As an example:
- publish has the body:
<?xml version='1.0' encoding='UTF-8'?>
<presence xmlns='urn:ietf:params:xml:ns:pidf'
xmlns:dm='urn:ietf:params:xml:ns:pidf:data-model'
xmlns:rpid='urn:ietf:params:xml:ns:pidf:rpid'
xmlns:c='urn:ietf:params:xml:ns:pidf:cipid'
entity='sip:daniel@asipto.com'>
<tuple id='t8b484917'>
<status><basic>open</basic></status>
</tuple>
<dm:person
id='p7562ef60'><rpid:activities><rpid:unknown/></rpid:activities></dm:person>
</presence>
Getting the presence status:
# this is needed because libxml2 cannot work with default no-prefix ns,
so we alias the "p" prefix.
modparam("presence_xml", "xml_ns",
"p=urn:ietf:params:xml:ns:pidf")
$xml(a=>doc) = $rb;
$xml(a=>xpath:/p:presence/p:tuple/p:status/p:basic)
Next is to update the presence modules to be able to work with the
documents that have been updated in the config.
Comments, opinions and improvements are welcome!
Cheers,
Daniel
--
Daniel-Constantin Mierla
http://www.asipto.com/