修改对话中断问题
authorazao <821478748@qq.com>
Thu, 25 Dec 2025 09:00:35 +0000 (17:00 +0800)
committerazao <821478748@qq.com>
Fri, 26 Dec 2025 07:53:12 +0000 (15:53 +0800)
修改留言播放时下发被打断的问题

2.sdk/project/7PIN_1_5/sdk/services/microPython/ports/quectel/core/ai_VC.py
2.sdk/project/7PIN_1_5/sdk/services/microPython/ports/quectel/core/protocol.py
2.sdk/project/K8/sdk/services/microPython/ports/quectel/core/ai_VC.py

index d42a3ce..660c540 100644 (file)
@@ -4507,6 +4507,7 @@ class AI_VC(Abstract):
         if self.revoice_cnt > 20:#10S后退出播放,10S是为了给语音提示留时间
            self.revoice_cnt = 0
            self.voice_flag=0
+           EventMesh.publish("set_1M_nowplay_flag",0)
            print("语音留言回复停止")
            self.revoice_timer.stop()
     #音乐播放定时器
@@ -4535,6 +4536,7 @@ class AI_VC(Abstract):
     def wait_play_cb(self):
         self.wait_cnt += 1
         if self.voicerupt_flag == 1:#按键被按下
+           EventMesh.publish("set_is_listen_wait",1)#已听
            self.pwk_notice_flag = 1#表示进入收听未听留言
            self.AI_VC_start()
            self.wait_sort = 1
index f99d853..fe26336 100644 (file)
@@ -3796,12 +3796,17 @@ class IOTWeb_new_voice_msg_listProtoCol(ProtoCol):
     def __init__(self):
         super().__init__()
         self._1M_flag = 0#判断一分钟定时器是否开启中
+        self._1M_nowplay_flag = 0#判断当前留言播放是否结束去影响新留言播放的标志位
         self.app_new_voice_flag = 0#app是否下发留言
         self._1M_timer = osTimer()#多发留言间隙时间60S
         self._60S_voice_flag = 0
+        self.is_listen_wait = 0#是否收听未听留言
+        self.close_timer_cnt = 0 #若两次未听定时器关闭
         EventMesh.subscribe("get_app_new_voice_flag",self.get_app_new_voice_flag)
         EventMesh.subscribe("set_app_new_voice_flag",self.set_app_new_voice_flag)
         EventMesh.subscribe("get_1M_flag",self.get_1M_flag)
+        EventMesh.subscribe("set_1M_nowplay_flag",self.set_1M_nowplay_flag)
+        EventMesh.subscribe("set_is_listen_wait",self.set_is_listen_wait)
         EventMesh.subscribe("get_60S_voice_flag",self.get_60S_voice_flag)
         EventMesh.subscribe("set_60S_voice_flag",self.set_60S_voice_flag)
         
@@ -3841,9 +3846,10 @@ class IOTWeb_new_voice_msg_listProtoCol(ProtoCol):
             pass
         EventMesh.publish("set_play_new_voice_list",new_voice_list)
         print("是否收到留言:{},self._1M_flag = {}".format(EventMesh.publish("get_recv_voice"),self._1M_flag))
-        if EventMesh.publish("get_recv_voice") == 0 and self._1M_flag == 0:#当没有音频在播放时,再播放新的,否则保存下来不播放,等60S后一起播放
+        if EventMesh.publish("get_recv_voice") == 0 and self._1M_flag == 0 and self._1M_nowplay_flag == 0:#当没有音频在播放时,再播放新的,否则保存下来不播放,等60S后一起播放
             EventMesh.publish("set_recv_voice",1) #设置留言播放状态
             EventMesh.publish("play_new_voice_list")
+            self._1M_nowplay_flag == 1
         else:#当有音频在播放时,存下来开始倒计时
             pass
             if self._1M_flag == 0 :
@@ -3867,7 +3873,7 @@ class IOTWeb_new_voice_msg_listProtoCol(ProtoCol):
             EventMesh.publish("set_history_voice_flag",1)#修改历史留言标志位
             EventMesh.publish("set_wait_voice_flag",1)#修改60S标志位
             EventMesh.publish(WEB_CMD_ENUM.GET_NEW_VOICE_MSG_S)
-            
+
     def get_app_new_voice_flag(self,event,msg):
         return self.app_new_voice_flag
     def set_app_new_voice_flag(self,event,msg):
@@ -3878,6 +3884,10 @@ class IOTWeb_new_voice_msg_listProtoCol(ProtoCol):
         return self._60S_voice_flag
     def set_60S_voice_flag(self,event,msg):
         self._60S_voice_flag = msg
+    def set_1M_nowplay_flag(self,event,msg):
+        self._1M_nowplay_flag = msg
+    def set_is_listen_wait(self,event,msg):
+        self.is_listen_wait = msg
 class IOTWeb_put_voice_msg_stateProtoCol(ProtoCol):
     """put_voice_msg_state"""
     TYPE = "put_voice_msg_state"
index 4523816..6fa1035 100644 (file)
@@ -3165,9 +3165,9 @@ class AI_VC(Abstract):
                             #EventMesh.publish("open_led_green")#绿色
                             self.LocalRespondingEnded_timerout = 3
                             self.VC_state = VC_State_End
-                            if self.stop_tts == 1 and self.tts_completed == 1:#已经播放了音频并且音频停止了
+                            if self.tts_completed == 1:#已经播放了音频并且音频停止了
                                 self.AI_client_VC_end_tts()#音频结束
-                                self.stop_tts = 0
+                                # self.stop_tts = 0
                                 self.tts_completed = 0
                             EventMesh.publish("send_device_VC_state")#上传VC状态
                             pass
@@ -4049,7 +4049,6 @@ class AI_VC(Abstract):
                     try:
                         self.play_pcm.stream_stop()
                         self.play_pcm.close()
-                        self.stop_tts = 1 
                     except Exception as e:
                         usys.print_exception(e)
                     self.play_pcm=None