Provisioning guide

Version 35 (Tijmen de Mes, 11/30/2012 02:02 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 34 Tijmen de Mes
To help the development of a custom client an attachment:wsdl.tar.gz
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 35 Tijmen de Mes
  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 33 Tijmen de Mes
<pre>
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 33 Tijmen de Mes
sipdomain.com.             IN NAPTR  10 0 "S" "SIP+d2u" "" _sip._udp.sipdomain.com.
300 1 Tijmen de Mes
_sip._udp.sipdomain.com.   IN SRV    0  0 5060 sip.example.com.
301 33 Tijmen de Mes
302 1 Tijmen de Mes
</pre>
303 1 Tijmen de Mes
304 1 Tijmen de Mes
h3. SOAP/XML functions
305 1 Tijmen de Mes
306 1 Tijmen de Mes
* DnsPort-&gt;addRecord()
307 1 Tijmen de Mes
* DnsPort-&gt;updateRecord()
308 1 Tijmen de Mes
* DnsPort-&gt;deleteRecord()
309 1 Tijmen de Mes
* DnsPort-&gt;getRecord()
310 1 Tijmen de Mes
* DnsPort-&gt;getRecords()
311 1 Tijmen de Mes
312 1 Tijmen de Mes
DNS record attributes:
313 1 Tijmen de Mes
314 27 Tijmen de Mes
<pre>
315 11 Tijmen de Mes
<complexType name="DnsRecord">
316 1 Tijmen de Mes
317 1 Tijmen de Mes
<sequence>
318 1 Tijmen de Mes
<element name="id" nillable="true" type="xsd:integer"/>
319 1 Tijmen de Mes
<element name="zone" nillable="true" type="xsd:string"/>
320 1 Tijmen de Mes
<element name="name" nillable="true" type="xsd:string"/>
321 1 Tijmen de Mes
<element name="type" nillable="true" type="ngnpro:DnsRecordType"/>
322 1 Tijmen de Mes
<element name="ttl" nillable="true" type="xsd:unsignedInt"/>
323 1 Tijmen de Mes
<element name="value" nillable="true" type="xsd:string"/>
324 1 Tijmen de Mes
<element name="priority" nillable="true" type="xsd:unsignedShort"/>
325 1 Tijmen de Mes
<element name="owner" nillable="true" type="xsd:integer"/>
326 1 Tijmen de Mes
<element name="customer" nillable="true" type="xsd:integer"/>
327 1 Tijmen de Mes
<element name="reseller" nillable="true" type="xsd:integer"/>
328 1 Tijmen de Mes
<element name="changeDate" nillable="true" type="xsd:string"/>
329 1 Tijmen de Mes
</sequence>
330 1 Tijmen de Mes
</complexType>
331 11 Tijmen de Mes
</pre>
332 1 Tijmen de Mes
333 1 Tijmen de Mes
DNS record types:
334 1 Tijmen de Mes
335 11 Tijmen de Mes
<pre>
336 11 Tijmen de Mes
<simpleType name="DnsRecordType">
337 1 Tijmen de Mes
338 1 Tijmen de Mes
<xsd:restriction base="xsd:string">
339 1 Tijmen de Mes
<xsd:enumeration value="A"/>
340 1 Tijmen de Mes
<xsd:enumeration value="AAAA"/>
341 1 Tijmen de Mes
<xsd:enumeration value="CNAME"/>
342 1 Tijmen de Mes
<xsd:enumeration value="MX"/>
343 1 Tijmen de Mes
<xsd:enumeration value="NAPTR"/>
344 1 Tijmen de Mes
<xsd:enumeration value="NS"/>
345 1 Tijmen de Mes
<xsd:enumeration value="SRV"/>
346 1 Tijmen de Mes
<xsd:enumeration value="TXT"/>
347 1 Tijmen de Mes
<xsd:enumeration value="PTR"/>
348 1 Tijmen de Mes
<xsd:enumeration value="LOC"/>
349 1 Tijmen de Mes
</xsd:restriction>
350 1 Tijmen de Mes
</simpleType>
351 11 Tijmen de Mes
</pre>
352 1 Tijmen de Mes
353 1 Tijmen de Mes
h3. Graphical client
354 1 Tijmen de Mes
355 1 Tijmen de Mes
@CDRTool->Accounts->DNS records@
356 1 Tijmen de Mes
357 27 Tijmen de Mes
!ngnpro-dns-records.png!
358 1 Tijmen de Mes
359 1 Tijmen de Mes
Click on each record to edit its attributes.
360 1 Tijmen de Mes
361 27 Tijmen de Mes
!ngnpro-dns-record.png!
362 1 Tijmen de Mes
363 1 Tijmen de Mes
h2. SIP Domains
364 1 Tijmen de Mes
365 1 Tijmen de Mes
Before creating SIP accounts you need to create at least one SIP domain. (e.g. example.com)
366 1 Tijmen de Mes
367 1 Tijmen de Mes
h3. SOAP/XML functions
368 1 Tijmen de Mes
369 1 Tijmen de Mes
* SipPort-&gt;addDomain()
370 1 Tijmen de Mes
* SipPort-&gt;updateDomain()
371 1 Tijmen de Mes
* SipPort-&gt;deleteDomain()
372 1 Tijmen de Mes
* SipPort-&gt;getDomains()
373 1 Tijmen de Mes
374 1 Tijmen de Mes
h3. Graphical client
375 1 Tijmen de Mes
376 1 Tijmen de Mes
@CDRTool->Accounts->SIP domains@
377 1 Tijmen de Mes
378 27 Tijmen de Mes
!ngnpro-sip-domains.png!
379 1 Tijmen de Mes
380 1 Tijmen de Mes
h2. SIP Accounts
381 1 Tijmen de Mes
382 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.
383 1 Tijmen de Mes
384 1 Tijmen de Mes
You must add at least one SIP domain before adding a SIP account.
385 1 Tijmen de Mes
386 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.
387 1 Tijmen de Mes
388 1 Tijmen de Mes
To enable different rights for SIP accounts, they must be part of specific groups.
389 1 Tijmen de Mes
390 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.
391 1 Tijmen de Mes
392 1 Tijmen de Mes
To enable PSTN calls to a SIP account, that account must be in the 'free-pstn' group.
393 1 Tijmen de Mes
394 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.
395 1 Tijmen de Mes
396 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.
397 1 Tijmen de Mes
398 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.
399 1 Tijmen de Mes
400 1 Tijmen de Mes
To mark a SIP account as prepaid, the 'prepaid' attribute of the SipAccount structure must be set to True.
401 1 Tijmen de Mes
402 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.
403 1 Tijmen de Mes
404 1 Tijmen de Mes
Diversion rules routing order:
405 1 Tijmen de Mes
406 1 Tijmen de Mes
# Unavailable,
407 1 Tijmen de Mes
# Unconditional
408 1 Tijmen de Mes
# Not-online
409 1 Tijmen de Mes
# Busy
410 1 Tijmen de Mes
# No-answer
411 1 Tijmen de Mes
412 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).
413 1 Tijmen de Mes
414 1 Tijmen de Mes
The last 2 rules are not handled together with the other 3, they are only handled if the call fails.
415 1 Tijmen de Mes
416 1 Tijmen de Mes
h3. SOAP/XML functions
417 1 Tijmen de Mes
418 1 Tijmen de Mes
* SipPort-&gt;addAccount()
419 1 Tijmen de Mes
* SipPort-&gt;updateAccount()
420 1 Tijmen de Mes
* SipPort-&gt;deleteAccount()
421 1 Tijmen de Mes
* SipPort-&gt;getAccount()
422 1 Tijmen de Mes
* SipPort-&gt;getAccounts()
423 1 Tijmen de Mes
* SipPort-&gt;addToGroup()
424 1 Tijmen de Mes
* SipPort-&gt;removeFromGroup()
425 1 Tijmen de Mes
* SipPort-&gt;getGroups()
426 1 Tijmen de Mes
* SipPort-&gt;addPhonebookEntry()
427 1 Tijmen de Mes
* SipPort-&gt;updatePhonebookEntry()
428 1 Tijmen de Mes
* SipPort-&gt;deletePhonebookEntry()
429 1 Tijmen de Mes
* SipPort-&gt;getPhonebookEntries()
430 1 Tijmen de Mes
* SipPort-&gt;setRejectMembers()
431 1 Tijmen de Mes
* SipPort-&gt;getRejectMembers()
432 1 Tijmen de Mes
* SipPort-&gt;setAcceptRules()
433 1 Tijmen de Mes
* SipPort-&gt;getAcceptRules()
434 1 Tijmen de Mes
* SipPort-&gt;setBarringPrefixes()
435 1 Tijmen de Mes
* SipPort-&gt;getBarringPrefixes()
436 1 Tijmen de Mes
* SipPort-&gt;setCallDiversions()
437 1 Tijmen de Mes
* SipPort-&gt;getCallDiversions()
438 1 Tijmen de Mes
* SipPort-&gt;getCalls()
439 1 Tijmen de Mes
* SipPort-&gt;getCallStatistics()
440 1 Tijmen de Mes
* SipPort-&gt;getSipDeviceLocations()
441 1 Tijmen de Mes
442 1 Tijmen de Mes
SIP account attributes:
443 1 Tijmen de Mes
444 12 Tijmen de Mes
<pre>
445 12 Tijmen de Mes
<complexType name="SipAccount">
446 1 Tijmen de Mes
447 1 Tijmen de Mes
<sequence>
448 1 Tijmen de Mes
<element name="id" nillable="false" type="ngnpro:SipId"/>
449 1 Tijmen de Mes
<element name="password" nillable="true" type="xsd:string"/>
450 1 Tijmen de Mes
<element name="firstName" nillable="true" type="xsd:string"/>
451 1 Tijmen de Mes
<element name="lastName" nillable="true" type="xsd:string"/>
452 1 Tijmen de Mes
<element name="email" nillable="true" type="xsd:string"/>
453 1 Tijmen de Mes
<element name="acl" nillable="true" type="ngnpro:SubscriberACLArray"/>
454 1 Tijmen de Mes
<element name="groups" nillable="true" type="ngnpro:StringArray"/>
455 1 Tijmen de Mes
<element name="properties" nillable="true" type="ngnpro:PropertyArray"/>
456 1 Tijmen de Mes
<element name="timezone" nillable="true" type="xsd:string"/>
457 1 Tijmen de Mes
<element name="rpid" nillable="true" type="xsd:string"/>
458 1 Tijmen de Mes
<element name="quota" nillable="true" type="xsd:int"/>
459 1 Tijmen de Mes
<element name="quickdialPrefix" nillable="true" type="xsd:string"/>
460 1 Tijmen de Mes
<element name="callLimit" nillable="true" type="xsd:int"/>
461 1 Tijmen de Mes
<element name="prepaid" nillable="true" type="xsd:boolean"/>
462 1 Tijmen de Mes
<element name="region" nillable="true" type="xsd:string"/>
463 1 Tijmen de Mes
<element name="timeout" nillable="true" type="xsd:nonNegativeInteger"/>
464 1 Tijmen de Mes
<element name="owner" nillable="true" type="xsd:integer"/>
465 1 Tijmen de Mes
<element name="customer" nillable="true" type="xsd:integer"/>
466 1 Tijmen de Mes
<element name="reseller" nillable="true" type="xsd:integer"/>
467 1 Tijmen de Mes
<element name="changeDate" nillable="true" type="xsd:string"/>
468 1 Tijmen de Mes
<element name="createDate" nillable="true" type="xsd:string"/>
469 1 Tijmen de Mes
</sequence>
470 1 Tijmen de Mes
</complexType>
471 12 Tijmen de Mes
</pre>
472 1 Tijmen de Mes
473 1 Tijmen de Mes
Meaning of SIP account attributes:
474 1 Tijmen de Mes
475 1 Tijmen de Mes
* rpid: caller id presented to the callee when calling to PSTN destinations
476 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
477 1 Tijmen de Mes
* properties: list with attribute/value pairs, used to store arbitrary data per subscriber
478 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
479 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
480 1 Tijmen de Mes
* callLimit: maximum amount of concurrent PSTN calls allowed
481 1 Tijmen de Mes
* acl: a list of allowed IP networks
482 1 Tijmen de Mes
483 1 Tijmen de Mes
* groups: group membership for SIP accounts. Available groups and their meaning:
484 1 Tijmen de Mes
485 1 Tijmen de Mes
* free-pstn: subscriber may call to PSTN destinations
486 1 Tijmen de Mes
* blocked: only calls to emergency numbers defind in the SIP Proxy are allowed
487 1 Tijmen de Mes
* anonymous: hide caller id when calling to the PSTN (using Privacy headers)
488 1 Tijmen de Mes
* anonymous-reject: reject calls from "anonymous&#64;anonymous.invalid":mailto:anonymous@anonymous.invalid
489 1 Tijmen de Mes
* quota: subscriber has been blocked because monthy quota has been exceeded, calls to PSTN destinations are denied
490 1 Tijmen de Mes
* missed-calls: subscriber will be notifie by email about his sessions in the last 24 hours
491 1 Tijmen de Mes
492 1 Tijmen de Mes
Reserved groups for internal use (do not change them):
493 1 Tijmen de Mes
494 1 Tijmen de Mes
* prepaid, intercept
495 1 Tijmen de Mes
496 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.
497 1 Tijmen de Mes
498 1 Tijmen de Mes
h3. Graphical client
499 1 Tijmen de Mes
500 1 Tijmen de Mes
@CDRTool->Accounts->SIP accounts@
501 1 Tijmen de Mes
502 28 Tijmen de Mes
!ngnpro-sip-accounts.png!
503 1 Tijmen de Mes
504 1 Tijmen de Mes
h3. Control panel
505 1 Tijmen de Mes
506 3 Tijmen de Mes
!http://wiki.sip2sip.info/attachments/3809/sip2sip-cp-menu.png(http://wiki.sip2sip.info/attachments/3809/sip2sip-cp-menu.png)!
507 1 Tijmen de Mes
508 1 Tijmen de Mes
The above menu gives you access to various settings and information related to your SIP account.
509 1 Tijmen de Mes
510 1 Tijmen de Mes
h3. Voicemail
511 1 Tijmen de Mes
512 1 Tijmen de Mes
This panel can set the way the voicemail messages are delivered.
513 1 Tijmen de Mes
514 3 Tijmen de Mes
!http://wiki.sip2sip.info/attachments/3813/sip2sip-cp-voicemail.png(http://wiki.sip2sip.info/attachments/3813/sip2sip-cp-voicemail.png)!
515 1 Tijmen de Mes
516 1 Tijmen de Mes
h3. Online devices
517 1 Tijmen de Mes
518 1 Tijmen de Mes
This panel displays the list of registered SIP devices.
519 1 Tijmen de Mes
520 29 Tijmen de Mes
!sip2sip-cp-devices.png!
521 1 Tijmen de Mes
522 1 Tijmen de Mes
h3. Accept calls
523 1 Tijmen de Mes
524 1 Tijmen de Mes
This panel control when and from whom calls are accepted.
525 1 Tijmen de Mes
526 3 Tijmen de Mes
!http://wiki.sip2sip.info/attachments/3801/sip2sip-cp-accept.png(http://wiki.sip2sip.info/attachments/3801/sip2sip-cp-accept.png)!
527 1 Tijmen de Mes
528 1 Tijmen de Mes
h3. Call diversions
529 1 Tijmen de Mes
530 1 Tijmen de Mes
This panel controls the call diversions.
531 1 Tijmen de Mes
532 3 Tijmen de Mes
!http://wiki.sip2sip.info/attachments/3807/sip2sip-cp-diversions.png(http://wiki.sip2sip.info/attachments/3807/sip2sip-cp-diversions.png)!
533 1 Tijmen de Mes
534 1 Tijmen de Mes
Call diversions data type:
535 1 Tijmen de Mes
536 13 Tijmen de Mes
<pre>
537 13 Tijmen de Mes
<complexType name="CallDiversions">
538 1 Tijmen de Mes
539 13 Tijmen de Mes
<sequence>
540 1 Tijmen de Mes
541 13 Tijmen de Mes
<!--
542 1 Tijmen de Mes
543 1 Tijmen de Mes
                        FUNC - forward unconditionally
