Provisioning guide

Version 43 (Tijmen de Mes, 12/18/2015 09: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 36 Tijmen de Mes
bq. The examples and screenshots presented in this document have been taken using AG Projects 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 37 Tijmen de Mes
h2. Encrypted passwords
37 37 Tijmen de Mes
38 38 Tijmen de Mes
The platform can be configured for using encrypted or non encrypted passwords for sip accounts. The web passwords are separate and are currently stored as 'plain' text in the database. The web password allows you to login with a sip account to the settings for that sip account.
39 37 Tijmen de Mes
40 38 Tijmen de Mes
If the platform is using encrypted passwords you will be not able to retrieve the password as 'plain' text. This results in that passwords will not be shown in the email you get when sending account info to to configured email address. Only the web password will show, which allows you to login and change the sip account password.
41 37 Tijmen de Mes
42 40 Tijmen de Mes
The time you'll know the password before it is encrypted, is when provisioning the accounts (add). At this point in time you should send the email/letter to the customers telling them the info they need. From CDRTool they will get an email without password if the send email to email is used from the Identity tab.
43 40 Tijmen de Mes
44 40 Tijmen de Mes
Another consequence is that the web interface will never show the password. It can only be changed.
45 39 Tijmen de Mes
46 1 Tijmen de Mes
h2. NGNPro Clients
47 1 Tijmen de Mes
48 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.
49 1 Tijmen de Mes
50 1 Tijmen de Mes
h3. Python Client
51 1 Tijmen de Mes
52 34 Tijmen de Mes
To help the development of a custom client an attachment:wsdl.tar.gz
53 1 Tijmen de Mes
54 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:
55 1 Tijmen de Mes
56 35 Tijmen de Mes
  dict(username='myusername', password='mypassword')
57 1 Tijmen de Mes
58 1 Tijmen de Mes
59 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.
60 1 Tijmen de Mes
61 1 Tijmen de Mes
Inside the archive you'll also find a short example of how to use it in ngnpro_test.py
62 1 Tijmen de Mes
63 1 Tijmen de Mes
h3. PHP Client
64 1 Tijmen de Mes
65 1 Tijmen de Mes
To use this example code you must install SOAP library for PEAR project.
66 1 Tijmen de Mes
67 1 Tijmen de Mes
Generate the library with:
68 1 Tijmen de Mes
69 4 Tijmen de Mes
<pre><code class="php">
70 4 Tijmen de Mes
#!/usr/bin/php
71 1 Tijmen de Mes
<?
72 1 Tijmen de Mes
require_once('SOAP/WSDL.php');
73 1 Tijmen de Mes
$wsdl       = new SOAP_WSDL('https://mdns.sipthor.net/ngnpro/wsdl');
74 1 Tijmen de Mes
print "<?\n";
75 1 Tijmen de Mes
print $wsdl->generateAllProxies();
76 1 Tijmen de Mes
print "?>\n";
77 6 Tijmen de Mes
?></code>
78 4 Tijmen de Mes
</pre>
79 1 Tijmen de Mes
80 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
81 1 Tijmen de Mes
82 5 Tijmen de Mes
The script attachment:sip_add_account.php
83 1 Tijmen de Mes
84 1 Tijmen de Mes
h3. Server Location
85 1 Tijmen de Mes
86 1 Tijmen de Mes
NGNPro is reachable on the following URLs, which were configured during the setup phase of the platform:
87 1 Tijmen de Mes
88 1 Tijmen de Mes
89 1 Tijmen de Mes
|Platform|Protocol|Port|Location|SOAP ports|
90 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|
91 1 Tijmen de Mes
|Collocated Multimedia Service Platform|TLS|443|"https://cdr.example.com/ngnpro/voicemail":https://cdr.example.com/ngnpro/voicemail|Voicemail port|
92 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|
93 1 Tijmen de Mes
|Collocated Multimedia Service Platform|TCP|9200|"http://vm.example.com:9200":http://vm.example.com:9200|Voicemail port|
94 1 Tijmen de Mes
|Collocated SIP Thor Platform|TLS|9200|"https://ngnpro.example.com:9200":https://ngnpro.example.com:9200|All ports|
95 1 Tijmen de Mes
96 1 Tijmen de Mes
97 1 Tijmen de Mes
h3. Test Server
98 1 Tijmen de Mes
99 1 Tijmen de Mes
You can test your provisioning client against the live platform hosted by AG Projects.
100 1 Tijmen de Mes
101 1 Tijmen de Mes
102 1 Tijmen de Mes
|Platform|Protocol|Port|Location|SOAP ports|
103 1 Tijmen de Mes
|Hosted AG Projects platform|TLS|443|"https://mdns.sipthor.net/ngnpro":https://mdns.sipthor.net/ngnpro|All ports|
104 1 Tijmen de Mes
105 1 Tijmen de Mes
106 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.
107 1 Tijmen de Mes
108 1 Tijmen de Mes
h3. SOAP/XML Authentication
109 1 Tijmen de Mes
110 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:
111 1 Tijmen de Mes
112 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.
113 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.
114 1 Tijmen de Mes
115 1 Tijmen de Mes
For more information about the *Customer* concept read below.
116 1 Tijmen de Mes
117 1 Tijmen de Mes
h2. Customer
118 1 Tijmen de Mes
119 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.
120 1 Tijmen de Mes
121 1 Tijmen de Mes
Each customer is assigned, during creation by the server, a unique id and a reseller id.
122 1 Tijmen de Mes
123 1 Tijmen de Mes
h3. Record Assignment
124 1 Tijmen de Mes
125 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.
126 1 Tijmen de Mes
127 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).
128 1 Tijmen de Mes
129 1 Tijmen de Mes
Before deleting a customer, make sure that no records belong to his id.
130 1 Tijmen de Mes
131 1 Tijmen de Mes
h2. Reseller
132 1 Tijmen de Mes
133 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.
134 1 Tijmen de Mes
135 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.
136 1 Tijmen de Mes
137 1 Tijmen de Mes
h3. Conventions for resellers
138 1 Tijmen de Mes
139 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.
140 1 Tijmen de Mes
141 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
142 1 Tijmen de Mes
143 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.
144 1 Tijmen de Mes
145 1 Tijmen de Mes
The following properties controls if the reseller or customer has access to enable access to PSTN for the SIP accounts:
146 1 Tijmen de Mes
147 1 Tijmen de Mes
* pstn&#95;access (can create SIP accounts with PSTN prepaid access)
148 1 Tijmen de Mes
* prepaid&#95;changes (can toggle a SIP account from prepaid to postpaid and vice versa)
149 1 Tijmen de Mes
150 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*.
151 1 Tijmen de Mes
152 1 Tijmen de Mes
h3. Conventions for the properties
153 1 Tijmen de Mes
154 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:
155 1 Tijmen de Mes
156 1 Tijmen de Mes
* Properties having permission set to admin can be modified only by the administrator
157 1 Tijmen de Mes
* Properties having permission set to reseller can be modified by the administrator and their reseller
158 1 Tijmen de Mes
* Properties having other permission can be modified by their customer, their reseller or by the administrator
159 1 Tijmen de Mes
160 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.
161 1 Tijmen de Mes
162 1 Tijmen de Mes
h2. Owner
163 1 Tijmen de Mes
164 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.
165 1 Tijmen de Mes
166 1 Tijmen de Mes
h3. SOAP/XML functions
167 1 Tijmen de Mes
168 1 Tijmen de Mes
* CustomerPort-&gt;addAccount()
169 1 Tijmen de Mes
* CustomerPort-&gt;updateAccount()
170 1 Tijmen de Mes
* CustomerPort-&gt;deleteAccount()
171 1 Tijmen de Mes
* CustomerPort-&gt;getAccount()
172 1 Tijmen de Mes
* CustomerPort-&gt;getCustomers()
173 1 Tijmen de Mes
* CustomerPort-&gt;getResellers()
174 1 Tijmen de Mes
* CustomerPort-&gt;setProperties()
175 1 Tijmen de Mes
* CustomerPort-&gt;getProperties()
176 1 Tijmen de Mes
177 1 Tijmen de Mes
Customer attributes:
178 8 Tijmen de Mes
<pre>
179 7 Tijmen de Mes
  <complexType name="CustomerAccount">
