Skip to main content
Use this pattern when a conversation should open with a clear first message before the user asks for help.

Concept

A welcome message is the first assistant-owned turn in a session. In ABL, the most direct way to author it is ON_START, because ON_START runs when the runtime initializes the session, before the first user message is processed. Use a welcome message to orient the user, name the service, and make the first action obvious. Keep it short. If the same agent also has a FLOW, the top-level ON_START response behaves like a startup prelude: it can be emitted and the entry flow can continue. If an ON_START branch is selected, that branch owns the startup turn and the runtime can pause before the flow continues.

Minimal working example

How it works

The runtime initializes the session, executes ON_START, emits the authored response when the channel supports proactive startup delivery, and then enters the flow entry step. The welcome response is also written into assistant history when it is delivered, so later reasoning can see what the user has already been told. The first flow response should not repeat the welcome. Use it to ask the first useful question or show the first menu.

Common variations

Add buttons or rich content

Use actions when the channel can render buttons and you want the user to choose a common path immediately.

Verification

Start a new session and confirm that the welcome appears before the first user message. In traces, look for dsl_on_start followed by dsl_respond with source: on_start. If the flow also runs, the flow response should appear after the welcome.

Common mistakes

Troubleshooting

If the welcome does not appear, check the channel contract. Some channels suppress proactive startup payloads and allow ON_START only for side effects. If the flow response repeats the welcome, move the greeting into ON_START and make the flow step ask the next question.

Production readiness checklist

  • Keep the welcome short enough for every channel.
  • Include a useful next step, not only a greeting.
  • Use rich content only when the target channel supports it.
  • Verify traces for dsl_on_start and dsl_respond.
  • Confirm the first flow step does not duplicate the startup message.