# &adminguide;

## Overview

This module collects the core pseudo-variables that can be used in configuration file. They are listed in Dokuwiki: http://www.kamailio.org/wiki/, in Pseudo-Variables section

## Dependencies

### &kamailio; Modules

The following modules must be loaded before this module:

- No dependencies on other &kamailio; modules.

### External Libraries or Applications

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

- None.

## Parameters

### `shvset` (string)

Set the value of a shared variable ($shv(name)). The parameter can be set many times.

The value of the parameter has the format: _name_ '=' _type_ ':' _value_

- _name_: shared variable name

- _type_: type of the value

  - i: integer value

  - s: string value

- _value_: value to be set

Default value is NULL.

#### `shvset` parameter usage

    ...
    modparam("pv", "shvset", "debug=i:1")
    modparam("pv", "shvset", "pstngw=s:sip:10.10.10.10")
    ...

### `varset` (string)

Set the value of a script variable ($var(name)). The parameter can be set many times.

The value of the parameter has the format: _name_ '=' _type_ ':' _value_

- _name_: shared variable name

- _type_: type of the value

  - i: integer value

  - s: string value

- _value_: value to be set

Default value is NULL.

#### `varset` parameter usage

    ...
    modparam("pv", "varset", "init=i:1")
    modparam("pv", "varset", "gw=s:sip:11.11.11.11;transport=tcp")
    ...

### `avp_aliases` (string)

Define aliases for PV AVP names.

Default value is NULL.

#### `avp_aliases` parameter usage

    ...
    modparam("pv","avp_aliases","email=s:email_addr;tmp=i:100")
    ...

## Functions

### `pv_isset(pvar)`

Return true if a PV value is different than 'null'.

Meaning of the parameters is as follows:

- pvar - pvar identifier.

This function can be used from ANY_ROUTE.

#### `pv_isset` usage

    ...
    if(pv_isset("$avp("s:x")"))
    {
        ...
    }
    ...

### `pv_unset(pvar)`

Unset the value of the PV (e.g., delete AVP, set to null).

Meaning of the parameters is as follows:

- pvar - pvar identifier.

This function can be used from ANY_ROUTE.

#### `pv_unset` usage

    ...
    pv_unset("$avp("s:x")");
    ...

### `is_int(pvar)`

Function checks if pvar argument contains integer value and returns 1 if it does and -1 otherwise.

Function can be used from all kinds of routes.

#### `is_int()` usage

    ...
    if (is_int("$var(foo)")) {
        xlog("L_INFO", "variable foo contains integer value\n");
    }
    ...

### `typeof(pvar, vtype)`

Returns true if the type of pseudo-variable matches the second parameter. The second parameter can be: 'int' - type is integer; 'str' - type is string; 'null' - type is null.

Function can be used from ANYROUTE.

#### `typeof()` usage

    ...
    if (typeof("$var(foo)", "str")) {
        xdbg("variable foo is a string\n");
    }
    ...

### `not_empty(pvar)`

Returns true if the pseudo-variables has the type string and is not empty value.

Function can be used from all kinds of routes.

#### `not_empty()` usage

    ...
    if (not_empty("$var(foo)")) {
        append_hf("X-Foo: $var(foo)\r\n");
    }
    ...

## MI Commands

### `shv_set`

Set the value of a shared variable ($shv(name)).

Parameters:

- _name_: shared variable name

- _type_: type of the value

  - int: integer value

  - str: string value

- _value_: value to be set

MI FIFO Command Format:

    		:shv_set:_reply_fifo_file_
    		_name_
    		_type_
    		_value_
    		_empty_line_

#### `shv_set` usage

    ...
    $ &ctltool; fifo shv_set debug int 0
    ...

### `shv_get`

Get the value of a shared variable ($shv(name)).

Parameters:

- _name_: shared variable name. If this parameter is missing, all shared variables are returned.

MI FIFO Command Format:

    		:shv_get:_reply_fifo_file_
    		_name_
    		_empty_line_

#### `shv_get` usage

    ...
    $ &ctltool; fifo shv_get debug
    $ &ctltool; fifo shv_get
    ...

## RPC Commands

### `pv.shvSet`

Set the value of a shared variable ($shv(name)).

Parameters:

- _name_: shared variable name

- _type_: type of the value

  - int: integer value

  - str: string value

- _value_: value to be set

### `pv.shvGet`

Get the value of a shared variable ($shv(name)).

Parameters:

- _name_: shared variable name

If no name is given, all shared variables are listed