【发布时间】:2019-09-06 15:39:46
【问题描述】:
所以,我正在关注如何设置 Twilio Flex WebChat 的教程 here。虽然它确实有效,但我需要稍后更改友好名称。
我的应用程序的工作方式是在用户签名之前显示网络聊天,因为脚本位于 react 应用程序的 index.html 文件中。
我需要更改它,以便在他们登录后更新聊天中显示的名称。
这是我目前所拥有的,但它肯定行不通。假设我可以从本地存储中获取名称,并且登录内容有效。
componentDidMount() {
//other stuff
this.initializeTwilio();
}
initializeTwilio() {
const name = localStorage.getItem("firstName") +' '+ localStorage.getItem("lastName");
const appConfig = {
accountSid :"hidden",
flexFlowSid: "hidden",
context: {
friendlyName: name
}
};
Twilio.FlexWebChat.renderWebChat(appConfig);
}
我也试过这样做:
let test = Twilio.FlexWebChat.Manager.create(appConfig);
Twilio.FlexWebChat.ContextProvider.Manager = test;
Twilio.FlexWebChat.renderWebChat(appConfig);
我也尝试过像这样编辑 MessagingCanvas:
initializeTwilio =() => {
const first = localStorage.getItem("firstName");
let name ="";
if(first){
const last = localStorage.getItem("lastName");
name = first +' '+ last;
}
else {
name = "Anonymous";
}
Twilio.FlexWebChat.MessagingCanvas.defaultProps.memberDisplayOptions = {
yourDefaultName: name,
yourFriendlyNameOverride: true
}
console.log(Twilio.FlexWebChat.MessagingCanvas.defaultProps);
}
这将更改控制台中的值,但不会更改聊天窗口中显示的名称。
我想我需要更新 appconfig 并重新渲染聊天窗口,但不知道该怎么做,可能有不同的方法来解决问题。我愿意接受这方面的启发。
【问题讨论】:
-
你试过
config = { chatFriendlyName: 'you' }吗?我认为他们的一些文档不是最新的。 config 显示config.context.friendlyName而表格显示config.chatFriendlyName -
@seanplwong,当然没试过。重新渲染网络聊天的正确方法仍然是正确的吗?基本上我知道如何最初设置它,但需要在初始设置后动态更改它。
-
其实我对 twilio 并不熟悉,我只是快速浏览了一下文档,发现有些不一致。也许您可以尝试创建一个新的 ContextProvider,如 the example 所示。或者你可以玩
manager.chatClient,the doc 显示有一个friendlyName属性,但请注意,即使状态已更新,用户界面也可能不会 -
嗨@AlexanderRyanBaggett 你能解决这个问题吗?如果有怎么办?我有类似的要求,我必须在用户登录后更改配置(基本上删除预参与表单)。无法做到这一点。再次调用
FlexWebChat.renderWebChat(appConfig)会引发错误default store already exists。你知道如何实现这一目标吗?谢谢。 -
@KishoreBarik,抱歉,还没有找到答案。
标签: javascript reactjs twilio twilio-programmable-chat twilio-flex