IBM Bluemix 和 websocket 400 错误
IBM Bluemix and websocket 400 error
我正在尝试使用 node.js 的 websocket 模块与 IBM Watson Speech 交互以发送文本 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 凭证。
Watson 的 Speech-to-Text 服务不支持 Web 套接字。 A detailed explanation can be found here.
您将需要使用不同的协议。可在 here.
中找到通过 Node.js 连接到 Watson API 的指南
希望对您有所帮助!
为了使用 WebSocket,您首先需要获得一个 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"
USERNAME
和 PASSWORD
是您的服务凭证。
这基本上是对
的 GET
请求
https://stream.watsonplatform.net/authorization/api/v1/token
使用 url
查询参数,即您要为其获取令牌的服务。在这种情况下:
https://stream.watsonplatform.net/speech-to-text/api
如果您使用的是 nodejs,我建议您使用 watson-developer-cloud
npm 模块。查看 this 片段,它向您展示了如何使用 Speech to Text 服务进行实时转录。
我正在尝试使用 node.js 的 websocket 模块与 IBM Watson Speech 交互以发送文本 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 凭证。
Watson 的 Speech-to-Text 服务不支持 Web 套接字。 A detailed explanation can be found here.
您将需要使用不同的协议。可在 here.
中找到通过 Node.js 连接到 Watson API 的指南希望对您有所帮助!
为了使用 WebSocket,您首先需要获得一个 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"
USERNAME
和 PASSWORD
是您的服务凭证。
这基本上是对
的GET
请求
https://stream.watsonplatform.net/authorization/api/v1/token
使用 url
查询参数,即您要为其获取令牌的服务。在这种情况下:
https://stream.watsonplatform.net/speech-to-text/api
如果您使用的是 nodejs,我建议您使用 watson-developer-cloud
npm 模块。查看 this 片段,它向您展示了如何使用 Speech to Text 服务进行实时转录。