180 7 Tijmen de Mes
181 7 Tijmen de Mes
  <sequence>
182 7 Tijmen de Mes
  <element name="id" nillable="true" type="xsd:integer"/>
183 7 Tijmen de Mes
  <element name="reseller" nillable="true" type="xsd:integer"/>
184 7 Tijmen de Mes
  <element name="impersonate" nillable="true" type="xsd:integer"/>
185 7 Tijmen de Mes
  <element name="username" nillable="true" type="xsd:string"/>
186 7 Tijmen de Mes
  <element name="password" nillable="true" type="xsd:string"/>
187 7 Tijmen de Mes
  <element name="firstName" nillable="true" type="xsd:string"/>
188 7 Tijmen de Mes
  <element name="lastName" nillable="true" type="xsd:string"/>
189 7 Tijmen de Mes
  <element name="organization" nillable="true" type="xsd:string"/>
190 7 Tijmen de Mes
  <element name="vatNumber" nillable="true" type="xsd:string"/>
191 7 Tijmen de Mes
  <element name="email" nillable="true" type="xsd:string"/>
192 7 Tijmen de Mes
  <element name="web" nillable="true" type="xsd:string"/>
193 7 Tijmen de Mes
  <element name="tel" nillable="true" type="xsd:string"/>
194 7 Tijmen de Mes
  <element name="fax" nillable="true" type="xsd:string"/>
195 7 Tijmen de Mes
  <element name="mobile" nillable="true" type="xsd:string"/>
196 7 Tijmen de Mes
  <element name="sip" nillable="true" type="xsd:string"/>
197 7 Tijmen de Mes
  <element name="enum" nillable="true" type="xsd:string"/>
198 7 Tijmen de Mes
  <element name="address" nillable="true" type="xsd:string"/>
199 7 Tijmen de Mes
  <element name="postcode" nillable="true" type="xsd:string"/>
200 7 Tijmen de Mes
  <element name="city" nillable="true" type="xsd:string"/>
201 7 Tijmen de Mes
  <element name="state" nillable="true" type="xsd:string"/>
202 7 Tijmen de Mes
  <element name="country" nillable="true" type="xsd:string"/>
203 7 Tijmen de Mes
  <element name="timezone" nillable="true" type="xsd:string"/>
204 7 Tijmen de Mes
  <element name="language" nillable="true" type="xsd:string"/>
205 7 Tijmen de Mes
  <element name="bankAccount" nillable="true" type="xsd:string"/>
206 7 Tijmen de Mes
  <element name="billingAddress" nillable="true" type="xsd:string"/>
207 7 Tijmen de Mes
  <element name="billingEmail" nillable="true" type="xsd:string"/>
208 7 Tijmen de Mes
  <element name="balance" nillable="true" type="xsd:double"/>
209 7 Tijmen de Mes
  <element name="credit" nillable="true" type="xsd:double"/>
210 7 Tijmen de Mes
  <element name="companyCode" nillable="true" type="xsd:string"/>
211 7 Tijmen de Mes
  <element name="resellerActive" nillable="true" type="xsd:boolean"/>
212 7 Tijmen de Mes
  <element name="changeDate" nillable="true" type="xsd:string"/>
213 7 Tijmen de Mes
  <element name="properties" nillable="true" type="ngnpro:CustomerPropertyArray"/>
214 7 Tijmen de Mes
  </sequence>
215 1 Tijmen de Mes
  </complexType>
216 8 Tijmen de Mes
</pre>
217 1 Tijmen de Mes
218 1 Tijmen de Mes
h3. Graphical client
219 1 Tijmen de Mes
220 1 Tijmen de Mes
@CDRTool->Accounts->Customers@
221 1 Tijmen de Mes
222 25 Tijmen de Mes
!ngnpro-customers.png!
223 1 Tijmen de Mes
224 1 Tijmen de Mes
Click on the customer id to edit its properties.
225 1 Tijmen de Mes
226 1 Tijmen de Mes
h2. DNS Zones
227 1 Tijmen de Mes
228 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.
229 1 Tijmen de Mes
230 1 Tijmen de Mes
To enable the use of an Internet domain for SIP you must provision in the DNS zone the following records:
231 1 Tijmen de Mes
232 9 Tijmen de Mes
  example.com.  300 IN  NAPTR   20 0 "s" "SIP+D2U" "" _sip._udp.example.com.
233 9 Tijmen de Mes
  _sip._udp.example.com. 300  IN  SRV 0 0 5060 sip.example.com.
