Option Operator Board
Introduction
The 3iMedia Operator Board is a powerful search tool for SwyxWare users, groups, departments, queues and phonebook entries.
It can be used in SwyxIt! Web Extension or standalone in a browser. A predefined skin is provided.
Features
Interface description

| Item | Description |
| 1 | Active Filters |
| 2 | Save filter as template, show / hide locations and departments / clear filter |
| 3 | Locations (locations configured in SwyxWare) |
| 4 | Departments (groups in SwyxWare or special groups marked as department) |
| 5 | Result list containing users, queues, public phonebook entries |
Results
The results can contain all the abovementioned entries, like users, queues and public phonebook entries. Clicking on the avatar of the result entry shows a tab with further information like redirection state of the user. There are also standard-enhancing status available (offline, free, away, do not disturb, speaking internally, speaking externally, in a conference). There are also shortcuts for sending an e-mail or calling the contact or its redirection target.

Skin
A predefined skin "3iMedia Operator Board.cab" is available including 240 name keys, 10 line keys and the Operator Board.

Configuration
A configuration template can be downloaded from http://<servername>/QueueController/Options/Operatorboard/config_template.js
After adapting the template to your needs it has to be saved as config.js in /QueueController/Options/Operatorboard/
General (config.general)
General UI and system settings of the application.
| Parameter | Type | Default | Description |
| general.callHandle | String | tel: | Protocol prefix for outgoing calls. |
| general.reloadValue | Number | 4 | Interval or threshold for reloading data. |
| general.imagePlaceholder | String | ./img/personImage.svg | Path to the default placeholder image for users. |
| general.imageUserImagePath | String | /QueueController/UserImage.svg?UserName= | Base path for retrieving specific user images. |
| general.showFreeStatusTextOnResultChip | Boolean | true | Controls whether the "Free" status is displayed as text on the result chip. |
| general.resultChipFlow | String | row | CSS flexbox alignment for result chips (row or column). |
| general.dialMode | String | swyx | Defines the system for outgoing calls (swyx or teams). |
| general.dataMode | String | swyx | Defines the primary data source (swyx or teams). |
| general.displayFiltersCollapsed | Boolean | false | Shows or hides filters initially. |
Teams (config.teams)
Microsoft Teams, MSAL Auth, and Microsoft Graph API configurations.
| Parameter | Type | Default | Description |
| teams.authData.clientId | String | (leer) | The Application (client) ID of the Azure app registration. |
| teams.authData.tenantId | String | (leer) | The Directory (tenant) ID of Azure AD. |
| teams.authData.scope | Array | [User.Read.All, Group.Read.All, Presence.Read.All, Contacts.Read.Shared] | The Graph API permissions required for MSAL. |
| teams.authData.redirectUri | String | http://[::1]:8081/index.html | URI to which the user is redirected after MSAL login. |
| teams.authData.graph | String | https://graph.microsoft.com | Base URL of the Microsoft Graph API. |
| teams.authData.baseURI | String | https://graph.microsoft.com/v1.0 | Specific API version for Graph calls. |
| teams.authData.authority | String | https://www.google.com/search?q=https://login.microsoftonline.com/${TEAMS_TENANT_ID} | URL to the authentication instance incl. tenant ID. |
| teams.authConfig.clientId | String | (leer) | Client ID specifically for the MSAL configuration. |
| teams.authConfig.redirectUri | String | http://[::1]:8081/index.html | Redirect URI specifically for the MSAL configuration. |
| teams.authConfig.endpointRoot | String | https://www.google.com/search?q=https://login.microsoftonline.com/${TEAMS_TENANT_ID}/oauth2/v2.0/ | Base path for Azure AD OAuth 2.0 endpoints. |
| teams.contactAddresses.addresses | Array | [email-account@contact-data.com] | List of primary contact email addresses. |
| teams.contactAddresses.queryParameters | String | ?$top=100&$select=id,displayName,givenName,surname,mobilePhone, businessPhones,emailAddresses,companyName | OData query parameters for filtering contacts via Graph. |
| teams.endpoints.authorize | String | https://www.google.com/search?q=https://login.microsoftonline.com/${TEAMS_TENANT_ID}/oauth2/v2.0/authorize | OAuth 2.0 authorization endpoint. |
| teams.endpoints.token | String | https://www.google.com/search?q=https://login.microsoftonline.com/${TEAMS_TENANT_ID}/oauth2/v2.0/token | OAuth 2.0 token endpoint. |
| teams.endpoints.graph | String | https://graph.microsoft.com | Endpoint for base access to Microsoft Graph. |
| teams.endpoints.users | String | https://graph.microsoft.com/v1.0/users | Graph endpoint for retrieving all users. |
| teams.endpoints.contacts | String | https://graph.microsoft.com/v1.0/users/{contactMail}/contacts | Graph endpoint for retrieving contacts. |
| teams.endpoints.groups | String | https://www.google.com/search?q=https://graph.microsoft.com/v1.0/groups?$filter=resourceProvisioningOptions/any(p:p eq Team)&$select=id,displayName,proxyAddresses,creationOptions,createdDateTime,groupTypes | Graph endpoint for retrieving Microsoft Teams groups. |
| teams.endpoints.groupMembers | String | https://graph.microsoft.com/v1.0/groups/{groupId}/members/microsoft.graph.user?$select=givenName,surname,displayName,businessPhones,id,mail,mobilePhone | Graph endpoint for retrieving group members. |
| teams.endpoints.batch | String | https://www.google.com/search?q=https://graph.microsoft.com/v1.0/$batch | Graph endpoint for batched API requests. |
| teams.endpoints.presence | String | https://graph.microsoft.com/v1.0/communications/getPresencesByUserId | Graph endpoint for retrieving presence status. |
| teams.endpoints.baseURI | String | https://graph.microsoft.com/v1.0 | Base URL for all v1.0 Graph API calls. |
| teams.loginRequest.scopes | Array | [User.Read.All, Group.Read.All, Presence.Read.All, Contacts.Read.Shared] | Passes the explicit scopes for the initial MSAL login request. |
XCally (config.xcally)
Settings for the XCally Contact Center integration.
| Parameter | Type | Default | Description |
| xcally.enabled | Boolean | false | Enables or disables the XCally integration. |
| xcally.host | String | (leer) | Base URL / hostname of the XCally server. |
| xcally.Content-Type | String | application/json | Default header for API requests. |
| xcally.userApiKey | Boolean | false | Determines whether user-specific API keys are used. |
| xcally.apikey | String | (leer) | The global XCally API key. |
| xcally.webrtc.transfer.method | String | POST | HTTP method for call transfer. |
| xcally.webrtc.transfer.path | String | /api/webbar/transfer | XCally API path for call transfer. |
| xcally.webrtc.transfer.options.transferNumber | String | (leer) | Target phone number for the transfer. |
| xcally.webrtc.transfer.options.userId | Number | 4 | Internal ID of the user performing the transfer. |
| xcally.webrtc.transfer.options.sessionId | String | (leer) | Current session ID of the call. |
| xcally.webrtc.originate.method | String | POST | HTTP method for originating outgoing calls. |
| xcally.webrtc.originate.path | String | /api/webbar/originate | XCally API path for originating calls. |
| xcally.webrtc.originate.options.callNumber | String | (leer) | Target phone number for the outgoing call. |
| xcally.webrtc.originate.options.userId | Boolean | false | User ID for the outgoing call. |
| xcally.whoami.method | String | GET | HTTP method for retrieving user info. |
| xcally.whoami.path | String | /api/users/whoami | XCally API path for retrieving own identity. |
| xcally.whoami.options | Object | {} | Additional payload options for the whoami call. |
View and Filter Options (showInitialResults, location, department, queue)
Rules for the initial UI display and regular expressions for data cleansing.
| Parameter | Type | Default | Description |
| showInitialResults.user | Boolean | true | Initially shows users in the search results. |
| showInitialResults.queue | Boolean | false | Initially hides queues in the search results. |
| showInitialResults.phonebook | Boolean | false | Initially hides phonebook entries. |
| user.showHidden | Boolean | false | Show / hide hidden users. |
| user.withInternalOrExternalNumber | Boolean | false | If set to false show only users with an internal number. If set to true show users with internal AND/OR external number. |
| location.hide | Boolean | false | Disables the location filter. |
| location.filterThreshold | Number | 2 | Minimum number of locations before the location filter is displayed. |
| location.filter | RegExp | /(?:)/gi | Regular expression for filtering locations. |
| location.replace | RegExp | /^$/gi | Regular expression for replacing location strings. |
| department.hide | Boolean | false | Disables the group filter. |
| department.filterThreshold | Number | 2 | Minimum number of groups before the group filter is displayed. |
| department.filter | RegExp | /(?:)/gi | Regular expression for filtering groups. |
| department.replace | RegExp | /\s(Gruppe)/gi | Automatically removes the text " (Gruppe)" from group names. |
| queue.show | Boolean | true | Enables the display of queues. |
| queue.filter | RegExp | /(?:)/gi | Regular expression for filtering queues. |