Provisioning guide

Version 30 (Tijmen de Mes, 10/11/2012 07:56 pm)

1 1 Tijmen de Mes
h1. Provisioning guide
2 1 Tijmen de Mes
3 2 Tijmen de Mes
Provisioning of Multimedia Service Platform is performed by the NGNPro SOAP/XML provisioning server. To access the server you need a SOAP/XML client, either the web front-end that comes standard with the platform or one developed by the operator using the supplied SOAP/XML schema.
4 1 Tijmen de Mes
5 1 Tijmen de Mes
bq. The examples and screenshots presented in this document have been taken using AG Project developed NGNPro client part of CDRTool application and may differ from the actual deployment of each customer. Access to the hosted version of Multimedia Service Platform also exposes less functionality, some functions are only available to administrator account and not available to resellers.
6 1 Tijmen de Mes
7 1 Tijmen de Mes
8 1 Tijmen de Mes
9 1 Tijmen de Mes
It is the responsibility of the operator to build a web interface that talks to the SOAP/XML interface. The sample code provided with CDRTool application is merely an example for how to access the API and should not be used in production by customers.
10 1 Tijmen de Mes
11 1 Tijmen de Mes
h2. NGNPro Server
12 1 Tijmen de Mes
13 1 Tijmen de Mes
NGNPro server software provides a SOAP/XML provisioning interface that allows for the management of accounts along with all their auxiliary settings.
14 1 Tijmen de Mes
15 1 Tijmen de Mes
Using NGNPro SOAP/XML interface the Operator may build new front-ends or adapt the existing CRM, provisioning or support systems to the Multimedia Service Platform, making the integration easy and effective. SOAP/XML is an industry standard for which there are implementations available in almost any programming language (like C, Java, PHP and Python) and it can be used by web developers to create customized web portals for the Operator or its resellers without bothering with the complexity of the platform setup and the database schemas sitting behind.
16 1 Tijmen de Mes
17 1 Tijmen de Mes
The SOAP/XML provisioning API is described at:
18 1 Tijmen de Mes
19 1 Tijmen de Mes
"https://mdns.sipthor.net/ngnpro/wsdl":https://mdns.sipthor.net/ngnpro/wsdl
20 1 Tijmen de Mes
21 1 Tijmen de Mes
h3. SOAP/XML API
22 1 Tijmen de Mes
23 1 Tijmen de Mes
# SIP domain management (adding, removing and querying domains)
24 1 Tijmen de Mes
# SIP account management (adding, updating, deleting and getting a SIP account)
25 1 Tijmen de Mes
# SIP aliases (adding, deleting and getting SIP aliases for a given SIP account)
26 1 Tijmen de Mes
# Group membership management (granting, revoking or listing group membership)
27 1 Tijmen de Mes
# Voicemail account (adding, updating, removing or getting a voicemail account)
28 1 Tijmen de Mes
# Call diversions (setting or getting the diversions for a given user)
29 1 Tijmen de Mes
# Retrieving call information for a certain user (missed, placed, received calls)
30 1 Tijmen de Mes
# Retrieving the registered phones one user has (getting the user locations info)
31 1 Tijmen de Mes
# ENUM management (adding, removing and getting the ENUM mappings)
32 1 Tijmen de Mes
# LCR management (adding, removing and getting the PSTN routes and gateways)
33 1 Tijmen de Mes
34 25 Tijmen de Mes
!NGNPro-Datatree.png!
35 1 Tijmen de Mes
36 1 Tijmen de Mes
h2. NGNPro Clients
37 1 Tijmen de Mes
38 1 Tijmen de Mes
Multimedia Service Platform comes with a fully featured provisioning client, which is part of CDRTool web application. The Operator may also chose to develop his own web portals to interface with Multimedia Service Platform by using the provided SOAP/XML schema.
39 1 Tijmen de Mes
40 1 Tijmen de Mes
h3. Python Client
41 1 Tijmen de Mes
42 3 Tijmen de Mes
To help the development of a custom client an "wsdl.tar.gz":/attachment/wiki/ProvisioningGuide/wsdl.tar.gz !/chrome/common/download.png(Download)!
43 1 Tijmen de Mes
44 1 Tijmen de Mes
Usage is simple and described in the WSDL.Proxy class docstring. In addition to what is mentioned there, you need to also specify the auth argument, which is a dictionary like:
45 1 Tijmen de Mes
46 1 Tijmen de Mes
bc(wiki). dict(username='myusername', password='mypassword')
47 1 Tijmen de Mes
48 1 Tijmen de Mes
49 1 Tijmen de Mes
The Proxy, will load the WSDL and add the methods from the specified port in the WSDL on the fly to the proxy instance that is created when you instantiate Proxy(). After the creation you can call the port methods directly on the proxy, so no code generation is needed. You can discover the available methods using inspection on the proxy instance as with any other python object. You pass simple data structures (strings, ints, lists, dicts), that are automatically converted to the appropriate SOAP types.
50 1 Tijmen de Mes
51 1 Tijmen de Mes
Inside the archive you'll also find a short example of how to use it in ngnpro_test.py
52 1 Tijmen de Mes
53 1 Tijmen de Mes
h3. PHP Client
54 1 Tijmen de Mes
55 1 Tijmen de Mes
To use this example code you must install SOAP library for PEAR project.
56 1 Tijmen de Mes
57 1 Tijmen de Mes
Generate the library with:
58 1 Tijmen de Mes
59 4 Tijmen de Mes
<pre><code class="php">
60 4 Tijmen de Mes
#!/usr/bin/php
61 1 Tijmen de Mes
<?
62 1 Tijmen de Mes
require_once('SOAP/WSDL.php');
63 1 Tijmen de Mes
$wsdl       = new SOAP_WSDL('https://mdns.sipthor.net/ngnpro/wsdl');
64 1 Tijmen de Mes
print "<?\n";
65 1 Tijmen de Mes
print $wsdl->generateAllProxies();
66 1 Tijmen de Mes
print "?>\n";
67 6 Tijmen de Mes
?></code>
68 4 Tijmen de Mes
</pre>
69 1 Tijmen de Mes
70 5 Tijmen de Mes
You will end up with a file containing all client functions, attached is an example of the generated file for NGNPro version 4.3.5 attachment:ngnpro_soap_lib.php
71 1 Tijmen de Mes
72 5 Tijmen de Mes
The script attachment:sip_add_account.php
73 1 Tijmen de Mes
74 1 Tijmen de Mes
h3. Server Location
75 1 Tijmen de Mes
76 1 Tijmen de Mes
NGNPro is reachable on the following URLs, which were configured during the setup phase of the platform:
77 1 Tijmen de Mes
78 1 Tijmen de Mes
79 1 Tijmen de Mes
|Platform|Protocol|Port|Location|SOAP ports|
80 1 Tijmen de Mes
|Collocated Multimedia Service Platform|TLS|443|"https://cdr.example.com/ngnpro":https://cdr.example.com/ngnpro|all ports except Voicemail port|
81 1 Tijmen de Mes
|Collocated Multimedia Service Platform|TLS|443|"https://cdr.example.com/ngnpro/voicemail":https://cdr.example.com/ngnpro/voicemail|Voicemail port|
82 1 Tijmen de Mes
|Collocated Multimedia Service Platform|TCP|9200|"http://sip.example.com:9200":http://sip.example.com:9200|all ports except Voicemail port|
83 1 Tijmen de Mes
|Collocated Multimedia Service Platform|TCP|9200|"http://vm.example.com:9200":http://vm.example.com:9200|Voicemail port|
84 1 Tijmen de Mes
|Collocated SIP Thor Platform|TLS|9200|"https://ngnpro.example.com:9200":https://ngnpro.example.com:9200|All ports|
85 1 Tijmen de Mes
86 1 Tijmen de Mes
87 1 Tijmen de Mes
h3. Test Server
88 1 Tijmen de Mes
89 1 Tijmen de Mes
You can test your provisioning client against the live platform hosted by AG Projects.
90 1 Tijmen de Mes
91 1 Tijmen de Mes
92 1 Tijmen de Mes
|Platform|Protocol|Port|Location|SOAP ports|
93 1 Tijmen de Mes
|Hosted AG Projects platform|TLS|443|"https://mdns.sipthor.net/ngnpro":https://mdns.sipthor.net/ngnpro|All ports|
94 1 Tijmen de Mes
95 1 Tijmen de Mes
96 1 Tijmen de Mes
The credentials for accessing the test server are the same as the login account used for accessing AG Projects support web page.
97 1 Tijmen de Mes
98 1 Tijmen de Mes
h3. SOAP/XML Authentication
99 1 Tijmen de Mes
100 1 Tijmen de Mes
SOAP/XML requests must contain valid authentication header with credentials in the form of a combination of username, password and impersonate attributes. There are two types of SOAP credentials to access the server:
101 1 Tijmen de Mes
102 1 Tijmen de Mes
* Administrator level. The server has an administrator account configured in the server configuration file, /etc/ngnpro/config.ini, that can be used to perform all functions without restrictions. Set the *impersonate* attribute of the SOAP authentication header to a valid customer of the system to perform actions in behalf of that customer.
103 1 Tijmen de Mes
* Customer level. Access a partition of the data provisioned into the platform. The customers table, managed using the SOAP/XML CustomerPort, is used as a login database for authenticating and authorizing the SOAP/XML requests. First use the administrator level account to add a customer. When the combination of username/password in the SOAP authentication header matches an entry in the customers table, all actions will be performed in behalf of that customer. This means that any record created will inherit the customer id of the customer and any modification will be checked for ownership before being committed. This allows reseller to have limited access to the platform based on rights assigned to them by the system administrator.
104 1 Tijmen de Mes
105 1 Tijmen de Mes
For more information about the *Customer* concept read below.
106 1 Tijmen de Mes
107 1 Tijmen de Mes
h2. Customer
108 1 Tijmen de Mes
109 1 Tijmen de Mes
Customers are entities created in the platform to store names, address, billing and other information. Customers can also have arbitrary attribute/value pairs stored in the properties attribute.
110 1 Tijmen de Mes
111 1 Tijmen de Mes
Each customer is assigned, during creation by the server, a unique id and a reseller id.
112 1 Tijmen de Mes
113 1 Tijmen de Mes
h3. Record Assignment
114 1 Tijmen de Mes
115 1 Tijmen de Mes
The customer id can be used for assignment of SIP domains, ENUM ranges and DNS zones. The assignment is done by setting the customer id attributes of the record in question.
116 1 Tijmen de Mes
117 1 Tijmen de Mes
All SIP accounts inherit the customer id from their parent SIP domain. For example a SIP domain that has customer and reseller attributes set cause all SIP accounts created under this domain to share the same customer and reseller too (because the SIP account always belong to a SIP domain). Same concept works for the ENUM numbers (they belong to ENUM ranges) and DNS records (they belong to DNS zones).
118 1 Tijmen de Mes
119 1 Tijmen de Mes
Before deleting a customer, make sure that no records belong to his id.
120 1 Tijmen de Mes
121 1 Tijmen de Mes
h2. Reseller
122 1 Tijmen de Mes
123 1 Tijmen de Mes
The reseller has the role of grouping multiple customers together. The concept is similar to how the users in a Unix system work, where each user has a unique id and a group id. As opposed to the Unix model, a customer can belong to a single reseller. Customers having their id equal to the reseller&#95;id are referred as resellers. Also customers that have the impersonate attribute set to the reseller id have the same right as their reseller.
124 1 Tijmen de Mes
125 1 Tijmen de Mes
If a reseller is not specified during the creation of a new customer entry, a new reseller id equal to the customer id will be assigned, in fact creating a new Reseller in the system. Only provisioning requests made with admin rights can add a reseller into the system.
126 1 Tijmen de Mes
127 1 Tijmen de Mes
h3. Conventions for resellers
128 1 Tijmen de Mes
129 1 Tijmen de Mes
A customer that is a reseller (the customer id is equal to reseller id) is allowed to create other customers and records in the platform if the *resellerActive* attribute of the customer is set to true.
130 1 Tijmen de Mes
131 1 Tijmen de Mes
The number of records each reseller is allowed to provision into the platform is controlled by some special properties belonging to the reseller. These special properties are: sip&#95;credit, sip&#95;alias&#95;credit, enum&#95;range&#95;credit, enum&#95;number&#95;credit, dns&#95;zone&#95;credit, email&#95;credit
132 1 Tijmen de Mes
133 1 Tijmen de Mes
The same credit convention is valid for customers belonging to a reseller. Each customer may create records within their own credit. The total of all records created by all customers may not exceed the credit of the reseller. The server checks during creation of each record if the quota has not been exceeded.
134 1 Tijmen de Mes
135 1 Tijmen de Mes
The following properties controls if the reseller or customer has access to enable access to PSTN for the SIP accounts:
136 1 Tijmen de Mes
137 1 Tijmen de Mes
* pstn&#95;access (can create SIP accounts with PSTN prepaid access)
138 1 Tijmen de Mes
* prepaid&#95;changes (can toggle a SIP account from prepaid to postpaid and vice versa)
139 1 Tijmen de Mes
140 1 Tijmen de Mes
On CDRTool, to create an account that has access to the records belonging to a specific customer set the Impersonate field of the CDRTool login account to *customer&#95;id.reseller&#95;id*.
141 1 Tijmen de Mes
142 1 Tijmen de Mes
h3. Conventions for the properties
143 1 Tijmen de Mes
144 1 Tijmen de Mes
As mentioned before, each customer can have a list of attributed/value pairs attached to them in the properties attribute, this allowing for storage of arbitrary data with each customer. Each attribute has a field called permission. The following rules apply:
145 1 Tijmen de Mes
146 1 Tijmen de Mes
* Properties having permission set to admin can be modified only by the administrator
147 1 Tijmen de Mes
* Properties having permission set to reseller can be modified by the administrator and their reseller
148 1 Tijmen de Mes
* Properties having other permission can be modified by their customer, their reseller or by the administrator
149 1 Tijmen de Mes
150 1 Tijmen de Mes
If the SIP domain of a SIP account belongs to a customer (the customer&#95;id != 0), the pstn&#95;access and prepaid&#95;access properties can be enabled only if the corespondent reseller has these properties set to 1.
151 1 Tijmen de Mes
152 1 Tijmen de Mes
h2. Owner
153 1 Tijmen de Mes
154 1 Tijmen de Mes
At SIP account, SIP alias and ENUM number level another attribute called owner exists. Owner attribute can be used to assign or group individual records like SIP accounts and ENUM numbers to customers in the customer table. For example one customer can have multiple SIP accounts and ENUM numbers if their owner field are set to his customer id.
155 1 Tijmen de Mes
156 1 Tijmen de Mes
h3. SOAP/XML functions
157 1 Tijmen de Mes
158 1 Tijmen de Mes
* CustomerPort-&gt;addAccount()
159 1 Tijmen de Mes
* CustomerPort-&gt;updateAccount()
160 1 Tijmen de Mes
* CustomerPort-&gt;deleteAccount()
161 1 Tijmen de Mes
* CustomerPort-&gt;getAccount()
162 1 Tijmen de Mes
* CustomerPort-&gt;getCustomers()
163 1 Tijmen de Mes
* CustomerPort-&gt;getResellers()
164 1 Tijmen de Mes
* CustomerPort-&gt;setProperties()
165 1 Tijmen de Mes
* CustomerPort-&gt;getProperties()
166 1 Tijmen de Mes
167 1 Tijmen de Mes
Customer attributes:
168 8 Tijmen de Mes
<pre>
169 7 Tijmen de Mes
  <complexType name="CustomerAccount">
170 7 Tijmen de Mes
171 7 Tijmen de Mes
  <sequence>
172 7 Tijmen de Mes
  <element name="id" nillable="true" type="xsd:integer"/>
173 7 Tijmen de Mes
  <element name="reseller" nillable="true" type="xsd:integer"/>
174 7 Tijmen de Mes
  <element name="impersonate" nillable="true" type="xsd:integer"/>
175 7 Tijmen de Mes
  <element name="username" nillable="true" type="xsd:string"/>
176 7 Tijmen de Mes
  <element name="password" nillable="true" type="xsd:string"/>
177 7 Tijmen de Mes
  <element name="firstName" nillable="true" type="xsd:string"/>
178 7 Tijmen de Mes
  <element name="lastName" nillable="true" type="xsd:string"/>
179 7 Tijmen de Mes
  <element name="organization" nillable="true" type="xsd:string"/>
180 7 Tijmen de Mes
  <element name="vatNumber" nillable="true" type="xsd:string"/>
181 7 Tijmen de Mes
  <element name="email" nillable="true" type="xsd:string"/>
182 7 Tijmen de Mes
  <element name="web" nillable="true" type="xsd:string"/>
183 7 Tijmen de Mes
  <element name="tel" nillable="true" type="xsd:string"/>
184 7 Tijmen de Mes
  <element name="fax" nillable="true" type="xsd:string"/>
185 7 Tijmen de Mes
  <element name="mobile" nillable="true" type="xsd:string"/>
186 7 Tijmen de Mes
  <element name="sip" nillable="true" type="xsd:string"/>
187 7 Tijmen de Mes
  <element name="enum" nillable="true" type="xsd:string"/>
188 7 Tijmen de Mes
  <element name="address" nillable="true" type="xsd:string"/>
189 7 Tijmen de Mes
  <element name="postcode" nillable="true" type="xsd:string"/>
190 7 Tijmen de Mes
  <element name="city" nillable="true" type="xsd:string"/>
191 7 Tijmen de Mes
  <element name="state" nillable="true" type="xsd:string"/>
192 7 Tijmen de Mes
  <element name="country" nillable="true" type="xsd:string"/>
193 7 Tijmen de Mes
  <element name="timezone" nillable="true" type="xsd:string"/>
194 7 Tijmen de Mes
  <element name="language" nillable="true" type="xsd:string"/>
195 7 Tijmen de Mes
  <element name="bankAccount" nillable="true" type="xsd:string"/>
196 7 Tijmen de Mes
  <element name="billingAddress" nillable="true" type="xsd:string"/>
197 7 Tijmen de Mes
  <element name="billingEmail" nillable="true" type="xsd:string"/>
198 7 Tijmen de Mes
  <element name="balance" nillable="true" type="xsd:double"/>
199 7 Tijmen de Mes
  <element name="credit" nillable="true" type="xsd:double"/>
200 7 Tijmen de Mes
  <element name="companyCode" nillable="true" type="xsd:string"/>
201 7 Tijmen de Mes
  <element name="resellerActive" nillable="true" type="xsd:boolean"/>
202 7 Tijmen de Mes
  <element name="changeDate" nillable="true" type="xsd:string"/>
203 7 Tijmen de Mes
  <element name="properties" nillable="true" type="ngnpro:CustomerPropertyArray"/>
204 7 Tijmen de Mes
  </sequence>
205 1 Tijmen de Mes
  </complexType>
206 8 Tijmen de Mes
</pre>
207 1 Tijmen de Mes
208 1 Tijmen de Mes
h3. Graphical client
209 1 Tijmen de Mes
210 1 Tijmen de Mes
@CDRTool->Accounts->Customers@
211 1 Tijmen de Mes
212 25 Tijmen de Mes
!ngnpro-customers.png!
213 1 Tijmen de Mes
214 1 Tijmen de Mes
Click on the customer id to edit its properties.
215 1 Tijmen de Mes
216 1 Tijmen de Mes
h2. DNS Zones
217 1 Tijmen de Mes
218 1 Tijmen de Mes
The SIP Proxy is configured to serve domains that must be reachable over the Internet. The SIP devices must support RFC3263 (Locating SIP Services), namely support for DNS SRV lookups for SIP services. Each SIP domain configured in the SIP Proxy must have DNS zone configured on a DNS server responsable for that domain. When using the platform built-in DNS servers and DNS management you must create the proper DNS zones and records for each SIP domain.
219 1 Tijmen de Mes
220 1 Tijmen de Mes
To enable the use of an Internet domain for SIP you must provision in the DNS zone the following records:
221 1 Tijmen de Mes
222 9 Tijmen de Mes
  example.com.  300 IN  NAPTR   20 0 "s" "SIP+D2U" "" _sip._udp.example.com.
223 9 Tijmen de Mes
  _sip._udp.example.com. 300  IN  SRV 0 0 5060 sip.example.com.
224 1 Tijmen de Mes
225 1 Tijmen de Mes
226 1 Tijmen de Mes
Replace example.com with your own domain and add an A record pointing sip.example.com. to the IP address of the SIP Proxy.
227 1 Tijmen de Mes
228 1 Tijmen de Mes
h3. SOAP/XML functions
229 1 Tijmen de Mes
230 1 Tijmen de Mes
* DnsPort-&gt;addZone()
231 1 Tijmen de Mes
* DnsPort-&gt;updateZone()
232 1 Tijmen de Mes
* DnsPort-&gt;deleteZone()
233 1 Tijmen de Mes
* DnsPort-&gt;getZone()
234 1 Tijmen de Mes
* DnsPort-&gt;getZones()
235 1 Tijmen de Mes
* DnsPort-&gt;addRecord()
236 1 Tijmen de Mes
* DnsPort-&gt;addFancyRecord()
237 1 Tijmen de Mes
* DnsPort-&gt;updateRecord()
238 1 Tijmen de Mes
* DnsPort-&gt;updateFancyRecord()
239 1 Tijmen de Mes
* DnsPort-&gt;deleteRecord()
240 1 Tijmen de Mes
* DnsPort-&gt;deleteFancyRecord()
241 1 Tijmen de Mes
* DnsPort-&gt;getRecord()
242 1 Tijmen de Mes
* DnsPort-&gt;getFancyRecord()
243 1 Tijmen de Mes
* DnsPort-&gt;getRecords()
244 1 Tijmen de Mes
* DnsPort-&gt;getFancyRecords()
245 1 Tijmen de Mes
246 1 Tijmen de Mes
DNZ zone attributes:
247 1 Tijmen de Mes
248 10 Tijmen de Mes
<pre>
249 10 Tijmen de Mes
<complexType name="DnsZone">
250 1 Tijmen de Mes
251 1 Tijmen de Mes
<sequence>
252 1 Tijmen de Mes
<element name="name" nillable="false" type="xsd:string"/>
253 1 Tijmen de Mes
<element name="ttl" nillable="true" type="xsd:nonNegativeInteger"/>
254 1 Tijmen de Mes
<element name="nameservers" nillable="true" type="ngnpro:StringArray"/>
255 1 Tijmen de Mes
<element name="email" nillable="true" type="xsd:string"/>
256 1 Tijmen de Mes
<element name="serial" nillable="true" type="xsd:int"/>
257 1 Tijmen de Mes
<element name="refresh" nillable="true" type="xsd:int"/>
258 1 Tijmen de Mes
<element name="retry" nillable="true" type="xsd:int"/>
259 1 Tijmen de Mes
<element name="expire" nillable="true" type="xsd:int"/>
260 1 Tijmen de Mes
<element name="minimum" nillable="true" type="xsd:int"/>
261 1 Tijmen de Mes
<element name="customer" nillable="true" type="xsd:integer"/>
262 1 Tijmen de Mes
<element name="reseller" nillable="true" type="xsd:integer"/>
263 1 Tijmen de Mes
<element name="changeDate" nillable="true" type="xsd:string"/>
264 1 Tijmen de Mes
<element name="info" nillable="true" type="xsd:string"/>
265 1 Tijmen de Mes
</sequence>
266 1 Tijmen de Mes
</complexType>
267 10 Tijmen de Mes
</pre>
268 1 Tijmen de Mes
269 1 Tijmen de Mes
When using AG Projects hosted platform you must select and use for DNS delegation the following name servers:
270 1 Tijmen de Mes
271 1 Tijmen de Mes
# ns1.dns-hosting.info
272 1 Tijmen de Mes
# ns2.dns-hosting.info
273 1 Tijmen de Mes
274 1 Tijmen de Mes
h3. Graphical client
275 1 Tijmen de Mes
276 1 Tijmen de Mes
@CDRTool->Accounts->DNS zones@
277 1 Tijmen de Mes
278 27 Tijmen de Mes
!ngnpro-dns-zones.png!
279 1 Tijmen de Mes
280 1 Tijmen de Mes
Click on each zone to edit its properties.
281 1 Tijmen de Mes
282 27 Tijmen de Mes
!ngnpro-dns-zone.png!
283 1 Tijmen de Mes
284 1 Tijmen de Mes
h2. DNS Records
285 1 Tijmen de Mes
286 1 Tijmen de Mes
Each DNS zones has one or more records. For every SIP domain served by the platform you must create the following DNS records:
287 1 Tijmen de Mes
288 1 Tijmen de Mes
Example for:
289 1 Tijmen de Mes
290 1 Tijmen de Mes
* SIP domain: sipdomain.com
291 1 Tijmen de Mes
* SIP Proxy hostname configured for the platform: sip.example.com
292 1 Tijmen de Mes
293 1 Tijmen de Mes
<pre class="wiki">
294 1 Tijmen de Mes
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
295 1 Tijmen de Mes
; DNS records specified by RFC 3263 (Locating SIP services) ;
296 1 Tijmen de Mes
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
297 1 Tijmen de Mes
298 1 Tijmen de Mes
; SIP communications using UDP transport
299 1 Tijmen de Mes
sipdomain.com.             IN NAPTR  10 0 &quot;S&quot; &quot;SIP+d2u&quot; &quot;&quot; _sip._udp.sipdomain.com.
300 1 Tijmen de Mes
_sip._udp.sipdomain.com.   IN SRV    0  0 5060 sip.example.com.
301 1 Tijmen de Mes
</pre>
302 1 Tijmen de Mes
303 1 Tijmen de Mes
h3. SOAP/XML functions
304 1 Tijmen de Mes
305 1 Tijmen de Mes
* DnsPort-&gt;addRecord()
306 1 Tijmen de Mes
* DnsPort-&gt;updateRecord()
307 1 Tijmen de Mes
* DnsPort-&gt;deleteRecord()
308 1 Tijmen de Mes
* DnsPort-&gt;getRecord()
309 1 Tijmen de Mes
* DnsPort-&gt;getRecords()
310 1 Tijmen de Mes
311 1 Tijmen de Mes
DNS record attributes:
312 1 Tijmen de Mes
313 27 Tijmen de Mes
<pre>
314 11 Tijmen de Mes
<complexType name="DnsRecord">
315 1 Tijmen de Mes
316 1 Tijmen de Mes
<sequence>
317 1 Tijmen de Mes
<element name="id" nillable="true" type="xsd:integer"/>
318 1 Tijmen de Mes
<element name="zone" nillable="true" type="xsd:string"/>
319 1 Tijmen de Mes
<element name="name" nillable="true" type="xsd:string"/>
320 1 Tijmen de Mes
<element name="type" nillable="true" type="ngnpro:DnsRecordType"/>
321 1 Tijmen de Mes
<element name="ttl" nillable="true" type="xsd:unsignedInt"/>
322 1 Tijmen de Mes
<element name="value" nillable="true" type="xsd:string"/>
323 1 Tijmen de Mes
<element name="priority" nillable="true" type="xsd:unsignedShort"/>
324 1 Tijmen de Mes
<element name="owner" nillable="true" type="xsd:integer"/>
325 1 Tijmen de Mes
<element name="customer" nillable="true" type="xsd:integer"/>
326 1 Tijmen de Mes
<element name="reseller" nillable="true" type="xsd:integer"/>
327 1 Tijmen de Mes
<element name="changeDate" nillable="true" type="xsd:string"/>
328 1 Tijmen de Mes
</sequence>
329 1 Tijmen de Mes
</complexType>
330 11 Tijmen de Mes
</pre>
331 1 Tijmen de Mes
332 1 Tijmen de Mes
DNS record types:
333 1 Tijmen de Mes
334 11 Tijmen de Mes
<pre>
335 11 Tijmen de Mes
<simpleType name="DnsRecordType">
336 1 Tijmen de Mes
337 1 Tijmen de Mes
<xsd:restriction base="xsd:string">
338 1 Tijmen de Mes
<xsd:enumeration value="A"/>
339 1 Tijmen de Mes
<xsd:enumeration value="AAAA"/>
340 1 Tijmen de Mes
<xsd:enumeration value="CNAME"/>
341 1 Tijmen de Mes
<xsd:enumeration value="MX"/>
342 1 Tijmen de Mes
<xsd:enumeration value="NAPTR"/>
343 1 Tijmen de Mes
<xsd:enumeration value="NS"/>
344 1 Tijmen de Mes
<xsd:enumeration value="SRV"/>
345 1 Tijmen de Mes
<xsd:enumeration value="TXT"/>
346 1 Tijmen de Mes
<xsd:enumeration value="PTR"/>
347 1 Tijmen de Mes
<xsd:enumeration value="LOC"/>
348 1 Tijmen de Mes
</xsd:restriction>
349 1 Tijmen de Mes
</simpleType>
350 11 Tijmen de Mes
</pre>
351 1 Tijmen de Mes
352 1 Tijmen de Mes
h3. Graphical client
353 1 Tijmen de Mes
354 1 Tijmen de Mes
@CDRTool->Accounts->DNS records@
355 1 Tijmen de Mes
356 27 Tijmen de Mes
!ngnpro-dns-records.png!
357 1 Tijmen de Mes
358 1 Tijmen de Mes
Click on each record to edit its attributes.
359 1 Tijmen de Mes
360 27 Tijmen de Mes
!ngnpro-dns-record.png!
361 1 Tijmen de Mes
362 1 Tijmen de Mes
h2. SIP Domains
363 1 Tijmen de Mes
364 1 Tijmen de Mes
Before creating SIP accounts you need to create at least one SIP domain. (e.g. example.com)
365 1 Tijmen de Mes
366 1 Tijmen de Mes
h3. SOAP/XML functions
367 1 Tijmen de Mes
368 1 Tijmen de Mes
* SipPort-&gt;addDomain()
369 1 Tijmen de Mes
* SipPort-&gt;updateDomain()
370 1 Tijmen de Mes
* SipPort-&gt;deleteDomain()
371 1 Tijmen de Mes
* SipPort-&gt;getDomains()
372 1 Tijmen de Mes
373 1 Tijmen de Mes
h3. Graphical client
374 1 Tijmen de Mes
375 1 Tijmen de Mes
@CDRTool->Accounts->SIP domains@
376 1 Tijmen de Mes
377 27 Tijmen de Mes
!ngnpro-sip-domains.png!
378 1 Tijmen de Mes
379 1 Tijmen de Mes
h2. SIP Accounts
380 1 Tijmen de Mes
381 1 Tijmen de Mes
The provisioning of SIP account is performed using the SOAP/XML functions present in the Sip port described in NGNPro WSDL.
382 1 Tijmen de Mes
383 1 Tijmen de Mes
You must add at least one SIP domain before adding a SIP account.
384 1 Tijmen de Mes
385 1 Tijmen de Mes
SIP account passwords can be stored in clear text or encrypted formats depending on how you supply the password. NGNPro needs two MD5 checksums (hexdigests) computed based on the (id.username, id.domain, password) tuple. A hexdigest must be a string of length 32, containing only hexadecimal digits. These hexdigests can be computed by the client and given to NGNPro instead of a clear text password, as follows: the password field must be in "digest1:digest2" form, where digest1=MD5("username:domain:password") and digest2=MD5("username&#64;domain:domain:password"). Otherwise, if the password is given in clear text, NGNPro computes these two digests and stores them. If the store&#95;clear&#95;text&#95;passwords configuration option is set to Yes (the default value), the clear text password will be also be stored. If store&#95;clear&#95;text&#95;passwords is set to No, the password will not be stored and it will not be available in the future.
386 1 Tijmen de Mes
387 1 Tijmen de Mes
To enable different rights for SIP accounts, they must be part of specific groups.
388 1 Tijmen de Mes
389 1 Tijmen de Mes
You can add or remove a SIP account from a group by using Sip.addToGroup() and Sip.removeFromGroup() SOAP methods. The list of groups to which a SIP account belongs can also be set using the `groups' attribute of the SipAccount structure in Sip.addAccount() and Sip.updateAccount() methods. When you're using a group list for modification, all the old groups will be deleted and the new ones will be inserted in place.
390 1 Tijmen de Mes
391 1 Tijmen de Mes
To enable PSTN calls to a SIP account, that account must be in the 'free-pstn' group.
392 1 Tijmen de Mes
393 1 Tijmen de Mes
If you want to limit the access to PSTN, in the margins of a predefined quota (expressed in the currency used by CDRTool rating engine), the SIP account must have a positive value set for the 'quota' attribute in the SipAccount structure. In this case, the CDRTool quota system blocks the user if the traffic exceedes the predefined quota by adding the user to the 'quota' group. In this case the SIP account can still place free calls.
394 1 Tijmen de Mes
395 1 Tijmen de Mes
A SIP account can be administratively blocked (it cannot make any calls and it cannot register thus not receiving calls), if it's part of the 'blocked' group.
396 1 Tijmen de Mes
397 1 Tijmen de Mes
If you want a SIP account to make calls marked as anonymous, that SIP account must be placed in the 'anonymous' group.
398 1 Tijmen de Mes
399 1 Tijmen de Mes
To mark a SIP account as prepaid, the 'prepaid' attribute of the SipAccount structure must be set to True.
400 1 Tijmen de Mes
401 1 Tijmen de Mes
SipAccount.properties attribute can be used to store per-account information in the form of name-value pairs and they can then be used on the client side for its own purposes. Properties do not influence routing decisions. Their meaning depends on the interpretation the client side gives them, for example they can be used from a web-based interface to store settings like the display language or the account type.
402 1 Tijmen de Mes
403 1 Tijmen de Mes
Diversion rules routing order:
404 1 Tijmen de Mes
405 1 Tijmen de Mes
# Unavailable,
406 1 Tijmen de Mes
# Unconditional
407 1 Tijmen de Mes
# Not-online
408 1 Tijmen de Mes
# Busy
409 1 Tijmen de Mes
# No-answer
410 1 Tijmen de Mes
411 1 Tijmen de Mes
Not-online means there is no registered device for that account, Unavailable means that the subscriber has accept rules in place that forbid the caller at the current time, accept rules can be temporary (valid a a number of minutes after which they'll be discarded) or scheduled (permanent rules based on time of day and day of week).
412 1 Tijmen de Mes
413 1 Tijmen de Mes
The last 2 rules are not handled together with the other 3, they are only handled if the call fails.
414 1 Tijmen de Mes
415 1 Tijmen de Mes
h3. SOAP/XML functions
416 1 Tijmen de Mes
417 1 Tijmen de Mes
* SipPort-&gt;addAccount()
418 1 Tijmen de Mes
* SipPort-&gt;updateAccount()
419 1 Tijmen de Mes
* SipPort-&gt;deleteAccount()
420 1 Tijmen de Mes
* SipPort-&gt;getAccount()
421 1 Tijmen de Mes
* SipPort-&gt;getAccounts()
422 1 Tijmen de Mes
* SipPort-&gt;addToGroup()
423 1 Tijmen de Mes
* SipPort-&gt;removeFromGroup()
424 1 Tijmen de Mes
* SipPort-&gt;getGroups()
425 1 Tijmen de Mes
* SipPort-&gt;addPhonebookEntry()
426 1 Tijmen de Mes
* SipPort-&gt;updatePhonebookEntry()
427 1 Tijmen de Mes
* SipPort-&gt;deletePhonebookEntry()
428 1 Tijmen de Mes
* SipPort-&gt;getPhonebookEntries()
429 1 Tijmen de Mes
* SipPort-&gt;setRejectMembers()
430 1 Tijmen de Mes
* SipPort-&gt;getRejectMembers()
431 1 Tijmen de Mes
* SipPort-&gt;setAcceptRules()
432 1 Tijmen de Mes
* SipPort-&gt;getAcceptRules()
433 1 Tijmen de Mes
* SipPort-&gt;setBarringPrefixes()
434 1 Tijmen de Mes
* SipPort-&gt;getBarringPrefixes()
435 1 Tijmen de Mes
* SipPort-&gt;setCallDiversions()
436 1 Tijmen de Mes
* SipPort-&gt;getCallDiversions()
437 1 Tijmen de Mes
* SipPort-&gt;getCalls()
438 1 Tijmen de Mes
* SipPort-&gt;getCallStatistics()
439 1 Tijmen de Mes
* SipPort-&gt;getSipDeviceLocations()
440 1 Tijmen de Mes
441 1 Tijmen de Mes
SIP account attributes:
442 1 Tijmen de Mes
443 12 Tijmen de Mes
<pre>
444 12 Tijmen de Mes
<complexType name="SipAccount">
445 1 Tijmen de Mes
446 1 Tijmen de Mes
<sequence>
447 1 Tijmen de Mes
<element name="id" nillable="false" type="ngnpro:SipId"/>
448 1 Tijmen de Mes
<element name="password" nillable="true" type="xsd:string"/>
449 1 Tijmen de Mes
<element name="firstName" nillable="true" type="xsd:string"/>
450 1 Tijmen de Mes
<element name="lastName" nillable="true" type="xsd:string"/>
451 1 Tijmen de Mes
<element name="email" nillable="true" type="xsd:string"/>
452 1 Tijmen de Mes
<element name="acl" nillable="true" type="ngnpro:SubscriberACLArray"/>
453 1 Tijmen de Mes
<element name="groups" nillable="true" type="ngnpro:StringArray"/>
454 1 Tijmen de Mes
<element name="properties" nillable="true" type="ngnpro:PropertyArray"/>
455 1 Tijmen de Mes
<element name="timezone" nillable="true" type="xsd:string"/>
456 1 Tijmen de Mes
<element name="rpid" nillable="true" type="xsd:string"/>
457 1 Tijmen de Mes
<element name="quota" nillable="true" type="xsd:int"/>
458 1 Tijmen de Mes
<element name="quickdialPrefix" nillable="true" type="xsd:string"/>
459 1 Tijmen de Mes
<element name="callLimit" nillable="true" type="xsd:int"/>
460 1 Tijmen de Mes
<element name="prepaid" nillable="true" type="xsd:boolean"/>
461 1 Tijmen de Mes
<element name="region" nillable="true" type="xsd:string"/>
462 1 Tijmen de Mes
<element name="timeout" nillable="true" type="xsd:nonNegativeInteger"/>
463 1 Tijmen de Mes
<element name="owner" nillable="true" type="xsd:integer"/>
464 1 Tijmen de Mes
<element name="customer" nillable="true" type="xsd:integer"/>
465 1 Tijmen de Mes
<element name="reseller" nillable="true" type="xsd:integer"/>
466 1 Tijmen de Mes
<element name="changeDate" nillable="true" type="xsd:string"/>
467 1 Tijmen de Mes
<element name="createDate" nillable="true" type="xsd:string"/>
468 1 Tijmen de Mes
</sequence>
469 1 Tijmen de Mes
</complexType>
470 12 Tijmen de Mes
</pre>
471 1 Tijmen de Mes
472 1 Tijmen de Mes
Meaning of SIP account attributes:
473 1 Tijmen de Mes
474 1 Tijmen de Mes
* rpid: caller id presented to the callee when calling to PSTN destinations
475 1 Tijmen de Mes
* prepaid: if true, subscriber may call within the limit of its prepaid balance, when balance is zero all calls in progress are cut
476 1 Tijmen de Mes
* properties: list with attribute/value pairs, used to store arbitrary data per subscriber
477 1 Tijmen de Mes
* quota: if set to a possitive integer, the subscriber may call to the PSTN up to this limit, calls in progress continue, the usage is reset each calendar month
478 1 Tijmen de Mes
* region: label that matches a region when calling an emergency number, the call is routed to the emergency point defined for that region
479 1 Tijmen de Mes
* callLimit: maximum amount of concurrent PSTN calls allowed
480 1 Tijmen de Mes
* acl: a list of allowed IP networks
481 1 Tijmen de Mes
482 1 Tijmen de Mes
* groups: group membership for SIP accounts. Available groups and their meaning:
483 1 Tijmen de Mes
484 1 Tijmen de Mes
* free-pstn: subscriber may call to PSTN destinations
485 1 Tijmen de Mes
* blocked: only calls to emergency numbers defind in the SIP Proxy are allowed
486 1 Tijmen de Mes
* anonymous: hide caller id when calling to the PSTN (using Privacy headers)
487 1 Tijmen de Mes
* anonymous-reject: reject calls from "anonymous&#64;anonymous.invalid":mailto:anonymous@anonymous.invalid
488 1 Tijmen de Mes
* quota: subscriber has been blocked because monthy quota has been exceeded, calls to PSTN destinations are denied
489 1 Tijmen de Mes
* missed-calls: subscriber will be notifie by email about his sessions in the last 24 hours
490 1 Tijmen de Mes
491 1 Tijmen de Mes
Reserved groups for internal use (do not change them):
492 1 Tijmen de Mes
493 1 Tijmen de Mes
* prepaid, intercept
494 1 Tijmen de Mes
495 1 Tijmen de Mes
On updateAccount() operation all attributes must be supplied otherwise any missing attribute will be deleted. First perform a getAccount() operation, update the attributes that need to be changed and finally perform an updateAccount() with the modified object.
496 1 Tijmen de Mes
497 1 Tijmen de Mes
h3. Graphical client
498 1 Tijmen de Mes
499 1 Tijmen de Mes
@CDRTool->Accounts->SIP accounts@
500 1 Tijmen de Mes
501 28 Tijmen de Mes
!ngnpro-sip-accounts.png!
502 1 Tijmen de Mes
503 1 Tijmen de Mes
h3. Control panel
504 1 Tijmen de Mes
505 3 Tijmen de Mes
!http://wiki.sip2sip.info/attachments/3809/sip2sip-cp-menu.png(http://wiki.sip2sip.info/attachments/3809/sip2sip-cp-menu.png)!
506 1 Tijmen de Mes
507 1 Tijmen de Mes
The above menu gives you access to various settings and information related to your SIP account.
508 1 Tijmen de Mes
509 1 Tijmen de Mes
h3. Voicemail
510 1 Tijmen de Mes
511 1 Tijmen de Mes
This panel can set the way the voicemail messages are delivered.
512 1 Tijmen de Mes
513 3 Tijmen de Mes
!http://wiki.sip2sip.info/attachments/3813/sip2sip-cp-voicemail.png(http://wiki.sip2sip.info/attachments/3813/sip2sip-cp-voicemail.png)!
514 1 Tijmen de Mes
515 1 Tijmen de Mes
h3. Online devices
516 1 Tijmen de Mes
517 1 Tijmen de Mes
This panel displays the list of registered SIP devices.
518 1 Tijmen de Mes
519 29 Tijmen de Mes
!sip2sip-cp-devices.png!
520 1 Tijmen de Mes
521 1 Tijmen de Mes
h3. Accept calls
522 1 Tijmen de Mes
523 1 Tijmen de Mes
This panel control when and from whom calls are accepted.
524 1 Tijmen de Mes
525 3 Tijmen de Mes
!http://wiki.sip2sip.info/attachments/3801/sip2sip-cp-accept.png(http://wiki.sip2sip.info/attachments/3801/sip2sip-cp-accept.png)!
526 1 Tijmen de Mes
527 1 Tijmen de Mes
h3. Call diversions
528 1 Tijmen de Mes
529 1 Tijmen de Mes
This panel controls the call diversions.
530 1 Tijmen de Mes
531 3 Tijmen de Mes
!http://wiki.sip2sip.info/attachments/3807/sip2sip-cp-diversions.png(http://wiki.sip2sip.info/attachments/3807/sip2sip-cp-diversions.png)!
532 1 Tijmen de Mes
533 1 Tijmen de Mes
Call diversions data type:
534 1 Tijmen de Mes
535 13 Tijmen de Mes
<pre>
536 13 Tijmen de Mes
<complexType name="CallDiversions">
537 1 Tijmen de Mes
538 13 Tijmen de Mes
<sequence>
539 1 Tijmen de Mes
540 13 Tijmen de Mes
<!--
541 1 Tijmen de Mes
542 1 Tijmen de Mes
                        FUNC - forward unconditionally
543 1 Tijmen de Mes
                        FNOL - forward if not online
544 1 Tijmen de Mes
                        FUNV - forward if not available
545 1 Tijmen de Mes
                        FNOA - forward if no answer
546 1 Tijmen de Mes
                        FBUS - forward if busy
547 1 Tijmen de Mes
                        RUNC - redirect unconditionally
548 1 Tijmen de Mes
                        RNOL - redirect if not online
549 1 Tijmen de Mes
                        RUNV - redirect if not available
550 1 Tijmen de Mes
                        RNOA - redirect if no answer
551 1 Tijmen de Mes
                        RBUS - redirect if busy
552 1 Tijmen de Mes
            
553 1 Tijmen de Mes
            - Forward conditions cause the traffic to be routed and accounted through the SIP Proxy
554 1 Tijmen de Mes
            - Redirect conditions cause traffic to be made directly between the caller and end destination, 
555 1 Tijmen de Mes
              bypassing the SIP Proxy
556 1 Tijmen de Mes
            - Always used FXXX conditions when accounting is desired
557 1 Tijmen de Mes
            
558 1 Tijmen de Mes
                    
559 13 Tijmen de Mes
-->
560 13 Tijmen de Mes
<element name="FUNC" nillable="true" type="xsd:string"/>
561 13 Tijmen de Mes
<element name="FNOL" nillable="true" type="xsd:string"/>
562 13 Tijmen de Mes
<element name="FUNV" nillable="true" type="xsd:string"/>
563 13 Tijmen de Mes
<element name="FNOA" nillable="true" type="xsd:string"/>
564 13 Tijmen de Mes
<element name="FBUS" nillable="true" type="xsd:string"/>
565 13 Tijmen de Mes
<element name="RUNC" nillable="true" type="xsd:string"/>
566 13 Tijmen de Mes
<element name="RNOL" nillable="true" type="xsd:string"/>
567 13 Tijmen de Mes
<element name="RUNV" nillable="true" type="xsd:string"/>
568 13 Tijmen de Mes
<element name="RNOA" nillable="true" type="xsd:string"/>
569 13 Tijmen de Mes
<element name="RBUS" nillable="true" type="xsd:string"/>
570 13 Tijmen de Mes
</sequence>
571 13 Tijmen de Mes
</complexType>
572 1 Tijmen de Mes
</pre>
573 1 Tijmen de Mes
574 1 Tijmen de Mes
h3. Aliases
575 1 Tijmen de Mes
576 1 Tijmen de Mes
This panel displays the aliases associated with a SIP account.
577 1 Tijmen de Mes
578 3 Tijmen de Mes
!http://wiki.sip2sip.info/raw-attachment/wiki/SipSettings/sip2sip-cp-aliases.png(http://wiki.sip2sip.info/raw-attachment/wiki/SipSettings/sip2sip-cp-aliases.png)!
579 1 Tijmen de Mes
580 1 Tijmen de Mes
h2. SIP Aliases
581 1 Tijmen de Mes
582 1 Tijmen de Mes
Aliases can be used to provide custom SIP addresses that map to exiting SIP accounts.
583 1 Tijmen de Mes
584 1 Tijmen de Mes
h3. SOAP/XML functions
585 1 Tijmen de Mes
586 1 Tijmen de Mes
* SipPort-&gt;addAlias()
587 1 Tijmen de Mes
* SipPort-&gt;updateAlias()
588 1 Tijmen de Mes
* SipPort-&gt;deleteAlias()
589 1 Tijmen de Mes
* SipPort-&gt;getAlias()
590 1 Tijmen de Mes
* SipPort-&gt;getAliasesForAccount()
591 1 Tijmen de Mes
* SipPort-&gt;getAliases()
592 1 Tijmen de Mes
593 1 Tijmen de Mes
h3. Graphical client
594 1 Tijmen de Mes
595 1 Tijmen de Mes
@CDRTool->Accounts->SIP aliases@
596 1 Tijmen de Mes
597 3 Tijmen de Mes
!gngnpro-sip-aliases.png!
598 1 Tijmen de Mes
599 1 Tijmen de Mes
h2. Trusted Peers
600 1 Tijmen de Mes
601 1 Tijmen de Mes
Trusted peers are identified by their IP addresses and are allowed to transit the platform. Trusted peers are used to define SIP trunks to/from PBXs allowed to connect to the platform. For more information see "SIP trunking section":http://msp-documentation.ag-projects.com/wiki/PeeringGuide#SIPtrunking.
602 1 Tijmen de Mes
603 1 Tijmen de Mes
h3. SOAP/XML functions
604 1 Tijmen de Mes
605 1 Tijmen de Mes
* SipPort-&gt;addTrustedPeer()
606 1 Tijmen de Mes
* SipPort-&gt;deleteTrustedPeer()
607 1 Tijmen de Mes
* SipPort-&gt;getTrustedPeers()
608 1 Tijmen de Mes
609 1 Tijmen de Mes
Trusted peer attributes:
610 1 Tijmen de Mes
611 14 Tijmen de Mes
<pre>
612 14 Tijmen de Mes
<complexType name="TrustedPeer">
613 1 Tijmen de Mes
614 1 Tijmen de Mes
<sequence>
615 1 Tijmen de Mes
<element name="ip" nillable="false" type="xsd:string"/>
616 1 Tijmen de Mes
<element name="protocol" nillable="true" type="ngnpro:TrustedPeerProtocol" default="any"/>
617 1 Tijmen de Mes
<element name="fromPattern" nillable="true" type="xsd:string" default="^sip:.*$"/>
618 1 Tijmen de Mes
<element name="tag" nillable="true" type="xsd:string"/>
619 1 Tijmen de Mes
<element name="description" nillable="true" type="xsd:string" default=""/>
620 1 Tijmen de Mes
<element name="reseller" nillable="true" type="xsd:integer"/>
621 1 Tijmen de Mes
<element name="changeDate" nillable="true" type="xsd:string"/>
622 1 Tijmen de Mes
</sequence>
623 1 Tijmen de Mes
</complexType>
624 14 Tijmen de Mes
</pre>
625 1 Tijmen de Mes
626 1 Tijmen de Mes
h3. Graphical client
627 1 Tijmen de Mes
628 1 Tijmen de Mes
@CDRTool->Accounts->Trusted peers@
629 1 Tijmen de Mes
630 3 Tijmen de Mes
!gngnpro-trusted-peers.png!
631 1 Tijmen de Mes
632 1 Tijmen de Mes
h2. ENUM Ranges
633 1 Tijmen de Mes
634 1 Tijmen de Mes
ENUM is used in the routing logic of the SIP Proxy for sessions that use telephone numbers as identifiers. ENUM is a protocol that provides a translation mechanism for E.164 telephone numbers into IP addressing schemes.
635 1 Tijmen de Mes
636 1 Tijmen de Mes
An ENUM range is a telephone number prefix that has been allocated to your platform (by your telephone numbers supplier or telecom regulator in your country). For example you are an operator in Holland (contry code 31) and you have been allocated from the local authorities the numbers 31208005100 till 31208005199 (one hundred numbers). The prefix is therefore 312080051. First create an ENUM range using this prefix, then add individual numbers belonging to this range.
637 1 Tijmen de Mes
638 1 Tijmen de Mes
An ENUM range is similar with a DNS zones but it contains extra non DNS attributes like the type of numbers allowed to be stored.
639 1 Tijmen de Mes
640 1 Tijmen de Mes
h3. SOAP/XML functions
641 1 Tijmen de Mes
642 1 Tijmen de Mes
* EnumPort-&gt;addRange()
643 1 Tijmen de Mes
* EnumPort-&gt;updateRange()
644 1 Tijmen de Mes
* EnumPort-&gt;deleteRange()
645 1 Tijmen de Mes
* EnumPort-&gt;getRanges()
646 1 Tijmen de Mes
647 1 Tijmen de Mes
ENUM range attributes:
648 1 Tijmen de Mes
649 15 Tijmen de Mes
<pre>
650 15 Tijmen de Mes
<complexType name="EnumRange">
651 1 Tijmen de Mes
652 1 Tijmen de Mes
<sequence>
653 1 Tijmen de Mes
<element name="id" nillable="false" type="ngnpro:EnumRangeId"/>
654 1 Tijmen de Mes
<element name="ttl" nillable="true" type="xsd:nonNegativeInteger" default="3600"/>
655 1 Tijmen de Mes
<element name="minDigits" nillable="true" type="xsd:int"/>
656 1 Tijmen de Mes
<element name="maxDigits" nillable="true" type="xsd:int"/>
657 1 Tijmen de Mes
<element name="size" nillable="true" type="xsd:int"/>
658 1 Tijmen de Mes
<element name="nameservers" nillable="true" type="ngnpro:StringArray"/>
659 1 Tijmen de Mes
<element name="used" nillable="true" type="xsd:int"/>
660 1 Tijmen de Mes
<element name="serial" nillable="true" type="xsd:int"/>
661 1 Tijmen de Mes
<element name="customer" nillable="true" type="xsd:integer"/>
662 1 Tijmen de Mes
<element name="reseller" nillable="true" type="xsd:integer"/>
663 1 Tijmen de Mes
<element name="changeDate" nillable="true" type="xsd:string"/>
664 1 Tijmen de Mes
<element name="info" nillable="true" type="xsd:string"/>
665 1 Tijmen de Mes
</sequence>
666 1 Tijmen de Mes
</complexType>
667 15 Tijmen de Mes
</pre>
668 1 Tijmen de Mes
669 1 Tijmen de Mes
h3. Graphical client
670 1 Tijmen de Mes
671 1 Tijmen de Mes
@CDRTool->Accounts->ENUM ranges@
672 1 Tijmen de Mes
673 30 Tijmen de Mes
!ngnpro-enum-ranges.png!
674 1 Tijmen de Mes
675 1 Tijmen de Mes
Click on each range to modify its properties.
676 1 Tijmen de Mes
677 30 Tijmen de Mes
!ngnpro-enum-range.png!
678 1 Tijmen de Mes
679 1 Tijmen de Mes
h2. ENUM Numbers
680 1 Tijmen de Mes
681 1 Tijmen de Mes
ENUM is used in the routing logic of the SIP Proxy for sessions that use telephone numbers as identifiers. For each SIP account in the platform that must be reachable besides the SIP address also by one ore more telephone numbers, you must create the ENUM numbers and add mappings to their corresponding SIP account. Before creating any ENUM number, you must create an ENUM range.
682 1 Tijmen de Mes
683 1 Tijmen de Mes
The ENUM NAPTR record management has been developed based on the standards described at "http://www.ag-projects.com/content/view/61/96/":http://www.ag-projects.com/content/view/61/96/
684 1 Tijmen de Mes
685 1 Tijmen de Mes
Each ENUM number may have up to 5 NAPTR records as specified in ETSI TS 102 172 V1.2.1 (Minimum requirements for interoperability of ENUM implementations)
686 1 Tijmen de Mes
687 1 Tijmen de Mes
h3. SOAP/XML functions
688 1 Tijmen de Mes
689 1 Tijmen de Mes
* EnumPort-&gt;addNumber()
690 1 Tijmen de Mes
* EnumPort-&gt;updateNumber()
691 1 Tijmen de Mes
* EnumPort-&gt;deleteNumber()
692 1 Tijmen de Mes
* EnumPort-&gt;getNumber()
693 1 Tijmen de Mes
* EnumPort-&gt;getNumbers()
694 1 Tijmen de Mes
695 1 Tijmen de Mes
ENUM number attributes:
696 1 Tijmen de Mes
697 16 Tijmen de Mes
<pre>
698 16 Tijmen de Mes
<complexType name="EnumNumber">
699 1 Tijmen de Mes
700 1 Tijmen de Mes
<sequence>
701 1 Tijmen de Mes
<element name="id" nillable="false" type="ngnpro:EnumId"/>
702 1 Tijmen de Mes
<element name="mappings" nillable="true" type="ngnpro:EnumMappingArray"/>
703 1 Tijmen de Mes
<element name="info" nillable="true" type="xsd:string"/>
704 1 Tijmen de Mes
<element name="owner" nillable="true" type="xsd:integer"/>
705 1 Tijmen de Mes
<element name="customer" nillable="true" type="xsd:integer"/>
706 1 Tijmen de Mes
<element name="reseller" nillable="true" type="xsd:integer"/>
707 1 Tijmen de Mes
<element name="changeDate" nillable="true" type="xsd:string"/>
708 1 Tijmen de Mes
</sequence>
709 1 Tijmen de Mes
</complexType>
710 16 Tijmen de Mes
</pre>
711 1 Tijmen de Mes
712 1 Tijmen de Mes
713 1 Tijmen de Mes
ENUM mapping attributes:
714 1 Tijmen de Mes
715 16 Tijmen de Mes
<pre>
716 16 Tijmen de Mes
<complexType name="EnumMapping">
717 1 Tijmen de Mes
718 1 Tijmen de Mes
<sequence>
719 1 Tijmen de Mes
<element name="id" nillable="true" type="xsd:int"/>
720 1 Tijmen de Mes
<element name="type" nillable="true" type="xsd:string"/>
721 1 Tijmen de Mes
<element name="mapto" nillable="true" type="xsd:string"/>
722 1 Tijmen de Mes
<element name="priority" nillable="true" type="xsd:int"/>
723 1 Tijmen de Mes
<element name="ttl" nillable="true" type="xsd:int" default="3600"/>
724 1 Tijmen de Mes
</sequence>
725 1 Tijmen de Mes
</complexType>
726 16 Tijmen de Mes
</pre>
727 1 Tijmen de Mes
728 1 Tijmen de Mes
The following NAPTR record types ENUM service types are supported:
729 1 Tijmen de Mes
730 16 Tijmen de Mes
<pre>
731 16 Tijmen de Mes
var $NAPTR_services=array(
732 1 Tijmen de Mes
        "sip"    => array("service"=>"sip",
733 1 Tijmen de Mes
                              "webname"=>"SIP",
734 1 Tijmen de Mes
                              "schemas"=>array("sip:","sips:")),
735 1 Tijmen de Mes
        "mailto" => array("service"=>"mailto",
736 1 Tijmen de Mes
                              "webname"=>"Email",
737 1 Tijmen de Mes
                              "schemas"=>array("mailto:")),
738 1 Tijmen de Mes
        "web:http"   => array("service"=>"web:http",
739 1 Tijmen de Mes
                              "webname"=>"WEB (http)",
740 1 Tijmen de Mes
                              "schemas"=>array("http://")),
741 1 Tijmen de Mes
        "web:https"  => array("service"=>"web:https",
742 1 Tijmen de Mes
                              "webname"=>"WEB (https)",
743 1 Tijmen de Mes
                              "schemas"=>array("https://")),
744 1 Tijmen de Mes
        "x-skype:callto" => array("service"=>"x-skype:callto",
745 1 Tijmen de Mes
                              "webname"=>"Skype",
746 1 Tijmen de Mes
                              "schemas"=>array("callto:")),
747 1 Tijmen de Mes
        "h323"   => array("service"=>"h323",
748 1 Tijmen de Mes
                              "webname"=>"H323",
749 1 Tijmen de Mes
                              "schemas"=>array("h323:")),
750 1 Tijmen de Mes
        "iax"    => array("service"=>"iax",
751 1 Tijmen de Mes
                              "webname"=>"IAX",
752 1 Tijmen de Mes
                              "schemas"=>array("iax:")),
753 1 Tijmen de Mes
        "iax2"   => array("service"=>"iax2",
754 1 Tijmen de Mes
                              "webname"=>"IAX2",
755 1 Tijmen de Mes
                              "schemas"=>array("iax2:")),
756 1 Tijmen de Mes
        "mms"    => array("service"=>"mms",
757 1 Tijmen de Mes
                              "webname"=>"MMS",
758 1 Tijmen de Mes
                              "schemas"=>array("tel:","mailto:")),
759 1 Tijmen de Mes
        "sms"    => array("service"=>"sms",
760 1 Tijmen de Mes
                              "webname"=>"SMS",
761 1 Tijmen de Mes
                              "schemas"=>array("tel:","mailto:")),
762 1 Tijmen de Mes
        "ems"    => array("service"=>"ems",
763 1 Tijmen de Mes
                              "webname"=>"EMS",
764 1 Tijmen de Mes
                              "schemas"=>array("tel:","mailto:")),
765 1 Tijmen de Mes
        "im"     => array("service"=>"im",
766 1 Tijmen de Mes
                              "webname"=>"IM",
767 1 Tijmen de Mes
                              "schemas"=>array("im:")),
768 1 Tijmen de Mes
        "npd:tel"   => array("service"=>"npd+tel",
769 1 Tijmen de Mes
                              "webname"=>"Portability",
770 1 Tijmen de Mes
                              "schemas"=>array("tel:")),
771 1 Tijmen de Mes
        "void:mailto"  => array("service"=>"void:mailto",
772 1 Tijmen de Mes
                              "webname"=>"VOID(mail)",
773 1 Tijmen de Mes
                              "schemas"=>array("mailto:")),
774 1 Tijmen de Mes
        "void:http"  => array("service"=>"void:http",
775 1 Tijmen de Mes
                              "webname"=>"VOID(http)",
776 1 Tijmen de Mes
                              "schemas"=>array("http://")),
777 1 Tijmen de Mes
        "void:https" => array("service"=>"void:https",
778 1 Tijmen de Mes
                              "webname"=>"VOID(https)",
779 1 Tijmen de Mes
                              "schemas"=>array("https://")),
780 1 Tijmen de Mes
        "voice"  => array("service"=>"voice",
781 1 Tijmen de Mes
                              "webname"=>"Voice",
782 1 Tijmen de Mes
                              "schemas"=>array("voice:","tel:")),
783 1 Tijmen de Mes
        "tel"    => array("service"=>"tel",
784 1 Tijmen de Mes
                              "webname"=>"Tel",
785 1 Tijmen de Mes
                              "schemas"=>array("tel:")),
786 1 Tijmen de Mes
        "fax:tel"    => array("service"=>"fax:tel",
787 1 Tijmen de Mes
                              "webname"=>"Fax",
788 1 Tijmen de Mes
                              "schemas"=>array("tel:")),
789 1 Tijmen de Mes
        "ifax:mailto"   => array("service"=>"ifax:mailto",
790 1 Tijmen de Mes
                              "webname"=>"iFax",
791 1 Tijmen de Mes
                              "schemas"=>array("mailto:")),
792 1 Tijmen de Mes
        "pres"   => array("service"=>"pres",
793 1 Tijmen de Mes
                              "webname"=>"Presence",
794 1 Tijmen de Mes
                              "schemas"=>array("pres:")),
795 1 Tijmen de Mes
        "ft:ftp"    => array("service"=>"ft:ftp",
796 1 Tijmen de Mes
                              "webname"=>"FTP",
797 1 Tijmen de Mes
                              "schemas"=>array("ftp://")),
798 1 Tijmen de Mes
        "loc:http"  => array("service"=>"loc:http",
799 1 Tijmen de Mes
                              "webname"=>"GeoLocation",
800 1 Tijmen de Mes
                              "schemas"=>array("http://")),
801 1 Tijmen de Mes
        "key:http"  => array("service"=>"key:http",
802 1 Tijmen de Mes
                              "webname"=>"Public key",
803 1 Tijmen de Mes
                              "schemas"=>array("http://")),
804 1 Tijmen de Mes
        "key:https"  => array("service"=>"key:https",
805 1 Tijmen de Mes
                              "webname"=>"Public key (HTTPS)",
806 1 Tijmen de Mes
                              "schemas"=>array("https://"))
807 16 Tijmen de Mes
        );
808 16 Tijmen de Mes
</pre>
809 1 Tijmen de Mes
810 1 Tijmen de Mes
h3. Graphical client
811 1 Tijmen de Mes
812 1 Tijmen de Mes
@CDRTool->Accounts->ENUM numbers@
813 1 Tijmen de Mes
814 26 Tijmen de Mes
!ngnpro-enum-numbers.png!
815 1 Tijmen de Mes
816 1 Tijmen de Mes
Click on each number to modify its properties.
817 1 Tijmen de Mes
818 26 Tijmen de Mes
!ngnpro-enum-number.png!
819 1 Tijmen de Mes
820 1 Tijmen de Mes
h2. Voicemail Accounts
821 1 Tijmen de Mes
822 1 Tijmen de Mes
The provisioning is performed using the SOAP/XML functions present in the Voicemail port described in NGNPro WSDL.
823 1 Tijmen de Mes
824 1 Tijmen de Mes
To add a voicemail account for a SIP account, the Voicemail.addAccount() method must be used. For each newly created account, a mailbox number will be automatically generated by the provisioning to uniquely identify the voicemail account. If you set the mailbox by yourself, please note that the Asterisk configuration might need to be updated, for example if you give shorter voicemailboxes (3, 4 digits), that are not accepted by default.
825 1 Tijmen de Mes
826 1 Tijmen de Mes
By default mailboxes are created starting with number 1000000.
827 1 Tijmen de Mes
828 1 Tijmen de Mes
You can configure the voicemail server to delete or store the received voicemail messages by setting VoicemailAccount.VoicemailOptions.delete attribute to True or False, respectively.
829 1 Tijmen de Mes
830 1 Tijmen de Mes
To forward requests of a SIP account to the Voicemail account, use the '&lt;voice-mailbox&gt;' wildcard as a value for FUNC, FNOL, FUNV, FNOA, FBUS forwarding indicators in the Sip.setCallDiversions() method.
831 1 Tijmen de Mes
832 1 Tijmen de Mes
Each SIP account can access its own voicemail messages and settings by dialing the voicemail extension (by default &#42;70) configured in the SIP Proxy in:
833 1 Tijmen de Mes
834 20 Tijmen de Mes
<pre>
835 17 Tijmen de Mes
  /etc/opensips/config/settings.m4
836 20 Tijmen de Mes
</pre>
837 1 Tijmen de Mes
838 20 Tijmen de Mes
<pre>
839 17 Tijmen de Mes
  # Number to dial to get to voicemail
840 1 Tijmen de Mes
  define(`VOICEMAIL_NUMBER', `*70')
