AgentsAgentBase

on_summary

View as MarkdownOpen in Claude

Callback method invoked when a post-prompt summary is received after a conversation ends. Override this method in a subclass to process summaries — for example, saving them to a CRM, triggering follow-up workflows, or logging call outcomes.

A post-prompt must be configured via set_post_prompt() for summaries to be generated.

For the full transcript at hangup rather than the summary, register on_call_end(). To read voice and chat post-prompt bodies with one shape, see normalize_post_prompt().

The default implementation does nothing. You must override it in a subclass or set a set_post_prompt_url() to receive summaries at an external endpoint.

Parameters

summary
dict[str, Any] | NoneRequired

The summary object generated by the AI based on your post-prompt instructions. None if no summary could be extracted from the response.

raw_data
dict[str, Any] | NoneDefaults to None

The complete raw POST data from the post-prompt request, including metadata like call_id and the full AI response.

Returns

None

Example

from signalwire import AgentBase
class SupportAgent(AgentBase):
def __init__(self):
super().__init__(name="support", route="/support")
self.set_prompt_text("You are a helpful customer support agent.")
self.set_post_prompt("""
Summarize this call as JSON:
- intent: caller's primary intent
- resolved: yes/no/partial
- sentiment: positive/neutral/negative
""")
def on_summary(self, summary, raw_data=None):
if summary:
call_id = raw_data.get("call_id") if raw_data else "unknown"
print(f"Call {call_id} summary: {summary}")
# save_to_database(call_id, summary)
agent = SupportAgent()
agent.run()