Skip to main content
Esc
Browse docs

Build a Hindi voice agent (worked example)

Build a Hindi AI voice agent in Slovio step by step: an appointment reminder for a Jaipur clinic with a Hindi voice, HTTP and transfer tools, testing and calls.

8 min readUpdated

This worked example builds a Hindi-speaking AI agent that calls patients of a Jaipur dental clinic to confirm tomorrow's appointment, offers a new slot if they can't come, and transfers them to the front desk when they ask for a person. You create the agent with Describe your agent, choose a Hindi voice and transcriber in AI Models, add an HTTP API tool and a Transfer Call tool, test it, deploy it, and then place calls.

The business in this example: Sharma Dental Clinic, C-Scheme, Jaipur. Front desk: +911414567890. The agent is called Riya.

Step 1: Create the agent

  1. Open Calling → Voice Agents → Create Voice Agent → Describe your agent.
  2. Fill in the sheet:
Field What to enter
Call direction Outbound — this agent calls people
What is it for? Appointment reminders
What should it do on the call? See the text below.
Agent's name (optional) Riya
Business (optional) Sharma Dental Clinic, Jaipur

For What should it do on the call? (at least 10 characters), write:

text
Speak in simple Hindi, the way people talk in Jaipur. Use English words for dates and times if the patient does.
Confirm the patient's dental appointment for tomorrow. If they can come, thank them and remind them to arrive 10 minutes early.
If they can't come, ask which day and time suits them and check free slots before offering one.
If they want to talk to a person, or ask about fees or treatment, transfer them to the front desk.
Never give medical advice. Never promise a discount.
  1. Select Create agent. It shows Writing… for a few seconds, then opens the builder with a call flow written from your brief.

Step 2: Make the prompts speak Hindi and use variables

Open the Global Prompt node and make the language rule explicit:

text
आप Sharma Dental Clinic, Jaipur की ओर से Riya बोल रही हैं।
हमेशा सरल हिंदी में बात करें। मरीज़ अंग्रेज़ी शब्द बोले तो वही शब्द इस्तेमाल करें।
कॉल छोटा रखें। कोई medical सलाह न दें।

Open the Start Call node and put the patient's details in with {{ }} tokens:

text
नमस्ते, क्या मेरी बात {{customer_name}} जी से हो रही है?
मैं Sharma Dental Clinic से Riya बोल रही हूँ। आपका {{doctor_name}} के साथ {{appointment_time}} का अपॉइंटमेंट है। क्या आप आ पाएँगे?

Each token is filled from the call's variables. Names are case-sensitive and can use only letters, digits and _.

Step 3: Choose a Hindi voice, transcriber and model

Voice, transcriber and language model are set once for your whole account.

  1. Open Calling → AI Models.
  2. Either pick a ready Call stack, or set each tab yourself with your provider's API key. This example uses Sarvam for all three:
Tab Provider Settings
LLM Sarvam Model sarvam-30b (low latency). Temperature 0.5.
Voice Sarvam Model bulbul:v2, Voice anushka, Language hi-IN, Speed 1.
Transcriber Sarvam Model saarika:v2.5, Language hi-IN.
  1. Paste your key in API Key(s) on each tab.
  2. Select Save Configuration. You see Model configuration saved.

Other Hindi options

Tab Providers you can use for Hindi Hindi language code
Voice Sarvam, Google Cloud hi-IN
Voice Smallest AI, Rime hi
Transcriber Sarvam, Google Cloud hi-IN
Transcriber Deepgram, Cartesia, Gladia, Smallest AI hi
LLM Sarvam, OpenAI, Google, Groq, Open Router Language is set in your prompt
  • Sarvam Voice languages: hi-IN, bn-IN, gu-IN, kn-IN, ml-IN, mr-IN, od-IN, pa-IN, ta-IN, te-IN, as-IN and en-IN.
  • Sarvam voices for bulbul:v2: anushka, manisha, vidya, arya, abhilash, karun, hitesh.
  • bulbul:v3 has a longer list, including shubh, ritu, priya, neha, rahul, pooja, rohan, simran, kavya, amit and others.
  • Sarvam Transcriber can also be left on unknown, which detects the language by itself. For a Hindi-only line, hi-IN is more predictable.

Step 4: Add an HTTP API tool to check free slots

  1. Open Calling → Tools → New tool → HTTP API.
  2. Fill in:
Field Value
Name Check free slots
Description (when should the bot use this?) Find free appointment slots for a date the patient asks for. Use this when the patient can't come and wants a new time. Pass the date as YYYY-MM-DD.
Method GET
URL https://api.sharmadental.in/v1/slots
Query params date = {{query}}, clinic = c-scheme
Headers Accept = application/json
Timeout (ms) 5000
API token Your clinic system's token (sent as a Bearer token)
  1. Select Create tool.

