import { ConversationHelper, ConversationState } from "./flex-ui-core/src"; import { ParticipantType } from "@twiliointernal/cbm-sdk"; import { BaseTaskHelper } from "./internal-flex-commons/src"; import { IProfileConnector } from "./components/context/ProfileConnectorContext"; import { IParticipant, ITask } from "./models"; import { ConferenceParticipant } from "./state/Conferences"; import { PausedEmailConversation } from "./state/Email.definitions"; import { CallCanvasParticipant } from "./state/Participants/participants.selectors"; interface WorkerStatus { busy: boolean; details: { isBusyWithVoice: boolean; isBusyWithChat: boolean; }; } /** * @class * @category Helpers * @augments BaseTaskHelper */ export declare class TaskHelper extends BaseTaskHelper { private conversationHelper?; /** * Gets the helper for last chat message. * * @readonly * @deprecated * @deprecatedSince 1.14.0 * @altRecommendation Getter 'TaskHelper.lastChatMessage' is deprecated, please use 'conversationHelper.lastMessage' instead * @altRecommendationExample * import { ConversationHelper, StateHelper } from "@twilio/flex-ui"; * const conversationState = StateHelper.getConversationStateForTask(task); * const conversationHelper = new ConversationHelper(conversationState); * conversationHelper.lastMessage // Returns last message object * @altRecommendationLink https://assets.flex.twilio.com/docs/releases/flex-ui/latest/advanced/helpers/ConversationHelper/#lastMessage * @ignore * @private */ get lastChatMessage(): ConversationState.MessageState | undefined; /** * Returns true if customer is online, false if not. * @ignore * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const taskHelper = new TaskHelper(someTask); * const isCustomerOnline = taskHelper.isCustomerOnline; */ get isCustomerOnline(): boolean; /** * Gets the helper for associated chat channel. * @readonly * @type {ConversationHelper} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const taskHelper = new TaskHelper(someTask); * console.log(taskHelper.chat); */ get chat(): ConversationHelper | undefined; /** * Returns true if task is a live (accepted) call. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const busy = TaskHelper.isLiveCall(someTask); */ static isLiveCall(task: ITask): boolean; /** * Returns true if call associated with a task is on hold. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const busy = TaskHelper.isCallOnHold(someTask); */ static isCallOnHold(task: ITask): boolean; /** * Returns true if current worker can kick the worker participant in the live call task. * @static * @param {ITask} task * @param {ConferenceParticipant} participant * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const canRemoveWorker = TaskHelper.canKickWorkerParticipant(someTask, participant); */ static canKickWorkerParticipant(task: ITask, participant: ConferenceParticipant | CallCanvasParticipant): boolean; /** * Returns true if task is live call task and worker can hold this call task. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const canHoldCall = TaskHelper.canHold(someTask); */ static canHold(task: ITask): boolean; /** * Returns true if task is conference call and worker is on hold. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const isWorkerOnHold = TaskHelper.isCurrentWorkerOnHold(someTask); */ static isCurrentWorkerOnHold(task: ITask): boolean; /** * Returns true if task is conference call and worker is on hold. Deprecated, please use `isCurrentWorkerOnHold` instead. * @static * @deprecated * @deprecatedSince 2.0.0 * @altRecommendation Use `TaskHelper.isCurrentWorkerOnHold` instead. * @altRecommendationExample * import { TaskHelper } from "@twilio/flex-ui"; * const isWorkerOnHold = TaskHelper.isCurrentWorkerOnHold(someTask); * @altRecommendationLink https://assets.flex.twilio.com/docs/releases/flex-ui/latest/advanced/helpers/TaskHelper/#iscurrentworkeronhold-task-boolean * @ignore * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const amIOnHold = TaskHelper.amIOnHold(someTask); */ static amIOnHold(task: ITask): boolean; /** * Returns true if task is live call task and worker can transfer this call task. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const canTransferTask = TaskHelper.canTransfer(someTask); */ static canTransfer(task: ITask): boolean; static isTransferredTask(task: ITask, flexInstanceSid: string): Promise; /** * Returns true if task has an initiated transfer that can be canceled. * For Taskrouter based voice transfers only. * @static * @ignore * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const canCancelTransfer = TaskHelper.canCancelTransfer(someTask); */ static canCancelTransfer(task: ITask | undefined): boolean; /** * Returns true if task is Flex conference call with more than 2 participants. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const isGroupCall = TaskHelper.isGroupCall(someTask); */ static isGroupCall(task: ITask): boolean; /** * Returns true if task is a live (accepted) chat based. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const isLiveChat = TaskHelper.isLiveChat(someTask); */ static isLiveChat(task: ITask): boolean; /** * Returns true if task is an incoming call. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const incomingCall = TaskHelper.isIncomingCall(someTask); */ static isIncomingCall(task: ITask): boolean; /** * Returns true if task is a chat based. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const isChatTask = TaskHelper.isChatBasedTask(someTask); */ static isChatBasedTask(task: ITask): boolean; /** * Returns true if task is a chat based. * @ignore * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const taskHelper = new TaskHelper(someTask); * console.log(taskHelper.isChatBasedTask); */ get isChatBasedTask(): boolean; /** * Returns true if task is a call based task. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const isCallTask = TaskHelper.isCallTask(someTask); */ static isCallTask(task: ITask): boolean; /** * Returns true if task is a call based task. * @ignore * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const taskHelper = new TaskHelper(someTask); * console.log(taskHelper.isCallTask); */ get isCallTask(): boolean; /** * Unused. * * @ignore * @private */ static isVideoCallTask(task: ITask): boolean; /** * Returns true if the task is an email task * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const isEmail = TaskHelper.isEmailTask(someTask); */ static isEmailTask(task: ITask): boolean; /** * Gets conversation sid for a task. * @static * @param {ITask} task * @returns {string} Conversation sid. * @example * import { TaskHelper } from "@twilio/flex-ui"; * const conversationSid = TaskHelper.getTaskConversationSid(someTask); */ static getTaskConversationSid(task: ITask): string; /** * @private * @deprecated * @deprecatedSince 2.0.0 * @altRecommendation Use `TaskHelper.getTaskConversationSid` instead. * @altRecommendationExample * import { TaskHelper } from "@twilio/flex-ui"; * const conversationSid = TaskHelper.getTaskConversationSid(someTask); * @altRecommendationLink https://assets.flex.twilio.com/docs/releases/flex-ui/latest/advanced/helpers/TaskHelper/#gettaskconversationsid-task-string */ static getTaskChatChannelSid(task: ITask): string; /** * Gets chat channel sid for a task. * @ignore * @deprecated * @deprecatedSince 2.0.0 * @altRecommendation Use `TaskHelper.getTaskConversationSid` instead. * @altRecommendationExample * import { TaskHelper } from "@twilio/flex-ui"; * const conversationSid = TaskHelper.getTaskConversationSid(someTask); * @altRecommendationLink https://assets.flex.twilio.com/docs/releases/flex-ui/latest/advanced/helpers/TaskHelper/#gettaskconversationsid-task-string */ get getTaskChatChannelSid(): string; /** * Returns if reservation associated with the task is in pending state. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const pending = TaskHelper.isPending(someTask); */ static isPending(task: ITask): boolean; /** * Returns if reservation associated with the task is in wrapping state. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const isWrapup = TaskHelper.isInWrapupMode(someTask); */ static isInWrapupMode(task: ITask): boolean; /** * Returns if reservation associated with the task is in completed state. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const completed = TaskHelper.isCompleted(someTask); */ static isCompleted(task: ITask): boolean; /** * Returns if reservation associated with the task is assigned to the current user. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const isTaskAssignedToCurrentWorker = TaskHelper.isTaskAssignedToCurrentWorker(someTask); */ static isTaskAssignedToCurrentWorker(task: ITask): boolean; /** * Returns if reservation associated with the task is assigned to the current user. Deprecated, please use `isTaskAssignedToCurrentWorker` instead. * @ignore * @deprecated * @deprecatedSince 2.0.0 * @altRecommendation Use `TaskHelper.isTaskAssignedToCurrentWorker` instead. * @altRecommendationExample * import { TaskHelper } from "@twilio/flex-ui"; * const isTaskAssignedToWorker = TaskHelper.isTaskAssignedToCurrentWorker(someTask); * @altRecommendationLink https://assets.flex.twilio.com/docs/releases/flex-ui/latest/advanced/helpers/TaskHelper/#istaskassignedtocurrentworker-task-boolean */ static isMyTask(task: ITask): boolean; /** * Returns if reservation associated with the task is assigned to the current user. * @ignore * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const taskHelper = new TaskHelper(someTask); * console.log(taskHelper.isMyTask); */ get isMyTask(): boolean; /** * Returns a task which is associated with provided chat channel sid. * @static * @param {string} conversationSid Unique identifier of the conversation. * @returns {ITask | undefined} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const task = TaskHelper.getTaskFromConversationSid("CHXXXXXXXXXXXXXXXXX"); */ static getTaskFromConversationSid(conversationSid: string): ITask | undefined; /** * @private * @deprecated * @deprecatedSince 2.0.0 * @altRecommendation Use `TaskHelper.getTaskFromConversationSid` instead. * @altRecommendationExample * import { TaskHelper } from "@twilio/flex-ui"; * const task = TaskHelper.getTaskFromConversationSid("CHXXXXXXXXXXXXXXXXX"); * @altRecommendationLink https://assets.flex.twilio.com/docs/releases/flex-ui/latest/advanced/helpers/TaskHelper/#gettaskfromconversationsid-conversationsid-itask */ static getTaskFromChannelSid(conversationSid: string): ITask>; /** * Returns task by reservation sid. * @static * @param {string} reservationSid Reservation sid. * @returns {ITask} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const task = TaskHelper.getTaskByTaskSid("WRXXXXXXXXXXXXXXXXX"); */ static getTaskByTaskSid(reservationSid: string): ITask>; /** * Returns true if task is not pending. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const isTaskAccepted = TaskHelper.isTaskAccepted(someTask); */ static isTaskAccepted(task: ITask): boolean; /** * Returns true if task is as outbound call task. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const isOutboundCallTask = TaskHelper.isOutboundCallTask(someTask); */ static isOutboundCallTask(task: ITask): boolean; /** * Returns true if the task is initial pending attempt for outbound call. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const isInitialOutboundAttemptTask = TaskHelper.isInitialOutboundAttemptTask(someTask); */ static isInitialOutboundAttemptTask(task: ITask): boolean; /** * Returns true for tasks which include a [Flex Interaction](https://www.twilio.com/docs/flex/developer/conversations/interactions-api/interactions) Channel SID in its attributes. Refers to tasks created using Flex Conversations. * @static * @param {ITask} task * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const isCBMTask = TaskHelper.isCBMTask(someTask); */ static isCBMTask(task: ITask): boolean; /** * Find the Participant from Task channel * @param {ITask} task * @param {string} channelSid * @param {string} type * @returns {Promise} * @example * const agent = await TaskHelper.findParticipant(task, channelSid, ParticipantType.AGENT); */ static findParticipant(task: ITask, channelSid: string, type?: ParticipantType): Promise; /** * Find the Participant based on taskSid from Task channel * @since 2.9.0 * @param {ITask} task * @param {string} channelSid * @param {string} type * @param {object} options * @returns {Promise} * @example * const agent = await TaskHelper.findParticipantByTaskSid(task, channelSid, ParticipantType.AGENT); */ static findParticipantByTaskSid(task: ITask, channelSid: string, type?: ParticipantType, options?: object): Promise; /** * Sets a profile connector object in the ProfileConnectorContext * @ignore * @since 2.9.0 * @param {IProfileConnector} profileConnector * @returns {void} * @example * import { TaskHelper } from "@twilio/flex-ui"; * TaskHelper.setDisplayNameForTask(profileConnector); */ static setDisplayNameForTask(profileConnector: IProfileConnector): void; /** * Returns a string if there is a display name for a task * This is a helper function to resolve TaskHeaderLine. This is for internal use only. * @ignore * @returns {string | undefined} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const displayName = TaskHelper._getDisplayName(); */ _getDisplayName(): string | undefined; /** * Returns true if the customer's author name is the same as task.defaultFrom * This is a helper function to resolve TaskHeaderLine. This is for internal use only. * @ignore * @returns {boolean} * @example * import { TaskHelper } from "@twilio/flex-ui"; * const isAuthorNameCustomerAddress = TaskHelper._isAuthorNameCustomerAddress(); */ _isAuthorNameCustomerAddress(): boolean; /** * Returns task by channel sid. * @param {string} channelSid * @returns {ITask} * @since 2.13.0 * @example * import { TaskHelper } from "@twilio/flex-ui"; * const task = TaskHelper.getTaskbyChannelSid(channelSid); */ static getTaskbyChannelSid(channelSid: string): ITask | undefined; /** * Returns task by conversation sid. * @param {string} conversationSid * @returns {PausedEmailConversation} * @since 2.13.0 * @example * import { TaskHelper } from "@twilio/flex-ui"; * const task = TaskHelper.getConversationfromConversationSid(conversationSid); */ static getConversationByConversationSidFromPausedConversationMap(conversationSid: string): PausedEmailConversation | undefined; /** * Returns task by channel sid. * @param {string} channelSid * @returns {PausedEmailConversation} * @since 2.13.0 * @example * import { TaskHelper } from "@twilio/flex-ui"; * const task = TaskHelper.getTaskbyChannelSidFromPauseConversationMap(channelSid); */ static getTaskbyChannelSidFromPauseConversationMap(channelSid: string): PausedEmailConversation | undefined; /** * Evaluates the current status of the logged-in worker based on their assigned tasks. * Determines whether the worker is currently busy (has any accepted task), and further breaks down * whether the worker is busy with a live voice call or a live chat. * * @static * @returns {{ busy: boolean, details: { isBusyWithVoice: boolean, isBusyWithChat: boolean } }} * Object indicating the worker's current overall and detailed busy state. * * @example * import { TaskHelper } from "@twilio/flex-ui"; * const { busy, details } = TaskHelper.getWorkerStatus(); * * @since 2.13.0 */ static getWorkerStatus(): WorkerStatus; } export declare class PrivateTaskHelper { static isEmailChannelEnabled(): boolean; static isApiInitialisedTaskWithoutMessages(task: ITask, conversation: ConversationState.ConversationState): boolean; static isOutboundChatTask(task: ITask): boolean; static isLoadingOutboundChatTask(task: ITask): boolean; static isNewTask(task: ITask): boolean; static isOutboundEmailTask(task: ITask): boolean; static isEmailOutboundSettingConfigured(): boolean; static isOutboundEmailTaskAllowed: () => boolean; static isInsightsProvisioned(): boolean; static isTeamsContextEnabled(): boolean; static isWorkerInCallFromAnotherDevice(task: ITask): boolean; static isSupervisorAlreadyMonitoringCallTask: (task?: ITask) => boolean; static isTaskWarmTransferInitiated(task: ITask): boolean; static hasPendingExternalParticipant(task: ITask): boolean; static getDisplayNameForTask(taskSid: string): string | undefined; static isOutboundCBMTask(task: ITask): boolean; static getQueueNameOfTask(task: ITask): string; } export {};