@jambonz/node-red-contrib-jambonz 2.4.18 → 2.4.20

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.
@@ -1,484 +1,604 @@
1
1
  <!-- Javascript -->
2
2
  <script type="text/javascript">
3
- RED.nodes.registerType('cfg',{
4
- category: 'jambonz',
5
- color: '#bbabaa',
6
- defaults: {
7
- name: {value: ''},
3
+ RED.nodes.registerType("cfg", {
4
+ category: "jambonz",
5
+ color: "#bbabaa",
6
+ defaults: {
7
+ name: { value: "" },
8
8
 
9
- tts: {value: 0},
10
- vendor: {value: 'default'},
11
- lang: {value: 'default'},
12
- xlang: {},
13
- voice: {value: 'default'},
14
- xvoice: {},
9
+ tts: { value: 0 },
10
+ vendor: { value: "default" },
11
+ lang: { value: "default" },
12
+ xlang: {},
13
+ voice: { value: "default" },
14
+ xvoice: {},
15
15
 
16
- speechinput: {value: 0},
17
- transcriptionvendor: {value: 'default'},
18
- vocabularyname: {},
19
- vocabularynameType: {value: 'str'},
20
- vocabularyfiltername: {},
21
- vocabularyfilternameType: {value: 'str'},
22
- vocabularyfiltermethod: {},
23
- identifyChannels: {},
24
- recognizerlang: {value: 'default'},
25
- recognizeraltlang: {},
26
- recognizeraltlangType: {val: 'str'},
27
- transcriptionhints: {},
28
- transcriptionhintsType: {val: 'str'},
16
+ speechinput: { value: 0 },
17
+ transcriptionvendor: { value: "default" },
18
+ vocabularyname: {},
19
+ vocabularynameType: { value: "str" },
20
+ vocabularyfiltername: {},
21
+ vocabularyfilternameType: { value: "str" },
22
+ vocabularyfiltermethod: {},
23
+ identifyChannels: {},
24
+ recognizerlang: { value: "default" },
25
+ recognizeraltlang: {},
26
+ recognizeraltlangType: { val: "str" },
27
+ transcriptionhints: {},
28
+ transcriptionhintsType: { val: "str" },
29
29
 
30
- bargeIn: {value: 0},
31
- bargeIn_enable :{},
32
- bargeIn_enableType:{value: 'bool'},
33
- bargeIn_actionHook:{},
34
- bargeIn_actionHookType:{value: 'str'},
35
- bargeIn_input:{},
36
- bargeIn_inputType:{value: 'inptype'},
37
- bargeIn_finishOnKey:{},
38
- bargeIn_finishOnKeyType:{value: 'str'},
39
- bargeIn_numDigits:{},
40
- bargeIn_numDigitsType:{value: 'num'},
41
- bargeIn_minDigits:{},
42
- bargeIn_minDigitsType:{value: 'num'},
43
- bargeIn_maxDigits:{},
44
- bargeIn_maxDigitsType:{value: 'num'},
45
- bargeIn_interDigitTimeout:{},
46
- bargeIn_interDigitTimeoutType:{value: 'num'},
30
+ bargeIn: { value: 0 },
31
+ bargeIn_enable: {},
32
+ bargeIn_enableType: { value: "bool" },
33
+ bargeIn_actionHook: {},
34
+ bargeIn_actionHookType: { value: "str" },
35
+ bargeIn_input: {},
36
+ bargeIn_inputType: { value: "inptype" },
37
+ bargeIn_finishOnKey: {},
38
+ bargeIn_finishOnKeyType: { value: "str" },
39
+ bargeIn_numDigits: {},
40
+ bargeIn_numDigitsType: { value: "num" },
41
+ bargeIn_minDigits: {},
42
+ bargeIn_minDigitsType: { value: "num" },
43
+ bargeIn_maxDigits: {},
44
+ bargeIn_maxDigitsType: { value: "num" },
45
+ bargeIn_interDigitTimeout: {},
46
+ bargeIn_interDigitTimeoutType: { value: "num" },
47
47
 
48
- amd: {value: 0},
49
- amd_actionHook:{},
50
- amd_actionHookType:{value: 'str'},
51
- amd_thresholdWordCount:{},
52
- amd_thresholdWordCountType:{value: 'num'},
53
- amd_timers_noSpeechTimeoutMs:{},
54
- amd_timers_noSpeechTimeoutMsType:{value: 'num'},
55
- amd_timers_decisionTimeoutMs:{},
56
- amd_timers_decisionTimeoutMsType:{value: 'num'},
57
- amd_timers_toneTimeoutMs:{},
58
- amd_timers_toneTimeoutMsType:{value: 'num'},
59
- amd_timers_greetingCompletionTimeoutMs:{},
60
- amd_timers_greetingCompletionTimeoutMsType:{value: 'num'},
48
+ amd: { value: 0 },
49
+ amd_actionHook: {},
50
+ amd_actionHookType: { value: "str" },
51
+ amd_thresholdWordCount: {},
52
+ amd_thresholdWordCountType: { value: "num" },
53
+ amd_timers_noSpeechTimeoutMs: {},
54
+ amd_timers_noSpeechTimeoutMsType: { value: "num" },
55
+ amd_timers_decisionTimeoutMs: {},
56
+ amd_timers_decisionTimeoutMsType: { value: "num" },
57
+ amd_timers_toneTimeoutMs: {},
58
+ amd_timers_toneTimeoutMsType: { value: "num" },
59
+ amd_timers_greetingCompletionTimeoutMs: {},
60
+ amd_timers_greetingCompletionTimeoutMsType: { value: "num" },
61
61
 
62
-
63
- record: {value: 0},
64
- record_action:{},
65
- record_actionType:{value: 'rectype'},
66
- record_siprecServerURL:{},
67
- record_siprecServerURLType:{value: 'str'},
68
- record_recordingID:{},
69
- record_recordingIDType:{value: 'str'},
62
+ record: { value: 0 },
63
+ record_action: {},
64
+ record_actionType: { value: "rectype" },
65
+ record_siprecServerURL: {},
66
+ record_siprecServerURLType: { value: "str" },
67
+ record_recordingID: {},
68
+ record_recordingIDType: { value: "str" },
70
69
 
71
- },
72
- inputs:1,
73
- outputs:1,
74
- icon: "font-awesome/fa-cubes",
75
- paletteLabel: "config",
76
- label: function() { return this.name || 'config';},
77
- oneditprepare: () => {
78
- var node = this;
79
- var ttsDiv = $('#tts-options');
80
- prepareTtsControls(node);
81
- prepareSttControls(node);
70
+ listenRequest: { value: false },
71
+ listenEnabled: { value: false },
72
+ listenUrl: { value: '' },
73
+ listenUrlType: {value: ''},
74
+ listenAuthUser: {},
75
+ listenAuthUserType: {value: ''},
76
+ listenAuthPass: {},
77
+ listenAuthPassType: {value: ''},
78
+ listenMetadata: {value: '{}'},
79
+ listenMetadataType: {value: 'json'},
80
+ listenMixType: {value: 'mono'},
81
+ listenSampleRate: {value: 8000},
82
82
 
83
- ttsDiv.hide();
84
- $('#speech-input-container').hide()
85
- $('#bargeIn-options').hide()
83
+ sipRequest: { value: false },
84
+ sipRequestWithinDialogHook: { value: "" },
85
+ sipRequestWithinDialogHookType: { value: "str" },
86
+ },
87
+ inputs: 1,
88
+ outputs: 1,
89
+ icon: "font-awesome/fa-cubes",
90
+ paletteLabel: "config",
91
+ label: function () {
92
+ return this.name || "config";
93
+ },
94
+ oneditprepare: () => {
95
+ var node = this;
96
+ var ttsDiv = $("#tts-options");
97
+ prepareTtsControls(node);
98
+ prepareSttControls(node);
86
99
 
87
- $('#node-input-transcriptionhints').typedInput({
88
- types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env', mustacheType],
89
- typeField: $('#node-input-transcriptionhintsType')
90
- });
91
- $('#node-input-recognizeraltlang').typedInput({
92
- types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env', mustacheType],
93
- typeField: $('#node-recognizeraltlangType')
94
- });
95
- $('#node-input-naics').typedInput({
96
- types: ['num', 'msg', 'flow', 'global', 'jsonata', 'env', mustacheType],
97
- typeField: $('#node-input-naicsType')
98
- });
100
+ ttsDiv.hide();
101
+ $("#speech-input-container").hide();
102
+ $("#bargeIn-options").hide();
99
103
 
100
- $('#node-input-tts').change(function() {
101
- const doTTS = $('#node-input-tts:checked').val();
102
- if (doTTS) {
103
- $('#tts-options').show();
104
- }
105
- else {
106
- $('#tts-options').hide();
107
- }
108
- });
109
- var enableSpeech = function(enabled) {
110
- if (enabled) $('#speech-input-container').show();
111
- else $('#speech-input-container').hide();
104
+ $("#node-input-transcriptionhints").typedInput({
105
+ types: ["str", "msg", "flow", "global", "jsonata", "env", mustacheType],
106
+ typeField: $("#node-input-transcriptionhintsType"),
107
+ });
108
+ $("#node-input-recognizeraltlang").typedInput({
109
+ types: ["str", "msg", "flow", "global", "jsonata", "env", mustacheType],
110
+ typeField: $("#node-recognizeraltlangType"),
111
+ });
112
+ $("#node-input-naics").typedInput({
113
+ types: ["num", "msg", "flow", "global", "jsonata", "env", mustacheType],
114
+ typeField: $("#node-input-naicsType"),
115
+ });
116
+
117
+ $("#node-input-tts").change(function () {
118
+ const doTTS = $("#node-input-tts:checked").val();
119
+ if (doTTS) {
120
+ $("#tts-options").show();
121
+ } else {
122
+ $("#tts-options").hide();
112
123
  }
113
- $('#node-input-speechinput').change(function() {
114
- var doSpeech = $('#node-input-speechinput:checked').val();
115
- enableSpeech(doSpeech);
116
- });
124
+ });
125
+ var enableSpeech = function (enabled) {
126
+ if (enabled) $("#speech-input-container").show();
127
+ else $("#speech-input-container").hide();
128
+ };
129
+ $("#node-input-speechinput").change(function () {
130
+ var doSpeech = $("#node-input-speechinput:checked").val();
131
+ enableSpeech(doSpeech);
132
+ });
117
133
 
118
- $('#node-input-bargeIn').change(function() {
119
- const dobargeIn = $('#node-input-bargeIn:checked').val();
120
- if (dobargeIn) {
121
- $('#bargeIn-options').show();
122
- }
123
- else {
124
- $('#bargeIn-options').hide();
125
- }
126
- });
134
+ $("#node-input-bargeIn").change(function () {
135
+ const dobargeIn = $("#node-input-bargeIn:checked").val();
136
+ if (dobargeIn) {
137
+ $("#bargeIn-options").show();
138
+ } else {
139
+ $("#bargeIn-options").hide();
140
+ }
141
+ });
127
142
 
128
- $('#node-input-bargeIn_enable').typedInput({
129
- types: ['bool'],
130
- typeField: $('#node-input-bargeIn_enableType')
131
- });
143
+ $("#node-input-bargeIn_enable").typedInput({
144
+ types: ["bool"],
145
+ typeField: $("#node-input-bargeIn_enableType"),
146
+ });
132
147
 
133
- $('#node-input-bargeIn_actionHook').typedInput({
134
- types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env', mustacheType],
135
- typeField: $('#node-input-bargeIn_actionHookType')
136
- });
137
- $('#node-input-bargeIn_input').typedInput({
138
- type:"inptype", types:[{
148
+ $("#node-input-bargeIn_actionHook").typedInput({
149
+ types: ["str", "msg", "flow", "global", "jsonata", "env", mustacheType],
150
+ typeField: $("#node-input-bargeIn_actionHookType"),
151
+ });
152
+ $("#node-input-bargeIn_input").typedInput({
153
+ type: "inptype",
154
+ types: [
155
+ {
139
156
  value: "inptype",
140
157
  multiple: true,
141
158
  options: [
142
- { value: "digits", label: "Digits"},
143
- { value: "speech", label: "Speech"},
144
- ]
145
- }],
146
- typeField: $('#node-input-bargeIn_inputType')
147
- });
148
- $('#node-input-bargeIn_finishOnKey').typedInput({
149
- types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env', mustacheType],
150
- typeField: $('#node-input-bargeIn_finishOnKeyType')
151
- });
152
- $('#node-input-bargeIn_numDigits').typedInput({
153
- types: ['num', 'msg', 'flow', 'global', 'jsonata', 'env', mustacheType],
154
- typeField: $('#node-input-bargeIn_numDigitsType')
155
- });
156
- $('#node-input-bargeIn_minDigits').typedInput({
157
- types: ['num', 'msg', 'flow', 'global', 'jsonata', 'env', mustacheType],
158
- typeField: $('#node-input-bargeIn_minDigitsType')
159
- });
160
- $('#node-input-bargeIn_maxDigits').typedInput({
161
- types: ['num', 'msg', 'flow', 'global', 'jsonata', 'env', mustacheType],
162
- typeField: $('#node-input-bargeIn_maxDigitsType')
163
- });
164
- $('#node-input-bargeIn_interDigitTimeout').typedInput({
165
- types: ['num', 'msg', 'flow', 'global', 'jsonata', 'env', mustacheType],
166
- typeField: $('#node-input-bargeIn_interDigitTimeoutType')
167
- });
159
+ { value: "digits", label: "Digits" },
160
+ { value: "speech", label: "Speech" },
161
+ ],
162
+ },
163
+ ],
164
+ typeField: $("#node-input-bargeIn_inputType"),
165
+ });
166
+ $("#node-input-bargeIn_finishOnKey").typedInput({
167
+ types: ["str", "msg", "flow", "global", "jsonata", "env", mustacheType],
168
+ typeField: $("#node-input-bargeIn_finishOnKeyType"),
169
+ });
170
+ $("#node-input-bargeIn_numDigits").typedInput({
171
+ types: ["num", "msg", "flow", "global", "jsonata", "env", mustacheType],
172
+ typeField: $("#node-input-bargeIn_numDigitsType"),
173
+ });
174
+ $("#node-input-bargeIn_minDigits").typedInput({
175
+ types: ["num", "msg", "flow", "global", "jsonata", "env", mustacheType],
176
+ typeField: $("#node-input-bargeIn_minDigitsType"),
177
+ });
178
+ $("#node-input-bargeIn_maxDigits").typedInput({
179
+ types: ["num", "msg", "flow", "global", "jsonata", "env", mustacheType],
180
+ typeField: $("#node-input-bargeIn_maxDigitsType"),
181
+ });
182
+ $("#node-input-bargeIn_interDigitTimeout").typedInput({
183
+ types: ["num", "msg", "flow", "global", "jsonata", "env", mustacheType],
184
+ typeField: $("#node-input-bargeIn_interDigitTimeoutType"),
185
+ });
168
186
 
169
-
170
- $('#node-input-amd').change(function() {
171
- const doamd = $('#node-input-amd:checked').val();
172
- if (doamd) {
173
- $('#amd-options').show();
174
- }
175
- else {
176
- $('#amd-options').hide();
177
- }
178
- });
179
- $('#node-input-amd_actionHook').typedInput({
180
- types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env', mustacheType],
181
- typeField: $('#node-input-amd_actionHookType')
182
- });
183
- $('#node-input-amd_thresholdWordCount').typedInput({
184
- types: ['num', 'msg', 'flow', 'global', 'jsonata', 'env', mustacheType],
185
- typeField: $('#node-input-amd_thresholdWordCountType')
186
- });
187
- $('#node-input-amd_timers_noSpeechTimeoutMs').typedInput({
188
- types: ['num', 'msg', 'flow', 'global', 'jsonata', 'env', mustacheType],
189
- typeField: $('#node-input-amd_timers_noSpeechTimeoutMsType')
190
- });
191
- $('#node-input-amd_timers_decisionTimeoutMs').typedInput({
192
- types: ['num', 'msg', 'flow', 'global', 'jsonata', 'env', mustacheType],
193
- typeField: $('#node-input-amd_timers_decisionTimeoutMsType')
194
- });
195
- $('#node-input-amd_timers_toneTimeoutMs').typedInput({
196
- types: ['num', 'msg', 'flow', 'global', 'jsonata', 'env', mustacheType],
197
- typeField: $('#node-input-amd_timers_toneTimeoutMsType')
198
- });
199
- $('#node-input-amd_timers_greetingCompletionTimeoutMs').typedInput({
200
- types: ['num', 'msg', 'flow', 'global', 'jsonata', 'env', mustacheType],
201
- typeField: $('#node-input-amd_timers_greetingCompletionTimeoutMsType')
202
- });
187
+ $("#node-input-amd").change(function () {
188
+ const doamd = $("#node-input-amd:checked").val();
189
+ if (doamd) {
190
+ $("#amd-options").show();
191
+ } else {
192
+ $("#amd-options").hide();
193
+ }
194
+ });
195
+ $("#node-input-amd_actionHook").typedInput({
196
+ types: ["str", "msg", "flow", "global", "jsonata", "env", mustacheType],
197
+ typeField: $("#node-input-amd_actionHookType"),
198
+ });
199
+ $("#node-input-amd_thresholdWordCount").typedInput({
200
+ types: ["num", "msg", "flow", "global", "jsonata", "env", mustacheType],
201
+ typeField: $("#node-input-amd_thresholdWordCountType"),
202
+ });
203
+ $("#node-input-amd_timers_noSpeechTimeoutMs").typedInput({
204
+ types: ["num", "msg", "flow", "global", "jsonata", "env", mustacheType],
205
+ typeField: $("#node-input-amd_timers_noSpeechTimeoutMsType"),
206
+ });
207
+ $("#node-input-amd_timers_decisionTimeoutMs").typedInput({
208
+ types: ["num", "msg", "flow", "global", "jsonata", "env", mustacheType],
209
+ typeField: $("#node-input-amd_timers_decisionTimeoutMsType"),
210
+ });
211
+ $("#node-input-amd_timers_toneTimeoutMs").typedInput({
212
+ types: ["num", "msg", "flow", "global", "jsonata", "env", mustacheType],
213
+ typeField: $("#node-input-amd_timers_toneTimeoutMsType"),
214
+ });
215
+ $("#node-input-amd_timers_greetingCompletionTimeoutMs").typedInput({
216
+ types: ["num", "msg", "flow", "global", "jsonata", "env", mustacheType],
217
+ typeField: $("#node-input-amd_timers_greetingCompletionTimeoutMsType"),
218
+ });
203
219
 
220
+ $("#node-input-record").change(function () {
221
+ const dorecord = $("#node-input-record:checked").val();
222
+ if (dorecord) {
223
+ $("#record-options").show();
224
+ } else {
225
+ $("#record-options").hide();
226
+ }
227
+ });
228
+ $("#node-input-record_action").typedInput({
229
+ type: "rectype",
230
+ types: [
231
+ {
232
+ value: "rectype",
233
+ multiple: false, //TODO Check if multiple selection is valid
234
+ options: [
235
+ { value: "startCallRecording", label: "Start" },
236
+ { value: "stopCallRecording", label: "Stop" },
237
+ { value: "pauseCallRecording", label: "Pause" },
238
+ { value: "resumeCallRecording", label: "Resume" },
239
+ ],
240
+ },
241
+ ],
242
+ typeField: $("#node-input-record_actionType"),
243
+ });
244
+ $("#node-input-record_siprecServerURL").typedInput({
245
+ types: ["str", "msg", "flow", "global", "jsonata", "env", mustacheType],
246
+ typeField: $("#node-input-record_siprecServerURLType"),
247
+ });
248
+ $("#node-input-record_recordingID").typedInput({
249
+ types: ["str", "msg", "flow", "global", "jsonata", "env", mustacheType],
250
+ typeField: $("#node-input-record_recordingIDType"),
251
+ });
204
252
 
205
- $('#node-input-record').change(function() {
206
- const dorecord = $('#node-input-record:checked').val();
207
- if (dorecord) {
208
- $('#record-options').show();
209
- }
210
- else {
211
- $('#record-options').hide();
212
- }
213
- });
214
- $('#node-input-record_action').typedInput({
215
- type:"rectype", types:[{
216
- value: "rectype",
217
- multiple: false, //TODO Check if multiple selection is valid
218
- options: [
219
- { value: "startCallRecording", label: "Start"},
220
- { value: "stopCallRecording", label: "Stop"},
221
- { value: "pauseCallRecording", label: "Pause"},
222
- { value: "resumeCallRecording", label: "Resume"},
223
- ]
224
- }],
225
- typeField: $('#node-input-record_actionType')
226
- });
227
- $('#node-input-record_siprecServerURL').typedInput({
228
- types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env', mustacheType],
229
- typeField: $('#node-input-record_siprecServerURLType')
230
- });
231
- $('#node-input-record_recordingID').typedInput({
232
- types: ['str', 'msg', 'flow', 'global', 'jsonata', 'env', mustacheType],
233
- typeField: $('#node-input-record_recordingIDType')
234
- });
235
- }
236
- });
253
+ $("#node-input-sipRequestWithinDialogHook").typedInput({
254
+ types: ["str", "msg", "flow", "global", "jsonata", "env", mustacheType],
255
+ typeField: $("#node-input-sipRequestWithinDialogHookType"),
256
+ });
257
+ $("#node-input-sipRequest").change(function () {
258
+ const doSipRequest = $("#node-input-sipRequest:checked").val();
259
+ if (doSipRequest) {
260
+ $("#sipRequest-options").show();
261
+ } else {
262
+ $("#sipRequest-options").hide();
263
+ }
264
+ });
237
265
 
266
+ $("#node-input-listenRequest").change(function () {
267
+ const doListen = $("#node-input-listenRequest:checked").val();
268
+ if (doListen) {
269
+ $("#listen-options").show();
270
+ } else {
271
+ $("#listen-options").hide();
272
+ }
273
+ });
274
+ $("#node-input-listenUrl").typedInput({
275
+ types: ["str", "msg", "flow", "global", "jsonata", "env", mustacheType],
276
+ typeField: $("#node-input-listenUrlType"),
277
+ });
278
+ $("#node-input-listenAuthUser").typedInput({
279
+ types: ["str", "msg", "flow", "global", "jsonata", "env", mustacheType],
280
+ typeField: $("#node-input-listenAuthUserType"),
281
+ });
282
+ $("#node-input-listenAuthPass").typedInput({
283
+ types: ["str", "msg", "flow", "global", "jsonata", "env", mustacheType],
284
+ typeField: $("#node-input-listenAuthPassType"),
285
+ });
286
+ $("#node-input-listenMetadata").typedInput({
287
+ types: ["json", "msg", "flow", "global", "jsonata"],
288
+ typeField: $("#node-input-listenMetadataType"),
289
+ });
290
+ },
291
+ });
238
292
  </script>
