Skip to main content

$caila.checkVocabulary

Checks every word from the argument array for belonging to the vocabulary of the specified NLU engine.

Syntax

The method accepts an array of objects with the following properties:

KeyDescriptionAllowed valuesDefault value
wordThe word to be checked.An arbitrary string.
langThe language that the word belongs to.en — English.
ru — Russian.
The project NLU language.
engineThe engine that will perform the check.aot — the engine based on the АОТ service.
pymorphy — the engine based on the pymorphy2 library.
aot.
caution
The pymorphy engine does not support English.
$caila.checkVocabulary([
{word: "technology", lang: "en"},
{word: "технология", lang: "ru", engine: "pymorphy"},
{word: "zxcvbnm,./"}
]); // => [true, true, false]

How to use

An example use of this method is to check whether unrecognized user requests contain at least one vocabulary word. If they don’t, such requests may be treated as spam.

state: CatchAll
event!: noMatch
script:
# $parseTree.words is an array of all words contained within the request.
# Convert them from strings to objects having the required format.
var words = $parseTree.words.map(function(string) {
return {word: string};
});

# Check each word whether it belongs to the language vocabulary.
var wordsInVocab = $caila.checkVocabulary(words);

# Increment the counter of unrecognized requests
# only if at least one word was found in the vocabulary.
if (wordsInVocab.indexOf(true) > -1) {
$session.catchAllCounter = $session.catchAllCounter + 1 || 1;
}
# Transfer to the agent when the counter exceeds the threshold.
if: $session.catchAllCounter > 3
go!: /Switch
random:
a: I’m sorry, I didn’t catch that. Could you repeat, please?
a: I didn’t quite get it. Would you mind repeating that for me?
a: Could you say that again? I can’t hear you very well.