Загадочная ошибка в выполнении Google DialogFlow V2 (симулятор Google Assistant, пустой ответ, запрос, вкладка ошибок) - PullRequest
2 голосов
/ 11 июня 2019

Я столкнулся с загадочной ошибкой в ​​моем приложении.(Google Assistant + Fulfillment, написанный на NodeJS, работающем на Firebase) Мое приложение о покупке бензина.Если вы хотите купить что-то еще, например, яблоки, вас попросят.Если вы захотите купить что-то еще во второй раз, например, 7 слив, он перенаправит вас к намерению по умолчанию.Вот как это должно работать.Но вместо этого (см. Скриншот) flow

Странно то, что вкладка «запрос, ответ и ошибка» пуста (для других случаев использования они никогда не бывают пустыми) Empty request tab Empty response tab Empty errors tab

Внутри функций 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"  
}

Full error log

И причина, по которой он таинственный, заключается в том, что, например, если я скажу «7 слив» сначала, то он принимает, а 7 яблок - «второй».намерение по умолчанию.Зачем?Понятия не имею.Если я наберу произвольный текст наподобие 3 sadjhb, он также запросит ответ и во второй раз перейдет к стандартному назначению.Я знаю, что это не правильное описание проблемы, но я чувствую, что она не работает согласованно.

Я также могу скопировать код выполнения этого намерения, но сейчас я думаю, что это не имеет к этому никакого отношения.Я надеюсь, что один из вас сталкивался с таким типом поведения раньше.Спасибо за чтение!

РЕДАКТИРОВАТЬ:

У меня есть одно резервное намерение, которое должно запускаться каждый раз, когда намерение не найдено fallback intent definition И реализация намерения

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.');
    }

});

1 Ответ

1 голос
/ 19 июня 2019

Я только что исправил похожую проблему в своем приложении.

Проблема в моем случае заключалась в обучающих фразах намерения в DialogFlow.Разрешенные значения сущностей были не совсем такими, как ожидалось.

Например, целая фраза «7 слив» может быть ошибочно разрешена как значение, а не просто «7» в ней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...