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. 当来自代理或客户时更改全局值的功能
 checkMessageSenderAndResetCounter: function(cmp) {
     
     console.log('the current value of globalvarable'+this.globalvariable1);
     return this.globalvariable1;},
  1. 当客户消息时触发的方法

    onNewMessageFromEndUser :函数(cmp,recordId,内容,名称,类型,时间戳){

      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 回答