Annex 1: Application Permissions
Please find all required permissions, used by AnywhereNow Dialogue Cloud Infinity, below along with reasoning why they are needed.
Back-end Application Permissions

Description:
Allows the app to read presence information of all users in the directory on behalf of the signed-in user. Presence information includes activity, availability, status note, calendar out-of-office message, timezone and location.
Why is this needed?
To allow Infinity to retrieve the current presence of configured agents, so that routing decisions can be made.
Permission name:
Microsoft Graph > Presence.Read.All
Permission type:
Delegated

Description:
Allows the app to read user profiles without a signed in user.
Why is this needed?
This is used to convert User Principal Names into Object Ids required to invite colleagues into meetings.
Permission name:
Microsoft Graph > User.Read.All
Permission type:
Application

Description:
Allows the app to get direct access to media streams in a call, without a signed-in user.
Why is this needed?
Reserved for future use, when implementing functionalities requiring media (e.g. recording).
Permission name:
Microsoft Graph > Calls.AccessMedia.All
Permission type:
Application

Description:
Allows the app to place outbound calls to a single user and transfer calls to users in your organization’s directory, without a signed-in user.
Why is this needed?
Reserved for future use, when initiating outbound capabilities.
Permission name:
Microsoft Graph > Calls.Initiate.All
Permission type:
Application

Description:
Allows the app to place outbound calls to multiple users and add participants to meetings in your organization, without a signed-in user.
Why is this needed?
Reserved for future use, when initiating outbound capabilities.
Permission name:
Microsoft Graph > Calls.InitiateGroupCall.All
Permission type:
Application

Description:
Allows the app to join group calls and scheduled meetings in your organization, without a signed-in user. The app will be joined with the privileges of a directory user to meetings in your organization.
Why is this needed?
This is required to let the Calling Bot Application join meetings as an app having advanced capabilities.
Permission name:
Microsoft Graph > Calls.JoinGroupCall.All
Permission type:
Application

Description:
Allows the app to anonymously join group calls and scheduled meetings in your organization, without a signed-in user. The app will be joined as a guest to meetings in your organization.
Why is this needed?
This is required to let the Calling Bot Application join meetings as a guest user without advanced capabilities.
Permission name:
Microsoft Graph > Calls.JoinGroupCallAsGuest.All
Permission type:
Application

Description:
Allows the app to read all recordings of all online meetings, without a signed-in user.
Why is this needed?
Reserved for future use, when implementing recording functionalities.
Permission name:
Microsoft Graph > OnlineMeetingRecording.Read.All
Permission type:
Application

Description:
Allows the app to read online meeting details in your organization, without a signed-in user.
Why is this needed?
This is required to retrieve information of online meetings, and validate if only allowed participants are in the meeting.
Permission name:
Microsoft Graph > OnlineMeetings.Read.All
Permission type:
Application

Description:
Allows the app to read and create online meetings as an application in your organization.
Why is this needed?
This is required to create online meetings that both the Customer and the Agent will join.
Permission name:
Microsoft Graph > OnlineMeetings.ReadWrite.All
Permission type:
Application

Description:
Allows the app to read all presence information and write activity and availability of all users in the directory without a signed-in user. Presence information includes activity, availability, status note, calendar out-of-office message, time zone and location.
Why is this needed?
Reserved for future use, when implementing features that require presence changes.
Permission name:
Microsoft Graph > Presence.ReadWrite.All
Permission type:
Delegated

Description:
Allows users to sign-in to the app, and allows the app to read the profile of signed-in users. It also allows the app to read basic company information of signed-in users.
Why is this needed?
This is required to sign you in and show basic information in the web application like display name.
Permission name:
Microsoft Graph > User.Read
Permission type:
Delegated
Client Application Permissions

Description:
Start, join, forward, transfer, or leave Teams calls and update call properties.
Why is this needed?
To allow the WebAgent to handle audio calls directly from within the browser.
Permission name:
Azure Communication Services > Teams.ManageCalls
Permission type :
Delegated

Description:
Create, read, update, and delete one to one or group chat threads on behalf of the signed-in user. Read, send, update, and delete messages in chat threads on behalf of the signed-in user.
Why is this needed?
To allow the WebAgent to handle Teams chat conversations directly from within the browser (currently reserved for future use, but required to handle Teams audio calls via the browser directly).
Permission name:
Azure Communication Services > Teams.ManageChats
Permission type :
Delegated

Description:
Allows the app to read events in user calendars.
Why is this needed?
To allow the WebAgent to display your own calendar, and show your upcoming events.
Permission name:
Microsoft Graph > Calendars.Read
Permission type:
Delegated

Description:
Allows the app to read events in all calendars that the user can access, including delegate and shared calendars.
Why is this needed?
To allow the WebAgent to display calendar events from shared calendars indicating whether or not colleagues are available to take a call.
Permission name:
Microsoft Graph > Calendars.Read.Shared
Permission type:
Delegated

Description:
Allows the app to read a ranked list of relevant people of the signed-in user. The list includes local contacts, contacts from social networking, your organization's directory, and people from recent communications (such as email and Skype).
Why is this needed?
To allow the WebAgent to populate the contacts list and lets you search for contacts.
Permission name:
Microsoft Graph > People.Read
Permission type:
Delegated

Description:
Allows the app to read presence information on behalf of the signed-in user. Presence information includes activity, availability, status note, calendar out-of-office message, timezone and location.
Why is this needed?
To allow the WebAgent to display your personal presence information.
Permission name:
Microsoft Graph > Presence.Read
Permission type:
Delegated

Description:
Allows the app to read presence information of all users in the directory on behalf of the signed-in user. Presence information includes activity, availability, status note, calendar out-of-office message, timezone and location.
Why is this needed?
To allow the WebAgent to display the current presence of users in the contact list.
Permission name:
Microsoft Graph > Presence.Read.All
Permission type:
Delegated

Description:
Allows users to sign-in to the app, and allows the app to read the profile of signed-in users. It also allows the app to read basic company information of signed-in users.
Why is this needed?
To allow the WebAgent to sign you in and to show basic information for example your display name.
Permission name:
Microsoft Graph > User.Read
Permission type:
Delegated

Description:
Allows the app to read the full set of profile properties, reports, and managers of other users in your organization, on behalf of the signed-in user.
Why is this needed?
To allow the Admin Portal to search for colleagues and display their contact details (including the corresponding manager details).
Permission name:
Microsoft Graph > User.Read.All
Permission type:
Delegated

Description:
Allows the app to read a basic set of profile properties of other users in your organization on behalf of the signed-in user. This includes display name, first and last name, email address and photo.
Why is this needed?
To allow the WebAgent to search for colleagues and display their contact details. This is required when a call should be transferred to a colleague for example.
Permission name:
Microsoft Graph > User.ReadBasic.All
Permission type:
Delegated