Answering Machine Detection
amd_not_available
Person or phone number is not available. Examples:
- The person you are trying to reach is not available
- The number you have dialed is not in service. Please check the number and try your call again. Thank you.
amd_no_voicemail
Person has no voicemail, or voicemail is not able to receive new message Examples:
- Sorry. But the person you called has a voicemail box that has not been set up yet.
- I'm sorry, the person you were trying to reach has a voicemail box that has not been set up yet. Please try your call again later. Goodbye.
amd_answering_machine
Answering machine was detected Examples:
- Thank you for calling Some Name. Your call may be recorded or monitored for quality purposes.
- This call may be recorded for quality assurance purposes
- This call may be monitored or recorded for. Quality and training purposes. For more on how we handle your personal...
amd_ivr
IVR (Interactive Voice Response) was detected Examples:
- For Technical Support press 1.
- Thank you for calling Company Name. For customer support. Please Press 2
- Please choose from the following menu option
amd_unusual_am
Not regular answering machine, or we are not sure, that it's an answering machine Examples:
- I do want to hear what you have to say, but hold on.
amd_voicemail
Voicemail was detected in the phrase Examples:
- At the tone, please record your message.
- Hi, this is Name. Please leave a message.
- Thanks for calling Some Name. Please leave a message.
amd_thank_you_for_calling
Phrases like:
- Thank you for calling [Some Nane]
- Thank you for calling [Some Nane]. How can I help you?
Typically most of answering machine starts with such phrases, but humans answers with such phrases too.
Beta features and NER entities
node ivr { do { var idx = 0; for (var button in #messageGetData("amd_ivr_press")) { var press = button.value; var direction = #messageGetData("amd_ivr_direction")[idx]?.value; #log({press: press, direction: direction}); set idx = idx + 1; } // your code here wait *; } }
For the phrase: For support press 1. For sales press 2
will log:
[sandbox] info {"press":"1","direction":"support"}
[sandbox] info {"press":"2","direction":"sales"}
amd_ivr_press
Button, that can be pressed in the IVR menu Examples:
- For marketing opportunities. Press [amd_ivr_press].
- Press [amd_ivr_press] now to talk to the operator. Values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *, #
amd_ivr_direction
An open set of directions for the IVR, like support
, billing
and others..
Connecting to the application
Just add "amd:v2"
in dashaapp file section nlu.skills
. It will look like:
{ "formatVersion": "2", "dialogue": { "file": "main.dsl" }, "nlu": { "language": "en-US", "skills": [ "amd:v2" ], "customIntents": { "file": "nlu.json" } }, "nlg": { "type": "phrases", "file": "phrasemap.json", "signatureFile": "phrasemap.json" }, "name": "my app name" }
Example of using in the DSL
context { input endpoint: string; output ivr_status: string? = null; } start node root { do //actions executed in this node { #connectSafe($endpoint); // connecting to the phone number which is specified in index.js that it can also be in-terminal text chat wait *; } transitions // specifies to which nodes the conversation goes from here { not_available: goto not_available on #messageHasIntent("amd_not_available"); logic: goto logic on true priority -1; } } node not_available { do { set $ivr_status = "not_available"; exit; } }