VoiceOI

Build your bots

AI Voice Agent editor

The AI Voice Agent editor builds a call script from plain-language settings on seven tabs instead of a node canvas. The agent asks your questions, answers from what you wrote, tries to end each call with one of your outcomes, and sends callers it qualifies to a closer or a Google Sheet. It runs on the VoiceOI SIP bot servers, and because a model can get things wrong, you test it and you are the caller.

Applies to:Every account

Last checked against the product: . Found a mistake? Tell us.

How do I create an AI Voice Agent script?

On Scripts, press New Script. On an empty script the page asks What are you building? Choose AI Voice Agent (or Classic Call Flow for a pre-recorded bot, see Script Builder). It says “Pick once”: after the first save the script always reopens here, because each save rebuilds the call flow and hand wiring would be lost.

The AI model behind the agent

The agent thinks with the model on the LLM provider tile on Integrations. If nobody saved that tile, calls use what the VoiceOI team deployed, and In effect now shows which. Saving your own Base URL, API key or Model changes every AI script in your organization, so ask the team first and retest in the Simulator. See Integrations and carriers.

How do I start from the script my human agents read?

Use Build from script, which opens by itself on a new agent and later sits in the tab bar. Paste the script your human agents read (at least 40 characters; text beyond 12,000 is cut off) and press Apply to the form. Fields it could not find, listed under Not in the script, keep their values. Nothing is saved until you press Save AI Agent, so check every tab.

  • It never touches the transfer target, the voice, the timing settings or the transfer outcome’s “when” sentence, but it rewrites the other outcomes’ “when” sentences, so reread Do not call and Not interested.
  • It keeps at most 12 questions, 12 knowledge answers, 10 guardrails and 5 alternative openings. The disclosure wording it finds may not be an AI disclosure. An AI service reads the pasted text, so paste no personal data about callers.

Persona tab: who the agent is and how it sounds

FieldWhat it doesDefault
Agent name, Company name, IndustryWho is calling and what is offered; they open the prompt. The agent name is required.Empty
ToneHow the agent sounds, added near the end of the prompt.“Professional, friendly, and helpful”
Opening line, Alternative openingsThe opening is required and spoken as written. Each call uses it or an alternative, so change the wording, not the meaning.Empty, none
Voice, Speaking rate, Rotate between voicesWith rotation on, each call keeps one voice. See rotating voices.Default voice, 1.00x, off
Fallback dispositionThe last-resort result code.NI

Use placeholders instead of typed names

Placeholders are filled in at call time. With rotation on, the agent’s name follows the voice, and a name typed into the opening line is swapped only where it matches Agent name exactly, so use {{agent_name}}. The Insert buttons also add {{company_name}}, {{lead name}}, {{lead phone}} and {{date}} (UTC, for example 10/18/2026). {{last user response}} is filled in once, before the caller speaks, so it does not follow the conversation.

What the fallback disposition does

It is used only when a call ends with no outcome and the bot cannot tell why, after the detected rows on the Outcomes tab. A hang-up is logged by the Caller hung up row, not by this field.

Questions tab: why you are calling and what the agent asks

Reason for the call is one sentence the prompt asks the agent to give once, early, in its own words. That is an instruction to a model, not a spoken line, so test whether your agent says it, and use the Opening line if every caller must hear it.

Qualification is the list the agent asks, in order; you need one question to save. The prompt says to ask only these, once each, and to lean towards qualifying, so write questions that can fail clearly.

Outcomes tab: which result code does each ending write?

Each row has a code that VoiceOI sends to the dialer, a “when” sentence that tells the model when to pick it, and a closing line, spoken only if the model said nothing itself. A call that ends with no outcome gets a code set from how it ended, or the fallback code.

Default outcomes
OutcomeCodeDefault closing line
Qualified - transferXFER“Perfect, connecting you now.”
Qualified - sale (with No transfer)SALE“Perfect, someone will be in touch shortly.”
Not qualifiedDEC“Understood, thanks for your time.”
Not interestedNI“No problem, thanks for your time.”
Callback requestedCALLBK“No problem, I will try another time.”
Do not callDNC“Understood, I will remove you from our list.”
Caller hung up, No usable answer, Dead air, No clear outcomeN, NA, DAIR, NPNone
  • The last row is detected from how the call ended. The agent is never offered those outcomes.
  • The transfer row cannot be removed. A row added with Add outcome needs a code and a clear “when” sentence: with no code it writes none, and the model never sees the label.
  • VICIdial drops a status that is not on the campaign’s status list, so check each code against it in VICIdial, or ask the VoiceOI team to check it with you. See status codes.

Knowledge tab: what the agent may answer

