sendConversationMessage method

void sendConversationMessage(
  1. String message, {
  2. String? base64Image,
})

AI Assistant Conversation Method. Sends a conversation message to an assistant agent.

@param message The text message to send @param base64Image Optional base64 encoded image to include with the message

Note: In order to provide an image to your assistant, you need to make sure that you are using a vision-capable model. The base64Image should be a base64 encoded string of the image data.

Implementation

void sendConversationMessage(String message, {String? base64Image}) {
  final uuid = const Uuid().v4();
  final messageId = const Uuid().v4();

  // Create content list, adding text message only if it's not empty
  final List<ConversationContentData> content = [];
  if (message.isNotEmpty) {
    content.add(ConversationContentData(type: 'input_text', text: message));
  }

  // Add image content if base64Image is provided
  if (base64Image != null && base64Image.isNotEmpty) {
    // Ensure the base64 string has the proper data URL format
    String imageDataUrl = base64Image;
    if (!base64Image.startsWith('data:image/')) {
      // Default to JPEG if no format is specified
      imageDataUrl = 'data:image/jpeg;base64,$base64Image';
    }

    content.add(ConversationContentData(
      type: 'image_url',
      imageUrl: ConversationImageUrl(url: imageDataUrl),
    ));
  }

  final conversationItem = ConversationItemData(
    id: messageId,
    type: 'message',
    role: 'user',
    content: content,
  );

  final conversationParams = ConversationMessageParams(
    type: 'conversation.item.create',
    previousItemId: null,
    item: conversationItem,
  );

  final conversationMessage = ConversationMessage(
    id: uuid,
    jsonrpc: JsonRPCConstant.jsonrpc,
    method: SocketMethod.aiConversation,
    params: conversationParams,
  );

  final String jsonConversationMessage = jsonEncode(conversationMessage);
  txSocket.send(jsonConversationMessage);
}