События диалогов
Виды обрабатываемых событий
onInputDialogBegin
Данный обработчик вызывается перед началом работы элемента ввода данных, с которым связана переменная (с указанным кодом или вообще любая). Если в сценарии бота есть несколько элементов ввода, связанных с указанной переменной, этот обработчик будет вызываться для каждого из них.
С помощью этого обработчика можно настраивать работу элемента, устанавливая различные свойства в объекте context.output.result:
context.output.result.promptText— строка, которая будет отправлена пользователю в качестве запроса ввода.context.output.result.suggestedActions— массив строк или объектов CardAction, которые будут показаны пользователю в виде кнопок.context.output.result.unrecognizedPromptText— строка, которая будет отправлена пользователю в случае нераспознанного ввода.
| TypeScript | |
|---|---|
variableCode— код переменной, с которой связан элемент ввода (см. VariableCodeType). При указанииnull,undefined,"*"или пустой строки обработчик вызывается для любой переменной (см. OptionalParameter).callback— функция, которая будет вызвана в начале работы элемента ввода.botEvent— объект события, который можно использовать в теле функции (см. InputDialogBeginEvent).
Пример
Продолжим рассматривать пример с названиями магазинов. В этом обработчике переопределяется текст запроса названия магазина, если ранее при обработке события распознавания интента было найдено несколько подходящих вариантов.
onInputDialogBeforeInterruption
Данный обработчик вызывается непосредственно после выполнения пользователем ввода. В теле функции можно переопределить возможность прерывания работы элемента. Обработчик вызывается только для элементов ввода, с которыми связана переменная с указанным кодом.
С помощью этого обработчика можно настраивать работу элемента, устанавливая свойство в объекте context.output.result:
context.output.result.allowInterruptions— поле, в которое можно записать логическое значение (true/false), которое определит, можно ли прерывать работу текущего элемента ввода. Например, можно запретить прерывать работу элемента ввода распознаванием интента в прерывающем сценарии, если ввод пользователя полностью совпал с одним из заранее известных вариантов ответов.
onInputDialogBeforeInterruption
| TypeScript | |
|---|---|
variableCode— код переменной, с которой связан элемент ввода (см. VariableCodeType). При указанииnull,undefined,"*"или пустой строки обработчик вызывается для любой переменной (см. OptionalParameter).callback— функция, которая будет вызвана после выполнения ввода пользователем.botEvent— объект события, который можно использовать в теле функции (см. InputDialogBeforeInterruptionEvent).
onInputDialogValueRecognized
Данный обработчик вызывается после успешного распознавания ввода пользователя. В теле функции можно переопределить результат распознавания и переопределить текст, который будет отправлен в ответ. Обработчик вызывается только для элементов ввода, с которыми связана переменная с указанным кодом.
С помощью этого обработчика можно проводить дополнительную обработку распознанного значения, устанавливая различные свойства в объекте context.output.result:
context.output.result.recognized— логическое значение (true/false), которое переопределяет, было ли распознано введенное пользователем значение.context.output.result.outputValue— переопределенное распознанное значение, которое будет записано в переменную, связанную с элементом ввода.
Например, введенное пользователем значение можно сравнивать с заранее известным списком допустимых значений и записывать результат в связанную переменную только в том случае, если значение найдено в списке.
| TypeScript | |
|---|---|
variableCode— код переменной, с которой связан элемент ввода (см. VariableCodeType). При указанииnull,undefined,"*"или пустой строки обработчик вызывается для любой переменной (см. OptionalParameter).callback— функция, которая будет вызвана после успешного распознавания ввода пользователя.botEvent— объект события, который можно использовать в теле функции (см. InputDialogValueRecognizedEvent).
Пример
В этом примере при каждом вводе пользователем названия магазина происходит нечеткий поиск по списку всех магазинов, после чего поведение элемента ввода меняется в зависимости от результатов поиска.
onUserInputProcessed
Данный обработчик вызывается после любого ввода пользователя. Выполнение обработчика можно связать с ожидаемым результатом обработки пользовательского ввода, при котором он будет выполняться, для этого нужно указать параметр processingResult (см. UserInputProcessedResultType).
При обработке события доступен объект с результатами попытки распознавания, результатами валидации и строкой ввода пользователя.
С помощью обработчика этого события можно, например, обратиться к LLM/GPT и сгенерировать с помощью нее ответ для пользователя.
| TypeScript | |
|---|---|
processingResult— результат обработки введенных пользователем данных (см. UserInputProcessedResultType). При указанииnull,undefined,"*"или пустой строки обработчик вызывается при любом результате (см. OptionalParameter).callback— функция, которая будет вызвана после ввода пользователя.botEvent— объект события, который можно использовать в теле функции (см. UserInputProcessedEvent).
Пример
В этом примере мы подписываемся на событие обработки пользовательского ввода при любом нераспознанном вводе пользователя и передаем этот ввод в Yandex GPT. На основании ответа от Yandex GPT мы формируем ответное сообщение для пользователя.