Knowledge is a list of question and answer pairs (Add answer). There is no document upload, website import or search over files: the agent gets only your persona, questions, these pairs and what the caller says. The pairs are in the prompt before every reply, so keep them short and factual. The screen lists five questions callers often ask, such as how did you get my number and am I talking to a robot. Write a true answer to each: you are responsible for what callers hear.

Safety tab: fallback line and guardrails

Fallback line is required. The agent says it when the model times out, errors or answers with nothing, then keeps listening; nothing is transferred. If the caller keeps talking while the model keeps failing, it can repeat until the turn limit. The grey example in the empty field promises a transfer, so do not write that.

Guardrails are rules added to the prompt, one line each. A model usually follows them but is not forced to, so test each in the Simulator. The AI disclosure switch is also on this tab.

Is the AI disclosure line on by default?

No. A new agent starts with AI disclosure reading Not disclosed. When on, it reads Disclosed on every call and the line plays at the start of the AI conversation, before the opening line. It plays only on calls that run on the VoiceOI SIP bot servers (the VICIdial® path): not on built-in dialer calls and not in the Simulator. You write the wording.

How the disclosure line behaves
QuestionAnswer
WordingThe sample text says the call is recorded and uses an AI assistant. Make every word true: VoiceOI does not record calls on the VICIdial connection.
Empty wordingNothing plays, even with the switch on.
Voice engine failureIf the line cannot be generated or played, the call goes on to the opening without it, and you get no warning.

Handoff tab: where qualified callers go and how the agent hears them

Where qualified leads go

OptionWhat happensCodeMatches
Transfer to a closerThe agent says its last line (your closing line, if the model said nothing itself). VoiceOI then tries to write the notes to the lead (a failed write does not stop the transfer) and asks your dialer to move the call to the Transfer target. If the dialer refuses, the caller is hung up, Call Logs still shows Transferring and the code stays XFER. See Why does a transfer to a closer fail?.XFERAI fronter
No transferThe agent ends the call, and if you chose a Google Sheet VoiceOI tries to write a row. SALE means the agent qualified the caller and collected details, not a payment.SALEAI lead generation

Transfer target and method

Transfer target is required in transfer mode, and the VoiceOI team confirms what to enter. Transfer method starts on ViciDial Native API (instant release), which asks VICIdial through its API to move the call, or sends a SIP REFER if it cannot work out the bot’s line or the lead. SIP blind transfer (REFER) sends the REFER directly. Use one of those two. On the servers that run AI agents, Direct extension transfer and Carrier bridge (compatible) send the same SIP REFER as SIP blind transfer (REFER), so they add nothing. See Live transfers and notes for your closers.

Comments for the closer

Comments is an instruction, not a template. The agent writes the note from the conversation, up to 255 characters, and VoiceOI tries to write it into the lead’s Comments in VICIdial just before the transfer. With no lead ID, or if VICIdial refuses, the transfer still goes ahead and the closer may see no note or an older one. See The closer sees no notes.

Writing details to a Google Sheet

With No transfer, choose a Spreadsheet and Tab from the Google account connected on Integrations. The editor lists “The agent will fill these columns” from the first row of the tab. Phone, Phone Number, Caller ID, Date, Time and Lead ID come from the call (Date and Time use the Primary Timezone on Settings, so check it there), and a Transcript column holds the caller’s side only. An AI model fills the other columns from the caller’s words alone, so “Homeowner” can come back wrong when the caller only said “yes”. Columns named notes, summary, outcome, comments, disposition or result get a one-sentence summary the model writes.

The row is built in the background as the call ends. With no Google account, an expired sign-in, no header row or every column empty, the agent still reports SALE and nothing is written, and a “row queued” timeline entry does not prove the row arrived, so check the sheet after test calls. See Google Sheets.

When the agent gives up

Max turns (default 10) counts every round of listening and replying, silent turns included. Silence limit in seconds (default 6) is how long the agent waits for the caller to speak: after one silent turn it says “Are you still there?” and a second in a row ends the call. A filler such as “uh” counts as silence, and a call ended by the turn limit (NP) or a repeated reply gets no closing line.

How the agent hears the caller

Recognition engine turns speech into text. The default, Turbo Realtime Engine (Ultra-Fast), mishears short words more than Deep Precision Engine (High Accuracy), which adds a delay. See recognition engines.

Interruptions and reply delay

Interruptions is off by default, so the agent finishes its sentence. Reply delay (300 to 1500 ms, default 700 ms) is the wait after the caller stops. See interruptions.

Prompt tab: the master prompt

