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

Prerequisites

Before you establish channels, make sure you have:
  • Installed and configured the watsonx Orchestrate ADK.
  • Created an agent in watsonx Orchestrate.
  • Access credentials for external services such as Twilio, Slack, and Genesys.

Creating channels

You can create channels directly using the ADK CLI or by importing a channel configuration file.
  • Importing from a file
  • Using CLI
Create a channel using a YAML, JSON, or Python file:
BASH
orchestrate channels import \
  --agent-name <agent_name> \
  --env <environment> \
  --file <file_path>
Note: The import command creates a new channel or updates an existing one based on the name. If a channel with the same name exists, the command updates it using the new configuration.

Channel configuration file formats

Define channels using YAML, JSON, or Python formats (env variables supported).
name: "WhatsApp Support"
description: "Customer support via WhatsApp"
channel: "twilio_whatsapp"
spec_version: "v1"
kind: "channel"
account_sid: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
twilio_authentication_token: "your_auth_token_here"
Note: YAML and JSON files support one channel specification per file. Python files support multiple channel instances in one file. You can define only one instance per channel type in each environment. For example, you can define both a Twilio WhatsApp channel and a Slack channel, but not two Twilio WhatsApp channels in the same environment.

Listing channels

Listing supported channel types

To list all currently supported channel types, run the following command:
BASH
orchestrate channels list

Listing channels for an agent

To list all channels configured for a specific agent and environment, run the following command:
BASH
orchestrate channels list-channels \
  --agent-name <agent_name> \
  --env <environment> \
  --type <channel_type> \
  --verbose

Getting channel details

To retrieve details of a specific channel, run the following command:
BASH
orchestrate channels get \
  --agent-name <agent_name> \
  --env <environment> \
  --type <channel_type> \
  --name <channel_name> \
  --verbose
Note: Sensitive credential fields such as authentication tokens, secrets, and passwords appear as null or blank values in the output. This protects your credentials from accidental exposure.

Exporting channels

To export a channel configuration to a YAML file, run the following command:
BASH
orchestrate channels export \
  --agent-name <agent_name> \
  --env <environment> \
  --type <channel_type> \
  --name <channel_name> \
  --output <output_path>
Exporting channel configurations helps you:
  • Back up your channel definitions
  • Migrate channels between environments
  • Track changes through version control
Note: Sensitive credential fields such as authentication tokens, secrets, and passwords 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 channel into a new environment.

Deleting channels

To delete a channel, run the following command:
BASH
orchestrate channels delete \
  --agent-name <agent_name> \
  --env <environment> \
  --type <channel_type> \
  --name <channel_name> \
  --id <channel_id> \
  --yes
Important: When you delete a channel, it stops receiving messages from the external platform immediately. You cannot undo this action, so make sure you want to remove the channel before you proceed.

Channel Types

Webchat

Use webchat to embed a chat widget in your website or web application.
Note: Webchat uses a dedicated workflow. Unlike other channel types, you manage webchat channels with a specialized command. Standard operations such as create, list-channels, get, export, and delete do not apply. For full integration steps, see Agent Integration Guide.

Quick start: Generating webchat embed code

To integrate webchat with your agent, use the dedicated webchat embed command:
BASH
orchestrate channels webchat embed \
  --agent-name my_agent \
  --env live
This command generates a HTML and JavaScript code that you can add to your website to embed the chat widget.

What you receive

The embed code includes:
  • A pre-configured chat widget
  • Automatic connection to your agent
  • Responsive design for desktop and mobile
  • Options to customize appearance and behavior

Next steps for webchat

For detailed instructions on:
  • Customizing the webchat appearance
  • Configuring advanced settings
  • Troubleshooting common issues
See the comprehensive Agent Integration Guide.

Twilio WhatsApp

Integrate your agent with WhatsApp Business using Twilio’s API.

Prerequisites

  • Twilio account with WhatsApp API access
  • Twilio Account SID
  • Twilio Authentication Token

Creating a Twilio WhatsApp channel

Use one of the following methods to define the channel: Using CLI:
BASH
orchestrate channels create \
  --agent-name my_agent \
  --env live \
  --type twilio_whatsapp \
  --name "WhatsApp Support" \
  --field account_sid=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
  --field twilio_authentication_token=your_auth_token_here
Using YAML:
name: "WhatsApp Support"
description: "Customer support via WhatsApp"
channel: "twilio_whatsapp"
spec_version: "v1"
kind: "channel"
account_sid: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
twilio_authentication_token: "your_auth_token_here"
Using Python:
from ibm_watsonx_orchestrate.agent_builder.channels import TwilioWhatsappChannel

whatsapp = TwilioWhatsappChannel(
    name="WhatsApp Support",
    description="Customer support via WhatsApp",
    account_sid="ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    twilio_authentication_token="your_auth_token_here"
)

Configuration requirements

FieldRequiredFormatDescription
account_sidYesStringYour Twilio Account SID
twilio_authentication_tokenYesStringYour Twilio Authentication Token

Twilio SMS

Enable SMS messaging for your agent using Twilio.

Prerequisites

  • Twilio account
  • Twilio Account SID
  • Twilio Authentication Token
  • Twilio phone number

Creating a Twilio SMS channel

