我正在尝试创建具有多个意图的Alexa技能和一个供后端使用的nodeJs服务器。我正在尝试通过WebSocket将意图之一的输入发送到python服务器以对其进行处理,然后检索python服务器的结果,但问题是我无法在意图内部使用websocket。 ps:我尝试通过websocket从nodeJs向python脚本发送一些消息,而没有引入Alexa意图,并且它正常工作
''''''python
class EchoWebSocket(websocket.WebSocketHandler):
def open(self):
print ("Websocket Opened")
def on_message(self, message):
print('aaaa')
print('msg',message)
print('type msg:',type(message))
a = str(message)
print('msg to str',a)
print('type msg to str:',type(a))
def on_close(self):
print ("Websocket closed")
application = tornado.web.Application([(r"/", EchoWebSocket),])
if __name__ == "__main__":
application.listen(991)
tornado.ioloop.IOLoop.instance().start()
''''''
'''''app.js du Backend
const { App } = require('jovo-framework');
const { Alexa } = require('jovo-platform-alexa');
const { GoogleAssistant } = require('jovo-platform-googleassistant');
const { JovoDebugger } = require('jovo-plugin-debugger');
const { FileDb } = require('jovo-db-filedb');
const app = new App();
var res;
app.use(
new Alexa(),
new GoogleAssistant(),
new JovoDebugger(),
new FileDb()
);
var WebSocket =require('ws');
var socket = new WebSocket('ws://127.0.0.1:991/');
app.setHandler({
LAUNCH() {
......
},
StartIntent() {
.....
},
ResponceIntent() {
.......
},
alexaRepIntent() {
res = this.$inputs.resp.value;
console.log(res, 'is ur demande')
this.tell(res);
socket.on('open', function() {
console.log('connection opened / printed from app.js');
socket.send(res)
}).on('close', function() {
console.log('connection closed');
}).on('error', function(e) {
console.log('connection error', e);
}).on('message', function incoming(data) {
console.log(data)
});
},
});
'''''''
''''''nodeJs输出
Local server listening on port 3000.
This is your webhook url: .....
To open Jovo Debugger in your browser, enter .
''''
''''''python输出
Websocket closed
Websocket Opened
''''