> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # aiMessage > Send a message to an active AI agent session. [ai]: /docs/server-sdks/reference/typescript/relay/call/ai Send a message to an active AI agent session on the call. Use this to inject context, instructions, or simulated user input into a running AI conversation. > **Note** > > This method requires an active AI session started via > [`ai()`][ai]. Calling it without > an active session has no effect. ## **Parameters** **`messageText`** `string | undefined` The message text to send to the AI agent. --- **`role`** `string | undefined` The role of the message sender. Valid values: * `"user"` -- simulate user input * `"system"` -- send a system-level instruction * `"assistant"` -- inject an assistant response --- **`reset`** `Record | undefined` Reset configuration. Allows resetting AI state such as the conversation history or functions. --- **`globalData`** `Record | undefined` Update the global data accessible to the AI and SWAIG functions. --- ## **Returns** `Promise>` -- Server response confirming the message was sent. ## **Example** ```typescript {19} import { RelayClient } from '@signalwire/sdk'; const client = new RelayClient({ project: process.env.SIGNALWIRE_PROJECT_ID!, token: process.env.SIGNALWIRE_API_TOKEN!, contexts: ['default'] }); client.onCall(async (call) => { await call.answer(); // Start an AI agent const action = await call.ai({ prompt: { text: 'You are a helpful assistant.' }, }); // Inject a system message after 10 seconds await new Promise((resolve) => setTimeout(resolve, 10_000)); await call.aiMessage({ messageText: 'The caller is a VIP customer. Be extra helpful.', role: 'system', }); await action.wait(); }); await client.run(); ``` > Send a message to an active AI agent session.