Skip to contentSkip to navigationSkip to topbar
Page toolsOn this page
Looking for more inspiration?Visit the

Flex SDK methods (public beta)


(new)

Public Beta

The Flex SDK is currently available as a Public Beta product and the information contained in this document is subject to change. This means that some features are not yet implemented and others may be changed before the product is declared as Generally Available. Public Beta products are not covered by a SLA.

(warning)

Not a HIPAA Eligible Service or PCI Compliant

The Flex SDK is not a HIPAA Eligible Service or PCI compliant and should not be used in workflows that are subject to HIPAA or PCI.

The following methods are available in the Flex SDK:

Worker methods

worker-methods page anchor

setCurrentActivity

setcurrentactivity page anchor

Set the activity of the user.

1
import { createClient, SetCurrentActivity } from "@twilio/flex-sdk";
2
3
async function setCurrentActivity() {
4
const client = await createClient("SDK_TOKEN");
5
const worker = await client.getWorker();
6
7
// Activities are accessible via Worker.activities property (Map of activitySID to Activity)
8
const activities = Array.from(worker.activities.values());
9
const targetActivity = activities.find(activity => activity.name === "Available") || activities[0];
10
11
console.log(`Setting worker activity to "${targetActivity.name}" (${targetActivity.sid})`);
12
13
const setCurrentActivityAction = new SetCurrentActivity(targetActivity.sid);
14
await client.execute(setCurrentActivityAction);
15
}

Set worker attributes.

1
import { createClient } from "@twilio/flex-sdk";
2
import { SetAttributes } from "@twilio/flex-sdk/actions/Worker";
3
4
async function setWorkerAttributes() {
5
const client = await createClient("SDK_TOKEN");
6
const setAttributesAction = new SetAttributes({ key: "value" });
7
await client.execute(setAttributesAction);
8
}

Accept a task.

Note: For voice tasks, you must first register a VoiceClientEvent listener using AddVoiceEventListener before calling this action. If you don't do this, accepting the task may fail or result in a missing call context.

