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_ps...
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:activitiesrpid: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