During the call, when the patient says "परसों शाम को", the agent works out the date, calls GET https://api.sharmadental.in/v1/slots?date=2026-10-05&clinic=c-scheme, and reads out the free times your API returns.

Step 5: Add a Transfer Call tool to reach the front desk

  1. Tools → New tool → Transfer Call.
  2. Fill in:
Field Value
Name Transfer to front desk
Description (when should the bot use this?) Transfer when the patient asks for a person, or asks about fees, treatment or anything you can't answer.
Transfer to Phone number
Phone number +911414567890
Ring (seconds) 30
Before transferring Speak text: कृपया लाइन पर बने रहें, मैं आपको रिसेप्शन से जोड़ रही हूँ।
  1. Select Create tool.

Now go back to the agent's flow, open the Agent node (the main conversation step; in the template it is Reschedule), and tick both tools under Tools.

Step 6: Capture the result of each call

On the same Agent node, switch on Extract data and in What to extract write:

text
whether the patient confirmed, cancelled or rescheduled; the new date and time if rescheduled; whether they asked for the front desk

After each call you see these values in the call's details in Call Logs, in campaign Results as extra columns, and in extractedVariables on the call.ended calling webhook.

Step 7: Test the agent

  1. Select Validate. You should see Workflow is valid.
  2. Select Save.
  3. Select Test Agent → Test Chat → Start chat, and type as the patient: नहीं, कल नहीं आ पाऊँगी। शनिवार को हो सकता है? Check that the agent asks for a time and offers a slot.
  4. Select Phone Call, enter your own mobile (+919876543210) and select Start Call to hear Riya's Hindi voice.

Step 8: Deploy

Select Deploy. When the button shows Live, the agent is published. After later edits it shows Update; select it to publish the changes.

Step 9: Call your patients

Personalised reminders through the API

For a reminder that names each patient, their doctor and their time, place one call per patient with the Calls API:

bash
curl -X POST https://api.slovio.ai/v1/comms/calls \
  -H "x-access-key: $SLOVIO_ACCESS_KEY" \
  -H "Authorization: Bearer $SLOVIO_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: sdc-appt-55120-remind1" \
  -d '{
    "agentId": "66f2a9c4e1b7d30012ab45cd",
    "to": "+919876543210",
    "variables": {
      "customer_name": "Priya Sharma",
      "doctor_name": "Dr. Anil Mathur",
      "appointment_time": "कल सुबह 11:30 बजे"
    }
  }'

Riya then opens with: "नमस्ते, क्या मेरी बात Priya Sharma जी से हो रही है? … आपका Dr. Anil Mathur के साथ कल सुबह 11:30 बजे का अपॉइंटमेंट है। क्या आप आ पाएँगे?"

Find the agentId in Calling → API → Agent in the example.

A campaign to a whole list

To call a whole list with the same message, use a campaign:

  1. Calling → Campaigns → New campaign.
  2. Campaign name: Sunday check-up camp, Oct. Bot: your Riya agent.
  3. Audience: Select list and pick your patient segment.
  4. Advanced options → Calling hours: Monday to Saturday, From 10:00 To 19:00, Timezone Asia/Kolkata.
  5. Select Launch campaign.

Campaign calls fill {{ }} tokens from each contact: {{firstName}}, {{lastName}}, and every custom field by its name, for example {{appointment_time}}. So for a campaign, write {{firstName}} in the prompt where the API example used {{customer_name}}. A contact with no value for a token hears a blank there, so keep the sentence natural without it.

See Outbound call campaigns for retries, auto-pause and the results report.

Common questions

Can one agent speak Hindi and another speak Tamil?

Not with different voices at the moment, because the voice and transcriber are set for the whole account in AI Models. You can pick a multilingual setup and tell each agent's Global Prompt which language to speak.

Which Hindi voice should I start with?

Sarvam's anushka on bulbul:v2 is the default for Sarvam and a good first choice. Try two or three voices with Phone Call before going live.

Why did the agent say a blank instead of the patient's name?

The call had no value for that token. Send it in variables with the Calls API, and check the spelling and capitals match the prompt exactly.

Do I need my own Sarvam account?

If you set the tabs yourself in AI Models, yes: you paste your own provider key. Otherwise pick a ready Call stack if your account has one.

What does a 2-minute Hindi reminder call cost?

Calls are charged per connected minute from your wallet at your account's calling rate, and unanswered calls cost nothing. The exact cost of each call shows in Call Logs and in the Calls API response once settled.

Stuck, or is something here out of date? Tell the team — we reply within a working day.