Haiku #61

R & D; B &

B; D & D; L & I;

CS Q & A.

 

Some things just seem to belong together. (If you've ever had chocolate truffle cake with raspberry sauce then you know exactly what we're talking about.) As it turns out, that's as true for letters of the alphabet as it is for desserts. The acronym R & D? Research and development. B & B? Bed and breakfast. D & D? Dungeons and Dragons. L & I? Labor and Industries. As the old song says, you can't have one without the other.

 

Note. Are there other examples of acronyms that use an ampersand? Sure there are. Let's see, there's R & R: Rest and relaxation. (Very popular in the military.) B & O: Business and occupation. And, of course, T & … crumpets ….

 

IOW (in other words), and IMHO (in my humble opinion), there are lots of acronyms out there, some which use the ampersand (&) and some which don't. KWIM? (Know what I mean?)

 

Oh, and we almost forgot our favorite acronym of all: RGS Q & A. Which, in case your'e wondering, is short for Response Group Service question and answer.

 

That's a good question: what is a Response Group Service question and answer? Well, today we're going to tackle the answer part of that question: to be more specific, we're going to take a peek at the New-CsRgsAnswer cmdlet. As for the question part (New-CsRgsQuestion) of that question? Well, that's a topic we'll have to tackle later on. And don't worry: we'll do that PDQ.

 

Note. Pretty … uh, darn … quick.

 

LOL! (Laugh out loud!)

 

But first things first. As you probably know, the Response Group application – (Yes, we know that it's RGS, with the S standing for Service. But despite that, we're still supposed to call it the Response Group application. Why? IDK: I don't know.)

 

At any rate, and as you probably know, the Response Group application is designed to ask callers questions; for example someone calling a phone number associated with the Response Group application might hear this:

 

"Would you like English or Spanish? Say English or Spanish, or press 1 for English or 2 for Spanish."

 

As an administrator, it's up to you to write the questions that the system can ask, something we'll talk about L8R (later). At the same time, you also need to specify the accepted answers to those questions. For example, if the question is "Would you like English or Spanish? Say English or Spanish, or press 1 for English or 2 for Spanish." then you need to create one answer that specifies what the system should do if the caller says "English" (presses 1) and one answer to specify what the system should do if the caller says "Spanish" (or presses 2).

 

Make sense? OK, so then how do you go about creating an answer? Well, here's one example:

 

$w = New-CsRgsPrompt -TextToSpeechPrompt "Please hold while we transfer your call."

$x = Get-CsRgsQueue -Identity service:ApplicationServer:atl-cs-001.litwareinc.com -Name "English Help Desk"

 

$y = New-CsRgsCallAction -Prompt $w -Action TransferToQueue -QueueID $x.Identity

 

$a = New-CsRgsAnswer -Action $y -DtmfResponse 1 -VoiceResponseList English -Name "English Caller"

 

Complicated? Well, to be honest, yes it is, at least a little bit. But that's the nature of working with the Response Group application: more often than not, you have to create multiple items in order to actually get something done. In this example, the first thing we do is create a prompt that says "Please hold while we transfer your call." This message will be played to the caller while his or her call is transferred to an English-language queue. After creating that prompt we then use this line of code to retrieve an object reference to the English Help Desk queue, the actual queue that English-speaking callers will be transferred to.

 

$x = Get-CsRgsQueue -Identity service:ApplicationServer:atl-cs-001.litwareinc.com -Name "English Help Desk"

Still with us? Good. Next, we use the New-CsRgsCallAction cmdlet to specify the action that will be taken when a caller says English or presses 1. In this case, we're going to play the prompt that we just created ("Please hold while we transfer your call"), and we're also going to transfer the caller to the English Help Desk queue. (Now you know why we had to retrieve an object reference to that queue.)

 

And then, finally, we create our Response Group answer:

 

$a = New-CsRgsAnswer -Action $y -DtmfResponse 1 -VoiceResponseList English -Name "English Caller"

 

We've done a couple of things here. First, we've set the Action parameter to $y. What's $y? That's the variable containing the call action we just created. By setting the Action to that call action, we ensure that anyone who chooses this answer will have their call transferred to the English Help Desk queue. We've then set the DtmfResponse parameter to 1. Why did we do that? Well, we told people that they can press 1 if they want English. This parameter indicates the keypad key callers can press to, in this case, access the English-language queue. It's set to 1 because, well, because we told people that's the key to press for English. If we told them to press 3 for English then the command would look like this:

 

$a = New-CsRgsAnswer -Action $y -DtmfResponse 3 -VoiceResponseList English -Name "English Caller"

 

And then there's the VoiceResponseList parameter, which indicates the words that people can say in order to match this answer. In this case, there's only one word allowed: English. However, we could allow multiple matches. For example, this command would allow people to say English or (alas) American:

 

$a = New-CsRgsAnswer -Action $y -DtmfResponse 1 -VoiceResponseList English, American -Name "English Caller"

 

Note that multiple words are separated using commas. Note, too that these words are not enclosed in double quote marks. The following command will fail, because the speech engine underlying Response Group voice responses has trouble parsing double quote marks:

 

$a = New-CsRgsAnswer -Action $y -DtmfResponse 1 -VoiceResponseList "English", "American" -Name "English Caller"

 

By the way, that also means that your voice responses can only consist of single words. This command, which tries to use the voice response British English, is also going to fail:

 

$a = New-CsRgsAnswer -Action $y -DtmfResponse 1 -VoiceResponseList British English -Name "English Caller"

 

Why? Because New-CsRgsAnswer is going to assume that British is the parameter value for VoiceResponseList, and that English is a parameter value for some unspecified, position parameter. (In PowerShell, parameters are separated by using blank spaces.) Thus you get this error message:

 

New-CsRgsAnswer : A position parameter cannot be found that accepts the argument 'English'.

 

So after all that do we now have a Response Group scenario where a caller can select either English or Spanish? No, not yet: we still have to associate our answers (we'll pretend we also created a Spanish language answer) with a Response Group question. But, like we said, that's something we'll tackle later.

 

TTFN; CUL8R!

 

Note. Ta-ta for now; see you later!

 

Note to the note: Ta-ta for now is an informal way of saying goodbye. Although the expression has been around for years, it first gained popularity in 1941 when it was used as a catch-phrase for a character in the BBC radio show ITMA.

 

Note to the note to the note: ITMA is short for It's That Man Again.