5
votes

Impossible de lire le contexte dans Dialogflow Fulfillment (soudainement indéfini)

Nous avons créé un agent Dialogflow utilisant les fonctions Google Cloud comme webhook qui a fonctionné correctement jusqu'à hier soir. À ce moment-là, j'ai exporté l'agent et l'ai réimporté plus tard et cela a fonctionné pendant un certain temps.

Ce qui a cessé de fonctionner, c'est que agent.context.get ('...'); (également agent.getContext ('...') ) renvoie undefined même si le contexte est défini en fonction de l'interface utilisateur et de la réponse brute de l'API.

Comme un exemple J'ai une intention qui a un emplacement requis boutique , webhook pour le remplissage de l'emplacement activé. Lorsque je teste l'agent, l'intention nommée info correspond correctement et le contexte info_dialog_params_store semble être là:

 Intent

Et voici une partie du contexte de sortie en fonction de la réponse brute de l'API:

TypeError: Cannot read property 'get' of undefined
    at info (/user_code/index.js:207:36)
    at WebhookClient.handleRequest (/user_code/node_modules/dialogflow-fulfillment/src/dialogflow-fulfillment.js:303:44)
    at exports.dialogflowFirebaseFulfillment.functions.https.onRequest (/user_code/index.js:382:9)
    at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:57:9)
    at /var/tmp/worker/worker.js:762:7
    at /var/tmp/worker/worker.js:745:11
    at _combinedTickCallback (internal/process/next_tick.js:73:7)
    at process._tickDomainCallback (internal/process/next_tick.js:128:9)

Dans le webhook, j'ai correctement mappé l'intention sur un js:

function info(agent) {
    store_context = agent.context.get('info_dialog_params_store');
}

Et la première ligne de la fonction info ressemble à:

let intentMap = new Map();
intentMap.set('info', info);
agent.handleRequest(intentMap);

Ce qui retourne

"outputContexts": [
      {
        "name": "projects/MYAGENTNAME/agent/sessions/0b753e8e-b377-587b-3db6-3c8dc898879b/contexts/info_dialog_params_store",
        "lifespanCount": 1,
        "parameters": {
          "store": "",
          "store.original": "",
          "kpi": "counts",
          "date_or_period": "",
          "kpi.original": "trafico",
          "date_or_period.original": ""
        }
      }

Je suis sûr que je n'ai rien changé qui puisse affecter le bon fonctionnement de l'agent, à part quelques refactoring.

J'ai aussi essayé les fonctions bêta activées et désactivées car j'ai lu qu'il peut y avoir des problèmes avec les environnements, mais cela n'a rien changé.

Quelqu'un sait dans quelle direction je peux enquêter plus avant?

p>


0 commentaires

3 Réponses :


0
votes

En fait, je pourrais le réparer en suivant les étapes «magiques» suivantes:

  • J'ai copié ma fonction d'origine dans un fichier texte
  • Copiez et collez l'exemple de code d'origine dans l'éditeur de code d'exécution de l'interface graphique ( Code sur GitHub )
  • Déploiement de la fonction
  • J'ai créé un exemple minimal pour ma fonction info :
function info(agent) {
    store_context = agent.context.get('info_dialog_params_store');
}
  • Je l'ai testé et cela a fonctionné
  • J'ai recopié mon code d'origine
  • Tout allait bien à nouveau


0 commentaires

8
votes

J'ai eu le même problème, je l'ai résolu en mettant à jour dialogflow-completion dans package.json:

de "dialogflow-completion": "^ 0.5.0" à "dialogflow-completion": "^ 0.6.0"


1 commentaires

Merci pour le conseil. À ce moment-là, cette version n'était pas disponible mais peut-être ont-ils corrigé quelque chose pour empêcher cette erreur de se produire.



1
votes

J'ai résolu le problème en désactivant les "Fonctionnalités bêta" entrez la description de l'image ici


0 commentaires