Skip to main content
Use this pattern when web chat, voice, messaging, or async channels need different startup behavior.

Concept

Channels do not all deliver startup content the same way. Some support proactive ON_START messages. Some suppress startup payloads and allow ON_START only for side effects such as setting values or delegating. A good channel-specific welcome separates the authored conversation welcome from launcher text, placeholder text, and channel-native connection messages. In ABL, use startup context and ON_START BRANCHES to vary the welcome content. Use channel configuration for launcher copy that appears outside the conversation transcript.

Minimal working example

How it works

The runtime copies the channel name into channel_name, evaluates branches in order, and selects the first matching response. The voice branch includes a VOICE payload. The non-voice branch includes markdown.

Common variations

Keep launcher copy separate

Launcher welcome text, placeholder text, and connecting status text are channel configuration. The ABL ON_START response is conversation content.

Verification

Start sessions for each target channel. Confirm the conversation transcript receives the ABL welcome only on channels that support proactive startup delivery. For suppressed channels, confirm ON_START side effects still run and traces include dsl_on_start_skipped.

Common mistakes

Troubleshooting

If a welcome appears twice in web chat, check whether the SDK launcher message and ABL ON_START response say the same thing. If a voice greeting is too long, move details into the next turn and keep startup speech short.

Production readiness checklist

  • Test each deployed channel separately.
  • Keep launcher copy and conversation copy distinct.
  • Use VOICE payloads for voice-specific phrasing.
  • Provide text fallback for rich content.
  • Verify suppression behavior for async channels.