【发布时间】:2018-12-07 08:23:29
【问题描述】:
显然,根据 MS Azure 支持,我需要在这里发布一个问题,而不是能够在 MS 的某个地方提问,所以这里......
我已经在自定义翻译中构建了一个自定义翻译模型,并且我在 JS 中的这个函数内的字符串中发送了显示的“类别”ID:
screenshot showing category id
function translateText() {
var myText = 'こんにちわ。' //for example ;)
var fromLan = 'ja'
var toLan = 'en'
var categoryId = 'c02fd3c3-d9cc-4943-b838-88aa9ba2fe75-FINANCE'
var sp = PropertiesService.getScriptProperties();
var token = sp.getProperty('ms_token');
var url = 'https://api.microsofttranslator.com/v2/Http.svc/Translate';
var hd = {
'Authorization': 'Bearer '+token
};
url += '?from=' + fromLan + '&to=' + toLan + '&category=' + categoryId + '&text=';
url += encodeURIComponent(myText);
var xml = UrlFetchApp.fetch(url, {
'method': 'get',
'headers': hd
});
xml = xml.getContentText();
xml = xml.match(/^<string\s.*>(.*)<\/string>$/);
return(xml[1]);
}
(这是在谷歌表格脚本中。我试图将它放在一个自定义函数中以在电子表格中使用,但我在这里对其进行了简化以解释问题)
但是我在响应中得到了这个错误:
消息:类别无效
对不起,我不是专业的编码员,所以我可能做了一些愚蠢的事情,但是谁能指出它是什么?
提前你太棒了!谢谢
所以我现在修改为调用 V3,而不是传递令牌,我可以发送订阅密钥(根据 api 文档),所以我的代码现在是:
function get_translate() {
var myKey = 'mykeygoeshere';
var myCategory = 'c02fd3c3-d9cc-4943-b838-88aa9ba2fe75-FINANCE';
var myText = 'こんにちわ。';
var toLanguage = "en";
var url = 'https://api.cognitive.microsofttranslator.com/';
url += 'translate?api-version=3.0';
url += '&to=' + toLanguage + '&category=' + myCategory ;
var params = {
'method': 'POST',
'headers': {
'Ocp-Apim-Subscription-Key': myKey,
'Content-Type': 'application/json'
},
'body': {
'text': myText
}
};
var output = UrlFetchApp.fetch(url, params);
Logger.log(output);
}
但错误日志报告:
{"error":{"code":400000,"message":"One of the request inputs is not valid."}}
有人可以帮忙吗?
【问题讨论】: