Microsoft Teams Native Attendant Console integration to Imagicle UC Cloud Suite

Preparing the Microsoft environment

Imagicle Customer Service solution for Microsoft Teams, including Advanced Queuing, Attendant Console and optionally Auto Attendant, requires to accomplish some preliminary tasks and checks, to make sure that actual implementation goes smoothly without requiring multiple sessions with Imagicle Team.

Below list should be handled by customer/partner prior to schedule a remote session with Imagicle Team:

Requirements

Configuration Overview

To allow Internet SIP routing of inbound calls from MS Teams to Imagicle Advanced Queuing and Auto Attendant application + routing calls from Imagicle Cloud to MS-Teams users, you should configure a Direct Routing destination (Imagicle SBC), in turns associated to a route to Imagicle SBC for any number starting with +28 prefix, in turns associated to an Azure BOT/App Registration, in turns assigned to an actual customer's DID within own dial plan to allow reaching each Imagicle Queue/Auto Attendant from PSTN.

To enable such Internet SIP routing, the following tasks should be accomplished:

  1. Enable a second-level domain, associated to a Direct Routing destination (Imagicle Public SBC)
  2. Create a dummy Microsoft "E3" user, to be associated to above domain
  3. Create an "OnlineApplicationInstance" for each required Imagicle Queue/Auto Attendant service
  4. Associate each queue UPN to a Microsoft Teams Phone Resource Account license
  5. Finally, assign each queue UPN to an available PSTN number within customer's dial plan

Microsoft Teams Configurations from MS365 Admin Web Portal and PowerShell

Imagicle UC Cloud Suite is seen by Microsoft Teams as a new Direct Routing location equipped with a SIP-connected SBC. In Imagicle Cloud, a dedicated/shared Cisco CUBE (or vCUBE) "Public SBC" is deployed, to allow the Internet "OTT" Peering between Microsoft Teams cloud and Imagicle Cloud.

New Domain Setup

The following procedure can be autonomously accomplished by the customer/partner, to retrieve domain's "TXT" data and send them to Imagicle team. In this way, you can save time and proceed with further configurations.

Please login to Microsoft 365 Admin web portal and select Domains ⇒ Add Domain:

Domain Name must include the DNS name associated to Imagicle UC Cloud Suite deployed in Imagicle Cloud. This is the mandatory naming conventions:

Please do not use other naming formats and just replace "<company>" with own Company name (e.g., sbc-acme.customers.imagicle.cloud).

Click on "Use this domain" to display Domain verification page:

Please select "Add a TXT record to the Domain's DNS records" and hit "Continue":

Please copy above three items (TXT name, value and TTL) and send them to Imagicle team, so they can create relevant DNS entry in Imagicle Cloud DNS. Once Imagicle Cloud Services team confirms DNS creation, please hit "Verify".

NOTE: before proceeding disable the flag "[_] Exchange and Exchange Online Protection".

If DNS entry hasn't been created yet in Imagicle Cloud DNS, you get the following error message:

Please select "Skip and do this later (not recommended)" option to skip service activation.

Once Imagicle Cloud team has enabled the DNS entry, you will find new domain in the following status:

Create an Office 365 User

To enable call routing to/from the new created domain, at least one user with Office365 E3 license associated must be created in such domain. You can do it following the next steps:

Click "Add a user" and name it "imagicle":

Hit Next to display "Product licenses" page. Please assign an E3 user license at least, as per below sample:

Hit next to assign a permission level to new user. Simple "User" role is enough:

Hit Next to display a User's summary page. Please review entered data.

If all correct, please hit "Finish adding" to actually save new user. It subsequently appears in Active Users list. See below:

Common Voice Route to forward calls to Imagicle Cloud

If not yet done, please install MS Teams PowerShell module by issuing the following commands from PowerShell running as Administrator:

Install-Module MicrosoftTeams
Import-Module MicrosoftTeams
Connect-MicrosoftTeams​​

Please enter Tenant Administrator credentials, when requested.

Now enter the following command:

$FormatEnumerationLimit=-1
Get-CsTenant | fl *Domain*