841 20 Tijmen de Mes
</pre>
842 1 Tijmen de Mes
843 1 Tijmen de Mes
844 1 Tijmen de Mes
Some devices are using the &#42; key internally. For such devices you may create an alias in the platform (like voicemail or a full number without &#42;).
845 1 Tijmen de Mes
846 1 Tijmen de Mes
Voice messages are by default sent by email. If you wish to store the on the voicemail server and listen to them using a telephone device you must enable voicemail storage option for each SIP account using the provisioning API. If the server storage option is enabled, a Message Waiting Indicator (a.k.a MWI) is sent to the devices that subscribed for this event, the devices supporting such feature will provide an indication that voice messages have been stored on the server.
847 1 Tijmen de Mes
848 1 Tijmen de Mes
MWI is enabled if the storage of message on server is enabled. MWI is reset by accessing the voicemail box using a SIP phone.
849 1 Tijmen de Mes
850 1 Tijmen de Mes
To change the default content of asterisk email notification, you must edit in /etc/asterisk/voicemail.conf and change the following directives:
851 1 Tijmen de Mes
852 17 Tijmen de Mes
<pre>
853 1 Tijmen de Mes
;emailbody=
854 1 Tijmen de Mes
;emailsubject=
855 1 Tijmen de Mes
856 1 Tijmen de Mes
; Change the from, body and/or subject, variables:
857 1 Tijmen de Mes
;     VM_NAME, VM_DUR, VM_MSGNUM, VM_MAILBOX, VM_CALLERID, VM_CIDNUM,
858 1 Tijmen de Mes
;     VM_CIDNAME, VM_DATE
859 1 Tijmen de Mes
860 1 Tijmen de Mes
and
861 1 Tijmen de Mes
862 1 Tijmen de Mes
;serveremail = notification@some_domain.tld
863 1 Tijmen de Mes
</pre>
864 1 Tijmen de Mes
865 1 Tijmen de Mes
An asterisk reload or restart is required:
866 1 Tijmen de Mes
867 17 Tijmen de Mes
  sudo asterisk -r reload
