Возникла проблема во время повторного вызова намерения после отклонения привязки учетной записи Google - PullRequest
0 голосов
/ 18 июня 2020

Ниже представлена ​​структура моего чат-бота.
Цель 1 (результат): Здесь пользователь запросит результат. Он выполнит привязку учетной записи и проверит регистрацию идентификатора электронной почты на своем сервере, независимо от того, зарегистрирован он или нет через API, и покажет результат.

app.intent('result', (conv,{date})=>{ 
var userDate =  date;     
var apiUserEmailID=  conv.data.apiUserEmailID;   
var apiUserKey= conv.data.apiUserKey;    
console.log("apiUserKey : "+apiUserKey); 
if (typeof (apiUserKey) == "undefined" || apiUserKey == "" || apiUserKey == null) 
{
 conv.ask(new SignIn('To get your account details'));// Intent that starts the account linking flow.  
}
else
{   
 conv.ask("Welcome to quote generator"+userDate+" Session : "+apiUserKey); 
**//Flow should come here when ask for the next time after Google account linking**
}  
}); 

app.intent('user_Login', (conv, params, signin) => {// Create a Dialogflow intent with the `actions_intent_SIGN_IN` event.  
if (signin.status === 'OK') 
{ 
const payload = conv.user.profile.payload;    
conv.data.apiUserEmailID=payload.email; //Session Creation    
var url = apiPathAJ+'/CheckAccess?uid=payload.email';  
var login_response="",login_Userkey="";    
return getaxiosURL(url).then(response => {  
response.data.map(loginObj=>{    
if(loginObj.Status=="TRUE")
{login_response = "1";
login_Userkey=loginObj.UserKey;}
else     
{login_response = "0";  
login_Userkey="0";}    
}); 
if(login_response=="1")
  {
   conv.data.apiUserKey=login_Userkey;   
   conv.ask("You are a registered User with Our Service. Here is your result *******");
  }
  else 
  { 
    conv.ask("You are not a registered User. Would you like to proceed with the Service registration.");
  }
}).catch (error => {
login_response="2";
console.log("Something is wrong in login_response("+login_response+") !! " + error);   
});

}
else 
  {
    conv.ask(`I won't be able to save your data, but what do you want to do next?`);
  }  
});

Ниже приведен пример разговора.
Пользователь: Я хочу увидеть свой результат за 25 июня 2019 г.
ChatBot: ..... (Будет запрошена привязка учетной записи)
Пользователь: Да
Чат-бот: вы являетесь зарегистрированным пользователем нашего Сервиса.
Пользователь: Я хочу увидеть свой результат на 25 июня 2019 г.

Другой пример разговора.
Пользователь: Я хочу увидеть свой результат для 25 июня 2019 г.
ChatBot: ..... (он запросит привязку учетной записи)
User: Нет
ChatBot: Я не смогу сохранить ваши данные, но что вы хотите делать дальше?
Пользователь: Я хочу увидеть свой результат за 25 июня 2019 г.

В обоих разговорах, если пользователь задаст один и тот же вопрос (последний комментарий пользователя) или мы можем его сказать попадает в намерение (результат), я получаю это исключение, и диалог существует.

Ошибка: Dialogflow IntentHandler не найден для намерения: user_Login-result в функции. (/srv/node_modules/actions-on-google/dist/service/dialogflow/dialogflow.js:141:31) в Generator.next () при выполнении (/ srv / node_modules / actions-on-google / dist / service / dialogflow / dialogflow. js: 19: 58) по адресу process._tickDomainCallback (internal / process / next_tick. js: 229: 7)

1 Ответ

1 голос
/ 18 июня 2020

Сообщение об ошибке предполагает, что намерение "result-dailyPrediction" совпадает с намерением в Dialogflow, но не зарегистрирован обработчик с app.intent('result-dailyPrediction').

Вы должны либо зарегистрировать такой обработчик намерений, либо или выяснить, почему вы достигли этого намерения, и исправить его (если его там не должно быть).

...