239
293
 
240
-
241
294
  <!-- HTML -->
242
-
243
295
  <script type="text/html" data-template-name="cfg">
244
296
  <div class="form-row">
245
297
  <label for="node-input-name"><i class="icon-tag"></i> Name</label>
246
298
  <input type="text" id="node-input-name" placeholder="Name">
247
- </div>
248
- <fieldset>
299
+ </div>
300
+ <fieldset>
301
+ <legend>Text to Speech</legend>
302
+ <div class="form-row">
303
+ <label for="node-input-tts">Modify TTS</label>
304
+ <input type="checkbox" id="node-input-tts">
305
+ </div>
306
+ <div id="tts-options">
307
+ <div class="form-row">
308
+ <label for="node-input-vendor">Vendor</label>
309
+ <select id="node-input-vendor">
310
+ <option value="default" selected>--application default--</option>
311
+ <option value="google">google</option>
312
+ <option value="aws">aws/polly</option>
313
+ <option value="microsoft">microsoft</option>
314
+ <option value="ibm">ibm</option>
315
+ <option value="nuance">nuance</option>
316
+ </select>
317
+ </div>
318
+ <div class="form-row" style="display: none;">
319
+ <label for="node-input-lang"> Lang</label>
320
+ <input type="text" id="node-input-lang">
321
+ </div>
322
+ <div class="form-row">
323
+ <label for="node-input-xlang">Language</label>
324
+ <select id="node-input-xlang">
325
+ <option value="default" selected>--application default--</option>
326
+ </select>
327
+ </div>
328
+ <div class="form-row" style="display: none;">
329
+ <label for="node-input-voice"> Voice</label>
330
+ <input type="text" id="node-input-voice">
331
+ </div>
332
+ <div class="form-row">
333
+ <label for="node-input-xvoice">Voice</label>
334
+ <select id="node-input-xvoice">
335
+ <option value="default" selected>--application default--</option>
336
+ </select>
337
+ </div>
338
+ </div>
249
339
 
