Twilio flex UI获取worker属性,并仅向管理员显示sideNav按钮



我正在构建一个自定义的twilio-flex react插件。我正在尝试添加一个带有侧导航按钮的自定义视图。因此,该按钮应该只对管理员可见。我正在尝试访问当前工作者属性并检查角色是否包括";管理员";。

init(flex, manager) {
// adds the sms button to the navbar
flex.SideNav.Content.add(<customButton key="nav-custom-button"/>,
{
sortOrder: 1,
if: (props) => props.worker.attributes.roles.includes( 'admin'),
});

但是flex本地实例无法加载并尝试重复进行身份验证。

我也试过

if( manager.worker.attributes.roles.includes( 'admin')){
flex.SideNav.Content.add(<OutboundSmsButton key="nav-outbound-sms-button"/>);
}

它在控制台中记录错误。无法读取未定义的属性属性。

在twilio-react插件中获取worker(对于当前代理(属性的正确方法是什么?

解决方案如下:

if( manager.workClient.attributes.roles.includes( 'admin')){
flex.SideNav.Content.add(<OutboundSmsButton key="nav-outbound-sms-button"/>);
}

或者,如果它不在init(flex,manager(内部,则需要导入flex如下所示:

import * as Flex from '@twilio/flex-ui';

let mgr = Flex.Manager.getInstance()
let roleName = mgr.workerClient.attributes.roles
if( roleName.includes( 'admin')){
flex.SideNav.Content.add(<OutboundSmsButton key="nav-outbound-sms-button"/>);
}

来源:https://www.twilio.com/docs/flex/developer/ui/managerhttps://twilio.github.io/twilio-taskrouter.js/Worker.html

获取init((内部的worker属性

init(flex, manager) {
const workerAttributes = manager.workerClient.attributes;
const isAdmin = workerAttributes.roles.includes('admin');
...
}

要在其他任何位置获取工作者属性:

import { Manager } from '@twilio/flex-ui';
const store = Manager.getInstance().store;
const workerAttributes = store.getState().flex.worker.worker.attributes;
const isAdmin = workerAttributes.roles.includes('admin');
...

最新更新