如何使用 Javascript ajax 调用在 DialogFlow v2 上进行 http 调用

Miz*_*lul 6 javascript google-cloud-datastore google-cloud-platform dialogflow-es

我在 DialogFlow 的官方网站上使用 Node.js 找到了这个示例,它运行良好,但我不知道如何将其集成到我的 Web 应用程序中。

我可以将它集成到我的其他 javascript jquery 代码中吗?在这里我需要运行 node index.js 但如果我与我的代码集成,我还需要这样做吗?

const projectId = 'xxx'; //https://dialogflow.com/docs/agents#settings
const sessionId = 'xxxxx';
const query = 'Hello';
const languageCode = 'en-US';

// Instantiate a DialogFlow client.
const dialogflow = require('dialogflow');
const sessionClient = new dialogflow.SessionsClient();

// Define session path
const sessionPath = sessionClient.sessionPath(projectId, sessionId);
console.log(sessionPath);
// The text query request.
const request = {
  session: sessionPath,
  queryInput: {
    text: {
      text: query,
      languageCode: languageCode,
    },
  },
};

// Send request and log result
sessionClient
  .detectIntent(request)
  .then(responses => {
    console.log('Detected intent');
    const result = responses[0].queryResult;
    console.log(`  Query: ${result.queryText}`);
    console.log(`  Response: ${result.fulfillmentText}`);
    if (result.intent) {
      console.log(`  Intent: ${result.intent.displayName}`);
    } else {
      console.log(`  No intent matched.`);
    }
  })
  .catch(err => {
    console.error('ERROR:', err);
  });
Run Code Online (Sandbox Code Playgroud)

是否有任何替代方法可以让我们使用普通的 javascript jquery、ajax 来使用 DialogFlow v2,而无需每次我想使用 dialogflow 时都执行 node index.js。

DialogFlow v1 使用起来非常简单。我有这样的事情:

fetch(url, {
    body: JSON.stringify(data),
    // cache: 'no-cache',
    // credentials: 'same-origin',
    headers: {
        'content-type': 'application/json',
        "Authorization": "Bearer " + configs.accessToken,
    },
    method: 'POST',
    mode: 'cors',
    redirect: 'follow',
    referrer: 'no-referrer',
})
    .then(response => response.json()) // parses response to JSON
Run Code Online (Sandbox Code Playgroud)

Dan*_*ake 1

您可以轻松地detectIntent从 jQuery 调用 Dialogflow 的 V2 API 端点。

API文档显示了 URL 和请求格式:

POST https://dialogflow.googleapis.com/v2/{session=projects/*/agent/sessions/*}:detectIntent

{
  "queryParams": {
    object(QueryParameters)
  },
  "queryInput": {
    object(QueryInput)
  },
  "inputAudio": string
}
Run Code Online (Sandbox Code Playgroud)

身份验证的工作方式略有不同;您将使用云仪表板创建服务帐户和密钥,而不是使用访问令牌。本文档页面解释了如何操作。

  • 我已经创建了服务帐户和密钥,如何使用它们从您展示的示例中发出 http/ajax 请求?授权:不记名 $(gcloud auth print-access-token) 这对我来说并不简单,你能举一些例子吗? (2认同)
  • 我看不到如何在 jquery 中使用我的服务帐户密钥,如何进行身份验证以便我可以使用dialogflow api? (2认同)