Merge #2784 into sdk650pathc0423 from refs/changes/2784/head 2791/target/1
author胡传军 <1224667075@qq.com>
Sat, 22 Nov 2025 01:37:24 +0000 (01:37 +0000)
committeraliyun3243248791 <accounts_67aaf52ad497cd558d73ac32@mail.teambition.com>
Sat, 22 Nov 2025 01:37:24 +0000 (01:37 +0000)
Code review from 胡传军

* refs/changes/2784/head: (5 commits squashed)

  - 故事打断修改

  - Merge branch &#39;sdk650pathc0423&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk650pathc0423

  - Merge branch &#39;sdk650pathc0423&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk650pathc0423

  - Merge branch &#39;sdk650pathc0423&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk650pathc0423

  - 修改打断重连

Signed-off-by: aliyun8003852482 <1224667075@qq.com>
Merged-by: 薛文强 <accounts_67aaf52ad497cd558d73ac32@mail.teambition.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/2784
code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c

index c5ffc48..0001680 100644 (file)
@@ -335,9 +335,16 @@ static void ln_ws_url_callback(char *url, size_t url_size, char *header_buf, siz
     if (!token) token = "";
     
     /* 仅使用 deviceToken 也可通过;额外带上 deviceId 与 reconnect 便于后端管理 */
-    snprintf(url, url_size, "%s?deviceToken=%s&deviceId=%s&reconnect=%u",
+    if(g_ws_connected == WS_STATE_RECONNECTING)
+    {
+        snprintf(url, url_size, "%s?deviceToken=%s&deviceId=%s&reconnect=%u&reason=interrupted",
              base, token, device_id, g_ws_reconnect_count);
-    
+    }
+    else
+    {
+        snprintf(url, url_size, "%s?deviceToken=%s&deviceId=%s&reconnect=%u",
+             base, token, device_id, g_ws_reconnect_count);
+    }
     // /* 构建头部信息 */
     snprintf(header_buf, header_size, "deviceId: %s\r\n", device_id);
     // 110.42.224.129 8910
@@ -1305,10 +1312,11 @@ int ln_ws_send_text(const char *text)
     return uapi_ws_send_text(text);
 }
 
-// int ln_ws_send_random_story_cache(const char *story_theme)
-// {
-
-// }
+int ln_ws_send_random_story_cache(const char *story_theme)
+{
+    memcpy(story_theme_cache,story_theme,strlen(story_theme));
+    return 0;
+}
 /* 发送随机故事请求 */
 int ln_ws_send_random_story_request(const char *story_theme)
 {
@@ -1323,23 +1331,23 @@ int ln_ws_send_random_story_request(const char *story_theme)
         return -1;
     }
     
-    if (g_ws_connected != WS_STATE_CONNECTED) {
+  
+    ln_ws_send_voice_chat_interrupt("故事请求开始");
+
+    if (g_ws_connected == WS_STATE_RECONNECTING) {
+    // 重连中,缓存音频数据
+        LN_WS_INFO("Connection reconnecting,ln_ws_send_random_story_request data (%s)\n", story_theme);
+        return ln_ws_send_random_story_cache(story_theme);
+    }
+    else if (g_ws_connected != WS_STATE_CONNECTED) {
         LN_WS_WARN("Cannot send random story request, connection state: %d\n", g_ws_connected);
         return -1;
     }
-    // ln_ws_send_voice_chat_interrupt("故事请求开始");
-
-    // if (g_ws_connected == WS_STATE_RECONNECTING) {
-    //     // 重连中,缓存音频数据
-    //     LN_WS_INFO("Connection reconnecting,ln_ws_send_random_story_request data (%s)\n", story_theme);
-    //     return ln_ws_audio_buffer_add(audio_data, audio_size, finished);
-    // } 
-
 
     
     // 生成聊天ID(使用当前对话ID)
     generate_chat_id(g_audio_chat_ctx.chat_id, sizeof(g_audio_chat_ctx.chat_id));
-    // g_audio_chat_ctx.finish_state = LN_CHAT_SENT_END_NO_REPLY;
+    g_audio_chat_ctx.finish_state = LN_CHAT_SENT_END_NO_REPLY;
 
     // 生成消息ID
     char message_id[128];
@@ -2645,7 +2653,11 @@ static void ln_ws_reconnect_success_callback(void)
     
     g_ws_connected = WS_STATE_CONNECTED;
 
-
+    if(strlen(story_theme_cache)>3)
+    {
+        ln_ws_send_random_story_request(story_theme_cache);
+        memset(story_theme_cache,0,sizeof(story_theme_cache));
+    }
     
     LN_WS_INFO("Reconnect success event triggered\n");
 }