sendConversationMessage method
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);
}