Presence Provider

Introduction

The Presence Provider is a module of the UCCUCC stands for Unified Contact Center and consists of a queue that can be handled by Agents Each Contact Center has its own settings, interactive voice response questions and Agent with specific skills. Agents can be member of, or sign up to, one or more Contact Centers. CoreThe Core is the center of Anywhere365. It manages all the Dialogues. application which has the following characteristics:

The main drive to develop purpose of the Presence Provider this feature is to lower the amount of SIPThe Session Initiation Protocol (SIP) is a protocol to make multimedia communication (audio, video and other data communication) possible and it is also used for Voice over IP (VoIP). SIP has similarities with other Internet protocols such as HTTP and SMTP. traffic for presence subscriptions. ThereforeFor this, the module gathers the Presence usage of agents for all UCC's inside a single application. For each unique agent, the Presence Provider will register only once. It will monitor the presence subscription and will restore the subscription if needed, which That will happen in case the presence subscription is terminated or the endpoint used for the presence view is terminated.

 

Prerequisites

  • Anywhere365 Installation account is needed, Learn More

 

Installation

New installations or updates of the primary Anywhere365 Core wil create the required applications and endpoints automatically if this does not exist yet. However manual creation of Presence Provider applications and endpoints may be required (to adhere to company naming conventions or when adding Enterprise+ services for example).

For creation of the required Trusted Application and Trusted Application Endpoints regular Skype for Business Powershell commands can be used.

  1. Define a unique name and an available port number for the Trusted Application.

  2. Open Powershell as Administrator

  3. Run command like (replacing bold letters with the defined unique names):

    New-CsTrustedApplication -ApplicationId ucc_presenceprovider01 -TrustedApplicationPoolFqdn Trustpool.example.com -Port 6120

  4. When requested by Skype for Business run the command:

    Enable-CsTopology

  5. When enable topology has finished, create the Trusted Application Endpoint

  6. Run the command like (replacing bold letters with the defined unique names):

    New-CsTrustedApplicationEndpoint -ApplicationId ucc_presenceprovider01 -TrustedApplicationPoolFqdn Trustpool.example.com -SipAddress sip: ucc_presenceprovider01@sipdomain.com

  7. Apply any necessary policies to the sip endpoint according to your internal Skype for Business guidelines

  8. Create a server firewall inbound rule for the port number selected for the Trusted Application (to allow the FrontEndPool servers to communicate with the Presence Provider Trusted Application).

Tip You could use the EXTRA UCC script for the above but remember to manually remove the 3 system endpoints that are automatically created with that script.

For creating the optional User Endpoint (in Hybrid with Skype for Business Online topologies) use the established procedures for adding useraccounts and sipaddresses available in your company.

 

Configuration

The presence provider needs a separate Application Id, an Application Endpoint (mandatory) and a User Endpoint (optional). The following additional settings must be configured in the configuration file.

6.3: C:\ProgramData\Anywhere365\Core\Service\UnifiedContactCenterService\Config.xml

6.0: C:\Program Files\Anywhere365\Core\Config.xml

5.0: C:\Program Files\UCC\Config.xml

<?xml version="1.0" encoding="utf-8"?>

<config version="1.5">

<License>license.key</License>

​<PresenceProvider maxPresenceSubscriptionsPerSecond="15" failedPresenceSubscriptionsResubscribeDelay="15" maxFailedPresenceSubscriptionsPerUri="3">

<UcmaPresenceSource enabled="true" ApplicationId="urn:application:ucc_presenceprovider01​" >

<UserEndpoint UserUri="sip:demo_user@sipdomain.com" PoolFqdn="" />

<ApplicationEndpoint OwnerUri="sip:ucc_presenceprovider01@sipdomain.com" />

</UcmaPresenceSource>

<PstnPresenceSource enabled="true" />

<AttendantServiceSource enabled="false">

<Match pattern="domain.com" />

<Match pattern="domain2.com" />

