✨ Prompting Best Practices
Structure, formatting, and techniques for reliable Regal voice and SMS agents.
How your agents perform depends heavily on prompt engineering. This guide shares what we see work most reliably in production, including prompt structure, turn discipline, action invocation, voicemail handling, voice settings, and more.
Voice vs SMSMost techniques below apply to both channels. Skip voice-only sections (pauses, number readback, name pronunciation, websites/emails aloud, voicemail/screener, voice recommendations, voice settings) when building an SMS agent. Adapt turn length and tone for concise written messaging.
General Guidelines
- Start with Regal's template agents when building a new agent, as we already incorporate many of these best practices in those templates, and then you can just follow the same pattern.
- Prefer GPT-5.6 Luna for most new voice agents. It is cheaper and of higher quality than the 4.x-era defaults and needs less defensive prompt scaffolding. Try using a stronger 5.6 variant (e.g. Terra) for genuinely complex multi-state work. Depending on the complexity of your agent, it may not be possible to prompt it to do what you want, without upgrading to a more sophisticated LLM model. See our LLM guide to understand what each model is best at.
- Retest when you change models. A prompt written for 4o-mini will not transfer cleanly to Luna (and usually can be shortened by half).
- Regal Copilot & ChatGPT are your friend. If you're on your third approach for how to prompt your agent to achieve something, and it's still not working, ask Copilot or copy your prompt into ChatGPT, explain what you want to happen vs. what is happening, and ChatGPT will give you some helpful suggestions. Make sure to tell it what model you are using.
- We're here to help. If you're still having trouble prompting your agent, reach out to [email protected] and one of our AI experts can help you out.
Core Prompting Principles
These apply to every agent prompt (Role/Goal, Task Steps, Q&A, Guardrails, and Agent Style).
- Keep it short
Prefer fewer instructions. Omit extra words. With the GPT 5.x models, long defensive scaffolding written for older models (e.g. 4o-mini / 4.1-mini) is not needed. See common prompting techniques.
- State the goal first
Open Role/Goal with who the agent is, why they called, and what success looks like.
You're Sarah, an upbeat and attentive sales agent with [Brand Name]. The contact submitted a quote request online for life insurance. You are calling them. Your goal is to make the prospect feel like this quote is already theirs, keep them talking with a tone that's casual and short, and get them onto a line with a live licensed advisor today.- Be specific
Replace vague words with direct rules the model can match.
- If they agree / yes / okay / alright / go ahead / fine / please do / sure /
mumble something like a yes, proceed to Step 5- Use a clear structure
Define role, context, constraints, and flows with labeled sections the agent can jump between:
## UNIVERSAL HANDLING (AT ANY POINT IN THE FLOW):
...
## DEFAULT CONVERSATION FLOW:
...
## EXISTING CUSTOMER FLOW:
...- Define agent scope
Say what the agent can do alone and what must be escalated or deferred.
- Never guarantee claim approval, quote a premium, give a discount amount, or state a
coverage limit. That's the licensed agent's job; say so and then proceed to transfer.- Do not confuse brevity with incompleteness
Modern models are already concise. Specify which conclusions, caveats, and next steps they must not omit.
- Always tell the contact what happens next before ending the call or transferring (e.g. "A licensed agent will call you within 24 hours").
- Always include the recorded line disclosure in the greeting, even when shortening the opening.
- Always state that pricing is an estimate and final rates are set by a licensed agent whenever you mention a price.
- Never end a scheduling conversation without repeating the confirmed date and time back to the contact.Prompt Formatting
These formatting rules produce the most reliable agents. Apply them in Role/Goal, Task Steps, Questions & Objection Handling, Guardrails, and Agent Style.
Formatting rules
- Number all step headers: Step 1, Step 2, Step 3.
- Use subheaders for branches: Step 1.1, Step 1.2 (or #### If … under a step).
- Write spoken lines as: - say: "..." or - say exactly: "..."
- Branch using if statements, for example:
- If the contact confirms, proceed to step 3, the Qualification logic
- If the contact says no, Call function EndCall and say: "No problem, have a great day!"
- When jumping elsewhere in the prompt, always write: proceed to step [N], the [header name] logic
- Use markdown: ordered lists, bold for emphasis, ## / ### for hierarchy.
- Capitalization can signal urgency: DON'T ASK FOLLOW UP QUESTIONS
- Guardrails always start with Never or Always
| Section | Format |
|---|---|
| Role/Goal | 1–3 sentences. Define the agent as “You…” and briefly list or bullet the goals. |
| Task Steps | Numbered call flow with headers, subheaders, example sentences, and branching. Never write prompts that produce monologues: no stacked explanations, no multi-topic paragraphs, no reading lists of options aloud. If a step needs a lot of information, split it across turns driven by the contact’s responses. |
| Questions & Objection Handling | Add common FAQs and objections here in clear Q and A formatting. |
| Guardrails | List of hard rules for the agent. Each line starts with Never or Always. |
| Agent Style | List describing how the agent should speak. Voice turns should be short: 1–3 sentences max, then stop or ask one question. Barring preference, one question per turn is standard; don't ask two questions in the same turn. |
Universal Handlers
Every agent should handle these paths.
| Situation | Behavior |
|---|---|
| Do Not Call / Do Not Contact (DNC Handling) | Should be a custom AI analysis point. Include handling in Questions & Objections Handling, say polite closing statement and end the call immediately. |
| Wrong-number callers | One polite redirect; if they confirm wrong number or stay off-topic, end the call with a polite closing statement. Do not keep engaging. |
| “Are you an AI / a robot?” | Honest one-line disclosure, then continue naturally. |
| Abusive or refusing to engage | One de-escalation attempt, then end the call politely. |
| End Call reachability | End Call must be reachable from every conversation path (single-state: in Actions + invoked in Q&A/guardrails; multi-state: every non-terminal node needs a route to an End Call action). |
| Unrelated topics | Add handling for off topic requests. The agent should only discuss the topics detailed in the prompt. |
Common Prompting Techniques
🧠 Explicit Branching Prompting
Guide the model through a decision by making criteria and branching explicit, using the standard Task Steps format (## Step N. Step Name with #### If [condition] sub-branches), not a prose “think step by step” checklist.
Use when logic, judgment, or decision-making is needed (qualification, eligibility, routing).
Example (Life Insurance Qualification):
Goal: Determine if the caller qualifies for a life insurance quote.
Qualification Criteria:
- Age >= 18 and <= 80
- Not a smoker
## Step 1. Greeting
Say: "Hi there! I'd love to help you get a life insurance quote. Can I start by asking your age?"
## Step 2. Age Check
#### If the caller is between 18 and 80:
Proceed to Step 3, the Smoking Status logic.
#### If the caller is under 18 or over 80:
CALL end_call AND SAY: "I'm sorry, you don't qualify to move forward. Best of luck."
## Step 3. Smoking Status
Say: "Thanks. And do you currently smoke?"
#### If the caller does not smoke:
Call transfer_call and Say: "Great, you're qualified, let me get you connected."
#### If the caller smokes:
CALL end_call AND SAY: "I'm sorry, you don't qualify to move forward. Best of luck."🎯 Few Shot Prompting
What it is: You give a few examples to teach the model how to respond in a certain way. It's great when the model needs to learn a format or tone.
Use case for AI agent: Make sure the agent responds naturally and politely while collecting information.
Example Prompt:
You are a friendly AI life insurance agent who is attentive and responsive to the information customers are sharing.
Example 1:
Contact: I'm 35.
Agent: "Great, thanks for sharing your age!"
Example 2:
Contact: I just had a baby.
Agent: "That's a wonderful reason to get life insurance, congrats!"
Example 3:
Contact: I do smoke.
Agent: "Thanks for being honest, this just helps us find the right plan for you."🔀 Go To / Section Based Prompting
What it is: This is basically the idea of "breaking off into sections". A common example is creating a section for "Callback Scheduling", and somewhere else in the prompt, you can direct the agent to these callback scheduling steps. This is a structured prompt engineering technique that introduces state-based flow control. This pattern attempts to combine the constraints provided by "conversation flow" and the flexibility provided by "single prompt".
Use case for AI agent: Allow the agent to dynamically navigate / jump around in a conversation rather than progressing linearly through task steps which can be especially useful for inbound calls where the customer's need is unknown at the start of the call
Always jump with: proceed to step [N], the [name] logic.
## STRUCTURE
- If the user asks about pricing, proceed to step 3, the SALES FLOW logic
- If the user asks about order status, proceed to step 4, the SERVICE FLOW logic
- If the user is confused or unresponsive, proceed to step 5, the GENERAL FLOW logic
### Step 3 - SALES FLOW
- say: "Our pricing starts at $99/month. Would you like more details?"
- If the user asks for a free trial, proceed to step 6, the TRIAL FLOW logic
### Step 4 - SERVICE FLOW
- say: "Can you provide your order number for tracking?"
### Step 5 - GENERAL FLOW
- say: "I'm here to help! What would you like to know?"#️⃣ Empty Values for Dynamic Variables
When you refer to a dynamic variable such as a contact attribute in your agent prompt, we automatically insert the value of that attribute into the prompt when delivering it to the LLM. For example, if you want to refer to the customer's first name on an outbound call, you can write "Hi, is this {{contact.firstName}}?" and we will replace that variable with the first name from the contact's profile, if there is a value. Such as "Hi, is this Rebecca?". However, if there is no value, it gets replaced with a default value of "identify#user_properties#0##first_name" so you'll need to add some prompting to handle situations where there is no value, so that the conversation still starts naturally.
Best Practice:
- Make sure to define the dynamic variable first by clicking "Edit Variable Definitions" (in this example, we're using first name so we defined it as "Contact's first name" and then we refer to that in the prompt in the next step)


- Add this as an early step whenever the prompt speaks {{contact.firstName}} (you can apply the same # / 0 check to any other spoken dynamic variable)
## Step 1. Determine if you have a proper first name for the contact.
#### If the value for Contact's First Name is blank or contains a `#` or `0`:
Say: "Hi there." Then proceed to Step 2.
### Else:
Say: "Hi, is this {{contact.firstName}}?" and wait for the caller to confirm their identity, then proceed to Step 2.
🤝 Reliable Action Invocation
LLMs were built for language, not tool calling. Regal actions (End Call, Transfer, Schedule Callback, etc.) are most reliable when you:
- Give each action a clear Name and Description in the Actions panel.
- Instruct the prompt with exact syntax, action before spoken line.
- Prefer named end-call actions over one generic hang-up (see below).
- Leave action speech fields blank and generate speech in the prompt (see below).
Best Practice is Call function … and say …:
CALL <function> AND SAY "<text>"This is one tool call, not a spoken turn and then a tool call afterwards. When calling a function you do not speak a turn and then call the function. You call the function, and the words can ride inside it as its speech before execution or within the prompt in the format outlined here.
Say: "Would you like to speak to a licensed advisor?"
- If yes, CALL TransferToHuman AND SAY "Ok, great, transferring you now."
- If no, CALL EndCall AND SAY "No worries, have a great day."
- If the customer has a question or is unsure, address their question or hesitation.Specific end-call actions (not one generic end_call)
Use one function per exit reason. Named exits are easier to prompt and harder for the model to fire from the wrong branch. A single generic hang-up is reachable from everywhere, so the model reaches for it.
Recommended pattern:
| Action | Use when |
|---|---|
end_call_voicemail | Voicemail / leave a message / “can’t take your call” / “call now” (at connect stage) |
end_call_non_connect | No answer / background noise / not engaging / failed connect |
end_call_unavailable | Can’t come to the phone / unavailable |
end_call_existing_customer | Already a customer / out of scope for this flow |
end_call | Reserved for wrong number / deceased (and similar) |
- voicemail / leave message / cannot take your / call now -> CALL end_call_voicemail
- no answer / background noise / not engaging -> CALL end_call_non_connect
- unavailable / cant come to phone -> CALL end_call_unavailableLeave action speech fields blank
- Leave speech before execution and speech during execution empty in the action config.
- Instruct the model in the prompt to generate the right phrase with CALL x AND SAY y.
- Only hard-code speech in the action when it must never vary.
// When the transfer statement can vary & be more personalized
- CALL function warm_transfer AND SAY "I am connecting you with a live agent so they can help you with [reason], one moment please."
// When transfer statement is the same every time the action is called
// IN THE ACTION'S SPEECH BEFORE EXECUTION: "Of course, let me get you over to our main line. One moment."
- CALL function transfer_to_mainAction sequences (dependencies)
When one action needs the output of another (especially dates), group them and be explicit about the dependency and format.
Practical example: group get-date with schedule-callback
- LLMs often fail callback scheduling because the action needs an exact timestamp and the model guesses.
- Grouping the date lookup with the booking call hands the model the format in the result, immediately before it has to produce one.
- Give an explicit format example in the prompt, and inject {{current_time}} / {{current_time_local}} and {{contact.rvProperties.timezone}} into the callback branch.
- Once you have a date and time, CALL GatherDate to check availability.
- Then CALL ScheduleCallback with the confirmed timestamp in the required format (e.g. ISO-8601 with timezone, match what GatherDate returned).
- Always schedule for a future time. Never invent a timezone.✋ Objection handling
Do not write objection handling to “address the issue” or win the argument. The goal is to overcome the blocker to the task.
- If you are transferring in a six-step qualifier and they object at step 2, and steps 3–4 are optional, jump to the close.
- Shape is always [objection receipt] + [the instruction/question from the step you jumped to], in one turn.
- An objection never triggers a follow-up question. It jumps to the next required step.
- AI agents don’t win arguments with callers. They get callers to a goal.
If an objection or motivation or personal context arises at ANY POINT, jump
to #4, choose the best option and get transfer consent fast.
NOTE: An OBJECTION never triggers a follow-up question. Deliver the receipt,
then go straight to #4 (b) and (c).Objection table pattern, receipt + action phrase:
O1 "Too expensive"
- Say: "Totally fair, and nobody's actually quoted you yet. Our agents do that for free." -> let's get you a professional re-rate
O2 "Not interested"
- Say: "There's no obligation, and rates can change all the time." -> let's run a quick comparison
O3 "Got a better quote"
- Say: "Nice. But what if we could beat that?" -> let's get you an even better rateWhat the caller hears (objection at step 3 of 7 - optional steps skipped):
Caller: "Look, honestly, this is all just too expensive for me right now."
Agent (in one turn, no follow-up): "Totally fair, and nobody's actually quoted you yet. Our agents do that for free. Now one moment please, I'm going to connect you to a licensed agent, sound good?"Receipt → compliance line → transfer ask with the objection’s own action phrase. Caller is one “yes” from the goal.
🔡 Spelling / Pronouncing Names Correctly
This applies to voice agents only
Names are not spelled or pronounced universally; customers speak quickly, have accents, or audio is poor. Without explicit handling, agents get names right ~90% of the time; with these techniques, closer to ~95%+ (varies by audience).
Option 1 - High accuracy (ask to spell)
Best when spelling is critical (authentication, system lookup).
- say: "Can I have your first and last name to get started?" and wait for their response
- say: "Can you spell your first name for me?" and wait for their response
- say: "And can you spell your last name for me?" and wait for their response
- Confirm the first name and last name's spelling.
- say: "so your first name is spelled as J A N E and then your last name is H A N K S, is that right?" and wait for their confirmation.
- If user makes a change, only repeat the part of the name that needs a change. Do not repeat the part that's confirmed.- ✅ Pros: Higher accuracy
- ❌ Cons: Higher friction, slows down the conversation for every customer
- 💡Best for: When it's critical to get the spelling right such as because it's needed to authenticate or lookup a customer in your system before continuing.
Option 2 - Low friction (handle corrections in Q&A)
Best when getting the name right improves experience but is not critical for an API call.
Add to Questions & Objection Handling:
### Name Spelling or Pronunciation Corrections
If the customer spells their name out letter by letter, you must use the spelled version as the correct first name going forward, even if the earlier transcription was different.
For example, if the customer says:
"My name is Alex Jones… A-L-E-C J-O-N-E-S,"
then respond:
"Thank you, Alec. It's nice to meet you,"
(not "Alex").
Always treat the letter-by-letter spelling as the authoritative source for the customer's first name. Ignore previous transcriptions if they differ.
- Another Example:
Agent: "Thank you, Soban! That's perfect."
User: "That's not how you say my name."
Agent: "I apologize. Could you help me by spelling out your first name letter by letter?"
User: "It's S I O B H A N"
Agent: "Thank you, Siobhan! Now..."
User: "You're still saying it wrong!"
Agent: "I apologize. Let's move onto the next step..."
Note: If user shows dissatisfaction with name pronunciation, first ask to spell out letter by letter. If frustration continues, stop using name in conversation and rephrase standard responses to remove name references (e.g., use "Thank you! That's perfect." instead of "Thank you, {{contact.firstName}}! That's perfect.")- ✅ Pros: Less friction
- ❌ Cons: Doesn't account for people who don't correct the name
- 💡Best for: When it's good to get names right from an experience standpoint, but not critical to get spelling perfect for an API call.
⏰ Stating Business Hours in Local Time
### "What are your business hours?"
- If the contact asks "What are your business hours?" and {{contact.rvProperties.timezone}} is one of the following:
- 'America/New_York': say: "Business hours are Monday through Friday, 9am to 7pm Eastern."
- 'America/Chicago': say: "Business hours are Monday through Friday, 8am to 6pm Central."
- 'America/Denver': say: "Business hours are Monday through Friday, 7am to 5pm Mountain."
- 'America/Los_Angeles': say: "Business hours are Monday through Friday, 6am to 4pm Pacific."
- 'America/Anchorage': say: "Business hours are Monday through Friday, 5am to 3pm Alaska Time."
- 'America/Hawaii': say: "Business hours are Monday through Friday, 4am to 2pm Hawaii Time."
- If the timezone is not recognized, say: "Business hours are Monday through Friday, 9am to 7pm Eastern."⏸️ Pauses
This applies to voice agents only
Use a comma, or a short dash with spaces on both sides, for a short pause:
Say: "Thanks, appreciate it"
or
Say: "Thanks - appreciate it"For longer pauses, use more spaced dashes:
Say: "Great! You'll want to visit circlebank.com - - - then tap the three lines in the top right corner, - - - select Account - - - and enter your email. - - - Then, check your email for the login link. - - - If you don't see the email, be sure to check your spam or junk folder."Never use em-dashes (—). Always use a comma or short dashes with a space on each side (-).
🔢 Number / ID Speed or Repetition
This applies to voice agents only
Agents often dump an entire ID or phone number in one breath. Break numbers into short segments with commas or spaced dashes, confirm after readback, and if corrected, repeat only the changed part.
If it's a number / ID you need your agent to confirm with a caller:
Example (membership number TNSV19604846):
- Say: "Okay, the first part of the membership number is T for Toy, N for Name, S for Salad, V for Vance, and then the rest is 1, 9, 6, 0, 4, 8, 4, 6. Is that correct, or would you like me to repeat it?"If it's a number that's static, you can simply use:
Say: "The number you can call for that is one, eight-eight-eight - three-seven-eight - four-three-two-nine."Note: if the speed of how your AI agent is saying a phone number is not a problem, you can also just use brackets like this. Agents know how to say "one eight hundred" in this case for example.
The number is [1-800-MEDICARE]
🌐 Saying Websites and Emails Naturally
This applies to voice agents only
It's best to spell out websites and emails to avoid agents adding the https:// or pronouncing the email/website oddly.
Never let the agent speak a raw URL or email address.
Email do-not-call-at-circle-health-dot-com
Visit w-w-w-dot-circle-health-dot-com➿ Voicemail & iOS Screener Detection
This applies to outbound voice agents only
For outbound agents using GPT 4.x series models, handle voicemails and iOS call screening in the task steps as Step 0, before the greeting. Keep this block short as classifier rules, not essays. Prefer named end-call actions (end_call_voicemail, etc.) over a single generic hang-up. For GPT 5.x series models, this prompt can be cut down as shown earlier.
## Step 0 - Screener / Voicemail handling
If you hear a natural greeting like "Hello?", "Hi", "Yes?", or "Hello there" without instructions, proceed to Step 1, the Greeting logic.
### Voicemail - immediate hangup
IF YOU HEAR ANY LANGUAGE LIKE:
- "Please leave your message for…[a name or numbers]"
- "Leave a message after the tone."
- "I'm not at the phone right now"
- "I can't get to the phone right now"
- "Sorry I missed your call, leave a message…"
YOU ARE TALKING TO A VOICEMAIL BOX, NOT THE CONTACT OR A HUMAN.
- If you detect voicemail, do not leave a message; immediately CALL end_call_voicemail. No speech.
### iOS screener detection
YOU ARE TALKING TO AN iOS SCREENER IF YOU HEAR LANGUAGE LIKE:
- "Please state your name and reason for calling."
- "This call is being screened."
- "I'll see if this person is available."
- "Record your name and reason for calling and I'll see if they're available."
YOU ARE NOT SPEAKING TO THE CONTACT OR A HUMAN. Follow these exact steps to reach a human:
1. Say exactly: "Hi there, this is [Agent Name] calling on behalf of [Brand Name]."
- WAIT FOR A RESPONSE
2. If you then hear hold or wait language such as "Thanks. Please stay on the line.", "Please stay on the line", "One moment", or "I'll see if they're available":
- Say exactly: "okay" and DO NOT SAY ANYTHING ELSE. Stay silent until you hear a natural human greeting such as "hello", "hi", or "yes?"
- If you hear a natural human greeting, proceed to Step 1, the Greeting logic.Voice Recommendations
Catalog availability can change; confirm voices in the agent voice picker.
Female voices
| Voice | Provider | Notes |
|---|---|---|
| Summer | Cartesia | Default. Clear, young; proven at high volume (e.g. insurance screening / pre-transfer). Prefer unless the use case suggests otherwise. |
| Wildflower | Rime | Warm, natural - healthcare and empathetic use cases |
| Katie | Cartesia | Young, clear - lending and collections-style outreach |
| Dana | Cartesia | Middle-aged, clear - healthcare scheduling |
| Nancy | Cartesia | Middle-aged, professional - health plans / Medicare-style |
| Moraine | Rime | General purpose, clear, versatile |
| Brooke | Cartesia | Clear, versatile - marketplace / benefits |
| Allie | Cartesia | Young, direct - finance and collections |
Male voices
| Voice | Provider | Notes |
|---|---|---|
| Gavin | Cartesia | Professional, clear - finance and collections |
| Mike | Cartesia | Professional, direct - general business |
| Marsh | Rime | General purpose, versatile |
| Alex | Cartesia | Professional, direct - light production / ops |
Use-case matching
| Use case | Suggested voices |
|---|---|
| Default / general outbound | Summer |
| Warm / empathetic (healthcare, mental health, roadside) | Wildflower, Dana, Moraine |
| Lending / finance / collections | Katie, Allie, Gavin, Mike |
| Health plans / benefits | Nancy, Brooke, Summer |
| General purpose (triage, troubleshooting) | Moraine, Marsh |
Fallback voices
Always configure two fallback voice IDs:
- First fallback: equivalent voice from a different provider (e.g. main Rime → Cartesia or ElevenLabs fallback).
- Second fallback: an OpenAI voice of the same gender.
Voice Settings recommendations
Defaults (start here then adjust as you see fit):
| Setting | Recommended |
|---|---|
| Speed | 1.15 |
| Responsiveness | 0.8 (balanced reactive / patient) |
| Interruption sensitivity | 0.7 |
| Temperature (only for ElevenLabs) | 1.0 |
Interruption sensitivity
Do not leave interruption sensitivity at 1.0. The agent will perform poorly when the contact is in a noisy place or others are speaking in the background. Use ~0.7 for most use cases.
Pronunciation troubleshooting
If a voice consistently mispronounces a word, try in order:
- Write the word phonetically or with alternative spelling.
- Test a different voice, some pronounce certain words better.
- Try a pronunciation dictionary (CMU preferred over IPA).
- Last resort: clone a custom voice.
Things That Do NOT Work
These patterns come from general telephony knowledge and do not work on Regal. Agents cannot detect or respond to these signals. Including them causes hallucinated behavior.
Time-based instructions
Do not write:
- “Wait X seconds before speaking”
- “Listen for 1–2 seconds”
- “Pause and assess what you hear”
- “If no response after N seconds…”
Agents respond to transcribed speech, not silence duration. Use platform settings such as Reminder Message Frequency for silence handling, never prompt-level timers.
Telephony-layer detection
Do not write:
- “If you hear a busy tone…”
- “If you hear a fast busy signal or repeating tone pattern…”
- “If you hear ‘the number you have dialed is not in service’…”
- “Listen for connection sounds before speaking”
Agents receive transcribed text, not raw audio signals. Busy tones, ring patterns, and carrier messages are handled by call routing and AMD, not prompts.
Counting turns or messages
Do not write:
- “After 3 failed attempts…”
- “On the second try…”
- “If user hasn’t responded in 2 messages…”
Agents have no reliable turn counter. Use platform settings (Reminder Message Count, End Call on Silence) instead of prompt logic.
Other Resources
Regal docs
- LLM Models: which model to pick for your use case
- Single State Agent Prompt and Multi State Agent Prompt
- Handle iOS Call Screening
- Voice Settings
- What is Copilot?: get AI help improving your agent
External guides
Updated 5 days ago