868 1 Tijmen de Mes
869 1 Tijmen de Mes
870 1 Tijmen de Mes
h3. SOAP/XML functions
871 1 Tijmen de Mes
872 1 Tijmen de Mes
* VoicemailPort-&gt;addAccount()
873 1 Tijmen de Mes
* VoicemailPort-&gt;updateAccount()
874 1 Tijmen de Mes
* VoicemailPort-&gt;deleteAccount()
875 1 Tijmen de Mes
* VoicemailPort-&gt;getAccount()
876 1 Tijmen de Mes
* VoicemailPort-&gt;setAnnouncement()
877 1 Tijmen de Mes
878 1 Tijmen de Mes
h2. PSTN Routes
879 1 Tijmen de Mes
880 1 Tijmen de Mes
A route is a PSTN prefix, one or more carriers can be assigned for routing sessions for it. PSTN prefixes always start with 00 + Country code. (e.g. 0031 is Nederland). An empty prefix will match all possible routes while a longer match takes precedence. The actual number format sent out to the PSTN gateway can be modified using the gateway rules described below.
881 1 Tijmen de Mes
882 1 Tijmen de Mes
h3. SOAP/XML functions
883 1 Tijmen de Mes
884 1 Tijmen de Mes
* SipPort-&gt;addRoutes()
885 1 Tijmen de Mes
* SipPort-&gt;deleteRoutes()
886 1 Tijmen de Mes
* SipPort-&gt;getRoutes()
887 1 Tijmen de Mes
888 1 Tijmen de Mes
h3. Graphical client
889 1 Tijmen de Mes
890 1 Tijmen de Mes
@CDRTool->Accounts->PSTN routes@
891 1 Tijmen de Mes
892 26 Tijmen de Mes
!ngnpro-pstn-routes.png!
893 1 Tijmen de Mes
894 1 Tijmen de Mes
h2. PSTN Carriers
895 1 Tijmen de Mes
896 1 Tijmen de Mes
A carrier groups one or more gateways together and can be used during the assignment of PSTN routes. You must define at least one carrier for PSTN routing.
897 1 Tijmen de Mes
898 1 Tijmen de Mes
h3. SOAP/XML functions
899 1 Tijmen de Mes
900 1 Tijmen de Mes
* SipPort-&gt;addCarrier()
901 1 Tijmen de Mes
* SipPort-&gt;deleteCarrier()
902 1 Tijmen de Mes
* SipPort-&gt;getCarriers()
903 1 Tijmen de Mes
904 1 Tijmen de Mes
h3. Graphical client
905 1 Tijmen de Mes
906 1 Tijmen de Mes
@CDRTool->Accounts->PSTN carriers@
907 1 Tijmen de Mes
908 26 Tijmen de Mes
!ngnpro-pstn-carriers.png!
909 1 Tijmen de Mes
910 1 Tijmen de Mes
h2. PSTN Gateways
911 1 Tijmen de Mes
912 1 Tijmen de Mes
You must define at least one gateway for PSTN routing. Before creating any gateway you must create a carrier.
913 1 Tijmen de Mes
914 1 Tijmen de Mes
h3. SOAP/XML functions
915 1 Tijmen de Mes
916 1 Tijmen de Mes
* SipPort-&gt;addGateway()
917 1 Tijmen de Mes
* SipPort-&gt;updateGateway()
918 1 Tijmen de Mes
* SipPort-&gt;deleteGateway()
919 1 Tijmen de Mes
* SipPort-&gt;getGateways()
920 1 Tijmen de Mes
921 1 Tijmen de Mes
h3. Graphical client
922 1 Tijmen de Mes
923 1 Tijmen de Mes
@CDRTool->Accounts->PSTN gateways@
924 1 Tijmen de Mes
925 26 Tijmen de Mes
!ngnpro-pstn-gateways.png!
926 1 Tijmen de Mes
927 1 Tijmen de Mes
h2. PSTN Rules
928 1 Tijmen de Mes
929 1 Tijmen de Mes
These rules define the format of the request URI sent to the remote gateway. Rules can be used to strip and prepend digits depending on various conditions.
930 1 Tijmen de Mes
931 1 Tijmen de Mes
h3. SOAP/XML functions
932 1 Tijmen de Mes
933 1 Tijmen de Mes
* SipPort-&gt;addGatewayRule()
934 1 Tijmen de Mes
* SipPort-&gt;updateGatewayRule()
935 1 Tijmen de Mes
* SipPort-&gt;deleteGatewayRule()
936 1 Tijmen de Mes
* SipPort-&gt;getGatewayRules()
937 1 Tijmen de Mes
938 1 Tijmen de Mes
h3. Graphical client
939 1 Tijmen de Mes
940 1 Tijmen de Mes
@CDRTool->Accounts->PSTN rules@
941 1 Tijmen de Mes
942 26 Tijmen de Mes
!ngnpro-pstn-rules.png!
943 1 Tijmen de Mes
944 1 Tijmen de Mes
Click on rule to edit its properties.
945 1 Tijmen de Mes
946 26 Tijmen de Mes
!ngnpro-pstn-rule.png!
947 3 Tijmen de Mes
948 1 Tijmen de Mes
h2. Emergency Numbers
949 1 Tijmen de Mes
950 1 Tijmen de Mes
Emergency calls refer to dialing short numbers usually associated with emergency services like police or fire-brigade (e.g. 112 or 911). When a SIP session is setup to a short number designated as emergency (in the SIP Proxy configuration), a secondary database lookup is performed in the proxy database in the emergency&#95;mapping table. Based on the *region* attribute provisioned with each SIP account, the final destination number for the emergency service in the region of the account is looked up.
951 1 Tijmen de Mes
952 1 Tijmen de Mes
953 26 Tijmen de Mes
# Define the emergency numbers in the /etc/opensips/config/settings.m4
954 26 Tijmen de Mes
955 21 Tijmen de Mes
<pre>
956 18 Tijmen de Mes
  # Emergency numbers
