All notable changes to this project will be documented in this file.
- [twilio-taskrouter] to version 0.4.1
- Added feature flag for Markdown support
-
Added
fullscreen
static property to QueuesStatsView component, which can be used to enable fullscreen button for the view. -
Introduced
ChatChannelHelper
class to wrap all Chat Channel specific helper methods. An instance for a task can be obtained fromTaskHelper.chat
property.TaskHelper.lastChatMessage
method was deprecated, useChatChannelHelper.lastMessage
instead. -
User will be shown a notification when user has not made a choice whether to allow browser notifications.
-
If user is not focused to the application and receives incoming call task, then he is notified via browser notification. Added two template strings
IncomingCallNotificationTitle
andIncomingCallNotificationBody
for notification title and body respectively. -
Task channel definitions now allow to override notifications that have a task context:
Twilio.Flex.DefaultTaskChannels.Chat.notifications.override["TaskCannotBeTransferred"] = (notification) => {
notification.content = "Hello, world!";
};
Twilio.Flex.DefaultTaskChannels.Chat.notifications.override["TaskCannotBeTransferred"] = {
content: "Hello, world!"
};
Twilio.Flex.DefaultTaskChannels.Chat.notifications.override["TaskCannotBeTransferred"] = null;
-
New localization strings added.
TaskHeaderWebChatStatusAccepted
// Describes WebChat task that is in accepted state. It's used in TaskCanvasHeader.TaskLineWebChatAssigned
// Describes WebChat task that is in assigned state. It's used in TaskListBaseItem. -
New reachability indicator for webchat tasks. It will show a green icon in the task canvas header and the task list item if the customer is online, and a grey one if offline.
Please note that you need to enable reachability in console:
https://www.twilio.com/console/chat/services/<chat_service_sid>
, otherwise a grey icon will be shown.You can customize the templates
TaskHeaderWebChatStatusAccepted
and/orTaskLineWebChatAssigned
. For these templates, you can access the reachability status viahelper.chat.isCustomerOnline
. -
Added a new
notifications
configuration option that allows enabling/disabling browser notifications.By default, browser notifications are disabled
notifications: {
browser: true
}
- Default template for second line of tasklist item of chat task now includes string "typing ..." if there are participants typing in that chat.
- withTaskContext now returns a correctly typed component instead of
any
. Therefore it may not be used as a class decorator anymore, but it must be called. This change may also result in new TypeScript errors surfacing incorrect prop types or similar issues. TaskListItem
now has supports for showing Badges. The content of these badges is TaskChannel dependent and can be customised by updating itscomponentProps.TaskListItem.Badge.children
property.If the content equal to zero or undefined, no badge is going to be shown.myTaskChannelDefinition.componentProps.TaskListItem.Badge.children = ( appState: AppState, context: TaskListItemProps & TaskContextProps ) => { const badgeContent: number = applyCustomLogic(appState, context); // just an example return badgeContent; };
- Definition of localization strings changed:
TaskHeaderStatusAccepted
// Describes task (except webchat) that is in accepted state. It's used in TaskCanvasHeader.TaskLineChatAssigned
// Describes a chat task that is assigned (except webchat) and any chat task in wrapup status. It's used in TaskListBaseItem. SideLink
now has support for showing badges. It takes a new propertyBadge
which is used to customize it.SideNav
has 3 new static properties(AgentDesktop
,Teams
&QueuesStats
) which represents link components for each view. It can be accessed to change the defaultBadge
property.Flex.SideNav.AgentDesktop.defaultProps.Badge = { children: 2 };
- "Login with Twilio" link on the Login View will open a Twilio login in a new window if Flex is rendered in an iframe element.
- Message Input now supports Input Method Editor, allowing to use characters and symbols that are not directly represented on the keyboard itself (like Chinese characters).
- ToggleMute, HoldCall, UnholdCall and HangupCall to throw an Error instance instead of just an error string in case of a failure.
- Update 'How to configure' CRM docs link url
- Fixed a bug where SSO login stuck at redirect to pop-up dialog when using SFDC Identity provider
- Custom task channel definitions for chat tasks which were not using
chat
as the task channel, could have caused Flex not to load and initialize the chat channels for accepted tasks in previous sessions.
- Upon any sort of failure to transfer a call, user will be shown a notification of the failure and unformatted error string from Taskrouter API.
- Unmount WorkersDataTable when user navigates away from Teams View.
- Fix an issue with @types/uuid package in windows environment
- If user adds programmatically
IconButton
to eitherParticipantCanvas.Actions
orCallCanvasActions
and does not providethemeOverride
property then the button is going to have the default style of buttons of that container.
- Action buttons container for a participant on Call Canvas is now programmable, so developers can add and remove buttons (and other items) there. Name
of the container is
ParticipantCanvas.Actions
. Existing buttons have keyshold
,kick
,cancel-transfer
,accept-kick
(confirmation dialog),cancel-kick
(confirmation dialog). Example:
Flex.ParticipantCanvas.Actions.Content.add(<IconButton icon="Eye" key="yourButton">);
ChatOrchestrator
object now supports setting orchestrations based on a task:
const orchestrationsCallback = (task: ITask) => {
if (task.sid === "WT12345") {
return [];
}
};
Flex.ChatOrchestrator.setOrchestrations("accepted", orchestrationsCallback);
- Add new exports to refer to workers instead of agents:
WorkersDataTable
,WorkerListFilterSelect
,WorkersDataTable
,WorkersDataTableProps
andWorkerListFilter
. - Added new button to call toolbar to display DTMF Dialpad. This Dialpad can be used to send DTMF tones to all parties in the call.
- Action
ToggleDTMFDialpad
is introduced with following payload:
{
task: ITask;
open?: boolean; // used to explicitly open or close DTMF dialpad.
}
- Action
SetDTMFDialpadDigits
is introduced to set digits in the DTMF dialpad with following payload:
{
task: ITask;
digits: string;
}
IncomingTaskCanvasActions
component that is a set of buttons in the incoming task canvas is now programmable (buttons can be added/removed) Example: this code adds an eye-iconed button to the end of the list of incoming task canvas actions
Flex.IncomingTaskCanvasActions.Content.add(<IconButton key="hi" icon="Eye" />);
or by using channels
Flex.DefaultTaskChannels.Call.addedComponents = [{
target: "IncomingTaskCanvasActions",
component: <IconButton key="hi" icon="Eye" />,
}];
- Flex to read
{ loginPopup: boolean; }
frompublic_attributes
of the Configuration Service to determine if the SSO flow needs to be launched in a popup window. Note that ifsso: { loginPopup: boolean }
is set in local Flex configuration, thenpublic_attributes
will not be fetched.
-
Loading Flex with url
host/teams/workers/WK...
now correctly opens the Worker Panel in Teams View -
WorkersDataTable workers now get correctly sorted and keep position
-
Facebook channel definition now expects channel type to be
facebook
- WorkersDataTable workers now get correctly sorted and keep position
- Issues with
Twilio.Flex.runDefault()
removing query path search string.
- All chat channels are not automatically loaded to the Redux state of Flex anymore. Only those chat channels are loaded that are associated with any active task.
- Removed optional URLs from TypeScript Config interface.
- Call task canvas will now go to new list mode if participants would not otherwise fit. In order to change
ParticipantCanvas
when it is in list mode, developer will need to useParticipantCanvas.ListItem
. Example:
// adds a button to the bottom of the normal participant
Flex.ParticipantCanvas.Content.add(<button key="key">Hi</button>);
// adds a button to the end of participant that is shown in a list
Flex.ParticipantCanvas.ListItem.Content.add(<button key="key">Hi</button>);
- Added
Warm Transfers
feature - Add
legacy
property toContextProvider
component to resolve conflicts between multiplereact-redux
versions for self-hosted applications. - Added
tasksA
andtasksB
arguments toAgentsDataTable.defaultProps.initialCompareFunction
to allow tasks comparison:
Flex.AgentsDataTable.defaultProps.initialCompareFunction = (a: Flex.IWorker, b: Flex.IWorker, tasksA: Array<Flex.ITask>, tasksB: Array<Flex.ITask>) => {
- Make
TaskCard
component inherit font family from theRootContainer
;
- [twilio-taskrouter] to version 0.3.2
- Prevented TaskChannels re-initialization on Manager load method. This fixes a Plugin-Builder related issue.
- WorkerCanvas component was not forwarding contextual props to its children so any 3rd party component added to that canvas did not know what worker etc it was dealing with.
WorkerDirectoryTabs
component that represents a set of tabs in the WorkerDirectory popup is now programmable (tabs can be added/removed) Example: this code adds a new tab to the end of the tab list of worker directory
Flex.WorkerDirectory.Tabs.Content.add(<CustomTab />)
In this example, CustomTab
is a component that uses a Tab
component.
CallCanvasActions
component that is a set of buttons in the call canvas is now programmable (buttons can be added/removed) Example: this code adds an eye-iconed button to the end of the list of call canvas actions
Flex.CallCanvasActions.Content.add(<IconButton key="hi" icon="Eye" />)
or by using channels
Flex.DefaultTaskChannels.Call.addedComponents = [{
target: "CallCanvasActions",
component: <IconButton key="hi" icon="Eye" />,
}];
- Theme got 2 new keys inside
Supervisor
sectionSupervisor.TaskCanvas.Header
andSupervisor.WorkerCanvas.SectionCaption
to styleTaskCanvas
header and sub section header inWorkerCanvas
respectively.
AgentDesktopView
splitterOptions
were not settable anymore via config (only via default props)
- [twilio-chat] to version 3.2.3
- [twilio-client] to version 1.7.2
- [twilio-sync] to version 0.11.0
- [twilio-taskrouter] to version 0.3.1
- [@material-ui/core] to version 3.9.3
AgentDesktopView.Panel1
got a new default propertysplitterOrientation
that determines whether orientation of the content will be vertical, horizontal or automatic based on content size (default).SetComponentState
UI Action. This is meant to alter the current state of a component. Component states is acomponentName => key/value pairs
dictionary in Redux store that this action manipulates. Payload is defined as
name: string;
state: any;
}
where name
is the name of the component and state
is an Javascript object. The Action will update the state in the store under name
by shallow merging state
with current state. Developers can use this action and this state to both control native Flex controls and also keep a convenient state for their own components. Natively currently two controls are supported ("AgentTaskCanvasTabs", "SupervisorCanvasTabs"
) with one state value selectedTabName
that holds the uniqueName
of currently selected tab of the respective tab controls.
Example:
Flex.Actions.invokeAction("SetComponentState", { name: "AgentTaskCanvasTabs", state: { selectedTabName: "info" } });
will change the tab of the Task Canvas in Agent View to info tab. This call can also be made preemptively when initializing Flex to set default selected tab of a tab control.
export enum SplitterOrientation {
auto = "auto",
vertical = "vertical",
horizontal = "horizontal"
}
Example:
Flex.AgentDesktopView.Panel1.defaultProps.splitterOrientation = "vertical";
- Introduced store enhancer
flexStoreEnhancer
to support adding additional reducers. Example:
const myReduxStore = createStore(
reducers,
compose(
applyFlexMiddleware(),
flexStoreEnhancer // <-- Add enhancer part of compose
)
);
- Introduced
addReducer
api tomanager.store
to add additional reducer. Example:
manager.store.addReducer("new", newReducer);
ChatOrchestrator
object that can be used to disable default chat orchestration.- There are three chat orchestrations that are supported and enabled by default:
AddToChatChannel
- Request agent to be added to the chat channel (by default runs on theaccepted
event fromReservation
)DeactivateChatChannel
- Mark chat channel status asINACTIVE
(by default runs onWrapupTask
andCompleteTask
actions and on thewrapup
andcompleted
event fromReservation
object if it was not done already)LeaveChatChannel
- Remove agent from the chat channel (by default runs onCompleteTask
action and on thecompleted
event fromReservation
object if it was not done already)
- Orchestrations can be disabled completely by invoking
ChatOrchestrator.clearAllOrchestrations()
method. - Orchestrations can be enabled or disabled by Reservation events (
accepted
,wrapup
,completed
) which affects corresponding actions as well. For example:
// Disable orchestrations for `accepted` event: Flex.ChatOrchestrator.setOrchestrations("accepted", []); // Disable marking chats channels as inactive: Flex.ChatOrchestrator.setOrchestrations("wrapup", []); Flex.ChatOrchestrator.setOrchestrations("completed", ["LeaveChatChannel"]);
- There are three chat orchestrations that are supported and enabled by default:
- Add
rejectPendingReservations
configuration option: it represents whether all pending reservations are ignored or should be manually rejected before an agent will be allowed to switch to unavailable activity (default value –true
– allows an agent to change activity even if there are pending reservations). Also, a way to override that value is now available throughbeforeSetActivity
action:
Actions.on("beforeSetActivity", (payload) => { payload.options.rejectPendingReservations = true; });
- Add
Flex.Log.LogManager
API for custom logging - Added
callSid
to Participant object inConferences
state. Chat
tab added toSupervisorTaskCanvas
for Supervisors to monitor chats.- New localization strings added.
`TaskTabSupervisorCallLabel` // Call task tab label in Supervisor task canvas.
`TaskTabSupervisorChatLabel` // Chat task tab label in Supervisor task canvas.
`TaskHeaderStatusPending` // Describes task that is in pending state. It's used in TaskCanvasHeader.
`TaskHeaderGroupCallAccepted` // Describes conference call task that is in accepted state. It's used in TaskCanvasHeader.
`TaskHeaderStatusAccepted` // Describes task that is in accepted state. It's used in TaskCanvasHeader.
`TaskHeaderStatusWrapup` // Describes task that is in wrapup state. It's used in TaskCanvasHeader.
`TaskHeaderStatusCompleted` // Describes task that is in completed state. It's used in TaskCanvasHeader.
TaskCanvasHeader
now accepts a new propsecondLineTemplateCode
. By default it describes the status of the task.
- Chat orchestration failure now can prevent action invocations:
- If chat orchestration fails to mark the chat channel inactive, then
WrapupTask
action will fail. - If chat orchestration fails to remove agent from chat channel, then
CompleteTask
action will fail.
- If chat orchestration fails to mark the chat channel inactive, then
- Chat orchestration marks deactivates chat channel on the Reservation
wrapup
event (if it did not happen inWrapupTask
action already) - Dynamically added custom components are encouraged to use
withTheme
decorators to injecttheme
prop - Following type definitions are changed for consistency:
CallCanvasProps
renamed toCallCanvasChildrenProps
TaskCanvasProps
renamed toTaskCanvasChildrenProps
NoTaskCanvasProps
renamed toNoTaskCanvasChildrenProps
ParticipantsCanvasProps
split in aParticipantsCanvasProps
subset andParticipantsCanvasChildrenProps
TaskCanvasHeaderProps
split in aTaskCanvasHeaderProps
subset andTaskCanvasHeaderChildrenProps
TaskCanvasTabsProps
split in aTaskCanvasTabsProps
subset andTaskCanvasTabsChildrenProps
TaskInfoPanelProps
split in aTaskInfoPanelProps
subset andTaskInfoPanelChildrenProps
MainHeaderProps
split in aMainHeaderProps
subset andMainHeaderChildrenProps
AgentDesktopViewProps
split in aAgentDesktopViewProps
subset andAgentDesktopViewChildrenProps
LoginViewProps
split in aLoginViewProps
subset andLoginViewChildrenProps
TeamsViewProps
split in aTeamsViewProps
subset andTeamsViewChildrenProps
CRMContainerProps
split in aCRMContainerProps
subset andCRMContainerChildrenProps
LiveCommsBarProps
renamed inLiveCommsBarChildrenProps
MainContainerProps
split in aMainContainerProps
subset andMainContainerChildrenProps
MuteButtonProps
split in aMuteButtonProps
subset andMuteButtonImplProps
RootContainerProps
renamed inRootContainerChildrenProps
SideNavProps
split in aSideNavProps
subset andSideNavImplProps
TaskListButtonsProps
renamed inTaskListButtonsChildrenProps
ViewCollectionProps
split in aViewCollectionProps
subset andViewCollectionImplProps
- SupervisorTaskCanvas tabs title changed from Overview to Call or Chat based on the type of task.
- Hold/unhold buttons on call canvas for customer participant will call
HoldCall/UnholdCall
actions again instead ofHoldParticipant/UnholdParticipant
- Brought back
conferenceSid
property onconference
object that had been accidentally removed.
- Rare bug where user would see endless login spinner when trying to log in.
- Hold/unhold buttons on call canvas for customer participant will call
HoldCall/UnholdCall
actions again instead ofHoldParticipant/UnholdParticipant
TaskListButtons
component that is the set of buttons in tasklist item is now programmable (buttons can be added/removed) Example, that shows a button as the last button for call tasks that have status as "accepted":
const shouldShow = (props) => {
return props.task.status == "accepted";
};
Flex.DefaultTaskChannels.Call.addedComponents = [{
target: "TaskListButtons",
component: <IconButton key="hi" icon="Eye" />,
options: {if: shouldShow}}];
- Action buttons will be disabled after user click until the action execution is finished.
- Actions
ToggleSidebar
are introduced with following payload:
{
open?: boolean; // used to explicitly open or close the sidebar.
}
- Renamed
TaskButtons
class toTaskListButtons
- Restored backwards compatibility with the first versions of the outbound dialer plugin
- Rare bug where user would see never ending login spinner when trying to log in
- Hold/unhold buttons on call canvas for customer participant will call
HoldCall/UnholdCall
actions again instead ofHoldParticipant/UnholdParticipant
- Restored backwards compatibility with the first versions of the outbound dialer plugin
- Incoming task canvas failed to render for generic/custom task channels.
- New template
TaskLineTitle
with default value as empty string to be shown for default task channel inIncomingTaskCanvas
.
- Added
ThemeColorsDefinition
to replaceThemeDef
- Added
ThemeColorsDefinitionCreator
to replaceThemeDefCreator
- Added
ThemeColorsDefinitionCreator.getPredefined
to replaceThemeDefCreator.getPredefinedTheme
- Added a new
logger
configuration option that allows to collect logs and errors into a downloadable file:
logger: {
type: "file"
}
- Deprecated
ThemeDef
interface,ThemeDefCreator
class and its methodThemeDefCreator.getPredefinedTheme
. - General Flex UI styles (like headers, paragraphs or links) are now applied only to HTML elements that have a class starting with
Twilio
or their direct descendants without any class
- Imports from latest
history
NPM package - Mitigation for duplicate task based events after connection drop
- Add support for a "predefinedMessage" in the MessagingCanvas to display an initial message in the ChatWidget.
- Add
agentAvailableColor
,agentBusyColor
,agentUnavailableColor
,agentOfflineColor
colors to theme.
- Extend TaskChannelDefinition with a
componentProps
object to allow taskChannel-specific component props modifications. - Conference State support to monitor participants and their statuses via Sync Insights. Surfaced via Task Context as
conference
property. - Call monitoring now also works when forwarding the calls to phone number
- New designs for task call view and task list item. Also updated the incoming transfer views
- Get 'Offline' activity sid from serviceConfiguration.taskrouter_offline_activity_sid
- WFO identity client integrated and exposed through
Twilio.Flex.Wfo.Identity
- New 'untrustedDomain' exception on login attempts from non-whitelisted domains
- TaskSid and ReservationSid in task info panel
- Flex requires
<meta name="referrer" content="no-referrer">
element to be present in<head>
section of HTML. If such element does not exists then Flex will issue additional browser redirect in login flow after returning from IdP (and token is present in the URL). - Deprecated
Reserved
andAssigned
keys inTaskStatusBasedTypeBase
for task channel definitions. Use newAccepted
key for reservation accepted state. - Hide main action button on login when a Validation error (sso, untrusted domain) is thrown.
- On logout, try to detect 'Offline' activity by "sid" (serviceConfiguration.attributes.taskrouter_offline_activity_sid) and, if that's not provided, fallback to the name.
- Use
Pending
task based status key from task channel definition if bothPending
andReserved
were defined for TaskStatusBasedTypeBase. - Agent status in supervisor agent panel now correctly updates, even with a filtered-out agent.
- Teams view "Active agents" filter to dynamically generate and use the query to include agents in all
available
activities from TaskRouter.
- Call Tasks will now be accepted with
endConferenceOnExit
set totrue
, so when agent ends the call the call will be ended for the customer as well. There is no reason anymore to override theacceptTask
action to achieve this. - Removed the
disabledTransfers
config option as it is obsolete due to the change above. - Agent activity duration will now be shown in the teams view and header User card.
- Updated logout view with new design.
- Enabled plugin service by default.
- New FlexEvent
FlexEvents.pluginsLoaded
that fires after all plugins have finished loading. MonitorTask
action payload got a new paramextraParams
that is the equally named TR SDK param forReservation.monitor
call. It is optional and UI does not set it, but developer can alter it via programmability if need be.- Exposed common dependencies like
React
,ReactDOM
,Redux
andReactRedux
to window object for plugins to depend on. - Error notification when browser is unable to access microphone.
- New option
isolate
forrouter
configuration section: whenever set to true, Flex will ignore any navigation action (including URL change) except for internal. - Default route may now be changed via
componentProps
by settingdefaultLocation
property forViewCollection
. - Flex navigation action type is exposed through
FLEX_LOCATION_CHANGE
constant. It can be used to listen to Flex navigation actions or do dispatch Flex-specific navigation actions. disableBrowserVoice
option for configuration. When specified Twilio Client SDK (for Browser voice capability) will not be initialized. Attempting to accept a task that is voice and with worker'scontact_uri
not pointing to a phone number, the attempt is blocked and warning is shown.- Character limit information added to chat channel definitions.
- Registered a
beforeSendMessage
action to check if the message exceeds the limit and handle it accordingly. - SSO login in pop-up window support added.
config.sso.loginPopup = true
can be set to enable it. To gracefully handle blocked popups, newLoginFormView
React component orprovideLoginInfo
ortryLogin
Twilio.Flex API function can be used to launch it. Additionally pop-up window features forwindow.open()
function can be set inconfig.sso.loginPopupFeatures
configuration variable as string. - New API functions to run or log user in to Flex using
Twilio.Flex
interface:
/**
* Runs Flex with default setup.
* It will show loader and prompts for login information
* if it is not provided in configuration object.
*
* @param [config] configuration object
* @param [nodeOrSelector] DOM node or selector string where to render Flex
* @returns {Promise<void>}
*/
export function runDefault(config: Config = {}, nodeOrSelector: string | Element = "body"): Promise<void>;
/**
* Tries to log user in to Flex.
* Can redirect the current browser window to the IdP URL or
* open a new window to navigate to IdP URL if config.loginPopup is set.
*
* @param [config] SSO configuration object
* @return {Promise<boolean>} true if there is valid token and user can be logged in.
*/
function tryLogin(config: SSOConfig = {}): Promise<boolean>;
/**
* Helper function to provide additional account and user info if it is not set.
* Updates the provided config object.
*
* Renders a LoginFormView component if accountSid is not provided or there are problems with signing user in.
*
* @param [config] configuration object
* @param [nodeOrSelector] DOM node or selector string where to render the component
* @returns {Promise<void>} if resolved, then Flex instance can be created with
* provided config object.
*/
function provideLoginInfo(config: Config = {}, nodeOrSelector: string | Element = "body"): Promise<void>;
- New
LoginFormView
React component to be used to provide account / user info with the following props:
interface LoginFormViewProps {
onSuccess: (determinedConfig: Config) => any;
userConfig: Config;
}
- New strings for
LoginFormView
component:
LoginContinue: "Continue anyway",
LoginLaunch: "Launch",
LoginTitle: "Twilio Flex",
LoginErrorDomain: "Oops! Your runtime domain is incorrect.",
LoginErrorDomainDetails: "Find your runtime domain " +
"<a href='https://www.twilio.com/console/runtime/overview'>here</a>",
LoginErrorSso: "Hmm, Single Sign-On has not been configured.",
LoginErrorSsoDetails: "Find out how to configure Single Sign-On " +
"<a href='https://www.twilio.com/console/flex/users/single-sign-on'>here</a>",
LoginErrorPopupBlocked: "Sorry, pop-ups are blocked.",
LoginErrorPopupBlockedDetails: "Find out how to enable pop-ups in your browser",
LoginErrorGeneric: "Oops! Well, that didn’t work :( Please double check your configuration.",
LoginIsAdmin: "Flex Admin?",
LoginWithTwilio: "Login with Twilio.",
-
View
now has multiple route path support. By defaultname
prop is taken as string to be added to the path of the specifiedView
. One can add alternative routes withroute
prop. Example:```<View key="teams" name="teams" route={{ path: "/supervisor" }}> // both http:/domain/teams and http://domain/supervisor will work``` ```<View key="teams" name="teams" route={{ path: ["/supervisor", "something"] }}> // both http:/domain/teams and http://domain/supervisor and http://domain/something will work```
-
ViewCollection
was not using DynamicComponent properly so all manipulations of it other thanadd
via programmability did not work. = Global mute button will be disabled if there are no active calls.
###Fixed
- Global mute button indicated muted state even after the call had ended.
- Use react and react-dom version 16.5.2
baseNames
theme names changed
Deprecated name | New Theme name |
---|---|
DarkTheme | GreyDark |
MediumTheme | GreyLight |
BlueMediumTheme | FlexLight |
BlueDarkTheme | FlexDark |
- Switch from
icon
tolabel
inTab
label components in agentTaskCanvasTabs
and supervisorTaskCanvas
- New localization strings for TaskTabAgentIncomingLabel, TaskTabAgentCallLabel, TaskTabAgentChatLabel, TaskTabAgentInfoLabel, TaskTabSupervisorInfoLabel and TaskTabSupervisorOverviewLabel
export interface Strings<T = string> extends FrameStrings<T> {
...
TaskTabAgentIncomingLabel?: T;
TaskTabAgentCallLabel?: T;
TaskTabAgentChatLabel?: T;
TaskTabAgentInfoLabel?: T;
TaskTabSupervisorInfoLabel?: T;
TaskTabSupervisorOverviewLabel?: T;
}
Views
ofViewCollection
got a new propmountRule
. If specified,keepMounted
prop value is ignored. Definition of the prop is as follows:
export enum ViewMountRule {
Always = "Always", // View is mounted from the start of the application and never unmounted
WhenActive = "WhenActive", // Views is mounted when activated and unmounted when deactivated
WhenHasBeenActive = "WhenHasBeenActive" // View is mounted when first activated and never umounted
}
- TypeScript definitions of the package were referencing some missing files
- Ability to transfer calls to a Queue from Directory Component (previously only workers were present there)
- Action
TransferTask
was introduced with following payload:
{
sid?: string; // sid of the ITask to transfer
task?: ITask; // ITask object representing the Reservation being transferred
targetSid: string; // sid of the Worker or Queue where the task should be transferred to
options?: Object // options passed over to TaskRouter SDK transfer call. Refer to TaskRouter SDK documentation on Task.transfer option values.
}
As with all other Task specific actions, if calling it, either task
or sid
must be specified, the other is autofilled then accordingly. When tapping into the action either with events or task replacement, both will be filled at execution time.
- Regular agents were not able to open up directory button for transfers
- MainHeader now again accepts changing logoUrl default property
- CRMContainer and MessagingCanvas did not pass props down to their custom children
- Issues with broken UI when using custom store