Standing up Agentic Voice on Customer Service 26.1.1: the configuration path end to end

A customer calls your support line and says: my card got declined at the pump this morning and I need to know why.

Pega Voice AI has been able to help with that call for several releases, but it helps the CSR handle it. Transcription runs in real time, case and knowledge suggestions surface as the conversation moves, and a person stays on the line the whole way through. The call still occupies a seat.

Agentic Voice answers the call itself. Pega owns the phone number, the speech pipeline, and the reasoning loop. The caller talks, an orchestrated set of agents identifies them, looks up their account, decides which case type fits what was said, and runs that case through the same rules a CSR would have driven. Nobody picks up unless the conversation needs a person.

This article is the configuration path. It assumes your environments are already onboarded for Agentic Voice and that you have the two values that onboarding returns. From there it covers application settings, creating the channel, provisioning a number, call recording, the four agents behind the channel, interaction wiring, identification and verification, and where to look once calls start landing.

1. What you need before you start

Versions. Agentic Voice requires Pega Platform 26.1.1. If you are running it inside Pega Customer Service, that application must also be 26.1.1. Everything below assumes the channel runs on the Orchestration Agent Service architecture.

Generative AI. Confirm the EnableGenerativeAI toggle is on. Dev Studio, then Configure > System > Release > Toggles, and verify it reads true. On a lab environment it generally already is.

Two values from onboarding. Agentic Voice runs on top of the Call Response Service, and your environments have to be registered with it before the channel will do anything. Registration returns two values you will need in section 2:

  • pyAgenticVoiceBaseURL, the Call Response Service endpoint that serves your deployment
  • pyTwilioAccountSId, the Twilio sub-account SID issued for that specific environment

The SID is per environment and is not portable. Agentic Voice rejects requests originating from a Twilio account it does not recognise, so copying a SID from your dev environment into staging produces a channel that looks configured and answers nothing. Registration itself runs through your Pega contacts and is out of scope here.

2. Application settings and the service package

Both values go in as Application Settings on the Pega-ProcessEngine class:

  • pyAgenticVoiceBaseURL
  • pyTwilioAccountSId

Application Settings carry a value per production level, so you set each environment’s value on its own row rather than maintaining separate rules.

Figure 1. The pyAgenticVoiceBaseURL setting on Pega-ProcessEngine, value type String/text, with the Value per production level table below. Development is filled in and the other levels are empty, which is the normal state while you are bringing one environment up at a time.

Figure 2. pyTwilioAccountSId alongside it. Same shape, same production-level table. Because the SID differs per environment, treat a blank row here as the reason a channel in that environment never receives a call.

Then the service package. Open the conversation service package rule and set its Service Access Group to an access group that can reach the target application and its rules and data. The inbound call arrives as a service request and executes under that access group, so if it cannot see your case types, neither can the agent that is supposed to start them.

3. Creating the channel

In Customer Service 26.1.1 the Agentic Voice channel interface is available out of the box. In Infinity Studio, open Channels and select Agentic Voice in the Create new Channel row.

Figure 3. The Channels landing page. Agentic Voice sits in the Create new Channel row between Mobile and Digital Messaging, with Agentic Email and the legacy Voice AI entry alongside it. All of these coexist; nothing is replaced.

3.1 Agent speaking style

The Overview tab takes a Channel name and Channel description, then an Agent speaking style section that defines how the agent sounds.

Figure 4. Agent language set to English (US), Speech-to-Text provider to Deepgram, Text-to-Speech provider to ElevenLabs. Text-to-Speech gender and Text-to-Speech tone are optional; Text-to-Speech voice is required and its options depend on which TTS provider you picked, so choose the provider first.

The Agent language list is locale-specific rather than language-level: Arabic alone carries separate entries for Gulf, Levant, Egypt, Morocco, Saudi Arabia and Standard. Pick the locale your callers actually use, because the speech-to-text model is selected from it.

One practical note on these drop-downs. Their contents come from the Call Response Service at page load, not from a local rule. If the provider or voice lists are empty, that is a connectivity or registration problem, not a configuration one. Go back and confirm the base URL setting and the registration state before you start looking at the channel rule.

3.2 Provisioning a number

Save the channel first. The Voice section on the Configuration tab, with Active numbers and + Add Agent Number, only appears once the channel exists.

Figure 5. The number search. Search by country is required; Phone type takes Local or Remote, Match to takes First part of number or Full number, and the Number box filters on specific digits. The dialog states the ceiling plainly: each Agent can use up to five phone numbers. Available numbers come back with a checkbox each, and you can select more than one before submitting.

Read the yellow note in that dialog before you click anything. Choosing a number links it to the channel permanently and can carry ongoing cost. Do the search on the environment you actually intend to run.

Some countries require a Twilio regulatory bundle before numbers can be provisioned at all. If provisioning fails with a country-specific error rather than an empty result set, that is usually why, and it is worth raising with Pega with the country and the exact error rather than retrying.