544 1 Tijmen de Mes
                        FNOL - forward if not online
545 1 Tijmen de Mes
                        FUNV - forward if not available
546 1 Tijmen de Mes
                        FNOA - forward if no answer
547 1 Tijmen de Mes
                        FBUS - forward if busy
548 1 Tijmen de Mes
                        RUNC - redirect unconditionally
549 1 Tijmen de Mes
                        RNOL - redirect if not online
550 1 Tijmen de Mes
                        RUNV - redirect if not available
551 1 Tijmen de Mes
                        RNOA - redirect if no answer
552 1 Tijmen de Mes
                        RBUS - redirect if busy
553 1 Tijmen de Mes
            
554 1 Tijmen de Mes
            - Forward conditions cause the traffic to be routed and accounted through the SIP Proxy
555 1 Tijmen de Mes
            - Redirect conditions cause traffic to be made directly between the caller and end destination, 
556 1 Tijmen de Mes
              bypassing the SIP Proxy
557 1 Tijmen de Mes
            - Always used FXXX conditions when accounting is desired
558 1 Tijmen de Mes
            
559 1 Tijmen de Mes
                    
560 13 Tijmen de Mes
-->
561 13 Tijmen de Mes
<element name="FUNC" nillable="true" type="xsd:string"/>
562 13 Tijmen de Mes
<element name="FNOL" nillable="true" type="xsd:string"/>
563 13 Tijmen de Mes
<element name="FUNV" nillable="true" type="xsd:string"/>
564 13 Tijmen de Mes
<element name="FNOA" nillable="true" type="xsd:string"/>
565 13 Tijmen de Mes
<element name="FBUS" nillable="true" type="xsd:string"/>
566 13 Tijmen de Mes
<element name="RUNC" nillable="true" type="xsd:string"/>
567 13 Tijmen de Mes
<element name="RNOL" nillable="true" type="xsd:string"/>
568 13 Tijmen de Mes
<element name="RUNV" nillable="true" type="xsd:string"/>
569 13 Tijmen de Mes
<element name="RNOA" nillable="true" type="xsd:string"/>
570 13 Tijmen de Mes
<element name="RBUS" nillable="true" type="xsd:string"/>
571 13 Tijmen de Mes
</sequence>
572 13 Tijmen de Mes
</complexType>
573 1 Tijmen de Mes
</pre>
574 1 Tijmen de Mes
575 1 Tijmen de Mes
h3. Aliases
576 1 Tijmen de Mes
577 1 Tijmen de Mes
This panel displays the aliases associated with a SIP account.
578 1 Tijmen de Mes
579 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)!
580 1 Tijmen de Mes
581 1 Tijmen de Mes
h2. SIP Aliases
582 1 Tijmen de Mes
583 1 Tijmen de Mes
Aliases can be used to provide custom SIP addresses that map to exiting SIP accounts.
584 1 Tijmen de Mes
585 1 Tijmen de Mes
h3. SOAP/XML functions
586 1 Tijmen de Mes
587 1 Tijmen de Mes
* SipPort-&gt;addAlias()
588 1 Tijmen de Mes
* SipPort-&gt;updateAlias()
589 1 Tijmen de Mes
* SipPort-&gt;deleteAlias()
590 1 Tijmen de Mes
* SipPort-&gt;getAlias()
591 1 Tijmen de Mes
* SipPort-&gt;getAliasesForAccount()
592 1 Tijmen de Mes
* SipPort-&gt;getAliases()
593 1 Tijmen de Mes
594 1 Tijmen de Mes
h3. Graphical client
595 1 Tijmen de Mes
596 1 Tijmen de Mes
@CDRTool->Accounts->SIP aliases@
597 1 Tijmen de Mes
598 32 Tijmen de Mes
!ngnpro-sip-aliases.png!
599 1 Tijmen de Mes
600 1 Tijmen de Mes
h2. Trusted Peers
601 1 Tijmen de Mes
602 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.
603 1 Tijmen de Mes
604 1 Tijmen de Mes
h3. SOAP/XML functions
605 1 Tijmen de Mes
606 1 Tijmen de Mes
* SipPort-&gt;addTrustedPeer()
607 1 Tijmen de Mes
* SipPort-&gt;deleteTrustedPeer()
608 1 Tijmen de Mes
* SipPort-&gt;getTrustedPeers()
609 1 Tijmen de Mes
610 1 Tijmen de Mes
Trusted peer attributes:
611 1 Tijmen de Mes
612 14 Tijmen de Mes
<pre>
613 14 Tijmen de Mes
<complexType name="TrustedPeer">
614 1 Tijmen de Mes
615 1 Tijmen de Mes
<sequence>
616 1 Tijmen de Mes
<element name="ip" nillable="false" type="xsd:string"/>
617 1 Tijmen de Mes
<element name="protocol" nillable="true" type="ngnpro:TrustedPeerProtocol" default="any"/>
618 1 Tijmen de Mes
<element name="fromPattern" nillable="true" type="xsd:string" default="^sip:.*$"/>
619 1 Tijmen de Mes
<element name="tag" nillable="true" type="xsd:string"/>
620 1 Tijmen de Mes
<element name="description" nillable="true" type="xsd:string" default=""/>
621 1 Tijmen de Mes
<element name="reseller" nillable="true" type="xsd:integer"/>
622 1 Tijmen de Mes
<element name="changeDate" nillable="true" type="xsd:string"/>
623 1 Tijmen de Mes
</sequence>
624 1 Tijmen de Mes
</complexType>
625 14 Tijmen de Mes
</pre>
626 1 Tijmen de Mes
627 1 Tijmen de Mes
h3. Graphical client
628 1 Tijmen de Mes
629 1 Tijmen de Mes
@CDRTool->Accounts->Trusted peers@
630 1 Tijmen de Mes
631 31 Tijmen de Mes
!ngnpro-trusted-peers.png!
632 1 Tijmen de Mes
633 1 Tijmen de Mes
h2. ENUM Ranges
634 1 Tijmen de Mes
635 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.
636 1 Tijmen de Mes
637 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.
638 1 Tijmen de Mes
639 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.
640 1 Tijmen de Mes
641 1 Tijmen de Mes
h3. SOAP/XML functions
642 1 Tijmen de Mes
643 1 Tijmen de Mes
* EnumPort-&gt;addRange()
644 1 Tijmen de Mes
* EnumPort-&gt;updateRange()
645 1 Tijmen de Mes
* EnumPort-&gt;deleteRange()
646 1 Tijmen de Mes
* EnumPort-&gt;getRanges()
647 1 Tijmen de Mes
648 1 Tijmen de Mes
ENUM range attributes:
649 1 Tijmen de Mes
650 15 Tijmen de Mes
<pre>
651 15 Tijmen de Mes
<complexType name="EnumRange">
652 1 Tijmen de Mes
653 1 Tijmen de Mes
<sequence>
654 1 Tijmen de Mes
<element name="id" nillable="false" type="ngnpro:EnumRangeId"/>
655 1 Tijmen de Mes
<element name="ttl" nillable="true" type="xsd:nonNegativeInteger" default="3600"/>
656 1 Tijmen de Mes
<element name="minDigits" nillable="true" type="xsd:int"/>
657 1 Tijmen de Mes
<element name="maxDigits" nillable="true" type="xsd:int"/>
658 1 Tijmen de Mes
<element name="size" nillable="true" type="xsd:int"/>
659 1 Tijmen de Mes
<element name="nameservers" nillable="true" type="ngnpro:StringArray"/>
660 1 Tijmen de Mes
<element name="used" nillable="true" type="xsd:int"/>
661 1 Tijmen de Mes
<element name="serial" nillable="true" type="xsd:int"/>
662 1 Tijmen de Mes
<element name="customer" nillable="true" type="xsd:integer"/>
663 1 Tijmen de Mes
<element name="reseller" nillable="true" type="xsd:integer"/>
664 1 Tijmen de Mes
<element name="changeDate" nillable="true" type="xsd:string"/>
665 1 Tijmen de Mes
<element name="info" nillable="true" type="xsd:string"/>
666 1 Tijmen de Mes
</sequence>
667 1 Tijmen de Mes
</complexType>
668 15 Tijmen de Mes
</pre>
669 1 Tijmen de Mes
670 1 Tijmen de Mes
h3. Graphical client
671 1 Tijmen de Mes
672 1 Tijmen de Mes
@CDRTool->Accounts->ENUM ranges@
673 1 Tijmen de Mes
674 30 Tijmen de Mes
!ngnpro-enum-ranges.png!
675 1 Tijmen de Mes
676 1 Tijmen de Mes
Click on each range to modify its properties.
677 1 Tijmen de Mes
678 30 Tijmen de Mes
!ngnpro-enum-range.png!
679 1 Tijmen de Mes
680 1 Tijmen de Mes
h2. ENUM Numbers
681 1 Tijmen de Mes
682 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.
683 1 Tijmen de Mes
684 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/
685 1 Tijmen de Mes
686 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)
687 1 Tijmen de Mes
688 1 Tijmen de Mes
h3. SOAP/XML functions
689 1 Tijmen de Mes
690 1 Tijmen de Mes
* EnumPort-&gt;addNumber()
691 1 Tijmen de Mes
* EnumPort-&gt;updateNumber()
692 1 Tijmen de Mes
* EnumPort-&gt;deleteNumber()
693 1 Tijmen de Mes
* EnumPort-&gt;getNumber()
694 1 Tijmen de Mes
* EnumPort-&gt;getNumbers()
695 1 Tijmen de Mes
696 1 Tijmen de Mes
ENUM number attributes:
697 1 Tijmen de Mes
698 16 Tijmen de Mes
<pre>
699 16 Tijmen de Mes
<complexType name="EnumNumber">
700 1 Tijmen de Mes
701 1 Tijmen de Mes
<sequence>
702 1 Tijmen de Mes
<element name="id" nillable="false" type="ngnpro:EnumId"/>
703 1 Tijmen de Mes
<element name="mappings" nillable="true" type="ngnpro:EnumMappingArray"/>
704 1 Tijmen de Mes
<element name="info" nillable="true" type="xsd:string"/>
705 1 Tijmen de Mes
<element name="owner" nillable="true" type="xsd:integer"/>
706 1 Tijmen de Mes
<element name="customer" nillable="true" type="xsd:integer"/>
707 1 Tijmen de Mes
<element name="reseller" nillable="true" type="xsd:integer"/>
708 1 Tijmen de Mes
<element name="changeDate" nillable="true" type="xsd:string"/>
709 1 Tijmen de Mes
</sequence>
710 1 Tijmen de Mes
</complexType>
711 16 Tijmen de Mes
</pre>
712 1 Tijmen de Mes
713 1 Tijmen de Mes
714 1 Tijmen de Mes
ENUM mapping attributes:
715 1 Tijmen de Mes
716 16 Tijmen de Mes
<pre>
717 16 Tijmen de Mes
<complexType name="EnumMapping">
718 1 Tijmen de Mes
719 1 Tijmen de Mes
<sequence>
720 1 Tijmen de Mes
<element name="id" nillable="true" type="xsd:int"/>
721 1 Tijmen de Mes
<element name="type" nillable="true" type="xsd:string"/>
722 1 Tijmen de Mes
<element name="mapto" nillable="true" type="xsd:string"/>
723 1 Tijmen de Mes
<element name="priority" nillable="true" type="xsd:int"/>
724 1 Tijmen de Mes
<element name="ttl" nillable="true" type="xsd:int" default="3600"/>
725 1 Tijmen de Mes
</sequence>
726 1 Tijmen de Mes
</complexType>
727 16 Tijmen de Mes
</pre>
728 1 Tijmen de Mes
729 1 Tijmen de Mes
The following NAPTR record types ENUM service types are supported:
730 1 Tijmen de Mes
731 16 Tijmen de Mes
<pre>
732 16 Tijmen de Mes
var $NAPTR_services=array(
733 1 Tijmen de Mes
        "sip"    => array("service"=>"sip",
734 1 Tijmen de Mes
                              "webname"=>"SIP",
735 1 Tijmen de Mes
                              "schemas"=>array("sip:","sips:")),
736 1 Tijmen de Mes
        "mailto" => array("service"=>"mailto",
737 1 Tijmen de Mes
                              "webname"=>"Email",
738 1 Tijmen de Mes
                              "schemas"=>array("mailto:")),
739 1 Tijmen de Mes
        "web:http"   => array("service"=>"web:http",
740 1 Tijmen de Mes
                              "webname"=>"WEB (http)",
741 1 Tijmen de Mes
                              "schemas"=>array("http://")),
742 1 Tijmen de Mes
        "web:https"  => array("service"=>"web:https",
743 1 Tijmen de Mes
                              "webname"=>"WEB (https)",
744 1 Tijmen de Mes
                              "schemas"=>array("https://")),
745 1 Tijmen de Mes
        "x-skype:callto" => array("service"=>"x-skype:callto",
746 1 Tijmen de Mes
                              "webname"=>"Skype",
747 1 Tijmen de Mes
                              "schemas"=>array("callto:")),
748 1 Tijmen de Mes
        "h323"   => array("service"=>"h323",
749 1 Tijmen de Mes
                              "webname"=>"H323",
750 1 Tijmen de Mes
                              "schemas"=>array("h323:")),
751 1 Tijmen de Mes
        "iax"    => array("service"=>"iax",
752 1 Tijmen de Mes
                              "webname"=>"IAX",
753 1 Tijmen de Mes
                              "schemas"=>array("iax:")),
754 1 Tijmen de Mes
        "iax2"   => array("service"=>"iax2",
755 1 Tijmen de Mes
                              "webname"=>"IAX2",
756 1 Tijmen de Mes
                              "schemas"=>array("iax2:")),
757 1 Tijmen de Mes
        "mms"    => array("service"=>"mms",
758 1 Tijmen de Mes
                              "webname"=>"MMS",
759 1 Tijmen de Mes
                              "schemas"=>array("tel:","mailto:")),
760 1 Tijmen de Mes
        "sms"    => array("service"=>"sms",
761 1 Tijmen de Mes
                              "webname"=>"SMS",
762 1 Tijmen de Mes
                              "schemas"=>array("tel:","mailto:")),
763 1 Tijmen de Mes
        "ems"    => array("service"=>"ems",
764 1 Tijmen de Mes
                              "webname"=>"EMS",
765 1 Tijmen de Mes
                              "schemas"=>array("tel:","mailto:")),
766 1 Tijmen de Mes
        "im"     => array("service"=>"im",
767 1 Tijmen de Mes
                              "webname"=>"IM",
768 1 Tijmen de Mes
                              "schemas"=>array("im:")),
769 1 Tijmen de Mes
        "npd:tel"   => array("service"=>"npd+tel",
770 1 Tijmen de Mes
                              "webname"=>"Portability",
771 1 Tijmen de Mes
                              "schemas"=>array("tel:")),
772 1 Tijmen de Mes
        "void:mailto"  => array("service"=>"void:mailto",
773 1 Tijmen de Mes
                              "webname"=>"VOID(mail)",
774 1 Tijmen de Mes
                              "schemas"=>array("mailto:")),
775 1 Tijmen de Mes
        "void:http"  => array("service"=>"void:http",
776 1 Tijmen de Mes
                              "webname"=>"VOID(http)",
777 1 Tijmen de Mes
                              "schemas"=>array("http://")),
778 1 Tijmen de Mes
        "void:https" => array("service"=>"void:https",
779 1 Tijmen de Mes
                              "webname"=>"VOID(https)",
780 1 Tijmen de Mes
                              "schemas"=>array("https://")),
781 1 Tijmen de Mes
        "voice"  => array("service"=>"voice",
782 1 Tijmen de Mes
                              "webname"=>"Voice",
783 1 Tijmen de Mes
                              "schemas"=>array("voice:","tel:")),
784 1 Tijmen de Mes
        "tel"    => array("service"=>"tel",
785 1 Tijmen de Mes
                              "webname"=>"Tel",
786 1 Tijmen de Mes
                              "schemas"=>array("tel:")),
787 1 Tijmen de Mes
        "fax:tel"    => array("service"=>"fax:tel",
788 1 Tijmen de Mes
                              "webname"=>"Fax",
789 1 Tijmen de Mes
                              "schemas"=>array("tel:")),
790 1 Tijmen de Mes
        "ifax:mailto"   => array("service"=>"ifax:mailto",
791 1 Tijmen de Mes
                              "webname"=>"iFax",
792 1 Tijmen de Mes
                              "schemas"=>array("mailto:")),
793 1 Tijmen de Mes
        "pres"   => array("service"=>"pres",
794 1 Tijmen de Mes
                              "webname"=>"Presence",
795 1 Tijmen de Mes
                              "schemas"=>array("pres:")),
796 1 Tijmen de Mes
        "ft:ftp"    => array("service"=>"ft:ftp",
797 1 Tijmen de Mes
                              "webname"=>"FTP",
798 1 Tijmen de Mes
                              "schemas"=>array("ftp://")),
799 1 Tijmen de Mes
        "loc:http"  => array("service"=>"loc:http",
800 1 Tijmen de Mes
                              "webname"=>"GeoLocation",
801 1 Tijmen de Mes
                              "schemas"=>array("http://")),
802 1 Tijmen de Mes
        "key:http"  => array("service"=>"key:http",
803 1 Tijmen de Mes
                              "webname"=>"Public key",
804 1 Tijmen de Mes
                              "schemas"=>array("http://")),
805 1 Tijmen de Mes
        "key:https"  => array("service"=>"key:https",
806 1 Tijmen de Mes
                              "webname"=>"Public key (HTTPS)",
807 1 Tijmen de Mes
                              "schemas"=>array("https://"))
808 16 Tijmen de Mes
        );
