Я столкнулся с загадочной ошибкой в моем приложении.(Google Assistant + Fulfillment, написанный на NodeJS, работающем на Firebase) Мое приложение о покупке бензина.Если вы хотите купить что-то еще, например, яблоки, вас попросят.Если вы захотите купить что-то еще во второй раз, например, 7 слив, он перенаправит вас к намерению по умолчанию.Вот как это должно работать.Но вместо этого (см. Скриншот)
Странно то, что вкладка «запрос, ответ и ошибка» пуста (для других случаев использования они никогда не бывают пустыми)
Внутри функций firebase я не вижу журнала ошибок, но в журнале GCP я вижу одну ошибку:
{
insertId: "1fmi9ryg1rc8hud"
labels: {
channel: "preview"
querystream: "GOOGLE_USER"
source: "JSON_RESPONSE_VALIDATION"
}
logName: "projects/xxxxxx/logs/actions.googleapis.com%2Factions"
receiveTimestamp: "2019-06-11T17:10:13.712416274Z"
resource: {
labels: {
action_id: "actions.intent.TEXT"
project_id: "xxxxxx"
version_id: ""
}
type: "assistant_action"
}
severity: "ERROR"
textPayload: "MalformedResponse: ErrorId: 113661de-882c-4238-a67a-f324359004a4. Failed to parse Dialogflow response into AppResponse because of invalid platform response. : Could not find a RichResponse or SystemIntent in the platform response for agentId: d7069fa0-5691-4104-848a-56f78e3007c4 and intentId: "
timestamp: "2019-06-11T17:10:13.699816952Z"
trace: "projects/xxxxxxx/traces/ABwppHEdFw2KY23BcC1eOVrIkgUCPC0ae2Sa39ixR7r1mUexFYRhdj2pH-BHNkXky1s9cgLGSw"
}
И причина, по которой он таинственный, заключается в том, что, например, если я скажу «7 слив» сначала, то он принимает, а 7 яблок - «второй».намерение по умолчанию.Зачем?Понятия не имею.Если я наберу произвольный текст наподобие 3 sadjhb, он также запросит ответ и во второй раз перейдет к стандартному назначению.Я знаю, что это не правильное описание проблемы, но я чувствую, что она не работает согласованно.
Я также могу скопировать код выполнения этого намерения, но сейчас я думаю, что это не имеет к этому никакого отношения.Я надеюсь, что один из вас сталкивался с таким типом поведения раньше.Спасибо за чтение!
РЕДАКТИРОВАТЬ:
У меня есть одно резервное намерение, которое должно запускаться каждый раз, когда намерение не найдено И реализация намерения
app.intent('service.addgasoline.getinput', (conv, params) => {
if (params.value && params.unittype) {
const outmessage = 'So buy gas for - ' + params.value + ' ' + params.unittype;
conv.ask(outmessage);
conv.ask(new Suggestions(['Yes', 'No']));
} else {
conv.ask('How much gas you want to buy? For example, you can say 1 L or 1 gallon.');
}
});