Skip to main content
Create, configure, and manage phone configurations for your watsonx Orchestrate agents with the ADK.

Prerequisites

Before you add phone configurations, make sure you have:
  • Installed and configured the watsonx Orchestrate ADK.
  • Created an agent in watsonx Orchestrate.
  • Access credentials for phone service providers.
  • Agent voice configuration set up for phone integration.

Creating phone configs

You can create phone configs directly using the ADK CLI or by importing a phone configuration file.
Create a phone config using a YAML, JSON, or Python file:
BASH
orchestrate phone import \
  --file <file_path>
Note: The import command creates a new phone config or updates an existing one based on the name. If a phone config with the same name exists, the command updates it using the new configuration.

Listing phone configs

Listing supported phone configuration types

To list all currently supported phone configuration types, run the following command:
BASH
orchestrate phone list

Listing phone configs

To list all phone configs, run the following command:
BASH
orchestrate phone list-configs \
  --type <channel_type> \
  --verbose

Getting phone config details

To retrieve details of a specific phone config, run the following command:
BASH
orchestrate phone get \
  --name <config_name> \
  --verbose
Note: Sensitive credential fields such as API keys, secrets, and client secrets appear as null or blank values in the output. This protects your credentials from accidental exposure.

Exporting phone configs

To export a phone config to a YAML file, run the following command:
BASH
orchestrate phone export \
  --name <config_name> \
  --output <output_path>
Exporting phone configs helps you:
  • Back up your phone config definitions
  • Migrate phone configs between environments
  • Track changes through version control
Note: Sensitive credential fields such as API keys, secrets, and client secrets appear as null or blank values in the exported file. This protects your credentials from accidental exposure. You need to manually add these values when importing the phone config into a new environment.

Deleting phone configs

To delete a phone config, run the following command:
BASH
orchestrate phone delete \
  --name <config_name> \
  --yes
Important: When you delete a phone config, all agent attachments are removed and the phone integration stops working immediately. You cannot undo this action, so make sure you want to remove the phone config before you proceed.

Phone Configuration Types

Genesys Audio Connector

Connect your agent to Genesys Cloud using the Audio Connector integration.

Prerequisites

  • Genesys Cloud account
  • Genesys Audio Connector integration created in Genesys Cloud
  • (Optional) User-generated credentials if you want to provide your own:
    • API Key (any string you choose)
    • Client Secret (any string you choose, must be base-64 encoded)
Important: Both API Key and Client Secret are user-generated values (not obtained from Genesys Cloud). If you don’t provide them, they will be automatically generated for you and displayed in the command output.If you choose to create your own credentials, you create these values yourself. The same values must be configured in both:
  1. Your ADK phone configuration
  2. Your Genesys Audio Connector integration settings (go to the Credentials tab and add these values)
The Client Secret must be base-64 encoded. The API Key has no encoding restrictions.

Configuration file formats

Define Genesys phone configs using YAML, JSON, or Python formats. Credentials are optional and will be auto-generated if not provided:
spec_version: v1
kind: phone
service_provider: genesys_audio_connector
name: "Customer Support Phone"
description: "Phone integration for customer support"
# security field is optional - credentials will be auto-generated if left blank

Configuration fields

Creating the phone config

Using import command:
BASH
orchestrate phone import \
  --file genesys_phone_config.yaml
Using CLI create command (with auto-generated credentials):
BASH
orchestrate phone create \
  --type genesys_audio_connector \
  --name "Customer Support Phone" \
  --description "Phone integration for customer support"
Output with auto-generated credentials:
[INFO] - ====================
[INFO] - GENERATED CREDENTIALS - SAVE THESE!
[INFO] - Please paste these credentials in:
[INFO] -   Genesys Audio Connector > Integration Settings > Credentials tab
[INFO] -
[INFO] - API Key: qG_pQts1PJKsOfBvDZQ3nA
[INFO] - Client Secret: 4yJmW/TSahU6TVbodqGlJw==
[INFO] -
[INFO] - ====================

