首页 > 解决方案 > 如何为 dialogflow v2 REST API 验证客户端

问题描述

通过 axios(post)向 dialogflow REST API 发出“detectIntent”请求,返回状态码 401。

我将“客户端密钥”作为授权持有者传递。这是直接取自对话流的密钥,标记为“客户端访问令牌”。

我正在尝试从我的 vue 应用程序发出对话流请求。这目前在 localhost:8080 上提供。

我尝试传递管理员密钥,但没有成功。

我需要做什么才能正确验证请求。

这是我在 vue 中尝试通过 axios 发送请求的方法:

send() {      
      var config = {
        headers: {
          Authorization: "bearer XXXXX_Client_API_Key"
        }
      };
      var payload = {
        // session: "projects/agentID-XXXX/agent/sessions/" + this.currentUser,
        queryParams: {
          resetContexts: true
        },
        queryInput: {
          text: {
            text: this.newMessage,
            languageCode: "en-US"
          }
        }
      };
      var url =
        "https://dialogflow.googleapis.com/v2/projects/agentID-XXX/agent/sessions/" +
        this.currentUser +
        ":detectIntent";

      if (this.newMessage) {
        axios
          .post(url, payload, config)
          .then(response => {
            console.log(response.queryResult.fulfillmentTest);
          })
          .catch(error => {
            console.error(error);
          });
      }
    }

预期的结果将是对话流返回一个响应对象。目前它正在接收请求,但由于授权不当而被拒绝。

标签: javascriptvue.jsaxiosdialogflow-es

解决方案


推荐阅读