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:
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:
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.
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:
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:
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.
Azure BOT requires a dedicated Azure Application, to be created by following below procedure.
Before proceeding with additional configurations, please send the following collected data to Imagicle Team:
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.
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 East: https://eu.api.imagicle.com/microsoft-integrations/calling-webhook/v1/app_id/teams-call-events
United Kingdom: https://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:
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.
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.
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 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.
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.
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)
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
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
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.
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:
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: