Unattended Install Attendant

Basics

This document is created for system administrators to deploy the attendant to multiple users on multiple devices. It is not describing how to deploy an application, but supplies you with guidelines to change settings to use with a deployment.

In the past there was a possibility to setup the settings for the attendant by adding parameters to the installation. Cause of an update for the configuration and a simplification of the installers, we decided to get rid of this method.

The new way to deploy your installation to multiple devices is by installing the attendant and deploy customized config files. This document will learn you the basic principle for editing our config files.

There is a detailed description in this document on how to manually configure the Attendant config, but an easier way to configure the settings, is to install it on a standalone environment and copy these config files for deployment to other installations. There is only one big exception which are the User Accounts. The user accounts are containing a password, which will have, for security reasons, a different encryption for each user. A copy of the password will not work for another user.

 

General Configuration

There are a few settings that are still configured system wide, the S4B (skype for businessSkype for Business (formerly Microsoft Office Communicator and Microsoft Lync) is an instant-messaging client used by Anywhere365. In order to use SFB, a Microsoft Skype for Business Server is required. Skype for Business is enterprise software; compared to Skype, it has different features that target businesses.) client version and the license are two of these. Most settings are transferred to the user config but these aren’t (yet).

The Config.xml location is by default depending on the architecture of the installation.

  • 32-bit (x86) - C:\Program Files (x86)\Anywhere365 Attendant
  • 64-bit (x64) - C:\Program Files\Anywhere365 Attendant

When you open the Config.xml file after installing the attendant it almost speaks for itself. There is a node called “GeneralConfig” wich contains the LyncMicrosoft Lync (formerly Microsoft Office Communicator) is an instant messaging program designed for business use and is the successor of Windows Messenger. In order to use Lync, a Microsoft Lync Server is required. version and the license file.

To not override an earlier placed config you need to use the following parameter while installing “IGNORECONFIG=True”.

A bat-file could be created with the next line:

msiexec /i Setup.msi IGNORECONFIG=True

This is supported for version 5.0.17124.03 and higher.

Important is that you make sure there is a config file when starting the attendant, the user is supposed to have edit rights on this file. If there are insufficient rights, the attendant will not start correctly.

The default Config.xml can be found in Appendix 1.

 

User Configuration

For most settings a User Configuration file is defined. This file contains a lot of settings after starting the attendant for the first time, but has the ability to grow even more. Installing Plugins can result in more items in the User Configuration, this because developers can choose to use the Attendant’s Configuration Framework.

The file containing all the user configuration can be found in the roaming profile of a user. A shortcut to it’s location is the following:

%appdata%\Workstreampeople\Attendant\config.xml

The default Config.xml can be found in Appendix 1.

 

Manual Configuration

Skype for Business version

Before 2015 Skype for business was called Lync and Microsoft has still a lot of references to that name (process is called “Lync.exe”). We have the same situation in our configuration. The property that sets the version of the client is called “LyncVersion”.

You can change the value of the Lync version depending of the installation on the system where the attendant is deployed, there are 3 possibilities.

  • Lync2016 Latest Lync clients installed with office 2016.
  • Lync2013 Lync client installed with office 2013.
  • Lync2010 Oldest Lync client shipped stand alone.

Here’s the line in the file that should be changed:

<Option name="LyncVersion" value="[VERSION]" default-value="Lync2016" description="Version of Office installed containing Lync or Skype for Business" mandatory="True" />

Change the Value property to the value you want, it is in the sample marked with the placeholder “[VERSION]”.

 

License

Default the attendant will look for a license file with the name “License.lic” in the folder where the attendant is installed, if you want the file in another location you need to change the setting called “LicenseFile”. Change the path to the location where you like the attendant to look.

Watch out with network shares that are not mapped on the device, loading these maps the first time or after a timeout can be extremely slow. This slow loading can result in a bad experience for the attendant, which is cause of external factors.

The line that needs to be edited is the following:

<Option name="LicenseFile" value="C:\Program Files\Anywhere365 Attendant\License.lic" default-value="C:\Program Files\Anywhere365 Attendant\License.lic" description="Location of the license file" mandatory="True" />

 

Exchange

To speed up exchange you can setup a URL to the web service. If not configured the attendant will use Auto Discover which takes some time to connect in most setups. It is also smart to setup the right version for the exchange server.

The configuration for exchange can be found in the general configuration. The module containing settings for exchange is called “ExchangeAdapter”.

Sample for setting the Exchange up to connect to the Office365 web service:

<Module module-name="ExchangeAdapter" description="Configuration module for Exchange Adapter" module-type="Application" module-version="5.0.0">

<Option name="Url" value="https://outlook.office365.com/EWS/Exchange.asmx" default-value="" description="URL of the exchange service, leave blank for autodiscover." mandatory="False" />

<OptionList name="Version" value="2010" default-value="2010" options="2007,2010,2013" description="Version of exhange, leave blank for autodiscover." mandatory="False" />

</Module>

These settings are speeding up the connection, without any credentials for these services you will get a bad credentials exception. Credentials for the Exchange web service are setup in the userconfig, more about this can be found in paragraph 2.5.

 

Configure UCC’s

When you use the Anywhere365 UCCUCC stands for Unified Contact Center and consists of a queue that can be handled by Agents Each Contact Center has its own settings, interactive voice response questions and Agent with specific skills. Agents can be member of, or sign up to, one or more Contact Centers.’s you want to configure these for your receptionists, which allows them to see the queue, missed calls and more information for the configured UCC’s.

UCC’s can be configured in the User Configuration. You will need to add a node to the Group called “UCCS” in the module that’s called “UccAdapter”.

To configure a UCC use the next code and replace placeholders with the UCC name and the address (FQDNA fully qualified domain name (FQDN), sometimes also referred as an absolute domain name, is a domain name that specifies its exact location in the tree hierarchy of the Domain Name System (DNS).) of the UCC.

<Group name="UCCS" description="All configured UCC's.">

<Group name="7016bcdf-2ad5-4ca3-907a-fc68d679a49e">

<Option name="Name" value="[UCC_NAME]" mandatory="False" />

<Option name="FrequentsContactsDays" value="500" mandatory="False" />

<Option name="MissedCallsDays" value="0" mandatory="False" />

<Option name="TotalPreviousAgents" value="5" mandatory="False" />

<Option name="TotalFrequentContacts" value="20" mandatory="False" />

<Option name="AttendantHub" value="http://[UCC_URL]/AttendantService" mandatory="False" />

<Option name="DashboardHub" value="http://[UCC_URL]/DashboardService" mandatory="False" />

</Group>

</Group>

Of course it is possible to change more settings. More easy is to configure the settings on a standalone environment and copy these configuration files to deploy to other installations.

 

User accounts (Exchange)

It is also possible to configure central accounts. This can be really useful if you want all receptionists to use the same mail address for outgoing mails or have the same rights to check the calendar of others. For this sample we will configure an Exchange account but same can be done for others like a UCC account (if the UCC’s have this security enabled).

Copying the XML for these accounts from an existing configuration is impossible, this cause of security considerations. The password is encrypted uniquely for the user that is signed in.

The credentials for accounts used by the attendant are found in the userconfig in a group called “Credentials” and is placed in the Module “User”. Here is a sample with placeholders:

<Group name="[GUIDGUID stands for Globally Unique Identifier and is a pseudo random number used in software applications that is assumed to be unique. The total number of unique keys (2<sup>128</sup> of 3.4028×10<sup>38</sup>) is very large and the probability of the creating the same GUID twice is very small, though not 100% guaranteed.]">

<Option name="Username" value="[USERNAME]" mandatory="False" />

<Option name="Password" value="[PASSWORD]" mandatory="False" />

<Option name="AccountType" value="EXCHANGE" mandatory="False" />

<Option name="Unsecure" value="True" mandatory="False" />

</Group>

You can also copy the XML from an existing installation. Then you need to replace the encrypted password by a plain password and add the Option called “Unsecure”.

Here are some descriptions for the placeholders:

Item

Description

[GUID]

A guid is an identifier used by more languages and techniques, you can generate one online: https://www.guidgenerator.com/online-guid-generator.aspx

[USERNAME]

Username for the used user of exchange.

[PASSWORD]

Password for the used user of exchange.

[AccountType]

Values that can be used as account type are:

  • LYNC
  • EXCHANGE
  • ACTIVE_DIRECTORY
  • SMS
  • UCC

Please notice that not all account types are fully used yet. Also types may be added for new features in the future.

An important thing to know is that the password will be encrypted at the first launch of the attendant. Until the attendant launches for a user the password will be in plain text, this could be a security risk to think about. After securing the password, the unsecure option will be removed by the Attendant.

 

Other settings

There are much more options to configure. They are mostly easy to find with a good description. Best way to get the configuration fully ready is to configure it in an attendant and then copy your config files to deploy them with an installation.

If there are still questions about one or more settings, don’t hesitate to contact our company.

 

Appendix 1: Default Configuration

<?xml version="1.0" encoding="utf-8"?>

<Configuration application-name="AttendantConsole Config" description="Anywhere365 Reception Attendant version 4.1" application-version="5.0.0">

<Module module-name="GeneralConfig" description="General configuration for the Attendant" module-type="Application" module-version="5.0.0">

<Option name="LyncVersion" value="Lync2016" default-value="Lync2016" description="Version of Office installed containing Lync or Skype for Business" mandatory="True" />

<Option name="LicenseFile" value="C:\Users\robpi\Documents\robp.lic" default-value="C:\Program Files\Anywhere365 Attendant\License.lic" description="Location of the license file" mandatory="True" />

</Module>

<Module module-name="ExchangeAdapter" description="Configuration module for Exchange Adapter" module-type="Application" module-version="5.0.0">

<Option name="Url" value=" " default-value="" description="URL of the exchange service, leave blank for autodiscover." mandatory="False" />

<OptionList name="Version" value="2010" default-value="2010" options="2007,2010,2013" description="Version of exhange, leave blank for autodiscover." mandatory="False" />

</Module>

<Module module-name="SmsAdapter" description="Configuration for SMS adapter" module-type="Application" module-version="5.0.0">

<Option name="CountryCode" value="NL" default-value="NL" description="The country code for this number in ISO 3166-1 alpha-2 format." mandatory="True" />

<Option name="ApiKey" value="" default-value="" description="Api key for messagebird" mandatory="True" />

<Option name="Originator" value="Anonymous" default-value="Anonymous" description="Originator for SMS message send" mandatory="True" />

</Module>

</Configuration>

 

Appendix 2: Default User Configuration file

<?xml version="1.0" encoding="utf-8"?>

<Configuration application-name="AttendantConsole User Config" description="Anywhere365 Reception Attendant version 4.1" application-version="5.0.0">

<Module module-name="User" description="Configuration for user with credentials for all services" module-type="Application" module-version="5.0.0">

<Option name="RememberPassword" value="False" default-value="False" description="Remember password and login on start of Attendant" mandatory="True" />

<Option name="SipAddress" value="" default-value="" description="Remember password and login on start of Attendant" mandatory="False" />

<Group name="Credentials" description="Credentials for different accounts used by the Attendant">

<Group name="e46e7d37-b7d8-461f-bfb5-8e8dd456a9be">

<Option name="Username" value="" mandatory="False" />

<Option name="Password" value="" mandatory="False" />

<Option name="AccountType" value="LYNC" mandatory="False" />

</Group>

</Group>

<Option name="UseUccPresence" value="False" default-value="False" description="Overwrite lync presence for user that is signed in." mandatory="True" />

</Module>

<Module module-name="UccAdapter" description="Configuration module for UCC Adapter" module-type="Application" module-version="5.0.0">

<Group name="UCCS" description="All configured UCC's." />

</Module>

<Module module-name="General" description="General user configuration for the Attendant" module-type="Application" module-version="5.0.0">

<Option name="DefaultEndpoint" value="Lync" default-value="Lync" description="Default endpoint that Atttendant will try to call" mandatory="True" />

<Option name="WeatherLocation" value="Rotterdam" default-value="Rotterdam" description="Location for weather api" mandatory="True" />

<Option name="WeatherApiKey" value="" default-value="" description="Api key for weather api" mandatory="True" />

<Option name="WeatherMeasurement" value="C" default-value="C" description="Default measurement used to show weather" mandatory="True" />

<Option name="SearchUrl" value="http://www.bing.com/" default-value="http://www.bing.com/" description="Website opening when the magnifying glass on the mirror is pressed" mandatory="True" />

<Option name="ClearSearchAfterTransfer" value="False" default-value="False" description="Clear the search results after a conversation is transferred" mandatory="True" />

<Option name="ConversationInfoOrder" value="DisplayName,Phone,UCC,TransferredBy" default-value="DisplayName,Phone,UCC,TransferredBy" description="The order the information of a caller is shown in the attendant for a conversation" mandatory="True" />

<Option name="ShowIncommingToast" value="True" default-value="True" description="Change the visibility of the big toastA toast is a skype instant message notification. when you have an incoming conversation" mandatory="True" />

<Option name="Camera" value="" default-value="" description="Setting for selected camera to use in application" mandatory="False" />

<Option name="MaxSearchResults" value="100" default-value="100" description="The amount of maximum search results are shown in the attendant" mandatory="True" />

<OptionList name="DoubleClickSetting" value="Information" default-value="Information" options="Information,Call,Chat" description="Tells what happens if a contact in the contactlist is double clicked" mandatory="True" />

</Module>

<Module module-name="Departments" description="Configured departments" module-type="Application" module-version="5.0.0" />