809 16 Tijmen de Mes
</pre>
810 1 Tijmen de Mes
811 1 Tijmen de Mes
h3. Graphical client
812 1 Tijmen de Mes
813 1 Tijmen de Mes
@CDRTool->Accounts->ENUM numbers@
814 1 Tijmen de Mes
815 26 Tijmen de Mes
!ngnpro-enum-numbers.png!
816 1 Tijmen de Mes
817 1 Tijmen de Mes
Click on each number to modify its properties.
818 1 Tijmen de Mes
819 26 Tijmen de Mes
!ngnpro-enum-number.png!
820 1 Tijmen de Mes
821 1 Tijmen de Mes
h2. Voicemail Accounts
822 1 Tijmen de Mes
823 1 Tijmen de Mes
The provisioning is performed using the SOAP/XML functions present in the Voicemail port described in NGNPro WSDL.
824 1 Tijmen de Mes
825 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.
826 1 Tijmen de Mes
827 1 Tijmen de Mes
By default mailboxes are created starting with number 1000000.
828 1 Tijmen de Mes
829 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.
830 1 Tijmen de Mes
831 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.
832 1 Tijmen de Mes
833 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:
834 1 Tijmen de Mes
835 20 Tijmen de Mes
<pre>
836 17 Tijmen de Mes
  /etc/opensips/config/settings.m4