250
- <legend>Text to Speech</legend>
251
- <div class="form-row">
252
- <label for="node-input-tts">Modify TTS</label>
253
- <input type="checkbox" id="node-input-tts">
254
- </div>
255
- <div id="tts-options">
340
+ <legend>Speech Input</legend>
341
+ <div class="form-row">
342
+ <label for="node-input-tts">Modify Speech Input</label>
343
+ <input type="checkbox" id="node-input-speechinput">
344
+ </div>
345
+ <div id="speech-input-container">
346
+ <div class="form-row">
347
+ <label for="node-input-transcriptionvendor">Vendor</label>
348
+ <select id="node-input-transcriptionvendor">
349
+ <option value="default" selected>--application default--</option>
350
+ <option value="google">Google</option>
351
+ <option value="aws">AWS</option>
352
+ </select>
353
+ </div>
354
+ <div class="form-row">
355
+ <label for="node-input-recognizerlang"><i class="icon-tag"></i> Language</label>
356
+ <select id="node-input-recognizerlang">
357
+ </select>
358
+ </div>
359
+ <div id="google-stt-options">
360
+ <legend>Google Transcription Options</legend>
256
361
  <div class="form-row">
257
- <label for="node-input-vendor">Vendor</label>
258
- <select id="node-input-vendor">
259
- <option value="default" selected>--application default--</option>
260
- <option value="google">google</option>
261
- <option value="aws">aws/polly</option>
262
- <option value="microsoft">microsoft</option>
263
- <option value="ibm">ibm</option>
264
- <option value="nuance">nuance</option>
265
- </select>
362
+ <label for="node-input-transcriptionhints">Hints</label>
363
+ <input type="text" id="node-input-transcriptionhints" placeholder="comma-separated list of phrases">
364
+ <input type="hidden" id="node-input-transcriptionhintsType">
266
365
  </div>
