4 votes

Dialogflow : Définir plusieurs contextes en utilisant la bibliothèque de fulfillment (node.js) dans Dialogflow

Je cherche à définir / changer plusieurs contextes en fonction de la réponse de l'utilisateur. Pour cela, j'essaie de définir un contexte de sortie avec agent.setContext() en utilisant la bibliothèque fulfillment via l'éditeur en ligne (node.js). Je veux supprimer les contextes définis par l'intention dans Dialogflow et ajouter de nouveaux contextes dans les contextes de sortie de Dialogflow.

Cela fonctionne bien lors de la définition d'un contexte de sortie en appelant avec agent.setContext() en node.js mais cela génère une erreur lorsque je passe une liste de plusieurs contextes dans agent.setContext() comme indiqué ci-dessous:

Note : J'ai donné 3 contextes de sortie (context_name_1, context_name_2, context_name_3) dans le contexte de sortie de l'intention de Dialogflow.

Extrait de code :

function intent_name(agent) {
    ... // texte de réponse défini pour l'utilisateur
    ...
    agent.setContext([{
            'name':'context_name_1',
            'lifespan': 10
            }, 
          {
            'name':'context_name_2',
            'lifespan': 0
            }, 
          {
            'name':'context_name_3',
            'lifespan': 0
            },
          {
            'name':'context_name_4',
            'lifespan': 3
            }]);
    ....
    }

Je reçois une erreur comme suit :

Erreur : le contexte doit être fourni et doit avoir un nom
    at WebhookClient.setContext (/srv/node_modules/dialogflow-fulfillment/src/dialogflow-fulfillment.js:343:13)
    at prepaidRecharge (/srv/index.js:45:15)
    at WebhookClient.handleRequest (/srv/node_modules/dialogflow-fulfillment/src/dialogflow-fulfillment.js:303:44)
    at exports.dialogflowFirebaseFulfillment.functions.https.onRequest (/srv/index.js:92:9)
    at cloudFunction (/srv/node_modules/firebase-functions/lib/providers/https.js:57:9)
    at /worker/worker.js:783:7
    at /worker/worker.js:766:11
    at _combinedTickCallback (internal/process/next_tick.js:132:7)
    at process._tickDomainCallback (internal/process/next_tick.js:219:9)

Toute aide serait appréciée.

3voto

Clynton Caines Points 31

Définissez-les individuellement...

agent.setContext({ name: 'context_name_1', lifespan: 10, parameters: { city: 'Rome' }});
agent.setContext({ name: 'context_name_2', lifespan: 11, parameters: { continent: 'eu' }});

Ou en utilisant la nouvelle méthode :

agent.context.set('context_name_1', 10, {'param1' : 'abc'});
agent.context.set('context_name_2', 11, {'param2' : 2});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X