3.3 Routing and silence handling

Further down the Configuration tab is the behaviour that decides what happens when the conversation stops working.

Figure 6. Three independent failure paths, each with its own choice, plus a Silence timeout (seconds) set to 300 in this example. Note the validation on the third: selecting a transfer option makes Transfer to required, and the form will not save while it is blank.

Condition What it actually means
No audio detected from the caller Dead air. Dropped connection, caller walked away, handset in a pocket.
No intent detected, or the request was unclear The caller is talking and the agent cannot place it.
Human interaction mentioned The caller asked for a person.

Each path offers the same escalation choices: stay on the call, SIP Refer, or Legacy PSTN Transfer. SIP Refer hands the call off within your SIP infrastructure; Legacy PSTN Transfer dials out over the public network. Either one makes Transfer to required, and that field takes a SIP phone number and email, or a PSTN phone number, depending on which you chose.

The Silence audio options section below controls what the caller hears while the agent is thinking, with Default system audio as the out-of-the-box choice. On a call, several seconds of complete silence reads as a dropped line.

3.4 Call recording storage

Agentic Voice writes call recordings to an Amazon S3 bucket you own, which keeps retention and deletion under your own policy rather than Pega’s. The configuration lives in the Call recording section of the channel, behind Configure call recordings storage, and takes three values: the S3 bucket URL, an access key ID, and a secret access key from IAM credentials you create for that bucket.

Two things about this are worth planning for rather than discovering.

The first is that it is not instant. On submit, Pega registers the credentials with Twilio and the dialog shows status Pending; CloudOps completes the S3 destination configuration on their side, and the status turns Active after about one business day. Check back before you assume recordings are landing.

The second is the IAM policy. Scope it to s3:PutObject on the target bucket folder and nothing wider, block all public access, turn on S3 access logging, and set lifecycle policies that match your retention requirement. SSE-S3 encryption is the straightforward choice; SSE-KMS works if your organisation requires customer-managed keys, and then the KMS key has to sit in the same region as the bucket and the IAM policy needs the corresponding kms: actions. The full policy statement is in the product documentation linked at the end.

4. The agents behind the channel

Agentic Voice does not run one agent. The Orchestration Agent Service coordinates several, each with one responsibility, and the set is declared in the pySetSupportedAgents data transform.

Figure 7. pySetSupportedAgents, applies to Work-, flagged as an Extension. Each block appends a page to .pySupportedAgents and sets two properties on it: .pxInsHandle, the handle of the agent rule, and .pyOASPurpose, the role that agent plays. The four purposes visible here are “case”, “data”, “knowledge” and “interaction”.

The default set:

Agent pyOASPurpose Responsibility
pyVoiceCaseProcessingAgent case Creates and drives service cases. The case types this agent is allowed to service are configured on the agent itself, so this is where you control what a caller can actually get done.
pyVoiceDataAgent data Customer and account lookups.
pyVoiceKnowledgeBuddyAgent knowledge Knowledge retrieval. Point this one at the Knowledge Buddy you want callers grounded against.
pxInteractionAgent interaction Creates and manages the interaction itself.

You can override pySetSupportedAgents to substitute your own agents. One constraint governs how far you can take that: exactly one agent per pyOASPurpose value. One case processing agent, one data agent, one knowledge agent. If a vertical needs two distinct bodies of knowledge, that is a Knowledge Buddy question inside the single knowledge agent, not a second agent in the transform.

The case processing agent is where most of the day-to-day work lands. Adding a new self-service journey means adding a case type to that agent with a description the model can select on, the same pattern as Agentic Messaging.

5. Interaction configuration

Each Customer Service vertical carries its own interaction implementation class, so the interaction agent has to be told which one to create. Override the pyInteraction tool to reference the right interaction case type for your application.

Figure 8. pyBeforeInteractionInitialization on Pega-CognitiveAI-API-Interaction. The comment row says what the transform is for, and the Set row below it pulls the implementation class from D_ApplicationSettings. This is the rule to open first when interactions are being created on the wrong class.

Use pyBeforeInteractionInitialization to validate that D_ApplicationSettings.InteractionClass resolves to the implementation class you expect. It is a cheap check and it fails loudly, which is preferable to discovering the mismatch later in an interaction list full of records on the wrong class.

6. Identification and verification

Agentic channel interfaces run identification and verification as dedicated parallel flows rather than as steps the model can talk its way around. The entry point is the Identify_Agent flow.

Identification. Identify_SearchbyAgent locates the customer record. Two extension points are provided for anything you need to run around the search:

  • Identify_Search_Pre_Processing_Ext
  • Identify_Search_Post_Processing_Ext

The CustomerSearchForAgent view is customisable for vertical-specific search requirements. Out of the box the search attribute differs by channel: Agentic Voice searches on the phone number the call arrived from, Agentic Chat on email address.