</AttendantServiceSource>

</PresenceProvider>

The PresenceProvider Element in the config.xml file contains 4 attributes:

  1. FailedPresenceSubscriptionsResubscribeDelay = If a subscription has been failed this delay is applied before a next attempt is issued. Optional parameter. If not defined, the default is taken (900 seconds) [unit is seconds].

  2. MaxFailedPresenceSubscriptionsResubscribeDelay (since 6.4.5) = Retries are now implemented using exponential back-off. MaxFailedPresenceSubscriptionsResubscribeDelay indicates the maximum delay in the exponential sequence. For example: if FailedPresenceSubscriptionResubscribeDelay is 10 seconds, then the retry values will be [10, 20, 40, 80, 160, ..., MaxFailedPresenceSubscriptionsResubscribeDelay]. If not defined, the default is taken (8 hours, which is 28800 seconds) [unit is seconds]

  3. MaxPresenceSubscriptionsPerSecond = Throttle for the maximum number of subscriptions per second. Optional parameter. If not defined, the default is taken (15 seconds) [unit is seconds].

  4. MaxFailedPresenceSubscriptionsPerUri = If this limit is exceeded, the Presence Provider quits with retrying. The subscription process is stopped for the particular Uri. If set to zero, this parameter is ignored. Default value if not specified (3).

 

The PresenceProvider Element can contain 3 different sources.

  • AttendantServiceSource =If enabled, then Agents that match the sipdomain patterns defined in the configuration will use the AttendantService to manage their presence. This is for example used when Snapper needs to be used to detect local agent presence and changes.

  • PstnPresenceSource = If enabled, then Agents that use an E.164 lineuri as sipaddress (PSTN agents) will use this source. This source is managed internally by the UCC. (PSTN presence states can only be marked as available or busy)

  • UcmaPresenceSource = If enabled, the source used if a not more specific source matches. This source reflects the Skype Presence which is obtained via UCMA. The source can be configured with a single Application Endpoint or a Single User Endpoint or both an Application and a User Endpoint. Both endpoints must be registered on premises. The Single User endpoint must exist, but not be used in a Skype client by a user. The UserEndpoint will only be used to subscribe to an agent’s presence which is homed on Skype for Business Online.

 

Examples of behavior

Which PresenceSource is used for agent address sip example@workstreampeople.com?

  • If the AttendantServiceSource is enabled and <Match pattern="workstreampeople.nl" /> and <Match pattern="workstreampeople.com" /> is configured,

    • 'sip:example@workstreampeople.com' does not match the pattern 'workstreampeople.nl'

    • 'sip:example@workstreampeople.com' matches the pattern 'workstreampeople.com'

Result = The AttendantServiceSource is used

 

Which PresenceSource is used for (PSTN) Agent tel:+31612345678?

  • If the AttendantServiceSource is enabled and <Match pattern="workstreampeople.nl" /> and <Match pattern="workstreampeople.com" /> is configured,

    • 'tel:+31612345678' does not match the pattern 'workstreampeople.nl'

    • 'tel:+31612345678 ' does not match the pattern 'workstreampeople.com'

  • If the PstnPresenceSource is enabled

    • 'tel:+31612345678' matches an E/164 lineuri

Result = The PstnPresenceSource is used

 

Which presence source is used for agent address sip:example@anywhere365.net?

  • The AttendantServiceSource is enabled and <Match pattern="workstreampeople.nl" /> and <Match pattern="workstreampeople.com" /> is configured,

    • 'sip:example@anywhere365.net' does not match the pattern 'workstreampeople.nl'

    • 'sip:example@anywhere365.net ' does not match the pattern 'workstreampeople.com'

  • The PstnPresenceSource is enabled

    • 'sip:example@anywhere365.net' does not match an E.164 lineuri

  • The UcmaPresenceSource is enabled

Result = The UcmaPresenceSource is used

 