234 1 Tijmen de Mes
235 1 Tijmen de Mes
236 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.
237 1 Tijmen de Mes
238 1 Tijmen de Mes
h3. SOAP/XML functions
239 1 Tijmen de Mes
240 1 Tijmen de Mes
* DnsPort-&gt;addZone()
241 1 Tijmen de Mes
* DnsPort-&gt;updateZone()
242 1 Tijmen de Mes
* DnsPort-&gt;deleteZone()
243 1 Tijmen de Mes
* DnsPort-&gt;getZone()
244 1 Tijmen de Mes
* DnsPort-&gt;getZones()
245 1 Tijmen de Mes
* DnsPort-&gt;addRecord()
246 1 Tijmen de Mes
* DnsPort-&gt;addFancyRecord()
247 1 Tijmen de Mes
* DnsPort-&gt;updateRecord()
248 1 Tijmen de Mes
* DnsPort-&gt;updateFancyRecord()
249 1 Tijmen de Mes
* DnsPort-&gt;deleteRecord()
250 1 Tijmen de Mes
* DnsPort-&gt;deleteFancyRecord()
251 1 Tijmen de Mes
* DnsPort-&gt;getRecord()
252 1 Tijmen de Mes
* DnsPort-&gt;getFancyRecord()
253 1 Tijmen de Mes
* DnsPort-&gt;getRecords()
254 1 Tijmen de Mes
* DnsPort-&gt;getFancyRecords()
255 1 Tijmen de Mes
256 1 Tijmen de Mes
DNZ zone attributes:
257 1 Tijmen de Mes
258 10 Tijmen de Mes
<pre>
259 10 Tijmen de Mes
<complexType name="DnsZone">
260 1 Tijmen de Mes
261 1 Tijmen de Mes
<sequence>
262 1 Tijmen de Mes
<element name="name" nillable="false" type="xsd:string"/>
263 1 Tijmen de Mes
<element name="ttl" nillable="true" type="xsd:nonNegativeInteger"/>
264 1 Tijmen de Mes
<element name="nameservers" nillable="true" type="ngnpro:StringArray"/>
265 1 Tijmen de Mes
<element name="email" nillable="true" type="xsd:string"/>
266 1 Tijmen de Mes
<element name="serial" nillable="true" type="xsd:int"/>
267 1 Tijmen de Mes
<element name="refresh" nillable="true" type="xsd:int"/>
268 1 Tijmen de Mes
<element name="retry" nillable="true" type="xsd:int"/>
269 1 Tijmen de Mes
<element name="expire" nillable="true" type="xsd:int"/>
270 1 Tijmen de Mes
<element name="minimum" nillable="true" type="xsd:int"/>
271 1 Tijmen de Mes
<element name="customer" nillable="true" type="xsd:integer"/>
272 1 Tijmen de Mes
<element name="reseller" nillable="true" type="xsd:integer"/>
273 1 Tijmen de Mes
<element name="changeDate" nillable="true" type="xsd:string"/>
274 1 Tijmen de Mes
<element name="info" nillable="true" type="xsd:string"/>
275 1 Tijmen de Mes
</sequence>
276 1 Tijmen de Mes
</complexType>
277 10 Tijmen de Mes
</pre>
278 1 Tijmen de Mes
279 1 Tijmen de Mes
When using AG Projects hosted platform you must select and use for DNS delegation the following name servers:
280 1 Tijmen de Mes
281 1 Tijmen de Mes
# ns1.dns-hosting.info
282 1 Tijmen de Mes
# ns2.dns-hosting.info
283 1 Tijmen de Mes
284 1 Tijmen de Mes
h3. Graphical client
285 1 Tijmen de Mes
286 1 Tijmen de Mes
@CDRTool->Accounts->DNS zones@
287 1 Tijmen de Mes
288 27 Tijmen de Mes
!ngnpro-dns-zones.png!
289 1 Tijmen de Mes
290 1 Tijmen de Mes
Click on each zone to edit its properties.
291 1 Tijmen de Mes
292 27 Tijmen de Mes
!ngnpro-dns-zone.png!
293 1 Tijmen de Mes
294 1 Tijmen de Mes
h2. DNS Records
295 1 Tijmen de Mes
296 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:
297 1 Tijmen de Mes
298 1 Tijmen de Mes
Example for:
299 1 Tijmen de Mes
300 1 Tijmen de Mes
* SIP domain: sipdomain.com
301 1 Tijmen de Mes
* SIP Proxy hostname configured for the platform: sip.example.com
302 1 Tijmen de Mes
303 33 Tijmen de Mes
<pre>
304 1 Tijmen de Mes
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
305 1 Tijmen de Mes
; DNS records specified by RFC 3263 (Locating SIP services) ;
306 1 Tijmen de Mes
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
307 1 Tijmen de Mes
308 1 Tijmen de Mes
; SIP communications using UDP transport
309 33 Tijmen de Mes
sipdomain.com.             IN NAPTR  10 0 "S" "SIP+d2u" "" _sip._udp.sipdomain.com.
310 1 Tijmen de Mes
_sip._udp.sipdomain.com.   IN SRV    0  0 5060 sip.example.com.
311 33 Tijmen de Mes
312 1 Tijmen de Mes
</pre>
313 1 Tijmen de Mes
314 1 Tijmen de Mes
h3. SOAP/XML functions
315 1 Tijmen de Mes
316 1 Tijmen de Mes
* DnsPort-&gt;addRecord()
317 1 Tijmen de Mes
* DnsPort-&gt;updateRecord()
318 1 Tijmen de Mes
* DnsPort-&gt;deleteRecord()
319 1 Tijmen de Mes
* DnsPort-&gt;getRecord()
320 1 Tijmen de Mes
* DnsPort-&gt;getRecords()
321 1 Tijmen de Mes
322 1 Tijmen de Mes
DNS record attributes:
323 1 Tijmen de Mes
324 27 Tijmen de Mes
<pre>
325 11 Tijmen de Mes
<complexType name="DnsRecord">
326 1 Tijmen de Mes
327 1 Tijmen de Mes
<sequence>
328 1 Tijmen de Mes
<element name="id" nillable="true" type="xsd:integer"/>
329 1 Tijmen de Mes
<element name="zone" nillable="true" type="xsd:string"/>
330 1 Tijmen de Mes
<element name="name" nillable="true" type="xsd:string"/>
331 1 Tijmen de Mes
<element name="type" nillable="true" type="ngnpro:DnsRecordType"/>
332 1 Tijmen de Mes
<element name="ttl" nillable="true" type="xsd:unsignedInt"/>
333 1 Tijmen de Mes
<element name="value" nillable="true" type="xsd:string"/>
334 1 Tijmen de Mes
<element name="priority" nillable="true" type="xsd:unsignedShort"/>
335 1 Tijmen de Mes
<element name="owner" nillable="true" type="xsd:integer"/>
336 1 Tijmen de Mes
<element name="customer" nillable="true" type="xsd:integer"/>
337 1 Tijmen de Mes
<element name="reseller" nillable="true" type="xsd:integer"/>
338 1 Tijmen de Mes
<element name="changeDate" nillable="true" type="xsd:string"/>
339 1 Tijmen de Mes
</sequence>
340 1 Tijmen de Mes
</complexType>
341 11 Tijmen de Mes
</pre>
342 1 Tijmen de Mes
343 1 Tijmen de Mes
DNS record types:
344 1 Tijmen de Mes
345 11 Tijmen de Mes
<pre>
346 11 Tijmen de Mes
<simpleType name="DnsRecordType">
347 1 Tijmen de Mes
348 1 Tijmen de Mes
<xsd:restriction base="xsd:string">
349 1 Tijmen de Mes
<xsd:enumeration value="A"/>
350 1 Tijmen de Mes
<xsd:enumeration value="AAAA"/>
351 1 Tijmen de Mes
<xsd:enumeration value="CNAME"/>
352 1 Tijmen de Mes
<xsd:enumeration value="MX"/>
353 1 Tijmen de Mes
<xsd:enumeration value="NAPTR"/>
354 1 Tijmen de Mes
<xsd:enumeration value="NS"/>
355 1 Tijmen de Mes
<xsd:enumeration value="SRV"/>
356 1 Tijmen de Mes
<xsd:enumeration value="TXT"/>
357 1 Tijmen de Mes
<xsd:enumeration value="PTR"/>
358 1 Tijmen de Mes
<xsd:enumeration value="LOC"/>
359 1 Tijmen de Mes
</xsd:restriction>
360 1 Tijmen de Mes
</simpleType>
361 11 Tijmen de Mes
</pre>
362 1 Tijmen de Mes
363 1 Tijmen de Mes
h3. Graphical client
364 1 Tijmen de Mes
365 1 Tijmen de Mes
@CDRTool->Accounts->DNS records@
366 1 Tijmen de Mes
367 27 Tijmen de Mes
!ngnpro-dns-records.png!
368 1 Tijmen de Mes
369 1 Tijmen de Mes
Click on each record to edit its attributes.
370 1 Tijmen de Mes
371 27 Tijmen de Mes
!ngnpro-dns-record.png!
372 1 Tijmen de Mes
373 1 Tijmen de Mes
h2. SIP Domains
374 1 Tijmen de Mes
375 1 Tijmen de Mes
Before creating SIP accounts you need to create at least one SIP domain. (e.g. example.com)
376 1 Tijmen de Mes
377 1 Tijmen de Mes
h3. SOAP/XML functions
378 1 Tijmen de Mes
379 1 Tijmen de Mes
* SipPort-&gt;addDomain()
380 1 Tijmen de Mes
* SipPort-&gt;updateDomain()
381 1 Tijmen de Mes
* SipPort-&gt;deleteDomain()
382 1 Tijmen de Mes
* SipPort-&gt;getDomains()
383 1 Tijmen de Mes
384 1 Tijmen de Mes
h3. Graphical client
385 1 Tijmen de Mes
386 1 Tijmen de Mes
@CDRTool->Accounts->SIP domains@
387 1 Tijmen de Mes
388 27 Tijmen de Mes
!ngnpro-sip-domains.png!
389 1 Tijmen de Mes
390 1 Tijmen de Mes
h2. SIP Accounts
391 1 Tijmen de Mes
392 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.
393 1 Tijmen de Mes
394 1 Tijmen de Mes
You must add at least one SIP domain before adding a SIP account.
395 1 Tijmen de Mes
396 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.
397 1 Tijmen de Mes
398 1 Tijmen de Mes
To enable different rights for SIP accounts, they must be part of specific groups.
399 1 Tijmen de Mes
400 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.
401 1 Tijmen de Mes
402 1 Tijmen de Mes
To enable PSTN calls to a SIP account, that account must be in the 'free-pstn' group.
403 1 Tijmen de Mes
404 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.
405 1 Tijmen de Mes
406 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.
407 1 Tijmen de Mes
408 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.
409 1 Tijmen de Mes
410 1 Tijmen de Mes
To mark a SIP account as prepaid, the 'prepaid' attribute of the SipAccount structure must be set to True.
411 1 Tijmen de Mes
412 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.
413 1 Tijmen de Mes
414 1 Tijmen de Mes
Diversion rules routing order:
415 1 Tijmen de Mes
416 1 Tijmen de Mes
# Unavailable,
417 1 Tijmen de Mes
# Unconditional
418 1 Tijmen de Mes
# Not-online
419 1 Tijmen de Mes
# Busy
420 1 Tijmen de Mes
# No-answer
421 1 Tijmen de Mes
422 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).
423 1 Tijmen de Mes
424 1 Tijmen de Mes
The last 2 rules are not handled together with the other 3, they are only handled if the call fails.
425 1 Tijmen de Mes
426 1 Tijmen de Mes
h3. SOAP/XML functions
427 1 Tijmen de Mes
428 1 Tijmen de Mes
* SipPort-&gt;addAccount()
429 1 Tijmen de Mes
* SipPort-&gt;updateAccount()
430 1 Tijmen de Mes
* SipPort-&gt;deleteAccount()
431 1 Tijmen de Mes
* SipPort-&gt;getAccount()
432 1 Tijmen de Mes
* SipPort-&gt;getAccounts()
433 1 Tijmen de Mes
* SipPort-&gt;addToGroup()
434 1 Tijmen de Mes
* SipPort-&gt;removeFromGroup()
435 1 Tijmen de Mes
* SipPort-&gt;getGroups()
436 1 Tijmen de Mes
* SipPort-&gt;addPhonebookEntry()
437 1 Tijmen de Mes
* SipPort-&gt;updatePhonebookEntry()
438 1 Tijmen de Mes
* SipPort-&gt;deletePhonebookEntry()
439 1 Tijmen de Mes
* SipPort-&gt;getPhonebookEntries()
440 1 Tijmen de Mes
* SipPort-&gt;setRejectMembers()
441 1 Tijmen de Mes
* SipPort-&gt;getRejectMembers()
442 1 Tijmen de Mes
* SipPort-&gt;setAcceptRules()
443 1 Tijmen de Mes
* SipPort-&gt;getAcceptRules()
444 1 Tijmen de Mes
* SipPort-&gt;setBarringPrefixes()
445 1 Tijmen de Mes
* SipPort-&gt;getBarringPrefixes()
446 1 Tijmen de Mes
* SipPort-&gt;setCallDiversions()
447 1 Tijmen de Mes
* SipPort-&gt;getCallDiversions()
448 1 Tijmen de Mes
* SipPort-&gt;getCalls()
449 1 Tijmen de Mes
* SipPort-&gt;getCallStatistics()
450 1 Tijmen de Mes
* SipPort-&gt;getSipDeviceLocations()
451 1 Tijmen de Mes
452 1 Tijmen de Mes
SIP account attributes:
453 1 Tijmen de Mes
454 12 Tijmen de Mes
<pre>
455 12 Tijmen de Mes
<complexType name="SipAccount">
456 1 Tijmen de Mes
457 1 Tijmen de Mes
<sequence>
458 1 Tijmen de Mes
<element name="id" nillable="false" type="ngnpro:SipId"/>
459 1 Tijmen de Mes
<element name="password" nillable="true" type="xsd:string"/>
460 1 Tijmen de Mes
<element name="firstName" nillable="true" type="xsd:string"/>
461 1 Tijmen de Mes
<element name="lastName" nillable="true" type="xsd:string"/>
462 1 Tijmen de Mes
<element name="email" nillable="true" type="xsd:string"/>
463 1 Tijmen de Mes
<element name="acl" nillable="true" type="ngnpro:SubscriberACLArray"/>
464 1 Tijmen de Mes
<element name="groups" nillable="true" type="ngnpro:StringArray"/>
465 1 Tijmen de Mes
<element name="properties" nillable="true" type="ngnpro:PropertyArray"/>
466 1 Tijmen de Mes
<element name="timezone" nillable="true" type="xsd:string"/>
467 1 Tijmen de Mes
<element name="rpid" nillable="true" type="xsd:string"/>
468 1 Tijmen de Mes
<element name="quota" nillable="true" type="xsd:int"/>
469 1 Tijmen de Mes
<element name="quickdialPrefix" nillable="true" type="xsd:string"/>
470 1 Tijmen de Mes
<element name="callLimit" nillable="true" type="xsd:int"/>
471 1 Tijmen de Mes
<element name="prepaid" nillable="true" type="xsd:boolean"/>
472 1 Tijmen de Mes
<element name="region" nillable="true" type="xsd:string"/>
473 1 Tijmen de Mes
<element name="timeout" nillable="true" type="xsd:nonNegativeInteger"/>
474 1 Tijmen de Mes
<element name="owner" nillable="true" type="xsd:integer"/>
475 1 Tijmen de Mes
<element name="customer" nillable="true" type="xsd:integer"/>
476 1 Tijmen de Mes
<element name="reseller" nillable="true" type="xsd:integer"/>
477 1 Tijmen de Mes
<element name="changeDate" nillable="true" type="xsd:string"/>
478 1 Tijmen de Mes
<element name="createDate" nillable="true" type="xsd:string"/>
479 1 Tijmen de Mes
</sequence>
480 1 Tijmen de Mes
</complexType>
481 12 Tijmen de Mes
</pre>
482 1 Tijmen de Mes
483 1 Tijmen de Mes
Meaning of SIP account attributes:
484 1 Tijmen de Mes
485 1 Tijmen de Mes
* rpid: caller id presented to the callee when calling to PSTN destinations
486 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
487 1 Tijmen de Mes
* properties: list with attribute/value pairs, used to store arbitrary data per subscriber
488 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
489 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
490 1 Tijmen de Mes
* callLimit: maximum amount of concurrent PSTN calls allowed
491 1 Tijmen de Mes
* acl: a list of allowed IP networks
492 1 Tijmen de Mes
493 1 Tijmen de Mes
* groups: group membership for SIP accounts. Available groups and their meaning:
494 1 Tijmen de Mes
495 1 Tijmen de Mes
* free-pstn: subscriber may call to PSTN destinations
496 1 Tijmen de Mes
* blocked: only calls to emergency numbers defind in the SIP Proxy are allowed
497 1 Tijmen de Mes
* anonymous: hide caller id when calling to the PSTN (using Privacy headers)
498 1 Tijmen de Mes
* anonymous-reject: reject calls from "anonymous&#64;anonymous.invalid":mailto:anonymous@anonymous.invalid
499 1 Tijmen de Mes
* quota: subscriber has been blocked because monthy quota has been exceeded, calls to PSTN destinations are denied
500 1 Tijmen de Mes
* missed-calls: subscriber will be notifie by email about his sessions in the last 24 hours
501 1 Tijmen de Mes
502 1 Tijmen de Mes
Reserved groups for internal use (do not change them):
503 1 Tijmen de Mes
504 1 Tijmen de Mes
* prepaid, intercept
505 1 Tijmen de Mes
506 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.
507 1 Tijmen de Mes
508 1 Tijmen de Mes
h3. Graphical client
509 1 Tijmen de Mes
510 1 Tijmen de Mes
@CDRTool->Accounts->SIP accounts@
511 1 Tijmen de Mes
512 28 Tijmen de Mes
!ngnpro-sip-accounts.png!
513 1 Tijmen de Mes
514 1 Tijmen de Mes
h3. Control panel
515 1 Tijmen de Mes
516 3 Tijmen de Mes
!http://wiki.sip2sip.info/attachments/3809/sip2sip-cp-menu.png(http://wiki.sip2sip.info/attachments/3809/sip2sip-cp-menu.png)!
517 1 Tijmen de Mes
518 1 Tijmen de Mes
The above menu gives you access to various settings and information related to your SIP account.
519 1 Tijmen de Mes
520 1 Tijmen de Mes
h3. Voicemail
521 1 Tijmen de Mes
522 1 Tijmen de Mes
This panel can set the way the voicemail messages are delivered.
523 1 Tijmen de Mes
524 3 Tijmen de Mes
!http://wiki.sip2sip.info/attachments/3813/sip2sip-cp-voicemail.png(http://wiki.sip2sip.info/attachments/3813/sip2sip-cp-voicemail.png)!
525 1 Tijmen de Mes
526 1 Tijmen de Mes
h3. Online devices
527 1 Tijmen de Mes
528 1 Tijmen de Mes
This panel displays the list of registered SIP devices.
529 1 Tijmen de Mes
530 29 Tijmen de Mes
!sip2sip-cp-devices.png!
531 1 Tijmen de Mes
532 1 Tijmen de Mes
h3. Accept calls
533 1 Tijmen de Mes
534 1 Tijmen de Mes
This panel control when and from whom calls are accepted.
535 1 Tijmen de Mes
536 3 Tijmen de Mes
!http://wiki.sip2sip.info/attachments/3801/sip2sip-cp-accept.png(http://wiki.sip2sip.info/attachments/3801/sip2sip-cp-accept.png)!
537 1 Tijmen de Mes
538 1 Tijmen de Mes
h3. Call diversions
539 1 Tijmen de Mes
540 1 Tijmen de Mes
This panel controls the call diversions.
541 1 Tijmen de Mes
542 3 Tijmen de Mes
!http://wiki.sip2sip.info/attachments/3807/sip2sip-cp-diversions.png(http://wiki.sip2sip.info/attachments/3807/sip2sip-cp-diversions.png)!
543 1 Tijmen de Mes
544 1 Tijmen de Mes
Call diversions data type:
545 1 Tijmen de Mes
546 13 Tijmen de Mes
<pre>
547 13 Tijmen de Mes
<complexType name="CallDiversions">
548 1 Tijmen de Mes
549 13 Tijmen de Mes
<sequence>
550 1 Tijmen de Mes
551 13 Tijmen de Mes
<!--
552 1 Tijmen de Mes
553 1 Tijmen de Mes
                        FUNC - forward unconditionally
554 1 Tijmen de Mes
                        FNOL - forward if not online
555 1 Tijmen de Mes
                        FUNV - forward if not available
556 1 Tijmen de Mes
                        FNOA - forward if no answer
557 1 Tijmen de Mes
                        FBUS - forward if busy
558 1 Tijmen de Mes
                        RUNC - redirect unconditionally
559 1 Tijmen de Mes
                        RNOL - redirect if not online
560 1 Tijmen de Mes
                        RUNV - redirect if not available
561 1 Tijmen de Mes
                        RNOA - redirect if no answer
562 1 Tijmen de Mes
                        RBUS - redirect if busy
563 1 Tijmen de Mes
            
564 1 Tijmen de Mes
            - Forward conditions cause the traffic to be routed and accounted through the SIP Proxy
565 1 Tijmen de Mes
            - Redirect conditions cause traffic to be made directly between the caller and end destination, 
566 1 Tijmen de Mes
              bypassing the SIP Proxy
567 1 Tijmen de Mes
            - Always used FXXX conditions when accounting is desired
568 1 Tijmen de Mes
            
569 1 Tijmen de Mes
                    
570 13 Tijmen de Mes
-->
571 13 Tijmen de Mes
<element name="FUNC" nillable="true" type="xsd:string"/>
572 13 Tijmen de Mes
<element name="FNOL" nillable="true" type="xsd:string"/>
573 13 Tijmen de Mes
<element name="FUNV" nillable="true" type="xsd:string"/>
574 13 Tijmen de Mes
<element name="FNOA" nillable="true" type="xsd:string"/>
575 13 Tijmen de Mes
<element name="FBUS" nillable="true" type="xsd:string"/>
576 13 Tijmen de Mes
<element name="RUNC" nillable="true" type="xsd:string"/>
577 13 Tijmen de Mes
<element name="RNOL" nillable="true" type="xsd:string"/>
578 13 Tijmen de Mes
<element name="RUNV" nillable="true" type="xsd:string"/>
579 13 Tijmen de Mes
<element name="RNOA" nillable="true" type="xsd:string"/>
580 13 Tijmen de Mes
<element name="RBUS" nillable="true" type="xsd:string"/>
581 13 Tijmen de Mes
</sequence>
582 13 Tijmen de Mes
</complexType>
583 1 Tijmen de Mes
</pre>
584 1 Tijmen de Mes
585 1 Tijmen de Mes
h3. Aliases
586 1 Tijmen de Mes
587 1 Tijmen de Mes
This panel displays the aliases associated with a SIP account.
588 1 Tijmen de Mes
589 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)!
590 1 Tijmen de Mes
591 1 Tijmen de Mes
h2. SIP Aliases
592 1 Tijmen de Mes
593 1 Tijmen de Mes
Aliases can be used to provide custom SIP addresses that map to exiting SIP accounts.
594 1 Tijmen de Mes
595 1 Tijmen de Mes
h3. SOAP/XML functions
596 1 Tijmen de Mes
597 1 Tijmen de Mes
* SipPort-&gt;addAlias()
598 1 Tijmen de Mes
* SipPort-&gt;updateAlias()
599 1 Tijmen de Mes
* SipPort-&gt;deleteAlias()
600 1 Tijmen de Mes
* SipPort-&gt;getAlias()
601 1 Tijmen de Mes
* SipPort-&gt;getAliasesForAccount()
602 1 Tijmen de Mes
* SipPort-&gt;getAliases()
603 1 Tijmen de Mes
604 1 Tijmen de Mes
h3. Graphical client
605 1 Tijmen de Mes
606 1 Tijmen de Mes
@CDRTool->Accounts->SIP aliases@
607 1 Tijmen de Mes
608 32 Tijmen de Mes
!ngnpro-sip-aliases.png!
609 1 Tijmen de Mes
610 1 Tijmen de Mes
h2. Trusted Peers
611 1 Tijmen de Mes
612 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.
613 1 Tijmen de Mes
614 1 Tijmen de Mes
h3. SOAP/XML functions
615 1 Tijmen de Mes
616 1 Tijmen de Mes
* SipPort-&gt;addTrustedPeer()
617 1 Tijmen de Mes
* SipPort-&gt;deleteTrustedPeer()
618 1 Tijmen de Mes
* SipPort-&gt;getTrustedPeers()
619 1 Tijmen de Mes
620 1 Tijmen de Mes
Trusted peer attributes:
621 1 Tijmen de Mes
622 14 Tijmen de Mes
<pre>
623 14 Tijmen de Mes
<complexType name="TrustedPeer">
624 1 Tijmen de Mes
625 1 Tijmen de Mes
<sequence>
626 1 Tijmen de Mes
<element name="ip" nillable="false" type="xsd:string"/>
627 1 Tijmen de Mes
<element name="protocol" nillable="true" type="ngnpro:TrustedPeerProtocol" default="any"/>
628 1 Tijmen de Mes
<element name="tag" nillable="true" type="xsd:string"/>
629 1 Tijmen de Mes
<element name="description" nillable="true" type="xsd:string" default=""/>
630 1 Tijmen de Mes
<element name="reseller" nillable="true" type="xsd:integer"/>
631 1 Tijmen de Mes
<element name="changeDate" nillable="true" type="xsd:string"/>
632 1 Tijmen de Mes
</sequence>
633 1 Tijmen de Mes
</complexType>
634 14 Tijmen de Mes
</pre>
635 1 Tijmen de Mes
636 1 Tijmen de Mes
h3. Graphical client
637 1 Tijmen de Mes
638 1 Tijmen de Mes
@CDRTool->Accounts->Trusted peers@
639 1 Tijmen de Mes
640 31 Tijmen de Mes
!ngnpro-trusted-peers.png!
641 1 Tijmen de Mes
642 1 Tijmen de Mes
h2. ENUM Ranges
643 1 Tijmen de Mes
644 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.
645 1 Tijmen de Mes
646 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.
647 1 Tijmen de Mes
648 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.
649 1 Tijmen de Mes
650 1 Tijmen de Mes
h3. SOAP/XML functions
651 1 Tijmen de Mes
652 1 Tijmen de Mes
* EnumPort-&gt;addRange()
653 1 Tijmen de Mes
* EnumPort-&gt;updateRange()
654 1 Tijmen de Mes
* EnumPort-&gt;deleteRange()
655 1 Tijmen de Mes
* EnumPort-&gt;getRanges()
656 1 Tijmen de Mes
657 1 Tijmen de Mes
ENUM range attributes:
658 1 Tijmen de Mes
659 15 Tijmen de Mes
<pre>
660 15 Tijmen de Mes
<complexType name="EnumRange">
661 1 Tijmen de Mes
662 1 Tijmen de Mes
<sequence>
663 1 Tijmen de Mes
<element name="id" nillable="false" type="ngnpro:EnumRangeId"/>
664 1 Tijmen de Mes
<element name="ttl" nillable="true" type="xsd:nonNegativeInteger" default="3600"/>
665 1 Tijmen de Mes
<element name="minDigits" nillable="true" type="xsd:int"/>
666 1 Tijmen de Mes
<element name="maxDigits" nillable="true" type="xsd:int"/>
667 1 Tijmen de Mes
<element name="size" nillable="true" type="xsd:int"/>
668 1 Tijmen de Mes
<element name="nameservers" nillable="true" type="ngnpro:StringArray"/>
669 1 Tijmen de Mes
<element name="used" nillable="true" type="xsd:int"/>
670 1 Tijmen de Mes
<element name="serial" nillable="true" type="xsd:int"/>
671 1 Tijmen de Mes
<element name="customer" nillable="true" type="xsd:integer"/>
672 1 Tijmen de Mes
<element name="reseller" nillable="true" type="xsd:integer"/>
673 1 Tijmen de Mes
<element name="changeDate" nillable="true" type="xsd:string"/>
674 1 Tijmen de Mes
<element name="info" nillable="true" type="xsd:string"/>
675 1 Tijmen de Mes
</sequence>
676 1 Tijmen de Mes
</complexType>
677 15 Tijmen de Mes
</pre>
678 1 Tijmen de Mes
679 1 Tijmen de Mes
h3. Graphical client
680 1 Tijmen de Mes
681 1 Tijmen de Mes
@CDRTool->Accounts->ENUM ranges@
682 1 Tijmen de Mes
683 30 Tijmen de Mes
!ngnpro-enum-ranges.png!
684 1 Tijmen de Mes
685 1 Tijmen de Mes
Click on each range to modify its properties.
686 1 Tijmen de Mes
687 30 Tijmen de Mes
!ngnpro-enum-range.png!
688 1 Tijmen de Mes
689 1 Tijmen de Mes
h2. ENUM Numbers
690 1 Tijmen de Mes
691 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.
692 1 Tijmen de Mes
693 43 Tijmen de Mes
The ENUM NAPTR record management has been developed based on the standards described at "http://ag-projects.com/enum/":http://ag-projects.com/enum/
694 1 Tijmen de Mes
695 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)
696 1 Tijmen de Mes
697 1 Tijmen de Mes
h3. SOAP/XML functions
698 1 Tijmen de Mes
699 1 Tijmen de Mes
* EnumPort-&gt;addNumber()
700 1 Tijmen de Mes
* EnumPort-&gt;updateNumber()
701 1 Tijmen de Mes
* EnumPort-&gt;deleteNumber()
702 1 Tijmen de Mes
* EnumPort-&gt;getNumber()
703 1 Tijmen de Mes
* EnumPort-&gt;getNumbers()
704 1 Tijmen de Mes
705 1 Tijmen de Mes
ENUM number attributes:
706 1 Tijmen de Mes
707 16 Tijmen de Mes
<pre>
708 16 Tijmen de Mes
<complexType name="EnumNumber">
709 1 Tijmen de Mes
710 1 Tijmen de Mes
<sequence>
711 1 Tijmen de Mes
<element name="id" nillable="false" type="ngnpro:EnumId"/>
712 1 Tijmen de Mes
<element name="mappings" nillable="true" type="ngnpro:EnumMappingArray"/>
713 1 Tijmen de Mes
<element name="info" nillable="true" type="xsd:string"/>
714 1 Tijmen de Mes
<element name="owner" nillable="true" type="xsd:integer"/>
715 1 Tijmen de Mes
<element name="customer" nillable="true" type="xsd:integer"/>
716 1 Tijmen de Mes
<element name="reseller" nillable="true" type="xsd:integer"/>
717 1 Tijmen de Mes
<element name="changeDate" nillable="true" type="xsd:string"/>
718 1 Tijmen de Mes
</sequence>
719 1 Tijmen de Mes
</complexType>
720 16 Tijmen de Mes
</pre>
721 1 Tijmen de Mes
722 1 Tijmen de Mes
723 1 Tijmen de Mes
ENUM mapping attributes:
724 1 Tijmen de Mes
725 16 Tijmen de Mes
<pre>
726 16 Tijmen de Mes
<complexType name="EnumMapping">
727 1 Tijmen de Mes
728 1 Tijmen de Mes
<sequence>
729 1 Tijmen de Mes
<element name="id" nillable="true" type="xsd:int"/>
730 1 Tijmen de Mes
<element name="type" nillable="true" type="xsd:string"/>
731 1 Tijmen de Mes
<element name="mapto" nillable="true" type="xsd:string"/>
732 1 Tijmen de Mes
<element name="priority" nillable="true" type="xsd:int"/>
733 1 Tijmen de Mes
<element name="ttl" nillable="true" type="xsd:int" default="3600"/>
734 1 Tijmen de Mes
</sequence>
735 1 Tijmen de Mes
</complexType>
736 16 Tijmen de Mes
</pre>
737 1 Tijmen de Mes
738 1 Tijmen de Mes
The following NAPTR record types ENUM service types are supported:
739 1 Tijmen de Mes
740 16 Tijmen de Mes
<pre>
741 16 Tijmen de Mes
var $NAPTR_services=array(
742 1 Tijmen de Mes
        "sip"    => array("service"=>"sip",
743 1 Tijmen de Mes
                              "webname"=>"SIP",
744 1 Tijmen de Mes
                              "schemas"=>array("sip:","sips:")),
745 1 Tijmen de Mes
        "mailto" => array("service"=>"mailto",
746 1 Tijmen de Mes
                              "webname"=>"Email",
747 1 Tijmen de Mes
                              "schemas"=>array("mailto:")),
748 1 Tijmen de Mes
        "web:http"   => array("service"=>"web:http",
749 1 Tijmen de Mes
                              "webname"=>"WEB (http)",
750 1 Tijmen de Mes
                              "schemas"=>array("http://")),
751 1 Tijmen de Mes
        "web:https"  => array("service"=>"web:https",
752 1 Tijmen de Mes
                              "webname"=>"WEB (https)",
753 1 Tijmen de Mes
                              "schemas"=>array("https://")),
754 1 Tijmen de Mes
        "x-skype:callto" => array("service"=>"x-skype:callto",
755 1 Tijmen de Mes
                              "webname"=>"Skype",
756 1 Tijmen de Mes
                              "schemas"=>array("callto:")),
757 1 Tijmen de Mes
        "h323"   => array("service"=>"h323",
758 1 Tijmen de Mes
                              "webname"=>"H323",
759 1 Tijmen de Mes
                              "schemas"=>array("h323:")),
760 1 Tijmen de Mes
        "iax"    => array("service"=>"iax",
761 1 Tijmen de Mes
                              "webname"=>"IAX",
762 1 Tijmen de Mes
                              "schemas"=>array("iax:")),
763 1 Tijmen de Mes
        "iax2"   => array("service"=>"iax2",
764 1 Tijmen de Mes
                              "webname"=>"IAX2",
765 1 Tijmen de Mes
                              "schemas"=>array("iax2:")),
766 1 Tijmen de Mes
        "mms"    => array("service"=>"mms",
767 1 Tijmen de Mes
                              "webname"=>"MMS",
768 1 Tijmen de Mes
                              "schemas"=>array("tel:","mailto:")),
769 1 Tijmen de Mes
        "sms"    => array("service"=>"sms",
770 1 Tijmen de Mes
                              "webname"=>"SMS",
771 1 Tijmen de Mes
                              "schemas"=>array("tel:","mailto:")),
772 1 Tijmen de Mes
        "ems"    => array("service"=>"ems",
773 1 Tijmen de Mes
                              "webname"=>"EMS",
774 1 Tijmen de Mes
                              "schemas"=>array("tel:","mailto:")),
775 1 Tijmen de Mes
        "im"     => array("service"=>"im",
776 1 Tijmen de Mes
                              "webname"=>"IM",
777 1 Tijmen de Mes
                              "schemas"=>array("im:")),
778 1 Tijmen de Mes
        "npd:tel"   => array("service"=>"npd+tel",
779 1 Tijmen de Mes
                              "webname"=>"Portability",
780 1 Tijmen de Mes
                              "schemas"=>array("tel:")),
781 1 Tijmen de Mes
        "void:mailto"  => array("service"=>"void:mailto",
782 1 Tijmen de Mes
                              "webname"=>"VOID(mail)",
783 1 Tijmen de Mes
                              "schemas"=>array("mailto:")),
784 1 Tijmen de Mes
        "void:http"  => array("service"=>"void:http",
785 1 Tijmen de Mes
                              "webname"=>"VOID(http)",
786 1 Tijmen de Mes
                              "schemas"=>array("http://")),
787 1 Tijmen de Mes
        "void:https" => array("service"=>"void:https",
788 1 Tijmen de Mes
                              "webname"=>"VOID(https)",
789 1 Tijmen de Mes
                              "schemas"=>array("https://")),
790 1 Tijmen de Mes
        "voice"  => array("service"=>"voice",
791 1 Tijmen de Mes
                              "webname"=>"Voice",
792 1 Tijmen de Mes
                              "schemas"=>array("voice:","tel:")),
793 1 Tijmen de Mes
        "tel"    => array("service"=>"tel",
794 1 Tijmen de Mes
                              "webname"=>"Tel",
795 1 Tijmen de Mes
                              "schemas"=>array("tel:")),
796 1 Tijmen de Mes
        "fax:tel"    => array("service"=>"fax:tel",
797 1 Tijmen de Mes
                              "webname"=>"Fax",
798 1 Tijmen de Mes
                              "schemas"=>array("tel:")),
799 1 Tijmen de Mes
        "ifax:mailto"   => array("service"=>"ifax:mailto",
800 1 Tijmen de Mes
                              "webname"=>"iFax",
801 1 Tijmen de Mes
                              "schemas"=>array("mailto:")),
802 1 Tijmen de Mes
        "pres"   => array("service"=>"pres",
803 1 Tijmen de Mes
                              "webname"=>"Presence",
804 1 Tijmen de Mes
                              "schemas"=>array("pres:")),
805 1 Tijmen de Mes
        "ft:ftp"    => array("service"=>"ft:ftp",
806 1 Tijmen de Mes
                              "webname"=>"FTP",
807 1 Tijmen de Mes
                              "schemas"=>array("ftp://")),
808 1 Tijmen de Mes
        "loc:http"  => array("service"=>"loc:http",
809 1 Tijmen de Mes
                              "webname"=>"GeoLocation",
810 1 Tijmen de Mes
                              "schemas"=>array("http://")),
811 1 Tijmen de Mes
        "key:http"  => array("service"=>"key:http",
812 1 Tijmen de Mes
                              "webname"=>"Public key",
813 1 Tijmen de Mes
                              "schemas"=>array("http://")),
814 1 Tijmen de Mes
        "key:https"  => array("service"=>"key:https",
815 1 Tijmen de Mes
                              "webname"=>"Public key (HTTPS)",
816 1 Tijmen de Mes
                              "schemas"=>array("https://"))
817 16 Tijmen de Mes
        );
