Как динамически изменить понятное имя в веб-чате Twilio Flex

Итак, я следую руководству здесь о том, как настроить Twilio Flex WebChat. Хотя это определенно работает, мне нужно будет изменить понятное имя позже.

Как работает мое приложение, оно показывает веб-чат до подписания пользователями, поскольку скрипты находятся в файле 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 и повторно отобразить окно чата, но я не знаю, как это сделать, и может быть другой способ решения проблемы. Я открыт для просветления по этому поводу.


person Alexander Ryan Baggett    schedule 06.09.2019    source источник
comment
вы пробовали config = { chatFriendlyName: 'you' }? Я думаю, что некоторые из их документов устарели. config показывает config.context.friendlyName, а в таблице отображается config.chatFriendlyName   -  person seanplwong    schedule 06.09.2019
comment
@seanplwong, уж точно не пробовал. Верный ли подход к повторному рендерингу веб-чата? В основном я знаю, как установить его изначально, но мне нужно динамически изменять его после первоначальной настройки.   -  person Alexander Ryan Baggett    schedule 06.09.2019
comment
На самом деле я не знаком с Twilio, я просто быстро просмотрел документ и обнаружил, что что-то не соответствует. Возможно, вы могли бы попробовать создать новый ContextProvider, как показано в пример. Или вы можете поиграть с manager.chatClient, doc показывает наличие атрибута friendlyName, но обратите внимание, что даже если состояние обновлено, пользовательский интерфейс может не   -  person seanplwong    schedule 06.09.2019
comment
Привет, @AlexanderRyanBaggett, тебе удалось это решить? Если да, то как? У меня есть аналогичное требование, когда я должен изменить конфигурацию после входа пользователя в систему (в основном удалить форму предварительного взаимодействия). Не удалось этого добиться. повторный вызов FlexWebChat.renderWebChat(appConfig) вызывает ошибку default store already exists. Вы хоть представляете, как этого добиться. Спасибо.   -  person Kishore Barik    schedule 27.11.2019
comment
@KishoreBarik, извините, я еще не нашел ответа.   -  person Alexander Ryan Baggett    schedule 27.11.2019


Ответы (1)


Я не знаю, хотите ли вы указать точное имя агента или что-то еще. Но вот что я нашел случайно, чтобы отобразить дружественное имя агента.

MessagingCanvas: {
  memberDisplayOptions: {
    theirFriendlyNameOverride: true
  }
}

theirFriendlyNameOverride флаг отменяет стандартное понятное имя агента, когда оно доступно

пример моей конфигурации:

var appConfig = {
  accountSid: "xxxxxx",
  flexFlowSid: "xxxxx",
  componentProps: {
    MessagingCanvas: {
      memberDisplayOptions: {
        yourDefaultName: 'You',
        yourFriendlyNameOverride: false,
        theirFriendlyNameOverride: true
      }
    },
  },
  startEngagementOnInit: true,
};
person Stanislau Buzunko    schedule 10.09.2019
comment
Я пробовал установить значение в MessagingCanvas. Он обновляет объект, но не фактическое отображаемое имя. - person Alexander Ryan Baggett; 10.09.2019
comment
это параметры настройки по умолчанию. twilio переопределят сами себя. - person Stanislau Buzunko; 11.09.2019
comment
@AlexanderRyanBaggett это на тот случай, если вы хотите отображать понятное имя агента, а не то, что вы хотите - person Stanislau Buzunko; 11.09.2019
comment
@AlexanderRyanBaggett добавил пример моей конфигурации, эта конфигурация делает то, что я хочу. может тебе нужно что-то еще - person Stanislau Buzunko; 11.09.2019