Jelajahi Sumber

Merge pull request #1422 from scut-chenzk/chenzk

修复接语音回复失效的问题
zhayujie 2 tahun lalu
induk
melakukan
28be141dc7

+ 4 - 2
channel/chat_channel.py

@@ -202,8 +202,10 @@ class ChatChannel(Channel):
                         reply = self._generate_reply(new_context)
                     else:
                         return
-            elif context.type == ContextType.IMAGE or context.type == ContextType.FUNCTION \
-                    or context.type == ContextType.FILE:  # 图片/文件消息及函数调用等,当前无默认逻辑
+            elif context.type == ContextType.IMAGE:  # 图片消息,当前仅做下载保存到本地的逻辑
+                cmsg = context["msg"]
+                cmsg.prepare()
+            elif context.type == ContextType.FUNCTION or context.type == ContextType.FILE:  # 文件消息及函数调用等,当前无默认逻辑
                 pass
             else:
                 logger.error("[WX] unknown context type: {}".format(context.type))

+ 3 - 0
channel/wework/wework_channel.py

@@ -319,5 +319,8 @@ class WeworkChannel(ChatChannel):
                 wework.send_video(receiver, video_path)
             logger.info("[WX] sendVideo, receiver={}".format(receiver))
         elif reply.type == ReplyType.VOICE:
+            current_dir = os.getcwd()
+            voice_file = reply.content.split("/")[-1]
+            reply.content = os.path.join(current_dir, "tmp", voice_file)
             wework.send_file(receiver, reply.content)
             logger.info("[WX] sendFile={}, receiver={}".format(reply.content, receiver))

+ 9 - 3
channel/wework/wework_message.py

@@ -39,16 +39,16 @@ def get_room_info(wework, conversation_id):
 
 def cdn_download(wework, message, file_name):
     data = message["data"]
-    url = data["cdn"]["url"]
-    auth_key = data["cdn"]["auth_key"]
     aes_key = data["cdn"]["aes_key"]
     file_size = data["cdn"]["size"]
+    file_type = 2
+    file_id = data["cdn"]["file_id"]
 
     # 获取当前工作目录,然后与文件名拼接得到保存路径
     current_dir = os.getcwd()
     save_path = os.path.join(current_dir, "tmp", file_name)
 
-    result = wework.wx_cdn_download(url, auth_key, aes_key, file_size, save_path)
+    result = wework.c2c_cdn_download(file_id, aes_key, file_size, file_type, save_path)
     logger.debug(result)
 
 
@@ -69,6 +69,12 @@ def c2c_download_and_convert(wework, message, file_name):
     wav_file = base_name + ".wav"
     pilk.silk_to_wav(save_path, wav_file, rate=24000)
 
+    # 删除SILK文件
+    try:
+        os.remove(save_path)
+    except Exception as e:
+        pass
+
 
 class WeworkMessage(ChatMessage):
     def __init__(self, wework_msg, wework, is_group=False):