You always need to enable the PstnPresenceSource if you are using PSTN Agents. It means that your PSTN Agents will not be called by a UCC if they are already in call with this UCC Service.

You need to enable the AttendantServiceSource for Agents that use other clients not detectable by UCMA in which they can set their presence, such as the Snapper. (also requires proper configuration of Snapper, i.e. Update AgentPresence in UCC).

You always need to enable the UcmaPresenceSource for those Agent subscriptions that are not covered by the other Presence Sources.

You only need to configure a UserEndpoint in the UcmaPresenceSource if you are using a Hybrid environment and want to subscribe to presence on a user in the same sipdomain but is homed on Skype for Business Online. This does not apply when the agent had Skype for Business Public FederationFederation makes it possible to communicate with customers, suppliers, partners and others, via Lync Server 2010 and Lync Server 2013, which are not in the same Lync environment. with the Anywhere365 topology.

 

Attributes

UcmaPresenceSource has 2 attributes (enabled:true/false, ApplicationId)

  1. Enabled Indicates that this source is enabled

  2. ApplicationId (mandatory). This is an additional application id.

The source must contain 1 ApplicationEndpoint element and 0/1 UserEndpoint elements

ApplicationEndpoint has 1 attribute

  1. OwnerUri = The sipuri of the endpoint

​UserEndpoint has 2 attributes

  1. UserUri = The sipuri of the user

  2. PoolFqdn (optional) = the pool fqdnA fully qualified domain name (FQDN), sometimes also referred as an absolute domain name, is a domain name that specifies its exact location in the tree hierarchy of the Domain Name System (DNS). of the user, if autodiscovery fails (possible formats: <fqdn> / <fqdn:port>)

PstnPresenceSource has 1 attribute

  1. Enabled = Indicates that this source is enabled

AttendantServiceSource has 1 attribute

  1. Enabled = Indicates that this source is enabled

The source must contain 1 or more Match elements

Match has 1 attribute

  1. pattern= ​The regex pattern to match the Agents uri

 

UCC service needs to be restarted for the changes to take effect. Every new subscription request that matches one of the AttendantServiceSource patterns will only be using the AttendantService presence source.

There is no limitation in the amount of Match elements added to the AttendantServiceSource element.

 

Logging

In this section some of the most interesting logging entries.

Description

Log

Configuration line, which shows all parameters. In this case one application endpoint and no user endpoint.

2018-05-08 14:05:26,467 [1] UccStarter INFO - PresenceProviderConfiguration:: MaxFailedPresenceSubscriptionsPerUri: 3, FailedPresenceSubscriptionsResubscribeDelay: 60MaxPresenceSubscriptionsPerSecond 15, ApplicationId: urn:application:ucc_app14_1, ApplicationEndpoints:[sip:ucc_app01@anywhere365.net] UserEndpoints:[]

Request from within Ucc for subscribing an agent.

2018-05-08 14:05:48,159 [5] ucc_app01 INFO - PresenceProviderClient::Subscribe sipUrisip:user1@domain.com

Presence change (Ucc level, reported on behave of the UCC)

2018-05-08 14:07:11,174 [6] ucc_app01 DEBUG - ucc_app01 Presence change: 'sip:user1@domain.com' Away : 15500 : : Computer : SameEnterprise Formal:False, Active:True. WspModalityCapabilities: (audio: True, video: True, text: True)

Presence change event received by UCC. Reports both the new and the previous presence state.

2018-05-08 14:05:49,222 [31] ucc_app01 INFO - PresenceProviderClient::event PresenceChangedEventArgs: PreviousPresence: [], NewPresence: [PresenceNotificationEventArgs:: SipUri: sip:user1@domain.com WspModalityCapabilities: (audio: True, video: True, text: True), WspDeviceType: Computer, WspSourceNetwork: SameEnterprise, WspPresenceAvailability: Away, WspPresenceAvailabilityValue: 15500, ActivityToken: ]