【问题标题】:How to Dynamically change the friendly name in Twilio Flex Webchat如何在 Twilio Flex Webchat 中动态更改友好名称
【发布时间】: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.chatClientthe doc 显示有一个friendlyName 属性,但请注意,即使状态已更新,用户界面也可能不会
  • 嗨@AlexanderRyanBaggett 你能解决这个问题吗?如果有怎么办?我有类似的要求,我必须在用户登录后更改配置(基本上删除预参与表单)。无法做到这一点。再次调用FlexWebChat.renderWebChat(appConfig) 会引发错误default store already exists。你知道如何实现这一目标吗?谢谢。
  • @KishoreBarik,抱歉,还没有找到答案。

标签: javascript reactjs twilio twilio-programmable-chat twilio-flex


【解决方案1】:

我不知道您是否想准确显示代理人的姓名或其他内容。但这是我为了显示代理的友好名称而偶然发现的

MessagingCanvas: {
  memberDisplayOptions: {
    theirFriendlyNameOverride: true
  }
}

theirFriendlyNameOverride 标志一旦可用就会覆盖代理的默认友好名称

我的配置示例:

var appConfig = {
  accountSid: "xxxxxx",
  flexFlowSid: "xxxxx",
  componentProps: {
    MessagingCanvas: {
      memberDisplayOptions: {
        yourDefaultName: 'You',
        yourFriendlyNameOverride: false,
        theirFriendlyNameOverride: true
      }
    },
  },
  startEngagementOnInit: true,
};

【讨论】:

  • 我已经尝试在 MessagingCanvas 中设置值。它更新一个对象,而不是实际显示的名称。
  • 这是默认设置道具。 twilio 会覆盖自己。
  • @AlexanderRyanBaggett 这是以防您想显示代理的友好名称,而不是自定义任何您想要的名称
  • @AlexanderRyanBaggett 添加了我的配置示例,此配置可以满足我的要求。也许你需要别的东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多