sendMessage static method
Implementation
static Future<ChatResponse> sendMessage({
required String message,
String chatId = 'my_chatId',
String responseChatItemId = 'my_responseChatItemId',
Map<String, String>? variables,
String? imageUrl,
String? fileName,
}) async {
try {
// 构建消息内容
dynamic messageContent;
if (imageUrl != null) {
// 图片消息
messageContent = [
{
'type': 'text',
'text': message.isNotEmpty ? message : '发送了一张图片',
},
{
'type': 'image_url',
'image_url': {
'url': imageUrl,
}
}
];
} else if (fileName != null) {
// 文件消息
messageContent = [
{
'type': 'text',
'text': message.isNotEmpty ? message : '发送了一个文件',
},
{
'type': 'file_url',
'name': fileName,
'url': imageUrl ?? '', // 文件URL
}
];
} else {
// 纯文本消息
messageContent = message;
}
final response = await http.post(
Uri.parse(baseUrl),
headers: {
'Authorization': 'Bearer $apiKey',
'Content-Type': 'application/json',
},
body: jsonEncode({
'chatId': chatId,
'stream': false,
'detail': false,
'responseChatItemId': responseChatItemId,
'variables': variables ?? {
'uid': 'asdfadsfasfd2323',
'name': '张三',
},
'messages': [
{
'role': 'user',
'content': messageContent,
}
],
}),
);
if (response.statusCode == 200) {
final data = jsonDecode(response.body);
return ChatResponse.fromJson(data);
} else {
throw Exception('请求失败: ${response.statusCode}');
}
} catch (e) {
throw Exception('网络请求错误: $e');
}
}