267
- <div class="form-row" style="display: none;">
268
- <label for="node-input-lang"> Lang</label>
269
- <input type="text" id="node-input-lang">
366
+ <div class="form-row">
367
+ <label for="node-input-recognizeraltlang">Alternative languages</label>
368
+ <input type="text" id="node-input-recognizeraltlang" placeholder="comma-separated list of add'l lang codes">
369
+ <input type="hidden" id="node-input-recognizeraltlangType">
270
370
  </div>
271
371
  <div class="form-row">
272
- <label for="node-input-xlang">Language</label>
273
- <select id="node-input-xlang">
274
- <option value="default" selected>--application default--</option>
275
- </select>
372
+ <label for="node-input-naics">Industry NAICS code</label>
373
+ <input type="text" id="node-input-naics">
374
+ <input type="hidden" id="node-input-naicsType">
375
+ </div>
376
+ </div>
377
+ <div id="aws-stt-options">
378
+ <legend>AWS Transcription Options</legend>
379
+ <div class="form-row">
380
+ <label for="node-input-vocabularyname">Vocabulary name</label>
381
+ <input type="text" id="node-input-vocabularyname">
382
+ <input type="hidden" id="node-input-vocabularynameType">
276
383
  </div>
277
- <div class="form-row" style="display: none;">
278
- <label for="node-input-voice"> Voice</label>
279
- <input type="text" id="node-input-voice">
384
+ <div class="form-row">
385
+ <label for="node-input-vocabularyfiltername">Vocabulary filter name</label>
386
+ <input type="text" id="node-input-vocabularyfiltername">
387
+ <input type="hidden" id="node-input-vocabularyfilternameType">
280
388
  </div>
