Example: Placing an outbound call
This example starts a VoxEngine session, places an outbound PSTN call, and bridges audio to Deepgram Voice Agent once the callee answers.
⬇️ Jump to the Full VoxEngine scenario.
Prerequisites
- Create a routing rule with this scenario attached (outgoing calls don’t use patterns) so you can run it from the Control Panel or trigger it via API: https://voximplant.com/docs/getting-started/basic-concepts/routing-rules
- Have a PSTN
destinationnumber you can dial (E.164 format), for example your mobile number. - Configure a valid outbound
callerId(for example, a rented Voximplant number or a verified caller ID): https://voximplant.com/docs/getting-started/basic-concepts/phone-numbers - Pass
destinationandcallerIdas routing rule custom data (this example reads them fromVoxEngine.customData()):{"destination":"+15551234567","callerId":"+15557654321"}. - Store your Deepgram API key secret value in Voximplant
ApplicationStorageunderDEEPGRAM_API_KEY.
About outbound Caller ID
VoxEngine.callPSTN(...) requires a valid callback-capable caller ID (for example, a rented Voximplant number or a verified caller ID). See https://voximplant.com/docs/getting-started/basic-concepts/phone-numbers.
Launch the routing rule
For quick testing, you can start this outbound scenario from the Voximplant Control Panel:
- Open your Voximplant application and go to the Routing tab.
- Select the routing rule that has this scenario attached.
- Click Run.
- Provide Custom data (max 200 bytes) with
destinationandcallerId:
For production, start the routing rule via Management API startScenarios (pass rule_id, and pass the same JSON string in script_custom_data): https://voximplant.com/docs/references/httpapi/scenarios#startscenarios
Place the outbound call
Outbound calls are placed with VoxEngine.callPSTN(number, callerid, parameters?).
In the full example, see VoxEngine.customData(), the destination / callerId parse, and the AppEvents.Started handler:
Session setup
As in the inbound example, the Deepgram Voice Agent session is configured via a settingsOptions object passed to Deepgram.createVoiceAgentClient(...).
In the full example, see SETTINGS_OPTIONS.agent:
listen: speech-to-text providerthink: LLM provider + promptspeak: text-to-speech provider
Connect call audio
For outbound, it’s typically best to create the Voice Agent and bridge audio only after the callee answers (so the agent doesn’t speak into ringback).
In the example, the CallEvents.Connected handler does:
Barge-in
To keep the conversation interruption-friendly, the example listens for Deepgram.VoiceAgentEvents.UserStartedSpeaking and clears the media buffer:
Events
The scenario logs a transcript example via Deepgram.VoiceAgentEvents.ConversationText and also logs a small set of lifecycle/debug events.
Available events are documented in the Voximplant references:
- Voice Agent events: https://voximplant.com/docs/references/voxengine/deepgram/voiceagentevents
- WebSocket media events: https://voximplant.com/docs/references/voxengine/deepgram/events
Notes
See the VoxEngine API Reference for more details.