<p>cmaj has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.asterisk.org/c/asterisk/+/12951">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Basic PBX: Add Queues.<br><br>The current Super Awesome Company configurations reference some queues from<br>the IVR but do not implement them. This patch fixes that with two new Queues,<br>a new Queue Rule, and pertinent Dial Plan. Also both of the new Queues --<br>Sales and Customer Experience -- are a RINGALL strategy, using penalty<br>modification over time to include the Department Director phone in calls<br>that are not answered by Staff members within twenty seconds.<br><br>ASTERISK-28554<br><br>Change-Id: I11554be5b99a6b87139f041ec3358c59572a972f<br>---<br>M configs/basic-pbx/extensions.conf<br>A configs/basic-pbx/queuerules.conf<br>A configs/basic-pbx/queues.conf<br>3 files changed, 80 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/51/12951/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/configs/basic-pbx/extensions.conf b/configs/basic-pbx/extensions.conf</span><br><span>index e1da261..04d6ab9 100644</span><br><span>--- a/configs/basic-pbx/extensions.conf</span><br><span>+++ b/configs/basic-pbx/extensions.conf</span><br><span>@@ -35,6 +35,10 @@</span><br><span> exten = 2565551234,1,Verbose(1, "User ${CALLERID(num)} dialed into remote voicemail.")</span><br><span>  same = n,VoiceMailMain(example)</span><br><span>  same = n,Hangup()</span><br><span style="color: hsl(120, 100%, 40%);">+; Extensions for Queues.</span><br><span style="color: hsl(120, 100%, 40%);">+exten = 2565551200,1,Goto(Dial-Queues,1200,1) ; sales queue</span><br><span style="color: hsl(120, 100%, 40%);">+exten = 2565551250,1,Goto(Dial-Queues,1250,1) ; customer experience queue</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> [Dialing-Errors]</span><br><span> ; Handle any extensions dialed internally that don't otherwise exist.</span><br><span>@@ -61,6 +65,7 @@</span><br><span> include = Hints</span><br><span> include = Features</span><br><span> include = Dial-Users</span><br><span style="color: hsl(120, 100%, 40%);">+include = Dial-Queues</span><br><span> include = Dialing-Errors</span><br><span> </span><br><span> ; Dial-Users handles calls to internal extensions.</span><br><span>@@ -92,6 +97,27 @@</span><br><span> ; 'o' extension.</span><br><span> exten = o,1,Goto(1111)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+; Dial-Queues handles calls to internal queues.</span><br><span style="color: hsl(120, 100%, 40%);">+; Calls coming into this context may be *external* or *internal* in origin.</span><br><span style="color: hsl(120, 100%, 40%);">+[Dial-Queues]</span><br><span style="color: hsl(120, 100%, 40%);">+exten = _12[05]0,1,Verbose(1, "User ${CALLERID(num)} dialed ${EXTEN}.")</span><br><span style="color: hsl(120, 100%, 40%);">+ same = n,Answer()</span><br><span style="color: hsl(120, 100%, 40%);">+ same = n,Playback(thank-you-for-calling)</span><br><span style="color: hsl(120, 100%, 40%);">+ same = n,Set(QUEUE_MIN_PENALTY=0)</span><br><span style="color: hsl(120, 100%, 40%);">+ same = n,Set(QUEUE_MAX_PENALTY=0)</span><br><span style="color: hsl(120, 100%, 40%);">+ same = n,Set(QUEUE_RAISE_PENALTY=0)</span><br><span style="color: hsl(120, 100%, 40%);">+exten = 1200,n,Queue(salesq,iI,,,120)</span><br><span style="color: hsl(120, 100%, 40%);">+exten = 1250,s,Queue(customerxpq,iI,,,120)</span><br><span style="color: hsl(120, 100%, 40%);">+exten = _12[05]0,n,GotoIf($["${ABANDONED}"!="TRUE"]?done)</span><br><span style="color: hsl(120, 100%, 40%);">+ same = n,Set(members=${FILTER(0123456789\,,${QUEUE_MEMBER_LIST(${QUEUENAME})})})</span><br><span style="color: hsl(120, 100%, 40%);">+ same = n,While($["${SET(member=${SHIFT(members)})}" != ""])</span><br><span style="color: hsl(120, 100%, 40%);">+ same = n,Set(PUSH(vmboxes,&)=${member}@example)</span><br><span style="color: hsl(120, 100%, 40%);">+ same = n,EndWhile</span><br><span style="color: hsl(120, 100%, 40%);">+ same = n,GotoIf($[${LEN(${vmboxes})} = 0]?done)</span><br><span style="color: hsl(120, 100%, 40%);">+ same = n,Playback(were-sorry&vm-nobodyavail&pls-lv-msg-will-contact)</span><br><span style="color: hsl(120, 100%, 40%);">+ same = n,Voicemail(${vmboxes},s) ; if no answer, voicemail blast all queue members</span><br><span style="color: hsl(120, 100%, 40%);">+ same = n(done),Hangup()</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> ; Outbound-Dial</span><br><span> ;</span><br><span> ; Before we dial, see if the extension matches our restricted number patterns.</span><br><span>diff --git a/configs/basic-pbx/queuerules.conf b/configs/basic-pbx/queuerules.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..d69d041</span><br><span>--- /dev/null</span><br><span>+++ b/configs/basic-pbx/queuerules.conf</span><br><span>@@ -0,0 +1,7 @@</span><br><span style="color: hsl(120, 100%, 40%);">+; Queue Rules recipe contributed in 2019 by Chris Maj at Penguin PBX Solutions</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[general]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; After 15 seconds, increment QUEUE_MAX_PENALTY and QUEUE_RAISE_PENALTY.</span><br><span style="color: hsl(120, 100%, 40%);">+[ring_more_rule]</span><br><span style="color: hsl(120, 100%, 40%);">+penaltychange => 15,+1,,+1</span><br><span>diff --git a/configs/basic-pbx/queues.conf b/configs/basic-pbx/queues.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..fdcd0bf</span><br><span>--- /dev/null</span><br><span>+++ b/configs/basic-pbx/queues.conf</span><br><span>@@ -0,0 +1,47 @@</span><br><span style="color: hsl(120, 100%, 40%);">+; Queue recipe contributed in 2019 by Chris Maj at Penguin PBX Solutions</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[general]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; When a caller enters a queue, the staff members in that department</span><br><span style="color: hsl(120, 100%, 40%);">+; with penalty=0 will ring for 16 seconds. If nobody answers, then</span><br><span style="color: hsl(120, 100%, 40%);">+; after a 4 second pause, the staff members AND the department</span><br><span style="color: hsl(120, 100%, 40%);">+; director (with penalty=1) will ring for 16 seconds. This will then</span><br><span style="color: hsl(120, 100%, 40%);">+; repeatedly ring all three members for as long as the caller is</span><br><span style="color: hsl(120, 100%, 40%);">+; waiting in the queue (timeout specified in call to Queue() app.)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[genericq](!)</span><br><span style="color: hsl(120, 100%, 40%);">+strategy = ringall</span><br><span style="color: hsl(120, 100%, 40%);">+timeout = 16</span><br><span style="color: hsl(120, 100%, 40%);">+retry = 4</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; Statistics.</span><br><span style="color: hsl(120, 100%, 40%);">+servicelevel = 20</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; Penalty change rule, as caller wait time increases.</span><br><span style="color: hsl(120, 100%, 40%);">+; See queuerules.conf file for the definition.</span><br><span style="color: hsl(120, 100%, 40%);">+defaultrule = ring_more_rule</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; Set some extra variables automatically.</span><br><span style="color: hsl(120, 100%, 40%);">+setinterfacevar = yes</span><br><span style="color: hsl(120, 100%, 40%);">+setqueueentryvar = yes</span><br><span style="color: hsl(120, 100%, 40%);">+setqueuevar = yes</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; Announcements.</span><br><span style="color: hsl(120, 100%, 40%);">+announce-to-first-user = yes</span><br><span style="color: hsl(120, 100%, 40%);">+announce-holdtime = once</span><br><span style="color: hsl(120, 100%, 40%);">+announce-position = limit</span><br><span style="color: hsl(120, 100%, 40%);">+announce-position-limit = 5</span><br><span style="color: hsl(120, 100%, 40%);">+announce-round-seconds = 10</span><br><span style="color: hsl(120, 100%, 40%);">+announce-frequency = 30</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; Sales queue inherits all the settings from generic queue.</span><br><span style="color: hsl(120, 100%, 40%);">+[salesq](genericq)</span><br><span style="color: hsl(120, 100%, 40%);">+member => PJSIP/1105,0,Garnet Claude</span><br><span style="color: hsl(120, 100%, 40%);">+member => PJSIP/1112,0,Franny Ocean</span><br><span style="color: hsl(120, 100%, 40%);">+member => PJSIP/1109,1,Terry Jules</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; Customer Experience queue inherits all the settings from generic queue.</span><br><span style="color: hsl(120, 100%, 40%);">+[customerxpq](genericq)</span><br><span style="color: hsl(120, 100%, 40%);">+member => PJSIP/1115,0,Dusty Williams</span><br><span style="color: hsl(120, 100%, 40%);">+member => PJSIP/1102,0,Tommie Briar</span><br><span style="color: hsl(120, 100%, 40%);">+member => PJSIP/1101,1,Maria Berny</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/c/asterisk/+/12951">change 12951</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/c/asterisk/+/12951"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: 16 </div>
<div style="display:none"> Gerrit-Change-Id: I11554be5b99a6b87139f041ec3358c59572a972f </div>
<div style="display:none"> Gerrit-Change-Number: 12951 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: cmaj <chris@penguinpbx.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>