For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Log inSign up
Support
GuidesReference
GuidesReference
    • Core
      • Overview
    • Agents
      • Overview
      • AgentBase
      • AgentServer
      • Configuration
      • ContextBuilder
      • DataMap
      • FunctionResult
      • Helper Functions & Utilities
      • LiveWire
      • PomBuilder
      • Prefabs
      • SkillBase
      • SkillManager
      • SkillRegistry
      • Skills
      • SwaigFunction
      • SwmlBuilder
      • SWMLService
    • RELAY
      • Overview
      • Actions
      • Call
        • ai
        • aiHold
        • aiMessage
        • aiUnhold
        • amazonBedrock
        • answer
        • bindDigit
        • clearDigitBindings
        • collect
        • connect
        • denoise
        • denoiseStop
        • detect
        • disconnect
        • echo
        • hangup
        • hold
        • joinConference
        • joinRoom
        • leaveConference
        • leaveRoom
        • liveTranscribe
        • liveTranslate
        • on
        • pass
        • pay
        • play
        • playAndCollect
        • queueEnter
        • queueLeave
        • receiveFax
        • record
        • refer
        • sendDigits
        • sendFax
        • stream
        • tap
        • transfer
        • unhold
        • userEvent
        • waitFor
        • waitForEnded
      • Constants
      • Events
      • Message
      • RelayClient
      • RelayError
    • REST Client
      • Overview
      • Addresses
      • Calling
      • ChatResource
      • Compat
      • Datasphere
      • Fabric
      • ImportedNumbersResource
      • Logs
      • LookupResource
      • MFA
      • Number Groups
      • Phone Numbers
      • Project
      • PubSubResource
      • Queues
      • Recordings
      • Registry
      • RestClient
      • RestError
      • Short Codes
      • SIP Profile
      • Verified Callers
      • Video
LogoLogoSignalWire Docs
Log inSign up
Support
On this page
  • Parameters
  • Returns
  • Example
RELAYCall

detect

|View as Markdown|Open in Claude|
Was this page helpful?
Edit this page
Previous

disconnect

Next
Built with

Start audio detection on the call. Detects answering machines, fax tones, or DTMF digits. Returns a DetectAction that resolves on the first detection result or when the operation finishes.

The DetectAction resolves on the first detection result, not when the detect operation finishes. This means await action.wait() returns as soon as a result is available.

This method emits calling.call.detect events. See Call Events for payload details.

Parameters

detect
Record<string, unknown>Required

Detection configuration object.

detect.type
stringRequired

Detection type. Valid values:

  • "machine" — answering machine detection (AMD)
  • "fax" — fax tone detection (CNG/CED)
  • "digit" — DTMF digit detection
detect.params
Record<string, unknown>

Type-specific detection parameters.

timeout
number | undefined

Maximum seconds to run the detector before stopping.

controlId
string | undefined

Custom control ID. Auto-generated if not provided.

onCompleted
(event: RelayEvent) => void | Promise<void>

Callback invoked when detection completes.

Returns

Promise<DetectAction> — An action handle with stop() and wait() methods.

Example

1import { RelayClient } from '@signalwire/sdk';
2
3const client = new RelayClient({
4 project: process.env.SIGNALWIRE_PROJECT_ID!,
5 token: process.env.SIGNALWIRE_API_TOKEN!,
6 contexts: ['default']
7});
8
9client.onCall(async (call) => {
10 await call.answer();
11
12 // Answering machine detection
13 const action = await call.detect(
14 { type: 'machine', params: {} },
15 { timeout: 30 }
16 );
17 const event = await action.wait();
18
19 const detectResult = event.params.detect as Record<string, unknown> ?? {};
20 if (detectResult.type === 'machine') {
21 console.log('Answering machine detected');
22 await call.hangup();
23 } else {
24 console.log('Human answered');
25 const playAction = await call.play([{ type: 'tts', text: 'Hello! This is a call from...' }]);
26 await playAction.wait();
27 }
28});
29
30await client.run();