summaryrefslogtreecommitdiffstats
path: root/queues.conf
blob: 53900e29ef97fc0ebc21686661dec4601bc905a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
[general]
;
; Global settings for call queues
;
; Persistent Members
;    Store each dynamic member in each queue in the astdb so that
;    when asterisk is restarted, each member will be automatically
;    read into their recorded queues. Default is 'yes'.
;
persistentmembers = yes
; 
; AutoFill Behavior
;    The old/current behavior of the queue has a serial type behavior 
;    in that the queue will make all waiting callers wait in the queue
;    even if there is more than one available member ready to take
;    calls until the head caller is connected with the member they 
;    were trying to get to. The next waiting caller in line then
;    becomes the head caller, and they are then connected with the
;    next available member and all available members and waiting callers
;    waits while this happens. The new behavior, enabled by setting
;    autofill=yes makes sure that when the waiting callers are connecting
;    with available members in a parallel fashion until there are
;    no more available members or no more waiting callers. This is
;    probably more along the lines of how a queue should work and 
;    in most cases, you will want to enable this behavior. If you 
;    do not specify or comment out this option, it will default to no
;    to keep backward compatibility with the old behavior.
;
autofill = yes
;
; Monitor Type
;    By setting monitor-type = MixMonitor, when specifying monitor-format
;    to enable recording of queue member conversations, app_queue will
;    now use the new MixMonitor application instead of Monitor so 
;    the concept of "joining/mixing" the in/out files now goes away
;    when this is enabled. You can set the default type for all queues
;    here, and then also change monitor-type for individual queues within
;    queue by using the same configuration parameter within a queue 
;    configuration block. If you do not specify or comment out this option,
;    it will default to the old 'Monitor' behavior to keep backward
;    compatibility. 
;
monitor-type = MixMonitor
;
; Note that a timeout to fail out of a queue may be passed as part of
; an application call from extensions.conf:
; Queue(queuename|[options]|[optionalurl]|[announceoverride]|[timeout])
; example: Queue(dave|t|||45)

;[markq]
;
; A sample call queue
;
; Musicclass sets which music applies for this particular call queue.
; The only class which can override this one is if the MOH class is set
; directly on the channel using Set(CHANNEL(musicclass)=whatever) in the
; dialplan.
;
;musicclass = default
;
; An announcement may be specified which is played for the member as
; soon as they answer a call, typically to indicate to them which queue
; this call should be answered as, so that agents or members who are
; listening to more than one queue can differentiated how they should
; engage the customer
;
;announce = queue-markq
;
; A strategy may be specified.  Valid strategies include:
;
; ringall - ring all available channels until one answers (default)
; roundrobin - take turns ringing each available interface 
; leastrecent - ring interface which was least recently called by this queue
; fewestcalls - ring the one with fewest completed calls from this queue
; random - ring random interface
; rrmemory - round robin with memory, remember where we left off last ring pass
;
;strategy = ringall
;
; Second settings for service level (default 0)
; Used for service level statistics (calls answered within service level time
; frame)
;servicelevel = 60
;
; A context may be specified, in which if the user types a SINGLE
; digit extension while they are in the queue, they will be taken out
; of the queue and sent to that extension in this context.
;
;context = qoutcon
;
; How long do we let the phone ring before we consider this a timeout...
;
;timeout = 15
;
; How long do we wait before trying all the members again?
;
;retry = 5
;
; Weight of queue - when compared to other queues, higher weights get 
; first shot at available channels when the same channel is included in 
; more than one queue.
;
;weight=0
;
; After a successful call, how long to wait before sending a potentially
; free member another call (default is 0, or no delay)
;
;wrapuptime=15
;
; Autofill will follow queue strategy but push multiple calls through
; at same time until there are no more waiting callers or no more
; available members. The per-queue setting of autofill allows you
; to override the default setting on an individual queue level.
; 
;autofill=yes
;
; Autopause will pause a queue member if they fail to answer a call
;
;autopause=yes
;
; Maximum number of people waiting in the queue (0 for unlimited)
;
;maxlen = 0
;
; If set to yes, just prior to the caller being bridged with a queue member 
; the MEMBERINTERFACE variable will be set with the interface name (eg. Agent/1234)
; of the queue member that was chosen and is now connected to be bridged with
; the caller
;
;setinterfacevar=no
;
; How often to announce queue position and/or estimated 
; holdtime to caller (0=off)
;
;announce-frequency = 90 
;
;
; How often to make any periodic announcement (see periodic-announce)
;
;periodic-announce-frequency=60
;
; Should we include estimated hold time in position announcements?
; Either yes, no, or only once.
; Hold time will be announced as the estimated time, 
; or "less than 2 minutes" when appropriate.
;
;announce-holdtime = yes|no|once

;
; What's the rounding time for the seconds?
; If this is non-zero, then we announce the seconds as well as the minutes
; rounded to this value.
;
; announce-round-seconds = 10
;
; Use these sound files in making position/holdtime announcements.  The
; defaults are as listed below -- change only if you need to.
;
			;	("You are now first in line.")
;queue-youarenext = queue-youarenext		
			;	("There are")
;queue-thereare	= queue-thereare
			;	("calls waiting.")
;queue-callswaiting = queue-callswaiting
			;	("The current est. holdtime is")
;queue-holdtime = queue-holdtime
			;	("minutes.")
