(content, attachment)
| 193 | |
| 194 | // 发送消息 |
| 195 | function onMessageSend(content, attachment) { |
| 196 | console.log('attachment: ', attachment); |
| 197 | |
| 198 | // 创建用户消息和加载消息 |
| 199 | const userMessage = createMessage(MESSAGE_ROLES.USER, content); |
| 200 | const loadingMessage = createLoadingAssistantMessage(); |
| 201 | |
| 202 | // 如果是自定义请求体模式 |
| 203 | if (customRequestMode && customRequestBody) { |
| 204 | try { |
| 205 | const customPayload = JSON.parse(customRequestBody); |
| 206 | |
| 207 | setMessage(prevMessage => { |
| 208 | const newMessages = [...prevMessage, userMessage, loadingMessage]; |
| 209 | |
| 210 | // 发送自定义请求体 |
| 211 | sendRequest(customPayload, customPayload.stream !== false); |
| 212 | |
| 213 | // 发送消息后保存,传入新消息列表 |
| 214 | setTimeout(() => saveMessagesImmediately(newMessages), 0); |
| 215 | |
| 216 | return newMessages; |
| 217 | }); |
| 218 | return; |
| 219 | } catch (error) { |
| 220 | console.error('自定义请求体JSON解析失败:', error); |
| 221 | Toast.error(ERROR_MESSAGES.JSON_PARSE_ERROR); |
| 222 | return; |
| 223 | } |
| 224 | } |
| 225 | |
| 226 | // 默认模式 |
| 227 | const validImageUrls = inputs.imageUrls.filter(url => url.trim() !== ''); |
| 228 | const messageContent = buildMessageContent(content, validImageUrls, inputs.imageEnabled); |
| 229 | const userMessageWithImages = createMessage(MESSAGE_ROLES.USER, messageContent); |
| 230 | |
| 231 | setMessage(prevMessage => { |
| 232 | const newMessages = [...prevMessage, userMessageWithImages]; |
| 233 | |
| 234 | const payload = buildApiPayload(newMessages, null, inputs, parameterEnabled); |
| 235 | sendRequest(payload, inputs.stream); |
| 236 | |
| 237 | // 禁用图片模式 |
| 238 | if (inputs.imageEnabled) { |
| 239 | setTimeout(() => { |
| 240 | handleInputChange('imageEnabled', false); |
| 241 | }, 100); |
| 242 | } |
| 243 | |
| 244 | // 发送消息后保存,传入新消息列表(包含用户消息和加载消息) |
| 245 | const messagesWithLoading = [...newMessages, loadingMessage]; |
| 246 | setTimeout(() => saveMessagesImmediately(messagesWithLoading), 0); |
| 247 | |
| 248 | return messagesWithLoading; |
| 249 | }); |
| 250 | } |
| 251 | |
| 252 | // 切换推理展开状态 |
no test coverage detected