|
|
@@ -911,8 +911,45 @@ async def handle_voice_async(request: Request,token_id,app_id, wxid,msg_data,fro |
|
|
|
logger.info((f'{wxid} 向 {callback_to_user} 发送文本【{ai_res_content}】{ret_msg}')) |
|
|
|
|
|
|
|
else: |
|
|
|
logger.info(f"回复内容包含网址,不发送语音,回复文字内容:{ai_res_content}") |
|
|
|
ret,ret_msg,res=await request.app.state.gewe_service.post_text_async(token_id,app_id,callback_to_user,ai_res_content) |
|
|
|
# logger.info(f"回复内容包含网址,不发送语音,回复文字内容:{ai_res_content}") |
|
|
|
# ret,ret_msg,res=await request.app.state.gewe_service.post_text_async(token_id,app_id,callback_to_user,ai_res_content) |
|
|
|
|
|
|
|
reply_content=ai_res_content |
|
|
|
# 判断图片url |
|
|
|
img_urls,reply_content=extract_and_replace_image_urls(reply_content) |
|
|
|
if img_urls: |
|
|
|
#await request.app.state.gewe_service.post_text_async(token_id, app_id, callback_to_user, reply_content) |
|
|
|
async with message_lock: |
|
|
|
await ai_post_text_split_async_async(request, token_id, app_id, callback_to_user, reply_content) |
|
|
|
await asyncio.sleep(random.uniform(1.5, 3)) |
|
|
|
for img_url in img_urls: |
|
|
|
await request.app.state.gewe_service.post_image_async(token_id, app_id, callback_to_user, img_url) |
|
|
|
await asyncio.sleep(random.uniform(1.5, 3)) |
|
|
|
|
|
|
|
# 判断视频url |
|
|
|
video_urls,reply_content=extract_and_replace_video_urls(reply_content) |
|
|
|
if video_urls: |
|
|
|
#await request.app.state.gewe_service.post_text_async(token_id, app_id, callback_to_user, reply_content) |
|
|
|
async with message_lock: |
|
|
|
await ai_post_text_split_async_async(request, token_id, app_id, callback_to_user, reply_content) |
|
|
|
await asyncio.sleep(random.uniform(1.5, 3)) |
|
|
|
for video_url in video_urls: |
|
|
|
parsed_url = urlparse(video_url) |
|
|
|
filename = os.path.basename(parsed_url.path) |
|
|
|
tmp_file_path = os.path.join(os.getcwd(),'tmp', filename) # 拼接完整路径 |
|
|
|
thumbnail_path=tmp_file_path.replace('.mp4','.jpg') |
|
|
|
|
|
|
|
video_thumb_url,video_duration =download_video_and_get_thumbnail(video_url,thumbnail_path) |
|
|
|
logger.info(f'{wxid} 视频缩略图 {video_thumb_url} 时长 {video_duration}') |
|
|
|
ret,ret_msg,res = await request.app.state.gewe_service.post_video_async(token_id, app_id, callback_to_user, video_url,video_thumb_url,video_duration) |
|
|
|
if ret!=200: |
|
|
|
logger.warning(f'{wxid} 发送视频{video_url} 到 {callback_to_user} 失败,{ret_msg}') |
|
|
|
await asyncio.sleep(random.uniform(1.5, 3)) |
|
|
|
# 发送AI微信回复 |
|
|
|
#await request.app.state.gewe_service.post_text_async(token_id, app_id, callback_to_user, reply_content) |
|
|
|
if (not video_urls) and (not img_urls): |
|
|
|
async with message_lock: |
|
|
|
await ai_post_text_split_async_async(request, token_id, app_id, callback_to_user, reply_content) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|