【发布时间】:2018-11-05 06:22:52
【问题描述】:
我正在尝试根据文档的示例 HTTP 请求:https://dialogflow.com/docs/reference/v2-auth-setup 和 detectIntent:https://dialogflow.com/docs/reference/api-v2/rest/v2beta1/projects.agent.sessions/detectIntent,将 Dialogflow 与 Vue.js(和 axios)集成。
我设置了一个具有足够权限的服务帐户,并为其提供了文档中所示的路径参数和请求正文,但在调用 detectIntent API 时,我不断收到“错误:请求失败,状态码为 400”。
不过,有几件事我不确定:
如何获得 sessionId?目前我只是从 Firebase 函数日志中复制 sessionId,该日志在直接通过 Dialogflow 控制台输入查询时显示。
如何在 javascript 代码中实际实现 $(gcloud auth print-access-token)?目前我正在终端中运行命令并将令牌粘贴到代码中,只是为了测试API是否有效,但我不知道它应该如何实现。
(也许有用,我在函数文件夹中设置了实现,效果很好。)
提前致谢!
<script>
import axios from 'axios'
export default {
name: 'myChatBot',
mounted () {
// Authorization: Bearer $(gcloud auth print-access-token)
const session = 'projects/mychatbot/agent/sessions/some-session-id'
const token = 'xxxxxxxxxxxx'
axios.defaults.baseURL = 'https://dialogflow.googleapis.com'
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`
axios.defaults.headers.post['Content-Type'] = 'application/json'
axios
.post(`/v2beta1/${session}:detectIntent`, {
"queryInput": {
"text": "add buy milk to inbox",
"languageCode": "en-US"
}
})
.then(response => console.log(response))
.catch(error => console.log(error))
}
}
</script>
【问题讨论】:
标签: javascript vue.js axios dialogflow-es http-status-code-400