We support below two types of machine detection.


1) Synchronous machine detection  


Machine detection will take place and once the machine is detected the call will either  hang up or proceed as per the URL that is invoked by the call(like answer_URL, action, callback, hangup, etc,.)

--> If the machine_detection parameter is set to "TRUE" and the machine is detected at the beginning of the call, the URL that is invoked by the call (answer_url, hangup_url, etc) will be "POSTED" with the machine_detection parameter set to "TRUE".

If the customer wants to change the call flow with respect to the machine detection status, the customer can give 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.

--> In case you want to hang up the call when "machine" is detected, you can set the machine_detection parameter to "hangup". With this, it will hang up the call and also 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, then the method of detection that will be executed is synchronous.


2) Asynchronous machine detection


Machine detection will take place in the background and the call flow can be changed as soon as the machine is detected.


--> Set machine_detection_url parameter while firing outbound call API.

--> Plivo will detect machine in the background and invoke the machine_detection_url with a set of parameters which can be used to take the desired action.

--> When the machine detection is defined 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 and based on the call flow, the action further is taken.