Using CLI:
BASH
orchestrate channels create \
  --agent-name my_agent \
  --env live \
  --type twilio_sms \
  --name "SMS Support" \
  --field account_sid=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
  --field twilio_authentication_token=your_auth_token_here \
  --field phone_number=+1234567890
Using YAML:
name: "SMS Support"
description: "Customer support via SMS"
channel: "twilio_sms"
spec_version: "v1"
kind: "channel"
account_sid: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
twilio_authentication_token: "your_auth_token_here"
phone_number: "+1234567890"
Using Python:
from ibm_watsonx_orchestrate.agent_builder.channels import TwilioSMSChannel

sms = TwilioSMSChannel(
    name="SMS Support",
    description="Customer support via SMS",
    account_sid="ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    twilio_authentication_token="your_auth_token_here",
    phone_number="+1234567890"
)

Configuration requirements

FieldRequiredFormatDescription
account_sidYesStringYour Twilio Account SID
twilio_authentication_tokenYesStringYour Twilio Authentication Token
phone_numberNoStringTwilio phone number for SMS

Slack

Deploy your agent to Slack workspaces using your own Slack app.

Prerequisites

  • Slack workspace with admin access
  • Slack app created in your workspace
  • Slack API credentials:
    • Client ID
    • Client Secret
    • Signing Secret
    • Bot User OAuth Token for each team/workspace

Creating a Slack channel

Using YAML:
name: "Slack Support Bot"
description: "Support agent in Slack"
channel: "byo_slack"
spec_version: "v1"
kind: "channel"
client_id: "1234567890.1234567890"
client_secret: "your_client_secret_here"
signing_secret: "your_signing_secret_here"
teams:
  - id: "T01234567"
    bot_access_token: "xoxb-your-bot-token-here"
Using Python:
from ibm_watsonx_orchestrate.agent_builder.channels import SlackChannel, SlackTeam

slack = SlackChannel(
    name="Slack Support Bot",
    description="Support agent in Slack",
    client_id="1234567890.1234567890",
    client_secret="your_client_secret_here",
    signing_secret="your_signing_secret_here",
    teams=[
        SlackTeam(
            id="T01234567",
            bot_access_token="xoxb-your-bot-token-here"
        )
    ]
)

Configuration requirements

FieldRequiredFormatDescription
client_idYesStringSlack API client ID
client_secretYesStringSlack API client secret
signing_secretYesStringSlack API signing secret
teamsYesArray of SlackTeam objectsSlack teams or workspaces
teams[].idYesStringSlack team or workspace ID
teams[].bot_access_tokenYesStringBot user OAuth token

Genesys Bot Connector

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

Prerequisites

  • Genesys Cloud account
  • Genesys Bot Connector integration created
  • Genesys Cloud credentials:
    • Client ID
    • Client Secret
    • Bot Connector ID
    • Verification Token
    • API URL

Creating a Genesys Bot Connector channel

Use one of the following methods to define the channel: Using YAML:
name: "Genesys Contact Center Bot"
description: "Agent for Genesys Cloud"
channel: "genesys_bot_connector"
spec_version: "v1"
kind: "channel"
client_id: "12345678-1234-1234-1234-123456789abc"
client_secret: "your_client_secret_here"
verification_token: "your_verification_token_here"
bot_connector_id: "87654321-4321-4321-4321-cba987654321"
api_url: "https://api.mypurecloud.com"
Using Python:
from ibm_watsonx_orchestrate.agent_builder.channels import GenesysBotConnectorChannel

genesys = GenesysBotConnectorChannel(
    name="Genesys Contact Center Bot",
    description="Agent for Genesys Cloud",
    client_id="12345678-1234-1234-1234-123456789abc",
    client_secret="your_client_secret_here",
    verification_token="your_verification_token_here",
    bot_connector_id="87654321-4321-4321-4321-cba987654321",
    api_url="https://api.mypurecloud.com"
)

Configuration requirements

FieldRequiredFormatDescription
client_idYesStringGenesys Cloud client ID
client_secretYesStringGenesys Cloud client secret
verification_tokenYesStringSecret value from Genesys Credentials tab
bot_connector_idYesStringIntegration ID from Genesys Bot Connector
api_urlYesStringGenesys API Server URI. For example: https://api.mypurecloud.com

Understanding event URLs

When you create a channel, the ADK provides an event URL. External platforms use this URL to send messages to your agent.

Event URL format

https://channels.{instance_environment}/tenants/{tenant_id}/agents/{agent_id}/environments/{env_id}/channels/{channel_type}/{channel_id}/events

Viewing event URLs

The event URL is displayed when you create or import a channel:
BASH
orchestrate channels import \
  --agent-name my_agent \
  --env live \
  --file channel.yaml
Output:
Creating new channel 'WhatsApp Support'...
Successfully created channel 'WhatsApp Support'. id: 'abc123'
Event URL: https://channels.example.com/tenants/tenant123/agents/agent456/environments/env789/channels/twilio_whatsapp/abc123/events

Best practices

Security

  • Store credentials securely using environment variables or a secret manager
  • Avoid committing credentials to version control
  • Rotate credentials on a regular schedule
  • Use different credentials for draft and live environments

Environment management

  • Test each channel in the draft environment before moving to live
  • Apply consistent naming conventions across environments
  • Document channel configurations so your team can review and reuse them