opensips-mi 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/README.md +35 -31
- data/lib/opensips/mi/transport/fifo.rb +1 -1
- data/lib/opensips/mi/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZmZiZDk4M2Y0ZTUyZmE5ZTkxYjI4ZWJjMDM4ZGYzNDlmYjk1M2RmZg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NTFhNTVjYWYzZGUyMmEyMDM2ZTk3OGJiYzUwY2EwMDU4ZTYzZDE2MQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZTQ0YWQwNWUyZjQ3MTJhNDUxNmE3NDBiOTg3M2IyZDc0NzZiYTQ3ZDU1OTQx
|
10
|
+
ODQ5OTJkNDQxZjE5OGFhZGJjYWI1MGFhYmFmYjU5NmVjYTIwZTg5ZGE5N2E0
|
11
|
+
OWE0NTVmYTQ1ZjNkOGE0ODQ1N2MwNGM1NWZlZTVmMTI5OWFlZDU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZWM5YjZjYTkzZDRlZGFlOWYzOWI1ODFjYTk2ZDQyNzhjOThlYjUzNzVhM2Q3
|
14
|
+
YzRhNTUyZTQ2YzkzMTUzNjc1MjI0MDU3ZGJhMmI3NmM2NzUyMzEwYTYyOWMw
|
15
|
+
NDk4MDUyMjU1ZTZhZmViYWVlYTdkMzA2N2M0M2RjMzQxYzAyNDA=
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Opensips::Mi
|
2
2
|
|
3
|
-
OpenSIPs management interface
|
4
|
-
This library
|
3
|
+
OpenSIPs management interface library.
|
4
|
+
This library supports following management interfaces OpenSIPs modules:
|
5
5
|
|
6
6
|
* mi_fifo
|
7
7
|
* mi_datagram
|
@@ -32,7 +32,7 @@ Opensips::MI.connect INTERFACE, PARAMS
|
|
32
32
|
```
|
33
33
|
Parameters:
|
34
34
|
|
35
|
-
*INTRFACE* - interface
|
35
|
+
*INTRFACE* - interface name. One of the following:
|
36
36
|
|
37
37
|
* :fifo
|
38
38
|
* :datagram
|
@@ -40,7 +40,7 @@ Parameters:
|
|
40
40
|
|
41
41
|
*PARAMS* - connection parameters. Depends on interface. See below.
|
42
42
|
|
43
|
-
This function will raise exceptions if there are parameters or environment errors.
|
43
|
+
This function will raise exceptions if there are parameters' or environment errors.
|
44
44
|
Function returns instance of one of the following classes:
|
45
45
|
|
46
46
|
* Opensips::MI::Transport::Fifo
|
@@ -61,7 +61,7 @@ opensips = Opensips::MI.connect :fifo,
|
|
61
61
|
**Parameters hash:**
|
62
62
|
|
63
63
|
* fifo_name: OpenSIPs fifo file. See mi_fifo module parameter: `modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")`.
|
64
|
-
* reply_fifo: (OPTIONAL) Name of the reply fifo file. If not used will generate random file in *reply_dir* and delete after use.
|
64
|
+
* reply_fifo: (OPTIONAL) Name of the reply fifo file. If not used, will generate random file in *reply_dir* and delete after use.
|
65
65
|
* reply_dir: (OPTIONAL) Path to directory of reply fifo file.
|
66
66
|
|
67
67
|
### Datagram
|
@@ -74,13 +74,13 @@ opensips = Opensips::MI.connect :datagram,
|
|
74
74
|
**Parameters hash:**
|
75
75
|
|
76
76
|
* host: Hostname or IP address of OpenSIPs server
|
77
|
-
* port: Datagram port. See mi_datagram module configuration parameter: `modparam("mi_datagram", "socket_name", "udp:192.168.2.133:
|
77
|
+
* port: Datagram port. See mi_datagram module configuration parameter: `modparam("mi_datagram", "socket_name", "udp:192.168.2.133:8080")`
|
78
78
|
|
79
79
|
### XMLRPC
|
80
80
|
```ruby
|
81
81
|
require 'opensips-mi'
|
82
82
|
opensips = Opensips::MI.connect :xmlrpc,
|
83
|
-
:host => "192.168.
|
83
|
+
:host => "192.168.2.133",
|
84
84
|
:port => 8080
|
85
85
|
```
|
86
86
|
**Parameters hash:**
|
@@ -90,8 +90,9 @@ opensips = Opensips::MI.connect :xmlrpc,
|
|
90
90
|
|
91
91
|
### Command function
|
92
92
|
|
93
|
-
Function "*command*" expects fifo command as first argument
|
94
|
-
For example:
|
93
|
+
Function "*command*" expects fifo command as a first argument, followed by command parameters.
|
94
|
+
Command parameters' description can be found in module documentation. For example: http://www.opensips.org/html/docs/modules/1.8.x/dialog.html#id295450
|
95
|
+
Usage example:
|
95
96
|
|
96
97
|
```ruby
|
97
98
|
require 'opensips-mi'
|
@@ -117,16 +118,16 @@ opensips.uptime
|
|
117
118
|
opensips.ul_show_contact('location', 'alice')
|
118
119
|
```
|
119
120
|
|
120
|
-
|
121
|
+
Those methods first of all verify if mi function exists using `which` mi command.
|
121
122
|
|
122
123
|
### Response
|
123
124
|
|
124
125
|
Command function returns `Opensips::MI::Response` class. This class containe following class members which can be used to process responses:
|
125
126
|
|
126
127
|
* code: *Integer* Response code: 200, 404 etc
|
127
|
-
* message: *String* Response messages: "OK", "Bad headers"
|
128
|
+
* message: *String* Response messages: "OK", "Bad headers" etc.
|
128
129
|
* rawdata: *Array* Raw response data as array
|
129
|
-
* result: *Mixed* Struct/Hash/Array/Nil. This is
|
130
|
+
* result: *Mixed* Struct/Hash/Array/Nil. This member is used by helper response methods for pretty formatted result. See below.
|
130
131
|
|
131
132
|
### Response helpers methods
|
132
133
|
|
@@ -142,17 +143,17 @@ See example files for details.
|
|
142
143
|
## Dialog methods
|
143
144
|
|
144
145
|
Dialog methods are interface to `t_uac_dlg` function of OpenSIPs' *tm* (transactions) module.
|
145
|
-
Module generates and sends a local SIP request.
|
146
146
|
|
147
147
|
### Interface to t_uac_dlg function of transaction (tm) module
|
148
|
-
Very cool method from OpenSIPs. Can generate and send SIP request method to destination.
|
148
|
+
Very cool method from OpenSIPs. Can generate and send SIP request method to a destination UAC.
|
149
149
|
Example of usage:
|
150
|
-
* Send NOTIFY with special Event header to force restart SIP phone (equivalent of
|
151
|
-
* Send PUBLISH to trigger device state
|
150
|
+
* Send NOTIFY with special Event header to force restart SIP phone (equivalent of Asterisk's "sip notify peer")
|
151
|
+
* Send PUBLISH to trigger notification which changes device state
|
152
152
|
* Send REFER to transfer call
|
153
153
|
* etc., etc., etc.
|
154
154
|
|
155
|
-
**Headers
|
155
|
+
**Headers**
|
156
|
+
|
156
157
|
Headers parameter "hf" is a hash of headers of format:
|
157
158
|
```
|
158
159
|
header-name => header-value
|
@@ -163,26 +164,27 @@ hf["From"] => "Alice Liddell <sip:alice@wanderland.com>;tag=843887163"
|
|
163
164
|
```
|
164
165
|
|
165
166
|
Special "nl" header with any value is used to input additional "\r\n". This is
|
166
|
-
useful, for example,
|
167
|
-
because t_uac_dlg
|
167
|
+
useful, for example, in message-summary event to separate application body. This is
|
168
|
+
because t_uac_dlg expects body parameter as an xml only.
|
168
169
|
|
169
|
-
Thus, using multiple headers with same header-name is not possible
|
170
|
+
Thus, using multiple headers with same header-name is not possible.
|
170
171
|
However, it is possible to use multiple header-values comma separated (rfc3261, section 7.3.1):
|
171
172
|
```
|
172
173
|
hf["Route"] => "<sip:alice@atlanta.com>, <sip:bob@biloxi.com>"
|
173
174
|
```
|
174
|
-
|
175
|
+
Which is equivalent to:
|
175
176
|
```
|
176
177
|
Route: <sip:alice@atlanta.com>
|
177
178
|
Route: <sip:bob@biloxi.com>
|
178
179
|
```
|
179
|
-
If there
|
180
|
-
body part present, Content-Type and Content-length are
|
180
|
+
If there are no To and From headers found, then exception ArgumentError is raised. Also when
|
181
|
+
body part is present, Content-Type and Content-length fields are required.
|
181
182
|
|
182
183
|
**Parameters**
|
184
|
+
|
183
185
|
* method: SIP request method (NOTIFY, PUBLISH etc)
|
184
186
|
* ruri: Request URI, ex.: sip:555@10.0.0.55:5060
|
185
|
-
* hf: Headers array. Additional headers will be added to request. At least "From" and "To" headers must be
|
187
|
+
* hf: Headers array. Additional headers will be added to request. At least "From" and "To" headers must be present. Headers' names are case-insensitive.
|
186
188
|
* nhop: Next hop SIP URI (OBP); use "." if no value.
|
187
189
|
* socket: Local socket to be used for sending the request; use "." if no value. Ex.: udp:10.130.8.21:5060
|
188
190
|
* body: (optional, may not be present) request body (if present, requires the "Content-Type" and "Content-length" headers)
|
@@ -198,21 +200,23 @@ opensips.uac_dlg "NOTIFY", "sip:alice@127.0.0.1:5066",
|
|
198
200
|
```
|
199
201
|
|
200
202
|
### NOTIFY check-sync like event
|
201
|
-
NOTIFY Events to restart phone, force configuration reload or
|
202
|
-
|
203
|
+
NOTIFY Events to restart phone, force configuration reload or report for some SIP IP phone models.
|
204
|
+
Wrapper to `uac_dlg` function.
|
203
205
|
The events list was taken from Asterisk configuration file (sip_notify.conf)
|
204
206
|
Note that SIP IP phones usually should be configured to accept special notify
|
205
|
-
event
|
206
|
-
event would be:
|
207
|
+
event. For example, Polycom configuration option to enable special event would be:
|
207
208
|
```
|
208
209
|
voIpProt.SIP.specialEvent.checkSync.alwaysReboot="1"
|
209
210
|
```
|
210
|
-
|
211
|
-
From header.
|
211
|
+
|
212
|
+
This function will generate To/From/Event headers. Will use random tag for From header.
|
213
|
+
|
212
214
|
*NOTE*: This function will not generate To header tag. This is not complying with
|
213
215
|
SIP protocol specification (rfc3265). NOTIFY must be part of a subscription
|
214
216
|
dialog. However, it works for the most of the SIP IP phone models.
|
217
|
+
|
215
218
|
**Parameters**
|
219
|
+
|
216
220
|
* uri: Valid client contact URI (sip:alice@10.0.0.100:5060). To get client URI use *ul_show_contact => contact* function
|
217
221
|
* event: One of the events from EVENTNOTIFY constant hash
|
218
222
|
* hf: Header fields. Add To/From header fields here if you do not want them to be auto-generated. Header field example: `hf['To'] => '<sip:alice@wanderland.com>'`
|
@@ -244,7 +248,7 @@ Send message-summary NOTIFY Event to update phone voicemail status.
|
|
244
248
|
|
245
249
|
**Parameters**
|
246
250
|
|
247
|
-
* uri: Request URI (sip:alice@wanderland.com:5060). To get client URI use
|
251
|
+
* uri: Request URI (sip:alice@wanderland.com:5060). To get client URI use `ul_show_contact` function, *contact* value
|
248
252
|
* vmaccount:Message Account value. Ex.: sip:*97@asterisk.com
|
249
253
|
* new: Number of new messages. If more than 0 then Messages-Waiting header will be "yes". Set to 0 to clear phone MWI
|
250
254
|
* old: (optional) Old messages
|
@@ -17,7 +17,7 @@ module Opensips
|
|
17
17
|
def initialize(params)
|
18
18
|
# set default values
|
19
19
|
@reply_fifo = if params[:reply_fifo].nil?
|
20
|
-
"opensips_reply_" <<
|
20
|
+
"opensips_reply_" << SecureRandom.hex[0,8]
|
21
21
|
else
|
22
22
|
@reply_fifo = params[:reply_fifo]
|
23
23
|
end
|
data/lib/opensips/mi/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opensips-mi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stas Kobzar
|
@@ -114,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
114
114
|
version: '0'
|
115
115
|
requirements: []
|
116
116
|
rubyforge_project:
|
117
|
-
rubygems_version: 2.0.
|
117
|
+
rubygems_version: 2.0.3
|
118
118
|
signing_key:
|
119
119
|
specification_version: 4
|
120
120
|
summary: OpenSIPs management interface
|