我正在使用 Dialogflow 开发一个聊天机器人,我需要从中获取完整的对话日志。
我检查了this page我猜想它可以通过使用 Stackdriver Logging api 来实现。
我引用了下面的页面并尝试了,但是使用这个api时,出现了403错误。 https://cloud.google.com/logging/docs/reference/v2/rest/v2/logs/list
我是否使用了错误的方式?
如何解决这个问题?
这是错误消息。
{
"error": {
"code": 403,
"message": "The request is missing a valid API key.",
"status": "PERMISSION_DENIED"
}
}
这是我调用 api 的代码。 我使用了 Google Apps 脚本。
function getLogs() {
//XXXXXXXX is my project_id
var output = UrlFetchApp.fetch('https://logging.googleapis.com/v2/projects/XXXXXXXX/logs');
Logger.log(output)
}
最佳答案
我是这样解决的。
- 将我的 API key 添加到 http 请求。
var options = {headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()}};
var logs = UrlFetchApp.fetch("https://logging.googleapis.com/v2/projects/XXXXXXXX/logs?key=my_api_key", options)
- 将范围添加到 appscript.json。
"oauthScopes": ["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/script.external_request"]
然后我发现 logs.list
方法不适合我的目标,所以我需要更改为 v2.entries
方法。
function getLogs(){
var options = {
method: "post",
contentType: "application/json",
headers: {Authorization: 'Bearer ' + ScriptApp.getOAuthToken()},
payload: JSON.stringify({
resourceNames: ['projects/XXXXXXX'],
filter: "timestamp >= searchdate",
orderBy: "timestamp desc",
pageSize: 1,
}),
}
var logs = UrlFetchApp.fetch("https://logging.googleapis.com/v2/entries:list?key=my_api_key", options);
Logger.log(logs);
}
关于google-apps-script - 如何使用 Stackdriver Logging API 获取日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60235566/