speak_on_enter says a line out loud, chat_on_enter posts one to the meeting chat. Both are set when you create the session — neither is an action, and neither can be changed once the bot is on its way.
They are independent and can be used together.
Post to Chat on Arrival
Setchat_on_enter — typically a recording disclosure. It takes 1-4000 characters:
- Delivered at most once. Duplicate provider callbacks and service restarts can never repost it.
- Independent of
speak_on_enter. Both can be set on one session, and the chat message posts first: it does not wait for text-to-speech or avatar startup. - Works with an assistant attached. An assistant owns the voice, not the chat.
- Echoed back as
config.chat_on_enter,nullwhen unset. - Appends a
bot.chat_on_enter_deliveredevent to the session’s event history and the WebSocket stream. There is no new webhook event type.
On a platform with no meeting chat — Webex, or a URL the service does not recognise — create is rejected up front with
422 unsupported_capability rather than accepting a message that could never be posted. You find out when you ask for it, not by discovering later that nothing was said.Speak on Arrival
Setspeak_on_enter to the text the bot should say as soon as it is admitted, with no speak call of your own. It sits alongside voice, barge_in and summarize_on_end, and applies to every session.
With an attached Telnyx AI Assistant,
speak_on_enter is delivered through the assistant’s output page rather than the bot mic, and only once the assistant reaches connected — so the greeting waits for assistant startup instead of landing the instant the bot is admitted. It is still delivered at most once. chat_on_enter, by contrast, posts immediately and does not wait on the assistant.Where These Live on the Session
speak_on_enter is sent flat on the create request and read back nested under config on the session object, along with voice, barge_in and summarize_on_end. Sending them wrapped in config is rejected with 400 invalid_request: body: Unrecognized key(s) in object: 'config'. chat_on_enter follows the same rule.
Related
- Join a Meeting — the rest of the create request
- Chat — post to chat during the meeting
- Speak — speak during the meeting
- Telnyx AI Assistants — what an attached assistant takes over
- Session Events —
bot.chat_on_enter_delivered