818 16 Tijmen de Mes
</pre>
819 1 Tijmen de Mes
820 1 Tijmen de Mes
h3. Graphical client
821 1 Tijmen de Mes
822 1 Tijmen de Mes
@CDRTool->Accounts->ENUM numbers@
823 1 Tijmen de Mes
824 26 Tijmen de Mes
!ngnpro-enum-numbers.png!
825 1 Tijmen de Mes
826 1 Tijmen de Mes
Click on each number to modify its properties.
827 1 Tijmen de Mes
828 26 Tijmen de Mes
!ngnpro-enum-number.png!
829 1 Tijmen de Mes
830 1 Tijmen de Mes
h2. Voicemail Accounts
831 1 Tijmen de Mes
832 1 Tijmen de Mes
The provisioning is performed using the SOAP/XML functions present in the Voicemail port described in NGNPro WSDL.
833 1 Tijmen de Mes
834 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.
835 1 Tijmen de Mes
836 1 Tijmen de Mes
By default mailboxes are created starting with number 1000000.
837 1 Tijmen de Mes
838 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.
839 1 Tijmen de Mes
840 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.
841 1 Tijmen de Mes
842 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:
843 1 Tijmen de Mes
844 20 Tijmen de Mes
<pre>
845 17 Tijmen de Mes
  /etc/opensips/config/settings.m4
