Giter Site home page Giter Site logo

taco's Introduction

Microsoft Teams AA/CQ Orchestrator App

Solution overview Deployment guide Configuration guide FAQ Support

A delegated Admin application for Auto Attendant and Call Queue management

What's in it for you

Microsoft Teams provides an administration portal (Teams Admin Center (TAC)) to manage the different telephony services including auto attendants and call queues for the organization. To access this portal, you need to assign one of the administrator roles defined here. To manage the auto attendants and call queues, the minimum required role is "Teams Administrator" - This role is then applied at the scope of the Azure AD tenant, meaning all users in your organization.

Currently the Teams Admin Center does not provide the ability to delegate access to for example the owners of auto attendants to change the greeting or change business hours. This can only be changed by a user who has access to the Teams Admin Center. This application will provide organizations a method to delegate the administration of auto attendants and call queues.

As of today, this application supports the following scenarios:

  • Auto Attendant
  • Change greeting
  • Change call routing options (except changing the menu options)
  • Set business hours (max 1 additional timeslot per day)
  • Change holiday call settings
  • Call queue
  • Change greeting
  • Change music on hold
  • Change call overflow handling
  • Change call timeout handling

The architecture of this solution can be adapted to support other scenarios that require delegated admin management of Teams phone system or any other feature accessible via PowerShell cmdlet or even MS Graph API.

If you want to start using the solution yourself review the Wiki for the deployment and configuration steps.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

Reference documentation

Microsoft Teams PowerShell module

Azure

taco's People

Contributors

johanveldhuis avatar josverl avatar mawiley avatar microsoft-github-operations[bot] avatar microsoftopensource avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

taco's Issues

[Bug]: Auto Attendant: Call Routing: text label cut off

What happened?

When selecting redirect: voicemail as call routing option the text label Call routing voice... is being seen which makes it hard to understand for users what this option does

image

What is the version of the App?

V1.0

What were the steps you followed?

  1. Edit an Auto Attendant
  2. Set the Call routing Options to redirect: voicemail
  3. Text label is cut off

Area in which the issue occurred

PowerApp

Relevant log output

No response

[bug]: Export-CsCallQueue: CallTimeoutAction and OverflowAction are sometimes resulting in issues

Hello,

I am not sure if I should create a new discussion channel :), however I am facing strange error as well.

I configured all as described and in my case I am facing issue directly on Azure function when I am importing call queues to share point list

image

Seems like PowerShell module load is broken. I have checked all variables, secrets, modules directly in function file store and all is ok.

Have anybody experienced same issue please?

Thank you

[Bug]: Get-CSCallQueue -Name returns multiple entries in case of partial match

What happened?

  • A bug happened!
    Import all Call Queues Power Automate has an error because the

"Get-CSCallQueue -name" command in the Export-CallQueues function give back more than 1 result if the CQ names similar like "Helpdesk", "IT Helpdesk"

  • I fixed it in my version on the following way:
    in the foreach ($CQName in $CallQueues) loop
    Added:
    $cqs=@()
    and added all others command to one more foreach loop :
    foreach ($cq in $cqs) { }

What is the version of the App?

V0.1

What were the steps you followed?

  1. Start the Power Automate : Import all call queues

Area in which the issue occurred

Call Queues

Relevant log output

No response

Service account is not assigned permission to Key vault if different account is used to deploy Azure resources

Discussed in #8

Originally posted by Josverl July 25, 2022
Hi,

@peakers1976, I moved your question to the Q&A section

I have had a couple of attempts at deploying the application with little success. It could be that I am missing something but I have followed the deployment guide step by step.

The deployment of the script appears to work and I do not get any failure output.

image

The first problem I encountered is the secrets list/get permissions do not get applied for the service account, I need to manually add the account, the only accounts that get added are the app service principal name and the admin account I run the script.

image

The second problem is when I import the solution into PowerApps. the documentation states that I should be able to click next and define the variables, this does not happen, it only gives me the option to import.

image

image

I then have to manually go through and update the variables in the solution

VAR - FunctionKey: value of the host function key
VAR - Tenant: tenantname, for example contoso
VAR - application id: Application (Client) ID of the App registration in Azure AD
VAR - FunctionApp: name of the function app
VAR - TeamsvoicemanagementSPSite: SharePoint Site name

