# &adminguide;

## Overview

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 transmission of presence state information.

## Dependencies

### &kamailio; Modules

The following modules must be loaded before this module:

- presence.

- pua.

- xmpp.

### External Libraries or Applications

The following libraries or applications must be installed before running &kamailio; with this module loaded:

- libxml.

## Parameters

### `server_address`(str)

The SIP URI specifying the address of the SIP server.

#### Set `server_address` parameter

    ...
    modparam("pua_xmpp", "server_address", "sip:160.23.23.10")
    ...

## Functions

Functions exported to be used in configuration file.

### `pua_xmpp_notify()`

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.

#### `pua_xmpp_notify` usage

    ...
    	if( is_method("NOTIFY") && uri=~"sip:.+@sip-xmpp.kamailio.org")
    	{
    		if(pua_xmpp_notify())
    			t_reply("200", "OK");
    		exit;
    	}
    ...

### `pua_xmpp_req_winfo(request_uri, expires)`

Function called when a Subscribe addressed to a user from an 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();
    	}

    ...

## Filtering

Instead of "sip-xmpp.siphub.ro" in the example you should use the value set for the xmpp module parameter named 'gateway_domain'.