@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.
Files changed (93) hide show
  1. package/examples/Authenticating sip devices.json +1 -0
  2. package/examples/Conference with LCC.json +1 -0
  3. package/{src/examples → examples}/Connecting to a dialogflow bot.json +0 -0
  4. package/examples/Create Call and Send DTMF.json +1 -0
  5. package/examples/Get Log Data.json +1 -0
  6. package/examples/Leave Queue.json +1 -0
  7. package/examples/SIP Responses.json +1 -0
  8. package/{src/examples → examples}/SIP trunking outbound call.json +0 -0
  9. package/examples/Simple IVR.json +1 -0
  10. package/examples/Simple Queue.json +1 -0
  11. package/examples/Using Redirect.json +1 -0
  12. package/examples/Voicemail using Listen into S3 bucket.json +130 -0
  13. package/examples/config.json +1 -0
  14. package/examples/gather.json +1 -0
  15. package/examples/lex.json +1 -0
  16. package/examples/messages.json +1 -0
  17. package/examples/rasa.json +1 -0
  18. package/examples/tag a call.json +1 -0
  19. package/package.json +52 -14
  20. package/resources/editor.js +414 -0
  21. package/src/data/recognizer.json +685 -1
  22. package/src/data/tts.json +2970 -1
  23. package/src/nodes/auth.html +108 -0
  24. package/src/nodes/auth.js +43 -0
  25. package/src/nodes/conference.html +121 -0
  26. package/src/nodes/conference.js +31 -0
  27. package/src/nodes/config.html +484 -0
  28. package/src/nodes/config.js +74 -0
  29. package/src/nodes/create_call.html +287 -0
  30. package/src/nodes/create_call.js +104 -0
  31. package/src/nodes/create_sms.html +106 -0
  32. package/src/nodes/create_sms.js +65 -0
  33. package/src/nodes/dequeue.html +102 -0
  34. package/src/nodes/dequeue.js +25 -0
  35. package/src/nodes/dial.html +619 -0
  36. package/src/nodes/dial.js +138 -0
  37. package/src/nodes/dialogflow.html +260 -0
  38. package/src/nodes/dialogflow.js +53 -0
  39. package/src/nodes/dtmf.html +74 -0
  40. package/src/nodes/dtmf.js +22 -0
  41. package/src/nodes/enqueue.html +90 -0
  42. package/src/nodes/enqueue.js +25 -0
  43. package/src/nodes/gather.html +322 -0
  44. package/src/nodes/gather.js +83 -0
  45. package/src/nodes/get_alerts.html +94 -0
  46. package/src/nodes/get_alerts.js +47 -0
  47. package/src/nodes/get_calls.html +59 -0
  48. package/src/nodes/get_calls.js +38 -0
  49. package/src/nodes/get_recent_calls.html +95 -0
  50. package/src/nodes/get_recent_calls.js +47 -0
  51. package/src/nodes/hangup.html +46 -0
  52. package/src/nodes/hangup.js +20 -0
  53. package/src/nodes/jambonz.html +63 -38
  54. package/src/nodes/lcc.html +256 -0
  55. package/src/nodes/lcc.js +102 -0
  56. package/src/nodes/leave.html +40 -0
  57. package/src/nodes/leave.js +21 -0
  58. package/src/nodes/lex.html +264 -0
  59. package/src/nodes/lex.js +75 -0
  60. package/src/nodes/libs.js +99 -0
  61. package/src/nodes/listen.html +341 -0
  62. package/src/nodes/listen.js +82 -0
  63. package/src/nodes/message.html +95 -0
  64. package/src/nodes/message.js +32 -0
  65. package/src/nodes/pause.html +62 -0
  66. package/src/nodes/pause.js +25 -0
  67. package/src/nodes/play.html +76 -0
  68. package/src/nodes/play.js +23 -0
  69. package/src/nodes/rasa.html +106 -0
  70. package/src/nodes/rasa.js +22 -0
  71. package/src/nodes/redirect.html +64 -0
  72. package/src/nodes/redirect.js +24 -0
  73. package/src/nodes/s3-upload.html +29 -14
  74. package/src/nodes/s3-upload.js +24 -9
  75. package/src/nodes/say.html +115 -0
  76. package/src/nodes/say.js +38 -0
  77. package/src/nodes/sip-decline.html +76 -0
  78. package/src/nodes/sip-decline.js +25 -0
  79. package/src/nodes/sip-refer.html +116 -0
  80. package/src/nodes/sip-refer.js +33 -0
  81. package/src/nodes/sip-request.html +96 -0
  82. package/src/nodes/sip-request.js +36 -0
  83. package/src/nodes/tag.html +60 -0
  84. package/src/nodes/tag.js +22 -0
  85. package/src/nodes/template.html +63 -0
  86. package/src/nodes/template.js +9 -0
  87. package/src/nodes/userauth.html +85 -0
  88. package/src/nodes/userauth.js +70 -0
  89. package/src/nodes/webhooks.js +0 -16
  90. package/src/utils/http-helpers.js +68 -0
  91. package/src/examples/Authenticating sip devices.json +0 -10
  92. package/src/nodes/http-helpers.js +0 -26
  93. 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
+ }
@@ -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
  }