1
import { createClient } from "@twilio/flex-sdk";
2
import { AcceptTask } from "@twilio/flex-sdk/actions/Task";
3
4
async function acceptTask() {
5
const client = await createClient("SDK_TOKEN");
6
const acceptTask = new AcceptTask("WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
7
const { task, reservation } = await client.execute(acceptTask);
8
return { task, reservation };
9
}

Reject a task.

1
import { createClient } from "@twilio/flex-sdk";
2
import { RejectTask } from "@twilio/flex-sdk/actions/Task";
3
4
async function rejectTask() {
5
const client = await createClient("SDK_TOKEN");
6
const rejectTask = new RejectTask("WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
7
const { task, reservation } = await client.execute(rejectTask);
8
return { task, reservation };
9
}

Complete a task that's either pending or assigned. If applicable, will result in wrapUpTask being called.

1
import { createClient } from "@twilio/flex-sdk";
2
import { CompleteTask } from "@twilio/flex-sdk/actions/Task";
3
4
async function completeTask() {
5
const client = await createClient("SDK_TOKEN");
6
7
const completeTask = new CompleteTask("WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
8
const completedTask = await client.execute(completeTask);
9
return completedTask;
10
}

Wrap up a task.

1
import { createClient } from "@twilio/flex-sdk";
2
import { WrapUpTask } from "@twilio/flex-sdk/actions/Task";
3
4
async function wrapUpTask() {
5
const client = await createClient("SDK_TOKEN");
6
const wrapUpTask = new WrapUpTask("TSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
7
const { task, reservation } = await client.execute(wrapUpTask);
8
return { task, reservation };
9
}

Clear the task. Hang up a voice call by invoking the HangupCall action. If there isn't a voice call to hang up, this method proceeds to invoke the CompleteTask or wrapUpTask actions, depending on the task status and the taskChannel capabilities.

1
import { createClient } from "@twilio/flex-sdk";
2
import { EndTask } from "@twilio/flex-sdk/actions/Task";
3
4
async function endTask() {
5
const client = await createClient("SDK_TOKEN");
6
const endTask = new EndTask("WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
7
const { task, reservation } = await client.execute(endTask);
8
return { task, reservation };
9
}

Get all participants attached to a task.

1
import { createClient } from "@twilio/flex-sdk";
2
import { GetTaskParticipants } from "@twilio/flex-sdk/actions/Task";
3
4
async function getTaskParticipants() {
5
const client = await createClient("SDK_TOKEN");
6
const getTaskParticipants = new GetTaskParticipants("WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
7
const participants = await client.execute(getTaskParticipants);
8
return participants;
9
}

AddTaskParticipantListener

addtaskparticipantlistener page anchor

Add a task participant event listener.

1
import { createClient } from "@twilio/flex-sdk";
2
import { AddTaskParticipantListener } from "@twilio/flex-sdk/actions/Task";
3
4
async function addTaskParticipantListener() {
5
const client = await createClient("SDK_TOKEN");
6
7
const addTaskParticipantListener = new AddTaskParticipantListener(
8
"WTxxx",
9
"participantAdded",
10
(task, participant) => {
11
console.log(`Participant added: ${participant.sid} to task ${task.sid}`);
12
}
13
);
14
const { unsubscribe } = await client.execute(addTaskParticipantListener);
15
return unsubscribe;
16
}

Update task attributes.

1
import { createClient } from "@twilio/flex-sdk";
2
import { SetTaskAttributes } from "@twilio/flex-sdk/actions/Task";
3
4
async function setTaskAttributes() {
5
const client = await createClient("SDK_TOKEN");
6
const setTaskAttributesAction = new SetTaskAttributes(
7
"WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
8
{ key: "value" }
9
);
10
const updatedTask = await client.execute(setTaskAttributesAction);
11
return updatedTask;
12
}

Start an outbound voice call.

1
import { createClient, Reservation } from "@twilio/flex-sdk";
2
import { StartOutboundCall, StartOutboundCallOptions } from "@twilio/flex-sdk/actions/Voice";
3
4
async function startOutboundCall() {
5
const client = await createClient("SDK_TOKEN");
6
const reservationCanceledHandler = (reservation: Reservation) => {
7
console.log(
8
`Reservation canceled with reason https://www.twilio.com/docs/api/errors/${reservation.canceledReasonCode}`
9
);
10
reservation.off("canceled", reservationCanceledHandler);
11
};
12
const startOutboundCallOptions: StartOutboundCallOptions = {
13
reservationEventListeners: {
14
canceled: reservationCanceledHandler
15
}
16
};
17
const startOutboundCallAction = new StartOutboundCall("+15555555555", startOutboundCallOptions);
18
const call = await client.execute(startOutboundCallAction);
19
}

Add a voice event listener to the client.

1
import { createClient } from "@twilio/flex-sdk";
2
import { AddVoiceEventListener, VoiceClientEvent } from "@twilio/flex-sdk/actions/Voice";
3
4
const client = await createClient("SDK_TOKEN");
5
6
const addVoiceEventListener = new AddVoiceEventListener(VoiceClientEvent.Incoming, (call) => {
7
// Handle incoming call
8
});
9
const { unsubscribe } = await client.execute(addVoiceEventListener);
10
11
// call unsubscribe if defined to remove the listener when needed
12
unsubscribe();

Monitor a provided ongoing call of another agent.

1
import { createClient } from "@twilio/flex-sdk";
2
import { MonitorCall } from "@twilio/flex-sdk/actions/Voice";
3
4
async function example() {
5
const client = await createClient("SDK_TOKEN");
6
const monitorCall = new MonitorCall("WTXXXXXXXXXXXXXXXXXXXXXXXXX", "WRXXXXXXXXXXXXXXXXXXXXXXXXX");
7
const call = await client.execute(monitorCall);
8
}

Mute current call.

1
import { createClient, StartOutboundCall } from "@twilio/flex-sdk";
2
3
const client = await createClient("SDK_TOKEN");
4
const startOutboundCall = new StartOutboundCall("+1XXX", { fromNumber: "+1XXX", workflowSid: "WWXXX", taskQueueSid: "WQXXX"});
5
6
const voiceCall = await client.execute(startOutboundCall);
7
voiceCall.mute();
8
9
const isMuted: boolean = voiceCall.isMuted();
10
console.log(`Call ${isMuted ? "is muted" : "is not muted"}`)

Unmute current call.

1
import { createClient, StartOutboundCall } from "@twilio/flex-sdk";
2
3
const client = await createClient("SDK_TOKEN");
4
const startOutboundCall = new StartOutboundCall("+1XXX", { fromNumber: "+1XXX", workflowSid: "WWXXX", taskQueueSid: "WQXXX"});
5
6
const voiceCall = await client.execute(startOutboundCall);
7
voiceCall.unmute();
8
9
const isMuted: boolean = voiceCall.isMuted();
10
console.log(`Call ${isMuted ? "is muted" : "is not muted"}`)

Checks if the current call is muted.

1
import { createClient, StartOutboundCall } from "@twilio/flex-sdk";
2
3
const client = await createClient("SDK_TOKEN");
4
const startOutboundCall = new StartOutboundCall("+1XXX", { fromNumber: "+1XXX", workflowSid: "WWXXX", taskQueueSid: "WQXXX"});
5
6
const voiceCall = await client.execute(startOutboundCall);
7
8
const isMuted: boolean = voiceCall.isMuted();
9
console.log(`Call ${isMuted ? "is muted" : "is not muted"}`)

VoiceCall.call [Member]

voicecallcall-member page anchor

Instance of the call.

VoiceCall.device [Member]

voicecalldevice-member page anchor

Instance of the device.

Hang up the current call.

1
import { createClient, StartOutboundCall } from "@twilio/flex-sdk";
2
3
const client = await createClient("SDK_TOKEN");
4
const startOutboundCall = new StartOutboundCall("+1XXX", { fromNumber: "+1XXX", workflowSid: "WWXXX", taskQueueSid: "WQXXX"});
5
6
const voiceCall = await client.execute(startOutboundCall);
7
8
await voiceCall.disconnect();

Hold the current call.

1
import { createClient, StartOutboundCall } from "@twilio/flex-sdk";
2
3
const client = await createClient("SDK_TOKEN");
4
const voiceCall = await client.execute(
5
new StartOutboundCall("+1XXX")
6
);
7
await voiceCall.hold("holdMusicUrl", "GET");

Unhold the current call.

1
import { createClient, StartOutboundCall } from "@twilio/flex-sdk";
2
3
const client = await createClient("SDK_TOKEN");
4
const startOutboundCall = new StartOutboundCall("+1XXX", { fromNumber: "+1XXX", workflowSid: "WWXXX", taskQueueSid: "WQXXX"});
5
6
const voiceCall = await client.execute(startOutboundCall);
7
8
// Call is not on hold by default so to unhold, it is needed to hold first
9
await call.hold("holdMusicUrl", "GET");
10
await call.unhold();

Check if the current call is on hold.

1
import { createClient, StartOutboundCall } from "@twilio/flex-sdk";
2
3
const client = await createClient("SDK_TOKEN");
4
const startOutboundCall = new StartOutboundCall("+1XXX", { fromNumber: "+1XXX", workflowSid: "WWXXX", taskQueueSid: "WQXXX"});
5
6
const voiceCall = await client.execute(startOutboundCall);
7
8
const isOnHold: boolean = await voiceCall.isOnHold();
9
console.log(`Call ${isOnHold ? "is on hold" : "is not on hold"}`)

Returns the VoiceCall object associated with the provided task.

1
import { createClient } from "@twilio/flex-sdk";
2
import { GetCallByTask } from "@twilio/flex-sdk/actions/Voice";
3
4
async function getCallByTask() {
5
const client = await createClient("SDK_TOKEN");
6
const getCallByTask = new GetCallByTask("WTXXX");
7
const voiceCall = await client.execute(getCallByTask);
8
return voiceCall;
9
}

Put a call participant on hold.

1
import { createClient } from "@twilio/flex-sdk";
2
import { HoldVoiceParticipant } from "@twilio/flex-sdk/actions/Voice";
3
4
async function holdVoiceParticipant() {
5
const client = await createClient("SDK_TOKEN");
6
const holdVoiceParticipantAction = new HoldVoiceParticipant(
7
"WKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
8
"WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
9
);
10
await client.execute(holdVoiceParticipantAction);
11
}

Unhold a call participant.

1
import { createClient } from "@twilio/flex-sdk";
2
import { UnholdVoiceParticipant } from "@twilio/flex-sdk/actions/Voice";
3
4
const client = await createClient("SDK_TOKEN");
5
const unholdVoiceParticipant = new UnholdVoiceParticipant("WKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
6
await client.execute(unholdVoiceParticipant);

Remove a participant from a call.

1
import { createClient } from "@twilio/flex-sdk";
2
import { KickVoiceParticipant } from "@twilio/flex-sdk/actions/Voice";
3
4
const client = await createClient("SDK_TOKEN");
5
const kickVoiceParticipant = new KickVoiceParticipant("UTXXX", "WTXXX");
6
await client.execute(kickVoiceParticipant);

addExternalVoiceParticipant

addexternalvoiceparticipant page anchor

Add a participant to a voice task.

1
import { createClient } from "@twilio/flex-sdk";
2
import { AddExternalVoiceParticipant } from "@twilio/flex-sdk/actions/Voice";
3
4
async function addExternalVoiceParticipant() {
5
const client = await createClient("SDK_TOKEN");
6
const addParticipant = new AddExternalVoiceParticipant(
7
"WKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
8
"+1234567890"
9
);
10
const { pendingParticipantResponse, waitForParticipantToSettle } = await client.execute(addParticipant);
11
return { pendingParticipantResponse, waitForParticipantToSettle };
12
}

End a conference for all participants in a task.

1
import { createClient } from "@twilio/flex-sdk";
2
import { EndVoiceCallForAll } from "@twilio/flex-sdk/actions/Voice";
3
4
async function endVoiceCallForAll() {
5
const client = await createClient("SDK_TOKEN");
6
const endVoiceCallForAll = new EndVoiceCallForAll("WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
7
const endedTask = await client.execute(endVoiceCallForAll);
8
return endedTask;
9
}

Transfer a provided task to a target worker.

1
import { createClient } from "@twilio/flex-sdk";
2
import { StartVoiceTaskTransfer } from "@twilio/flex-sdk/actions/Voice";
3
4
async function transferVoiceTask() {
5
const client = await createClient("SDK_TOKEN");
6
const startVoiceTaskTransfer = new StartVoiceTaskTransfer("WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "WKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
7
const transferredTask = await client.execute(startVoiceTaskTransfer);
8
return transferredTask;
9
}

Cancel a task that was being transferred to a target worker.

1
import { createClient } from "@twilio/flex-sdk";
2
import { CancelVoiceTaskTransfer } from "@twilio/flex-sdk/actions/Voice";
3
4
async function cancelVoiceTaskTransfer() {
5
const client = await createClient("SDK_TOKEN");
6
const cancelVoiceTaskTransfer = new CancelVoiceTaskTransfer("WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
7
const canceledTask = await client.execute(cancelVoiceTaskTransfer);
8
return canceledTask;
9
}

Get conversation for a task.

1
import { createClient } from "@twilio/flex-sdk";
2
import { GetConversationByTask } from "@twilio/flex-sdk/actions/Conversation";
3
4
async function getConversationByTask() {
5
const client = await createClient("SDK_TOKEN");
6
const getConversationByTask = new GetConversationByTask(
7
"WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
8
);
9
const conversation = await client.execute(getConversationByTask);
10
return conversation;
11
}

Pause the conversation channel of a task.

1
import { createClient } from "@twilio/flex-sdk";
2
import { PauseConversation } from "@twilio/flex-sdk/actions/Conversation";
3
4
async function pauseConversation() {
5
const client = await createClient("SDK_TOKEN");
6
const pauseConversationAction = new PauseConversation("WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
7
await client.execute(pauseConversationAction);
8
}

Leave the conversation channel of a task.

1
import { createClient } from "@twilio/flex-sdk";
2
import { LeaveConversation } from "@twilio/flex-sdk/actions/Conversation";
3
4
async function leaveConversation() {
5
const client = await createClient("SDK_TOKEN");
6
const leaveConversationAction = new LeaveConversation("WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
7
await client.execute(leaveConversationAction);
8
}

startConversationTransfer

startconversationtransfer page anchor

Transfer a conversation channel.

1
import { createClient } from "@twilio/flex-sdk";
2
import { StartConversationTransfer } from "@twilio/flex-sdk/actions/Conversation";
3
4
async function startConversationTransfer() {
5
const client = await createClient("SDK_TOKEN");
6
const startConversationTransferAction = new StartConversationTransfer(
7
"WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
8
"WKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
9
);
10
await client.execute(startConversationTransferAction);
11
}

getConversationTransfers

getconversationtransfers page anchor

Get channel transfers.

1
import { createClient } from "@twilio/flex-sdk";
2
import { GetConversationTransfers } from "@twilio/flex-sdk/actions/Conversation";
3
4
async function getConversationTransfers() {
5
const client = await createClient("SDK_TOKEN");
6
const getConversationTransfersAction = new GetConversationTransfers(
7
"WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
8
);
9
const transfers = await client.execute(getConversationTransfersAction);
10
return transfers;
11
}

conversation.sendMessage

conversationsendmessage page anchor

Send a message to an existing conversation. Must be called from a conversation object which can be obtained after adding the event listener for a conversation event: AddConversationEventListener.

1
import { createClient, AddConversationEventListener } from "@twilio/flex-sdk";
2
3
const client = await createClient("SDK_TOKEN");
4
5
const addConversationEventListener = new AddConversationEventListener("conversationAdded", (conversation) => {
6
conversation.sendMessage({body: "hello world!"});
7
})
8
client.execute(addConversationEventListener)

conversation.getMessages

conversationgetmessages page anchor

Get a conversation's messages.

1
import { createClient, AddConversationEventListener } from "@twilio/flex-sdk";
2
3
const client = await createClient("SDK_TOKEN");
4
5
const addConversationEventListener = new AddConversationEventListener("conversationAdded", (conversation) => {
6
conversation.getMessages();
7
})
8
client.execute(addConversationEventListener)

Start an outbound email task.

1
import { createClient } from "@twilio/flex-sdk";
2
import { StartOutboundEmailTask } from "@twilio/flex-sdk/actions/Conversation";
3
4
async function startOutboundEmailTask() {
5
const client = await createClient("SDK_TOKEN");
6
const startOutboundEmailTask = new StartOutboundEmailTask("name@email.com");
7
const { task, conversation } = await client.execute(startOutboundEmailTask);
8
return { task, conversation };
9
}

Add a participant to an email task.

1
import { createClient } from "@twilio/flex-sdk";
2
import { AddEmailParticipant, ParticipantLevel } from "@twilio/flex-sdk/actions/Conversation";
3
4
async function addEmailParticipant() {
5
const client = await createClient("SDK_TOKEN");
6
const addEmailParticipant = new AddEmailParticipant("WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "test.user@gmail.com", ParticipantLevel.To, { name: "Test User" });
7
await client.execute(addEmailParticipant);
8
}

Remove a participant from an email task.

1
import { createClient } from "@twilio/flex-sdk";
2
import { RemoveEmailParticipant } from "@twilio/flex-sdk/actions/Conversation";
3
4
async function removeEmailParticipant() {
5
const client = await createClient("SDK_TOKEN");
6
const removeEmailParticipant = new RemoveEmailParticipant(
7
"WTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
8
"UTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
9
);
10
const removedParticipant = await client.execute(removeEmailParticipant);
11
return removedParticipant;
12
}

Get paused email conversations.

1
import { createClient } from "@twilio/flex-sdk";
2
import { GetPausedConversations } from "@twilio/flex-sdk/actions/Conversation";
3
4
async function getPausedConversations() {
5
const client = await createClient("SDK_TOKEN");
6
const getPausedConversations = new GetPausedConversations();
7
const result = await client.execute(getPausedConversations);
8
return result;
9
}

Get a Conversations user.

1
import { createClient } from "@twilio/flex-sdk";
2
import { GetConversationsUser } from "@twilio/flex-sdk/actions/Conversation";
3
4
async function getConversationsUser() {
5
const client = await createClient("SDK_TOKEN");
6
const getConversationsUser = new GetConversationsUser("user_identity");
7
const user = await client.execute(getConversationsUser);
8
return user;
9
}

Resume a Conversations channel.

1
import { createClient } from "@twilio/flex-sdk";
2
import { ResumeConversation, GetPausedConversations } from "@twilio/flex-sdk/actions/Conversation";
3
4
async function resumeConversation() {
5
const client = await createClient("SDK_TOKEN");
6
7
// Retrieves paused conversations
8
const getPausedConversations = new GetPausedConversations();
9
const pausedConversations = await client.execute(getPausedConversations);
10
11
// Select the paused conversation
12
const pausedConversation = pausedConversations.items[0];
13
14
// Resume the conversation
15
const resumeConversation = new ResumeConversation(pausedConversation);
16
const { task, conversation } = await client.execute(resumeConversation);
17
return { task, conversation };
18
}

Supervisor changing a worker status.

1
import { createClient, SetWorkerActivity } from "@twilio/flex-sdk";
2
3
async function setWorkerActivity() {
4
const client = await createClient("SDK_TOKEN");
5
const workspace = await client.getWorkspace();
6
const worker = await client.getWorker();
7
8
// Get workers from the workspace
9
const workerInfos = Array.from((await workspace.fetchWorkersInfo()).values());
10
const targetWorkerInfo = workerInfos.find(workerInfo => workerInfo.name === "John Doe") || workerInfos[0];
11
12
// Activities are accessible via Worker.activities property (Map of activitySID to Activity)
13
const activities = Array.from(worker.activities.values());
14
const targetActivity = activities.find(activity => activity.name === "Break") || activities[0];
15
16
console.log(`Setting worker "${targetWorkerInfo.name}" activity to "${targetActivity.name}" (${targetActivity.sid})`);
17
18
const setWorkerActivityAction = new SetWorkerActivity(targetWorkerInfo.sid, targetActivity.sid);
19
await client.execute(setWorkerActivityAction);
20
}

Supervisor changing the worker attributes/skills.

1
import { createClient } from "@twilio/flex-sdk";
2
import { SetWorkerAttributes } from "@twilio/flex-sdk/actions/Supervisor";
3
4
async function setWorkerAttributes() {
5
const client = await createClient("SDK_TOKEN");
6
const setWorkerAttributesAction = new SetWorkerAttributes(
7
"WKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
8
{ key: "value" }
9
);
10
await client.execute(setWorkerAttributesAction);
11
}

Generate PKCE codes and login URL for the client to sign in with their IdP.

1
import { getLoginDetails } from "@twilio/flex-sdk";
2
3
const {
4
loginUrl,
5
codeChallenge,
6
nonce,
7
state,
8
codeVerifier
9
} = await getLoginDetails({
10
clientId: "XVOxxxxxxxxxxxxx",
11
ssoProfileSid: "JQxxxxxxxxxxx",
12
redirectUrl: "https://example.com/callback"
13
});
14
15
console.log("Login URL: ", loginUrl);
16
console.log("Code Challenge: ", codeChallenge);
17
console.log("Nonce: ", nonce);
18
console.log("State: ", state);
19
console.log("Code Verifier: ", codeVerifier);

Refresh token used by the SDK.

1
import { refreshToken } from "@twilio/flex-sdk";
2
3
const tokenData = await refreshToken({ refreshToken: "TOKEN", ssoProfileSid: "SSO_PROFILE_SID" });

Validate a given token.

1
import { validateToken } from "@twilio/flex-sdk";
2
3
const tokenData = await validateToken("ACXXX", "TOKEN");

API to retrieve the Flex OAuth configuration.

1
import { getAuthenticationConfig } from "@twilio/flex-sdk";
2
3
const authConfig = await getAuthenticationConfig({
4
runtimeDomain: "test-runtime-domain",
5
appType: "web"
6
});

Exchange Auth0 for Flex JWE token.

1
import { exchangeToken } from "@twilio/flex-sdk";
2
3
const tokenData = await exchangeToken({
4
ssoProfileSid: "SSO_PROFILE_SID",
5
code: "AUTH_CODE",
6
codeVerifier: "CODE_VERIFIER",
7
nonce: "NONCE"
8
});

Update the token for the current session.

1
import { createClient } from "@twilio/flex-sdk";
2
3
const client = await createClient("SDK_TOKEN");
4
5
await client.updateToken("NEW_TOKEN");

Destroy the client, removing all event listeners.

1
import { createClient } from "@twilio/flex-sdk";
2
3
const client = await createClient("SDK_TOKEN");
4
5
await client.destroy();

Return the Worker object representing the current user.

1
import { createClient } from "@twilio/flex-sdk";
2
3
const client = await createClient("SDK_TOKEN");
4
const worker = await client.getWorker();

Return the Workspace object.

1
import { createClient } from "@twilio/flex-sdk";
2
3
const client = await createClient("SDK_TOKEN");
4
const workspace = await client.getWorkspace();

Create a new Flex SDK Client instance.

1
import { createClient } from "@twilio/flex-sdk";
2
3
const client = await createClient("SDK_TOKEN", {
4
logger: {
5
level: "debug"
6
}
7
});

Retrieve public configuration from the Flex Configuration Service.

1
import { getPublicConfig } from "@twilio/flex-sdk";
2
3
const publicConfig = await getPublicConfig({ accountSid: "AC123456789009876543210" });

Retrieve the features config for the provided session token.

1
import { getFeaturesConfig } from "@twilio/flex-sdk";
2
3
const featuresConfig = await getFeaturesConfig("token123456789009876543210");

Get account configuration data.

1
import { getAccountConfig } from "@twilio/flex-sdk";
2
3
const accountConfig = await getAccountConfig("token123456789009876543210");

Set the log level for the SDK.

1
import { setLogLevel } from "@twilio/flex-sdk";
2
3
setLogLevel("debug");

Error thrown by the Flex SDK.

Error code used by the Flex SDK.

Error severity level.

Current version of the SDK in use.