281
389
  <div class="form-row">
282
- <label for="node-input-xvoice">Voice</label>
283
- <select id="node-input-xvoice">
284
- <option value="default" selected>--application default--</option>
390
+ <label for="node-input-vocabularyfiltername">Vocabulary filter name</label>
391
+ <input type="text" id="node-input-identifyChannels">
392
+ </div>
393
+ <div class="form-row">
394
+ <label for="node-input-vocabularyfiltermethod">Filter method</label>
395
+ <select id="node-input-vocabularyfiltermethod">
396
+ <option value="remove" selected>Remove</option>
397
+ <option value="mask" selected>Mask</option>
398
+ <option value="tag" selected>Tag</option>
285
399
  </select>
286
400
  </div>
287
- </div>
288
-
289
- <legend>Speech Input</legend>
290
- <div class="form-row">
291
- <label for="node-input-tts">Modify Speech Input</label>
292
- <input type="checkbox" id="node-input-speechinput">
293
- </div>
294
- <div id="speech-input-container">
401
+ </div>
402
+ </div>
403
+ <legend>Barge In</legend>
295
404
  <div class="form-row">
296
- <label for="node-input-transcriptionvendor">Vendor</label>
297
- <select id="node-input-transcriptionvendor">
298
- <option value="default" selected>--application default--</option>
299
- <option value="google">Google</option>
300
- <option value="aws">AWS</option>
301
- </select>
405
+ <label for="node-input-bargeIn">Modify Barge In</label>
406
+ <input type="checkbox" id="node-input-bargeIn">
302
407
  </div>
408
+ <div id="bargeIn-options">
303
409
  <div class="form-row">
