How agent triggering works
AI for Service doesn’t select an Artemis agent by name. Three bindings link the campaign to the agent:- The AI for Service campaign links to an Artemis project through a project ID and an API key.
- The campaign selects one Artemis voice connection, a voice channel connection in that project.
- The voice connection binds to a specific deployment (deploymentId). That deployment is the agent that runs when the call connects.
Prerequisites
Before configuring the campaign, confirm the following:- Access to the CCAI Campaigns module in AI for Service.
- An Artemis domain, environment, project ID, and a project-scoped API key (
abl_...). - A deployed agent in that project.
- At least one voice channel connection in that project and environment, bound to the target deployment, with outbound calling enabled.
1
Configure the Artemis project
Complete this configuration first. AI for Service reads these values when the campaign links to the project.
-
Create or select the project. Note the Project ID, for example
019dd2a0-d7cf-7854-a3c1-eaa78c6d8d6d. - Build and deploy the agent that handles campaign calls. Deploying the agent to a target environment (dev, staging, or prod) produces a deployment. Campaign calls trigger the deployment, not the draft agent.
-
Create a voice channel connection and bind it to the deployed agent:
- Supported voice channel types include korevg (Voice Gateway, primary), genesys_audio_connector, voice_twilio, voice_pipeline, and voice_realtime (any isVoice type in the manifest).
- Configure the caller ID, phone numbers, and carrier/trunk (BYOC SIP or the shared carrier).
- Enable outbound calling (config.outboundCall must not be false). Inbound calling is independent (config.inboundCall).
- Bind the connection to the deployment so the connection carries a deploymentId. This binding determines which agent answers.
-
Generate a project API key (
abl_...) with access to the project. AI for Service uses this key to authenticate to the internal campaign endpoints. These endpoints require API-key authentication (requireApiKeyAuth) and thechannel_connection:readandworkflow:executepermissions to list connections.
GET /api/internal/campaigns/voice-connections?projectId=...&environment=... returns the connection with a non-null voiceAppSid, a resolved trunkName, dialoutUrl, and the bound deploymentId.2
Configure the CCAI campaign in AI for Service
- Go to CCAI > Campaigns.
- Click Create New Voice Campaign, or edit an existing voice campaign. Learn more.
- Select the dialing mode Agentless, and turn on Enable Campaigns for Artemis.
-
Click Edit Settings and enter the Artemis linkage:
- Click Save.
- In the campaign’s caller ID or voice connection section, select the voice connection whose bound deployment is the target agent. This selection (the connectionId) determines the agent.
- Configure the contact list, DNC settings, scheduling, and dispositions as usual, then save or start the campaign.
projectId and environment.Supported dialing modes
Campaigns for Artemis supports one dialing mode, Agentless. The agent handles the call end-to-end; Start Flow and experienceFlow aren’t used in V2. In Agentless mode, the outbound tag carries the complete userInfo object, so standard and custom contact fields reach the Runtime session. For details, see Read Campaign Contact Data in an Artemis Runtime Session.What reaches the agent
AI for Service places campaign context in the Jambonz call tag. Artemis copies this context into the Runtime session atsession.data.values.customerData, where the agent reads it with dotted-path interpolation:
customerData:
Call status relay back to AI for Service
After a successful dial, AI for Service registers the call throughPOST /api/internal/campaigns/call-context (stored in Redis with a 24-hour TTL). As the call progresses, Runtime relays call:status events back to AI for Service, normalizing raw states to campaign values such as trying, early-media, in-progress, busy, no-answer, completed, failed, and machine_detected.
Runtime posts these values to the CCAI campaign status endpoint (/campaign/api/v1/trigger/callStatus, and the progressive-agent variant). Runtime requires the CAMPAIGN_API_BASE_URL setting to know where to send these updates.
Verify with a test call
- Create a test contact with distinctive, non-production values.
- Confirm the campaign points to a non-production project or environment and the intended voice connection.
- Start the campaign against one test record.
- Confirm the call reaches the expected deployment or agent, the one bound to the selected connection.
- Inspect the Runtime session or trace and locate
data.values.customerData. Confirm the expected contact fields appear undercustomerData.userInfo. - Confirm the agent’s responses resolve the intended
{{customerData...}}paths. - Confirm call-status updates appear in CCAI.
Don’t add raw customer data to application logs to verify interpolation. Use the authorized session/trace view according to the project’s PII policy.
Troubleshooting
CCAI validation messages
Security and privacy
Store the Artemis API key securely. Never share it in tickets, screenshots, or logs. If the key is shared, update the campaign settings. Campaign contact data can contain PII. Include only the fields the conversation needs, avoid exposing internal identifiers, and apply the project’s guardrail and PII policies before using customer data in model-visible prompts or spoken responses.Related topics