如何在Twilio Flex插件中获取登录座席的关联Queues?
在Twilio Flex插件中获取已登录座席的专属出站队列
核心思路
不能直接调用全量TaskQueues接口,要通过当前Worker(座席)实例关联的队列数据筛选,或者调用TaskRouter API中针对Worker的专属队列查询端点,以此拿到座席被分配的队列。
具体实现步骤
获取当前Worker实例
Flex插件可通过内置Manager实例直接拿到当前登录座席的Worker对象,无需额外验证:const manager = Manager.getInstance(); const currentWorker = manager.workerClient;提取专属队列数据
两种可靠获取方式:- 直接读取Worker对象的
taskQueues属性(Flex SDK已自动关联数据):// 监听Worker加载完成事件,确保数据就绪 currentWorker.on('ready', () => { const assignedQueues = currentWorker.taskQueues; // 后续处理队列数据 }); - 调用TaskRouter REST API查询(SDK自动关联数据缺失时使用):
currentWorker.on('ready', async () => { const workspaceSid = manager.configuration.taskrouterWorkspaceSid; const workerSid = currentWorker.sid; // 构造API请求 const response = await fetch(`https://taskrouter.twilio.com/v1/Workspaces/${workspaceSid}/Workers/${workerSid}/TaskQueues`, { headers: { 'Authorization': `Basic ${btoa(`${manager.configuration.accountSid}:${manager.configuration.authToken}`)}` } }); const result = await response.json(); const assignedQueues = result.tasks; // 队列列表存于tasks字段 });
- 直接读取Worker对象的
渲染出站队列选择框
将队列数据转为选择框选项,插入到Flex界面的对应位置(比如座席桌面侧边栏):function renderQueueSelect(queues) { const select = document.createElement('select'); select.className = 'outbound-queue-select'; queues.forEach(queue => { const option = document.createElement('option'); option.value = queue.sid; option.textContent = queue.friendlyName; // 显示队列名称 select.appendChild(option); }); // 插入到Flex侧边栏示例 const sidebar = document.querySelector('.Twilio-AgentDesktopView-SidePanel'); sidebar.appendChild(select); } // Worker就绪后执行渲染 currentWorker.on('ready', () => { const assignedQueues = currentWorker.taskQueues; renderQueueSelect(assignedQueues); });
注意事项
- 插件配置的AuthToken/API Key需拥有
TaskRouterWorker和TaskRouterTaskQueue的访问权限,否则API调用会返回权限错误。 - 使用SDK的
taskQueues属性时,必须等待Worker的ready事件触发后再读取,避免拿到空数据。
内容的提问来源于stack exchange,提问作者Jean Paul Rumeau
相关产品推荐
相关产品推荐

