Skip to content

PUA XMPP module

This module is a gateway for presence between SIP and XMPP.

It translates one format into another and uses xmpp, pua and presence modules to manage the transmition of presence state information.

The following modules must be loaded before this module:

  • presence.
  • pua.
  • xmpp.

The following libraries or applications must be installed before running OpenSIPS with this module loaded:

  • libxml.

The IP address of the server.

Set server_address parameter
...
modparam("pua_xmpp", "server_address", "sip:sa@opensips.org:5060")
...

The the address of the presence server. If set, it will be used as outbound proxy when sending PUBLISH requests.

Set presence_server parameter
...
modparam("pua_xmpp", "presence_server", "sip:pa@opensips.org:5075")
...

Functions exported to be used in configuration file.

Function that handles Notify messages addressed to a user from an xmpp domain. It requires filtering after method and domain in configuration file. If the function is successful, a 2xx reply must be sent.

This function can be used from REQUEST_ROUTE.

Notify2Xmpp usage
...
if( is_method("NOTIFY") && uri=~"sip:.+@sip-xmpp.siphub.ro")
{
if(Notify2Xmpp())
t_reply("200", "OK");
exit;
}
...

pua_xmpp_req_winfo(char* request_uri, char* expires)

Section titled “pua_xmpp_req_winfo(char* request_uri, char* expires)”

Function called when a Subscribe addressed to a user from a xmpp domain is received. It calls sending a Subscribe for winfo for the user, and the following Notify with dialog-info is translated into a subscription in xmpp. It also requires filtering in configuration file, after method, domain and event(only for presence).

It takes 2 parameters: request_uri and the value of Expires header field in received Subscribe.

This function can be used from REQUEST_ROUTE.

xmpp_send_winfo usage
...
if( is_method("SUBSCRIBE"))
{
handle_subscribe();
if(uri=~"sip:.+@sip-xmpp.siphub.ro" && $hdr(Event)== "presence")
{
pua_xmpp_req_winfo("$ruri", "$hdr(Expires)");
}
t_release();
}
...

Instead of “sip-xmpp.siphub.ro” in the example you should use the value set for the xmpp module parameter named ‘gateway_domain’.

The module provides no function to be used in other OpenSIPS modules.

Top contributors by DevScore(1), authored commits(2) and lines added/removed(3)

#NameDevScoreCommitsLines++Lines—
1.Anca Vamanu62183351870
2.Bogdan-Andrei Iancu (@bogdan-iancu)14115874
3.Daniel-Constantin Mierla (@miconda)1082721
4.Stefan Darius (@dariusstefan)7417120
5.Sergio Gutierrez3155
6.Konstantin Bokarius3135
7.Juha Heinanen (@juha-h)3133
8.Razvan Crainea (@razvancrainea)3122
9.Edson Gellert Schubert31094

(1) DevScore = author_commits + author_lines_added / (project_lines_added / project_commits) + author_lines_deleted / (project_lines_deleted / project_commits)

(2) including any documentation-related commits, excluding merge commits

(3) ignoring whitespace edits, renamed files and auto-generated files

#NameCommit Activity
1.Bogdan-Andrei Iancu (@bogdan-iancu)Jul 2007 - Jul 2026
2.Stefan Darius (@dariusstefan)Jun 2026 - Jul 2026
3.Razvan Crainea (@razvancrainea)Jun 2026 - Jun 2026
4.Anca VamanuApr 2007 - Apr 2010
5.Sergio GutierrezNov 2008 - Nov 2008
6.Daniel-Constantin Mierla (@miconda)Sep 2007 - Mar 2008
7.Konstantin BokariusMar 2008 - Mar 2008
8.Edson Gellert SchubertFeb 2008 - Feb 2008
9.Juha Heinanen (@juha-h)Dec 2007 - Dec 2007

(1) including any documentation-related commits, excluding merge commits

Last edited by: Razvan Crainea (@razvancrainea), Anca Vamanu, Bogdan-Andrei Iancu (@bogdan-iancu), Daniel-Constantin Mierla (@miconda), Konstantin Bokarius, Edson Gellert Schubert.

All documentation files (i.e. .md extension) are licensed under the Creative Common License 4.0