对于版本1,这是我用来与DialogFlow Api进行通信的方式!
fetch(configs.baseUrl + "query?v=20150910", {
body: JSON.stringify({query: text, lang: "en", sessionId: "somerandomthing"}),
headers: {
'content-type': 'application/json',
"Authorization": "Bearer " + configs.accessToken,
},
method: 'POST',
})
.then(response => response.json())
.then(data => {
console.log(data.result.fulfillment.speech);
return data.result.fulfillment.speech;
})
.catch(error => console.error(error))
我只需将访问令牌传递到标题中即可!
我不知道如何使用DialogFlow v2使这个代码工作,我陷入访问令牌,我的V2代理我不能再看到访问令牌,而是我有一个项目ID和服务帐户。
我设法从谷歌控制台创建服务密钥并激活通过gcloud但我不知道从哪里获取或如何生成此访问令牌,或者我是否需要访问令牌到v2,如果没有,我该如何处理此?
非常感谢一个工作的例子。
注意我已经下载了这个包含这些数据的文件,并在gcloud中使用了这个文件,它说服务激活smth但是接着是什么? 这就是全部?接下来该怎么做才能对V2 DialogFlow进行http调用。
{
"type": "service_account",
"project_id": "xxxx",
"private_key_id": "xxxx",
"private_key": "-----BEGIN PRIVATE KEY-----xxxx",
"client_email": "xxxx",
"client_id": "xxxx",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/dialogflow-client%40xxxx"
}
答案 0 :(得分:1)
你做了很多正确的事,但你可能想要使用Dialogflows Node.js client SDK。实例化客户端时,这些SDK会自动读取身份验证JSON文件(请参阅Github上的the example,该文件由... = new dialogflow.SessionsClient()
读取)。
答案 1 :(得分:0)
答案 2 :(得分:0)
下面是使用Node.js创建DialogFlow V2访问令牌的另一个示例。下面代码中使用的库是google-oauth-jwt。
const googleAuth = require('google-oauth-jwt');
function generateAccessToken() {
return new Promise((resolve) => {
googleAuth.authenticate(
{
email: <client_email>,
key: <private_key>,
scopes: 'https://www.googleapis.com/auth/cloud-platform',
},
(err, token) => {
resolve(token);
},
);
});
}
您可以从已从Google Cloud Platform项目的服务帐户页面下载的JSON密钥文件中找到client_email
和private_key
。如果您不确定如何/在何处下载,可以查看我的博文here。
要找出您可能需要的范围,可以查看DialogFlow V2 REST API文档page。