J, U C A B?
O, I C A B. K, U
C RGS Q?
Back in 1968, noted illustrator and children's book writer William Stieg wrote a clever little book titled CDB! The entire book consisted of sentences made up entirely of letters that sounded like words. If you haven't had your coffee yet this morning, that means that the sentence CDB! can be "translated" like this: See the bee!
C how that works?
About 20 years later, Steig wrote a sequel – CDC? – which followed pretty much the exact same format. You can see why, as technical writers, we hold William Stieg in the highest regard: after all, he simply typed out a bunch of seemingly-random letters, left it entirely up to the readers to figure out what the heck he was trying to say, and then sat back and collected a boatload of money.
Note. Although, come to think of it, that pretty much does describe most of the articles on the Lync Server PowerShell blog, doesn't it?
Well, except for the part about the authors sitting back and collecting a boatload of money.
As much as we admire William Stieg, however, we must also note that his career was marred by two major mistakes: he created the character Shrek (and thus bears at least some responsibility for the movies featuring that character) and he never once – no, not even once – managed to work the CsRgsQueue cmdlets into one of his books. There's not a lot we can do about the Shrek movies; that boat (along with a real boatload of money) has already sailed. But we can do something about the CsRgsQueue cmdlets: we can (and, come to think of it, did) write a haiku using the same format as CDB! Consider it an homage to William Stieg, author of Sylvester and the Magic Pebble and Dr. De Soto.
Of course, some of you might be thinking, "If William Stieg didn't write about the CsRgsQueue cmdlets, well, maybe that's because the CsRgsQueue cmdlets aren't worth writing about." Perish the thought! The CsRgsQueue cmdlets (Get-CsRgsQueue, New-CsRgsQueue, Remove-CsRgsQueue, and Set-CsRgsQueue) are used to manage Lync Server Response Group queues. RGS queues, as you probably know, are one of the cornerstones of the Response Group application. When someone calls a phone number associated with the Response Group application, one of two things happens: either the call is transferred to a prompt that the caller must respond to in order to continue (for example, "Press 1 for hardware support; press 2 for software support") or the call is placed in a queue until a Response Group agent is available to answer the call.
Oh, and there's more. After all, you aren't limited to creating a single queue that's responsible for handling all phone calls; far from it. Instead, the Response Group application lets you create multiple queues that, in turn, can be associated with different workflows and different Response Group agent groups. In other words, you can create separate queues that can then respond differently to very specific events, such as a designated number of calls being simultaneously held in the queue, or to calls that have been on hold for X number of seconds.
And those queues can all be created, retrieved, modified, and even deleted by using the CsRgsQueue cmdlets.
Note. To be honest, we don't know how William Stieg could have overlooked something as important as Response Group queues, either. However, it is possible that the fact he died in 2003, 7 years before Lync Server 2010 was released, was a factor.
A complete discussion of Response Group queues, and the CsRgsQueue cmdlets, goes far beyond what we can relate in our daily haiku. If you'd like a little more information than we're able to provide today, take a peek at the article Creating Your First Response Group Using Lync Server Management Shell written by Response Group PM Frédéric Dubut. In the meantime, there are at least two things you should know before you start playing around with Response Group queues. First, keep in mind that queues must be associated with an instance of the Application Server service. Take a look at the following two commands, which we won't explain in any detail:
$x = New-CsRgsCallAction -Action TransferToVoicemailUri -Uri "sip:+firstname.lastname@example.org"
New-CsRgsQueue -Parent service:ApplicationServer:atl-cs-001.litwareinc.com -Name "Help Desk" -OverflowCandidate "OldestCall" -OverflowAction $x -OverflowThreshold 25
Note how we specified the Identity for our new queue: we used the Parent parameter along with the path to the appropriate Application Server service: service:ApplicationServer:atl-cs-001.litwareinc.com. We then used the Name parameter to give the queue a unique name for that particular instance of the Application Server service. That qualification is important: you can actually have two Response Group queues named Help Desk as long as those queues are associated with different Application Server services.
Second, keep in mind that the Response Group cmdlets are a little unusual. Why do we say that? Well, that's mainly because the Set-CsRgs cmdlets don't actually have parameters for changing property values. Instead, the only way to modify an existing Response Group queue is to create an object reference to that queue, modify the properties of the object reference, then use the Set-CsRgsQueue cmdlet to write those changes back to the real Response Group queue. In other words:
$x = Get-CsRgsQueue -Identity Service:ApplicationServer:atl-cs-001.litwareinc.com -Name "Help Desk"
$x.OverflowCandidate = "NewestCall"
Set-CsRgsQueue -Instance $x
For more information, see the Lync Server PowerShell help topics for the CsRgsQueue cmdlets.
That's all we have time for today. See you tomorrow.
Note. OK, fine, but we're only going to do this once. Here's how today's haiku can be translated:
Jay, you see a bee?Oh, I see a bee. Kay, you
See RGS queue?
You know, you really should go get that cup of coffee.