AI对话角色协议
authordxy <1731678236qq.com>
Mon, 18 Aug 2025 02:42:29 +0000 (10:42 +0800)
committerdxy <1731678236qq.com>
Mon, 18 Aug 2025 02:42:29 +0000 (10:42 +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

index 9c5f2e0..d3da841 100644 (file)
@@ -1892,6 +1892,8 @@ class AI_VC(Abstract):
         self.play_new_voice_flag =0 #播放文字留言flag
         EventMesh.subscribe("play_tts",self.play_tts)
         EventMesh.subscribe("play_new_voice",self.play_new_voice)
+        EventMesh.subscribe("set_vad_silence",self.set_vad_silence)
+            
         self.AI_alarm = _ai_alarm.AI_alarm()
         self.error_data = []
         self.asr_taskid  = ""
@@ -3617,20 +3619,21 @@ class AI_VC(Abstract):
                             else:
                                 EventMesh.publish("publish_AI_btnInfo",{"func":self.websocket_error,"data":jsload_data["payload"]["message"]}) 
                             pass
+                           
+                        elif jsload_data["event"] == "audio.convert.completed":#音频转成完成没有出错 接口
                             if EventMesh.publish("get_play_new_voice_state")== 1:
                                 EventMesh.publish("set_play_new_voice_state",1)
                                 EventMesh.publish("update_play_new_voice_info")
                                 EventMesh.publish("play_new_voice_list")
+                                
                                 pass
-
-                        elif jsload_data["event"] == "audio.convert.completed":#接口
+                            pass
+                        elif jsload_data["event"] == "audio.convert.failed": #音频转换失败了
                             if EventMesh.publish("get_play_new_voice_state")== 1:
                                 EventMesh.publish("set_play_new_voice_state",1)
                                 EventMesh.publish("update_play_new_voice_info")
                                 EventMesh.publish("play_new_voice_list")
                                 
-                                pass
-                            pass
                         
                     else:#下发音频数据
                         #self.AI_ASR_str = ""#下发音频后清掉asr结果
@@ -4706,6 +4709,10 @@ class AI_VC(Abstract):
         # if self.VC_state == VC_State_RequestToRespond:
         #     print("AI_client_VC_RequestToRespond 重复 tts_str:{}\nasr_str:{}".format(self.AI_TTS_str,self.AI_ASR_str))
         self.AI_client_VC_send(ujson.dumps(json_data))
+    def set_vad_silence(self,event = None,msg= None):
+        self.vad_silence = msg
+        EventMesh.publish("set_storage_config",["vad_silence",self.vad_silence])  
+        # EventMesh.publish("publish_AI_btnInfo",{"func":self.play_new_voice_cb,"data":msg}) 
     def play_new_voice(self,event = None,msg= None):
         EventMesh.publish("publish_AI_btnInfo",{"func":self.play_new_voice_cb,"data":msg}) 
     def play_new_voice_cb(self,data):
index 2c34952..40fb71e 100644 (file)
@@ -665,6 +665,9 @@ class WEB_CMD_ENUM:
     PLAY_CONTROL_R="player_control_R"
     PLAY_CONTROL_S="player_control_S"
 
+    GET_CHAT_CONFIG_R="get_chat_config_R"
+    GET_CHAT_CONFIG_S="get_chat_config_S"
+
 class IOTSendCmdManager(Abstract):
     #
     def __init__(self):
@@ -1292,7 +1295,7 @@ class SockMangager(Abstract):
                 url = data["url"]
                 # url = "http://qipaiai-oss1.tos-cn-beijing.volces.com/qi_pai_ringtone/2025_08_11/742659759219544064test.mp3"
                 self.play_new_voice_state = 1
-                EventMesh.publish("play_new_voice",[url,1])
+                EventMesh.publish("play_new_voice",[url,0])
                 
                 break
             pass
@@ -2486,7 +2489,7 @@ class IOTWeb_scheduleProtoCol(ProtoCol):
         date_tmp = utime.localtime()
         time_tmp = utime.mktime(date_tmp)
         schedule = {
-            "cmd":"post_rest",
+            "cmd":"dispatch_rest",
             "ts":time_tmp,
             "msg":"消息收到响应",
             "data":{
@@ -2825,7 +2828,7 @@ class IOTWeb_switch_bt_stateProtoCol(ProtoCol):
         date_tmp = utime.localtime()
         time_tmp = utime.mktime(date_tmp)
         switch_bt_state = {
-            "cmd":"post_rest",
+            "cmd":"dispatch_rest",
             "ts":time_tmp,
             "msg":"消息收到响应",
             "data":{
@@ -2875,7 +2878,7 @@ class IOTWeb_bt_scanProtoCol(ProtoCol):
         elif msg == "1":
             s_msg = "停止扫描附近设备"
         bt_scan = {
-            "cmd":"post_rest",
+            "cmd":"dispatch_rest",
             "ts":time_tmp,
             "msg":"消息收到响应",
             "data":{
@@ -2927,7 +2930,7 @@ class IOTWeb_get_bt_stateProtoCol(ProtoCol):
         date_tmp = utime.localtime()
         time_tmp = utime.mktime(date_tmp)
         bt_state ={
-            "cmd":"post_rest",
+            "cmd":"dispatch_rest",
             "ts":time_tmp,
             "msg":"消息收到响应",
             "data":{
@@ -2960,7 +2963,7 @@ class IOTWeb_bt_scan_restProtoCol(ProtoCol):
     TYPE = "bt_scan_rest"
 
     def send(self, event, msg):
-        print("send schedule{}".format(msg))
+        print("send bt_scan_rest{}".format(msg))
         # 通过websocket发送到服务器端
 
         send_data = b''
@@ -2983,7 +2986,7 @@ class IOTWeb_connect_btProtoCol(ProtoCol):
     TYPE = "connect_bt"
 
     def send(self, event, msg):
-        print("send schedule{}".format(msg))
+        print("send connect_bt{}".format(msg))
         # 通过websocket发送到服务器端
         date_tmp = utime.localtime()
         time_tmp = utime.mktime(date_tmp)
@@ -2991,7 +2994,7 @@ class IOTWeb_connect_btProtoCol(ProtoCol):
         if msg == 0:
             s_ret = "error"
         connect_bt = {
-            "cmd":"post_rest",
+            "cmd":"dispatch_rest",
             "ts":time_tmp,
             "msg":"消息收到响应",
             "data":{
@@ -3064,12 +3067,12 @@ class IOTWeb_disconnect_btProtoCol(ProtoCol):
     TYPE = "disconnect_bt"
 
     def send(self, event, msg):
-        print("send schedule{}".format(msg))
+        print("send disconnect_bt{}".format(msg))
         # 通过websocket发送到服务器端
         date_tmp = utime.localtime()
         time_tmp = utime.mktime(date_tmp)
         disconnect_bt = {
-            "cmd":"post_rest",
+            "cmd":"dispatch_rest",
             "ts":time_tmp,
             "msg":"消息收到响应",
             "data":{
@@ -3099,6 +3102,44 @@ class IOTWeb_disconnect_btProtoCol(ProtoCol):
             EventMesh.publish("send_disconnect_bt_mac",mac)
         print("recv disconnect_bt{}".format(msg))
         EventMesh.publish(WEB_CMD_ENUM.DISCONNECT_BT_S,None)
+class IOTWeb_get_chat_configProtoCol(ProtoCol):
+    """get_chat_config"""
+    TYPE = "get_chat_config"
+
+    def send(self, event, msg):
+        # print("send get_chat_config{}".format(msg))
+        # 通过websocket发送到服务器端
+        date_tmp = utime.localtime()
+        time_tmp = utime.mktime(date_tmp)
+        get_chat_config = {
+            "cmd":"get_chat_config",
+            "ts":time_tmp,
+            "msg":"获取AI对话配置",
+            "data":None
+        }
+        send_data = b''
+        send_data = protocol_send_total_data(get_chat_config)
+        print("send_data get_chat_config{}".format(send_data))
+        EventMesh.publish("CHANNEL_IOT_WEB_SEND", send_data)
+
+    def recv(self, event, msg):
+        """
+
+        @param event:上行下发get_chat_config
+        @param msg: 接收到的下行数据
+        """
+        # {
+        #     "cmd":"post_rest",
+        #     "ts":1738283829,
+        #     "msg":"消息收到响应",
+        #     "data":{
+        #         "cmd":"get_chat_config",
+        #         "rest":"success|error",
+        #         "msg":"收到获取AI对话配置请求"
+        #     }
+        # }
+        print("RECV get_chat_config{}".format(msg))
+
 
 class LK_ProtoCol(ProtoCol):
     """链路保持"""