Skip to main content

Unsuccessful call attempts

When developing a script, keep in mind that the bot might not always be able to reach the client. For example, the client might not respond, or a technical error might occur.

By default, such calls are included in telephony statistics but are not handled by the script.

Events for unsuccessful calls​

JAICP provides two events that allow you to handle unsuccessful call attempts in your script:

  • onCallNotConnected: the client does not answer or the line is busy.

  • onCallNotConnectedTechnical: the call failed due to a technical error. Examples:

    • Incorrect number.
    • Connection problems.
    • No available lines in the telephone channel.

Enable events​

By default, the events are not available in the script. To enable these events, list them in the chatbot.yaml file:

additionalEvents:
- onCallNotConnected
- onCallNotConnectedTechnical

Example​

Consider the following example in which the bot failed to reach the client.

state: OnCallNotConnected
# The state is triggered by either of two events
event: onCallNotConnected
event: onCallNotConnectedTechnical
script:
$dialer.setCallResult("Failed to reach the client. Reason: " + $dialer.getCallNotConnectedReason());
var now = new Date();
$dialer.redial({
startDateTime: new Date(now.getTime() + 60 * 60000), // Another call in an hour
maxAttempts: 2, // 2 call attempts in total
retryIntervalInMinutes: 5 // 5-minute pause between attempts
});

If the onCallNotConnected or onCallNotConnectedTechnical event is triggered:

  1. The $dialer.getCallNotConnectedReason method returns the reason for the failed call: BUSY, NO_ANSWER, or TECHNICAL_ERROR.
  2. $dialer.setCallResult writes the reason into call campaign and session reports. For example: Failed to reach the client. Reason: NO_ANSWER.
  3. A redial is then scheduled for an hour later using the $dialer.redial method.