web-dev-qa-db-fra.com

obtenir l'erreur "Action Erreur: aucun gestionnaire d'intention correspondant pour: null" lors de l'accès à l'URL webhook

J'essaie d'appeler webhook à partir du flux de dialogue et de ne pas obtenir de réponse de webhook, la réponse que je reçois de la section de réponse, que j'ai indiquée dans l'intention. J'ai également activé le Webhook pour chaque intention et également placé l'URL du Webhook, qui est générée à partir de CLI de Firebase dans la section URL d'exécution. Je joins les captures d'écran du journal Firebase et de la réponse JSON que nous voyons dans le flux de dialogue "show JSON" ainsi que dans le fichier index.js.Je suis bloqué pendant 2 semaines pour le résoudre. 

'use strict';

process.env.DEBUG = 'actions-on-google:*';
const { DialogflowApp } = require('actions-on-google');
const functions = require('firebase-functions');
let express = require('express');
let bodyParser = require('body-parser');

// Constants for Dialogflow Agent Actions
let app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json({type: 'application/json'}));

const BYE_RESPONSE = 'input.search';
const WELCOME = 'input.welcome';

exports.helloAssistant = functions.https.onRequest((req, res) => {
  console.log('Request headers: ' + JSON.stringify(req.headers));
  console.log('Request body: ' + JSON.stringify(req.body));
  const asst = new DialogflowApp({request: req, response: res});


  // Welcome
  function welcome(asst) {
    asst.ask('Want to search product or order history');
    asst.tell('hello Neeraj!');
  }

  // Leave conversation with SimpleResponse

  function byeResponse (asst) {
    app.post('/',function (req, res) {
      var myProduct = req.body.result.parameters["productParameter"];
      //let intent=asst.getIntent();
      var address ="https://ipadress/rest/v2/electronics/products/search";
      var address1="https://ipadress";
      switch(myProduct){
        case 'BYE_RESPONSE':
          req.post(address);
          break;

        case 'WELCOME':
          asst.tell('welcome!');
          break;

        default:
          req.post(address1);
          break;
      }

      asst.tell('We swear to serve the master of the Precious.');
    });
  }

  const actionMap = new Map();
  actionMap.set(WELCOME, welcome);

  actionMap.set(BYE_RESPONSE, byeResponse);
  actionMap.set(WELCOME, welcome);
  asst.handleRequest(actionMap);
});

. réponse json dans dialogflow

. log firebase

8
Neeraj Singh

Je viens de rencontrer exactement la même erreur et cela est dû au fait que j'ai oublié de mettre mon nom d'intention dans le champ Enter action name de la section Actions.

Donc, je passais null comme nom d'intention puisque je n'en ai pas spécifié.

Je ne l'ai compris que partrès soigneusementrelire https://developers.google.com/actions/dialogflow/first-app .

10
Topher Fangio

Merci à tous pour vos précieuses réponses. D'une manière ou d'une autre, je suis capable de corriger cette erreur nulle. En fait, j'avais activé "API Dialogflow V2" dans la section Version de l'API pour l'agent. Maintenant, je l'ai désactivé et cela fonctionne pour moi. 

2
Neeraj Singh

Pour chaque agent, il doit exister un gestionnaire unknown Intent permettant de gérer la situation inattendue, telle que null, etc.

'input.unknown': () => {
  // The default fallback intent has been matched, try to recover.
  // Define the response users will hear
  responseJson.speech = 'I\'m having trouble, can you try that again?';
  // Define the response users will see
  responseJson.displayText = 'I\'m having trouble :-/ can you try that again?';
  // Send the response to API.AI
  // response.json(responseJson);
  callback(null, responseJson);
}
1
Priyam Gupta