Customer Service Chatbot
Intelligent customer service assistant that handles inquiries, processes requests, and provides 24/7 support
Available Skills
handleInquiry
#1Processes customer inquiries and provides accurate responses with contextual understanding
escalateIssue
#2Intelligently escalates complex issues to appropriate human agents with context preservation
Integration Examples
// A2A Java Client Example
// Source: https://github.com/a2aproject/a2a-samples/tree/main/samples/java/client
import com.google.a2a.client.*;
import com.google.a2a.model.*;
import java.util.List;
import java.util.Map;
import java.util.UUID;
public class AgentClientExample {
public static void main(String[] args) {
// Create client pointing to your agent
A2AClient client = new A2AClient("https://chatbot.wingtip.com/a2a");
try {
// Get agent card
System.out.println("=== Getting Agent Card ===");
AgentCard agentCard = client.getAgentCard();
System.out.println("Agent: " + agentCard.name());
System.out.println("Description: " + agentCard.description());
System.out.println("Version: " + agentCard.version());
System.out.println("Skills: " + agentCard.skills());
// Send a task to the agent
TextPart textPart = new TextPart("Your input text here", null);
Message message = new Message(
UUID.randomUUID().toString(), // messageId
"message", // kind
"user", // role
List.of(textPart), // parts
null, null, null, null // contextId, taskId, etc.
);
TaskSendParams params = new TaskSendParams(
"handleInquiry-task",
null, // sessionId
message,
null, // pushNotification
null, // historyLength
Map.of() // metadata
);
JSONRPCResponse response = client.sendTask(params);
Task task = (Task) response.result();
System.out.println("Task ID: " + task.id());
System.out.println("Status: " + task.status().state());
} catch (A2AClientException e) {
System.err.println("A2A Client Error: " + e.getMessage());
e.printStackTrace();
}
}
}
# A2A Python Client Example
# Source: https://github.com/a2aproject/a2a-samples/tree/main/samples/python
import asyncio
import httpx
from uuid import uuid4
from a2a.client import A2ACardResolver, A2AClient
from a2a.types import (
AgentCard,
Message,
MessageSendParams,
Part,
Role,
SendStreamingMessageRequest,
TextPart,
)
class AgentClient:
def __init__(self, agent_url: str):
self.agent_url = agent_url
async def get_agent_card(self) -> AgentCard:
"""Get the agent card information."""
async with httpx.AsyncClient() as httpx_client:
card_resolver = A2ACardResolver(httpx_client, self.agent_url)
return await card_resolver.get_agent_card()
async def send_message(self, message_text: str):
"""Send a message to the agent and get streaming response."""
async with httpx.AsyncClient() as httpx_client:
# Get agent card first
agent_card = await self.get_agent_card()
client = A2AClient(httpx_client, agent_card=agent_card)
# Create message
message = MessageSendParams(
message=Message(
role=Role.user,
parts=[Part(TextPart(text=message_text))],
messageId=uuid4().hex,
taskId=uuid4().hex,
)
)
# Send streaming message
streaming_request = SendStreamingMessageRequest(
id=str(uuid4().hex),
params=message
)
async for chunk in client.send_message_streaming(streaming_request):
if hasattr(chunk.root, 'result') and hasattr(chunk.root.result, 'status'):
message = chunk.root.result.status.message
if message and message.parts:
yield message.parts[0].root.text
async def main():
"""Example usage of the agent client."""
client = AgentClient("https://chatbot.wingtip.com/a2a")
# Get agent information
agent_card = await client.get_agent_card()
print(f"Agent: {agent_card.name}")
print(f"Description: {agent_card.description}")
# Send a message and stream the response
async for response_chunk in client.send_message("Your input text here"):
print(response_chunk, end='', flush=True)
if __name__ == '__main__':
asyncio.run(main())
Agent Configuration
Complete JSON configuration for this agent:
{
"capabilities": {
"pushNotifications": false,
"streaming": true
},
"defaultInputModes": [
"text/plain",
"application/json"
],
"defaultOutputModes": [
"text/plain",
"application/json"
],
"description": "Intelligent customer service assistant that handles inquiries, processes requests, and provides 24/7 support",
"filename": "customer-service-chatbot.json",
"name": "Customer Service Chatbot",
"protocolVersion": "0.2.6",
"provider": {
"organization": "Wingtip Toys",
"url": "https://wingtip.com"
},
"skills": [
{
"description": "Processes customer inquiries and provides accurate responses with contextual understanding",
"examples": [
"Answer product availability questions",
"Handle billing and payment inquiries",
"Provide order status information"
],
"id": "handleInquiry",
"name": "handleInquiry",
"tags": [
"customer-service",
"inquiry",
"support",
"chat"
]
},
{
"description": "Intelligently escalates complex issues to appropriate human agents with context preservation",
"examples": [
"Escalate technical issues to specialist",
"Route billing disputes to finance team",
"Transfer complex cases to senior support"
],
"id": "escalateIssue",
"name": "escalateIssue",
"tags": [
"customer-service",
"escalation",
"support",
"routing"
]
}
],
"slug": "customer-service-chatbot",
"url": "https://chatbot.wingtip.com/a2a",
"version": "2.4.1"
}