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:
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.
##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
To manage the business hours of IVR workflows, I used the below scripts to reset/update the business hours:
##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
To manage the greeting/announcement of IVR workflows, I used the below scripts to reset/update the IVR greeting:
##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
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. 😊