We support two types of machine detection: synchronous and asynchronous.
Synchronous machine detection
If the machine_detection parameter is set to "true" and a machine is detected at the beginning of the call, Plivo will POST the URL that's invoked by the call (answer_url or hangup_url) with the machine_detection parameter set to "true."
If you want to change the call flow based on machine detection status, you can specify a condition. For example, if the machine_detection parameter is posted as “true” in the answer_url then another set of XML will be fetched which will change the call flow.
If you want to hang up the call when a machine is detected, set the machine_detection parameter to "hangup." The call will be hung up and the API will POST the machine_detection attribute set as "true" to the hangup_url.
If the machine_detection_url is not defined in the outbound call API, Plivo will use synchronous machine detection.
Asynchronous machine detection
With asynchronous machine detection, detection takes place in the background. The call flow can be changed as soon as the machine is detected.
To use this method, set the machine_detection_url parameter when firing the outbound call API. Plivo will detect a machine in the background and invoke the machine_detection_url with parameters to take the desired action.
When machine_detection is set to "true" and the machine_detection_url is defined with a different call flow (for example to trigger a transfer a call API) in the outbound call API, Plivo will use asynchronous machine detection.
Read more about machine detection in our documentation.