957 18 Tijmen de Mes
  define(`EMERGENCY_NR1', `112')
958 18 Tijmen de Mes
  define(`EMERGENCY_NR2', `911')
959 1 Tijmen de Mes
  define(`EMERGENCY_NRS', `2')
960 1 Tijmen de Mes
</pre>
961 23 Tijmen de Mes
962 26 Tijmen de Mes
# Add the local access number for each region to emergency&#95;mapping table, the table has the following structure:
963 1 Tijmen de Mes
|*Field*|*Type*|
964 1 Tijmen de Mes
|id|int(10) unsigned|
965 1 Tijmen de Mes
|username|varchar(64)|
966 1 Tijmen de Mes
|domain|varchar(64)|
967 1 Tijmen de Mes
|region|varchar(32)|
968 1 Tijmen de Mes
|target|varchar(128)|
969 1 Tijmen de Mes
|change&#95;date|timestamp|
970 1 Tijmen de Mes
Example:
971 21 Tijmen de Mes
<pre>
972 21 Tijmen de Mes
+----------+-------------+-----------+-------------------------------+---------------------+
973 1 Tijmen de Mes
| username | domain      | region    | target                        | change_date         |      
974 1 Tijmen de Mes
+----------+-------------+-----------+-------------------------------+---------------------+
975 1 Tijmen de Mes
| 112      | example.com | 010       | sip:0031141217112@example.com | 2006-05-09 14:33:18 | 
976 1 Tijmen de Mes
| 112      | example.com | 0111      | sip:0031141219112@example.com | 2006-05-09 14:33:18 | 
977 1 Tijmen de Mes
| 112      | example.com | 0113      | sip:0031141219112@example.com | 2006-05-09 14:33:18 | 
978 1 Tijmen de Mes
| 112      | example.com | 0114      | sip:0031141219112@example.com | 2006-05-09 14:33:18 | 
979 1 Tijmen de Mes
| 112      | example.com | 0115      | sip:0031141219112@example.com | 2006-05-09 14:33:18 | 
980 1 Tijmen de Mes
+----------+-------------+-----------+-------------------------------+---------------------+
981 21 Tijmen de Mes
</pre>
982 1 Tijmen de Mes
983 21 Tijmen de Mes
 # Set the *region* attribute for each SIP account using Sip-&gt;updateAccount() to match the region column in emergency&#95;mapping table.</li>
984 1 Tijmen de Mes
985 1 Tijmen de Mes
h2. Email Notifications
986 1 Tijmen de Mes
987 1 Tijmen de Mes
h3. Quota exceeded
988 1 Tijmen de Mes
989 1 Tijmen de Mes
This notification is sent out to the email address associated with SIP accounts that have the *quota* attribute set to a positive value, when the monthly quota has been exceeded. The email is generated by a CDRTool cron job task from the script:
990 1 Tijmen de Mes
991 24 Tijmen de Mes
  /var/www/CDRTool/scripts/OpenSIPS/quotaCheck.php
992 1 Tijmen de Mes
993 1 Tijmen de Mes
994 1 Tijmen de Mes
To change the email headers or the body of the notification message you must insert/update a row in cdrtool.settings mysql table. See for an example:
995 1 Tijmen de Mes
996 24 Tijmen de Mes
  /var/www/CDRTool/setup/mysql/custom_notifications.mysql 
997 1 Tijmen de Mes
998 1 Tijmen de Mes
999 1 Tijmen de Mes
h3. Voicemail
1000 1 Tijmen de Mes
1001 1 Tijmen de Mes
The notification that contains also the actual voice message as a WAV attachment is sent out by the Asterisk voicemail server. To change the email headers or body you must change the configuration file:
1002 1 Tijmen de Mes
1003 24 Tijmen de Mes
  /etc/asterisk/voicemail.conf
1004 1 Tijmen de Mes
1005 1 Tijmen de Mes
1006 1 Tijmen de Mes
This notification cannot be enabled/disabled per user, it is a global platform setting.
1007 1 Tijmen de Mes
1008 1 Tijmen de Mes
h3. Last sessions
1009 1 Tijmen de Mes
1010 1 Tijmen de Mes
An email with last received sessions in the previous 24 hours is sent out by a CDRTool cronjob script:
1011 1 Tijmen de Mes
1012 24 Tijmen de Mes
  /var/www/CDRTool/scripts/OpenSIPS/notifyLastSessions.php
1013 1 Tijmen de Mes
1014 1 Tijmen de Mes
1015 1 Tijmen de Mes
The From header of the email notification can be modified by changing the following setting from /etc/cdrtool/global.inc:
1016 1 Tijmen de Mes
1017 24 Tijmen de Mes
  $CDRTool['provider']['fromEmail'] ="support@ag-projects.com";
1018 1 Tijmen de Mes
1019 1 Tijmen de Mes
1020 1 Tijmen de Mes
The notification is sent only if the SIP account belongs to the *missed-calls* group.