837 20 Tijmen de Mes
</pre>
838 1 Tijmen de Mes
839 20 Tijmen de Mes
<pre>
840 17 Tijmen de Mes
  # Number to dial to get to voicemail
841 1 Tijmen de Mes
  define(`VOICEMAIL_NUMBER', `*70')
842 20 Tijmen de Mes
</pre>
843 1 Tijmen de Mes
844 1 Tijmen de Mes
845 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;).
846 1 Tijmen de Mes
847 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.
848 1 Tijmen de Mes
849 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.
850 1 Tijmen de Mes
851 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:
852 1 Tijmen de Mes
853 17 Tijmen de Mes
<pre>
854 1 Tijmen de Mes
;emailbody=
855 1 Tijmen de Mes
;emailsubject=
856 1 Tijmen de Mes
857 1 Tijmen de Mes
; Change the from, body and/or subject, variables:
858 1 Tijmen de Mes
;     VM_NAME, VM_DUR, VM_MSGNUM, VM_MAILBOX, VM_CALLERID, VM_CIDNUM,
859 1 Tijmen de Mes
;     VM_CIDNAME, VM_DATE
860 1 Tijmen de Mes
861 1 Tijmen de Mes
and
862 1 Tijmen de Mes
863 1 Tijmen de Mes
;serveremail = notification@some_domain.tld
864 1 Tijmen de Mes
</pre>
865 1 Tijmen de Mes
866 1 Tijmen de Mes
An asterisk reload or restart is required:
867 1 Tijmen de Mes
868 17 Tijmen de Mes
  sudo asterisk -r reload