[INFO] - Creating new phone config 'Customer Support Phone'...
[INFO] - Successfully created phone config 'Customer Support Phone'. id: 'abc-123-def-456'
Using CLI create command (with custom credentials):
BASH
orchestrate phone create \
  --type genesys_audio_connector \
  --name "Customer Support Phone" \
  --description "Phone integration for customer support" \
  --field api_key=your_api_key_here \
  --field client_secret=your_base64_encoded_secret_here
Credentials: Auto-generated credentials are recommended for simplicity and security. If you need to provide custom credentials, you can generate secure random strings using:
  • openssl rand -base64 32 (Linux/macOS) - automatically generates base-64 encoded output
  • [Convert]::ToBase64String((1..32 | ForEach-Object { Get-Random -Minimum 0 -Maximum 256 })) (PowerShell)
Important: Auto-generated credentials are only displayed once during creation. Save them immediately to configure in Genesys Cloud.

Managing agent attachments

Genesys Audio Connector uses agent attachments to connect your phone config to specific agents. When you attach an agent, you receive webhook configuration details that you’ll configure in Genesys Cloud.
Genesys Audio Connector Only: The attach, detach, and list-attachments commands are only used with Genesys Audio Connector configurations. SIP trunk configurations use phone number management instead (see SIP Trunk section below).
Attaching an agent
After creating the phone config, attach an agent to start receiving calls:
BASH
orchestrate phone attach \
  --name "Customer Support Phone" \
  --agent-name my_agent \
  --env live
Output:
Successfully attached agent 'my_agent' / environment 'live' to phone config.

Webhook Configuration:
  Genesys Audio Connect URI: wss://channels.example.com/tenants/sub123_inst456/
  Connector ID: agents/agent-789/environments/env-012/channels/genesys_audio_connector/abc-123/connect
Note: The agent must have voice configuration set up for phone integration to work properly.
Detaching an agent
To detach an agent/environment from a phone config:
BASH
orchestrate phone detach \
  --name "Customer Support Phone" \
  --agent-name my_agent \
  --env live
Listing attachments
To list all agent/environment attachments for a phone config:
BASH
orchestrate phone list-attachments \
  --name "Customer Support Phone"

Configuring Genesys Cloud

Use the webhook configuration values from the attach command in your Genesys Audio Connector settings:
  1. Log into your Genesys Cloud admin portal
  2. Navigate to AdminIntegrations
  3. Find your Audio Connector integration
  4. Go to the Configuration tab:
    • Enter the Audio Connect URI in the “Base Connection URI” field
  5. Go to the Credentials tab:
    • Add the api_key and client_secret values (either auto-generated from the creation output or your custom values)
  6. In Architect, configure your Inbound Call Flow:
    • Add an “Audio Connector” action
    • Enter the Connector ID in the connector ID field
Note: The webhook configuration is displayed when you attach an agent. You can also retrieve it later using orchestrate phone get --name "Customer Support Phone". However, credentials are only shown during initial creation for security reasons.

SIP Trunk

Connect your agent to SIP providers (e.g. Twilio).

Prerequisites

  • SIP trunk provider account
  • (Optional) SIP authentication credentials
  • Phone numbers provisioned with your SIP provider

Configuration file formats

Define SIP phone configs using YAML, JSON, or Python formats:
spec_version: v1
kind: phone
service_provider: sip_trunk
name: "SIP Phone Channel"
description: "Enterprise SIP trunk integration"
# Security is required - must explicitly set secure_trunking and authentication
security:
  secure_trunking: true  # Enable TLS/SIPS
  authentication: true   # Enable SIP authentication
  username: "your_sip_username"  # Required if authentication: true
  password: "your_sip_password"  # Required if authentication: true
# Optional: Custom SIP headers
custom_invite_headers:
  - name: "X-Custom-Header"
  - name: "From"
  - name: "To"
