sendMessage static method

Future<ChatResponse> sendMessage({
  1. required String message,
  2. String chatId = 'my_chatId',
  3. String responseChatItemId = 'my_responseChatItemId',
  4. Map<String, String>? variables,
  5. String? imageUrl,
  6. String? fileName,
})

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');
  }
}