无效的类别错误,用于响应Microsoft自定义翻译器API

时间:2018-12-07 08:23:30

标签: microsoft-translator

显然,根据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表格脚本中。我试图将其放在自定义函数中,以便在电子表格中使用,但在这里我将其简化以说明问题)

但是我在响应中得到了这个错误:

消息:无效的类别  

full response here

对不起,我不是专业的编码人员,所以我可能做过一些愚蠢的事情,但是有人可以指出它是什么吗?

您真棒!谢谢

所以我现在进行了修改以调用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."}} 

任何人都可以帮忙吗?

添加JSON.Stringify()后的最新错误-请参见屏幕快照[here] 4

1 个答案:

答案 0 :(得分:0)

您似乎正在调用V2 API。您应该为自定义转换器模型调用V3 API。我们在https://github.com/microsofttranslator上提供了许多V3 API调用示例,可​​以帮助您入门。

如果您需要其他帮助,请与我们联系。