# Bandwidth::MachineDetectionConfiguration ## Properties | Name | Type | Description | Notes | | ---- | ---- | ----------- | ----- | | **mode** | [**MachineDetectionModeEnum**](MachineDetectionModeEnum.md) | | [optional][default to 'async'] | | **detection_timeout** | **Float** | The timeout used for the whole operation, in seconds. If no result is determined in this period, a callback with a `timeout` result is sent. | [optional][default to 15] | | **silence_timeout** | **Float** | If no speech is detected in this period, a callback with a 'silence' result is sent. | [optional][default to 10] | | **speech_threshold** | **Float** | When speech has ended and a result couldn't be determined based on the audio content itself, this value is used to determine if the speaker is a machine based on the speech duration. If the length of the speech detected is greater than or equal to this threshold, the result will be 'answering-machine'. If the length of speech detected is below this threshold, the result will be 'human'. | [optional][default to 10] | | **speech_end_threshold** | **Float** | Amount of silence (in seconds) before assuming the callee has finished speaking. | [optional][default to 5] | | **machine_speech_end_threshold** | **Float** | When an answering machine is detected, the amount of silence (in seconds) before assuming the message has finished playing. If not provided it will default to the speechEndThreshold value. | [optional] | | **delay_result** | **Boolean** | If set to 'true' and if an answering machine is detected, the 'answering-machine' callback will be delayed until the machine is done speaking, or an end of message tone is detected, or until the 'detectionTimeout' is exceeded. If false, the 'answering-machine' result is sent immediately. | [optional][default to false] | | **callback_url** | **String** | The URL to send the 'machineDetectionComplete' webhook when the detection is completed. Only for 'async' mode. | [optional] | | **callback_method** | [**CallbackMethodEnum**](CallbackMethodEnum.md) | | [optional][default to 'POST'] | | **username** | **String** | Basic auth username. | [optional] | | **password** | **String** | Basic auth password. | [optional] | | **fallback_url** | **String** | A fallback URL which, if provided, will be used to retry the machine detection complete webhook delivery in case `callbackUrl` fails to respond | [optional] | | **fallback_method** | [**CallbackMethodEnum**](CallbackMethodEnum.md) | | [optional][default to 'POST'] | | **fallback_username** | **String** | Basic auth username. | [optional] | | **fallback_password** | **String** | Basic auth password. | [optional] | ## Example ```ruby require 'bandwidth-sdk' instance = Bandwidth::MachineDetectionConfiguration.new( mode: null, detection_timeout: 15, silence_timeout: 10, speech_threshold: 10, speech_end_threshold: 5, machine_speech_end_threshold: 5, delay_result: false, callback_url: https://myServer.example/bandwidth/webhooks/machineDetectionComplete, callback_method: null, username: mySecretUsername, password: mySecretPassword1!, fallback_url: https://myFallbackServer.example/bandwidth/webhooks/machineDetectionComplete, fallback_method: null, fallback_username: mySecretUsername, fallback_password: mySecretPassword1! ) ```