类 Agent

  • 所有已实现的接口:
    com.aispeech.dui.dds.agent.ReferenceCountMap.OnReferenceCountChangeListener, com.aispeech.dui.manager.INode, java.lang.Runnable

    public class Agent
    extends com.aispeech.dui.BaseNode
    implements com.aispeech.dui.dds.agent.ReferenceCountMap.OnReferenceCountChangeListener
    • 字段概要

      字段 
      修饰符和类型 字段 说明
      static java.lang.String TAG  
      • 从类继承的字段 com.aispeech.dui.BaseNode

        bc, DEFAULT_BUS_SERVER, MSG_NODE_INIT_STATUS
    • 构造器概要

      构造器 
      构造器 说明
      Agent​(android.content.Context context)
      构造方法,开发者可以不关注该构造方法, 而是可以通过DDS.getAgent()获取Agent实例
    • 构造器详细资料

      • Agent

        public Agent​(android.content.Context context)
        构造方法,开发者可以不关注该构造方法, 而是可以通过DDS.getAgent()获取Agent实例
        参数:
        context - context
    • 方法详细资料

      • onCreate

        public void onCreate()
        覆盖:
        onCreate 在类中 com.aispeech.dui.BaseNode
      • onJoin

        public void onJoin()
        指定者:
        onJoin 在接口中 com.aispeech.dui.manager.INode
        覆盖:
        onJoin 在类中 com.aispeech.dui.BaseNode
      • onExit

        public void onExit()
        指定者:
        onExit 在接口中 com.aispeech.dui.manager.INode
        覆盖:
        onExit 在类中 com.aispeech.dui.BaseNode
      • onDestroy

        public void onDestroy()
        覆盖:
        onDestroy 在类中 com.aispeech.dui.BaseNode
      • getName

        public java.lang.String getName()
        指定者:
        getName 在接口中 com.aispeech.dui.manager.INode
      • getAddress

        public java.lang.String getAddress()
        覆盖:
        getAddress 在类中 com.aispeech.dui.BaseNode
      • onCall

        public com.aispeech.dui.BusClient.RPCResult onCall​(java.lang.String url,
                                                           java.lang.Object... args)
                                                    throws java.lang.Exception
        覆盖:
        onCall 在类中 com.aispeech.dui.BaseNode
        抛出:
        java.lang.Exception
      • feedbackNativeCommandResult

        public void feedbackNativeCommandResult​(java.lang.String nativeCommand,
                                                org.json.JSONObject resultObj)
      • onMessage

        public void onMessage​(java.lang.String topic,
                              java.lang.Object... parts)
                       throws java.lang.Exception
        覆盖:
        onMessage 在类中 com.aispeech.dui.BaseNode
        抛出:
        java.lang.Exception
      • subscribe

        public void subscribe​(java.lang.String[] commands,
                              com.aispeech.dui.dsk.duiwidget.CommandObserver commandObserver)
        订阅command
        参数:
        commands - commands数组
        commandObserver - 当订阅的command被触发了,会通知到commandObserver
      • subscribeSync

        public void subscribeSync​(java.lang.String[] nativeCommands,
                                  com.aispeech.dui.dsk.duiwidget.NativeCommandObserver nativeCommandObserver)
        订阅nativeCommand, 此command支持带返回值
        参数:
        nativeCommands - commands数组
        nativeCommandObserver - 当订阅的command被触发了,会通知到commandObserver
      • unSubscribeSync

        public void unSubscribeSync​(com.aispeech.dui.dsk.duiwidget.NativeCommandObserver observer)
        注销NativeCommandObserver. 注销后,这个observer将不再会接受到command的消息
        参数:
        observer - observer
      • subscribeSync

        public void subscribeSync​(java.lang.String[] commands,
                                  com.aispeech.dui.dsk.duiwidget.CommandObserver commandObserver)
        订阅command
        参数:
        commands - commands数组
        commandObserver - 当订阅的command被触发了,会通知到commandObserver
      • subscribe

        public void subscribe​(java.lang.String command,
                              com.aispeech.dui.dsk.duiwidget.CommandObserver commandObserver)
        订阅command
        参数:
        command - 单个commad
        commandObserver - 当订阅的command被触发了,会通知到commandObserver
      • subscribe

        public void subscribe​(java.lang.String[] nativeApis,
                              com.aispeech.dui.dsk.duiwidget.NativeApiObserver nativeApiObserver)
        订阅nativeApi
        参数:
        nativeApis - nativeApi数组
        nativeApiObserver - 当订阅的cnativeApi被触发了,会通知到nativeApiObserver
      • subscribeSync

        public void subscribeSync​(java.lang.String[] nativeApis,
                                  com.aispeech.dui.dsk.duiwidget.NativeApiObserver nativeApiObserver)
        订阅nativeApi
        参数:
        nativeApis - nativeApi数组
        nativeApiObserver - 当订阅的cnativeApi被触发了,会通知到nativeApiObserver
      • subscribe

        public void subscribe​(java.lang.String nativeApi,
                              com.aispeech.dui.dsk.duiwidget.NativeApiObserver nativeApiObserver)
        订阅nativeApi
        参数:
        nativeApi - 单个的nativeApi
        nativeApiObserver - 当订阅的cnativeApi被触发了,会通知到nativeApiObserver
      • subscribe

        public void subscribe​(java.lang.String[] messages,
                              MessageObserver messageObserver)
        订阅messages
        参数:
        messages - message数组
        messageObserver - 当订阅的messages被触发了,会通知到messageObserver
      • subscribeSync

        public void subscribeSync​(java.lang.String[] messages,
                                  MessageObserver messageObserver)
        订阅messages
        参数:
        messages - message数组
        messageObserver - 当订阅的messages被触发了,会通知到messageObserver
      • subscribe

        public void subscribe​(java.lang.String message,
                              MessageObserver messageObserver)
        订阅message
        参数:
        message - 单个的message
        messageObserver - 当订阅的message被触发了,会通知到messageObserver
      • unSubscribe

        public void unSubscribe​(com.aispeech.dui.dsk.duiwidget.CommandObserver observer)
        注销CommandObserver. 注销后,这个observer将不再会接受到command的消息
        参数:
        observer - observer
      • unSubscribeSync

        public void unSubscribeSync​(com.aispeech.dui.dsk.duiwidget.CommandObserver observer)
        注销CommandObserver. 注销后,这个observer将不再会接受到command的消息
        参数:
        observer - observer
      • unSubscribe

        public void unSubscribe​(com.aispeech.dui.dsk.duiwidget.NativeApiObserver observer)
        注销NativeApiObserver. 注销后,这个observer将不再会接受到NativeApi的消息
        参数:
        observer - observer
      • unSubscribeSync

        public void unSubscribeSync​(com.aispeech.dui.dsk.duiwidget.NativeApiObserver observer)
        注销NativeApiObserver. 注销后,这个observer将不再会接受到NativeApi的消息
        参数:
        observer - observer
      • unSubscribe

        public void unSubscribe​(MessageObserver observer)
        注销MessageObserver. 注销后,这个observer将不再会接受到messages的消息
        参数:
        observer - observer
      • unSubscribeSync

        public void unSubscribeSync​(MessageObserver observer)
        注销MessageObserver. 注销后,这个observer将不再会接受到messages的消息
        参数:
        observer - observer
      • feedbackNativeApiResult

        public void feedbackNativeApiResult​(java.lang.String nativeApi,
                                            com.aispeech.dui.dsk.duiwidget.DuiWidget duiWidget)
        反馈native api的执行结果
        参数:
        nativeApi - dui平台上技能定义的nativeapi
        duiWidget - duiwidget实例
      • startDialog

        public void startDialog​(org.json.JSONObject jsonObject)
                         throws DDSNotInitCompleteException
        开启新对话

        播报提示音后进入识别。若当前正在对话中,会先结束当前对话,再开启新对话。

        参数:
        jsonObject - 自定义配置信息,可以配置回复语greeting等
        抛出:
        DDSNotInitCompleteException - 如果DDS没有初始化完成,会抛出exception
      • stopDialog

        public void stopDialog​(org.json.JSONObject jsonObject)
                        throws DDSNotInitCompleteException
        停止当前对话,包括停止合成,取消识别等
        参数:
        jsonObject - 自定义配置信息,可以配置合成文本,内部会在合成完该文本后停止当前对话
        抛出:
        DDSNotInitCompleteException - 如果DDS没有初始化完成,会抛出exception
      • triggerIntent

        @Deprecated
        public void triggerIntent​(java.lang.String skill,
                                  java.lang.String task,
                                  java.lang.String intent,
                                  java.lang.String slots)
                           throws DDSNotInitCompleteException
        已过时。
        主动触发意图的接口

        跳过识别和语义,直接进入指定的意图对话

        参数:
        skill - 技能名称, 必填
        task - 任务名称, 必填
        intent - 意图名称, 必填
        slots - 语义槽, key-value Json, 可选
        抛出:
        DDSNotInitCompleteException - 如果DDS没有初始化完成,会抛出exception
      • getResourceVersion

        public java.lang.String getResourceVersion()
        获取当前的产品资源版本号
        返回:
        String 资源版本号
      • speak

        @Deprecated
        public void speak​(java.lang.String text,
                          int priority)
                   throws DDSNotInitCompleteException
        已过时。
        此方法已在Agent中弃用,建议使用TTSEngine中的同名方法TTSEngine.speak(String, int)

        播报文本,支持SSML

        当DDSConfig.K_TTS_MODE设置为"external"时,该接口无效,请直接调用外部TTS引擎的对应接口。

        参数:
        text - 播报文本
        priority - 优先级
        • 优先级0-保留,与aios语音交互同级,仅限内部使用
        • 优先级1-正常,默认选项,同级按序播放
        • 优先级2-重要,可以插话优先级1,同级按序播放,播报完毕后继续播报刚才被插话的优先级1
        • 优先级3-紧急,可以打断优先级1或优先级2,同级按序播放,播报完毕后播报下一句优先级2
        抛出:
        DDSNotInitCompleteException - 如果DDS没有初始化完成,会抛出exception
      • speak

        @Deprecated
        public void speak​(java.lang.String text,
                          int priority,
                          java.lang.String ttsId,
                          int audioFocus)
                   throws DDSNotInitCompleteException
        已过时。
        此方法已在Agent中弃用,建议使用TTSEngine中的同名方法TTSEngine.speak(String, int, String, int)

        播报文本,支持SSML

        当DDSConfig.K_TTS_MODE设置为"external"时,该接口无效,请直接调用外部TTS引擎的对应接口。

        参数:
        text - 播报文本
        priority - 优先级
        • 优先级0-保留,与aios语音交互同级,仅限内部使用;
        • 优先级1-正常,默认选项,同级按序播放;
        • 优先级2-重要,可以插话优先级1,同级按序播放,播报完毕后继续播报刚才被插话的优先级1
        • 优先级3-紧急,可以打断优先级1或优先级2,同级按序播放,播报完毕后播报下一句优先级2
        ttsId - 用于追踪该次播报的id,建议使用UUID.
        audioFocus - 该次播报的音频焦
        • priority == 0 AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE
        • priority != 0 AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK
        抛出:
        DDSNotInitCompleteException - 如果DDS没有初始化完成,会抛出exception
      • shutup

        @Deprecated
        public void shutup​(java.lang.String ttsId)
                    throws DDSNotInitCompleteException
        已过时。
        此方法已在Agent中弃用,建议使用TTSEngine中的同名方法TTSEngine.shutup(String)

        停止播报接口

        当DDSConfig.K_TTS_MODE设置为"external"时,该接口无效,请直接调用外部TTS引擎的对应接口。

        参数:
        ttsId - 和 speak(String, int, String, int) ttsId.一致 ttsId与speak接口的ttsId一致,则停止或者移除该播报; ttsId为空, 停止所有播报; ttsId为"0",停止当前播报.
        抛出:
        DDSNotInitCompleteException - 如果DDS没有初始化完成,会抛出exception
      • getLocalData

        public java.lang.String getLocalData​(java.lang.String key)
                                      throws DDSNotInitCompleteException
        从 sdk 保存的数据里获取对应的值

        获取 oauth 的 userId 示例:

        DDS.getInstance().getAgent().getLocalData("/local_keys/aispeech_user_id")

        参数:
        key - key
        返回:
        抛出:
        DDSNotInitCompleteException
      • setLocalData

        public void setLocalData​(java.lang.String key,
                                 java.lang.String value)
                          throws DDSNotInitCompleteException
        设置 数据到 sdk

        设置 oauth 的 userId 示例:

        DDS.getInstance().getAgent().setLocalData("/local_keys/aispeech_user_id", "XXX");

        参数:
        key - key
        value - value
        抛出:
        DDSNotInitCompleteException
      • feedPcm

        public void feedPcm​(byte[] pcm)
        外部录音机拾音接口

        需要将DDSConfig.K_RECORDER_MODE设置为"external",该接口才会生效

        参数:
        pcm - 音频数据
      • feedSbc

        public void feedSbc​(byte[] sbc)
        外部录音机拾音接口

        需要将DDSConfig.K_RECORDER_MODE设置为"external",该接口才会生效 并且需要提前调用: DDS.getInstance().getAgent().setRecorderMode(Agent.RecorderMode.SBC)

        参数:
        sbc - sbc格式的音频数据
      • feedOpus

        public void feedOpus​(byte[] opus)
        外部录音机拾音接口

        需要将DDSConfig.K_RECORDER_MODE设置为"external",该接口才会生效 并且需要提前调用: DDS.getInstance().getAgent().setRecorderMode(Agent.RecorderMode.OPUS)

        参数:
        opus - sbc格式的音频数据
      • notifyTTSEnd

        public void notifyTTSEnd()
        外部TTS播报结束通知接口

        播放完毕后,需要调用该接口才能自动进入下一轮识别

        需要将DDSConfig.K_TTS_MODE设置为"external",该接口才会生效

      • notifyTTSEnd

        public void notifyTTSEnd​(java.lang.String ttsId)
        外部TTS播报结束通知接口

        播放完毕后,需要调用该接口才能自动进入下一轮识别

        需要将DDSConfig.K_TTS_MODE设置为"external",该接口才会生效

      • updateVocabs

        public java.lang.String updateVocabs​(int mode,
                                             VocabIntent... vocabs)
                                      throws DDSNotInitCompleteException
        更新词库接口

        更新指定词库的词条。 更新结果可以通过sys.upload.result消息来获取。

        参数:
        mode - VocabIntent.LOCAL VocabIntent.CLOUD
        vocabs - 需要更新的词库列表
        返回:
        请求ID,用于追踪sys.upload.result
        抛出:
        DDSNotInitCompleteException - 如果DDS没有初始化完成,会抛出exception
        另请参阅:
        VocabIntent
      • updatePhraseHints

        public void updatePhraseHints​(PhraseHintsIntent... phraseHints)
                               throws DDSNotInitCompleteException
        更新热词识别接口(请求级别)

        每次请求都会带上热词词库, 例如: [{"type": "vocab", "name": "行政区", "data":["黄浦区"]}] 本接口为覆盖式接口,以最新设置为准,如需要清除请求空参数即可

        参数:
        phraseHints - 需要更新的热词识别列表
        抛出:
        DDSNotInitCompleteException - 如果DDS没有初始化完成,会抛出exception
        另请参阅:
        PhraseHintsIntent
      • updatePhraseList

        public void updatePhraseList​(PhraseList... phraseLists)
        设置热词,用于在一路中做热词增强识别。如果不启用该功能请不要使用该方法

        每次请求时会带上热词。上传形式如: [{"name":"common", "words":["示例"], ”boost“:3}]

        使用示例:
          PhraseList p = new PhraseList();
          p.setName("common"); // 槽位 默认是 common
          p.setBoost(1); // 表示增强强度,从小到大取值是1,2,3; 默认值是1
          p.addWord("苏州");
          p.addWord("上海");
          DDS.getInstance().getAgent().updatePhraseList(p);
         
        参数:
        phraseLists - 热词
      • updateAsrDropWords

        public void updateAsrDropWords​(java.lang.String asrDropWords)
        设置需要进行识别过滤的词 使用示例:
          String asrDropWords = "你好小驰,小苹果";
          DDS.getInstance().getAgent().updateAsrDropWords(asrDropWords);
         
        参数:
        asrDropWords - 识别过滤词
      • updateDeviceInfo

        @Deprecated
        public java.lang.String updateDeviceInfo​(java.lang.String deviceJson)
                                          throws DDSNotInitCompleteException
        更新设备状态,用来保存设备的一些状态,比如:蓝牙是否打开 更新结果可以通过sys.upload.result消息来获取

        参数:
        deviceJson - 设备状态信息的Json串,例如: {"bluetooth":{”state“:"disconnected"}},在技能中使用$context.bluetooth.state$将会获取到返回值"disconnected"
        返回:
        请求ID,用于追踪sys.upload.result
        抛出:
        DDSNotInitCompleteException - 如果DDS没有初始化完成,会抛出exception
      • updateProductContext

        public java.lang.String updateProductContext​(ContextIntent intent)
                                              throws DDSNotInitCompleteException
        更新设备状态,产品级的配置。比如:定位信息,设备硬件状态等 更新结果可以通过sys.upload.result消息来获取
        参数:
        intent - 请求的ContextIntent对象,包括key和value 如:ContextIntent intent = new ContextIntent("location",{"city":"苏州市"}); updateProductContext(intent); 技能里通过$context.location.city$即可获取到"苏州市"
        返回:
        请求的ID,用于追踪sys.upload.result
        抛出:
        DDSNotInitCompleteException - 如果DDS没有初始化完成,会抛出exception
      • updateSkillContext

        public java.lang.String updateSkillContext​(ContextIntent intent)
                                            throws DDSNotInitCompleteException
        更新技能配置,需要调用ContextIntent.setSkillId设置技能ID 更新结果可以通过sys.upload.result消息来获取
        参数:
        intent - 请求的ContextIntent对象,包括key、value、skillId。
        返回:
        请求的ID,用于追踪sys.upload.result
        抛出:
        DDSNotInitCompleteException - 如果DDS没有初始化完成,会抛出exception
      • endSkillInDialog

        public java.lang.String endSkillInDialog()
                                          throws DDSNotInitCompleteException
        在多轮对话中强制设置为首轮,进入延迟聆听状态。(全双工模式下支持此接口) 如果当前在对话中,则进入延迟聆听状态并发送消息:sys.dialog.endSkillDm 如果当前在播报中,则打断当前播报进入延迟聆听状态并发送消息:sys.dialog.endSkillDm 如果当前不在对话中,此接口无效
        抛出:
        DDSNotInitCompleteException - 如果DDS没有初始化完成,会抛出exception
      • updateDispatchEvent

        public java.lang.String updateDispatchEvent​(org.json.JSONObject obj)
                                             throws DDSNotInitCompleteException
        多模态事件同步,该接口用于客户端给对话中控发送一个事件,例如:
        • 不再支持: 在多轮对话中强制设置为首轮,传入数据为: new JSONObject().put("endSkill", "true")
抛出:
DDSNotInitCompleteException - 如果DDS没有初始化完成,会抛出exception