;queue-minutes = queue-minutes
			;	("seconds.")
;queue-seconds = queue-seconds
			;	("Thank you for your patience.")
;queue-thankyou = queue-thankyou
			;       ("less than")
;queue-lessthan = queue-less-than
			;       ("Hold time")
;queue-reporthold = queue-reporthold
			;       ("All reps busy / wait for next")
;periodic-announce = queue-periodic-announce
;
; Calls may be recorded using Asterisk's monitor/MixMonitor resource
; This can be enabled from within the Queue application, starting recording
; when the call is actually picked up; thus, only successful calls are
; recorded, and you are not recording while people are listening to MOH.
; To enable monitoring, simply specify "monitor-format";  it will be disabled
; otherwise.
;
; You can specify the monitor filename with by calling
;    Set(MONITOR_FILENAME=foo)
; Otherwise it will use MONITOR_FILENAME=${UNIQUEID}
;
; Pick any one valid extension for monitor format recording. If you leave
; monitor-format commented out, it will not record calls.
;
; monitor-format = gsm|wav|wav49
;
; Monitor Type
;    By setting monitor-type = MixMonitor, when specifying monitor-format
;    to enable recording of queue member conversations, app_queue will
;    now use the new MixMonitor application instead of Monitor so
;    the concept of "joining/mixing" the in/out files now goes away
;    when this is enabled. If you do not specify or comment out this option,
;    it will default to the old 'Monitor' behavior to keep backward
;    compatibility.
;
; monitor-type = MixMonitor
;
; ----------------------- TYPE MIXMONITOR OPTIONS -----------------------------
;
;
; You can specify the options supplied to MixMonitor by calling
;   Set(MONITOR_OPTIONS=av(<x>)V(<x>)W(<x>))
; The 'b' option for MixMonitor (only save audio to the file while bridged) is 
; implied.
;
; You can specify a post recording command to be executed after the end of
; recording by calling
;   Set(MONITOR_EXEC=mv /var/spool/asterisk/monitor/^{MONITOR_FILENAME} /tmp/^{MONITOR_FILENAME})
;
; The command specified within the contents of MONITOR_EXEC will be executed when
; the recording is over. Any strings matching ^{X} will be unescaped to ${X} and
; all variables will be evaluated just prior to recording being started.
;
; The contents of MONITOR_FILENAME will also be unescaped from ^{X} to ${X} and
; all variables will be evaluated just prior to recording being started.
;
;
; This setting controls whether callers can join a queue with no members. There
; are three choices:
;
; yes    - callers can join a queue with no members or only unavailable members
; no     - callers cannot join a queue with no members
; strict - callers cannot join a queue with no members or only unavailable
;          members
;
; joinempty = yes
;
;
; If you wish to remove callers from the queue when new callers cannot join,
; set this setting to one of the same choices for 'joinempty'
;
; leavewhenempty = yes
;
;
; If this is set to yes, the following manager events will be generated:
; AgentCalled, AgentDump, AgentConnect, AgentComplete; setting this to
; vars also sends all channel variables with the event.
; (may generate some extra manager events, but probably ones you want)
;
; eventwhencalled = yes|no|vars
;
; If this is set to yes, the following manager events will be generated:
; QueueMemberStatus
; (may generate a WHOLE LOT of extra manager events)
;
; eventmemberstatus = no
;
; If you wish to report the caller's hold time to the member before they are
; connected to the caller, set this to yes.
;
; reportholdtime = no
;
; If you want the queue to avoid sending calls to members whose devices are
; known to be 'in use' (via the channel driver supporting that device state)
; uncomment this option. (Note: only the SIP channel driver currently is able
; to report 'in use'.)
;
; ringinuse = no
;
; If you wish to have a delay before the member is connected to the caller (or
; before the member hears any announcement messages), set this to the number of
; seconds to delay.
;
; memberdelay = 0
;
; If timeoutrestart is set to yes, then the timeout for an agent to answer is
; reset if a BUSY or CONGESTION is received.  This can be useful if agents
; are able to cancel a call with reject or similar.
;
; timeoutrestart = no
;
; Each member of this call queue is listed on a separate line in
; the form technology/dialstring.  "member" means a normal member of a
; queue.  An optional penalty may be specified after a comma, such that
; entries with higher penalties are considered last.  An optional member
; name may also be specified after a second comma, which is used in log
; messages as a "friendly name".  Multiple interfaces may share a single
; member name.
;
; It is important to ensure that channel drivers used for members are loaded
; before app_queue.so itself or they may be marked invalid until reload. This
; can be accomplished by explicitly listing them in modules.conf before
; app_queue.so.  Additionally, if you use Local channels as queue members, you
; must also preload pbx_config.so (or pbx_ael.so, pbx_lua.so, or
; pbx_realtime.so, depending on how your dialplan is configured).
;
;member => Zap/1
;member => Zap/2,10
;member => Zap/3,10,Bob Johnson
;member => Agent/1001
;member => Agent/1002

;
; Note that using agent groups is probably not what you want.  Strategies do
; not propagate down to the Agent system so if you want round robin, least
; recent, etc, you should list all the agents in this file individually and not
; use agent groups.
;
;member => Agent/@1		; Any agent in group 1
;member => Agent/:1,1		; Any agent in group 1, wait for first
                                ; available, but consider with penalty