869 1 Tijmen de Mes
870 1 Tijmen de Mes
871 1 Tijmen de Mes
h3. SOAP/XML functions
872 1 Tijmen de Mes
873 1 Tijmen de Mes
* VoicemailPort-&gt;addAccount()
874 1 Tijmen de Mes
* VoicemailPort-&gt;updateAccount()
875 1 Tijmen de Mes
* VoicemailPort-&gt;deleteAccount()
876 1 Tijmen de Mes
* VoicemailPort-&gt;getAccount()
877 1 Tijmen de Mes
* VoicemailPort-&gt;setAnnouncement()
878 1 Tijmen de Mes
879 1 Tijmen de Mes
h2. PSTN Routes
880 1 Tijmen de Mes
881 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.
882 1 Tijmen de Mes
883 1 Tijmen de Mes
h3. SOAP/XML functions
884 1 Tijmen de Mes
885 1 Tijmen de Mes
* SipPort-&gt;addRoutes()
886 1 Tijmen de Mes
* SipPort-&gt;deleteRoutes()
887 1 Tijmen de Mes
* SipPort-&gt;getRoutes()
888 1 Tijmen de Mes
889 1 Tijmen de Mes
h3. Graphical client
890 1 Tijmen de Mes
891 1 Tijmen de Mes
@CDRTool->Accounts->PSTN routes@
892 1 Tijmen de Mes
893 26 Tijmen de Mes
!ngnpro-pstn-routes.png!
894 1 Tijmen de Mes
895 1 Tijmen de Mes
h2. PSTN Carriers
896 1 Tijmen de Mes
897 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.
898 1 Tijmen de Mes
899 1 Tijmen de Mes
h3. SOAP/XML functions
900 1 Tijmen de Mes
901 1 Tijmen de Mes
* SipPort-&gt;addCarrier()
902 1 Tijmen de Mes
* SipPort-&gt;deleteCarrier()
903 1 Tijmen de Mes
* SipPort-&gt;getCarriers()
904 1 Tijmen de Mes
905 1 Tijmen de Mes
h3. Graphical client
906 1 Tijmen de Mes
907 1 Tijmen de Mes
@CDRTool->Accounts->PSTN carriers@
908 1 Tijmen de Mes
909 26 Tijmen de Mes
!ngnpro-pstn-carriers.png!
910 1 Tijmen de Mes
911 1 Tijmen de Mes
h2. PSTN Gateways
912 1 Tijmen de Mes
913 1 Tijmen de Mes
You must define at least one gateway for PSTN routing. Before creating any gateway you must create a carrier.
914 1 Tijmen de Mes
915 1 Tijmen de Mes
h3. SOAP/XML functions
916 1 Tijmen de Mes
917 1 Tijmen de Mes
* SipPort-&gt;addGateway()
918 1 Tijmen de Mes
* SipPort-&gt;updateGateway()
919 1 Tijmen de Mes
* SipPort-&gt;deleteGateway()
920 1 Tijmen de Mes
* SipPort-&gt;getGateways()
921 1 Tijmen de Mes
922 1 Tijmen de Mes
h3. Graphical client
923 1 Tijmen de Mes
924 1 Tijmen de Mes
@CDRTool->Accounts->PSTN gateways@
925 1 Tijmen de Mes
926 26 Tijmen de Mes
!ngnpro-pstn-gateways.png!
927 1 Tijmen de Mes
928 1 Tijmen de Mes
h2. PSTN Rules
929 1 Tijmen de Mes
930 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.
931 1 Tijmen de Mes
932 1 Tijmen de Mes
h3. SOAP/XML functions
933 1 Tijmen de Mes
934 1 Tijmen de Mes
* SipPort-&gt;addGatewayRule()
935 1 Tijmen de Mes
* SipPort-&gt;updateGatewayRule()
936 1 Tijmen de Mes
* SipPort-&gt;deleteGatewayRule()
937 1 Tijmen de Mes
* SipPort-&gt;getGatewayRules()
938 1 Tijmen de Mes
939 1 Tijmen de Mes
h3. Graphical client
940 1 Tijmen de Mes
941 1 Tijmen de Mes
@CDRTool->Accounts->PSTN rules@
942 1 Tijmen de Mes
943 26 Tijmen de Mes
!ngnpro-pstn-rules.png!
944 1 Tijmen de Mes
945 1 Tijmen de Mes
Click on rule to edit its properties.
946 1 Tijmen de Mes
947 26 Tijmen de Mes
!ngnpro-pstn-rule.png!
948 3 Tijmen de Mes
949 1 Tijmen de Mes
h2. Emergency Numbers
950 1 Tijmen de Mes
951 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.
952 1 Tijmen de Mes
953 1 Tijmen de Mes
954 26 Tijmen de Mes
# Define the emergency numbers in the /etc/opensips/config/settings.m4
955 26 Tijmen de Mes
956 21 Tijmen de Mes
<pre>
957 18 Tijmen de Mes
  # Emergency numbers
