Search code examples
javascriptnode.jsundefinedibm-watsonwatson-conversation

JSON response from Watson Translator Undefined


I am trying to use Watson translator service from my node.js app through the API documentation from IBM https://www.ibm.com/watson/developercloud/alchemyvision/api/v1/#apiexplorer

var request = require("request");
var LanguageTranslatorV3 = require('watson-developer-cloud/language-translator/v3');

var english_message

var languageTranslator = new LanguageTranslatorV3({
    version: '2018-05-01',
    username: '1234',
    password: '1234',
    url: 'https://gateway.watsonplatform.net/language-translator/api'
  });


function translatorEnglish(message) {
  var parameters = {
    text: message.text,
    model_id: 'es-en'
  };
  languageTranslator.translate(
    parameters,
    function(error, response, body) {
      if (error)
        console.log(error)
      else
        console.log(JSON.stringify(response, null, 2));
    }
  );
 }

I get the following correct response in logs

{
  "translations": [
    {
      "translation": "Hi."
    }
  ],
  "word_count": 1,
  "character_count": 4
}

but when i try to extract the output translation value i always get the output as Undefined.

console.log(response.translations.translation); => undefined

Can you please check and let me know if i am doing anything wrong?

Thanks


Solution

  • Try

    console.log(response.translations[0].translation); // Hi
    

    This is because translations is an array and has one item at index 0.

    {
      "translations": [
        {
          "translation": "Hi."
        }
      ],
      "word_count": 1,
      "character_count": 4
    }