<Module module-name="Notifications" description="Settings for notifications" module-type="Application" module-version="5.0.0">

<OptionList name="Queue" value="NOACTIVECALL" default-value="NOACTIVECALL" options="ALWAYS,NOACTIVECALL,NEVER" description="When will a sound be played for someone who is entering the queue" mandatory="True" />

<OptionList name="TransferFailed" value="ALWAYS" default-value="ALWAYS" options="ALWAYS,NOACTIVECALL,NEVER" description="When will a sound be played if a transfer is failed" mandatory="True" />

<OptionList name="Ringtone" value="ALWAYS" default-value="ALWAYS" options="ALWAYS,NOACTIVECALL,NEVER" description="When will a sound be played for incoming calls (toast)" mandatory="True" />

<OptionList name="Onhold" value="NEVER" default-value="NEVER" options="ALWAYS,NOACTIVECALL,NEVER" description="When will a sound be played for incoming calls (toast)" mandatory="True" />

</Module>

<Module module-name="Preferred" description="Settings for preffered options in attendant" module-type="Application" module-version="5.0.0">

<OptionList name="ContactListView" value="LineairBig" default-value="LineairBig" options="LineairSmall,LineairBig,Square,None" description="What view is preferred for the contact list" mandatory="True" />

<Option name="SelectedDashboardInfoTab" value="Frequent" default-value="Frequent" description="Tab that is selected in the info tab of the dashboard" mandatory="False" />

</Module>

<Module module-name="Calendar" description="Settings for calendar options in attendant" module-type="Application" module-version="5.0.0">

<Option name="Background" value="#4F5262" default-value="#4F5262" description="Color for background of Calendar" mandatory="True" />

<Option name="CurrentTime" value="#FBBE00" default-value="#FBBE00" description="Color for indacator of current time" mandatory="True" />

<Option name="TentativeColor" value="#B4B2B1" default-value="#B4B2B1" description="Color for event which is tentative" mandatory="True" />

<Option name="FreeColor" value="#1C9AAC" default-value="#1C9AAC" description="Color for event which is free" mandatory="True" />

<Option name="OofColor" value="#ED771D" default-value="#ED771D" description="Color for event which is out of office" mandatory="True" />

<Option name="DefaultColor" value="#E84913" default-value="#E84913" description="Color for event which is busy or not specified" mandatory="True" />

<Option name="Theme" value="DarkGray" default-value="DarkGray" description="Selected theme for layout, only in settings" mandatory="True" />

</Module>

<Module module-name="NoteAdapter" description="Configuration for Note adapter" module-type="Application" module-version="5.0.0">

<Option name="DeleteNotesAfterSession" value="True" default-value="True" description="Notes will be deleted when the attendant is closed, when set to 'True'" mandatory="True" />

<Option name="DontShowPopup" value="False" default-value="False" description="Does not show the popup as reminder of unsaved notes if set to 'True'" mandatory="True" />

<Option name="Location" value="C:\Users\robpi\AppData\Roaming\Workstreampeople\Attendant\Notes\Notes.db" description="Location of database file for notes" mandatory="False" />

</Module>

<Module module-name="Contacts" description="Configuration for Contact specific settings" module-type="Application" module-version="5.0.0">

<Option name="ContactTypesOrder" value="Chat,DefaultEndpoint,Video,Mail,Sms,Lync,Mobile,Work,Home,Other,Voicemail" default-value="Chat,DefaultEndpoint,Video,Mail,Sms,Lync,Mobile,Work,Home,Other,Voicemail" description="The order of the contactcard buttons" mandatory="True" />

<Option name="LongPressOrder" value="Lync,Mobile,Work,Voicemail,Home,Other" default-value="Lync,Mobile,Work,Voicemail,Home,Other" description="The order of the call long press buttons" mandatory="True" />

<Option name="NoteOrder" value="Chat,Mail,Sms" default-value="Chat,Mail,Sms" description="The order of the note buttons" mandatory="True" />

<Option name="TransferOrder" value="Lync,Mobile,Work,Voicemail,Home,Other,DefaultEndpoint" default-value="Lync,Mobile,Work,Voicemail,Home,Other,DefaultEndpoint" description="The order of the transfer buttons" mandatory="True" />

</Module>

<Module module-name="Busylight Plugin" description="Configuration for plugin: Busylight Plugin" module-type="ApplicationPlugin" module-version="5.0.17022.2">

<Option name="Enabled" value="True" default-value="True" mandatory="True" />

<Option name="Index" value="-1" default-value="-1" mandatory="True" />

