Laydown

Allows for intelligent machine detection and optional delivery of recorded messages when there is a need to determine whether a machine or a live person answered the call. The primary use case for this action is in scripts for agentlessClosed Contacts made without a live agent for tasks such as one-way delivery of information or messages.. voice interactions using Personal Connection.

When a call is answered, Laydown analyzes the audio from the contact to determine whether an answering machine or a live person has answered the call. You can then initiate different actions based on the results of the analysis. For example, you could deliver one recorded message to a machine and a different recorded message to a live person, or you could deliver a message to a machine and implement custom script behavior for a live person.

Once the message begins playing, the action continues to analyze the interaction. If additional audio is detected from the contact, Laydown aborts the sequence and resumes when the contact is silent. This continues until an entire sequence is completed or the value in the SequencePlayAttemptsMaximum property is reached.

 

Audio files must be uncompressed WAV files with the following properties:

  • Bit rate—64 kbps
  • Audio sample size—8 bit
  • Channels—1 (mono)
  • Audio sample rate—8 kHz
  • Audio format—CCITT μ-Law

Supported Script Types

Phone

Properties

Property

Details

LivePersonSequence Contains a string of one or more prompts played when a live person is detected. The default value for this string is empty. If no string is entered, the action returns immediately when a live person is detected and no sequence is played. This is useful if you only want to deliver your message to an answering machine.

LivePersonPhrase

Allows you to document the text of the audio file delivered as part of the LivePersonSequence.

MachineSequence Contains a string of one or more prompts played when an answering machine is detected. The default value for this string is empty. If no string is entered, the action returns immediately when an answering machine is detected and no sequence is played. This is useful if you only want to deliver your message to a live person.
MachinePhrase

Allows you to document the text of the audio file delivered as part of the MachineSequence.

ClearDigits When a contact presses a key on their telephone keypad, the generated DTMFClosed Signaling tones that are generated when a user presses or taps a key on their telephone keypad. tone is stored in a buffer. When the ClearDigits property is set to True (the default value), that buffer is cleared when the action begins. Otherwise, the action would immediately detect a DTMF tone and invoke the OnDigit or OnDTMF branch even if the key press was associated with an earlier action. The default value is True.
DetectDTMF Determines whether DTMFClosed Signaling tones that are generated when a user presses or taps a key on their telephone keypad. tones are processed while the action is running. The default value is True, which means that DTMF tones are processed if the contact presses a key and the OnDigit or OnDTMF branch of the script is triggered. If the value is set to False, DTMF tones are not processed even if the contact presses a key. For example, you might play a message at the point a contact is placed in queue which says, "An agent will be with you shortly. To leave the queue at any time, press the star key". The OnDigit or OnDTMF branch might then offer the contact the option to leave a voicemail message.
InitialDetectionTimeout Specifies the length of time the action will initially take to determine whether the call has been answered by an answering machine or a live person. Enter a numeric value of seconds between 10 and 300. The default value is 10. If no determination is made and the specified value is exceeded:
  • The string value in the MachineSequence property is played and then the OnInitialDetectionTimeout branch is triggered. If the string is empty, then:
  • The string value in the LivePersonSequence property is played and then the OnInitialDetectionTimeout branch is triggered. If the string is empty, then:
  • The OnInitialDetectionTimeout branch is triggered immediately.
