@jambonz/node-red-contrib-jambonz 2.2.73 → 2.3.0
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/examples/Authenticating sip devices.json +1 -0
- package/examples/Conference with LCC.json +1 -0
- package/{src/examples → examples}/Connecting to a dialogflow bot.json +0 -0
- package/examples/Create Call and Send DTMF.json +1 -0
- package/examples/Get Log Data.json +1 -0
- package/examples/Leave Queue.json +1 -0
- package/examples/SIP Responses.json +1 -0
- package/{src/examples → examples}/SIP trunking outbound call.json +0 -0
- package/examples/Simple IVR.json +1 -0
- package/examples/Simple Queue.json +1 -0
- package/examples/Using Redirect.json +1 -0
- package/examples/Voicemail using Listen into S3 bucket.json +130 -0
- package/examples/config.json +1 -0
- package/examples/gather.json +1 -0
- package/examples/lex.json +1 -0
- package/examples/messages.json +1 -0
- package/examples/rasa.json +1 -0
- package/examples/tag a call.json +1 -0
- package/package.json +52 -14
- package/resources/editor.js +414 -0
- package/src/data/recognizer.json +685 -1
- package/src/data/tts.json +2970 -1
- package/src/nodes/auth.html +108 -0
- package/src/nodes/auth.js +43 -0
- package/src/nodes/conference.html +121 -0
- package/src/nodes/conference.js +31 -0
- package/src/nodes/config.html +484 -0
- package/src/nodes/config.js +74 -0
- package/src/nodes/create_call.html +287 -0
- package/src/nodes/create_call.js +104 -0
- package/src/nodes/create_sms.html +106 -0
- package/src/nodes/create_sms.js +65 -0
- package/src/nodes/dequeue.html +102 -0
- package/src/nodes/dequeue.js +25 -0
- package/src/nodes/dial.html +619 -0
- package/src/nodes/dial.js +138 -0
- package/src/nodes/dialogflow.html +260 -0
- package/src/nodes/dialogflow.js +53 -0
- package/src/nodes/dtmf.html +74 -0
- package/src/nodes/dtmf.js +22 -0
- package/src/nodes/enqueue.html +90 -0
- package/src/nodes/enqueue.js +25 -0
- package/src/nodes/gather.html +322 -0
- package/src/nodes/gather.js +83 -0
- package/src/nodes/get_alerts.html +94 -0
- package/src/nodes/get_alerts.js +47 -0
- package/src/nodes/get_calls.html +59 -0
- package/src/nodes/get_calls.js +38 -0
- package/src/nodes/get_recent_calls.html +95 -0
- package/src/nodes/get_recent_calls.js +47 -0
- package/src/nodes/hangup.html +46 -0
- package/src/nodes/hangup.js +20 -0
- package/src/nodes/jambonz.html +63 -38
- package/src/nodes/lcc.html +256 -0
- package/src/nodes/lcc.js +102 -0
- package/src/nodes/leave.html +40 -0
- package/src/nodes/leave.js +21 -0
- package/src/nodes/lex.html +264 -0
- package/src/nodes/lex.js +75 -0
- package/src/nodes/libs.js +99 -0
- package/src/nodes/listen.html +341 -0
- package/src/nodes/listen.js +82 -0
- package/src/nodes/message.html +95 -0
- package/src/nodes/message.js +32 -0
- package/src/nodes/pause.html +62 -0
- package/src/nodes/pause.js +25 -0
- package/src/nodes/play.html +76 -0
- package/src/nodes/play.js +23 -0
- package/src/nodes/rasa.html +106 -0
- package/src/nodes/rasa.js +22 -0
- package/src/nodes/redirect.html +64 -0
- package/src/nodes/redirect.js +24 -0
- package/src/nodes/s3-upload.html +29 -14
- package/src/nodes/s3-upload.js +24 -9
- package/src/nodes/say.html +115 -0
- package/src/nodes/say.js +38 -0
- package/src/nodes/sip-decline.html +76 -0
- package/src/nodes/sip-decline.js +25 -0
- package/src/nodes/sip-refer.html +116 -0
- package/src/nodes/sip-refer.js +33 -0
- package/src/nodes/sip-request.html +96 -0
- package/src/nodes/sip-request.js +36 -0
- package/src/nodes/tag.html +60 -0
- package/src/nodes/tag.js +22 -0
- package/src/nodes/template.html +63 -0
- package/src/nodes/template.js +9 -0
- package/src/nodes/userauth.html +85 -0
- package/src/nodes/userauth.js +70 -0
- package/src/nodes/webhooks.js +0 -16
- package/src/utils/http-helpers.js +68 -0
- package/src/examples/Authenticating sip devices.json +0 -10
- package/src/nodes/http-helpers.js +0 -26
- package/src/nodes/jambonz.js +0 -1044
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
<!-- Javascript -->
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
<script type="text/javascript">
|
|
5
|
+
RED.nodes.registerType('get_recent_calls',{
|
|
6
|
+
category: 'jambonz',
|
|
7
|
+
color: '#aebfb9',
|
|
8
|
+
defaults: {
|
|
9
|
+
name: {value: ''},
|
|
10
|
+
server: {value: '', required: true, type: 'jambonz_auth'},
|
|
11
|
+
page:{value: 1},
|
|
12
|
+
pageType:{value: 'num'},
|
|
13
|
+
count:{value: 25},
|
|
14
|
+
countType:{value: 'num'},
|
|
15
|
+
days:{value: 7},
|
|
16
|
+
countType:{value: 'num'}
|
|
17
|
+
},
|
|
18
|
+
inputs:1,
|
|
19
|
+
outputs:1,
|
|
20
|
+
icon: "font-awesome/fa-cubes",
|
|
21
|
+
paletteLabel: "Get - Recent Calls",
|
|
22
|
+
label: function() { return this.name || 'Get Recent Calls';},
|
|
23
|
+
oneditprepare: () => {
|
|
24
|
+
var node = this;
|
|
25
|
+
$('#node-input-page').typedInput({
|
|
26
|
+
types: ['num', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
27
|
+
typeField: $('#node-input-pageType')
|
|
28
|
+
});
|
|
29
|
+
$('#node-input-count').typedInput({
|
|
30
|
+
types: ['num', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
31
|
+
typeField: $('#node-input-countType')
|
|
32
|
+
});
|
|
33
|
+
$('#node-input-days').typedInput({
|
|
34
|
+
types: ['num', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
35
|
+
typeField: $('#node-input-daysType')
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
</script>
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
<!-- HTML -->
|
|
45
|
+
|
|
46
|
+
<script type="text/html" data-template-name="get_recent_calls">
|
|
47
|
+
<div class="form-row">
|
|
48
|
+
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
|
|
49
|
+
<input type="text" id="node-input-name" placeholder="Name">
|
|
50
|
+
</div>
|
|
51
|
+
<div class="form-row">
|
|
52
|
+
<label for="node-input-server">Server</label>
|
|
53
|
+
<input type="text" id="node-input-server">
|
|
54
|
+
</div>
|
|
55
|
+
<div class="form-row">
|
|
56
|
+
<label for="node-input-page">Page</label>
|
|
57
|
+
<input type="text" id="node-input-page" >
|
|
58
|
+
<input type="hidden" id="node-input-pageType">
|
|
59
|
+
</div>
|
|
60
|
+
<div class="form-row">
|
|
61
|
+
<label for="node-input-count">Count</label>
|
|
62
|
+
<input type="text" id="node-input-count" >
|
|
63
|
+
<input type="hidden" id="node-input-countType">
|
|
64
|
+
</div>
|
|
65
|
+
<div class="form-row">
|
|
66
|
+
<label for="node-input-days">Days</label>
|
|
67
|
+
<input type="text" id="node-input-days" >
|
|
68
|
+
<input type="hidden" id="node-input-daysType">
|
|
69
|
+
</div>
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
</script>
|
|
73
|
+
|
|
74
|
+
<!-- Help Text -->
|
|
75
|
+
|
|
76
|
+
<script type="text/html" data-help-name="get_recent_calls">
|
|
77
|
+
<p>Get previous call records</p>
|
|
78
|
+
<h3>Properties</h3>
|
|
79
|
+
<p><code>XXXX</code> - TEXT</p>
|
|
80
|
+
|
|
81
|
+
<h3>Outputs</h3>
|
|
82
|
+
<dl class="message-properties">
|
|
83
|
+
<dt>payload<span class="property-type">object</span></dt>
|
|
84
|
+
<dd> <code>msg.payload</code> will contain ... </dd>
|
|
85
|
+
</dl>
|
|
86
|
+
|
|
87
|
+
<h3>Details</h3>
|
|
88
|
+
Call detail records are only kept in the system for 30 days. As there could be a large number of CDRs, this node allows you to query pages of data at a time.
|
|
89
|
+
|
|
90
|
+
<ul>
|
|
91
|
+
<li><a href="https://api.jambonz.org/#4e82bdc2-327b-40a5-9b52-f86357647b45">Jambonz Get Recent Calls reference</a></li>
|
|
92
|
+
</ul>
|
|
93
|
+
</script>
|
|
94
|
+
|
|
95
|
+
</script>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
var {createHash} = require('crypto');
|
|
2
|
+
const bent = require('bent');
|
|
3
|
+
var mustache = require('mustache');
|
|
4
|
+
mustache.escape = function(text) {return text;};
|
|
5
|
+
var {appendVerb, v_resolve, v_text_resolve, doLCC, doCreateCall, doCreateMessage} = require('./libs')
|
|
6
|
+
|
|
7
|
+
module.exports = function(RED) {
|
|
8
|
+
function get_recent_calls(config) {
|
|
9
|
+
RED.nodes.createNode(this, config);
|
|
10
|
+
var node = this;
|
|
11
|
+
const server = RED.nodes.getNode(config.server);
|
|
12
|
+
const {accountSid, apiToken} = server.credentials;
|
|
13
|
+
node.on('input', async(msg, send, done) => {
|
|
14
|
+
const data = {
|
|
15
|
+
page: config.page,
|
|
16
|
+
count : config.count,
|
|
17
|
+
days : config.days
|
|
18
|
+
}
|
|
19
|
+
const params = new URLSearchParams(data).toString()
|
|
20
|
+
const req = bent(`${server.url}/v1/Accounts/${accountSid}/RecentCalls?${params}`, 'GET', 'json', {
|
|
21
|
+
'Authorization': `Bearer ${apiToken}`
|
|
22
|
+
});
|
|
23
|
+
try {
|
|
24
|
+
const res = await req();
|
|
25
|
+
msg.payload = res.data
|
|
26
|
+
msg.total = res.total
|
|
27
|
+
msg.page_size = res.page_size
|
|
28
|
+
msg.page = res.page
|
|
29
|
+
} catch (err) {
|
|
30
|
+
if (err.statusCode) {
|
|
31
|
+
node.error(`create-call failed with ${err.statusCode}`);
|
|
32
|
+
msg.statusCode = err.statusCode;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
node.error(`Error getting alerts ${JSON.stringify(err)}`);
|
|
36
|
+
if (done) done(err);
|
|
37
|
+
else node.error(err, msg);
|
|
38
|
+
send(msg);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
send(msg);
|
|
43
|
+
if (done) done();
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
RED.nodes.registerType('get_recent_calls', get_recent_calls);
|
|
47
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!-- Javascript -->
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
<script type="text/javascript">
|
|
5
|
+
|
|
6
|
+
RED.nodes.registerType('hangup',{
|
|
7
|
+
category: 'jambonz',
|
|
8
|
+
color: '#bbabaa',
|
|
9
|
+
defaults: {
|
|
10
|
+
name: {value: ''},
|
|
11
|
+
},
|
|
12
|
+
inputs:1,
|
|
13
|
+
outputs:1,
|
|
14
|
+
icon: "font-awesome/fa-cubes",
|
|
15
|
+
label: function() { return this.name || 'hangup';},
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
<!-- HTML -->
|
|
23
|
+
<script type="text/html" data-template-name="hangup">
|
|
24
|
+
<div class="form-row">
|
|
25
|
+
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
|
|
26
|
+
<input type="text" id="node-input-name" placeholder="Name">
|
|
27
|
+
</div>
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<!-- Help Text -->
|
|
31
|
+
<script type="text/html" data-help-name="hangup">
|
|
32
|
+
<p>Hangup the call</p>
|
|
33
|
+
|
|
34
|
+
<h3>Outputs</h3>
|
|
35
|
+
<dl class="message-properties">
|
|
36
|
+
<dt>jambonz<span class="property-type">object</span></dt>
|
|
37
|
+
<dd> <code>msg.jambonz</code> will contain any previous actions provided to the input with the new <code>hangup</code> action appended </dd>
|
|
38
|
+
</dl>
|
|
39
|
+
|
|
40
|
+
<h3>Details</h3>
|
|
41
|
+
The hangup verb hangs up the current call.
|
|
42
|
+
<h3>References</h3>
|
|
43
|
+
<ul>
|
|
44
|
+
<li><a href="https://docs.jambonz.org/jambonz/#hangup">Jambonz hangup reference</a></li>
|
|
45
|
+
</ul>
|
|
46
|
+
</script>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
var {createHash} = require('crypto');
|
|
2
|
+
const bent = require('bent');
|
|
3
|
+
var mustache = require('mustache');
|
|
4
|
+
mustache.escape = function(text) {return text;};
|
|
5
|
+
var {appendVerb} = require('./libs')
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
module.exports = function(RED) {
|
|
9
|
+
function hangup(config) {
|
|
10
|
+
RED.nodes.createNode(this, config);
|
|
11
|
+
var node = this;
|
|
12
|
+
node.on('input', function(msg) {
|
|
13
|
+
appendVerb(msg, {
|
|
14
|
+
verb: 'hangup'
|
|
15
|
+
});
|
|
16
|
+
node.send(msg);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
RED.nodes.registerType('hangup', hangup);
|
|
20
|
+
}
|
package/src/nodes/jambonz.html
CHANGED
|
@@ -264,11 +264,11 @@
|
|
|
264
264
|
label: function() { return this.name || 'user auth';},
|
|
265
265
|
oneditprepare: function() {
|
|
266
266
|
$('#node-input-password').typedInput({
|
|
267
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
267
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
268
268
|
typeField: $('#node-input-passwordType')
|
|
269
269
|
});
|
|
270
270
|
$('#node-input-ha1').typedInput({
|
|
271
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
271
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
272
272
|
typeField: $('#node-input-ha1Type')
|
|
273
273
|
});
|
|
274
274
|
}
|
|
@@ -300,15 +300,15 @@
|
|
|
300
300
|
},
|
|
301
301
|
oneditprepare: function() {
|
|
302
302
|
$('#node-input-conference').typedInput({
|
|
303
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
303
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
304
304
|
typeField: $('#node-input-conferenceType')
|
|
305
305
|
});
|
|
306
306
|
$('#node-input-enterHook').typedInput({
|
|
307
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
307
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
308
308
|
typeField: $('#node-input-enterHookType')
|
|
309
309
|
});
|
|
310
310
|
$('#node-input-waitHook').typedInput({
|
|
311
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
311
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
312
312
|
typeField: $('#node-input-waitHookType')
|
|
313
313
|
});
|
|
314
314
|
$('#node-input-maxParticipants').typedInput({
|
|
@@ -341,15 +341,15 @@
|
|
|
341
341
|
},
|
|
342
342
|
oneditprepare: function() {
|
|
343
343
|
$('#node-input-queue').typedInput({
|
|
344
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
344
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
345
345
|
typeField: $('#node-input-queueType')
|
|
346
346
|
});
|
|
347
347
|
$('#node-input-actionHook').typedInput({
|
|
348
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
348
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
349
349
|
typeField: $('#node-input-actionHookType')
|
|
350
350
|
});
|
|
351
351
|
$('#node-input-confirmHook').typedInput({
|
|
352
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
352
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
353
353
|
typeField: $('#node-input-confirmHookType')
|
|
354
354
|
});
|
|
355
355
|
$('#node-input-timeout').typedInput({
|
|
@@ -364,7 +364,7 @@
|
|
|
364
364
|
color: '#bbabaa',
|
|
365
365
|
defaults: {
|
|
366
366
|
name: {value: ''},
|
|
367
|
-
targets:{value:[{type: 'phone', dest: '', user: '', pass: '', varType: 'str'}]},
|
|
367
|
+
targets:{value:[{type: 'phone', dest: '', user: '', pass: '', varType: 'str', trunk: ''}]},
|
|
368
368
|
headers: {value: []},
|
|
369
369
|
actionhook: {value: ''},
|
|
370
370
|
actionhookType: {value: 'str'},
|
|
@@ -420,47 +420,47 @@
|
|
|
420
420
|
oneditprepare: function() {
|
|
421
421
|
var node = this;
|
|
422
422
|
$('#node-input-callerid').typedInput({
|
|
423
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
423
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
424
424
|
typeField: $('#node-input-calleridType')
|
|
425
425
|
});
|
|
426
426
|
$('#node-input-actionhook').typedInput({
|
|
427
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
427
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
428
428
|
typeField: $('#node-input-actionhookType')
|
|
429
429
|
});
|
|
430
430
|
$('#node-input-confirmhook').typedInput({
|
|
431
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
431
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
432
432
|
typeField: $('#node-input-confirmhookType')
|
|
433
433
|
});
|
|
434
434
|
$('#node-input-dialmusic').typedInput({
|
|
435
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
435
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
436
436
|
typeField: $('#node-input-dialmusicType')
|
|
437
437
|
});
|
|
438
438
|
$('#node-input-dtmfcapture').typedInput({
|
|
439
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
439
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
440
440
|
typeField: $('#node-input-dtmfcaptureType')
|
|
441
441
|
});
|
|
442
442
|
$('#node-input-dtmfhook').typedInput({
|
|
443
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
443
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
444
444
|
typeField: $('#node-input-dtmfhookType')
|
|
445
445
|
});
|
|
446
446
|
$('#node-input-transcribeurl').typedInput({
|
|
447
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
447
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
448
448
|
typeField: $('#node-input-transcribeurlType')
|
|
449
449
|
});
|
|
450
450
|
$('#node-input-listenurl').typedInput({
|
|
451
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
451
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
452
452
|
typeField: $('#node-input-listenurlType')
|
|
453
453
|
});
|
|
454
454
|
$('#node-input-transcriptionhook').typedInput({
|
|
455
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
455
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
456
456
|
typeField: $('#node-input-transcriptionhookType')
|
|
457
457
|
});
|
|
458
458
|
$('#node-input-transcriptionhints').typedInput({
|
|
459
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
459
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
460
460
|
typeField: $('#node-input-transcriptionhintsType')
|
|
461
461
|
});
|
|
462
462
|
$('#node-input-recognizeraltlang').typedInput({
|
|
463
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
463
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
464
464
|
typeField: $('#node-recognizeraltlangType')
|
|
465
465
|
});
|
|
466
466
|
$('#node-input-diarizationmin').typedInput({
|
|
@@ -502,6 +502,7 @@
|
|
|
502
502
|
var row2 = $('<div/>',{style:"display:flex;margin-top:8px;"}).appendTo(fragment);
|
|
503
503
|
var row3 = $('<div/>',{style:"margin-top:8px;"}).appendTo(fragment);
|
|
504
504
|
var row4 = $('<div/>',{style:"display:flex;margin-top:8px;"}).appendTo(fragment);
|
|
505
|
+
var row5 = $('<div/>',{style:"margin-top:8px;"}).appendTo(fragment);
|
|
505
506
|
|
|
506
507
|
var selectField = $('<select/>',{class:"node-input-target-type",style:"width:110px; margin-right:10px;"})
|
|
507
508
|
.appendTo(row1);
|
|
@@ -531,6 +532,16 @@
|
|
|
531
532
|
placeholder: '(if required by remote endpoint)'
|
|
532
533
|
})
|
|
533
534
|
.appendTo(row3);
|
|
535
|
+
|
|
536
|
+
$('<label style="padding-top:8px; padding-right:20px">Trunk:</label>')
|
|
537
|
+
.appendTo(row5);
|
|
538
|
+
|
|
539
|
+
$('<input/>',{
|
|
540
|
+
class:"node-input-target-property-trunk",
|
|
541
|
+
type:"text",
|
|
542
|
+
placeholder: 'Specify the name of the trunk used for this outbound call'
|
|
543
|
+
})
|
|
544
|
+
.appendTo(row5);
|
|
534
545
|
|
|
535
546
|
selectField.on('change', function() {
|
|
536
547
|
var type = $(this).val();
|
|
@@ -559,6 +570,12 @@
|
|
|
559
570
|
row2.show();
|
|
560
571
|
row3.show();
|
|
561
572
|
}
|
|
573
|
+
|
|
574
|
+
if(type !== 'phone') {
|
|
575
|
+
row5.hide();
|
|
576
|
+
} else {
|
|
577
|
+
row5.show();
|
|
578
|
+
}
|
|
562
579
|
});
|
|
563
580
|
selectField.val(target.type);
|
|
564
581
|
propertyName.typedInput('value', target.dest);
|
|
@@ -567,10 +584,13 @@
|
|
|
567
584
|
var datafield = row1.find('.node-input-target-property-name');
|
|
568
585
|
var userfield = row2.find('.node-input-target-property-authuser');
|
|
569
586
|
var passfield = row3.find('.node-input-target-property-authpassword');
|
|
587
|
+
var trunkfield = row5.find('.node-input-target-property-trunk');
|
|
570
588
|
|
|
571
589
|
datafield.typedInput('type', target.varType);
|
|
572
590
|
|
|
573
591
|
switch (target.type) {
|
|
592
|
+
case 'phone':
|
|
593
|
+
trunkfield.val(target.trunk);
|
|
574
594
|
case 'sip':
|
|
575
595
|
userfield.val(target.user);
|
|
576
596
|
passfield.val(target.pass);
|
|
@@ -591,6 +611,7 @@
|
|
|
591
611
|
dest: '',
|
|
592
612
|
user: '',
|
|
593
613
|
pass: '',
|
|
614
|
+
trunk: '',
|
|
594
615
|
varType: 'str'
|
|
595
616
|
}
|
|
596
617
|
this.targets = [target];
|
|
@@ -660,6 +681,7 @@
|
|
|
660
681
|
var dest = target.find('.node-input-target-property-name').typedInput('value');
|
|
661
682
|
var user = target.find('.node-input-target-property-authuser').val();
|
|
662
683
|
var pass = target.find('.node-input-target-property-authpassword').val();
|
|
684
|
+
var trunk = target.find('.node-input-target-property-trunk').val();
|
|
663
685
|
if (!['phone', 'user', 'sip', 'teams'].includes(type) || 0 === dest.length) return;
|
|
664
686
|
|
|
665
687
|
var t = {
|
|
@@ -670,6 +692,9 @@
|
|
|
670
692
|
if ('sip' === type && user.length > 0 && pass.length > 0) {
|
|
671
693
|
Object.assign(t, {user, pass});
|
|
672
694
|
}
|
|
695
|
+
if ('phone' === type && trunk.length > 0) {
|
|
696
|
+
t.trunk = trunk;
|
|
697
|
+
}
|
|
673
698
|
node.targets.push(t);
|
|
674
699
|
});
|
|
675
700
|
console.log(`saved targets ${JSON.stringify(node.targets)}`);
|
|
@@ -818,15 +843,15 @@
|
|
|
818
843
|
},
|
|
819
844
|
oneditprepare: function() {
|
|
820
845
|
$('#node-input-queue').typedInput({
|
|
821
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
846
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
822
847
|
typeField: $('#node-input-queueType')
|
|
823
848
|
});
|
|
824
849
|
$('#node-input-actionHook').typedInput({
|
|
825
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
850
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
826
851
|
typeField: $('#node-input-actionHookType')
|
|
827
852
|
});
|
|
828
853
|
$('#node-input-waitHook').typedInput({
|
|
829
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
854
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
830
855
|
typeField: $('#node-input-waitHookType')
|
|
831
856
|
});
|
|
832
857
|
}
|
|
@@ -890,15 +915,15 @@
|
|
|
890
915
|
prepareSttControls(node);
|
|
891
916
|
|
|
892
917
|
$('#node-input-playurl').typedInput({
|
|
893
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
918
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
894
919
|
typeField: $('#node-input-playurlType')
|
|
895
920
|
});
|
|
896
921
|
$('#node-input-transcriptionhints').typedInput({
|
|
897
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
922
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
898
923
|
typeField: $('#node-input-transcriptionhintsType')
|
|
899
924
|
});
|
|
900
925
|
$('#node-input-recognizeraltlang').typedInput({
|
|
901
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
926
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
902
927
|
typeField: $('#node-recognizeraltlangType')
|
|
903
928
|
});
|
|
904
929
|
$('#node-input-naics').typedInput({
|
|
@@ -1015,19 +1040,19 @@
|
|
|
1015
1040
|
prepareTtsControls(node);
|
|
1016
1041
|
|
|
1017
1042
|
$('#node-input-bot').typedInput({
|
|
1018
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
1043
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
1019
1044
|
typeField: $('#node-input-botType')
|
|
1020
1045
|
});
|
|
1021
1046
|
$('#node-input-alias').typedInput({
|
|
1022
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
1047
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
1023
1048
|
typeField: $('#node-input-aliasType')
|
|
1024
1049
|
});
|
|
1025
1050
|
$('#node-input-locale').typedInput({
|
|
1026
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
1051
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
1027
1052
|
typeField: $('#node-input-localeType')
|
|
1028
1053
|
});
|
|
1029
1054
|
$('#node-input-intent').typedInput({
|
|
1030
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
1055
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
1031
1056
|
typeField: $('#node-input-intentType')
|
|
1032
1057
|
});
|
|
1033
1058
|
$('#node-input-inputTimeout').typedInput({
|
|
@@ -1123,19 +1148,19 @@
|
|
|
1123
1148
|
oneditprepare: function() {
|
|
1124
1149
|
var node = this;
|
|
1125
1150
|
$('#node-input-actionhook').typedInput({
|
|
1126
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
1151
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
1127
1152
|
typeField: $('#node-input-actionhookType')
|
|
1128
1153
|
});
|
|
1129
1154
|
$('#node-input-url').typedInput({
|
|
1130
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
1155
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
1131
1156
|
typeField: $('#node-input-urlType')
|
|
1132
1157
|
});
|
|
1133
1158
|
$('#node-input-authuser').typedInput({
|
|
1134
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
1159
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
1135
1160
|
typeField: $('#node-input-authuserType')
|
|
1136
1161
|
});
|
|
1137
1162
|
$('#node-input-authpassword').typedInput({
|
|
1138
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
1163
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
1139
1164
|
typeField: $('#node-input-authpasswordType')
|
|
1140
1165
|
});
|
|
1141
1166
|
$('#node-input-metadata').typedInput({
|
|
@@ -1143,15 +1168,15 @@
|
|
|
1143
1168
|
typeField: $('#node-input-metadataType')
|
|
1144
1169
|
});
|
|
1145
1170
|
$('#node-input-transcriptionhook').typedInput({
|
|
1146
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
1171
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
1147
1172
|
typeField: $('#node-input-transcriptionhookType')
|
|
1148
1173
|
});
|
|
1149
1174
|
$('#node-input-transcriptionhints').typedInput({
|
|
1150
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
1175
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
1151
1176
|
typeField: $('#node-input-transcriptionhintsType')
|
|
1152
1177
|
});
|
|
1153
1178
|
$('#node-input-recognizeraltlang').typedInput({
|
|
1154
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
1179
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
1155
1180
|
typeField: $('#node-recognizeraltlangType')
|
|
1156
1181
|
});
|
|
1157
1182
|
$('#node-input-diarizationmin').typedInput({
|
|
@@ -1278,7 +1303,7 @@
|
|
|
1278
1303
|
},
|
|
1279
1304
|
oneditprepare: function() {
|
|
1280
1305
|
$('#node-input-hook').typedInput({
|
|
1281
|
-
types: ['str', 'msg', 'flow', 'global'],
|
|
1306
|
+
types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env'],
|
|
1282
1307
|
typeField: $('#node-input-hookType')
|
|
1283
1308
|
});
|
|
1284
1309
|
}
|