【问题标题】:invalid category error in response for microsoft custom translator api响应 Microsoft 自定义翻译器 API 的无效类别错误
【发布时间】: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]);
}

(这是在谷歌表格脚本中。我试图将它放在一个自定义函数中以在电子表格中使用,但我在这里对其进行了简化以解释问题)

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

消息:类别无效

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

【问题讨论】:

    标签: microsoft-translator


    【解决方案1】:

    看起来您正在调用 V2 API。您应该为自定义翻译模型调用 V3 API。我们在https://github.com/microsofttranslator 上提供了许多 V3 API 调用示例,它们应该可以帮助您入门。

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

    【讨论】:

    • 谢谢,所以我把url改成:api.cognitive.microsofttranslator.com/translate?api-version=3.0,但是后来错误变成:返回码405。截断的服务器响应:{"code":405000,"message":"请求方法请求的资源不支持。"}。如果我将请求更改为“发布”,我会收到不同的错误:返回代码 401。截断的服务器响应:{“错误”:{“代码”:401000,“消息”:“请求未授权,因为缺少凭据或无效。"}}
    • 有人可以帮忙吗?
    • 你快到了。您需要将正文放入完整的 JSON 格式。用这个“正文”替换正文: JSON.stringify([{ 'text': myText }])
    • 再次感谢@ScottG。但不幸的是仍然看到同样的错误。我在原始帖子中添加了屏幕截图
    • 请尝试添加区域标头 'Ocp-Apim-Subscription-Region':
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多