投稿
开启辅助访问
 找回密码
 立即注册
取消
搜索
热搜:
活动 交友 discuz
开发者专区 + 关注 已有8人关注 发新帖
分享到

二次开发,无法退出巡逻

#已解决#时间:2020-06-24 阅读:8454 回复:7

11

主题

31

帖子

121

积分

合作伙伴

积分
121
疑似bug反馈
设备类型: 豹小秘
序列号(SN): 仅管理员可见
Core版本: 1.24.1
ROM版本: V5.8.2020050100.0672UN
问题log: -
问题时间点: 2020年06月24日 15:39
问题复现方式: 运行模版代码,语音“开始巡逻”,在巡逻过程遇到人停下,语音“退出巡逻”
源代码: 仅管理员可见
企业名称: 仅管理员可见
客户姓名: 仅管理员可见
运行模版代码,语音“开始巡逻”,在巡逻过程遇到人停下,对它说“退出巡逻”,从代码中看,它应该回答“好的,已停止”,并且退出巡逻。但是实际没有退出巡逻,在无人与其对话一段时间过后又开始巡逻。大概看了下log,语音处理已经走到HomeVoice里,这里并未处理退出巡逻,正常应该继续回调下个监听GlobalVoiceTrigger,但是log显示只回调了HomeVoice未回调GlobalVoiceTrigger,请帮忙分析下。问题时间点15:39

HomeVoice.ts

public onListenCallback = (
        intent: string,
        result: any,
        id: any,
        text: any
    ): boolean => {
        this.viewModel.resetTimeout();
        console.log('HomeVoice',String(intent));
        switch (intent) {
            case Intent.command_stop:
                this.viewModel._voiceTrigger(HomeEvent.stop, result);
                return true;
            case Intent.command_return:
                this.viewModel._voiceTrigger(HomeEvent.return, result);
                return true;
            case 'MEUI&guide_introduction':
                this.viewModel._voiceTrigger(HomeEvent.guide, result);
                return true;
            case 'register&ask':
                //通过下面json拿到姓名
                // GlobalVoiceTrigger: ', '{"channel":"","type":3,"result":{"answerTextPlay":true,"card":"{}","intent":"register&register","queryType":2,"sid":"writing_40d36464-d84b-4360-b7d8-db8924a0d0d7","skillData":"{}","slots":"{\\"start\\":[{\\"dict_name\\":\\"\\",\\"slot_type\\":\\"NORMAL\\",\\"text\\":\\"张三\\",\\"value\\":\\"张三\\"}]}","soundAngle":-1,"userText":"我叫张三"},"eventId":-1}'
                let nameValue = result.value;
                RegisterUtils.getInstance().setRegisterAsk(true);
                return true;
        }

        return false;
    };

GlobalVoiceTrigger.ts


