Why test first

Almost every problem a bot will have in production shows up on a single honest test call: a variable that never filled in, the wrong voice or language, an opening message that gets cut off, a tool that never fires, a transfer that fails, or a post-call push that maps the wrong field. Testing before you point a campaign at the bot is the cheapest way to catch all of these. Ori gives you two ways to test the same bot. Both open from the bot’s detail page (/dashboard/bots/[bot_id]).

Test Call

Ori places a real outbound phone call to a number you choose, through a real carrier. This is the closest thing to production — it exercises the carrier, the phone line, and the full pipeline. Use it before launch.

Test in Browser

Ori connects the bot to your computer’s microphone and speakers in the browser. No phone, no carrier, no call charges. Use it for fast iteration while you tune prompts and voice.
Use Test in Browser for quick back-and-forth while you are still editing the bot. Use a real Test Call as the final check before you attach the bot to a campaign, because only a real call exercises the carrier and the actual phone audio path.

Test Call modal

The Test Call modal places a genuine outbound call from a carrier to a phone number you specify, using the bot exactly as a campaign would. You can also feed it mock customer data so the bot speaks names and amounts the way it will on a live call. Open it from the bot detail page. The modal title reads Test Call.

Fields

Fill these in before you start the call.
FieldWhat to enterRequired
TransportHow the call is placed: SIP (uses your carriers) or Exotel (only shown if an Exotel integration is configured). Defaults to SIP.Yes
CarrierThe carrier the call goes out on. The list shows only carriers that are synced and have outbound numbers. SIP transport only.Yes (SIP)
DIDThe outbound number (caller ID) the call uses, from the carrier you picked. Only numbers that can dial out are shown. SIP transport only.Yes (SIP)
Exotel DIDThe Exotel test number to call from. Shown only when Transport is set to Exotel.No
Phone NumberThe number that should ring — your own phone, so you can answer and talk to the bot. Use full international format, e.g. +91XXXXXXXXXX.Yes
Template variablesOne text box per {{variable}} Ori finds in the bot’s prompts and opening message. Type a test value for each so you can hear the bot use real data. See below.No
Mock CRM EnabledSends the template-variable values above into the call as mock CRM data. Defaults on. Leave it on so the values you typed actually reach the bot.No
Enable Pre-Fetch SimulationIf the bot has CRM pre-fetch configured, this simulates that fetch during the test. Defaults off.No
Enable Post-Push SimulationIf the bot has post-call push configured, this simulates sending results to your CRM. Defaults off.No

Template variables

Ori reads the bot’s prompts and opening message and pulls out every {{variable}} it finds — for example {{crm.CUSTOMERNAME}} or {{call.amount}}. Each one becomes its own field in the modal. Whatever you type here is what the bot will say. If the prompt greets the customer with Hello {{crm.CUSTOMERNAME}}, type a real name like Rajesh so you can confirm the bot says “Hello Rajesh” and not the raw {{crm.CUSTOMERNAME}} text.
Mock CRM Enabled must stay on for these values to be used. With it off, the bot runs as if no CRM data arrived — useful only if you specifically want to test the “missing data” path.

Buttons

ButtonWhat happens when you click
Initiate Test CallValidates the form, then places the call: it rings the Phone Number you entered, from the chosen carrier and DID, carrying your mock variables. The modal switches to a connecting state and starts tracking the call’s progress.
Close ModalCloses the modal.
Once the call is placed, the modal polls for status on its own — you do not click anything to refresh. It checks the call’s progress every few seconds and updates the live status and timer until the call reaches a final state.

What you’ll see while it runs

The modal moves through these states:
StateWhat it means
idleThe form is ready; you haven’t started yet.
connectingOri is placing the call and the line is ringing.
liveYou’ve answered and the bot is talking; an elapsed timer counts up.
endingThe call is wrapping up; Ori is waiting for the final result.
doneThe call finished. The modal shows a summary — duration, disposition, and a recording link if one is available.
errorThe call failed to connect or complete. The modal shows an error message explaining why.
If you don’t answer, the modal keeps polling and then times out (after a few minutes). A timeout in the test modal usually just means the phone wasn’t picked up — answer the call to complete the test.

How to run a good Test Call

1

Pick how it dials

Leave Transport on SIP for a normal phone test. Choose the Carrier and DID you want the call to come from — pick the same carrier the campaign will use, so the caller ID and audio path match production.
2

Enter your own number

Put your own phone in Phone Number in full international format so you can answer and actually talk to the bot.
3

Fill the variables with realistic data

Type real-looking values into each template-variable field — a real first name, a real amount, a real due date. This is how you confirm the opening message and prompt render correctly. Keep Mock CRM Enabled on.
4

Optionally simulate integrations

If the bot uses CRM pre-fetch or post-call push and you want to test them, turn on Enable Pre-Fetch Simulation and Enable Post-Push Simulation.
5

Place the call and answer it

Click Initiate Test Call, answer your phone, and have a real conversation — including the awkward bits (see What a good test looks like).
6

Read the summary, then open the call detail

When the modal shows done, check the duration, disposition, and recording. Then open the full call detail to inspect the transcript, events, and analysis. See After the test.

Test in Browser modal

The Test in Browser modal connects the bot directly to your computer’s microphone and speakers. There is no phone and no carrier — you talk to the bot through your browser. It’s the fastest way to hear a prompt or voice change without spending a call. Open it from the bot detail page. The modal title reads Test in Browser. This test has no input fields — it starts as soon as you give the browser permission to use your microphone.

Buttons

ButtonWhat happens when you click
Start TestAsks your browser for microphone permission, connects you to the bot, and begins the conversation. The status changes to connecting and then live.
Mute / UnmuteTurns your microphone off and on. While muted, the bot can’t hear you; the timer keeps running. Click again to unmute.
End TestDisconnects you from the bot, stops your microphone, stops the timer, and ends the test. The modal closes when the session ends.

Microphone permission

The first time you click Start Test, your browser shows its own pop-up asking to use the microphone. You must click Allow.
If you click Block (or your browser remembers a previous block), the test fails with a permission error such as “NotAllowedError — Microphone access denied”. Re-allow the microphone for this site in your browser’s address-bar settings, then click Start Test again.

What you’ll see while it runs

StateWhat it means
idleReady to start; nothing is connected yet.
connectingThe browser is asking for the microphone and Ori is connecting you to the bot. You’ll see “Connecting…“.
liveYou’re connected and the bot is listening. The modal shows an elapsed timer (MM:SS) and the Mute button.
endingYou ended the test and Ori is disconnecting.
errorThe connection failed — for example, microphone access was denied. The modal shows the error message.
When the bot speaks, its audio plays automatically through your speakers — you don’t have to do anything to hear it. Talk normally; the bot responds in real time, just as it would on a phone call.
Use headphones for browser tests. Speakers can feed the bot’s own voice back into your microphone and confuse the conversation.

How to run a good browser test

1

Click Start Test and allow the mic

Click Start Test, then click Allow on the browser’s microphone prompt.
2

Wait for live

Watch the status move from Connecting… to live. The timer starts counting once you’re connected.
3

Have a real conversation

Speak to the bot the way a customer would. Interrupt it, go quiet, give short answers — see What a good test looks like.
4

End cleanly

Click End Test when you’re done. This stops your microphone and closes the session. Then open the call detail to inspect the transcript and events.
The browser test does not let you provide mock CRM variables. If a prompt depends on customer data (names, amounts, due dates), use a real Test Call with the variable fields filled in to confirm those render correctly.

What a good test looks like

A useful test is more than “did the bot answer.” Deliberately walk the bot through the situations a real customer will create, and listen for the behaviour that breaks production conversations.

Conversation paths to cover

PathWhat to doWhat you expect
Normal successCooperate and let the bot reach its goal.The bot completes the objective and ends the call cleanly; the analysis is correct.
Stay silentSay nothing after the bot greets you.Re-engagement fires, then the call ends with an RNR / no-customer-message disposition.
Hang up earlyEnd the call from your side mid-conversation.The result is stored with disconnected_by = customer.
Let the bot end itReach a point where the bot should close the call.The bot ends it; the result shows disconnected_by = bot.
Tool pathSteer the conversation to trigger a custom tool or knowledge lookup.The tool runs and shows up in the call events.
Transfer pathAsk for a human / trigger the transfer condition.The bot transfers and result.was_transferred = yes; on failure, a transfer-failed reason is recorded.
Callback requestAsk to be called back later.The analysis records the callback request and the time text (only when callback detection is enabled on both the bot and the campaign).
CRM dataUse a Test Call with variables filled in.The opening message and prompt say your real values, never raw {{...}} text.

Communication quality to listen for

CheckWhat good sounds like
Opening messageBackground noise on your end shouldn’t cut off the bot’s first sentence.
Short acknowledgementsFiller like “haan”, “hmm”, “okay”, or “ji” shouldn’t derail the bot or make it stop.
Real interruptionsMeaningful phrases — “wrong number”, “already paid”, “transfer me”, “agent” — should interrupt the bot promptly.
Tool / API waitsWhen a tool is running, the bot shouldn’t go silent for long; it should hold the conversation naturally.
Silence handlingRe-engagement should sound natural, not robotic, before the call ends.
Knowledge answersThe bot should answer from attached knowledge only when appropriate and avoid guessing.
LatencyThe bot should respond without long, unnatural gaps.
Run the same test twice with different mock data (for example, a cooperative customer and a reluctant one). Bots often sound perfect on the happy path and fall apart on the messy one — that’s exactly where production calls live.

After the test

A test isn’t finished when you hang up — it’s finished when you’ve read the call record. Open the call from the bot’s call list or the call detail page and check:
  • Transcript — did the bot understand you, and did it say your variables correctly?
  • Recording — does playback work?
  • disconnected_by — does it match how the call actually ended (bot, customer, voicemail, timeout)?
  • Call duration — does it look right for the conversation you had?
  • Events — did tools, transfers, and knowledge lookups fire when expected?
  • Post-call analysis and QC — is the summary, disposition, and quality scoring correct?
  • CRM push / integration logs — if you simulated post-call push, did the right fields go out?

Common failures and what they mean

SymptomLikely cause
Bot says {{FIELD}} out loudA variable is missing or misspelled, or Mock CRM Enabled was off in the Test Call.
Test Call fails before the bot speaksCarrier not synced, no outbound DID, a provider key issue, the bot is Inactive, or it’s outside the bot’s active hours.
Browser test errors immediatelyMicrophone permission was denied — re-allow it for the site and start again.
No recording on the call detailStorage misconfiguration, an upload failure, or the call ended before recording started.
Post-call analysis missingThe call hit an auto-disposition path that skips analysis, or the analysis prompt is empty.
Transfer never happensThe Transfer Call tool isn’t enabled for the bot, or no transfer target is configured.
CRM push missing a fieldThe key mapper points at the wrong variable path.
Whether you tested by phone or in the browser, the resulting call appears in the bot’s call history just like a production call, so you can re-open and re-inspect it at any time.
  • Create a bot — build or edit the bot you’re testing.
  • Voice pipeline — tune the STT, LLM, and voice engines if a test sounds wrong.