То, что вы пытаетесь сделать, довольно расплывчато, но я думаю, что у вас есть несколько подходов.
Отступление с контекстом
Вы можете создатьНесколько резервных намерений в системе, хитрость заключается в том, что каждый из них должен иметь разные контексты, как это требуется для входных контекстов.В этих случаях, если нет совпадения с вводом текста, он найдет запасной вариант, для которого установлены все входные контексты.
Используйте @sys:any
Entity
Пустая обучающая фраза буквально означает «ничего не говори», поэтому одного слова с соответствующим контекстом недостаточно.Вместо этого вы можете установить для обучающей фразы только параметр с @sys:any
Entity.
Вероятно, это наименьшая вероятность того, что вы на самом деле будете делать то, что вы хотите, но может быть полезно, если есть компоненты фразы, которую выхочу захватить.
Отправить событие
Поскольку вы вызываете Dialogflow с помощью API, если вы хотите форсировать определенное намерение, вы можете отправить событиевместо того, чтобы отправлять текст, он будет соответствовать намерению, для которого установлено это событие. Событие имеет тенденцию иметь приоритет над другими правилами, чтобы определить, какое намерение вызывать.
Сообщение, которое вы отправите на detectIntent
с данными о событиях может выглядеть примерно так:
const request = {
session: sessionPath,
queryInput: {
event: {
name: 'event_personal_MINE',
parameters: {
whatever: 'value'
},
languageCode: 'en-US',
},
},
};
(параметры не обязательны)