846 20 Tijmen de Mes
</pre>
847 1 Tijmen de Mes
848 20 Tijmen de Mes
<pre>
849 17 Tijmen de Mes
  # Number to dial to get to voicemail
850 1 Tijmen de Mes
  define(`VOICEMAIL_NUMBER', `*70')
851 20 Tijmen de Mes
</pre>
852 1 Tijmen de Mes
853 1 Tijmen de Mes
854 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;).
855 1 Tijmen de Mes
856 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.
857 1 Tijmen de Mes
858 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.
859 1 Tijmen de Mes
860 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:
861 1 Tijmen de Mes
862 17 Tijmen de Mes
<pre>
863 1 Tijmen de Mes
;emailbody=
864 1 Tijmen de Mes
;emailsubject=
865 1 Tijmen de Mes
866 1 Tijmen de Mes
; Change the from, body and/or subject, variables:
867 1 Tijmen de Mes
;     VM_NAME, VM_DUR, VM_MSGNUM, VM_MAILBOX, VM_CALLERID, VM_CIDNUM,
868 1 Tijmen de Mes
;     VM_CIDNAME, VM_DATE
869 1 Tijmen de Mes
870 1 Tijmen de Mes
and
871 1 Tijmen de Mes
872 1 Tijmen de Mes
;serveremail = notification@some_domain.tld
873 1 Tijmen de Mes
</pre>
874 1 Tijmen de Mes
875 1 Tijmen de Mes
An asterisk reload or restart is required:
876 1 Tijmen de Mes
877 17 Tijmen de Mes
  sudo asterisk -r reload
