<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Ahmet Gyger's blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/ahgyger/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/ahgyger/feed.xml</link>
    <description>A blog about Lync Server with a specific focus on Response Group Application and Call Park Service</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:14:22 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Creating a OcsPowerShell PSSession under a different set of credential</title>
      <link>https://docs.microsoft.com/archive/blogs/ahgyger/creating-a-ocspowershell-pssession-under-a-different-set-of-credential</link>
      <pubDate>Tue, 28 Aug 2012 11:46:00 GMT</pubDate>
      <dc:creator><![CDATA[Ahmet Gyger]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ahgyger/2012/08/28/creating-a-ocspowershell-pssession-under-a-different-set-of-credential/</guid>
      <description><![CDATA[I have recently been asked multiple times how to create a PowerShell session to OcsPowerShell.
This...]]></description>
      <content:encoded><![CDATA[<p>I have recently been asked multiple times how to create a PowerShell session to OcsPowerShell.</p>
<p>This is quite easy to do, just remember:</p>
<ul>
<li>Use a secure string for the password: <span style="background-color: #808080;">$secure_string_pwd = convertto-securestring "<em>password</em>" -asplaintext -force</span></li>
<li>Create and import the session: <span style="background-color: #808080;">$session = New-PSSession -ConnectionUri "https://<em>domain</em>/OcsPowerShell" -Credential $cred</span></li>
</ul>
<p><span style="background-color: #808080;"></span>&nbsp;A complete sample code can be found on this post: <a title="Creating a Powershell session under a different set of credentials" href="https://ahmetgyger.com/blog/2012/08/creating-a-powershell-session-under-a-different-set-of-credentials/">Creating a Powershell session under a different set of credentials</a>.</p>
<p>This will allow you to run the OcsPowershell cmdlets under different credentials and be correctly identified by the Role Based Access Control.</p>
<p></p>]]></content:encoded>
    </item>
    <item>
      <title>Configuring call park application</title>
      <link>https://docs.microsoft.com/archive/blogs/ahgyger/configuring-call-park-application</link>
      <pubDate>Thu, 08 Mar 2012 14:29:00 GMT</pubDate>
      <dc:creator><![CDATA[Ahmet Gyger]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ahgyger/2012/03/08/configuring-call-park-application/</guid>
      <description><![CDATA[In the previous call park related post, I explained the main scenarios that are covered by call park...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">In the previous call park related post, I explained the main scenarios that are covered by call park application. Now, let&rsquo;s configure this service! <br />It can hardly get easier than this with the Lync Control Panel: click on the Voice Features folder and then Call Park. At this point you want to click on New. </span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/46/0654.configureCps.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-46/0654.configureCps.PNG"><img style="margin-right: auto; margin-left: auto; display: block;" border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/46/0654.configureCps.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-46/0654.configureCps.PNG" /></a></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">The properties are hopefully straight forward:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">-</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"><b>Name</b>: a unique identifier for your particular orbit range</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">-</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"><b>Number range</b>: The minimum and maximum value of the range you want to assign for orbits. The real questions you are asked here are:</span></span></p>
<ul>
<li>&nbsp; <span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">How many calls do you expect simultaneously (this will decide of the length of the range)?</span></span></li>
<li>&nbsp; <span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Where do you have available extension (this will help you decide of the first value)</span></span></li>
</ul>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">-</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"><b>FQDN of destination server: </b>&nbsp;the fully qualified domain name of the application service (Front End or Front Ends pool) that host call park service.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">There are a set of options you cannot control via the Control Panel, for example the custom music on hold (what the parked user will hear), the timeout URI, the maximum pickup attempts and the call pickup threshold can only be defined via PowerShell.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">&nbsp;</span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">If you want to take a more programmatic approach and want to use the Lync Server Management Shell, you also can: </span></span></p>
<ol>
<li><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Open the Shell or Import the Lync module to your PowerShell console.<br />PS C:\&gt; Import-Module Lync</span></span></li>
<li><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Get the service identity that host Call Park Service (CPS)<br />PS C:\&gt; $serviceId = Get-CSService | ?{$_.Applications -like "*CPS*"}).ServiceId</span></span></li>
<li><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Enable Call Park feature in voice policy:<br />PS C:\&gt; Set-CSVoicePolicy -Identity Global -EnableCallPark $true</span></span></li>
<li><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Define a custom music on hold to be stream:<br />PS C:\&gt; Set-CSCallParkServiceMusicOnHoldFile -Service $serviceId -Content ( gc 'CpsMoh.wma' -ReadCount 0 -Encoding byte)</span></span></li>
<li><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Define a custom CPS configuration:<br />Set-CSCpsConfiguration -OnTimeoutURI sip:pool0_user1@vdomain.com -MaxCallPickupAttempts 1 -CallPickupTimeoutThreshold 00:00:59</span></span></li>
<li><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Create a new call orbit range:<br />New-CSCallParkOrbit -Identity $servicesId[0].ToString() -NumberRangeStart 700 -NumberRangeEnd 899 -CallParkServerFqdn poolfqdn.vdomain.com</span></span></li>
</ol>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">At this point you users should start receiving the Call Park Server URI and they should have the option to park call displayed on their Lync client.</span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Understanding Lync Call Park Application</title>
      <link>https://docs.microsoft.com/archive/blogs/ahgyger/understanding-lync-call-park-application</link>
      <pubDate>Fri, 28 Oct 2011 15:53:12 GMT</pubDate>
      <dc:creator><![CDATA[Ahmet Gyger]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ahgyger/2011/10/28/understanding-lync-call-park-application/</guid>
      <description><![CDATA[Lync Call Park lives on a front-end on your Lync deployment. Scenarios enabled by call park...]]></description>
      <content:encoded><![CDATA[<div>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Lync Call Park lives on a front-end on your Lync deployment. Scenarios enabled by call park application are: </span></span></p>
</div>
<p><span style="font-family: Calibri; font-size: small;" face="Calibri" size="3">-</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"><b>Call parking:</b> a Lync user can &ldquo;park&rdquo; a call, effectively the caller will get connected with the call park application and hear a music while he his on hold. Upon parking the call, the application will return to the parker a number (called an orbit number). This number may be used to retrieve the parked call. <br /></span></span></p>
<p><span style="font-family: Calibri; font-size: small;" face="Calibri" size="3">-</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"><b>Call retrieving:</b> to retrieve a call, one needs to have the orbit number of this call. Lync user can compose this orbit and they will be connected to the parked user.<br /></span></span></p>
<p><span style="font-family: Calibri; font-size: small;" face="Calibri" size="3">-</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"><b>Call ring back</b>: if timers for parked user expire, the call will ring back the user who parked the call (aka the parker). Note that the forwarding settings will not be taken into account.<br /></span></span></p>
<p><span style="font-family: Calibri; font-size: small;" face="Calibri" size="3">-</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"><b>Park failback:</b> if the call ring back is not answered, then the parked call is transferred to a defined destination.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Below is the (over) simplified process of parking and retrieving a call: </span></span></p>
<p><span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/46/0272.callpark.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-46/0272.callpark.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/46/0272.callpark.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-46/0272.callpark.png" /></a></span></p>
<p><strong><span style="color: #4f81bd;" color="#4f81bd"><span style="font-family: Calibri;" face="Calibri">Figure 1: parking and retrieving a call</span></span></strong></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">A sample scenario for call park application would be:</span></span></p>
<ol>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">User call Contoso Hospital</span></span></li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Receptionist answer the call</span></span></li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Receptionist park the call and page the doctor an orbit number</span></span></li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">The doctor enters the orbit number in any telephone and gets connected to the caller.<br /><br /></span></span></li>
</ol>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">In the next post, I will dive into the configuration of the call park application. </span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Thanks for reading!<br />Ahmet</span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Update RGS synchronization interval with active directory</title>
      <link>https://docs.microsoft.com/archive/blogs/ahgyger/update-rgs-synchronization-interval-with-active-directory</link>
      <pubDate>Wed, 19 Oct 2011 17:30:25 GMT</pubDate>
      <dc:creator><![CDATA[Ahmet Gyger]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ahgyger/2011/10/19/update-rgs-synchronization-interval-with-active-directory/</guid>
      <description><![CDATA[The collection of agents assigned to a Response Group can be pretty dynamic depending on the...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">The collection of agents assigned to a Response Group can be pretty dynamic depending on the scenario we try to support. In some cases, the collection of agents is mostly static and needs to be updated only once in a while. In some other cases, the collection needs to be updated daily or even hourly. </span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">To support this kind of scenarios, the agent groups support to have their agents collection updated via a distribution list (from active directory), so as an administrator we just have to maintain an AD group.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">By default, RGS, synchronization interval with AD is eight hours. This might not fit into all scenarios. If you need to have a shorter cycle time, there is still an option: creating a config file for OcsAppServerHost.exe. </span></span></p>
<p><span style="font-family: Calibri; font-size: small;" face="Calibri" size="3">Below is what you will want to insert into the config file (</span><a href="https://support.microsoft.com/kb/975893"><span style="color: #0000ff; font-family: Calibri; font-size: small;" face="Calibri" size="3" color="#0000ff">more details in the KB about this</span></a><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">):</span></span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="638">
<pre><span style="font-size: x-small;" size="2">&lt;?xml version="1.0" encoding="utf-8" ?&gt;</span></pre>
<pre><span style="font-size: x-small;" size="2">&lt;configuration&gt;</span></pre>
<pre><span style="font-size: x-small;" size="2">&nbsp;&nbsp; &lt;appSettings&gt;</span></pre>
<pre><span style="font-size: x-small;" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;add key="AdUpdateInterval" value="<var>Number</var>" /&gt;</span></pre>
<pre><span style="font-size: x-small;" size="2">&nbsp;&nbsp; &lt;/appSettings&gt;</span></pre>
<pre><span style="font-size: x-small;" size="2">&lt;/configuration&gt;</span></pre>
<p><span style="font-family: Calibri; font-size: small;" face="Calibri" size="3">&nbsp;</span></p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-family: Calibri; font-size: small;" face="Calibri" size="3">&nbsp;</span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Number needs to between 5 and 480 and it represents minutes </span>J<span style="font-family: Calibri;" face="Calibri">. Save the file as <i>OcsAppServerHost.exe.config</i> in the folder where the <i>OcsAppServerHost.exe</i> file is located.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Once you have this done, just restart RGS and you cycle time will be the one you entered in the config file.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" face="Calibri" size="3">If you are using OCS 2007 R2, there is a </span><a href="https://support.microsoft.com/kb/975612"><span style="color: #0000ff; font-family: Calibri; font-size: small;" face="Calibri" size="3" color="#0000ff">patch</span></a><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"> to make this work. </span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Reskit Chapter: Microsoft Lync Server 2010 Response Group Application</title>
      <link>https://docs.microsoft.com/archive/blogs/ahgyger/reskit-chapter-microsoft-lync-server-2010-response-group-application</link>
      <pubDate>Fri, 11 Feb 2011 03:05:00 GMT</pubDate>
      <dc:creator><![CDATA[Ahmet Gyger]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ahgyger/2011/02/11/reskit-chapter-microsoft-lync-server-2010-response-group-application/</guid>
      <description><![CDATA[Good news, the Response Group Application chapter of the Microsoft Lync Server 2010 resources kit...]]></description>
      <content:encoded><![CDATA[<p>Good news, the Response Group Application chapter of the Microsoft Lync Server 2010 resources kit book is available freely on <a href="https://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=22644">Microsoft download</a>. The tools are already available to download from this page: <a href="https://www.microsoft.com/downloads/en/details.aspx?FamilyID=80cc5ce7-970d-4fd2-8731-d5d7d0829266">Microsoft Lync Server 2010 Resource Kit Tools</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Creating a Response Group #4: Creating and configuring a workflow</title>
      <link>https://docs.microsoft.com/archive/blogs/ahgyger/creating-a-response-group-4-creating-and-configuring-a-workflow</link>
      <pubDate>Thu, 10 Feb 2011 02:12:56 GMT</pubDate>
      <dc:creator><![CDATA[Ahmet Gyger]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ahgyger/2011/02/10/creating-a-response-group-4-creating-and-configuring-a-workflow/</guid>
      <description><![CDATA[This is the last step in our journey in creating a response group: creating and configuring a...]]></description>
      <content:encoded><![CDATA[<p>This is the last step in our journey in creating a response group: creating and configuring a workflow. We started by <a href="https://blogs.msdn.com/b/ahgyger/archive/2010/10/21/creating-a-response-group-1-enabling-an-ad-user-to-be-a-lync-user-with-enterprise-voice-enabled.aspx">enabling our Lync user for enterprise voice</a> then we <a href="https://blogs.msdn.com/b/ahgyger/archive/2010/11/01/creating-a-response-group-2-create-and-configure-an-agent-group.aspx">created an agent group</a> and in the previous post we <a href="https://blogs.msdn.com/b/ahgyger/archive/2010/12/13/creating-a-response-group-3-creating-and-configuring-a-queue.aspx">created and configured a queue</a>. The response group workflow determines the actions that are taken when the response group receives a phone call. In this example, we will configure a simple workflow, this mean that we are not going to configure an IVR (interactive voice response) but a hunt group. A hunt group provides additional settings such as a welcome message, availability (hours of business and vacation) and music on hold.</p>
<p>As for previous objects, let's start by looking at the properties of the workflow object:</p>
<ul>
<li><b>Parent </b>&lt;RgsIdentity&gt;: The service where the workflow will be hosted.</li>
<li><b>Name </b>&lt;String&gt;: Unique name assigned to the workflow.</li>
<li><b>PrimaryUri </b>&lt;Uri&gt;: SIP address for the workflow, must begin with "sip:" prefix.</li>
<li><b>Active </b>&lt;$true | $false&gt;: If set to true, means that the workflow is active and available to accept phone calls.</li>
<li><b>Anonymous </b>&lt;$true | $false&gt;: If set to true, the identities of the agents will be masked (for incoming call). This also enable to make call on behalf of the workflow.</li>
<li><b>BusinessHoursID </b>&lt;Nullable&gt;: The ID of the HoursOfBusiness object defines the days of the week and times of the day that the workflow agents are available to answer calls.</li>
<li><b>CustomMusicOnHoldFile </b>&lt;AudioFile&gt;: Represents custom music to be played when callers are placed on hold. If not defined, the callers will hear the default music on hold.</li>
<li><b>Description</b> &lt;String&gt;: Description of the workflow, this is displayed in the Lync contact card.</li>
<li><b>DisplayNumber </b>&lt;String&gt;: Phone number for the workflow as displayed in Lync 2010, allow to be formatted as wanted.</li>
<li><b>EnabledForFederation </b>&lt;$true | $false&gt;: Indicates whether the workflow is available to federated users.</li>
<li><b>HolidayAction </b>&lt;CallAction&gt;: Action to be taken if the call is received on a holiday.</li>
<li><b>HolidaySetIdList </b>&lt;RgsHolidaySet&gt;: Represents days (RgsHoliday) when workflow agents are not available to answer calls.</li>
<li><b>Language </b>&lt;String&gt;: The language used to read workflow text-to-speech (TTS) prompts.</li>
<li><b>LineUri </b>&lt;Uri&gt;: Phone number for the workflow, must be prefixed with "tel:+".</li>
<li><b>NonBusinessHoursAction </b>&lt;CallAction&gt;: Action to be taken if a call is received outside the workflow business hours.</li>
<li><b>TimeZone </b>&lt;String&gt;: Time zone information used when determining holidays and business hours.</li>
</ul>
<p>&nbsp;</p>
<p>To set the workflow you can either use the Lync Management Shell or the web interface. Keep in mind that the web interface does not enable all features of the workflow but can be convenient to quickly create a workflow.</p>
<p>Let's have a quick try with the Response Group configuration tool:</p>
<p style="text-align: center;"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/46/3617.CreateAWorkflow.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-41-46/3617.CreateAWorkflow.PNG" border="0" /></p>
<p align="center"><strong>Figure 1: Response Group Configuration Tool</strong></p>
<ul>
<li>1. Open the Response Group Configuration Tool (<a href="https://pool.fqdn.com/RGSConfig">https://pool.fqdn.com/RGSConfig</a>)</li>
<li>2. Click on Create to create a new hunt group</li>
<li>3. Enter values to set you workflow (primary uri, display name, queue, ...)</li>
<li>4. Click the deploy button</li>
<li>5. Now you response group should be up and running in two minutes maximum.</li>
</ul>
<p>To get more control over our hunt group settings we will now go ahead and use the Lync Management Shell to create our workflow.</p>
<ul>
<li>1. Open the Shell or Import the Lync module to your PowerShell console.<br />PS C:\&gt; Import-Module Lync</li>
<li>2. Get the service identity that will host your workflow<br />PS C:\&gt; $serviceId="service:"+(Get-CSService | ?{$_.Applications -like "*RGS*"}).ServiceId;</li>
<li>3. Create the new workflow with some default settings<br />PS C:\&gt; $w = New-CsRgsWorkflow -Name "My first workflow" -PrimaryUri "sip:first@vdomain.com" -Parent $serviceId</li>
<li>4. Enter a description (optional)<br />PS C:\&gt; $w.Description = "First workflow created"</li>
<li>5. Set the display number (optional)<br />PS C:\&gt; $w.DisplayNumber = "+41 12 345 67 89"</li>
<li>6. Set the line Uri (optional) - make sure your gateway is properly configured<br />PS C:\&gt; $w.LineUri = "tel:+41123456789"</li>
<li>7. Create a call action for the default action 
<ul>
<li>7.1. Get the queue identity (the queue name is "My First Queue"<br />PS C:\&gt; $q = Get-CsRgsQueue |? {$_.Name -Like "My First Queue"}</li>
<li>7.2. Create a prompt to be played as the welcome message<br />PS C:\&gt; $prompt = New-CsRgsPrompt -TextToSpeechPrompt "Thank you for calling our Response Group, we are looking for an agent to answer you."</li>
<li>7.3. Create the call action transferring to the queue<br />PS C:\&gt; $defaultAction = New-CSRgsCallAction -Prompt $prompt -Action "TransferToQueue" -QueueId $q.Identity</li>
<li>7.4. Set the workflow default action to the call action<br />PS C:\&gt; $w.DefaultAction = $defaultAction</li>
</ul>
</li>
<li>8. Activate the workflow<br />PS C:\&gt; $w.Active = $true</li>
<li>9. Save the workflow to the database<br />PS C:\&gt; Set-CsRgsWorkflow $w</li>
</ul>
<p>At this point your workflow can be reached from the PSTN or from any voice enabled user in the enterprise.<br />I will be showing how to configure a workflow with hours of business and holidays. Keep Reading!</p>]]></content:encoded>
    </item>
    <item>
      <title>Creating a Response Group #3: Creating and configuring a queue</title>
      <link>https://docs.microsoft.com/archive/blogs/ahgyger/creating-a-response-group-3-creating-and-configuring-a-queue</link>
      <pubDate>Mon, 13 Dec 2010 07:39:00 GMT</pubDate>
      <dc:creator><![CDATA[Ahmet Gyger]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ahgyger/2010/12/13/creating-a-response-group-3-creating-and-configuring-a-queue/</guid>
      <description><![CDATA[In the two previous posts we first created voice enterprise enabled users usable as response group...]]></description>
      <content:encoded><![CDATA[<p>In the two previous posts we first <a href="https://blogs.msdn.com/b/ahgyger/archive/2010/10/21/creating-a-response-group-1-enabling-an-ad-user-to-be-a-lync-user-with-enterprise-voice-enabled.aspx">created voice enterprise enabled users</a> usable as response group agents. We then <a href="https://blogs.msdn.com/b/ahgyger/archive/2010/11/01/creating-a-response-group-2-create-and-configure-an-agent-group.aspx">created and configured an agent group</a> to handle easily a collection of agents. <br />Going forward we will add our agent group to a queue. In the response group application a queue is the entity holding the callers until an agent is available to answers it. Two interesting settings of the queue object is the capacity to react to queue overflow (maximum number of call allowed in the queue) and the queue timeout (maximum of time a caller can stay in a queue) thanks to <a href="https://blogs.msdn.com/b/ahgyger/archive/2010/12/09/response-group-how-to-create-a-csrgscallaction-object.aspx">RgsCallAction objects</a>.</p>
<p>Let's start by looking at the properties of the queue object:</p>
<ul class="unIndentedList">
<li><b>Parent</b> &lt;RgsIdentity&gt;: The service where the queue will be hosted.</li>
<li><b>Name </b>&lt;String&gt;: Unique name assigned to the queue.</li>
<li><b>AgentGroupIdList </b>&lt;Collection&gt;: The collection of AgentGroup (by identity) serving the queue.</li>
<li><b>Description </b>&lt;String&gt;: Description of the queue, for administrator use only (will never be displayed to callers or agents)</li>
<li><b>OverflowAction </b>&lt;RgsCallAction&gt;: Action to be taken when the overflow threshold is reached.</li>
<li><b>OverflowCandidate </b>&lt;NewestCall | OldestCall&gt;: Indicate whether the overflow action applies to the oldest call in the queue or to the newest call.</li>
<li><b>OverflowThreshold </b>&lt;0-1000&gt;: Amount of time (in seconds) before the overflow action is triggered. Keep in mind that this action will only be triggered when the AgentAlertTime cycle is over (more details about this later).</li>
<li><b>TimeoutAction </b>&lt;RgsCallAction&gt;: Action to be taken when the timeout threshold is reached.</li>
<li><b>TimeoutThreshold </b>&lt;10 - 65535&gt;: Amount of time (in seconds) before the timeout action is triggered. Keep in mind that, as for the overflow threshold) this action will only be triggered when the AgentAlertTime cycle is over.</li>
<li><b>InMemory </b>&lt;SwitchParameter&gt;: Using the InMemory flag will create an object reference without commiting the object to the database.</li>
</ul>
<p>As for the AgentGroup there are two ways to create a new queue: via the Lync Server Control Panel or via the Lync Server Management Shell. I will, again, start with the Control Panel way. You will however notice that to you lose some granularity (to add a prompt you have to use the PowerShell Cmdlet) in your settings when using the Control Panel instead of the PowerShell cmdlets.</p>
<p align="center"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/46/3857.CreateAQueue.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-41-46/3857.CreateAQueue.PNG" border="0" /></p>
<p align="center">Figure 1: Creating a new queue</p>
<p>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Open the Lync Server Control Panel (<a href="https://pool.fqdn.com/CSCP/">https://pool.fqdn.com/CSCP/</a>) </p>
<p>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Navigate to 'Response Groups' panel </p>
<p>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Click on the 'Queue' tab </p>
<p>4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Click the New button to create a new agent group </p>
<p>5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Select the site that will host the new agent group</p>
<p>6.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enter value to configure your queue</p>
<ul class="unIndentedList">
<li>Enter a name</li>
<li>Enter a description</li>
<li>Select the agent group(s) served by the queue</li>
<li>[optional]: Enable and configure the queue timeout</li>
<li>[optional]: Enable and configure the queue overflow</li>
</ul>
<p>7.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Commit the changes</p>
<p>Now let's create and configure a queue using the Lync Server Management Shell.</p>
<p>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Open the Shell or Import the Lync module to your PowerShell console.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt; Import-Module Lync</p>
<p>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Get the service identity that will host your&nbsp;queue<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt; $serviceId="service:"+(Get-CSService | ?{$_.Applications -like "*RGS*"}).ServiceId;</p>
<p>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Create the new queue with some default settings<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt;$q = New-CsRgsQueue -Parent $serviceId -Name "My First Queue"</p>
<p>4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enter a description (optional)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt;$q.Decription = "Contain all agents group working from 1pm to 6pm"</p>
<p>5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add an agent group to the queue</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Get the agent group identity<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt; $ag_id = (Get-CsRgsAgentGroup -Name "My First Agent Group ").Identity</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add it to the queue agent group list<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt;$q.AgentGroupIDList.Add($ag_id)</p>
<p>6.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Configure a queue overflow of 10 calls applied to the oldest call, transferring the call to a Sip Uri after playing a prompt indicating the transfer.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Create the prompt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt; $prompt = New-CsRgsPrompt -TextToSpeechPrompt "Your call is being transferred, please hold the line"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Create the call action<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt;$ca = New-CsRgsCallAction -Action TransferToUri &nbsp;-Prompt $prompt -Uri "sip:ahmet@vdomain.com"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Configure the queue<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt; $q.OverflowAction = $ca<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt; $q.OverflowCandidate = "OldestCall"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt; $q.OverflowThreshold = 10</p>
<p>7.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Configure a queue timeout of 5 minutes, transferring the call to another queue after playing an informative message<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Create the prompt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt; $prompt = New-CsRgsPrompt -TextToSpeechPrompt "Your call is being transferred, please hold the line"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Get the transfer target queue identity<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt;$ttq = (Get-CsRgsQueue -Name "Timeout Transfer Queue").Identity<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Create the call action<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt;$ca = New-CsRgsCallAction -Action TransferToQueue -Prompt $prompt -QueueID $ttq<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Configure the queue<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt;$q.TimeoutAction = $ca<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt;$q.TimeoutThreshold = (5*60)</p>
<p>8.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Save the queue to the database<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt;Set-CsRgsQueue $q</p>
<p><br />As previously stated, if you have set an agent alert time on your agent group object, the queue timeout will not happen until an agent alert time cycle is completed if agents are available. What does this mean? Let's say you have an agent group with an agent alert time of 120 seconds and a queue timeout of 60 seconds. The action for the queue timeout will only be triggered after 120 seconds if an agent is eligible for the call (aka display the incoming call toast). If no agent is eligible for the call, the timeout will be triggered after 60 seconds.</p>
<p>Our journey to create a response group is nearly over: we now have agents, an agent group and a queue. <a href="https://blogs.msdn.com/b/ahgyger/archive/2011/02/10/creating-a-response-group-4-creating-and-configuring-a-workflow.aspx" title="Creating and configuring a workflow">The last piece missing is a workflow object</a>. Keep reading! </p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Response Group – How-to create a Call Action</title>
      <link>https://docs.microsoft.com/archive/blogs/ahgyger/response-group-how-to-create-a-call-action</link>
      <pubDate>Thu, 09 Dec 2010 08:28:00 GMT</pubDate>
      <dc:creator><![CDATA[Ahmet Gyger]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ahgyger/2010/12/09/response-group-how-to-create-a-call-action/</guid>
      <description><![CDATA[Many response group objects have action properties that accept
RgsCallAction object. The...]]></description>
      <content:encoded><![CDATA[<p>Many response group objects have action properties that accept
RgsCallAction object. The RgsCallAction is used to determine what the system
does when a call is received. Properties for RgsCallAction are as below:</p>
<ul class="unIndentedList">
<li>
<b>Action</b>
&lt;Enumerator &gt;: Action to be taken.
<ul>
<li>
Terminate: will terminate the call (hang up).</li>
<li>
TransferToQueue: call will be transferred to
selected queue.</li>
<li>
TransferToQuestion: call will be transferred to
selected question.</li>
<li>
TransferToUri: call will be transferred to
selected SipUri.</li>
<li>
TransferToVoiceMailUri: call will be transferred
to selected voice mail URI.</li>
<li>
TransferToPSTN: call will be transferred to
selected PSTN (public switched telephone network).</li>
</ul>
</li>
<li>
<b>Prompt </b>&lt;CsRgsPrompt&gt;:
The prompt (audio file or Text To Speech) to be played.</li>
<li>
<b>Question </b>&lt;CsRgsQuestion&gt;:
The question to transfer the call to.</li>
<li>
<b>QueueID </b>&lt;CsRgsQueue&gt;:
Identity of the queue the call should be transferred to.</li>
<li>
<b>Uri </b>&lt;String&gt;:
SIP address, voice mail URI or PSTN number the call should be transferred to.</li>
</ul>
<p>At this point you might have noticed that I introduced a few
new Rgs related cmdlets: CsRgsPrompt, CsRgsQuestion and CsRgsQueue. I will not
go deep in this post about these objects but let me at least define for you
what the goal of this objects is:</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Prompt</b>:
Either an audio file played or a text that is read aloud by the TTS engine in
order to supply caller with additional information.</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Question</b>:
Provide the caller with choices (ex: press 1 for English, press 2 for French)
and take action based on the callers' answer.</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Queue</b>:
Hold the caller on hold until an agent is eligible to receive the call.</p>
<p>To create a call action you can either use the Lync Server
Control Panel or the Lync Server Management Shell. However to add a prompt to a
call action you have to use the Lync Server Management Shell.</p>
<p align="center"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/46/7318.CreateACallAction.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-41-46/7318.CreateACallAction.PNG" border="0" /></p>
<p align="center">Figure 1: Configuring a call action via Lync Server
Control Panel</p>
<p>Let's create a call action via PowerShell:</p>
<p>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Open the Shell or Import the Lync module to your
PowerShell console. <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
PS C:\&gt; Import-Module Lync</p>
<p>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
If you want a prompt in you call action, create
one<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt; &nbsp;$prompt = New-CsRgsPrompt -TextToSpeechPrompt
"Please hold the line, you are being transferred to our sales group".</p>
<p>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Create your call action object and define an
action to your object<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
PS C:\&gt; &nbsp;$ca = New-CsRgsCallAction -Action
TransferToUri</p>
<p>4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Now depending on the action you selected above
enter a value in the correct property, not doing so will throw an exception
when trying to use this call action with another object.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
PS C:\&gt; $ca.Uri = "Ahmet@vdomain.com"</p>
<p>5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Attach the prompt to your object<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS C:\&gt; $ca.Prompt = $prompt</p>
<p>Keep in mind that call actions can have only certain type of
action depending on the parent object consuming them, below is a summary of the
valid choices:</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Workflow (NextTarget): TransferToQueue,
TransferToQuestion</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Workflow (BusinessHours, Holiday): Terminate,
TransferToUri, TransferToVoiceMailUri</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Answer: TransferToQueue, TransferToQuestion</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Queue: Terminate, TransferToQueue,
TransferToUri, TransferToVoicemailUri</p>
<p>We now have a call action object in memory ready to be used
with either a RgsWorkflow, a RgsAnswer or a RgsQueue.</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Creating a Response Group #2: Create and configure an agent group</title>
      <link>https://docs.microsoft.com/archive/blogs/ahgyger/creating-a-response-group-2-create-and-configure-an-agent-group</link>
      <pubDate>Mon, 01 Nov 2010 05:36:00 GMT</pubDate>
      <dc:creator><![CDATA[Ahmet Gyger]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ahgyger/2010/11/01/creating-a-response-group-2-create-and-configure-an-agent-group/</guid>
      <description><![CDATA[In the previous post, we created Lync users that are enterprise voice enabled. Now we want to use...]]></description>
      <content:encoded><![CDATA[<p>In the previous post, we created <a href="https://blogs.msdn.com/b/ahgyger/archive/2010/10/21/creating-a-response-group-1-enabling-an-ad-user-to-be-a-lync-user-with-enterprise-voice-enabled.aspx" title="Lync users that are enterprise voice enabled">Lync users that are enterprise voice enabled</a>. Now we want to use these users and make sure they can answer to incoming call to the Response Group we will create later.</p>
<p>The object used to hold the collection of agents assigned to a Response Group is called an AgentGroup. Properties from this AgentGroup object are, I believe, straight forward but let's see all of them.</p>
<ul>
<li><b>Name</b> &lt;String&gt;: Unique name assigned to the agent group.</li>
<li><b>Parent</b> &lt;RgsIdentity&gt;: The service were the agent group is hosted.</li>
<li><b>AgentAlertTime</b> &lt;Int16&gt;: The amount of time (in seconds) a call can remain unanswered before it is automatically routed to the next agent. </li>
<li><b>AgentsByUri</b> &lt;SipAddress Collection&gt;: The collection of agents (identified by Sip addresses) of an agent group.</li>
<li><b>Description</b> &lt;String&gt;: the description of the agent group, to provide additional information about the agent group. This will not be visible to users (only for admin use).</li>
<li><b>DistributionGroupAddress</b> &lt;String&gt;: To add members of a distribution group to an agent group.</li>
<li><b>ParticipationPolicy</b> &lt;Informal | Formal&gt;: Indicates whether the agents are required to sign in to the agent group or not.</li>
<li><b>RoutingMethod</b> &lt;Longest Idle | Serial | Parallel | RoundRobin | Attendant&gt;: Specifies the method used to route new calls to agents.</li>
</ul>
<p>There are two ways create new AgentGroup: via the Lync Server Control Panel or via the Lync Server Management Shell (or any PowerShell console). <br />Let's start with Lync Server Control Panel approach first:</p>
<p align="center"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/46/0486.CreateAnAgentGroup.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-41-46/0486.CreateAnAgentGroup.PNG" border="0" />&nbsp;</p>
<p align="center"><b>Figure 1: Creating a new group</b></p>
<ol>
<li>Open the Lync Server Control Panel (<a href="https://pool.fqdn.com/CSCP/">https://pool.fqdn.com/CSCP/</a>)</li>
<li>Navigate to 'Response Groups' panel</li>
<li>Click on the 'Group' tab</li>
<li>Click the New button to create a new agent group</li>
<li>Select the site that will host the new agent group</li>
<li>Enter value to configure your agent group
<ul>
<li>Enter a Name</li>
<li>Enter a Description</li>
<li>Select the participation policy</li>
<li>Select the agent alert time</li>
<li>Select the agents that will be part of the agent group (or enter a distribution group address)</li>
</ul>
</li>
<li>Commit the changes</li>
</ol>
<p><br />Now let's do the same but with the Lync Server Management Shell.</p>
<ol>
<li>Open the Shell or Import the Lync module to your PowerShell console. <br />PS C:\&gt; Import-Module Lync</li>
<li>Get the service identity that will host your agent group<br />PS C:\&gt; $serviceId="service:"+(Get-CSService | ?{$_.Applications -like "*RGS*"}).ServiceId;</li>
<li>Create the new agent group (if you don't use the InMemory flag, this agent group will be saved directly in the database).<br />PS C:\&gt; $ag = New-CsRgsAgentGroup -Name "My first PS agent group" -Parent $serviceId;</li>
<li>Enter a description (optional)<br />PS C:\&gt; $ag.Description = "Contain the agents working from 1pm to 6pm";</li>
<li>Enter a participation policy<br />PS C:\&gt; $ag.ParticipationPolicy = "Formal"</li>
<li>Enter the agent alert time<br />PS C:\&gt; $ag.AgentAlertTime = "20"</li>
<li>Add the agents to the collection<br />PS C:\&gt; $ag.AgentsByUri.Add("sip:pool0_agent1@vdomain.com")<br />PS C:\&gt; $ag.AgentsByUri.Add("sip:pool0_agent2@vdomain.com")<br />PS C:\&gt; $ag.AgentsByUri.Add("sip:pool0_agent3@vdomain.com")</li>
<li>Save the changes (if you do it in one line and without the 'InMemory' flag, you don't need to set the agent group a second time).<br />PS C:\&gt; Set-CsRgsAgentGroup $ag</li>
</ol>
<p><br />You now have your first agent group created and saved in the database! Congrats :-). <br />Next step will be to create a queue, which is where the callers are placed on hold until an agent from an agent group answer the call.</p>]]></content:encoded>
    </item>
    <item>
      <title>Creating a Response Group #1: Enabling an AD User to be a Lync User with Enterprise Voice Enabled</title>
      <link>https://docs.microsoft.com/archive/blogs/ahgyger/creating-a-response-group-1-enabling-an-ad-user-to-be-a-lync-user-with-enterprise-voice-enabled</link>
      <pubDate>Thu, 21 Oct 2010 05:52:00 GMT</pubDate>
      <dc:creator><![CDATA[Ahmet Gyger]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ahgyger/2010/10/21/creating-a-response-group-1-enabling-an-ad-user-to-be-a-lync-user-with-enterprise-voice-enabled/</guid>
      <description><![CDATA[The first step in the journey to create a Response Group is to have Lync User with Enterprise voice...]]></description>
      <content:encoded><![CDATA[<p>The first step in the journey to create a Response Group is to have Lync User with Enterprise voice enabled. </p>
<p>I am using the Lync Server Management Shell, if I were using another PowerShell I would have to import the Lync Module first: &nbsp;<i>Import-Module Lync</i>.</p>
<ul>
<li>1. Identify the AD user we want to add: <br /><i>$user = Get-CsAdUser |? {$_.FirstName -Like "Ahmet"}</i></li>
<li>2. Enable this AD user to become a Lync Server user.<br /><i>$registrar = (Get-CsService |? {$_.Role -like "Registrar"}).PoolFqdn<br />Enable-CsUser -Identity $user.Name -RegistrarPool $registrar -SipAddressType SamAccountName -SipDomain "vdomain.com"</i></li>
<li>3. Enable the Lync user to be Enterprise Voice Enabled <br /><i>Set-CsUser $user.Id -EnterpriseVoiceEnabled $true</i></li>
</ul>
<p>If you forget to enable your agent for enterprise voice you can still add him to an AgentGroup but he will not be eligible to get call from the Response Group (he will not receive any invite). You would see a warning logged in the Event log once Active Directory happen (roughly every 8 hours).</p>
<p>The next step, now that we have valid users, will be to create an AgentGroup.</p>]]></content:encoded>
    </item>
  </channel>
</rss>