显然,根据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]);
}
(这是在Google表格脚本中。我试图将其放在自定义函数中,以便在电子表格中使用,但在这里我将其简化以说明问题)
但是我在响应中得到了这个错误:
消息:无效的类别
对不起,我不是专业的编码人员,所以我可能做过一些愚蠢的事情,但是有人可以指出它是什么吗?
您真棒!谢谢
所以我现在进行了修改以调用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."}}
任何人都可以帮忙吗?
答案 0 :(得分:0)
您似乎正在调用V2 API。您应该为自定义转换器模型调用V3 API。我们在https://github.com/microsofttranslator上提供了许多V3 API调用示例,可以帮助您入门。
如果您需要其他帮助,请与我们联系。