Verification. Verify_Agent validates identity once a record is found, with its own pre- and post-processing extension points and a customisable VerificationForAgent view. Default verification data is again channel-specific: Agentic Voice asks for date of birth and ZIP code, Agentic Chat for mother’s maiden name.

Because these are flows rather than prompt instructions, no phrasing from the caller advances the interaction past them, which is the same argument that applies to case stage gates in Agentic Messaging.

Customer context. The pyCreateAgenticCustomerContext data transform builds the context handed to the agent. By default it populates FirstName, which is what the greeting uses. Add attributes here when you want the agent to personalise beyond a name. Everything this transform produces reaches a prompt, so it is also the place to enforce what must not.

7. Service cases and interaction resolution

For Agentic Voice, identification and verification both complete at the interaction level, and contact and account information is copied automatically onto any service case created during the call.

Two hooks are available for building an Agentic-aware experience:

Rule or property Type Use
pxIsCaseCreatedByAgent When rule True when the case originated in an Agentic channel.
pxActiveChannel Property Which channel started the interaction, with distinct values for Agentic Voice and Agentic Chat.

Use these to drive specialised views. A CSR opening a case that came off a voice call has a different starting point from one they typed themselves: identification and verification are already done, and the view can say so instead of prompting for them again.

Resolution. Agentic interactions resolve automatically when the call ends or when the interaction is escalated to a live agent. On resolution an interaction summary and feedback metrics are generated, both handled by pyHandleConversationEvent.

That summary is the first place to look during testing. Open the interaction instance list for your implementation class after a test call and you should see a resolved record with a summary attached. An interaction that resolves with nothing attached, or that never appears at all, usually points back at section 5 rather than at anything in the channel.

8. Quick reference

Step Where Key setting
Enable GenAI Dev Studio, Configure > System > Release > Toggles EnableGenerativeAI
Set the CRS endpoint Application Settings, Pega-ProcessEngine pyAgenticVoiceBaseURL, per production level
Set the Twilio SID Application Settings, Pega-ProcessEngine pyTwilioAccountSId, per environment
Wire the service package Service Package rule conversation Service Access Group
Create the channel Channels > Create new Channel > Agentic Voice Channel name, Agent speaking style
Choose the voice Channel Overview, Agent speaking style Language, STT provider, TTS provider, TTS voice
Provision a number Channel Configuration > Voice > Active numbers + Add Agent Number, up to five per Agent
Set failure behaviour Channel Configuration, Routing options Silence timeout, three response paths, Transfer to
Store recordings Channel, Call recording section S3 bucket URL, access key ID, secret access key
Declare the agents Data transform pySetSupportedAgents One agent per pyOASPurpose
Scope what callers can do Case processing agent Supported case types
Point at the interaction class pyInteraction tool, pyBeforeInteractionInitialization D_ApplicationSettings.InteractionClass
Tune identification Identify_SearchbyAgent, CustomerSearchForAgent Search attributes, extension points
Tune verification Verify_Agent, VerificationForAgent Verification fields
Shape the greeting context pyCreateAgenticCustomerContext Customer attributes exposed to the agent

9. Voice AI and Agentic Voice side by side

Both ship in 26.1.1 and both appear in the Create new Channel row. They solve different problems, and Voice AI is a separately licensed add-on, so this is a procurement question as well as a design one.

Concern Voice AI Agentic Voice
Who is on the call A CSR, with the AI as a co-pilot The agent, unassisted until escalation
How audio reaches Pega The Voice AI desktop app captures the stream from a softphone or WebRTC client; your CTI notifies it of call connect and disconnect Pega-provisioned number through the Call Response Service
Speech Real-time transcription of a human conversation, with a live transcript panel Speech-to-text in, text-to-speech out, configured per channel
What it produces Suggestions the CSR acts on: case types, form autofill, knowledge, script adherence, interaction summary, follow-up tasks Cases created and progressed directly by the agent
Identification Not part of Voice AI. The CSR verifies through the standard interaction Identify_Agent and Verify_Agent parallel flows on the interaction
Adding a journey Model and suggestion configuration A case type on the case processing agent, with a description
Where it fits Reducing handling time on calls a person takes Removing the call from the queue entirely

Both have picked up Pega GenAI along the way, so the split is not AI against no-AI. Voice AI in '26 does GenAI interaction summaries, follow-up task detection, and Knowledge Buddy answers during a live call. The difference is who the output is for: Voice AI hands it to the CSR, Agentic Voice acts on it. Running both is a reasonable target state, with Agentic Voice taking the calls that complete without a person and Voice AI assisting on everything that escalates.

10. References

Product documentation, Customer Service '26:

Academy:

Support and related forum posts:

If you have stood up an Agentic Voice channel, I would like to hear how you handled two things in particular. The first is the transfer path: which of SIP Refer and Legacy PSTN Transfer you went with and what that cost you in integration work. The second is the case processing agent’s supported case types, and specifically how much you had to rewrite those descriptions before the right case started reliably.