additionally this variable

image

After I update the SharePoint site, I need to edit all of the Sharepoint list entries

image

Finally, none of the Cloud Flows are enabled by default "Not sure if this is by design" if i use the import-CallQueue flow to import auto attendants as per below steps:

Automatically adding Auto Attendants
Perform the following steps to import the configuration of the call queues into the SharePoint Lists:

Browse to https://make.powerapps.com/
From the left menu select solutions
In the solutions overview click on the ... next to Auto Attendant and Call Queue Management and select the option Edit
Search for the item Import-CallQueue click on the ... and select Details followed by Details in a new tab
From the top menu bar select the option run
Wait until the flow has completed

first, I notice that the Get Secret has the incorrect secret name.

image

I need to update it with the correct result

image

The URI is incorrect for the POST method so I needed to update that.

Finally, it fails with the following error

image

Any advice would be appreciated as it seems to be that some automation is not working as it should.

Thank you,
@peakers1976,

Originally posted by @peakers1976 in #5 (comment)

Secret name for the import-callqueue flow is incorrect

Discussed in #8

Hi,

@peakers1976, I moved your question to the Q&A section

I have had a couple of attempts at deploying the application with little success. It could be that I am missing something but I have followed the deployment guide step by step.

The deployment of the script appears to work and I do not get any failure output.

image

The first problem I encountered is the secrets list/get permissions do not get applied for the service account, I need to manually add the account, the only accounts that get added are the app service principal name and the admin account I run the script.

image

The second problem is when I import the solution into PowerApps. the documentation states that I should be able to click next and define the variables, this does not happen, it only gives me the option to import.

image

image

I then have to manually go through and update the variables in the solution

VAR - FunctionKey: value of the host function key
VAR - Tenant: tenantname, for example contoso
VAR - application id: Application (Client) ID of the App registration in Azure AD
VAR - FunctionApp: name of the function app
VAR - TeamsvoicemanagementSPSite: SharePoint Site name

additionally this variable

image

After I update the SharePoint site, I need to edit all of the Sharepoint list entries

image

Finally, none of the Cloud Flows are enabled by default "Not sure if this is by design" if i use the import-CallQueue flow to import auto attendants as per below steps:

Automatically adding Auto Attendants
Perform the following steps to import the configuration of the call queues into the SharePoint Lists:

Browse to https://make.powerapps.com/
From the left menu select solutions
In the solutions overview click on the ... next to Auto Attendant and Call Queue Management and select the option Edit
Search for the item Import-CallQueue click on the ... and select Details followed by Details in a new tab
From the top menu bar select the option run
Wait until the flow has completed

first, I notice that the Get Secret has the incorrect secret name.

image

I need to update it with the correct result

image

The URI is incorrect for the POST method so I needed to update that.

Finally, it fails with the following error

image

Any advice would be appreciated as it seems to be that some automation is not working as it should.

Thank you,
@peakers1976,

Originally posted by @peakers1976 in #5 (comment)

[Bug]: JSON validation error for export-callqueue and export-autoattendant

What happened?

when running export-* cmdlets and reviewing the log information an error is thrown when validating the JSON

What is the version of the App?

V0.1

What were the steps you followed?

  1. Open Azure Function
  2. Select one of the export- functions
  3. run the function manually

Area in which the issue occurred

Call Queues

Relevant log output

