我正在尝试使用AngularJS应用程序访问Google Dialogflow API版本2上的聊天机器人。
我已经下载了服务密钥,在本地设置了环境变量,并按照以下所示的过程在我的系统上下载了google sdk: https://dialogflow.com/docs/reference/v2-auth-setup
但是,在运行代码时出现错误:
{
"error": {
"code": 401,
"message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED"
}
}
我不知道该怎么做才能使它正常工作...
//方法类型和url变量
$scope.method = 'POST';
$scope.endPoint = 'https://dialogflow.googleapis.com/v2beta1/projects/project-name/agent/intents';
$scope.mimeType = 'application/json; charset=utf-8';
// the function that mkes the http call
function abc() {
$http({
method: $scope.method,
url: $scope.endPoint,
contentType: $scope.mimeType,
dataType: "json",
headers: {
"Authorization": "Bearer $(gcloud auth application-default print-access-token)"
},
data: JSON.stringify({query: message, lang: "en", sessionId: "123"})
}).then(function success(response) {...}
}
我希望这有助于验证用户身份并提供对意图的访问,然后响应请求。但这不会发生。有人可以告诉我我要去哪里了吗?
此外,我想知道是否将其推送到生产环境中,密钥将在哪里上传,应用程序将如何指向它?
谢谢!
答案 0 :(得分:0)
以此为参考。希望这会有所帮助。
这是我的工作代码。
AngularJS文件:
$scope.products = [];
$scope.confirmDelete = false;
// Input TextBox Variables.
$scope.productForm = {
productId: -1,
productName: "",
productAddress: "",
productOwner: ""
};
// For POST and PUT: Submit Button.
$scope.submitProduct = function () {
var method = "";
var url = "";
if ($scope.productForm.productId == -1) {
method = "POST";
url = '/products/addProduct';
} else {
method = "PUT";
url = '/products/updateProduct';
}
$http({
method: method,
url: url,
data: angular.toJson($scope.productForm),
headers: {
'Content-Type': 'application/json'
}
}).then(_success, _error);
};
// Success Function
function _success(response) {
_refreshProductData();
_clearFormData();
};
// Error Function
function _error(response) {
console.log("Error : " + response.statusText + ":" + response.data);
};
// For GET: To Get All Data.
function _refreshProductData(){
$http({
method : "GET",
url : '/products/getAllProducts'
}).then(function success(response){// success
console.log(response)
$scope.products = response.data
console.log($scope.products)
}, function error(response){// Error
console.log("Error : " + response.status + ":" + response.data);
});
}
// Clear Form Data
function _clearFormData() {
$scope.productForm.productId = -1;
$scope.productForm.productName = "";
$scope.productForm.productAddress = "";
$scope.productForm.productOwner = "";
...
...
...
};
HTML文件:
<form ng-submit = "submitProduct()">
Product Id :<br>
{{productForm.productId}} <br><br>
Product Name :<br>
<input type = "text" ng-model = "productForm.productName"/> <br><br>
Product Address :<br>
<input type = "text" ng-model = "productForm.productAddress" /><br><br>
Product Owner :<br>
<input type = "text" ng-model = "productForm.productOwner" /><br><br>
<input type = "submit" value = "Submit" /><br><br>
</form>