1

ライブ エージェントをセットアップしており、一定の時間が経過しても顧客がメッセージに返信しない場合に、エージェント側でアラートを設定しようとしています。

これが私が達成しようとしている方法です(これらはすべてjsヘルパーにあり、jsコントローラーから委任されています)

  1. 宣言済み 変更された値を追跡するグローバル変数 globalvariable1

  2. エージェントがチャットするときに起動する onAgentMessageSend コンポーネントを使用しました

onAgentMessageSend : function(cmp,recordId,content,name,type,timestamp){
    if(type=='Agent')
       {
           var self = this;
           setTimeout(function() {
           var returnedType=self.checkMessageSenderAndResetCounter(cmp);
          }, 5000);           
    
           if(returnedType=='Default Value')
           {alert('Unresponsive Customer');}
           else{
           console.log('customer responded hence reset');
           globalvariable1= 'Default Value'}}
           else{
            console.log('Do nothing');}},
  1. AgentまたはCustomerからのグローバル値を変更する機能
 checkMessageSenderAndResetCounter: function(cmp) {
     
     console.log('the current value of globalvarable'+this.globalvariable1);
     return this.globalvariable1;},
  1. 顧客がメッセージを送信したときに起動されるメソッド

    onNewMessageFromEndUser : function(cmp,recordId,content,name,type,timestamp){

      this.globalvariable1='Customer';},
    

要約すると、ここで達成しようとしているのは、エージェントがチャットしたら、タイマーを 5 秒に設定することです。その時間枠内で顧客が返信すると、グローバル変数が変化し、それが継続します。顧客側からの返信がない場合、グローバル変数はデフォルト値のままであり、未回答の質問があることを示すアラートが発生します。

しかし、Settimeout の結果は達成できません。これを達成するための他の方法についてここで助けてもらえますか、またはこれ自体を修正してください。

4

1 に答える 1

0

内部でロジックを実行するかsetTimeout、関数を作成してタイムアウト内で呼び出す必要があります。

if(type=='Agent')
   {
       var self = this;
       setTimeout(() => {
       var returnedType=self.checkMessageSenderAndResetCounter(cmp);
       
       // perform rest of your logic inside
       if(returnedType=='Default Value') {
           alert('Unresponsive Customer');
       else{
           console.log('customer responded hence reset');
           globalvariable1= 'Default Value';
        }
       
      }, 5000);           
},
于 2020-10-25T09:58:50.470 に答える