on_agent_speech()
Register a handler to receive a callback whenever the agent speaks. The event contains what the agent said and whether it was interrupted by the caller.
The AgentSpeechEvent is a pydantic model imported from guava.events:
from guava.events import AgentSpeechEvent
class AgentSpeechEvent(BaseEvent):
event_type: Literal["agent-speech"] = "agent-speech"
utterance: str
interrupted: bool = FalseSignature
signature
@agent.on_agent_speech
def on_agent_speech(call: guava.Call, event: AgentSpeechEvent) -> None:
...| Parameter | Type | Default | Description |
|---|---|---|---|
| call | Call | — | The active call object. |
| event | AgentSpeechEvent | — | Contains `utterance` (string) and `interrupted` (boolean) fields. |
Return value: None
Example
controller.py
import logging
from guava.events import AgentSpeechEvent
logger = logging.getLogger(__name__)
@agent.on_agent_speech
def on_agent_speech(call: guava.Call, event: AgentSpeechEvent):
logger.info("agent speech event: %s", event)
# Output:
# [INFO 15:02:29] agent speech event: sequence=None event_type='agent-speech'
# utterance='Hi, thank you for calling Thai Palace. My name is Grace.
# I can help you with the waitlist. ' interrupted=FalseQuestions? hi@goguava.ai
from guava.events import AgentSpeechEvent
class AgentSpeechEvent(BaseEvent):
event_type: Literal["agent-speech"] = "agent-speech"
utterance: str
interrupted: bool = Falseimport logging
from guava.events import AgentSpeechEvent
logger = logging.getLogger(__name__)
@agent.on_agent_speech
def on_agent_speech(call: guava.Call, event: AgentSpeechEvent):
logger.info("agent speech event: %s", event)
# Output:
# [INFO 15:02:29] agent speech event: sequence=None event_type='agent-speech'
# utterance='Hi, thank you for calling Thai Palace. My name is Grace.
# I can help you with the waitlist. ' interrupted=False