<Option name="Volume" value="50" default-value="50" description="Volume of busylight" mandatory="True" />

<Option name="SoundClip" value="3" default-value="3" description="Number of clip in Busylight SDK" mandatory="True" />

<Option name="ColorTime" value="1000" default-value="1000" description="Time the ligth is on when blinking in miliseconds" mandatory="True" />

<Option name="BlackTime" value="500" default-value="500" description="Time the ligth is off when blinking in miliseconds" mandatory="True" />

<Group name="Status" description="Configurable colors for status">

<Group name="Available">

<Option name="Red" value="0" mandatory="False" />

<Option name="Green" value="100" mandatory="False" />

<Option name="Blue" value="0" mandatory="False" />

</Group>

<Group name="Away">

<Option name="Red" value="255" mandatory="False" />

<Option name="Green" value="255" mandatory="False" />

<Option name="Blue" value="0" mandatory="False" />

</Group>

<Group name="Busy">

<Option name="Red" value="255" mandatory="False" />

<Option name="Green" value="0" mandatory="False" />

<Option name="Blue" value="0" mandatory="False" />

</Group>

<Group name="DoNotDisturb">

<Option name="Red" value="155" mandatory="False" />

<Option name="Green" value="13" mandatory="False" />

<Option name="Blue" value="163" mandatory="False" />

</Group>

</Group>

<Group name="Actions" description="Configurable colors for status">

<Group name="IncomingCall">

<Option name="Red" value="0" mandatory="False" />

<Option name="Green" value="0" mandatory="False" />

<Option name="Blue" value="255" mandatory="False" />

<Option name="Times" value="0" mandatory="False" />

</Group>

<Group name="Transfering">

<Option name="Red" value="0" mandatory="False" />

<Option name="Green" value="255" mandatory="False" />

<Option name="Blue" value="0" mandatory="False" />

<Option name="Times" value="0" mandatory="False" />

</Group>

<Group name="IncomingChat">

<Option name="Red" value="100" mandatory="False" />

<Option name="Green" value="90" mandatory="False" />

<Option name="Blue" value="0" mandatory="False" />

<Option name="Times" value="3" mandatory="False" />

</Group>

<Group name="InCall">

<Option name="Red" value="255" mandatory="False" />

<Option name="Green" value="0" mandatory="False" />

<Option name="Blue" value="0" mandatory="False" />

<Option name="Times" value="0" mandatory="False" />

</Group>

</Group>

</Module>

<Module module-name="Call History" description="Configuration for plugin: Call History" module-type="ApplicationPlugin" module-version="5.0.16504.1">

<Option name="Enabled" value="True" default-value="True" mandatory="True" />

<Option name="Index" value="-1" default-value="-1" mandatory="True" />

<Option name="HistoryDays" value="10" default-value="10" description="The plugin will save the data for this amount of days" mandatory="True" />

</Module>

<Module module-name="Team Calendar Plugin" description="Configuration for plugin: Team Calendar Plugin" module-type="ApplicationPlugin" module-version="5.0.16504.1">

<Option name="Enabled" value="True" default-value="True" mandatory="True" />

<Option name="Index" value="-1" default-value="-1" mandatory="True" />

<Group name="Dates" description="dates shown on the scheduleview on startup">

<Option name="DaysPast" value="0" default-value="0" description="DateTime.Today minus this value is startdate" mandatory="True" />

<Option name="DaysFuture" value="7" default-value="7" description="DateTime.Today plus this value is enddate" mandatory="True" />

<Option name="StartHour" value="08:00:00" default-value="08:00:00" description="Starting hour per day" mandatory="True" />

<Option name="EndHour" value="18:00:00" default-value="18:00:00" description="Last hour per day" mandatory="True" />

</Group>

</Module>

<Module module-name="Visitor Plugin" description="Configuration for plugin: Visitor Plugin" module-type="ApplicationPlugin" module-version="5.0.17022.2">

<Option name="Enabled" value="True" default-value="True" mandatory="True" />

<Option name="Index" value="-1" default-value="-1" mandatory="True" />

<Option name="MeetingfileLocation" value="" description="Location xml files" mandatory="False" />

<Option name="SecondsToRefresh" value="3600" default-value="3600" description="Every x seconds the plugin will check for changes" mandatory="True" />

<Group name="Accounts" description="Exchange accounts to connect to">

<Group name="3bdfedc4-edcb-49a4-bb59-0fb766cb419d">

<Option name="Username" value="" mandatory="False" />

<Option name="Email" value="" mandatory="False" />

<Option name="Password" value="" mandatory="False" />

</Group>

</Group>

</Module>

</Configuration>