# Optional: Call behavior settings
put_caller_on_hold_on_transfer: true
send_provisional_response: true
# Optional: Error handling configuration
error_handling:
  fallback_sip_uri: "sip:fallback@domain.com"
  transfer_failure:
    reply_message: "Your call could not be transferred to a live agent. Please try again later. Thank you. Goodbye."
    disconnect_call: true
  call_failure:
    reply_message: "There's been a problem with the call. You're being transferred to a live agent now."

Configuration fields

Creating the phone config

You can create a SIP trunk phone config using either the import command or the CLI create command. Using import command:
BASH
orchestrate phone import \
  --file sip_phone_config.yaml
Using CLI create command: Basic SIP trunk (no security):
BASH
orchestrate phone create \
  --type sip_trunk \
  --name "My SIP Trunk" \
  --description "Basic SIP trunk without authentication" \
  --field 'security={"secure_trunking": false, "authentication": false}'
With authentication and secure trunking:
BASH
orchestrate phone create \
  --type sip_trunk \
  --name "My SIP Trunk" \
  --description "Fully secured SIP trunk" \
  --field 'security={"secure_trunking": true, "authentication": true, "username": "myuser", "password": "mypass"}'
With all options:
BASH
orchestrate phone create \
  --type sip_trunk \
  --name "SIP Phone Channel" \
  --description "Enterprise SIP trunk integration" \
  --field 'custom_invite_headers=[{"name": "X-Custom-Header"}, {"name": "From"}, {"name": "To"}]' \
  --field 'put_caller_on_hold_on_transfer=true' \
  --field 'send_provisional_response=true' \
  --field 'security={"secure_trunking": true, "authentication": true, "username": "USER", "password": "PASS"}' \
  --field 'error_handling={"fallback_sip_uri": "sip:username@domain.com", "transfer_failure": {"reply_message": "Please try again later.", "disconnect_call": true}, "call_failure": {"reply_message": "There has been a problem with the call."}}'
Output:
Successfully created phone config 'SIP Phone Channel'. id: 'abc-123-def-456'

Configure these values in your SIP trunk provider:
   Full SIP URI: 'sips:public.voip.dl.watson-orchestrate.ibm.com?x-tenant-id=subscription123_instance456'
Tip: For complex SIP configurations with many fields, using a YAML file with the import command is more readable and maintainable than using the CLI create command with JSON field values.

Getting SIP connection details

After creating a SIP trunk phone config, retrieve the SIP URI that your provider needs:
BASH
orchestrate phone get \
  --name "SIP Phone Channel"
Output:
Phone Config: SIP Phone Channel
  Type: sip_trunk
  ID: abc-123-def-456
  SIP URI: sips:public.voip.dl.watson-orchestrate.ibm.com?x-tenant-id=subscription123_instance456
Note: The SIP URI format is sips:FQDN?x-tenant-id=TENANT_ID where:
  • sips indicates secure SIP (TLS encryption)
  • The FQDN is environment-specific (e.g., public.voip.dl.watson-orchestrate.ibm.com)
  • The x-tenant-id parameter identifies your watsonx Orchestrate tenant

Managing phone numbers

SIP trunk configurations support phone number management, allowing you to associate specific phone numbers with your SIP config and optionally route them to specific agents.
SIP Trunk Only: Phone number management commands (add-number, list-numbers, update-number, delete-number) are only available for SIP trunk configurations. Genesys Audio Connector does not support these operations.
Adding a phone number
BASH
orchestrate phone add-number \
  --name "SIP Phone Channel" \
  --number "+15551234567" \
  --description "Customer support hotline" \
  --agent-name my_agent \
  --env live
Listing phone numbers
BASH
orchestrate phone list-numbers \
  --name "SIP Phone Channel"
Updating a phone number
BASH
orchestrate phone update-number \
  --name "SIP Phone Channel" \
  --number "+15551234567" \
  --description "Updated description" \
  --agent-name different_agent \
  --env draft
Deleting a phone number
BASH
orchestrate phone delete-number \
  --name "SIP Phone Channel" \
  --number "+15551234567" \
  --yes