Missed Call Alert

Overview

The missed_call_alert callflow allows users to receive an email notification for unanswered inbound calls that do not result in a voicemail message.

An inbound call in the scope of this module is defined as one that originates external to the Kazoo system, as opposed to calls between users/devices in the Kazoo account.

It should be noted that if a call is forwarded to an external device, such as a cell phone, that has a voicemail system, Kazoo will not be able to determine if a voicemail message is left.

Moreover, if the call forwarding is configured without requiring the user to press a digit to accept forwarded calls then Kazoo will consider the call answered regardless of whether answered by the user or the external voicemail system.

Data Schema

Validator for the missed call alert callflow's data object

Key Description Type Default Required
recipients One or more specific email addresses, Kazoo user ids or a combination of both array(object) [] false
recipients.[].id The email address/user ID or the list of email addresses/user IDs based on sepecified type string, array(string) true
recipients.[].type Controls if the ID of this object is a Kazoo user ID or an email address enum("user", "email") true

Description

The Kazoo callflow executor allows modules to register functions that should be executed when the call is terminated (on CHANNEL_DESTROY or CHANNEL_DISCONNECTED events). After modules registered themself, each registered module will be executed serially.

As a call is processed by the callflow executor, it will observe the event stream for the channel and set a flag on the Kazoo call object if a successful bridge is performed. The callflow voicemail module will also set a flag on the Kazoo call object when a voicemail message is successfully left.

When missed_call_alert executed as part of a callflow or preflow, will determine if the call originated as an inbound call to the account. If the call was inbound, then it will register itself as a termination function with the callflow executor.

When this function is invoked from the calllflow executor it will inspect the Kazoo call object, specifically the two said above flags. If neither are set to true this function will then publish a new AMQP message to the notification exchange. This message will be received by the Kazoo teletype which will process a email template for missed calls, and send the email.

Configuring Recipients

The data object of this module can define one or more specific email addresses, Kazoo user ids or a combination of both. If a Kazoo user is provided, then the currently configured user email address is used. If no recipients are provided, then it will be assumed to be configured on the email template.

Example Callflow

{
    "flow":{
        "data":{
            "recipients":[
                {
                    "type":"user",
                    "id":"bdc3a4b7e3a5405a9aa8a0f9c6b76997"
                },
                {
                    "type":"email",
                    "id":[
                        "support@test.com",
                        "john@doe.com"
                    ]
                }
            ]
        },
        "module":"missed_call_alert",
        "children":{
            "_":{
                "data":{
                    "id":"3e3f1217bee3ba0aa7496ca61fb4ae8f",
                    "can_call_self": false,
                    "timeout": 20,
                    "delay": 0,
                    "strategy": "simultaneous"
                },
                "module":"user",
                "children":{
                    "_":{
                        "data":{
                            "id":"f3f32d9692652565e155e931a54ab0a8",
                            "action":"compose",
                            "callerid_match_login":false,
                            "interdigit_timeout":2000,
                            "max_message_length":500,
                            "single_mailbox_login":false
                        },
                        "module":"voicemail",
                        "children":{}
                    }
                }
            }
        }
    },
    "numbers":[
        "+15554441111"
    ]
}

Edit this page here