304
- <label for="node-input-recognizerlang"><i class="icon-tag"></i> Language</label>
305
- <select id="node-input-recognizerlang">
306
- </select>
410
+ <label for="node-input-bargeIn_enable">Barge In Enabled</label>
411
+ <input type="text" id="node-input-bargeIn_enable" >
412
+ <input type="hidden" id="node-input-bargeIn_enableType">
307
413
  </div>
308
- <div id="google-stt-options">
309
- <legend>Google Transcription Options</legend>
310
- <div class="form-row">
311
- <label for="node-input-transcriptionhints">Hints</label>
312
- <input type="text" id="node-input-transcriptionhints" placeholder="comma-separated list of phrases">
313
- <input type="hidden" id="node-input-transcriptionhintsType">
314
- </div>
315
- <div class="form-row">
316
- <label for="node-input-recognizeraltlang">Alternative languages</label>
317
- <input type="text" id="node-input-recognizeraltlang" placeholder="comma-separated list of add'l lang codes">
318
- <input type="hidden" id="node-input-recognizeraltlangType">
319
- </div>
320
- <div class="form-row">
321
- <label for="node-input-naics">Industry NAICS code</label>
322
- <input type="text" id="node-input-naics">
323
- <input type="hidden" id="node-input-naicsType">
324
- </div>
414
+ <div class="form-row">
415
+ <label for="node-input-bargeIn_actionHook">Action Hook</label>
416
+ <input type="text" id="node-input-bargeIn_actionHook" placeholder="PLACEHOLDER">
417
+ <input type="hidden" id="node-input-bargeIn_actionHookType">
325
418
  </div>
326
- <div id="aws-stt-options">
327
- <legend>AWS Transcription Options</legend>
328
- <div class="form-row">
329
- <label for="node-input-vocabularyname">Vocabulary name</label>
330
- <input type="text" id="node-input-vocabularyname">
331
- <input type="hidden" id="node-input-vocabularynameType">
332
- </div>
333
- <div class="form-row">
334
- <label for="node-input-vocabularyfiltername">Vocabulary filter name</label>
335
- <input type="text" id="node-input-vocabularyfiltername">
336
- <input type="hidden" id="node-input-vocabularyfilternameType">
337
- </div>
338
- <div class="form-row">
339
- <label for="node-input-vocabularyfiltername">Vocabulary filter name</label>
340
- <input type="text" id="node-input-identifyChannels">
341
- </div>
342
- <div class="form-row">
343
- <label for="node-input-vocabularyfiltermethod">Filter method</label>
344
- <select id="node-input-vocabularyfiltermethod">
345
- <option value="remove" selected>Remove</option>
346
- <option value="mask" selected>Mask</option>
347
- <option value="tag" selected>Tag</option>
348
- </select>
349
- </div>
419
+ <div class="form-row">
420
+ <label for="node-input-bargeIn_input">Input</label>
421
+ <input type="text" id="node-input-bargeIn_input" placeholder="PLACEHOLDER">
422
+ <input type="hidden" id="node-input-bargeIn_inputType">
423
+ </div>
424
+ <div class="form-row">
425
+ <label for="node-input-bargeIn_finishOnKey">Finish On Key</label>
426
+ <input type="text" id="node-input-bargeIn_finishOnKey" placeholder="PLACEHOLDER">
427
+ <input type="hidden" id="node-input-bargeIn_finishOnKeyType">
428
+ </div>
429
+ <div class="form-row">
430
+ <label for="node-input-bargeIn_numDigits">Number of Digits</label>
431
+ <input type="text" id="node-input-bargeIn_numDigits" placeholder="PLACEHOLDER">
432
+ <input type="hidden" id="node-input-bargeIn_numDigitsType">
433
+ </div>
434
+ <div class="form-row">
435
+ <label for="node-input-bargeIn_minDigits">Min Digits</label>
436
+ <input type="text" id="node-input-bargeIn_minDigits" placeholder="PLACEHOLDER">
437
+ <input type="hidden" id="node-input-bargeIn_minDigitsType">
438
+ </div>
439
+ <div class="form-row">
440
+ <label for="node-input-bargeIn_maxDigits">Max Digits</label>
441
+ <input type="text" id="node-input-bargeIn_maxDigits" placeholder="PLACEHOLDER">
442
+ <input type="hidden" id="node-input-bargeIn_maxDigitsType">
443
+ </div>
444
+ <div class="form-row">
445
+ <label for="node-input-bargeIn_interDigitTimeout">Inter-Digit Timeout</label>
446
+ <input type="text" id="node-input-bargeIn_interDigitTimeout" placeholder="PLACEHOLDER">
447
+ <input type="hidden" id="node-input-bargeIn_interDigitTimeoutType">
448
+ </div>
449
+ </div>
450
+ <legend>Answer Machine Detection</legend>
451
+ <div class="form-row">
452
+ <label for="node-input-amd">Modify AMD</label>
453
+ <input type="checkbox" id="node-input-amd">
454
+ </div>
455
+ <div id="amd-options">
456
+ <div class="form-row">
457
+ <label for="node-input-amd_actionHook">Action Hook</label>
458
+ <input type="text" id="node-input-amd_actionHook" placeholder="/action">
459
+ <input type="hidden" id="node-input-amd_actionHookType">
460
+ </div>
461
+ <div class="form-row">
462
+ <label for="node-input-amd_thresholdWordCount">Threshold Word Count</label>
463
+ <input type="text" id="node-input-amd_thresholdWordCount" >
464
+ <input type="hidden" id="node-input-amd_thresholdWordCountType">
465
+ </div>
466
+ <div class="form-row">
467
+ <label for="node-input-amd_timers_noSpeechTimeoutMs">No Speech Timeout</label>
468
+ <input type="text" id="node-input-amd_timers_noSpeechTimeoutMs" >
469
+ <input type="hidden" id="node-input-amd_timers_noSpeechTimeoutMsType">
470
+ </div>
471
+ <div class="form-row">
472
+ <label for="node-input-amd_timers_decisionTimeoutMs">Decision Timeout</label>
473
+ <input type="text" id="node-input-amd_timers_decisionTimeoutMs" >
474
+ <input type="hidden" id="node-input-amd_timers_decisionTimeoutMsType">
475
+ </div>
476
+ <div class="form-row">
477
+ <label for="node-input-amd_timers_toneTimeoutMs">Tone Timeout</label>
478
+ <input type="text" id="node-input-amd_timers_toneTimeoutMs" >
479
+ <input type="hidden" id="node-input-amd_timers_toneTimeoutMsType">
480
+ </div>
481
+ <div class="form-row">
482
+ <label for="node-input-amd_timers_greetingCompletionTimeoutMs">Greeting Completion Timeout</label>
483
+ <input type="text" id="node-input-amd_timers_greetingCompletionTimeoutMs">
484
+ <input type="hidden" id="node-input-amd_timers_greetingCompletionTimeoutMsType">
350
485
  </div>
