Dialogflow: установите несколько контекстов с помощью библиотеки выполнения (node.js) в Dialogflow

Я пытаюсь установить / изменить несколько контекстов в зависимости от ответа пользователя. Для этого я пытаюсь установить контекст вывода с помощью agent.setContext (), используя библиотеку выполнения через встроенный редактор (node.js). Я хочу удалить контексты, заданные намерением в диалоговом потоке, и добавить новый контекст в контексты вывода Dialogflow.

Он отлично работает при установке одного выходного контекста путем вызова с agent.setContext () в node.js, но выдает ошибку, когда я передаю список нескольких контекстов в agent.setContext (), как показано ниже:

Примечание: я дал 3 выходных контекста (context_name_1, context_name_2, context_name_3) в контексте вывода Dialogflow Intent.

Фрагмент кода:

function intent_name(agent) {
    ... // defined text response for user
    ...
    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
            }]);
    ....
    }

Я получаю сообщение об ошибке:

Error: context must be provided and must have a name
    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)

Любая помощь будет оценена по достоинству.


person Harshit17    schedule 20.11.2019    source источник


Ответы (1)


Устанавливайте их индивидуально ...

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

Или по-новому:

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