958 18 Tijmen de Mes
  define(`EMERGENCY_NR1', `112')
959 18 Tijmen de Mes
  define(`EMERGENCY_NR2', `911')
960 1 Tijmen de Mes
  define(`EMERGENCY_NRS', `2')
961 1 Tijmen de Mes
</pre>
962 23 Tijmen de Mes
963 26 Tijmen de Mes
# Add the local access number for each region to emergency&#95;mapping table, the table has the following structure:
964 1 Tijmen de Mes
|*Field*|*Type*|
965 1 Tijmen de Mes
|id|int(10) unsigned|
966 1 Tijmen de Mes
|username|varchar(64)|
967 1 Tijmen de Mes
|domain|varchar(64)|
968 1 Tijmen de Mes
|region|varchar(32)|
969 1 Tijmen de Mes
|target|varchar(128)|
970 1 Tijmen de Mes
|change&#95;date|timestamp|
971 1 Tijmen de Mes
Example:
972 21 Tijmen de Mes
<pre>
973 21 Tijmen de Mes
+----------+-------------+-----------+-------------------------------+---------------------+
974 1 Tijmen de Mes
| username | domain      | region    | target                        | change_date         |      
975 1 Tijmen de Mes
+----------+-------------+-----------+-------------------------------+---------------------+
976 1 Tijmen de Mes
| 112      | example.com | 010       | sip:0031141217112@example.com | 2006-05-09 14:33:18 | 
977 1 Tijmen de Mes
| 112      | example.com | 0111      | sip:0031141219112@example.com | 2006-05-09 14:33:18 | 
978 1 Tijmen de Mes
| 112      | example.com | 0113      | sip:0031141219112@example.com | 2006-05-09 14:33:18 | 
979 1 Tijmen de Mes
| 112      | example.com | 0114      | sip:0031141219112@example.com | 2006-05-09 14:33:18 | 
980 1 Tijmen de Mes
| 112      | example.com | 0115      | sip:0031141219112@example.com | 2006-05-09 14:33:18 | 
981 1 Tijmen de Mes
+----------+-------------+-----------+-------------------------------+---------------------+
982 21 Tijmen de Mes
</pre>
983 1 Tijmen de Mes
984 32 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>
985 1 Tijmen de Mes
986 1 Tijmen de Mes
h2. Email Notifications
987 1 Tijmen de Mes
988 1 Tijmen de Mes
h3. Quota exceeded
989 1 Tijmen de Mes
990 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:
991 1 Tijmen de Mes
992 24 Tijmen de Mes
  /var/www/CDRTool/scripts/OpenSIPS/quotaCheck.php
993 1 Tijmen de Mes
994 1 Tijmen de Mes
995 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:
996 1 Tijmen de Mes
997 24 Tijmen de Mes
  /var/www/CDRTool/setup/mysql/custom_notifications.mysql 
998 1 Tijmen de Mes
999 1 Tijmen de Mes
1000 1 Tijmen de Mes
h3. Voicemail
1001 1 Tijmen de Mes
1002 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:
1003 1 Tijmen de Mes
1004 24 Tijmen de Mes
  /etc/asterisk/voicemail.conf
1005 1 Tijmen de Mes
1006 1 Tijmen de Mes
1007 1 Tijmen de Mes
This notification cannot be enabled/disabled per user, it is a global platform setting.
1008 1 Tijmen de Mes
1009 1 Tijmen de Mes
h3. Last sessions
1010 1 Tijmen de Mes
1011 1 Tijmen de Mes
An email with last received sessions in the previous 24 hours is sent out by a CDRTool cronjob script:
1012 1 Tijmen de Mes
1013 24 Tijmen de Mes
  /var/www/CDRTool/scripts/OpenSIPS/notifyLastSessions.php
1014 1 Tijmen de Mes
1015 1 Tijmen de Mes
1016 1 Tijmen de Mes
The From header of the email notification can be modified by changing the following setting from /etc/cdrtool/global.inc:
1017 1 Tijmen de Mes
1018 24 Tijmen de Mes
  $CDRTool['provider']['fromEmail'] ="support@ag-projects.com";
1019 1 Tijmen de Mes
1020 1 Tijmen de Mes
1021 1 Tijmen de Mes
The notification is sent only if the SIP account belongs to the *missed-calls* group.