351
486
  </div>
352
- <legend>Barge In</legend>
353
- <div class="form-row">
354
- <label for="node-input-bargeIn">Modify Barge In</label>
355
- <input type="checkbox" id="node-input-bargeIn">
356
- </div>
357
- <div id="bargeIn-options">
358
- <div class="form-row">
359
- <label for="node-input-bargeIn_enable">Barge In Enabled</label>
360
- <input type="text" id="node-input-bargeIn_enable" >
361
- <input type="hidden" id="node-input-bargeIn_enableType">
362
- </div>
363
- <div class="form-row">
364
- <label for="node-input-bargeIn_actionHook">Action Hook</label>
365
- <input type="text" id="node-input-bargeIn_actionHook" placeholder="PLACEHOLDER">
366
- <input type="hidden" id="node-input-bargeIn_actionHookType">
367
- </div>
368
- <div class="form-row">
369
- <label for="node-input-bargeIn_input">Input</label>
370
- <input type="text" id="node-input-bargeIn_input" placeholder="PLACEHOLDER">
371
- <input type="hidden" id="node-input-bargeIn_inputType">
372
- </div>
373
- <div class="form-row">
374
- <label for="node-input-bargeIn_finishOnKey">Finish On Key</label>
375
- <input type="text" id="node-input-bargeIn_finishOnKey" placeholder="PLACEHOLDER">
376
- <input type="hidden" id="node-input-bargeIn_finishOnKeyType">
377
- </div>
378
- <div class="form-row">
379
- <label for="node-input-bargeIn_numDigits">Number of Digits</label>
380
- <input type="text" id="node-input-bargeIn_numDigits" placeholder="PLACEHOLDER">
381
- <input type="hidden" id="node-input-bargeIn_numDigitsType">
382
- </div>
383
- <div class="form-row">
384
- <label for="node-input-bargeIn_minDigits">Min Digits</label>
385
- <input type="text" id="node-input-bargeIn_minDigits" placeholder="PLACEHOLDER">
386
- <input type="hidden" id="node-input-bargeIn_minDigitsType">
387
- </div>
388
- <div class="form-row">
389
- <label for="node-input-bargeIn_maxDigits">Max Digits</label>
390
- <input type="text" id="node-input-bargeIn_maxDigits" placeholder="PLACEHOLDER">
391
- <input type="hidden" id="node-input-bargeIn_maxDigitsType">
392
- </div>
393
- <div class="form-row">
394
- <label for="node-input-bargeIn_interDigitTimeout">Inter-Digit Timeout</label>
395
- <input type="text" id="node-input-bargeIn_interDigitTimeout" placeholder="PLACEHOLDER">
396
- <input type="hidden" id="node-input-bargeIn_interDigitTimeoutType">
397
- </div>
398
- </div>
399
- <legend>Answer Machine Detection</legend>
487
+ <legend>SIPREC Recording</legend>
488
+ <div class="form-row">
489
+ <label for="node-input-record">Modify Record</label>
490
+ <input type="checkbox" id="node-input-record">
491
+ </div>
492
+ <div id="record-options">
400
493
  <div class="form-row">
401
- <label for="node-input-amd">Modify AMD</label>
402
- <input type="checkbox" id="node-input-amd">
494
+ <label for="node-input-record_action">Action</label>
495
+ <input type="text" id="node-input-record_action" >
496
+ <input type="hidden" id="node-input-record_actionType">
403
497
  </div>
404
- <div id="amd-options">
405
498
  <div class="form-row">
406
- <label for="node-input-amd_actionHook">Action Hook</label>
407
- <input type="text" id="node-input-amd_actionHook" placeholder="/action">
408
- <input type="hidden" id="node-input-amd_actionHookType">
499
+ <label for="node-input-record_siprecServerURL">SIPREC URL</label>
500
+ <input type="text" id="node-input-record_siprecServerURL">
501
+ <input type="hidden" id="node-input-record_siprecServerURLType">
409
502
  </div>
410
503
  <div class="form-row">
411
- <label for="node-input-amd_thresholdWordCount">Threshold Word Count</label>
412
- <input type="text" id="node-input-amd_thresholdWordCount" >
413
- <input type="hidden" id="node-input-amd_thresholdWordCountType">
504
+ <label for="node-input-record_recordingID">Recording ID</label>
505
+ <input type="text" id="node-input-record_recordingID">
506
+ <input type="hidden" id="node-input-record_recordingIDType">
414
507
  </div>
415
- <div class="form-row">
416
- <label for="node-input-amd_timers_noSpeechTimeoutMs">No Speech Timeout</label>
417
- <input type="text" id="node-input-amd_timers_noSpeechTimeoutMs" >
418
- <input type="hidden" id="node-input-amd_timers_noSpeechTimeoutMsType">
419
508
  </div>
509
+
510
+ <legend>Forward Audio Stream</legend>
420
511
  <div class="form-row">
421
- <label for="node-input-amd_timers_decisionTimeoutMs">Decision Timeout</label>
422
- <input type="text" id="node-input-amd_timers_decisionTimeoutMs" >
423
- <input type="hidden" id="node-input-amd_timers_decisionTimeoutMsType">
512
+ <label for="node-input-listenRequest">Modify Audio Forward</label>
513
+ <input type="checkbox" id="node-input-listenRequest">
424
514
  </div>
