Convai Actions
Convai characters can do more than talk: they can perform physical actions in your scene. The action system lets the LLM that drives a Convai character emit structured commands (move to a target, pick up an object, wait, run a custom animation, etc.) which your gameplay code then executes.
This guide is split into three phases, each one introducing the next layer of capability:
Phase 1 — Default Actions
Get the bot moving in the level with zero scripting.
Enable actions on the chatbot, register objects, set up locomotion, run on a NavMesh.
Phase 2 — Custom Actions
Add a new action with no parameters and wire it to a Blueprint event.
The FConvaiAction template, OnActionReceived event, HandleActionCompletion.
Phase 3 — Parameterized Actions
Add typed parameters, connectors, choices, and use the live editor preview.
Parameter types (Auto / Reference / String / Number / Bool / Enum), Get Param As X accessors, the rendered-string preview, abort vs. completion.
Mental model
The action system has three moving parts you'll see throughout the guide:
The chatbot's
Environment— a struct on the chatbot component that declares the world the bot can act on:Actions— the list ofFConvaiActiontemplates the bot is allowed to use.Objects— props in the scene the bot can target (cube, lever, door, …).Characters— NPCs / the player. These are sent to the server at/connecttime as the bot's "action contract".
bEnableActions— a per-chatbot toggle that decides whether theEnvironmentis sent at all. Off = conversational-only. On = the bot can emit action sequences.The action-response pipeline — when the bot decides to act, the server sends back a list of
FConvaiResultActions. The plugin matches each one against your declared templates, parses out parameter values, resolves any actor references againstEnvironment.Objects/.Characters, and firesOnActionReceivedEvent_V2with the parsed sequence. Your handler runs the action and calls back intoHandleActionCompletionorAbortActionSequenceto advance / retry / abort.
What's new in V2
If you've used Convai actions before this overhaul, here's what changed at a glance:
Action templates moved from raw
FString("Wait For <time in seconds>") to a structuredFConvaiActionwith typedParameters, optionalConnector, optionalChoices/EnumType.A live, two-way rendered preview in the Details panel shows exactly what the LLM will receive — and you can edit either side.
Action results unify everything into
Parameters: TMap<Name, FConvaiResultParam>with always-best-effort string / number / bool / actor-ref coercion. LegacyRelatedObjectOrCharacterandConvaiExtraParamsare still populated as deprecated mirrors so existing handlers keep working.
If you have legacy graphs, follow the migration notes in Phase 3.
Last updated
Was this helpful?