Skip to content

Clarify execute_rpc contract and add schema coverage for documented RPC helpers #96

Description

@grandcamel

Summary

The documented FunctionResult.execute_rpc(), rpc_dial(), rpc_ai_message(), and rpc_ai_unhold() helpers emit a SWML execute_rpc verb, but that verb is absent from the SDK's bundled signalwire/signalwire/schema.json and from the public SWML verb reference.

The SDK-level documentation clearly presents these helpers as intended for call screening and cross-call coordination. What remains unclear is whether the emitted wire shape is a stable public contract or an SDK implementation detail, and which production constraints apply.

This is a public contract/schema question, not an account-specific support incident. No account identifiers or credentials are involved.

Evidence

The current schema contains no execute_rpc, rpc_dial, or rpc_ai_message definition. The unit tests pin the generated JSON shape but do not establish the live-platform contract.

Requested clarification / outcome

  1. Confirm whether the documented FunctionResult RPC helpers are supported for production use and covered by the SDK's normal backward-compatibility and deprecation policy.
  2. Clarify whether the emitted execute_rpc SWML shape is itself a stable public contract, or an implementation detail that applications should not emit directly.
  3. If it is public, add it to the bundled schema and the SWML verb reference—or document why it is intentionally excluded.
  4. Document the supported method names and important operational constraints: required call states, timeouts, concurrency/rate limits, and unsupported combinations.

Intended flow

The production use case is:

  1. Hold an inbound AI call.
  2. Use rpc_dial() to start a separately handled outbound leg.
  3. Coordinate the two calls with rpc_ai_message() or global data.
  4. Release the original call with rpc_ai_unhold().

Related schema-versus-live-platform question: #88.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions