Skip to main content
This guide explains how to configure the AI for Service (CCAI) outbound voice campaign to place calls through the Agent Platform (Artemis) and trigger a specific deployed agent for each call. It reflects the current Campaigns for Artemis implementation. For information about how the agent reads campaign contact data during a call, see Read Campaign Contact Data in an Artemis Runtime Session.

How agent triggering works

AI for Service doesn’t select an Artemis agent by name. Three bindings link the campaign to the agent:
  1. The AI for Service campaign links to an Artemis project through a project ID and an API key.
  2. The campaign selects one Artemis voice connection - a voice channel connection in that project.
  3. The voice connection binds to a specific deployment (deploymentId). That deployment is the agent that runs when the call connects.
The deployment bound to the selected voice connection determines which agent answers the campaign call. To change the triggered agent, either change the deployment bound to that connection or select a different connection.

Key implementation references

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 or Studio side

Complete this configuration first. AI for Service reads these values when the campaign links to the project.
  1. Create or select the project. Note the Project ID - for example, 019dd2a0-d7cf-7854-a3c1-eaa78c6d8d6d.
  2. 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.
  3. 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.
  4. 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 the channel_connection:read and workflow:execute permissions 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

  1. Go to CCAI > Campaigns.
  2. Select Create New Voice Campaign, or edit an existing voice campaign.
  3. Select the dialing mode Agentless, and turn on Enable Campaigns for Artemis.
  4. Select Edit Settings and enter the Artemis linkage:
  1. Select Save.
  2. 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.
  3. Configure the contact list, DNC settings, scheduling, and dispositions as usual, then save or start the campaign.
The environment entered must match the environment where the deployment and voice connection reside. The endpoints filter connections by projectId and environment.

Supported dialing modes

Campaigns for Artemis supports one dialing mode: Agentless - The agent handles the call end-to-end. Start Flow or experienceFlow isn’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 the Contact-data guide.

What reaches the agent

AI for Service places campaign context in the Jambonz call tag. Artemis copies this context into the Runtime session at session.data.values.customerData, where the agent reads it with dotted-path interpolation:
Example customerData:

Call status relay back to AI for Service

After a successful dial, AI for Service registers the call through POST /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

  1. Create a test contact with distinctive, non-production values.
  2. Confirm the campaign points to a non-production project or environment and the intended voice connection.
  3. Start the campaign against one test record.
  4. Confirm the call reaches the expected deployment or agent - the one bound to the selected connection.
  5. Inspect the Runtime session or trace and locate data.values.customerData. Confirm the expected contact fields appear under customerData.userInfo.
  6. Confirm the agent’s responses resolve the intended {{customerData...}} paths.
  7. 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.