Class MessageEvent

java.lang.Object
org.a2aproject.sdk.client.MessageEvent
All Implemented Interfaces:
ClientEvent

public final class MessageEvent extends Object implements 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:

  1. Simple blocking responses: When the agent completes a request immediately and returns a message without task tracking
  2. 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 Details

    • MessageEvent

      public MessageEvent(Message message)
      Create a message event.
      Parameters:
      message - the message received from the agent (required)
  • Method Details

    • getMessage

      public Message getMessage()
      Get the message contained in this event.
      Returns:
      the agent's message
    • toString

      public String toString()
      Overrides:
      toString in class Object