sip-lab 1.7.0 → 1.7.1
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.
- package/package.json +4 -4
- package/samples/register_subscribe.js +138 -0
- package/src/addon.cpp +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sip-lab",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"engines": {
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
"node-gyp": "^8.4.1"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"data-matching": "^1.23.
|
|
26
|
-
"sip-matching": "^1.3.
|
|
27
|
-
"string-matching": "^1.11.
|
|
25
|
+
"data-matching": "^1.23.8",
|
|
26
|
+
"sip-matching": "^1.3.13",
|
|
27
|
+
"string-matching": "^1.11.9",
|
|
28
28
|
"zester": "^4.1.1"
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
var sip = require ('../index.js')
|
|
2
|
+
var Zester = require('zester')
|
|
3
|
+
var z = new Zester()
|
|
4
|
+
var m = require('data-matching')
|
|
5
|
+
var sip_msg = require('sip-matching')
|
|
6
|
+
|
|
7
|
+
async function test() {
|
|
8
|
+
//sip.set_log_level(6)
|
|
9
|
+
sip.dtmf_aggregation_on(500)
|
|
10
|
+
|
|
11
|
+
z.trap_events(sip.event_source, 'event', (evt) => {
|
|
12
|
+
var e = evt.args[0]
|
|
13
|
+
return e
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
console.log(sip.start((data) => { console.log(data)} ))
|
|
17
|
+
|
|
18
|
+
t1 = sip.transport.create("127.0.0.1", 5090, 1)
|
|
19
|
+
t2 = sip.transport.create("127.0.0.1", 5092, 1)
|
|
20
|
+
|
|
21
|
+
console.log("t1", t1)
|
|
22
|
+
console.log("t2", t2)
|
|
23
|
+
|
|
24
|
+
var server = `${t2.ip}:${t2.port}`
|
|
25
|
+
var domain = 'test1.com'
|
|
26
|
+
|
|
27
|
+
var a1 = sip.account.create(t1.id, domain, server, 'user1', 'pass1')
|
|
28
|
+
|
|
29
|
+
sip.account.register(a1, true)
|
|
30
|
+
|
|
31
|
+
await z.wait([
|
|
32
|
+
{
|
|
33
|
+
event: 'non_dialog_request',
|
|
34
|
+
msg: sip_msg({
|
|
35
|
+
$rm: 'REGISTER',
|
|
36
|
+
$fU: 'user1',
|
|
37
|
+
$fd: domain,
|
|
38
|
+
$tU: 'user1',
|
|
39
|
+
$td: domain,
|
|
40
|
+
}),
|
|
41
|
+
},
|
|
42
|
+
], 1000)
|
|
43
|
+
|
|
44
|
+
// sip-lab automatically replies with '200 OK' to non_dialog_request.
|
|
45
|
+
|
|
46
|
+
await z.wait([
|
|
47
|
+
{
|
|
48
|
+
event: 'registration_status',
|
|
49
|
+
account_id: a1.id,
|
|
50
|
+
code: 200,
|
|
51
|
+
reason: 'OK',
|
|
52
|
+
expires: 60
|
|
53
|
+
},
|
|
54
|
+
], 1000)
|
|
55
|
+
|
|
56
|
+
const s1 = sip.subscription_create(t1.id, 'dialog', 'application/dialog-info+xml', '<sip:user1@test1.com>', '<sip:user1@test1.com>', 'sip:park1@test1.com', `sip:${server}`, 'test1.com', 'user1', 'user1')
|
|
57
|
+
|
|
58
|
+
sip.subscription_subscribe(s1, 120)
|
|
59
|
+
|
|
60
|
+
await z.wait([
|
|
61
|
+
{
|
|
62
|
+
event: 'request',
|
|
63
|
+
subscriber_id: m.collect('subscriber_id'),
|
|
64
|
+
msg: sip_msg({
|
|
65
|
+
$rm: 'SUBSCRIBE',
|
|
66
|
+
$ru: 'sip:park1@test1.com',
|
|
67
|
+
$fU: 'user1',
|
|
68
|
+
$fd: domain,
|
|
69
|
+
'$hdr(Event)': 'dialog',
|
|
70
|
+
'$hdr(Accept)': 'application/dialog-info+xml',
|
|
71
|
+
'$hdr(Allow-Events)': 'refer, dialog',
|
|
72
|
+
})
|
|
73
|
+
},
|
|
74
|
+
], 1000)
|
|
75
|
+
|
|
76
|
+
var subscriber_id = z.store.subscriber_id
|
|
77
|
+
|
|
78
|
+
await z.wait([
|
|
79
|
+
{
|
|
80
|
+
event: 'response',
|
|
81
|
+
subscription_id: subscriber_id,
|
|
82
|
+
method: 'SUBSCRIBE',
|
|
83
|
+
msg: sip_msg({
|
|
84
|
+
$rs: '200',
|
|
85
|
+
$rr: 'OK',
|
|
86
|
+
})
|
|
87
|
+
},
|
|
88
|
+
], 1000)
|
|
89
|
+
|
|
90
|
+
await z.wait([
|
|
91
|
+
{
|
|
92
|
+
subscription_id: s1,
|
|
93
|
+
msg: sip_msg({
|
|
94
|
+
$rm: 'NOTIFY',
|
|
95
|
+
'$hdr(Event)': 'dialog',
|
|
96
|
+
'$hdr(Subscription-State)': 'active;expires=120',
|
|
97
|
+
'$hdr(Allow-Events)': 'refer, dialog',
|
|
98
|
+
}),
|
|
99
|
+
},
|
|
100
|
+
], 1000)
|
|
101
|
+
|
|
102
|
+
sip.account.unregister(a1)
|
|
103
|
+
|
|
104
|
+
await z.wait([
|
|
105
|
+
{
|
|
106
|
+
event: 'non_dialog_request',
|
|
107
|
+
msg: sip_msg({
|
|
108
|
+
$rm: 'REGISTER',
|
|
109
|
+
$fU: 'user1',
|
|
110
|
+
$fd: domain,
|
|
111
|
+
$tU: 'user1',
|
|
112
|
+
$td: domain,
|
|
113
|
+
}),
|
|
114
|
+
},
|
|
115
|
+
], 1000)
|
|
116
|
+
|
|
117
|
+
await z.wait([
|
|
118
|
+
{
|
|
119
|
+
event: 'registration_status',
|
|
120
|
+
account_id: a1.id,
|
|
121
|
+
code: 200,
|
|
122
|
+
reason: 'OK',
|
|
123
|
+
expires: 0,
|
|
124
|
+
},
|
|
125
|
+
], 1000)
|
|
126
|
+
|
|
127
|
+
console.log("Success")
|
|
128
|
+
|
|
129
|
+
sip.stop()
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
test()
|
|
134
|
+
.catch(e => {
|
|
135
|
+
console.error(e)
|
|
136
|
+
process.exit(1)
|
|
137
|
+
})
|
|
138
|
+
|
package/src/addon.cpp
CHANGED
|
@@ -1209,7 +1209,7 @@ Napi::Value subscription_create(const Napi::CallbackInfo& info) {
|
|
|
1209
1209
|
Napi::Value subscription_subscribe(const Napi::CallbackInfo& info) {
|
|
1210
1210
|
Napi::Env env = info.Env();
|
|
1211
1211
|
|
|
1212
|
-
if (info.Length() <
|
|
1212
|
+
if (info.Length() < 2) {
|
|
1213
1213
|
Napi::Error::New(env, "Wrong number of arguments. Expected: subscription_id, expires [, additional_headers]").ThrowAsJavaScriptException();
|
|
1214
1214
|
return env.Null();
|
|
1215
1215
|
}
|