878 1 Tijmen de Mes
879 1 Tijmen de Mes
880 1 Tijmen de Mes
h3. SOAP/XML functions
881 1 Tijmen de Mes
882 1 Tijmen de Mes
* VoicemailPort-&gt;addAccount()
883 1 Tijmen de Mes
* VoicemailPort-&gt;updateAccount()
884 1 Tijmen de Mes
* VoicemailPort-&gt;deleteAccount()
885 1 Tijmen de Mes
* VoicemailPort-&gt;getAccount()
886 1 Tijmen de Mes
* VoicemailPort-&gt;setAnnouncement()
887 1 Tijmen de Mes
888 1 Tijmen de Mes
h2. PSTN Routes
889 1 Tijmen de Mes
890 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.
891 1 Tijmen de Mes
892 1 Tijmen de Mes
h3. SOAP/XML functions
893 1 Tijmen de Mes
894 1 Tijmen de Mes
* SipPort-&gt;addRoutes()
895 1 Tijmen de Mes
* SipPort-&gt;deleteRoutes()
896 1 Tijmen de Mes
* SipPort-&gt;getRoutes()
897 1 Tijmen de Mes
898 1 Tijmen de Mes
h3. Graphical client
899 1 Tijmen de Mes
900 1 Tijmen de Mes
@CDRTool->Accounts->PSTN routes@
901 1 Tijmen de Mes
902 26 Tijmen de Mes
!ngnpro-pstn-routes.png!
903 1 Tijmen de Mes
904 1 Tijmen de Mes
h2. PSTN Carriers
905 1 Tijmen de Mes
906 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.
907 1 Tijmen de Mes
908 1 Tijmen de Mes
h3. SOAP/XML functions
909 1 Tijmen de Mes
910 1 Tijmen de Mes
* SipPort-&gt;addCarrier()
911 1 Tijmen de Mes
* SipPort-&gt;deleteCarrier()
912 1 Tijmen de Mes
* SipPort-&gt;getCarriers()
913 1 Tijmen de Mes
914 1 Tijmen de Mes
h3. Graphical client
915 1 Tijmen de Mes
916 1 Tijmen de Mes
@CDRTool->Accounts->PSTN carriers@
917 1 Tijmen de Mes
918 26 Tijmen de Mes
!ngnpro-pstn-carriers.png!
919 1 Tijmen de Mes
920 1 Tijmen de Mes
h2. PSTN Gateways
921 1 Tijmen de Mes
922 1 Tijmen de Mes
You must define at least one gateway for PSTN routing. Before creating any gateway you must create a carrier.
923 1 Tijmen de Mes
924 1 Tijmen de Mes
h3. SOAP/XML functions
925 1 Tijmen de Mes
926 1 Tijmen de Mes
* SipPort-&gt;addGateway()
927 1 Tijmen de Mes
* SipPort-&gt;updateGateway()
928 1 Tijmen de Mes
* SipPort-&gt;deleteGateway()
929 1 Tijmen de Mes
* SipPort-&gt;getGateways()
930 1 Tijmen de Mes
931 1 Tijmen de Mes
h3. Graphical client
932 1 Tijmen de Mes
933 1 Tijmen de Mes
@CDRTool->Accounts->PSTN gateways@
934 1 Tijmen de Mes
935 26 Tijmen de Mes
!ngnpro-pstn-gateways.png!
936 1 Tijmen de Mes
937 1 Tijmen de Mes
h2. PSTN Rules
938 1 Tijmen de Mes
939 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.
940 1 Tijmen de Mes
941 1 Tijmen de Mes
h3. SOAP/XML functions
942 1 Tijmen de Mes
943 1 Tijmen de Mes
* SipPort-&gt;addGatewayRule()
944 1 Tijmen de Mes
* SipPort-&gt;updateGatewayRule()
945 1 Tijmen de Mes
* SipPort-&gt;deleteGatewayRule()
946 1 Tijmen de Mes
* SipPort-&gt;getGatewayRules()
947 1 Tijmen de Mes
948 1 Tijmen de Mes
h3. Graphical client
949 1 Tijmen de Mes
950 1 Tijmen de Mes
@CDRTool->Accounts->PSTN rules@
951 1 Tijmen de Mes
952 26 Tijmen de Mes
!ngnpro-pstn-rules.png!
953 1 Tijmen de Mes
954 1 Tijmen de Mes
Click on rule to edit its properties.
955 1 Tijmen de Mes
956 26 Tijmen de Mes
!ngnpro-pstn-rule.png!
957 3 Tijmen de Mes
958 1 Tijmen de Mes
h2. Emergency Numbers
959 1 Tijmen de Mes
960 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.
961 1 Tijmen de Mes
962 1 Tijmen de Mes
963 41 Tijmen de Mes
1. Define the emergency numbers in the /etc/opensips/config/settings.m4
964 26 Tijmen de Mes
965 21 Tijmen de Mes
<pre>
966 18 Tijmen de Mes
  # Emergency numbers
967 18 Tijmen de Mes
  define(`EMERGENCY_NR1', `112')
968 18 Tijmen de Mes
  define(`EMERGENCY_NR2', `911')
969 1 Tijmen de Mes
  define(`EMERGENCY_NRS', `2')
970 1 Tijmen de Mes
</pre>
971 1 Tijmen de Mes
972 41 Tijmen de Mes
2. Add the local access number for each region to emergency&#95;mapping table, the table has the following structure:
973 41 Tijmen de Mes
974 41 Tijmen de Mes
  |*Field*|*Type*|
975 41 Tijmen de Mes
  |id|int(10) unsigned|
976 41 Tijmen de Mes
  |username|varchar(64)|
977 41 Tijmen de Mes
  |domain|varchar(64)|
978 41 Tijmen de Mes
  |region|varchar(32)|
979 41 Tijmen de Mes
  |target|varchar(128)|
980 41 Tijmen de Mes
  |change&#95;date|timestamp|
981 41 Tijmen de Mes
982 41 Tijmen de Mes
  Example: 
983 21 Tijmen de Mes
<pre>
984 1 Tijmen de Mes
+----------+-------------+-----------+-------------------------------+---------------------+
985 1 Tijmen de Mes
| username | domain      | region    | target                        | change_date         |      
986 1 Tijmen de Mes
+----------+-------------+-----------+-------------------------------+---------------------+
987 1 Tijmen de Mes
| 112      | example.com | 010       | sip:0031141217112@example.com | 2006-05-09 14:33:18 | 
988 1 Tijmen de Mes
| 112      | example.com | 0111      | sip:0031141219112@example.com | 2006-05-09 14:33:18 | 
989 1 Tijmen de Mes
| 112      | example.com | 0113      | sip:0031141219112@example.com | 2006-05-09 14:33:18 | 
990 1 Tijmen de Mes
| 112      | example.com | 0114      | sip:0031141219112@example.com | 2006-05-09 14:33:18 | 
991 1 Tijmen de Mes
| 112      | example.com | 0115      | sip:0031141219112@example.com | 2006-05-09 14:33:18 | 
992 1 Tijmen de Mes
+----------+-------------+-----------+-------------------------------+---------------------+
993 21 Tijmen de Mes
</pre>
994 1 Tijmen de Mes
995 41 Tijmen de Mes
3. Set the *region* attribute for each SIP account using Sip-&gt;updateAccount() to match the region column in emergency&#95;mapping table.
996 1 Tijmen de Mes
997 1 Tijmen de Mes
h2. Email Notifications
998 1 Tijmen de Mes
999 1 Tijmen de Mes
h3. Quota exceeded
1000 1 Tijmen de Mes
1001 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:
1002 1 Tijmen de Mes
1003 24 Tijmen de Mes
  /var/www/CDRTool/scripts/OpenSIPS/quotaCheck.php
1004 1 Tijmen de Mes
1005 1 Tijmen de Mes
1006 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:
1007 1 Tijmen de Mes
1008 24 Tijmen de Mes
  /var/www/CDRTool/setup/mysql/custom_notifications.mysql 
1009 1 Tijmen de Mes
1010 1 Tijmen de Mes
1011 1 Tijmen de Mes
h3. Voicemail
1012 1 Tijmen de Mes
1013 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:
1014 1 Tijmen de Mes
1015 24 Tijmen de Mes
  /etc/asterisk/voicemail.conf
1016 1 Tijmen de Mes
1017 1 Tijmen de Mes
1018 1 Tijmen de Mes
This notification cannot be enabled/disabled per user, it is a global platform setting.
1019 1 Tijmen de Mes
1020 1 Tijmen de Mes
h3. Last sessions
1021 1 Tijmen de Mes
1022 1 Tijmen de Mes
An email with last received sessions in the previous 24 hours is sent out by a CDRTool cronjob script:
1023 1 Tijmen de Mes
1024 24 Tijmen de Mes
  /var/www/CDRTool/scripts/OpenSIPS/notifyLastSessions.php
1025 1 Tijmen de Mes
1026 1 Tijmen de Mes
1027 1 Tijmen de Mes
The From header of the email notification can be modified by changing the following setting from /etc/cdrtool/global.inc:
1028 1 Tijmen de Mes
1029 24 Tijmen de Mes
  $CDRTool['provider']['fromEmail'] ="support@ag-projects.com";
1030 1 Tijmen de Mes
1031 1 Tijmen de Mes
1032 1 Tijmen de Mes
The notification is sent only if the SIP account belongs to the *missed-calls* group.