MachineEndDetectionTimeout Specifies the maximum length of time Laydown will spend listening for the end of an answering machine message when a machine is detected. When Laydown detects the end of the machine's message, the MachineSequence value is played. If the timeout is exceeded before the machine's message ends, the OnMachineEndTimeout branch is triggered. Enter a numeric value of seconds between 10 and 300. The default value is 20.
UtteranceMinimum The number of seconds the contact must speak for Laydown to classify the sound as an utterance. The value should be long enough to ignore static or clicks and short enough to catch actual speech utterances. Enter a numeric value between 0.1 and 0.5 seconds. The default value is 0.2.
UtteranceEndSilence The minimum number of seconds of silence required for Laydown to detect the end of an utterance. Enter a numeric value between 0.1 and 0.5 seconds. The default value is 0.1.
LivePersonEndSilence The minimum number of seconds of silence required for Laydown to determine that an utterance was made by a live person. This value should be long enough to ignore a phrasing pause on answering machine messages and short enough to recognize the gap following a "Hello?" greeting. Enter a numeric value between 0.5 and 2.0 seconds. The default value is 0.6.
MachineMinimumWithoutAgent The minimum number of seconds required following a series of contact utterances for Laydown to determine that the call was answered by a machine. Enter a numeric value between 2.0 and 10.0 seconds. The default value is 3.0.
MachineEndSilence The minimum number of seconds of silence required for LAYDOWN to determine that an answering machine message has ended. When a non-empty value exists in the AnsweringMachineSequence property, that value is played when the number of seconds specified here is reached. Enter a numeric value between 1.0 and 5.0 seconds. The default value is 1.0.
DebugPattern This property is used for Studio diagnostic procedures and should not be changed unless you are instructed to do so by NICE CXone. The default value is none.
CustomerVoiceThreshold Defines the contact volume level for detection of the contact's voice versus background noise. The property accepts numeric values between 100 and 100000 units (a measurement similar to decibels). The default value is 17000.
SequencePlayAttemptsMaximum Defines the maximum number of times Laydown will attempt to play a sequence if a live person or answering machine is detected. When this value is reached, the entire sequence is played even if audio is detected from the contact. Larger values can increase your telephony expense, since the sequence will potentially restart a great number of times. See related information in the Output Variables section. Enter a numeric value between 1 and 20. The default value is 9.

Branches

Branch

Details

Default Path taken unless the script meets a condition that requires it to take one of the other branches. It is also taken if the action's other branches are not defined.
OnError Path taken when there is an unexpected problem (for example, poor connectivity, syntax errors, and so forth).

OnMachineCompleted

Path taken when Laydown detects an answering machine. If the MachineSequence property contains a non-empty value, the sequence is played and then this branch is taken.

OnLivePersonCompleted

Path taken when Laydown detects a live person. If the LivePersonSequence property contains a non-empty value, the sequence is played and then this branch is taken.

OnDigit

Path taken when Laydown detects that a digit has been pressed. If the action is playing a sequence when the digit is detected, sequence play is aborted.

OnInitialDetectionTimedout

Path taken when the value in the InitialDetectionTimeout property is exceeded.

OnMachineEndTimedout

Path taken when the value in the MachineEndDetectionTimeout property is exceeded.

Output Variables

These variables are assigned during execution of the Laydown action and are available for reference and use when the action completes.

Variable

Details

LaydownError Contains a condensed explanation of the problem that resulted in triggering the OnError branch.

LaydownState

Contains one of these descriptions of the action's state at the time of the problem that triggered the OnError branch:

  • Detecting initial utterance
  • Detecting initial answering machine end
  • Detecting subsequent answering machine end
  • Playing live-person sequence to live-person
  • Playing live-person sequence following detection time-out
  • Playing answering machine sequence to answering machine
  • Playing answering machine sequence following detection time-out
SequencePlayAttempts Contains the number of sequence-plays the action executed. If the number is less than the value in the SequencePlayAttemptsMaximum property, the sequence played and your message was delivered successfully without being interrupted by contact audio. If the number equals the value in the SequencePlayAttemptsMaximum property, the message was not delivered successfully.

Global Variables

These variables are assigned during disconnect processing only when the Laydown action is aborted, such as by a remote disconnection of the call.

Variable

Details

laydownState Contains a description of the action's state at the time of the remote disconnect. Possible descriptions are the same as those for the LaydownState variable described in the previous section.

laydownSequencePlayAttempts

Contains the number of sequence-plays the action executed prior to the remote disconnect.