Marking a flow as a customer care escalation workflow
Passis_customercare_escalation=True in the @flow decorator:
Python
Python
Escalation workflows are hidden from the default tools list. To include them, run
orchestrate tools list --include-escalation.Input schema
Customer care escalation flows useCustomerCareEscalationInput as their input schema. The agent runtime populates both fields automatically before invoking the flow.
string
required
The current channel identifier, for example
genesys_bot_connector or sip.string
required
The escalation condition that triggered the transfer, for example
human_request or frustration.Configuring a Transfer End node
A Transfer End node lists every channel that can receive a live-agent handoff. For each channel, you configure the messages shown to the customer and any metadata the channel requires.Python
Configuring a channel — configure_channel()
Call configure_channel() once per supported channel to register the channel and set its availability messages.
TransferChannelType | string
required
The channel to configure. Accepts a
TransferChannelType enum value (for example, TransferChannelType.GENESYS_BOT_CONNECTOR) or its string equivalent ("genesys_bot_connector").string
required
Message shown to the customer when a live agent is available.
Message shown to the customer when no live agent is available.
TransferChannelType:
By default, only
genesys_bot_connector is enabled in the Transfer End node configuration. sip and genesys_audio_connector are provided as opt-in samples. Uncomment the relevant section in your flow definition to enable them.Python
Setting built-in channel properties — map_output_variable()
Some channels have platform-defined properties that must be populated. SIP requires a service_desk_info object that carries the transfer URI and method. You do not declare this property — configuring the SIP channel adds its schema automatically. Populate its fields with map_output_variable().
TransferChannelType | string
required
The target channel. Accepts a
TransferChannelType value or its string equivalent.string
required
Dot-separated path to the property field, for example
"service_desk_info.uri".string
required
The value to assign. How this string is interpreted depends on
assignment_type.string
Controls how
expression is read. Defaults to "pyExpression".map_output_variable() returns the node, so calls can be chained.
Example — SIP channel:
Python
Adding custom channel properties — add_custom_property()
For channel-specific routing data that you define yourself, chain add_custom_property() calls after configure_channel(). This method declares the property in the channel’s schema and populates it in one step.
string
required
The property name.
string
A fixed value for the property. Use
value for static data.string
A flow expression evaluated at runtime. Use
expression for dynamic data.value or expression, not both.
The
summary and condition_id fields are added to transfer_metadata automatically by the runtime. You do not need to declare or map them.Python
Full example
The following example builds a complete customer care escalation flow. It checks the incoming channel, routes to a condition-specific message, and hands off to a live agent via the Transfer End node.Python
examples/flow_builder/customer_care_escalation. Run the following command from the wxo-clients/ directory to compile it to JSON:
generated/customer_care_escalation_flow.json and can be imported via the watsonx Orchestrate UI or CLI.
Flow Builder UI equivalent
This pattern corresponds to the Customer Care Escalation template in the Flow Builder UI. To access it, select New flow → Templates → Customer Care Escalation. The node layout, branch conditions, and channel configuration match what the ADK produces.Related resources
- Agent escalation to a live agent
- Building agentic workflows
CustomerCareEscalationInput— standardised input schema@flowdecorator parameters

