sip-lab 1.28.0 → 1.28.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.
package/README.md CHANGED
@@ -40,7 +40,7 @@ npm install sip-lab
40
40
 
41
41
  Then run some sample script from subfolder samples:
42
42
  ```
43
- node samples/simple.js
43
+ node node_modules/sip-lab/samples/simple.js
44
44
  ```
45
45
 
46
46
  The above script has detailed comments.
@@ -56,7 +56,7 @@ There are additional samples scripts in folder samples_extra but they require [w
56
56
 
57
57
  To run ws_speech_server, do this:
58
58
  ```
59
- https://github.com/MayamaTakeshi/ws_speech_server
59
+ git clone https://github.com/MayamaTakeshi/ws_speech_server
60
60
  cd ws_speech_server
61
61
  npm i
62
62
  npm run build
@@ -67,11 +67,11 @@ node src/App.bs.js
67
67
 
68
68
  Then you should be able to test with dtmf language:
69
69
  ```
70
- node samples_extra/ws_speech_server.dtmf.js
70
+ node node_modules/sip-lab/samples_extra/ws_speech_server.dtmf.js
71
71
  ```
72
72
  or with google speech service:
73
73
  ```
74
- node samples_extra/ws_speech_server.google.js
74
+ node node_modules/sip-lab/samples_extra/ws_speech_server.google.js
75
75
  ```
76
76
 
77
77
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sip-lab",
3
- "version": "1.28.0",
3
+ "version": "1.28.2",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "engines": {
@@ -44,6 +44,7 @@
44
44
  "README.md",
45
45
  "DEV.md",
46
46
  "samples",
47
+ "samples_extra",
47
48
  "prebuilds",
48
49
  "pocketsphinx",
49
50
  "runtests"
@@ -0,0 +1,194 @@
1
+ var sip = require ('../index.js')
2
+ var Zeq = require('@mayama/zeq')
3
+ var z = new Zeq()
4
+ var m = require('data-matching')
5
+ var sip_msg = require('sip-matching')
6
+ var sdp = require('sdp-matching')
7
+
8
+ async function test() {
9
+ //sip.set_log_level(6)
10
+ sip.dtmf_aggregation_on(500)
11
+
12
+ sip.set_codecs("PCMU/8000/1:128")
13
+
14
+ z.trap_events(sip.event_source, 'event', (evt) => {
15
+ var e = evt.args[0]
16
+ return e
17
+ })
18
+
19
+ console.log(sip.start((data) => { console.log(data)} ))
20
+
21
+ t1 = sip.transport.create({address: "127.0.0.1", type: 'tcp'})
22
+ t2 = sip.transport.create({address: "127.0.0.1", type: 'tcp'})
23
+
24
+ console.log("t1", t1)
25
+ console.log("t2", t2)
26
+
27
+ oc = sip.call.create(t1.id, {
28
+ from_uri: '"abc"<sip:alice@test.com>',
29
+ to_uri: `sip:bob@${t2.address}:${t2.port}`,
30
+ headers: {
31
+ 'X-MyHeader1': 'abc',
32
+ 'X-MyHeader2': 'def',
33
+ },
34
+ })
35
+
36
+ await z.wait([
37
+ {
38
+ event: "incoming_call",
39
+ call_id: m.collect("call_id"),
40
+ msg: sip_msg({
41
+ $rm: 'INVITE',
42
+ $fU: 'alice',
43
+ $fd: 'test.com',
44
+ $tU: 'bob',
45
+ '$hdr(X-MyHeader1)': 'abc',
46
+ 'hdr_x_myheader2': 'def',
47
+ }),
48
+ },
49
+ {
50
+ event: 'response',
51
+ call_id: oc.id,
52
+ method: 'INVITE',
53
+ msg: sip_msg({
54
+ $rs: '100',
55
+ $rr: 'Trying',
56
+ '$(hdrcnt(via))': 1,
57
+ 'hdr_call_id': m.collect('sip_call_id'),
58
+ $fU: 'alice',
59
+ $fd: 'test.com',
60
+ $tU: 'bob',
61
+ '$hdr(l)': '0',
62
+ }),
63
+ },
64
+ ], 1000)
65
+
66
+ ic = {
67
+ id: z.store.call_id,
68
+ sip_call_id: z.store.sip_call_id,
69
+ }
70
+
71
+ sip.call.respond(ic.id, {
72
+ code: 200,
73
+ reason:'OK',
74
+ headers: {
75
+ 'X-MyHeader3': 'ghi',
76
+ 'X-MyHeader4': 'jkl',
77
+ },
78
+ })
79
+
80
+ await z.wait([
81
+ {
82
+ event: 'media_update',
83
+ call_id: oc.id,
84
+ status: 'ok',
85
+ },
86
+ {
87
+ event: 'media_update',
88
+ call_id: ic.id,
89
+ status: 'ok',
90
+ },
91
+ {
92
+ event: 'response',
93
+ call_id: oc.id,
94
+ method: 'INVITE',
95
+ msg: sip_msg({
96
+ $rs: '200',
97
+ $rr: 'OK',
98
+ '$(hdrcnt(v))': 1,
99
+ $fU: 'alice',
100
+ $fd: 'test.com',
101
+ $tU: 'bob',
102
+ '$hdr(content-type)': 'application/sdp',
103
+ $rb: '!{_}a=sendrecv',
104
+ '$hdr(X-MyHeader3)': 'ghi',
105
+ '$hdr(X-MyHeader4)': 'jkl',
106
+ }),
107
+ },
108
+ ], 1000)
109
+
110
+ sip.call.start_record_wav(oc.id, {file: './oc.wav'})
111
+ sip.call.start_record_wav(ic.id, {file: './ic.wav'})
112
+
113
+ sip.call.start_speech_synth(oc.id, {server_url: 'ws://0.0.0.0:8080', engine: 'dtmf-gen', voice: 'dtmf', language: 'dtmf', text: 'abcd', times: 1})
114
+ sip.call.start_speech_synth(ic.id, {server_url: 'ws://0.0.0.0:8080', engine: 'dtmf-gen', voice: 'dtmf', language: 'dtmf', text: 'dcba', times: 1})
115
+
116
+ sip.call.start_speech_recog(oc.id, {server_url: 'ws://0.0.0.0:8080', engine: 'dtmf-det', language: 'dtmf'})
117
+ sip.call.start_speech_recog(ic.id, {server_url: 'ws://0.0.0.0:8080', engine: 'dtmf-det', language: 'dtmf'})
118
+
119
+ await z.wait([
120
+ {
121
+ event: 'speech_synth_complete',
122
+ call_id: ic.id,
123
+ },
124
+ {
125
+ event: 'speech_synth_complete',
126
+ call_id: oc.id,
127
+ },
128
+ {
129
+ event: 'dtmf',
130
+ call_id: oc.id,
131
+ digits: 'dcba',
132
+ mode: 1,
133
+ media_id: 0
134
+ },
135
+ {
136
+ event: 'dtmf',
137
+ call_id: ic.id,
138
+ digits: 'abcd',
139
+ mode: 1,
140
+ media_id: 0
141
+ },
142
+ {
143
+ event: 'speech',
144
+ call_id: oc.id,
145
+ transcript: 'dcba'
146
+ },
147
+ {
148
+ event: 'speech',
149
+ call_id: ic.id,
150
+ transcript: 'abcd'
151
+ },
152
+ ], 3000)
153
+
154
+ await z.sleep(1000)
155
+
156
+ sip.call.stop_record_wav(oc.id)
157
+ sip.call.stop_record_wav(ic.id)
158
+
159
+ sip.call.terminate(oc.id)
160
+
161
+ await z.wait([
162
+ {
163
+ event: 'call_ended',
164
+ call_id: oc.id,
165
+ },
166
+ {
167
+ event: 'call_ended',
168
+ call_id: ic.id,
169
+ },
170
+ {
171
+ event: 'response',
172
+ call_id: oc.id,
173
+ method: 'BYE',
174
+ msg: sip_msg({
175
+ $rs: '200',
176
+ $rr: 'OK',
177
+ }),
178
+ },
179
+ ], 1000)
180
+
181
+ await z.sleep(100)
182
+
183
+ console.log("Success")
184
+
185
+ sip.stop()
186
+ }
187
+
188
+
189
+ test()
190
+ .catch(e => {
191
+ console.error(e)
192
+ process.exit(1)
193
+ })
194
+
@@ -0,0 +1,190 @@
1
+ var sip = require ('../index.js')
2
+ var Zeq = require('@mayama/zeq')
3
+ var z = new Zeq()
4
+ var m = require('data-matching')
5
+ var sip_msg = require('sip-matching')
6
+ var sdp = require('sdp-matching')
7
+
8
+ async function test() {
9
+ //sip.set_log_level(6)
10
+ sip.dtmf_aggregation_on(500)
11
+
12
+ sip.set_codecs("PCMU/8000/1:128")
13
+
14
+ z.trap_events(sip.event_source, 'event', (evt) => {
15
+ var e = evt.args[0]
16
+ return e
17
+ })
18
+
19
+ console.log(sip.start((data) => { console.log(data)} ))
20
+
21
+ t1 = sip.transport.create({address: "127.0.0.1", type: 'tcp'})
22
+ t2 = sip.transport.create({address: "127.0.0.1", type: 'tcp'})
23
+
24
+ console.log("t1", t1)
25
+ console.log("t2", t2)
26
+
27
+ oc = sip.call.create(t1.id, {
28
+ from_uri: '"abc"<sip:alice@test.com>',
29
+ to_uri: `sip:bob@${t2.address}:${t2.port}`,
30
+ headers: {
31
+ 'X-MyHeader1': 'abc',
32
+ 'X-MyHeader2': 'def',
33
+ },
34
+ })
35
+
36
+ await z.wait([
37
+ {
38
+ event: "incoming_call",
39
+ call_id: m.collect("call_id"),
40
+ msg: sip_msg({
41
+ $rm: 'INVITE',
42
+ $fU: 'alice',
43
+ $fd: 'test.com',
44
+ $tU: 'bob',
45
+ '$hdr(X-MyHeader1)': 'abc',
46
+ 'hdr_x_myheader2': 'def',
47
+ }),
48
+ },
49
+ {
50
+ event: 'response',
51
+ call_id: oc.id,
52
+ method: 'INVITE',
53
+ msg: sip_msg({
54
+ $rs: '100',
55
+ $rr: 'Trying',
56
+ '$(hdrcnt(via))': 1,
57
+ 'hdr_call_id': m.collect('sip_call_id'),
58
+ $fU: 'alice',
59
+ $fd: 'test.com',
60
+ $tU: 'bob',
61
+ '$hdr(l)': '0',
62
+ }),
63
+ },
64
+ ], 1000)
65
+
66
+ ic = {
67
+ id: z.store.call_id,
68
+ sip_call_id: z.store.sip_call_id,
69
+ }
70
+
71
+ sip.call.respond(ic.id, {
72
+ code: 200,
73
+ reason:'OK',
74
+ headers: {
75
+ 'X-MyHeader3': 'ghi',
76
+ 'X-MyHeader4': 'jkl',
77
+ },
78
+ })
79
+
80
+ await z.wait([
81
+ {
82
+ event: 'media_update',
83
+ call_id: oc.id,
84
+ status: 'ok',
85
+ },
86
+ {
87
+ event: 'media_update',
88
+ call_id: ic.id,
89
+ status: 'ok',
90
+ },
91
+ {
92
+ event: 'response',
93
+ call_id: oc.id,
94
+ method: 'INVITE',
95
+ msg: sip_msg({
96
+ $rs: '200',
97
+ $rr: 'OK',
98
+ '$(hdrcnt(v))': 1,
99
+ $fU: 'alice',
100
+ $fd: 'test.com',
101
+ $tU: 'bob',
102
+ '$hdr(content-type)': 'application/sdp',
103
+ $rb: '!{_}a=sendrecv',
104
+ '$hdr(X-MyHeader3)': 'ghi',
105
+ '$hdr(X-MyHeader4)': 'jkl',
106
+ }),
107
+ },
108
+ ], 1000)
109
+
110
+ await z.sleep(200)
111
+
112
+ sip.call.start_record_wav(oc.id, {file: './oc.wav'})
113
+ sip.call.start_record_wav(ic.id, {file: './ic.wav'})
114
+
115
+ sip.call.start_speech_synth(oc.id, {server_url: 'ws://0.0.0.0:8080', engine: 'gss', voice: 'en-US-Standard-E', language: 'en-US', text: 'hello world', times: 1})
116
+ sip.call.start_speech_synth(ic.id, {server_url: 'ws://0.0.0.0:8080', engine: 'gss', voice: 'en-US-Standard-F', language: 'en-US', text: '<speak>Good morning<break time="2s"/>Good Afternoon</speak>', times: 1})
117
+
118
+ sip.call.start_speech_recog(oc.id, {server_url: 'ws://0.0.0.0:8080', engine: 'gsr', language: 'en-US'})
119
+ sip.call.start_speech_recog(ic.id, {server_url: 'ws://0.0.0.0:8080', engine: 'gsr', language: 'en-US'})
120
+
121
+ await z.wait([
122
+ {
123
+ event: 'speech_synth_complete',
124
+ call_id: ic.id,
125
+ },
126
+ {
127
+ event: 'speech_synth_complete',
128
+ call_id: oc.id,
129
+ },
130
+ {
131
+ event: 'speech',
132
+ call_id: oc.id,
133
+ transcript: 'good morning',
134
+ },
135
+ {
136
+ event: 'speech',
137
+ call_id: ic.id,
138
+ transcript: 'hello world',
139
+ },
140
+ ], 4000)
141
+
142
+ await z.wait([
143
+ {
144
+ event: 'speech',
145
+ call_id: oc.id,
146
+ transcript: ' good afternoon',
147
+ },
148
+ ], 4000)
149
+
150
+ await z.sleep(1000)
151
+
152
+ sip.call.stop_record_wav(oc.id)
153
+ sip.call.stop_record_wav(ic.id)
154
+
155
+ sip.call.terminate(oc.id)
156
+
157
+ await z.wait([
158
+ {
159
+ event: 'call_ended',
160
+ call_id: oc.id,
161
+ },
162
+ {
163
+ event: 'call_ended',
164
+ call_id: ic.id,
165
+ },
166
+ {
167
+ event: 'response',
168
+ call_id: oc.id,
169
+ method: 'BYE',
170
+ msg: sip_msg({
171
+ $rs: '200',
172
+ $rr: 'OK',
173
+ }),
174
+ },
175
+ ], 1000)
176
+
177
+ await z.sleep(100)
178
+
179
+ console.log("Success")
180
+
181
+ sip.stop()
182
+ }
183
+
184
+
185
+ test()
186
+ .catch(e => {
187
+ console.error(e)
188
+ process.exit(1)
189
+ })
190
+