недопустимая ошибка категории в ответе для пользовательского интерфейса Microsoft Custom API - PullRequest
0 голосов
/ 07 декабря 2018

По-видимому, согласно поддержке MS Azure, мне нужно публиковать здесь вопрос, а не иметь возможность задать его где-нибудь в MS, так что вот так ...

Я создал собственную модель перевода в CustomПеревод, и я отправляю отображаемый идентификатор категории в моей строке внутри этой функции в JS:

снимок экрана, показывающий идентификатор категории

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 docs), поэтому мой код теперь:

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 () - см. скриншот [здесь] 4

1 Ответ

0 голосов
/ 08 декабря 2018

Похоже, вы звоните V2 API.Вы должны вызывать API V3 для пользовательских моделей переводчиков.У нас есть много примеров вызовов API V3 на https://github.com/microsofttranslator, которые должны помочь вам начать работу.

Пожалуйста, обращайтесь, если вам нужна дополнительная помощь.

...