Different types of machine detection are used on a call based on the use case.


Synchronous machine detection:


“machine _detection” and “machine_detection_url” parameters comes hand in hand with answer machine detection, when the machine detection is defined either as true or hang up and if the machine_detection_url is not defined in the outbound call API, then the method of detection that will be executed is synchronous


Note: This method is used when the initiator of the call is more than 50% sure that the machine would be answering the call.


Asynchronous machine detection:


 When the machine detection is defined either as true and if the machine_detection_url is defined with a different call flow(say to trigger a transfer a call API) in the outbound call API, then the method of detection that will be executed is asynchronous


Note: This method is used when the initiator of the call is unaware whether a machine would be answering the call or a human.


Useful documentation:


https://www.plivo.com/docs/api/call/#asynchronous-machine-detection

https://www.plivo.com/docs/getting-started/machine-detection/