Package org.a2aproject.sdk.client
Class MessageEvent
java.lang.Object
org.a2aproject.sdk.client.MessageEvent
- All Implemented Interfaces:
ClientEvent
A client event containing an agent's message response.
MessageEvent represents a complete message from the agent, typically containing text, images, or other content parts. This event type is used in two scenarios:
- Simple blocking responses: When the agent completes a request immediately and returns a message without task tracking
- Legacy protocol support: Older agents may return messages instead of task updates
Example usage:
client.addConsumer((event, agentCard) -> {
if (event instanceof MessageEvent me) {
Message msg = me.getMessage();
// Extract text content
String text = msg.parts().stream()
.filter(p -> p instanceof TextPart)
.map(p -> ((TextPart) p).text())
.collect(Collectors.joining());
System.out.println("Agent response: " + text);
// Check for images
msg.parts().stream()
.filter(p -> p instanceof ImagePart)
.forEach(p -> System.out.println("Image: " + ((ImagePart) p).url()));
}
});
Message structure: The contained Message includes:
- role: AGENT (indicating it's from the agent)
- parts: List of content parts (text, images, files, etc.)
- contextId: Optional session identifier
- taskId: Optional associated task ID
- metadata: Optional custom metadata from the agent
Streaming vs blocking: In streaming mode with task tracking, you're more likely to
receive TaskUpdateEvent instances instead of MessageEvent. MessageEvent is primarily
used for simple, synchronous request-response interactions.
- See Also:
-
Constructor Summary
Constructors -
Method Summary