IBM IAM IamAuthenticator getToken не является функцией - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь получить токен для использования IBM Watson Speech-to-Text в моем приложении. Вот мой код:

const { IamAuthenticator } = require('ibm-cloud-sdk-core');

const authenticator = new IamAuthenticator({
    apikey: 'myApiKey',
  });

  authenticator.getToken(function (err, token) {
    if (!token) {
      console.log('error: ', err);
    } else {
      // use token
    }
  });

Сообщение об ошибке: authenticator.getToken is not a function.

В документации написано:

string IBM.Cloud.SDK.Core.Authentication.Iam.IamAuthenticator.GetToken  (       )   

Я пробовал оба getToken и GetToken. То же сообщение об ошибке. Код не сложный, что я делаю не так?

Ответы [ 2 ]

1 голос
/ 16 марта 2020

См. Мой ответ в вашем другом посте , который может помочь. Вы используете BearerTokenAuthenticator, если хотите сами управлять процессом аутентификации токена.

1 голос
/ 13 марта 2020

Это то, что у меня работает с последней ibm-watson node-sdk ,

Установите node-sdk с помощью этой команды

npm install --save ibm-watson

Затем используйте этот фрагмент кода в файле узла app.js или server.js для получения токена доступа IAM

const watson = require('ibm-watson/sdk');
const { IamAuthenticator } = require('ibm-watson/auth');

// to get an IAM Access Token
const authorization = new watson.AuthorizationV1({
  authenticator: new IamAuthenticator({ apikey: '<apikey>' }),
  url: ''
});

authorization.getToken(function (err, token) {
  if (!token) {
    console.log('error: ', err);
  } else {
    console.log('token: ', token);
  }
});

Вы также можете напрямую использовать IamAuthenticator с речью в текст

const fs = require('fs');
const SpeechToTextV1 = require('ibm-watson/speech-to-text/v1');
const { IamAuthenticator } = require('ibm-watson/auth');

const speechToText = new SpeechToTextV1({
  authenticator: new IamAuthenticator({ apikey: '<apikey>' }),
  url: 'https://stream.watsonplatform.net/speech-to-text/api/'
});

const params = {
  // From file
  audio: fs.createReadStream('./resources/speech.wav'),
  contentType: 'audio/l16; rate=44100'
};

speechToText.recognize(params)
  .then(response => {
    console.log(JSON.stringify(response.result, null, 2));
  })
  .catch(err => {
    console.log(err);
  });

// or streaming
fs.createReadStream('./resources/speech.wav')
  .pipe(speechToText.recognizeUsingWebSocket({ contentType: 'audio/l16; rate=44100' }))
  .pipe(fs.createWriteStream('./transcription.txt'));
...