public trigger = (protocol: TriggerProtocol): void => {
        console.log('GlobalVoiceTrigger: ', JSON.stringify(protocol));
        switch (protocol.result.intent) {
            case Intent.command_stop:
            case Intent.command_return:
                this._trigger(TriggerChannel.wakeUp, protocol);
                break;
            case Intent.visit:
            case Intent.interview:
            case Intent.meeting:
                //this._trigger('verifyView', protocol);
                break;
            case Intent.cruise_start:
                if (globalModel.isCharting()) {
                    speechApi.playText(-1, '我正在充电呢,还不能执行此任务');
                    return;
                }
                this._trigger('cruise', protocol);
                break;
            case Intent.cruise_exit: {
                console.log('GlobalVoiceTrigger', "cruise_exit : " + triggerManager.getTaskName());
                if (triggerManager.getTaskName() === 'cruise') {
                    triggerManager.clearTask();
                    speechApi.playText(-1, '好的,已停止');
                }
                break;
            }




logcat.log.zip

1.2 MB, 下载次数: 1215

问题时间点15:39

回复
使用道具 举报

0

主题

33

帖子

146

积分

注册会员

Rank: 2

积分
146
smith tuo| 2020-6-28 14:58:40 | 显示全部楼层
方便提供下异常的代码zip包么?
回复
使用道具 举报

11

主题

31

帖子

121

积分

合作伙伴

积分
121
中智信| 2020-6-28 18:54:08 | 显示全部楼层
smith tuo 发表于 2020-6-28 14:58
方便提供下异常的代码zip包么?

orionos-cli init出来的代码
回复
使用道具 举报

0

主题

33

帖子

146

积分

注册会员

Rank: 2

积分
146
smith tuo| 2020-6-29 10:13:38 | 显示全部楼层
中智信 发表于 2020-6-28 18:54
orionos-cli init出来的代码

core版本是多少,另外app.js里边的内容方便贴出来么。。
回复
使用道具 举报

11

主题

31

帖子

121

积分

合作伙伴

积分
121
中智信| 2020-6-29 14:37:30 | 显示全部楼层
smith tuo 发表于 2020-6-29 10:13
core版本是多少,另外app.js里边的内容方便贴出来么。。

core : 1.24.1

/**
Copyright (C) 2020 Beijing Kingsoft Internet Security Software Co., Ltd. and Beijing Orion Star Technology Co., Ltd
Licensed under the Robot OS License Agreement (the "License").
You may not use this file except in compliance with the License.
You may obtain a copy of the License at  https://wiki.orionbase.cn/devguide/robot-osxu-ke-xie-yi.html
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and limitations under the License.
*/

/* eslint-disable import/imports-first */
/**
* Sample React Native App
* https://github.com/facebook/react-native
*
* @format
* @flow
*/

import { DeviceEventEmitter } from 'react-native';
import {
    listenersManager,
    SettingsUtil,
    GlobalVoice,
    triggerManager,
    CharacterListener,
    GlobalFaceParticleView,
    GlobalRecognitionView,
    GlobalEmojiPlayerView,
    RobotApi,
    DataCenter,
    DataCenterUtils
} from 'orionos-eve-core';
import { Provider } from 'mobx-react';
import React from 'react';
import AppContainer from './navigation';
import { RootStore } from './RootStore';
import { GlobalVoiceTrigger } from './biz/triggers/GlobalVoiceTrigger';
import { characterTrigger } from './biz/triggers/CharacterTrigger';
import { globalModel } from './biz/models/GlobalModel';
import { allTrigger } from './biz/triggers/index';
import { ModuleGuide } from './biz/datacenter/module/moduleGuide.ts';

export default class App extends React.Component {
    constructor(props) {
        super(props);
        console.log('App', 'App constructor');
        this.rootStore = new RootStore();
        listenersManager.listen(DeviceEventEmitter);
        this.globalVoice = new GlobalVoice(new GlobalVoiceTrigger());
        this.globalVoice.start();
        triggerManager.start();
        // triggerManager.setTask('cruise');
        this.characterListener = new CharacterListener(characterTrigger);
        DataCenterUtils.getInstance().registerModule(
            ModuleGuide.sModuleCode,
            new ModuleGuide()
        );
        DataCenter.init();
        DataCenterUtils.getInstance()
            .initData()
            .then(value => {});

        SettingsUtil.isOpen('robot_usable_when_charging').then(result => {
            console.log('robot_usable_when_charging', result);
            if (result) {
                RobotApi.disableBattery();
            }
        });
        try {
            SettingsUtil.isCharing().then(result => {
                console.log('isCharing', result);
                if (result) {
                    globalModel.setCharting(true);
                }
            });
        } catch (error) {
            console.log(
                'This feature is not supported in the current version.'
            );
        }
    }

    componentWillMount() {
        console.log('App', 'componentWillMount');
    }

    componentDidMount() {
        console.log('App', 'componentDidMount');
        this.characterListener.start();
    }

    componentWillUnmount() {
        console.log('App', 'componentWillUnmount');
        this.globalVoice.stop();
        triggerManager.stop();
        this.characterListener.stop();
        // DataCenter.stop();
    }

    render() {
        return (
            <>
                <Provider {...this.rootStore.getStores()}>
                    <>
                        {this.rootStore.faceParticleModel.isFirstStart() ? null : (
                            <GlobalFaceParticleView />
                        )}
                        <AppContainer />
                        <GlobalRecognitionView />
                        <GlobalEmojiPlayerView />
                    </>
                </Provider>

            </>
        );
    }
}
回复
使用道具 举报

0

主题

33

帖子

146

积分

注册会员

Rank: 2

积分
146
smith tuo| 2020-6-29 14:42:58 | 显示全部楼层

收到,感谢配合,我们尽快排查一下这块看看是什么情况。
回复
使用道具 举报

11

主题

31

帖子

121

积分

合作伙伴

积分
121
中智信| 2020-6-29 14:44:03 | 显示全部楼层

这个问题已解决,进一步跟踪代码,巡逻中遇到人进入首页后,不知道为什么识别到退出指令,语音回调顺序是HomeVoicxe -> WakeUpVoice。而在WakeUpVoice中onListenCallback默认返回的是true,所以才导致无法回调GlobalVoice,所以把WakeUpVoice中的onListenCallback默认返回的是false,就可以正常退出巡逻。
回复
使用道具 举报

0

主题

33

帖子

146

积分

注册会员

Rank: 2

积分
146
smith tuo| 2020-6-29 15:23:51 | 显示全部楼层
中智信 发表于 2020-6-29 14:44
这个问题已解决,进一步跟踪代码,巡逻中遇到人进入首页后,不知道为什么识别到退出指令,语音回调顺序是Ho ...

OK,解决了就好
回复
使用道具 举报
快速回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

    0

    主题

    33

    帖子

    146

    积分

    注册会员

    Rank: 2

    积分
    146

发私信

TA 的相关文章

    官方微信
    发布 快速回复 返回顶部 返回列表