The results should include a VerifiedDomains line, containing the new domain added at the beginning of this procedure. See below sample:

If new domain does not appear in the list, please repeat Get-CsTenant command until it shows up.

Now you need to perform additional PS commands to enable the configuration of a common routing policies to transfer calls to Imagicle Cloud SBC and, in turns, to Imagicle queues and Auto Attendant services.

Please enter below command:

Set-CsOnlinePstnUsage -Identity Global -Usage @{Add="Imagicle_RT"}

Then the following command, where you need to replace sbc-companyname with the domain configured in previous paragraph. Remember the "us" or "me" prefixes, to be added respectively for North America and Middle-East.

New-CsOnlineVoiceRoute -Identity "Imagicle_VR" -NumberPattern "^\+28" -OnlinePstnGatewayList sbc-companyname.customers.imagicle.cloud -OnlinePstnUsages "Imagicle_RT"

The result should be similar to below screenshot sample:

If you get an error "Cannot find specified Gateway", please, check the FQDN you typed and ensure the previous steps (Office365 user creation) was successfull.

Now login as administrator to Microsoft Teams Admin Center and go to Voice ⇒ Direct Routing ⇒ Voice routes and Move up Imagicle_VR entry to the top priority 1 position, to make sure this special rule is always engaged for calls to be routed to Imagicle Cloud instance:

Imagicle Attendant Console leverages Microsoft three-party conference calls to answer inbound calls. This requires a "Microsoft 365 Audio Conferencing - Operator Connect Conferencing" license. If you already own an E5 license, then the conferencing feature is already included. Otherwise you can purchase this license from Microsoft Marketplace, for three years completely free of charge. See below:

Once assured that conferencing license is available, go to Meetings ⇒ Conference bridges ⇒ Bridge settings.

Turn off "Meeting entry and exit notifications", to avoid the voice prompt to be played when somebody is calling the Imagicle queue. See below:

To avoid a voice prompt asking to press 1 to accept inbound calls from Imagicle queues, please enter the following PowerShell command:

Get-CsOnlineDialInConferencingTenantSettings

and make sure that EnableDialoutJoinConfirmation is set to false. See below the outcome of above command and also the command to disable the confirmation:

Now go to Voice ⇒ Voice routing policies and locate the existing VRP used for PSTN breakout. You have two options:

Note: Please make sure that Imagicle_RT is added at the top of "PSTN usage" entries, otherwise it might happen that it is never engaged. We strongly suggest to move the Imagicle_RT to the top of the list.

Configurations from MS Azure Web Portal

Azure BOT requires a dedicated Azure Application, to be created by following below procedure.

Azure App Registration

Client Secret

API Permissions

Before proceeding with additional configurations, please send the following collected data to Imagicle Team:

Azure BOT

Please access to Microsoft Azure web portal as Administrator and search for Azure Bot from top search box, under the Marketplace section. See below:

Note: If you can't find "Azure Bot" menu item, please use the following direct URL: https://portal.azure.com/#create/Microsoft.AzureBot

If the admin account you are leveraging for configurations has a valid Azure subscription or it has been added as "Contributor", the following window appears, where you can create a new BOT by hitting "Create an Azure Bot" option.

In no valid Azure subscription is available, you can apply for the free plan and a credit card number is required to proceed. No charges are applied.

Connect BOT to MS Teams Channel

Newly defined BOT is the native MS Teams interface that Imagicle is using to transfer calls to own queues/auto attendants or to PSTN numbers. To achieve this goal, new BOT must be associated to MS Teams client by using a "Channel".

EU/Middle Easthttps://eu.api.imagicle.com/microsoft-integrations/calling-webhook/v1/app_id/teams-call-events

United Kingdomhttps://uk.api.imagicle.com/microsoft-integrations/calling-webhook/v1/app_id/teams-call-events​​​

America: https://us.api.imagicle.com/microsoft-integrations/calling-webhook/v1/app_id/teams-call-events

Canada: https://ca.api.imagicle.com/microsoft-integrations/calling-webhook/v1/app_id/teams-call-events

Japan: https://jp.api.imagicle.com/microsoft-integrations/calling-webhook/v1/app_id/teams-call-events

Now, please go back to PowerShell and issue this command to remove undesired BOT pop-ups during a call transfer:

Set-CsApplicationMeetingConfiguration -AllowRemoveParticipantAppIds @{Add="AppID"}

Please allows some minutes for the command to be accepted.

Once accepted, please enter next command, to verify that specified App-id appears in AllowRemoveParticipantAppIds properties:

Get-CsApplicationMeetingConfiguration

The result should be similar to below sample:

Specific configurations to apply for each Imagicle queue or auto attendant

The following steps must be done for each Imagicle ACD queue or AutoAttendant service (they are not needed for the Camp-On queue).

Please launch once again the PowerShell as administrator and enter the following command to create a new Application Instance to identify the queue/AA:

New-CsOnlineApplicationInstance -UserPrincipalName queuename@company.com -ApplicationId AppID

If the command is successful, you get an "Object ID" string. Please take note of this value, to be used in additional commands.

Now enter the following additional command to enable the Application Instance:

Sync-CsOnlineApplicationInstance -ObjectId ObjectID -ApplicationID AppID

If you get an error message like below sample, just ignore it and proceed with the procedure.

Assign the proper license to Imagicle queue

Now login as administrator to Microsoft 365 web portal and go to Users ⇒ Active Users ⇒ <queueUPN> ⇒ Licenses and Apps

Here you can assign two different license types:

ATTENTION: If you have purchased your Microsoft licenses from a Reseller and you can't find "Microsoft Teams Phone Resource Account” in the list of purchased licenses, then you need to contact your reseller and ask to add them. They are for free.

Now go back to PowerShell and launch this command: 

Get-CsOnlineUser -Identity queueUPN | Select-Object EnterpriseVoiceEnabled

Keep launching this command until the output contains "True", meaning the Resource Account license has been properly assigned.

Now you can associate the Imagicle queue/AA to an available PSTN DID in customer's dial plan by issuing the following command:

Set-CsPhoneNumberAssignment -Identity "queueUPN" -PhoneNumber "+xxxxxxxxxx" -PhoneNumberType <PSTN_TYPE>

Note: The actual queue or auto attendant pilot number to be configured in Imagicle UCX Cloud Suite corresponds to above +xxxxxxxx DID number, replacing "+" with "+28". For example, DID +17025551234 is routed to Imagicle as +2817025551234.

Now you can "grant" the VRP and associate it to newly created queue UPN:

Grant-CsOnlineVoiceRoutingPolicy -Identity queueUPN -PolicyName VRP

Please repeat above steps for each queue or Auto Attendant to be configured for this MS-Teams tenant.

Specific configurations to apply for each Imagicle Attendant Console operator

Operators using Imagicle Attendant Console and Advanced Queuing applications should have a Microsoft Teams valid phone license, otherwise they can't receive calls from Imagicle queues.

Operators using Imagicle Attendant Console and Advanced Queuing applications must own a SIP URI (for MS Teams client integration) or PSTN number in E.164 format (for SIP gateway deskphones integration).

Recording Policy Creation

Recording Policy is a group of rule policies which is assigned to each MS Teams user. The Recording Policy described in this paragraph allows an Attendant Console operator to handle up to 100 concurrent calls and 10,000 calls/month (Microsoft source). To handle a higher traffic volume, it might be required to create multiple Apps and BOTs to load balance the traffic.

The following procedure should be repeated for each operator using Attendant Console

New-CsOnlineApplicationInstance -UserPrincipalName attendant_name.surname -DisplayName display-name -ApplicationId app-id

Command output is similar to below sample:

Please take note of above "ObjectId". It is required below in this procedure.

"New-CsOnlineApplicationInstance" command might fail with an error message (read here for more details). Please make sure the user is associated to an online MS-Teams tenant. Please proceed by issuing the following commands, replacing attendant-object-id according to above data and by adding the usual AppID:

Sync-CsOnlineApplicationInstance -ObjectId attendant-object-id -ApplicationID AppID

If you get an error message like below sample, just ignore it and proceed with the procedure.

