> 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. # executeRpc > Execute a generic RPC method on a call. [rpc-dial]: /docs/server-sdks/reference/typescript/agents/function-result/rpc-dial [rpc-ai-message]: /docs/server-sdks/reference/typescript/agents/function-result/rpc-ai-message [rpc-ai-unhold]: /docs/server-sdks/reference/typescript/agents/function-result/rpc-ai-unhold [functionresult]: /docs/server-sdks/reference/typescript/agents/function-result Execute a generic RPC method on a call. This is the low-level interface for cross-call communication. For common operations, prefer the specific helpers [`rpcDial()`][rpc-dial], [`rpcAiMessage()`][rpc-ai-message], and [`rpcAiUnhold()`][rpc-ai-unhold]. ## **Parameters** **`opts`** `object` — required RPC configuration object. --- **`opts.method`** `string` — required RPC method name (e.g., `"dial"`, `"ai_message"`, `"ai_unhold"`). --- **`opts.params`** `Record` Parameters for the RPC method. --- **`opts.callId`** `string` Target call ID for the RPC command. --- **`opts.nodeId`** `string` Target node ID for the RPC command. --- ## **Returns** [`FunctionResult`][functionresult] -- `this`, for chaining. ## **Example** ```typescript {4} import { FunctionResult } from '@signalwire/sdk'; const result = new FunctionResult() .executeRpc({ method: 'custom_method', params: { key: 'value' }, }); ``` > Execute a generic RPC method on a call.