This tab shows the instructions built from the other tabs, plus a short fixed block of speaking guidance that VoiceOI adds and you cannot see. The badge reads Auto generated. If you edit the text it changes to Overridden and the other tabs stop changing the prompt; Revert to generated undoes that. Keep the generated ending list that links each “when” sentence to an outcome name.

What does the agent do on its own, and what can go wrong?

Your settings are instructions to a language model, and a model can ignore or misread one, so no setting is a certainty. VoiceOI adds the rules below around the model. Test in the Simulator and review real calls in Call Logs.

Rules the system applies on every AI call
WhenWhat the system does
An Immediate Hangups phrase matches (checked on every caller turn, before the model)The call ends at once: AM for Machines (Voicemail/Beeps), DNC for DNC Keywords (Profanity/Abuse). No phrases come by default. See spoken phrases.
The first round of listening, normally the caller’s answer to your opening lineNo outcome is taken, a transfer included. A phrase rule still ends the call.
An agent reply ends in a questionEvery outcome except the qualified one is held back. The qualified outcome is exempt: it is the transfer, or the Google Sheet hand-off in No transfer mode.
A caller reply ends in a question markThe same: every outcome except the qualified one is held back. If speech recognition writes an opt-out as a question, such as “Can you take me off your list?”, Do not call is dropped, so use phrases for opt-outs.
The same agent reply comes twice in a rowThe call ends as NP.

What happens when a voicemail answers?

On a VICIdial account no machine-detection step runs in front of an AI agent, so the agent treats a recorded greeting as a caller, and the “Voicemail hangs up” strip at the bottom of the editor does not describe a live call. Only phrases in your Machines (Voicemail/Beeps) rules on Immediate Hangups end it, as AM. Add the phrases your greetings use, because speech recognition can mishear. Otherwise the agent can talk to a voicemail until the turn limit or silence ends the call. See answering machines.

How do I test an AI Voice Agent?

  1. Save and link a campaign

    Both

    Press Save AI Agent. The Simulator tests the script linked to a campaign. The VoiceOI team creates campaigns; you link the script under Assigned Campaign in Script Settings (the gear icon in the editor).

  2. Run the Simulator

    You

    Choose the campaign under Select Campaign to Test, pick Text Simulator (Dry Run) or Browser Mic (WebSpeech API - Dry Run) in Chrome or Edge, and press Start Simulation. Try qualifying, refusing, a callback, a removal request, each Knowledge question and an Immediate Hangups phrase.

  3. Test on a real call

    Both

    Put a lead with a number you control in a test list in VICIdial and let the campaign dial only that list (see How do I check that it works?). Check the disclosure, closing lines, transfer, the lead’s Comments, the code in VICIdial and the sheet row.

The Simulator is not a phone call. It skips the first-reply and question rules, speaks no closing lines, plays no disclosure and tests no transfers, status write-back or sheet rows. In No transfer mode its sheet step writes no row for an AI agent, yet it still ends the test with SALE and the message “Data synced to Google Sheets. Simulation ended.” Do not read that message as proof that the sheet works: test the sheet with a real call. See what the Simulator does not test. In Call Logs (titled Interaction Logs), Show System Nodes reveals AI Exit Decision, the outcome the agent chose.

What can an AI Voice Agent not do?

  • It does not make the sale, book appointments or schedule callbacks. CALLBK is only a code.
  • It speaks English only and looks nothing up in your CRM or the web.
  • It does not stay on the line after a transfer or introduce the caller.
  • It hears no keypad presses, adds no one to a do-not-call list and sets no calling hours.
  • It can be wrong: a model can pick the wrong outcome or misread a caller. Review real calls in Call Logs.

Consent, do-not-call lists, calling hours and caller ID stay with you. See Compliance and your responsibilities.

Problems with AI Voice Agent scripts

Save shows “This agent cannot take a call yet”

Likely cause

The editor needs an agent name, an opening line, a question, a fallback line and, unless you chose No transfer, a transfer target. “Required Field Missing” means the fallback line is empty.

How to check

Look for a red dot on a tab.

How to fix it

Fill in those tabs and press Save AI Agent again.

Still stuck

The message text and the time with time zone.

The caller hears “connecting you now”, then the call drops

Likely cause

The closing line plays before VoiceOI asks your dialer to move the call, and a refused transfer hangs the caller up while Call Logs still shows Transferring.

How to check

Check the Transfer target and Transfer method, then your dialer’s SIP log for a refusal.

Still stuck

The call time with time zone, the campaign and the lead ID.

The agent keeps talking and never transfers, or calls end as NP or NI

Likely cause

The model behind your LLM provider may not reliably return an outcome, or the rules above held the outcome back.

How to check

Press Test connection on the LLM provider tile on Integrations and read Exit tool calling, which should say works. In Call Logs, press Show System Nodes and read AI Exit Decision.

How to fix it

If the test fails or Exit tool calling says not used, ask the VoiceOI team to review the model or provider.

Still stuck

The call time with time zone, the campaign and the lead ID.

The agent keeps pitching after the caller said stop

Likely cause

The Do not call outcome is the model’s choice, held back on the first round and when the caller’s words end in a question mark. Phrase rules are not.

How to check

In Call Logs, press Show System Nodes and read what the caller said.

How to fix it

Add the phrases your callers use to a DNC Keywords (Profanity/Abuse) rule on Immediate Hangups, and test them in the Simulator.

Still stuck

The call time with time zone, the campaign and the lead ID.

The agent talks to a voicemail greeting

Likely cause

No machine-detection step runs before an AI agent, so a recorded greeting counts as a caller until a phrase rule, the turn limit or silence ends the call.

How to check

Open the call in Call Logs and read what the agent heard.

How to fix it

Add your voicemail greeting phrases to a Machines (Voicemail/Beeps) rule on Immediate Hangups. See voicemail.

Still stuck

The call time with time zone, the campaign and the lead ID.

The disclosure line was not heard on a test call

Likely cause

The switch is off, the wording is empty, the line could not be played, or the call ran outside the SIP bot servers. The Simulator never plays it.

How to check

On the Safety tab, check that the switch reads Disclosed on every call and the wording is filled in.

How to fix it

Save, then call a phone you control on your campaign’s path and listen to the first seconds. If it is still missing, ask the VoiceOI team.

Still stuck

The call time with time zone, the campaign and the lead ID.

The lead keeps its old status in VICIdial

Likely cause

VICIdial drops a status that is not on the campaign’s status list, even though the outcome was picked.

How to check

Look for “Not on the dialer’s list - this code will not be recorded.” under an Outcomes row. A code the editor knows can still be missing.

How to fix it

Ask your VICIdial admin to add a missing status, or ask the VoiceOI team to check the codes with you. See status codes.

Still stuck

The campaign, the lead ID and the code you expected.

The caller keeps hearing the fallback line

Likely cause

The line plays when the model times out, errors or answers with nothing. A slow, unreachable or keyless model does this on every turn.

How to check

On the LLM provider tile on Integrations, In effect now shows what a call uses. If it says “No API key is set anywhere. AI calls fail until one is.”, ask the team. Then press Test connection. In Call Logs, press Show System Nodes and look for entries that read “AI reply failed” or “Call ended: the AI did not reply”.

How to fix it

Ask the VoiceOI team to fix the provider, key or model. Change First-token timeout (ms) only with the team.

Still stuck

The call time with time zone, the lead ID and the Test connection result.

The Google Sheet stays empty after qualified calls

Likely cause

No Google account is connected or the sign-in expired, the tab has no header row, or every column came back empty. The lead is still SALE.

How to check

On Integrations, check that the Google Sheets tile shows the connected Google account. On Handoff, check that “The agent will fill these columns” lists your headers.

How to fix it

Press Sign in again if needed, choose the spreadsheet and tab again and put the column names in row 1.

Still stuck

The call time with time zone, the campaign, the lead ID and the spreadsheet and tab names.

Common questions

Does the AI Voice Agent work with the built-in dialer or Twilio numbers?

AI Voice Agent conversations run only on the VoiceOI SIP bot servers, the servers VICIdial remote agents use. The built-in dialer’s own engine does not run them, so ask the VoiceOI team first.

Is the AI disclosure turned on by default?

No. A new agent starts with the switch off, and when on, the line plays only on calls that run on the VoiceOI SIP bot servers (the VICIdial path), not on built-in dialer calls or in the Simulator. Whether you disclose is your decision, and this is not legal advice.

What happens when someone on the call asks to be taken off the list?

A phrase you add in the DNC Keywords category on Immediate Hangups ends the call and logs DNC, while a rule left in the default Machines category logs AM. The agent’s Do not call outcome depends on the model and is held back on the first reply and on a caller question, and VoiceOI adds the number to no list, so add it to your own.

Can I upload documents or a website for the agent to learn from?

No. The Knowledge tab holds question and answer pairs you type. The agent searches no files, websites or CRM.

Related

VoiceOI provides tools. The customer is the caller and is responsible for consent, do-not-call lists, calling hours, caller ID, recording and monitoring consent, and disclosures. This page is not legal advice.

VICIdial is a registered trademark of the Vicidial Group. VoiceOI is an independent product and is not affiliated with or endorsed by the Vicidial Group. Asterisk, Twilio and other product names are trademarks of their respective owners.

Questions about your setup? Talk to the VoiceOI team.