blinker-iot / blinker-js

Blinker node.js library for hardware. Works with Raspberry Pi, Banana Pi, linux, windows, macos.
MIT License
2.9k stars 11 forks source link

接入小爱同学不会调用回调函数 #14

Closed FatttSnake closed 2 years ago

FatttSnake commented 2 years ago

接入小爱同学后,使用小爱同学操作设备,设备接收得到调用,但不会调用回调函数

接收到调用后 voice-assistant.ts 中使用以下代码判断是否进行处理

get subTopic() {
        return `/sys/${this.device.config.productKey}/${this.device.config.deviceName}/rrpc/request/+`
    }

if (topic.indexOf(this.subTopic.substr(0, this.subTopic.length - 1)) > -1) {
    let data;
    let fromDevice;
    let messageId;
    try {
        let messageString = u8aToString(message)
        let messageObject = JSON.parse(messageString)
        fromDevice = messageObject.fromDevice
        data = messageObject.data
        this.targetDevice = fromDevice
        messageId = topic.split('/')[6]
        vaLog(data, `${this.vaName}>device`)
    } catch (error) {
        console.log(error);
    }
    if (fromDevice == this.vaName) {
        this.processData(messageId, data);
    }
}

实际上获取到的 subTopic=/sys/blinker/{productKey}/rrpc/request/+ topic=/device/{productKey}/r

无法进行正确处理

判断是否来自 MIOT 调用时使用 if (fromDevice == this.vaName) 进行判断,接收的 fromDevice 应为 MIOT 但实际接收为 ServerSender 无法正常调用回调函数

liux-pro commented 2 years ago

改了改能用了,小爱不报错了

16

coloz commented 2 years ago

nodejs sdk的语音部分,暂时还不支持点灯broker,计划重构中。

forhumility commented 1 year ago

我也遇到类似的问题,小爱语音控制提示“要操作的设备好像出问题了”,希望早日完成重构。🙏