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à:
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>
3 Réponses :
En fait, je pourrais le réparer en suivant les étapes «magiques» suivantes:
info : function info(agent) {
store_context = agent.context.get('info_dialog_params_store');
}
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"
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.
J'ai résolu le problème en désactivant les "Fonctionnalités bêta" entrez la description de l'image ici