2022-08-05T13:53:16.842 [Error] ERROR: Cannot parse the JSON.Exception             :Type           : System.ExceptionMessage        : Cannot parse the JSON.InnerException :Type         : Newtonsoft.Json.JsonReaderExceptionLineNumber   : 1LinePosition : 6TargetSite   :Name          : LoadDeclaringType : Newtonsoft.Json.Linq.JObjectMemberType    : MethodModule        : Newtonsoft.Json.dllStackTrace   :at Newtonsoft.Json.Linq.JObject.Load(JsonReader reader, JsonLoadSettings settings)at Newtonsoft.Json.Linq.JObject.Parse(String json, JsonLoadSettings settings)at Microsoft.PowerShell.Commands.TestJsonCommand.ProcessRecord()Message      : Error reading JObject from JsonReader. Current JsonReader item is not an object: String. Path '', line 1, position 6.Source       : Newtonsoft.JsonHResult      : -2146233088HResult        : -2146233088TargetObject          : "\"\""CategoryInfo          : InvalidData: ("\"\"":String) [Test-Json], ExceptionFullyQualifiedErrorId : InvalidJson,Microsoft.PowerShell.Commands.TestJsonCommandInvocationInfo        :MyCommand        : Test-JsonScriptLineNumber : 37OffsetInLine     : 48HistoryId        : 1ScriptName       : C:\home\site\wwwroot\Export-CallQueue\run.ps1Line             : $Result = $Request.Body | ConvertTo-Json | Test-Json -Schema $SchemaPositionMessage  : At C:\home\site\wwwroot\Export-CallQueue\run.ps1:37 char:48+ …  $Result = $Request.Body | ConvertTo-Json | Test-Json -Schema $Schema+                                               ~~~~~~~~~~~~~~~~~~~~~~~~~PSScriptRoot     : C:\home\site\wwwroot\Export-CallQueuePSCommandPath    : C:\home\site\wwwroot\Export-CallQueue\run.ps1InvocationName   : Test-JsonCommandOrigin    : InternalScriptStackTrace      : at <ScriptBlock>, C:\home\site\wwwroot\Export-CallQueue\run.ps1: line 37PipelineIterationInfo :Microsoft.Azure.WebJobs.Script.Workers.Rpc.RpcException : Result: ERROR: Cannot parse the JSON.Exception             :Type           : System.ExceptionMessage        : Cannot parse the JSON.InnerException :Type         : Newtonsoft.Json.JsonReaderExceptionLineNumber   : 1LinePosition : 6TargetSite   :Name          : LoadDeclaringType : Newtonsoft.Json.Linq.JObjectMemberType    : MethodModule        : Newtonsoft.Json.dllStackTrace   :at Newtonsoft.Json.Linq.JObject.Load(JsonReader reader, JsonLoadSettings settings)at Newtonsoft.Json.Linq.JObject.Parse(String json, JsonLoadSettings settings)at Microsoft.PowerShell.Commands.TestJsonCommand.ProcessRecord()Message      : Error reading JObject from JsonReader. Current JsonReader item is not an object: String. Path '', line 1, position 6.Source       : Newtonsoft.JsonHResult      : -2146233088HResult        : -2146233088TargetObject          : "\"\""CategoryInfo          : InvalidData: ("\"\"":String) [Test-Json], ExceptionFullyQualifiedErrorId : InvalidJson,Microsoft.PowerShell.Commands.TestJsonCommandInvocationInfo        :MyCommand        : Test-JsonScriptLineNumber : 37OffsetInLine     : 48HistoryId        : 1ScriptName       : C:\home\site\wwwroot\Export-CallQueue\run.ps1Line             : $Result = $Request.Body | ConvertTo-Json | Test-Json -Schema $SchemaPositionMessage  : At C:\home\site\wwwroot\Export-CallQueue\run.ps1:37 char:48+ …  $Result = $Request.Body | ConvertTo-Json | Test-Json -Schema $Schema+                                               ~~~~~~~~~~~~~~~~~~~~~~~~~PSScriptRoot     : C:\home\site\wwwroot\Export-CallQueuePSCommandPath    : C:\home\site\wwwroot\Export-CallQueue\run.ps1InvocationName   : Test-JsonCommandOrigin    : InternalScriptStackTrace      : at <ScriptBlock>, C:\home\site\wwwroot\Export-CallQueue\run.ps1: line 37PipelineIterationInfo :Exception: Cannot parse the JSON.Stack:

[Bug]: Auto Attendant: Groupname not validated when selecting redirect to voicemail

What happened?

When providing a groupname in the Call Routing Field the value is not correctly validated which results in a red cross

What is the version of the App?

V1.0

What were the steps you followed?

  1. Edit an AA
  2. Change the call routing options to Redirect: Voicemail
  3. Specify a valid groupname

Area in which the issue occurred

PowerApp

Relevant log output

No response

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.