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