I have been working on a SFB Enterprise Voice Implementation project recently. The client is very keen to use native response group to create a corporate IVR for their receptions. The requirement in particular ended up needing 4 workflows, 19 Queues, 2 Groups and going beyond 2-Level, 4-Options IVR simple cases. The whole implementation won’t be completed under GUI, instead, Lync Powershell is the only way to meet the requirement.
I drew the reception IVR workflow below:
RGS
The root level menu is 7 options with the option 9 to loop back and the sub menu is also up to 8 options to help receptions to reduce the workload.
I like to start with GUI to set up the quickly set up the IVR framework with first 4 options and then we use scripts to extend options and manage the IVR framework. Take the “Reception Main Menu” as an example, I used the below scripts adding in Option 5, Option 6, Option 9.
[code language=”powershell”]
##Create Option 5
$Workflow=get-csrgsworkflow -name "Reception Main Menu"
$queue = Get-CsRgsQueue -name "Press5sub Queue[R]"
$Question = $workflow.DefaultAction.Question
$Action5 = New-CsRgsCallAction -Action TransferToQueue -QueueID $queue.Identity
$Answer5 = New-CsRgsAnswer -Action $Action5 -DtmfResponse 5 -VoiceResponseList "Option5"
$Question.AnswerList.Add($Answer5)
Set-CsRgsWorkflow -Instance $workflow
##Create Option 6
$Workflow=get-csrgsworkflow -name "Reception Main Menu"
$queue = Get-CsRgsQueue -name "Press6sub Queue[R]"
$Question = $workflow.DefaultAction.Question
$Action6 = New-CsRgsCallAction -Action TransferToQueue -QueueID $queue.Identity
$Answer6 = New-CsRgsAnswer -Action $Action6 -DtmfResponse 6 -VoiceResponseList "Option6"
$Question.AnswerList.Add($Answer6)
Set-CsRgsWorkflow -Instance $workflow
##Create Option 9
$Workflow=get-csrgsworkflow -name "Reception Main Menu"
$queue = Get-CsRgsQueue -name "Press9sub Queue[R]"
$Question = $workflow.DefaultAction.Question
$Action9 = New-CsRgsCallAction -Action TransferToQueue -QueueID $queue.Identity
$Answer9 = New-CsRgsAnswer -Action $Action9 -DtmfResponse 9 -VoiceResponseList "Option9"
$Question.AnswerList.Add($Answer9)
Set-CsRgsWorkflow -Instance $workflow
[/code]
To manage the business hours of IVR workflows, I used the below scripts to reset/update the business hours:
[code language=”powershell”]
##Business Hours update
$weekday = New-CsRgsTimeRange -Name "Weekday Hours" -OpenTime 00:08:30 -CloseTime 17:30:00
$x = Get-CsRgsHoursOfBusiness -Identity "service:ApplicationServer:nmlpoolaus01.company.com.au" -Name "Reception Main Menu_434d7c29-9893-4946-afcf-3bb9ac7aad8a"
$x.MondayHours1 = $weekday
$x.TuesdayHours1 = $weekday
$x.WednesdayHours1 = $weekday
$x.ThursdayHours1 = $weekday
$x.FridayHours1 = $weekday
Set-CsRgsHoursOfBusiness -Instance $x
$x
[/code]
To manage the greeting/announcement of IVR workflows, I used the below scripts to reset/update the IVR greeting:
[code language=”powershell”]
##greeting/announcement update
$audioFile = import-CsRgsAudioFile -Identity "service:ApplicationServer:nmlpoolaus01.company.com.au" -FileName "Greeting reception.wma" -Content (Get-Content "C:\temp\Greeting Reception.wma" -Encoding byte -readcount 0)
$prompt = New-CsRgsPrompt -AudioFilePrompt $audioFile -TextSpeechPrompt ""
$workflow.DefaultAction.Question.Prompt = $prompt
$workflow.DefaultAction.Question
Set-CsRgsWorkflow $workflow
[/code]
The native Lync response group is a basic IVR platform that covers most simple cases and can even go as far as multiple level and multiple option IVR with text-to-speech, and speech recognition (Interactive workflow), that’s not too shabby at all!
Hopefully my scripts can help you to extend your Lync IVR RGS workflow. 😊

Category:
Uncategorized