Невозможно передать контексты ввода в диалог, используя node js - PullRequest
0 голосов
/ 02 апреля 2020

Я пытался заставить входные контексты перетекать в диалог через node.js, но я не могу заставить его работать каким-либо образом. Вот что у меня есть, и извините, я не нахожусь в узле, поэтому любые указатели были бы большой помощью.

Это не дает сбоя или говорит, что есть ошибка, я просто никогда не вижу входные контексты, попадающие в бэкэнд.

Спасибо за ваше время

Стив

async function createContext(sessionId, contextId, parameters, lifespanCount = 1) {

    const sessionPath = sessionClient.sessionPath(projectId, sessionId);
    const contextsClient = new dialogflow.ContextsClient();
    const contextPath = contextsClient.contextPath(
        projectId,
        sessionId,
        contextId
    );

    const request = {
        parent: sessionPath,
        context: {
            name: contextPath, 
            parameters: struct.encode(parameters),
            lifespanCount: lifespanCount
        }
    };

    const [context] = await contextsClient.createContext(request);
    return context;
}



// hook it up to the question and answer through the chatbot api
async function detectIntent(
  projectId,
  sessionId,
  query,
  contexts,
  languageCode
) {
  // The path to identify the agent that owns the created intent.
    const sessionPath = sessionClient.sessionPath(projectId, sessionId);
    // The text query request.
      const request = {
          session: sessionPath,
          queryInput: {
              text: {
                  text: query,
                  languageCode: languageCode,
              },
          },
          queryParams: {
              contexts: [contexts],
          }
       };

      const responses = await sessionClient.detectIntent(request);
  return responses[0];
}


async function requestChatBot(textdata) {
    let intentResponse;
    let context = "";
    const parameters = { 
        welcome: true
    };

    context = await createContext(callId, 'welcome-context', parameters);
    intentResponse = await detectIntent(
        projectId,
        callId,
        textdata,
        context,                             
        languageCode 
    );

}

1 Ответ

0 голосов
/ 05 мая 2020

измените ваш "запрос" на

const request = {
        session: sessionPath,
        queryParams: {
            contexts: [{
                name: 'projects/' + projectId + '/agent/sessions/' + sessionId + '/contexts/' + "Name of the context you want to pass",
                lifespanCount: provide life span of your context (Integer Value),
            }]
        },
        queryInput: {
            text: {
                // The query to send to the dialogflow agent
                text: userQuery,
                // The language used by the client (en-US)
                languageCode: 'en-US',
            },
        },
    };

Это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...