Reading the action notation in this lesson:
This lesson references functions like
start_sms_flow and transfer_call. You’ll learn how to create and wire these in Lesson 2: Using functions and Lesson 3: Return values.For now, read them as named actions:start_sms_flowwithsms_id="bill_request"→ sends an SMS using the template called “bill_request”transfer_callwithtransfer_reason="BILLING"→ transfers the caller to a human agent for billing
What makes a Managed Topic complex?
A topic is considered complex if it does more than return static information.Actions
Triggers SMS, transfers, or routing
Options
Presents choices and waits for user selection
Clarification
Asks questions before acting
In the UI, complex topics almost always use both Content and Actions, and often rely on functions to control what happens next.
Topic creation flow
Before you write anything
Answer these first:- What is the intended outcome? (e.g., user receives SMS link, or gets transferred)
- What happens if the user says no?
- What happens if the user gives an unexpected answer?
An example workflow for complex topics
Step 1: Retrieval
If a topic doesn’t retrieve reliably, nothing else matters. Retrieval depends most on three things, in this order:- Topic name
- Sample questions
- Content
Why topic naming is critical
The topic name is one of the strongest signals used to decide which content to surface. A good name should represent one specific user intent, for example:bill_request_previous_stay
Why this works:
- It represents a single, concrete intent.
- It distinguishes between similar scenarios (previous stay vs current or future).
- It mirrors how the system classifies the request.
- It reduces collisions with any other billing topics you may add as your Managed Topics grow.
billinghelp_with_billmisc_billing
Step 2: Write sample questions like real users
Think of sample questions as training data. For complex topics, aim for variety. Include:- Direct commands
- Polite requests
- Incomplete phrasing
- Synonyms and alternate terminology
- Call-style filler language
- Can you send me my invoice
- I stayed last week and need a receipt
- Text me my bill
- I need a folio from my last stay
- Uh I need billing help
Step 3: Write Content like a call script
Content should sound natural when spoken out loud. As a rule, it should:- Lead with what happens next
- Ask one clear question
- Be short enough to say in a single breath
Check your understanding
Core complex patterns (with examples)
The patterns below cover most real-world use cases. You can copy them directly and adapt the wording.Pattern 1: Offer SMS with fallback to handoff
Use when- The user needs a link, form, or written instructions.
bill_request_previous_stay
Content
- Consent is explicit
- Only two options are presented
- There is a clear fallback
Pattern 2: Conditional SMS (user chooses)
Use when- Multiple follow-ups are possible.
promotions_current
Content
Pattern 3: Direct handoff (no agent reply)
Use when- The agent should not attempt to resolve the request.
out_of_scope_spanish
Content
(leave empty)
Actions
- Immediately call
transfer_callwithtransfer_reason="SPANISH"
Pattern 4: Answer, then offer handoff
Use when- The agent can answer, but escalation may still be useful.
late_checkout
Content
Standard checkout is at 11 a.m. If you need to check out later than that, I can connect you with the front desk to see what’s available. Would you like me to do that?Actions
- If yes → handoff to front desk
- If no → end politely
Pattern 5: Clarify, then route
Use when- The intent is genuinely ambiguous.
reservation_change
Content
Are you looking to change an existing reservation, or make a new one?Actions
- If “change” → route to reservation modification
- If “new” → route to booking flow
- Ask one question only
- Do not stack clarifications
- Complete the flow immediately after the answer
Pattern 6: Info + action hybrid
Use when- The user needs context and a next step.
lifeline_program
Content
Lifeline is a government-sponsored program that provides qualifying customers with discounted phone or broadband service. I can text you more details, or connect you with a specialist. Which would you prefer?Actions
- SMS →
start_sms_flow - Handoff →
transfer_call
Pattern 7: Info-only (still complex in practice)
Use when- The information is static but sensitive or high-impact.
housekeeping_hours
Content
Housekeeping is available daily from 9 a.m. to 5 p.m. If you need service outside those hours, I can connect you with the front desk.Actions
- No automatic action
- Offer handoff only if asked
Creating a complex topic in the UI
Write Content
In the Content field, write the agent’s response in call-script style — short, spoken-friendly, ending with one clear question.
Add Actions
Below Content, click Add action. Configure each branch:
- Select the function to call (e.g.,
start_sms_flow,transfer_call) - Set the condition (e.g., “If user agrees”, “If user declines”)
- Add fallback actions for error cases
Writing content that works in Call
Do- Use short sentences
- End with a single question
- Make one decision per turn
- Use paragraphs
- Include internal notes
- Ask multiple questions at once
Action design rules
- One primary outcome per turn
- Explicit consent before SMS
- A safe fallback for silence or confusion
- Prefer clarity over clever branching
Check your understanding
Verification checklist
Retrieval- Topic triggers with at least 10 phrasing variations
- Consent is respected
- No looping
- Responses are listenable
- Users can interrupt naturally
- No dead ends
- Unexpected answers recover cleanly
- SMS failures route correctly
Common pitfalls
- Overloading a topic with multiple intents
- Writing perfect answers but weak retrieval
- Delaying Call testing
Try it yourself
Challenge: Write a 'bill request' complex topic
Write a complete complex topic for a hotel guest requesting a bill from a previous stay. Use Pattern 1 (SMS with fallback to handoff).Include:
- Topic name
- Four sample questions
- Content (2–3 sentences, call-script style)
- Actions (3 branches: agree to SMS, decline SMS, SMS fails)
Hint
Hint
The topic name should describe one specific scenario (not just “billing”). Content should lead with what happens next and end with one clear question. Actions should cover the “yes”, “no”, and “error” paths.
Example solution
Example solution
Topic name: Actions:
bill_request_previous_staySample questions:- can you send me my bill from last week
- I need a receipt from my last stay
- text me my invoice
- how do I get a folio for my previous visit
- If user agrees →
start_sms_flowwithsms_id="bill_request" - If user declines → transfer to front desk
- If SMS fails → transfer automatically
Check your understanding
← Back to PolyAcademy
Level overview
Next: Using functions →
Lesson 2 of 8

