IBM Bluemix and websocket 400 error



我试图使用node.js的websocket模块与IBM沃森语音到文本api接口。当我尝试连接时,我得到一个400错误,我不确定为什么…我以前从未使用过websockets。下面是我创建套接字并尝试连接

的代码
var WebSocketClient = require('websocket').client,
    client = new WebSocketClient(),
    token = 'myToken==',
    wsri = 'wss://stream.watsonplatform.net/speech-to-text/api/v1/recognize?watson-token=' + token;
//some event handlers for on connect and on connectFailed
client.connect(wsri, null, null, null, null);

这是我得到的响应

Connect Error: Error: Server responded with a non-101 status: 400
Response Headers Follow:
content-type: text/html
x-dp-watson-tran-id: csf_platform_prod_dp01-735083801
set-cookie: Watson-DPAT=this_is_a_cookie; path=/speech-to-text/api; secure; HttpOnly
www-authenticate: Basic realm="IBM Watson Gateway Log-in"
x-backside-transport: FAIL FAIL
connection: close

有什么办法解决这个问题吗??

编辑-更新:德国人的回答是正确的。我没有调用授权端点来获取令牌,而是试图使用我的bluemix凭据。

为了使用WebSockets,你首先需要得到一个token调用authorization api。然后将token添加到url中。

Websocket url是:

wss://stream.watsonplatform.net/speech-to-text/api/v1/recognize?watson-token=TOKEN

其中TOKEN可以通过以下方式创建(例如curl):

 curl -u USERNAME:PASSWORD  "https://stream.watsonplatform.net/authorization/api/v1/token?url=https://stream.watsonplatform.net/speech-to-text/api"

USERNAMEPASSWORD是您的服务凭据。

这基本上是对

GET请求
https://stream.watsonplatform.net/authorization/api/v1/token

带有url查询参数,该参数是您想要获取令牌的服务。在本例中:

https://stream.watsonplatform.net/speech-to-text/api

如果你使用nodejs,我建议你使用watson-developer-cloud npm模块。看一下这个片段,它向您展示了如何使用语音到文本服务进行实时转录。

Watson的语音转文本服务不支持Web Sockets。

您将需要使用不同的协议。通过Node.js连接到Watson API的指南可以在这里找到。

希望这对你有帮助!

相关内容

  • 没有找到相关文章

最新更新