From 6cb5e33f04dbff894c30389b125ebec16dda6797 Mon Sep 17 00:00:00 2001 From: hcj <1224667075@qq.com> Date: Mon, 17 Nov 2025 12:07:25 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0ai=E6=A8=A1=E5=9E=8B=E6=9A=B4?= =?utf8?q?=E9=9C=B2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../zhihui/ai_old/chat_websocket_server.cpp | 58 +++++++++++++++++++ .../sdk/zhihui/ai_old/chat_websocket_server.h | 3 + .../ai_old/websocket_server_example.cpp | 10 ++++ 3 files changed, 71 insertions(+) diff --git a/code/sdk/zhihui/ai_old/chat_websocket_server.cpp b/code/sdk/zhihui/ai_old/chat_websocket_server.cpp index c7fc98b2b..9e179e165 100644 --- a/code/sdk/zhihui/ai_old/chat_websocket_server.cpp +++ b/code/sdk/zhihui/ai_old/chat_websocket_server.cpp @@ -169,6 +169,7 @@ chat_event_type_t chat_result_analysis(char *buf, char *out_put, size_t out_put_ printf("Chat result parse failed\n"); return CHAT_EVENT_ERROR; } + // printf("Chat result parse %s\n",buf); char *type_str = NULL; char *content_str = NULL; @@ -398,6 +399,63 @@ bool ai_chat_send_txt(uint8_t type, char *msg, WebSocketClient *chat_client, boo return false; } } +// ws_server_send_message(g_asr_server,( uint8_t *)data,size,WS_TEXT); + +// { +// "type": "chat", +// "content": "你好,你是谁", +// "system_message":"你是小瑞,是一个人工智障" +// } + +bool send_ai_system_message( WebSocketClient *chat_client) +{ + cJSON* json = cJSON_CreateObject(); + if (json == NULL) { + printf("Failed to create JSON object\n"); + return false; + } + + + // 添加header字段 + if (cJSON_AddStringToObject(json, "type", "chat") == NULL) { + printf("Failed to add event field\n"); + return false; + } + + if (cJSON_AddStringToObject(json, "content", "你好,你是谁") == NULL) { + printf("Failed to add trace_id field\n"); + cJSON_Delete(json); + return false; + } + + // 将header添加到根对象 + if (cJSON_AddStringToObject(json, "system_message", "你是中国移动的智能助理灵犀。如果别人询问你的身份,你会回答:“您好,我是中国移动智能助理灵犀”。我能够回答各种类型的问题。如果遇到我无法解答的问题,我会告知您:“您的问题超出了我的能力范围,请尝试问其他问题。")== NULL) + { + printf("Failed to add header to root object\n"); + cJSON_Delete(json); + return false; + } + char *jsonString = cJSON_PrintUnformatted(json); + + if (jsonString == NULL) { + printf("Error printing JSON to string\n"); + cJSON_Delete(json); + return false; + } + + uint32_t data_len = strlen(jsonString); + cJSON_Delete(json); + + if (send_websocket_message(chat_client, (uint8_t *)jsonString, strlen(jsonString), WS_TEXT) == 0) + { + printf("send_websocket_message succ\n"); + } + cJSON_free(json); + return true; + +} + + /** * @brief 初始化Chat缓存内存 diff --git a/code/sdk/zhihui/ai_old/chat_websocket_server.h b/code/sdk/zhihui/ai_old/chat_websocket_server.h index 1b50825fe..a79514a8e 100644 --- a/code/sdk/zhihui/ai_old/chat_websocket_server.h +++ b/code/sdk/zhihui/ai_old/chat_websocket_server.h @@ -127,6 +127,9 @@ errcode_t chat_server_init(void); */ void chat_server_deinit(void); +bool send_ai_system_message( WebSocketClient *chat_client); + + // bool ai_chat_send_txt(uint8_t type, char *msg, WebSocketClient *chat_client, bool cache) /* 全局变量声明 */ diff --git a/code/sdk/zhihui/ai_old/websocket_server_example.cpp b/code/sdk/zhihui/ai_old/websocket_server_example.cpp index fe325e68c..06c0a0c9c 100644 --- a/code/sdk/zhihui/ai_old/websocket_server_example.cpp +++ b/code/sdk/zhihui/ai_old/websocket_server_example.cpp @@ -96,6 +96,16 @@ void websocket_event_callback(const ws_event_data_t *event_data) switch (event_data->event_type) { case WS_EVENT_CONNECTED: printf("WebSocket connected: type=%d\n", event_data->server_type); + switch (event_data->server_type) + { + case WS_SERVER_TYPE_CHAT: + + if(g_chat_ai_type==1) + { + send_ai_system_message(g_chat_server->client); + } + + } break; case WS_EVENT_DATA_RECEIVED: -- 2.17.1