1 <div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">
4 <div class="header md-accent-bg" layout="row" layout-align="start center">
5 <div class="white-fg" layout="row" layout-align="start center" flex>
6 <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">
7 <md-icon md-font-icon="icon-arrow-left"></md-icon>
10 <div layout="row" layout-align="start center">
12 <div ng-if="vm.voiceQueue.userpic" class="voiceQueue-image" hide-xs>
13 <img ng-src="api/users/{{vm.voiceQueue.id}}/avatar">
16 <div ng-if="!vm.voiceQueue.userpic" class="voiceQueue-image" hide-xs>
17 <img ng-src="assets/images/business/voiceQueues.jpg">
20 <div layout="column" layout-align="start start">
22 #{{vm.voiceQueue.id}} {{vm.voiceQueue.name}}
24 <div class="subtitle secondary-text">
25 <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:'medium'}}</span>
33 <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">
34 <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>
35 <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>
40 <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">
41 <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>
42 <md-icon md-font-icon="icon-account-plus"></md-icon>
46 <md-button type="submit" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">
57 <md-tabs md-selected="vm.selectedTab" md-dynamic-height>
60 <span translate="VOICE.SETTINGS">SETTINGS</span>
64 <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">
65 <div class="pb-16" layout="row" layout-align="start center">
66 <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>
68 <form name="generalForm" novalidate>
69 <md-input-container class="md-block">
70 <label translate="VOICE.STRATEGY">Strategy</label>
71 <md-select ng-model="vm.voiceQueue.strategy" required autofocus>
72 <md-option ng-value="'ringall'">Ringall</md-option>
73 <md-option ng-value="'rrmemory'">Round Robin Memory</md-option>
74 <md-option ng-value="'leastrecent'">Least Recent</md-option>
75 <md-option ng-value="'fewestcalls'">Fewest Calls</md-option>
76 <md-option ng-value="'random'">Random</md-option>
77 <md-option ng-value="'linear'">Linear</md-option>
78 <md-option ng-value="'wrandom'">Weight Random</md-option>
80 <div ng-messages="generalForm.strategy.$error" ng-show="generalForm.strategy.$touched" role="alert">
81 <div ng-message="required">
82 <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>
86 <md-input-container class="md-block">
87 <label translate="VOICE.TIMEOUT">Timeout</label>
88 <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" required>
89 <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>
90 <div ng-messages="generalForm.timeout.$error" ng-show="generalForm.timeout.$touched" role="alert">
91 <div ng-message="required">
92 <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>
96 <md-input-container class="md-block">
97 <label translate="VOICE.MAXLENGTH">MaxLength</label>
98 <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0">
99 <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>
100 <div ng-messages="generalForm.maxlen.$error" ng-show="generalForm.maxlen.$touched" role="alert">
101 <div ng-message="required">
102 <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>
105 </md-input-container>
106 <md-input-container class="md-block">
107 <label translate="VOICE.RETRY">Retry</label>
108 <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0">
109 <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>
110 <div ng-messages="generalForm.retry.$error" ng-show="generalForm.retry.$touched" role="alert">
111 <div ng-message="required">
112 <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>
115 </md-input-container>
116 <md-input-container class="md-block">
117 <label translate="VOICE.WRAPUPTIME">WrapupTime</label>
118 <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0">
119 <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>
120 <div ng-messages="generalForm.wrapuptime.$error" ng-show="generalForm.wrapuptime.$touched" role="alert">
121 <div ng-message="required">
122 <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>
125 </md-input-container>
126 <md-input-container class="md-block">
127 <label translate="VOICE.WEIGHT">Weight</label>
128 <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0">
129 <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>
130 <div ng-messages="generalForm.weight.$error" ng-show="generalForm.weight.$touched" role="alert">
131 <div ng-message="required">
132 <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>
135 </md-input-container>
136 <md-input-container class="md-block">
137 <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>
138 <md-select ng-model="vm.voiceQueue.joinempty" multiple>
139 <md-option ng-value="'no'">no</md-option>
140 <md-option ng-value="'yes'">yes</md-option>
141 <md-option ng-value="'strict'">strict</md-option>
142 <md-option ng-value="'loose'">loose</md-option>
143 <md-option ng-value="'paused'">paused</md-option>
144 <md-option ng-value="'penalty'">penalty</md-option>
145 <md-option ng-value="'inuse'">inuse</md-option>
146 <md-option ng-value="'ringing'">ringing</md-option>
147 <md-option ng-value="'unavailable'">unavailable</md-option>
148 <md-option ng-value="'invalid'">invalid</md-option>
149 <md-option ng-value="'unknown'">unknoww</md-option>
150 <md-option ng-value="'wrapup'">wrapup</md-option>
152 <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>
153 <div ng-messages="generalForm.joinempty.$error" ng-show="generalForm.joinempty.$touched" role="alert">
154 <div ng-message="required">
155 <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>
158 </md-input-container>
159 <md-input-container class="md-block">
160 <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>
161 <md-select ng-model="vm.voiceQueue.leavewhenempty" multiple>
162 <md-option ng-value="'no'">no</md-option>
163 <md-option ng-value="'yes'">yes</md-option>
164 <md-option ng-value="'strict'">strict</md-option>
165 <md-option ng-value="'loose'">loose</md-option>
166 <md-option ng-value="'paused'">paused</md-option>
167 <md-option ng-value="'penalty'">penalty</md-option>
168 <md-option ng-value="'inuse'">inuse</md-option>
169 <md-option ng-value="'ringing'">ringing</md-option>
170 <md-option ng-value="'unavailable'">unavailable</md-option>
171 <md-option ng-value="'invalid'">invalid</md-option>
172 <md-option ng-value="'unknown'">unknoww</md-option>
173 <md-option ng-value="'wrapup'">wrapup</md-option>
175 <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>
176 <div ng-messages="generalForm.leavewhenempty.$error" ng-show="generalForm.leavewhenempty.$touched" role="alert">
177 <div ng-message="required">
178 <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>
181 </md-input-container>
182 <md-input-container class="md-block">
183 <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>
184 <md-select ng-model="vm.voiceQueue.musiconhold">
185 <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds">{{ musiconhold.name }}</md-option>
187 <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>
188 <div ng-messages="generalForm.musiconhold.$error" ng-show="generalForm.musiconhold.$touched" role="alert">
189 <div ng-message="required">
190 <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>
193 </md-input-container>
194 <md-input-container class="md-block">
195 <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>
196 <md-select ng-model="vm.voiceQueue.announce">
197 <md-option ng-value="'/var/opt/motion2/server/files/sounds/converted/' + announce.save_name" ng-repeat="announce in vm.sounds">{{ announce.name }}</md-option>
198 <md-option ng-value="''">None</md-option>
200 <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>
201 <div ng-messages="generalForm.announce.$error" ng-show="generalForm.announce.$touched" role="alert">
202 <div ng-message="required">
203 <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>
206 </md-input-container>
207 <md-input-container class="md-block">
208 <label translate="VOICE.DESCRIPTION">Description</label>
209 <input type="text" name="description" ng-model="vm.voiceQueue.description">
210 <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">
211 <div ng-message="required">
212 <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>
215 </md-input-container>
223 <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>
227 <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">
228 <div class="pb-16" layout="row" layout-align="start center">
229 <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>
231 <form name="settingsForm" novalidate>
232 <md-input-container class="md-block">
233 <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>
234 <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus>
235 <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>
236 <div ng-messages="settingsForm.announce_frequency.$error" ng-show="settingsForm.announce_frequency.$touched" role="alert">
237 <div ng-message="required">
238 <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>
241 </md-input-container>
242 <md-input-container class="md-block">
243 <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>
244 <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0">
245 <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>
246 <div ng-messages="settingsForm.min_announce_frequency.$error" ng-show="settingsForm.min_announce_frequency.$touched" role="alert">
247 <div ng-message="required">
248 <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>
251 </md-input-container>
252 <md-input-container class="md-block">
253 <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>
254 <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0">
255 <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>
256 <div ng-messages="settingsForm.periodic_announce_frequency.$error" ng-show="settingsForm.periodic_announce_frequency.$touched" role="alert">
257 <div ng-message="required">
258 <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>
261 </md-input-container>
262 <md-input-container class="md-block">
263 <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>
264 <md-select ng-model="vm.voiceQueue.random_periodic_announce">
266 <md-option ng-value="'yes'"> {{ 'VOICE.YES' | translate }}</md-option>
268 <md-option ng-value="'no'"> {{ 'VOICE.NO' | translate }}</md-option>
270 <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>
271 <div ng-messages="settingsForm.random_periodic_announce.$error" ng-show="settingsForm.random_periodic_announce.$touched" role="alert">
272 <div ng-message="required">
273 <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>
276 </md-input-container>
277 <md-input-container class="md-block">
278 <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>
279 <md-select ng-model="vm.voiceQueue.announce_holdtime">
280 <md-option ng-value="'yes'">Yes</md-option>
281 <md-option ng-value="'no'">No</md-option>
282 <md-option ng-value="'once'">Once</md-option>
284 <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>
285 <div ng-messages="settingsForm.announce_holdtime.$error" ng-show="settingsForm.announce_holdtime.$touched" role="alert">
286 <div ng-message="required">
287 <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>
290 </md-input-container>
291 <md-input-container class="md-block">
292 <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>
293 <md-select ng-model="vm.voiceQueue.announce_position">
294 <md-option ng-value="'yes'">Yes</md-option>
295 <md-option ng-value="'no'">No</md-option>
296 <md-option ng-value="'limit'">Limit</md-option>
297 <md-option ng-value="'more'">More</md-option>
299 <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>
300 <div ng-messages="settingsForm.announce_position.$error" ng-show="settingsForm.announce_position.$touched" role="alert">
301 <div ng-message="required">
302 <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>
305 </md-input-container>
306 <md-input-container class="md-block">
307 <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>
308 <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit">
309 <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>
310 <div ng-messages="settingsForm.announce_position_limit.$error" ng-show="settingsForm.announce_position_limit.$touched" role="alert">
311 <div ng-message="required">
312 <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>
315 </md-input-container>
316 <md-input-container class="md-block">
317 <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>
318 <md-select ng-model="vm.voiceQueue.reportholdtime">
320 <md-option ng-value="'yes'"> {{ 'VOICE.YES' | translate }}</md-option>
322 <md-option ng-value="'no'"> {{ 'VOICE.NO' | translate }}</md-option>
324 <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>
325 <div ng-messages="settingsForm.reportholdtime.$error" ng-show="settingsForm.reportholdtime.$touched" role="alert">
326 <div ng-message="required">
327 <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>
330 </md-input-container>
334 <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">
335 <div class="pb-16" layout="row" layout-align="start center">
336 <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>
338 <form name="announcementsForm" novalidate>
339 <md-input-container class="md-block">
340 <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>
341 <md-select ng-model="vm.voiceQueue.periodic_announce" autofocus>
342 <md-option ng-value="'/var/opt/motion2/server/files/sounds/converted/' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds">{{ periodic_announce.name }}</md-option>
343 <md-option ng-value="''">Default</md-option>
345 <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>
346 <div ng-messages="announcementsForm.periodic_announce.$error" ng-show="announcementsForm.periodic_announce.$touched" role="alert">
347 <div ng-message="required">
348 <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>
351 </md-input-container>
352 <md-input-container class="md-block">
353 <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>
354 <md-select ng-model="vm.voiceQueue.queue_reporthold">
355 <md-option ng-value="'/var/opt/motion2/server/files/sounds/converted/' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds">{{ queue_reporthold.name }}</md-option>
356 <md-option ng-value="null">Default</md-option>
357 <md-option ng-value="''">Disabled</md-option>
359 <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>
360 <div ng-messages="announcementsForm.queue_reporthold.$error" ng-show="announcementsForm.queue_reporthold.$touched" role="alert">
361 <div ng-message="required">
362 <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>
365 </md-input-container>
366 <md-input-container class="md-block">
367 <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>
368 <md-select ng-model="vm.voiceQueue.queue_youarenext">
369 <md-option ng-value="'/var/opt/motion2/server/files/sounds/converted/' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds">{{ queue_youarenext.name }}</md-option>
370 <md-option ng-value="null">Default</md-option>
371 <md-option ng-value="''">Disabled</md-option>
373 <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>
374 <div ng-messages="announcementsForm.queue_youarenext.$error" ng-show="announcementsForm.queue_youarenext.$touched" role="alert">
375 <div ng-message="required">
376 <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>
379 </md-input-container>
380 <md-input-container class="md-block">
381 <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>
382 <md-select ng-model="vm.voiceQueue.queue_thereare">
383 <md-option ng-value="'/var/opt/motion2/server/files/sounds/converted/' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds">{{ queue_thereare.name }}</md-option>
384 <md-option ng-value="null">Default</md-option>
385 <md-option ng-value="''">Disabled</md-option>
387 <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>
388 <div ng-messages="announcementsForm.queue_thereare.$error" ng-show="announcementsForm.queue_thereare.$touched" role="alert">
389 <div ng-message="required">
390 <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>
393 </md-input-container>
394 <md-input-container class="md-block">
395 <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>
396 <md-select ng-model="vm.voiceQueue.queue_callswaiting">
397 <md-option ng-value="'/var/opt/motion2/server/files/sounds/converted/' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds">{{ queue_callswaiting.name }}</md-option>
398 <md-option ng-value="null">Default</md-option>
399 <md-option ng-value="''">Disabled</md-option>
401 <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>
402 <div ng-messages="announcementsForm.queue_callswaiting.$error" ng-show="announcementsForm.queue_callswaiting.$touched" role="alert">
403 <div ng-message="required">
404 <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>
407 </md-input-container>
408 <md-input-container class="md-block">
409 <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>
410 <md-select ng-model="vm.voiceQueue.queue_holdtime">
411 <md-option ng-value="'/var/opt/motion2/server/files/sounds/converted/' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds">{{ queue_holdtime.name }}</md-option>
412 <md-option ng-value="null">Default</md-option>
413 <md-option ng-value="''">Disabled</md-option>
415 <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>
416 <div ng-messages="announcementsForm.queue_holdtime.$error" ng-show="announcementsForm.queue_holdtime.$touched" role="alert">
417 <div ng-message="required">
418 <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>
421 </md-input-container>
422 <md-input-container class="md-block">
423 <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>
424 <md-select ng-model="vm.voiceQueue.queue_minutes">
425 <md-option ng-value="'/var/opt/motion2/server/files/sounds/converted/' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds">{{ queue_minutes.name }}</md-option>
426 <md-option ng-value="null">Default</md-option>
427 <md-option ng-value="''">Disabled</md-option>
429 <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>
430 <div ng-messages="announcementsForm.queue_minutes.$error" ng-show="announcementsForm.queue_minutes.$touched" role="alert">
431 <div ng-message="required">
432 <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>
435 </md-input-container>
436 <md-input-container class="md-block">
437 <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>
438 <md-select ng-model="vm.voiceQueue.queue_minute">
439 <md-option ng-value="'/var/opt/motion2/server/files/sounds/converted/' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds">{{ queue_minute.name }}</md-option>
440 <md-option ng-value="null">Default</md-option>
441 <md-option ng-value="''">Disabled</md-option>
443 <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>
444 <div ng-messages="announcementsForm.queue_minute.$error" ng-show="announcementsForm.queue_minute.$touched" role="alert">
445 <div ng-message="required">
446 <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>
449 </md-input-container>
450 <md-input-container class="md-block">
451 <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>
452 <md-select ng-model="vm.voiceQueue.queue_seconds">
453 <md-option ng-value="'/var/opt/motion2/server/files/sounds/converted/' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds">{{ queue_seconds.name }}</md-option>
454 <md-option ng-value="null">Default</md-option>
455 <md-option ng-value="''">Disabled</md-option>
457 <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>
458 <div ng-messages="announcementsForm.queue_seconds.$error" ng-show="announcementsForm.queue_seconds.$touched" role="alert">
459 <div ng-message="required">
460 <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>
463 </md-input-container>
464 <md-input-container class="md-block">
465 <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>
466 <md-select ng-model="vm.voiceQueue.queue_thankyou">
467 <md-option ng-value="'/var/opt/motion2/server/files/sounds/converted/' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds">{{ queue_thankyou.name }}</md-option>
468 <md-option ng-value="null">Default</md-option>
469 <md-option ng-value="''">Disabled</md-option>
471 <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>
472 <div ng-messages="announcementsForm.queue_thankyou.$error" ng-show="announcementsForm.queue_thankyou.$touched" role="alert">
473 <div ng-message="required">
474 <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>
477 </md-input-container>
485 <span translate="VOICE.ADVANCED">ADVANCED</span>
489 <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">
490 <div class="pb-16" layout="row" layout-align="start center">
491 <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>
493 <form name="advancedForm" novalidate>
494 <md-input-container class="md-block">
495 <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>
496 <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>
497 </md-input-container>
498 <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">
499 <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>
500 <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" required>
501 <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>
502 <div ng-messages="advancedForm.acwTimeout.$error" ng-show="advancedForm.acwTimeout.$touched" role="alert">
503 <div ng-message="required">
504 <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>
507 </md-input-container>
508 <md-input-container class="md-block">
509 <label translate="VOICE.AUTOPAUSE">AutoPause</label>
510 <md-select ng-model="vm.voiceQueue.autopause">
512 <md-option ng-value="'all'"> {{ 'VOICE.YES' | translate }}</md-option>
514 <md-option ng-value="'no'"> {{ 'VOICE.NO' | translate }}</md-option>
516 <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>
517 <div ng-messages="advancedForm.autopause.$error" ng-show="advancedForm.autopause.$touched" role="alert">
518 <div ng-message="required">
519 <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>
522 </md-input-container>
523 <md-input-container class="md-block">
524 <label translate="VOICE.RINGINUSE">RingInUse</label>
525 <md-select ng-model="vm.voiceQueue.ringinuse">
527 <md-option ng-value="'yes'"> {{ 'VOICE.YES' | translate }}</md-option>
529 <md-option ng-value="'no'"> {{ 'VOICE.NO' | translate }}</md-option>
531 <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>
532 <div ng-messages="advancedForm.ringinuse.$error" ng-show="advancedForm.ringinuse.$touched" role="alert">
533 <div ng-message="required">
534 <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>
537 </md-input-container>
538 <md-input-container class="md-block">
539 <label translate="VOICE.MEMBERDELAY">MemberDelay</label>
540 <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0">
541 <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>
542 <div ng-messages="advancedForm.memberdelay.$error" ng-show="advancedForm.memberdelay.$touched" role="alert">
543 <div ng-message="required">
544 <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>
547 </md-input-container>
548 <md-input-container class="md-block">
549 <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>
550 <md-select ng-model="vm.voiceQueue.timeoutrestart">
552 <md-option ng-value="'yes'"> {{ 'VOICE.YES' | translate }}</md-option>
554 <md-option ng-value="'no'"> {{ 'VOICE.NO' | translate }}</md-option>
556 <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>
557 <div ng-messages="advancedForm.timeoutrestart.$error" ng-show="advancedForm.timeoutrestart.$touched" role="alert">
558 <div ng-message="required">
559 <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>
562 </md-input-container>
563 <md-input-container class="md-block">
564 <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>
565 <md-select ng-model="vm.voiceQueue.monitor_format">
566 <md-option ng-value="''">Inactive</md-option>
567 <md-option ng-value="'wav'">wav</md-option>
568 <md-option ng-value="'wav49'">wav49</md-option>
569 <md-option ng-value="'gsm'">gsm</md-option>
571 <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>
572 <div ng-messages="advancedForm.monitor_format.$error" ng-show="advancedForm.monitor_format.$touched" role="alert">
573 <div ng-message="required">
574 <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>
577 </md-input-container>
578 <md-input-container class="md-block">
579 <label translate="VOICE.CONTEXT">Context</label>
580 <input type="text" name="context" ng-model="vm.voiceQueue.context">
581 <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>
582 <div ng-messages="advancedForm.context.$error" ng-show="advancedForm.context.$touched" role="alert">
583 <div ng-message="required">
584 <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>
587 </md-input-container>
588 <md-input-container class="md-block">
589 <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>
590 <md-select ng-model="vm.voiceQueue.setinterfacevar">
592 <md-option ng-value="'yes'"> {{ 'VOICE.YES' | translate }}</md-option>
594 <md-option ng-value="'no'"> {{ 'VOICE.NO' | translate }}</md-option>
596 <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>
597 <div ng-messages="advancedForm.setinterfacevar.$error" ng-show="advancedForm.setinterfacevar.$touched" role="alert">
598 <div ng-message="required">
599 <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>
602 </md-input-container>
603 <md-input-container class="md-block">
604 <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>
605 <md-select ng-model="vm.voiceQueue.setqueuevar">
607 <md-option ng-value="'yes'"> {{ 'VOICE.YES' | translate }}</md-option>
609 <md-option ng-value="'no'"> {{ 'VOICE.NO' | translate }}</md-option>
611 <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>
612 <div ng-messages="advancedForm.setqueuevar.$error" ng-show="advancedForm.setqueuevar.$touched" role="alert">
613 <div ng-message="required">
614 <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>
617 </md-input-container>
618 <md-input-container class="md-block">
619 <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>
620 <md-select ng-model="vm.voiceQueue.setqueueentryvar">
622 <md-option ng-value="'yes'"> {{ 'VOICE.YES' | translate }}</md-option>
624 <md-option ng-value="'no'"> {{ 'VOICE.NO' | translate }}</md-option>
626 <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>
627 <div ng-messages="advancedForm.setqueueentryvar.$error" ng-show="advancedForm.setqueueentryvar.$touched" role="alert">
628 <div ng-message="required">
629 <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>
632 </md-input-container>