425
- <div class="form-row">
426
- <label for="node-input-amd_timers_toneTimeoutMs">Tone Timeout</label>
427
- <input type="text" id="node-input-amd_timers_toneTimeoutMs" >
428
- <input type="hidden" id="node-input-amd_timers_toneTimeoutMsType">
515
+ <div id="listen-options">
516
+ <div class="form-row">
517
+ <label for="node-input-listenEnabled">Enable</label>
518
+ <input type="checkbox" id="node-input-listenEnabled">
519
+ </div>
520
+ <div class="form-row">
521
+ <label for="node-input-listenUrl">WS Url</label>
522
+ <input type="text" id="node-input-listenUrl" placeholder="ws url">
523
+ <input type="hidden" id="node-input-listenUrlType">
524
+ </div>
525
+ <div class="form-row">
526
+ <label for="node-input-listenAuthUser">WS User</label>
527
+ <input type="text" id="node-input-listenAuthUser" placeholder="basic auth username">
528
+ <input type="hidden" id="node-input-listenAuthUserType">
529
+ </div>
530
+ <div class="form-row">
531
+ <label for="node-input-listenAuthPass">WS Password</label>
532
+ <input type="text" id="node-input-listenAuthPass" placeholder="basic auth password">
533
+ <input type="hidden" id="node-input-listenAuthPassType">
534
+ </div>
535
+ <div class="form-row">
536
+ <label for="node-input-listenMetadata">Metadata</label>
537
+ <input type="text" id="node-input-listenMetadata">
538
+ <input type="hidden" id="node-input-listenMetadataType">
539
+ </div>
540
+ <div class="form-row">
541
+ <label for="node-input-listenMixType">Mix Type</label>
542
+ <select id="node-input-listenMixType">
543
+ <option selected>mono</option>
544
+ <option>stereo</option>
545
+ <option>mixed</option>
546
+ </select>
547
+ </div>
548
+ <div class="form-row">
549
+ <label for="node-input-listenSampleRate">Sample Rate</label>
550
+ <select id="node-input-listenSampleRate">
551
+ <option selected>8000</option>
552
+ <option>16000</option>
553
+ <option>24000</option>
554
+ <option>48000</option>
555
+ <option>64000</option>
556
+ </select>
557
+ </div>
429
558
  </div>
559
+
560
+ <legend>SIP Indialog Hook</legend>
430
561
  <div class="form-row">
431
- <label for="node-input-amd_timers_greetingCompletionTimeoutMs">Greeting Completion Timeout</label>
432
- <input type="text" id="node-input-amd_timers_greetingCompletionTimeoutMs">
433
- <input type="hidden" id="node-input-amd_timers_greetingCompletionTimeoutMsType">
562
+ <label for="node-input-sipRequest">Modify Hook</label>
563
+ <input type="checkbox" id="node-input-sipRequest">
434
564
  </div>
435
- </div>
436
-
437
- <legend>SIPREC Recording</legend>
438
- <div class="form-row">
439
- <label for="node-input-record">Modify Record</label>
440
- <input type="checkbox" id="node-input-record">
565
+ <div id="sipRequest-options">
566
+ <div class="form-row">
567
+ <label for="node-input-sipRequestWithinDialogHook">Dialog Hook</label>
568
+ <input type="text" id="node-input-sipRequestWithinDialogHook">
569
+ <input type="hidden" id="node-input-sipRequestWithinDialogHookType">
570
+ </div>
441
571
  </div>
442
- <div id="record-options">
443
- <div class="form-row">
444
- <label for="node-input-record_action">Action</label>
445
- <input type="text" id="node-input-record_action" >
446
- <input type="hidden" id="node-input-record_actionType">
447
- </div>
448
- <div class="form-row">
449
- <label for="node-input-record_siprecServerURL">SIPREC URL</label>
450
- <input type="text" id="node-input-record_siprecServerURL">
451
- <input type="hidden" id="node-input-record_siprecServerURLType">
452
- </div>
453
- <div class="form-row">
454
- <label for="node-input-record_recordingID">Recording ID</label>
455
- <input type="text" id="node-input-record_recordingID">
456
- <input type="hidden" id="node-input-record_recordingIDType">
457
- </div>
458
- </div>
459
-
460
572
  </fieldset>
461
573
  </script>
462
574
 
463
575
  <!-- Help Text -->
464
-
465
576
  <script type="text/html" data-help-name="cfg">
466
577
  <p>Modify the default settings for the current session</p>
467
578
 
468
- <h3>Outputs</h3>
469
- <dl class="message-properties">
470
- <dt>jambonz<span class="property-type">object</span></dt>
471
- <dd> <code>msg.jambonz</code> will contain any previous actions provided to the input with the new <code>config</code> action appended </dd>
472
- </dl>
473
-
474
- <h3>Details</h3>
475
- The config verb allows the developer to change the default speech settings for the current session, or to gather speech or dtmf input in the background while other verbs are executing. The latter technique is useful mainly for certain scenarios when integrating with certain conversational AI systems.
476
- This verb is non-blocking; i.e. the specified settings are changed and execution immediately continues with the next verb in the application.
579
+ <h3>Outputs</h3>
580
+ <dl class="message-properties">
581
+ <dt>jambonz<span class="property-type">object</span></dt>
582
+ <dd>
583
+ <code>msg.jambonz</code> will contain any previous actions provided to the
584
+ input with the new <code>config</code> action appended
585
+ </dd>
586
+ </dl>
477
587
 
588
+ <h3>Details</h3>
589
+ The config verb allows the developer to change the default speech settings for
590
+ the current session, or to gather speech or dtmf input in the background while
591
+ other verbs are executing. The latter technique is useful mainly for certain
592
+ scenarios when integrating with certain conversational AI systems. This verb
593
+ is non-blocking; i.e. the specified settings are changed and execution
594
+ immediately continues with the next verb in the application.
478
595
 
479
- <h3>References</h3>
596
+ <h3>References</h3>
480
597
  <ul>
481
- <li><a href="https://www.jambonz.org/docs/webhooks/config/">Jambonz config reference</a></li>
598
+ <li>
599
+ <a href="https://www.jambonz.org/docs/webhooks/config/"
600
+ >Jambonz config reference</a
601
+ >
602
+ </li>
482
603
  </ul>
483
-
484
- </script>
604
+ </script>