Recording Policy for Attendant Console only

If you are enabling the user to the Imagicle Attendant Console application only, run the following command. Instead, if you have also enabled Call Recording application for the agents, please, jump to the next section below.

New-CsTeamsComplianceRecordingPolicy -Identity Recording-policy-imagicle -Description "Recording-policy-description"
Set-CsTeamsComplianceRecordingPolicy -Identity Recording-policy-imagicle -Enabled $true -ComplianceRecordingApplications @(New-CsTeamsComplianceRecordingApplication -Parent Recording-policy-imagicle -Id attendant-object-id -RequiredBeforeMeetingJoin 0 -RequiredBeforeCallEstablishment 0 -RequiredDuringMeeting 0 -RequiredDuringCall 0)

Recording Policy for Attendant Console + Call Recording usage

If, for the same users, you are enabling Imagicle Attendant Console in combination with Imagicle Call Recording or another third-party application, then please add Recorder's (or Third Party app) Object-Id  (<recorder-object-id>) in the next command, to merge both applications into a single Imagicle Recording Policy:

New-CsTeamsComplianceRecordingPolicy -Identity Recording-policy-imagicle -Description "Recording-policy-description"
Set-CsTeamsComplianceRecordingPolicy -Identity Recording-policy-imagicle -ComplianceRecordingApplications @(New-CsTeamsComplianceRecordingApplication -Parent Recording-policy-imagicle -Id attendant-object-id -RequiredBeforeMeetingJoin 0 -RequiredBeforeCallEstablishment 0 -RequiredDuringMeeting 0 -RequiredDuringCall 0), @(New-CsTeamsComplianceRecordingApplication -Parent Recording-policy-imagicle -Id recorder-object-id -RequiredBeforeMeetingJoin 0 -RequiredBeforeCallEstablishment 0 -RequiredDuringMeeting 0 -RequiredDuringCall 0)

If one of the following error messages appears, just ignore it:

If you entered above merge command, please enable once again the Imagicle Recording Policy through the following command:

Set-CsTeamsComplianceRecordingPolicy -Identity Recording-policy-imagicle -Description "Recording-policy-description" -Enabled $true

Recording policy grant

Please wait few seconds and then execute next command to display Recording Policy data summary:

Get-CsTeamsComplianceRecordingPolicy -Identity Recording-policy-imagicle

Now it's time to assign newly defined Recording Policy to the specific user, by executing the following command that includes the target user UPN:

Grant-CsTeamsComplianceRecordingPolicy -Identity username@company.com -PolicyName recording-policy-imagicle
Get-CsOnlineUser username@company.com | ft sipaddress, tenantid, TeamsComplianceRecordingPolicy

Enterprise Voice Enablement

Operators must be enabled to Enterprise Voice, to receive calls from Imagicle queues. Please execute the following command to check this feature enablement:

Get-CsOnlineUser -Identity username@company.com | Select-Object EnterpriseVoiceEnabled

If the command returns a result as below screenshot, then this feature is disabled:

To enable Enterprise Voice, please execute the following command:

Set-CsPhoneNumberAssignment -Identity username@company.com -EnterpriseVoiceEnabled $true

Feature enablement might take several minutes to propagate within MS-Teams tenant. Please wait before testing queues call routing. You can repeat above Get-CsOnlineUser to double check actual enablement.

Troubleshooting

Attendant Console usage with MS-Teams clients

Please bear in mind that Imagicle Attendant Console does not currently support new MS-Teams client layout. Please keep "Try the new Teams" switch turned off, otherwise Attendant Console can't transfer calls to colleagues. See below:

Call Routing

If you are experiencing problems while routing PSTN calls to Imagicle queues/autoattendants, please launch "PSTN usage" report from "Usage reports" menu and select "Direct Routing" option. See below screenshot:



Article ID: 866
Last updated: 27 Mar, 2024
Revision: 88
Imagicle AppSuite for MS Teams -> Advanced Queueing -> Administration Guide -> Microsoft Teams Native Attendant Console integration to Imagicle UC Cloud Suite
https://kbp.imagicle.com/kb/entry/866/