com.aispeech.dui.dds.agent

## Class Agent

- java.lang.Object
- - com.aispeech.dui.BaseNode
  - - com.aispeech.dui.dds.agent.Agent

- All Implemented Interfaces:
    BusClient.Handler, java.lang.Runnable

      public class Agent
      extends BaseNode

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `Agent.DuplexMode`
    `static class` | `Agent.RecorderMode`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `TAG`

    - ### Fields inherited from class com.aispeech.dui.BaseNode

      `bc, DEFAULT_BUS_SERVER`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Agent(android.content.Context context)` 构造方法，开发者可以不关注该构造方法， 而是可以通过`DDS.getAgent()`获取Agent实例

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `avatarClick()` 点击唤醒/停止识别/打断播报 操作接口
    `void` | `avatarClick(java.lang.String greeting)` 点击唤醒/停止识别/打断播报 操作接口
    `void` | `avatarPress()` 按下按键接口
    `void` | `avatarRelease()` 释放按键接口
    `void` | `clearAuthCode()` 清除 authcode, 该方法需要在SDK初始化后使用; 与之对应的方法是 `setAuthCode(AuthInfo, TokenListener)`
    `void` | `clearCommandWakeupWord()` Deprecated.
    `java.lang.String` | `clearDeviceInfo(java.lang.String key)` 清空客户端上传的设备信息
    `void` | `clearShortCutWakeupWord()` Deprecated.
    `void` | `closeTip()` 关闭tip提示音
    `void` | `disableWakeup()` Deprecated.
    `void` | `enableWakeup()` Deprecated.
    `java.lang.String` | `endSkillInDialog()` Deprecated. Replaced by `updateDispatchEvent(JSONObject)`}
    `void` | `feedbackNativeApiResult(java.lang.String nativeApi, DuiWidget duiWidget)` 反馈native api的执行结果
    `void` | `feedOpus(byte[] opus)` 外部录音机拾音接口
    `void` | `feedPcm(byte[] pcm)` 外部录音机拾音接口
    `void` | `feedSbc(byte[] sbc)` 外部录音机拾音接口
    `java.lang.String` | `getAddress()`
    `ASREngine` | `getASREngine()` 获取ASR引擎
    `java.lang.String` | `getDeviceInfo()` 获取客户端保存的设备信息
    `Agent.DuplexMode` | `getDuplexMode()` 获取当前的运行模式
    `java.lang.String` | `getMinorWakeupWord()` Deprecated.
    `java.lang.String` | `getName()`
    `java.lang.Object` | `getProductContext(java.lang.String inputKey)` 获取产品的配置信息
    `java.lang.String` | `getResourceVersion()` 获取当前的产品资源版本号
    `java.lang.Object` | `getSkillContext(java.lang.String skillId, java.lang.String inputKey)` 获取技能的配置信息
    `java.util.List<SkillConfig>` | `getSkillList()`
    `java.util.Set<java.lang.String>` | `getSubscribedTopics()`
    `TTSEngine` | `getTTSEngine()` 获取TTS引擎
    `int` | `getUiagentProt()`
    `long` | `getVadPauseTime()` Deprecated.
    `java.lang.String` | `getValidH5Path()` 获取资源包中H5资源的路径
    `VprintEngine` | `getVprintEngine()` 获取Vprint引擎
    `WakeupEngine` | `getWakeupEngine()` 获取Wakeup引擎
    `java.lang.String[]` | `getWakeupWords()` Deprecated.
    `void` | `notifyTTSEnd()` 外部TTS播报结束通知接口
    `BusClient.RPCResult` | `onCall(java.lang.String url, byte[]... args)`
    `void` | `onCreate()` invoked when this node is created
    `void` | `onDestroy()` invoked when this node is being destroyed
    `void` | `onExit()` invoked when this node exit from bus
    `void` | `onFirstObserverAttached(java.lang.String topic)`
    `void` | `onJoin()` invoked when this node join bus
    `void` | `onMessage(java.lang.String topic, byte[]... parts)` invoked when topic received.
    `void` | `onNoObserverAttached(java.lang.String topic)`
    `void` | `openTip()` 打开tip提示音
    `void` | `pauseDialog()` 暂停当前对话
    `void` | `resumeDialog()` 恢复当前对话
    `void` | `sendText(java.lang.String text)` 输入文本的接口
    `void` | `setAuthCode(AuthInfo authInfo, TokenListener tokenListener)` dca授权登录， 该方法需要在SDK初始化后使用; 此方法应该在 OathSDK 登录获取 authCode 后使用 与之对应的方法是 `clearAuthCode()`
    `void` | `setCustomTips(org.json.JSONObject obj)` 此接口支持动态修改 custom tips
    `void` | `setDDSMode(int mode)` 设置场景模式
    `void` | `setDMCallback(DMCallback callback)` Deprecated. 该接口极端情况会导致rpc死锁问题，已舍弃。建议使用支持`topic`的{`setDMTaskCallback(DMTaskCallback)`}接口
    `void` | `setDMTaskCallback(DMTaskCallback dmTaskCallback)` 此接口支持修改对话中的语音播报,修改文本展示等功能
    `void` | `setDuplexMode(Agent.DuplexMode duplexMode)` 设置dds策略
    `void` | `setEnableVoip(boolean enableVoip)` 设置是否使用voip功能
    `void` | `setRecorderMode(Agent.RecorderMode recorderMode)` 设置外部录音机拾音模式
    `void` | `setTTSRequestListener(TTSRequestListener listener)` 外部TTS引擎注册接口
    `boolean` | `setVadPauseTime(long millis)` Deprecated.
    `void` | `shutup(java.lang.String ttsId)` Deprecated.
    `void` | `speak(java.lang.String text, int priority)` Deprecated.
    `void` | `speak(java.lang.String text, int priority, java.lang.String ttsId, int audioFocus)` Deprecated.
    `void` | `startDialog()` 开启新对话
    `void` | `startDialog(org.json.JSONObject jsonObject)` 开启新对话
    `void` | `stopDialog()` 停止当前对话，包括停止合成，取消识别等
    `void` | `stopDialog(org.json.JSONObject jsonObject)` 停止当前对话，包括停止合成，取消识别等
    `void` | `subscribe(java.lang.String[] commands, CommandObserver commandObserver)` 订阅command
    `void` | `subscribe(java.lang.String[] messages, MessageObserver messageObserver)` 订阅messages
    `void` | `subscribe(java.lang.String[] nativeApis, NativeApiObserver nativeApiObserver)` 订阅nativeApi
    `void` | `subscribe(java.lang.String command, CommandObserver commandObserver)` 订阅command
    `void` | `subscribe(java.lang.String message, MessageObserver messageObserver)` 订阅message
    `void` | `subscribe(java.lang.String nativeApi, NativeApiObserver nativeApiObserver)` 订阅nativeApi
    `void` | `subscribeSync(java.lang.String[] commands, CommandObserver commandObserver)` 订阅command
    `void` | `subscribeSync(java.lang.String[] messages, MessageObserver messageObserver)` 订阅messages
    `void` | `subscribeSync(java.lang.String[] nativeApis, NativeApiObserver nativeApiObserver)` 订阅nativeApi
    `void` | `triggerIntent(SkillIntent skillIntent)` 主动触发意图的接口
    `void` | `triggerIntent(java.lang.String skill, java.lang.String task, java.lang.String intent, java.lang.String slots)` Deprecated. 主动触发意图的接口 跳过识别和语义，直接进入指定的意图对话
    `void` | `unSubscribe(CommandObserver observer)` 注销CommandObserver.
    `void` | `unSubscribe(MessageObserver observer)` 注销MessageObserver.
    `void` | `unSubscribe(NativeApiObserver observer)` 注销NativeApiObserver.
    `void` | `unSubscribeSync(CommandObserver observer)` 注销CommandObserver.
    `void` | `unSubscribeSync(MessageObserver observer)` 注销MessageObserver.
    `void` | `unSubscribeSync(NativeApiObserver observer)` 注销NativeApiObserver.
    `void` | `updateCommandWakeupWord(java.lang.String[] actions, java.lang.String[] words, java.lang.String[] pinyin, java.lang.String[] threshold, java.lang.String[][] greetings)` Deprecated.
    `java.lang.String` | `updateDeviceInfo(java.lang.String deviceJson)` Deprecated. Replaced by `updateProductContext(ContextIntent)`} `updateSkillContext(ContextIntent)`}
    `java.lang.String` | `updateDispatchEvent(org.json.JSONObject obj)` 多模态事件同步,该接口用于客户端给对话中控发送一个事件
    `void` | `updateMinorWakeupWord(java.lang.String word, java.lang.String pinyin, java.lang.String threshold, java.lang.String[] greetings)` Deprecated.
    `void` | `updatePermanentSkill(org.json.JSONArray jsonArray)` 新增技能锁定接口，让用户说的话只落在锁定的技能里
    `void` | `updatePhraseHints(PhraseHintsIntent... phraseHints)` 更新热词识别接口(请求级别)
    `java.lang.String` | `updateProductContext(ContextIntent intent)` 更新设备状态，产品级的配置。比如：定位信息，设备硬件状态等 更新结果可以通过sys.upload.result消息来获取
    `void` | `updateShortcutWakeupWord(java.lang.String[] words, java.lang.String[] pinyin, java.lang.String[] threshold)` Deprecated.
    `java.lang.String` | `updateSkillContext(ContextIntent intent)` 更新技能配置，需要调用ContextIntent.setSkillId设置技能ID 更新结果可以通过sys.upload.result消息来获取
    `java.lang.String` | `updateVocab(java.lang.String vocabName, java.lang.String[] contents, boolean addOrDelete)` Deprecated. Replaced by `updateVocabs(VocabIntent...)`
    `java.lang.String` | `updateVocabs(VocabIntent... vocabs)` 更新词库接口

    - ### Methods inherited from class com.aispeech.dui.BaseNode

      `dump, dump, getBufferSize, getBusClient, isRunning, onRetry, publishSticky, removeSticky, run, start, stop`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### TAG

          public static final java.lang.String TAG

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Agent

          public Agent(android.content.Context context)

      构造方法，开发者可以不关注该构造方法， 而是可以通过`DDS.getAgent()`获取Agent实例
      Parameters:
        `context` - context

  - ### Method Detail

    - #### onCreate

          public void onCreate()

      Description copied from class: `BaseNode`
      invoked when this node is created
      Overrides:
        `onCreate` in class `BaseNode`

    - #### onJoin

          public void onJoin()

      Description copied from class: `BaseNode`
      invoked when this node join bus
      Overrides:
        `onJoin` in class `BaseNode`

    - #### onExit

          public void onExit()

      Description copied from class: `BaseNode`
      invoked when this node exit from bus
      Overrides:
        `onExit` in class `BaseNode`

    - #### onDestroy

          public void onDestroy()

      Description copied from class: `BaseNode`
      invoked when this node is being destroyed
      Overrides:
        `onDestroy` in class `BaseNode`

    - #### getName

          public java.lang.String getName()

      Specified by:
        `getName` in class `BaseNode`

    - #### getAddress

          public java.lang.String getAddress()

      Overrides:
        `getAddress` in class `BaseNode`

    - #### onCall

          public BusClient.RPCResult onCall(java.lang.String url,
                                            byte[]... args)
                                     throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### onMessage

          public void onMessage(java.lang.String topic,
                                byte[]... parts)
                         throws java.lang.Exception

      Description copied from class: `BaseNode`
      invoked when topic received.

      only handle bus.event in BaseNode

      Specified by:
        `onMessage` in interface `BusClient.Handler`
      Overrides:
        `onMessage` in class `BaseNode`
      Throws:
        `java.lang.Exception`

    - #### subscribe

          public void subscribe(java.lang.String[] commands,
                                CommandObserver commandObserver)

      订阅command
      Parameters:
        `commands` - commands数组
        `commandObserver` - 当订阅的command被触发了，会通知到commandObserver

    - #### subscribeSync

          public void subscribeSync(java.lang.String[] commands,
                                    CommandObserver commandObserver)

      订阅command
      Parameters:
        `commands` - commands数组
        `commandObserver` - 当订阅的command被触发了，会通知到commandObserver

    - #### subscribe

          public void subscribe(java.lang.String command,
                                CommandObserver commandObserver)

      订阅command
      Parameters:
        `command` - 单个commad
        `commandObserver` - 当订阅的command被触发了，会通知到commandObserver

    - #### subscribe

          public void subscribe(java.lang.String[] nativeApis,
                                NativeApiObserver nativeApiObserver)

      订阅nativeApi
      Parameters:
        `nativeApis` - nativeApi数组
        `nativeApiObserver` - 当订阅的cnativeApi被触发了，会通知到nativeApiObserver

    - #### subscribeSync

          public void subscribeSync(java.lang.String[] nativeApis,
                                    NativeApiObserver nativeApiObserver)

      订阅nativeApi
      Parameters:
        `nativeApis` - nativeApi数组
        `nativeApiObserver` - 当订阅的cnativeApi被触发了，会通知到nativeApiObserver

    - #### subscribe

          public void subscribe(java.lang.String nativeApi,
                                NativeApiObserver nativeApiObserver)

      订阅nativeApi
      Parameters:
        `nativeApi` - 单个的nativeApi
        `nativeApiObserver` - 当订阅的cnativeApi被触发了，会通知到nativeApiObserver

    - #### subscribe

          public void subscribe(java.lang.String[] messages,
                                MessageObserver messageObserver)

      订阅messages
      Parameters:
        `messages` - message数组
        `messageObserver` - 当订阅的messages被触发了，会通知到messageObserver

    - #### subscribeSync

          public void subscribeSync(java.lang.String[] messages,
                                    MessageObserver messageObserver)

      订阅messages
      Parameters:
        `messages` - message数组
        `messageObserver` - 当订阅的messages被触发了，会通知到messageObserver

    - #### subscribe

          public void subscribe(java.lang.String message,
                                MessageObserver messageObserver)

      订阅message
      Parameters:
        `message` - 单个的message
        `messageObserver` - 当订阅的message被触发了，会通知到messageObserver

    - #### unSubscribe

          public void unSubscribe(CommandObserver observer)

      注销CommandObserver. 注销后，这个observer将不再会接受到command的消息
      Parameters:
        `observer` - observer

    - #### unSubscribeSync

          public void unSubscribeSync(CommandObserver observer)

      注销CommandObserver. 注销后，这个observer将不再会接受到command的消息
      Parameters:
        `observer` - observer

    - #### unSubscribe

          public void unSubscribe(NativeApiObserver observer)

      注销NativeApiObserver. 注销后，这个observer将不再会接受到NativeApi的消息
      Parameters:
        `observer` - observer

    - #### unSubscribeSync

          public void unSubscribeSync(NativeApiObserver observer)

      注销NativeApiObserver. 注销后，这个observer将不再会接受到NativeApi的消息
      Parameters:
        `observer` - observer

    - #### unSubscribe

          public void unSubscribe(MessageObserver observer)

      注销MessageObserver. 注销后，这个observer将不再会接受到messages的消息
      Parameters:
        `observer` - observer

    - #### unSubscribeSync

          public void unSubscribeSync(MessageObserver observer)

      注销MessageObserver. 注销后，这个observer将不再会接受到messages的消息
      Parameters:
        `observer` - observer

    - #### feedbackNativeApiResult

          public void feedbackNativeApiResult(java.lang.String nativeApi,
                                              DuiWidget duiWidget)

      反馈native api的执行结果
      Parameters:
        `nativeApi` - dui平台上技能定义的nativeapi
        `duiWidget` - duiwidget实例

    - #### getUiagentProt

          public int getUiagentProt()

    - #### getValidH5Path

          public java.lang.String getValidH5Path()
                                          throws DDSNotInitCompleteException

      获取资源包中H5资源的路径
      Returns:
        String H5资源index.html的路径
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### getWakeupWords

          @Deprecated
          public java.lang.String[] getWakeupWords()
                                                        throws DDSNotInitCompleteException

      Deprecated.
      此方法在Agent中已弃用，参见`WakeupEngine.getWakeupWords()` 获取当前的唤醒词
      Returns:
        String[] 唤醒词数组
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### getMinorWakeupWord

          @Deprecated
          public java.lang.String getMinorWakeupWord()
                                                          throws DDSNotInitCompleteException

      Deprecated.
      此方法在Agent中已弃用，参见`WakeupEngine.getMinorWakeupWord()` 获取当前的副唤醒词
      Returns:
        String 副唤醒词, 若无则返回null
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### enableWakeup

          @Deprecated
          public void enableWakeup()
                                        throws DDSNotInitCompleteException

      Deprecated.
      此方法在Agent中已弃用，参见`WakeupEngine.enableWakeup()` 开启唤醒
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### disableWakeup

          @Deprecated
          public void disableWakeup()
                                         throws DDSNotInitCompleteException

      Deprecated.
      此方法在Agent中已弃用，参见`WakeupEngine.disableWakeup()` 关闭唤醒
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### startDialog

          public void startDialog()
                           throws DDSNotInitCompleteException

      开启新对话

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

      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### startDialog

          public void startDialog(org.json.JSONObject jsonObject)
                           throws DDSNotInitCompleteException

      开启新对话

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

      Parameters:
        `jsonObject` - 自定义配置信息，可以配置回复语greeting等
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### stopDialog

          public void stopDialog()
                          throws DDSNotInitCompleteException

      停止当前对话，包括停止合成，取消识别等
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### openTip

          public void openTip()
                       throws DDSNotInitCompleteException

      打开tip提示音

      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### closeTip

          public void closeTip()
                        throws DDSNotInitCompleteException

      关闭tip提示音
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### stopDialog

          public void stopDialog(org.json.JSONObject jsonObject)
                          throws DDSNotInitCompleteException

      停止当前对话，包括停止合成，取消识别等
      Parameters:
        `jsonObject` - 自定义配置信息，可以配置合成文本，内部会在合成完该文本后停止当前对话
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### triggerIntent

          public void triggerIntent(java.lang.String skill,
                                    java.lang.String task,
                                    java.lang.String intent,
                                    java.lang.String slots)
                             throws DDSNotInitCompleteException

      Deprecated. 主动触发意图的接口

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

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

    - #### triggerIntent

          public void triggerIntent(SkillIntent skillIntent)
                             throws DDSNotInitCompleteException

      主动触发意图的接口

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

      Parameters:
        `skillIntent` - 技能意图
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### avatarClick

          public void avatarClick()
                           throws DDSNotInitCompleteException

      点击唤醒/停止识别/打断播报 操作接口
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### avatarClick

          public void avatarClick(java.lang.String greeting)
                           throws DDSNotInitCompleteException

      点击唤醒/停止识别/打断播报 操作接口
      Parameters:
        `greeting` - 在唤醒时附带一则欢迎语
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### avatarPress

          public void avatarPress()
                           throws DDSNotInitCompleteException

      按下按键接口
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### avatarRelease

          public void avatarRelease()
                             throws DDSNotInitCompleteException

      释放按键接口
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### getResourceVersion

          public java.lang.String getResourceVersion()

      获取当前的产品资源版本号
      Returns:
        String 资源版本号

    - #### speak

          @Deprecated
          public void speak(java.lang.String text,
                                        int priority)
                                 throws DDSNotInitCompleteException

      Deprecated.
      此方法已在Agent中弃用，建议使用TTSEngine中的同名方法`TTSEngine.speak(String, int)`

      播报文本，支持SSML

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

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

    - #### speak

          @Deprecated
          public void speak(java.lang.String text,
                                        int priority,
                                        java.lang.String ttsId,
                                        int audioFocus)
                                 throws DDSNotInitCompleteException

      Deprecated.
      此方法已在Agent中弃用，建议使用TTSEngine中的同名方法`TTSEngine.speak(String, int, String, int)`

      播报文本，支持SSML

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

      Parameters:
        `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`
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### shutup

          @Deprecated
          public void shutup(java.lang.String ttsId)
                                  throws DDSNotInitCompleteException

      Deprecated.
      此方法已在Agent中弃用，建议使用TTSEngine中的同名方法`TTSEngine.shutup(String)`

      停止播报接口

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

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

    - #### setAuthCode

          public void setAuthCode(AuthInfo authInfo,
                                  TokenListener tokenListener)
                           throws DDSNotInitCompleteException

      dca授权登录， 该方法需要在SDK初始化后使用; 此方法应该在 OathSDK 登录获取 authCode 后使用 与之对应的方法是 `clearAuthCode()`
      Parameters:
        `tokenListener` - 返回成功和错误的信息
      Throws:
        `DDSNotInitCompleteException`

    - #### clearAuthCode

          public void clearAuthCode()
                             throws DDSNotInitCompleteException

      清除 authcode, 该方法需要在SDK初始化后使用; 与之对应的方法是 `setAuthCode(AuthInfo, TokenListener)`
      Throws:
        `DDSNotInitCompleteException`

    - #### setDDSMode

          public void setDDSMode(int mode)
                          throws DDSNotInitCompleteException

      设置场景模式
      Parameters:
        `mode` - 场景模式, 参考`DDSMode`
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### setDuplexMode

          public void setDuplexMode(Agent.DuplexMode duplexMode)
                             throws DDSNotInitCompleteException

      设置dds策略
      Parameters:
        `duplexMode` - 策略 DuplexMode.HALF_DUPLEX:一问一答策略, DuplexMode.FULL_DUPLEX:全双工策略
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### getDuplexMode

          public Agent.DuplexMode getDuplexMode()
                                         throws DDSNotInitCompleteException

      获取当前的运行模式
      Returns:
        DuplexMode.HALF_DUPLEX:一问一答策略, DuplexMode.FULL_DUPLEX:全双工策略
      Throws:
        `DDSNotInitCompleteException`

    - #### setEnableVoip

          public void setEnableVoip(boolean enableVoip)
                             throws DDSNotInitCompleteException

      设置是否使用voip功能
      Parameters:
        `enableVoip` - true/false
      Throws:
        `DDSNotInitCompleteException`

    - #### feedPcm

          public void feedPcm(byte[] pcm)

      外部录音机拾音接口

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

      Parameters:
        `pcm` - 音频数据

    - #### feedSbc

          public void feedSbc(byte[] sbc)

      外部录音机拾音接口

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

      Parameters:
        `sbc` - sbc格式的音频数据

    - #### feedOpus

          public void feedOpus(byte[] opus)

      外部录音机拾音接口

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

      Parameters:
        `opus` - sbc格式的音频数据

    - #### setRecorderMode

          public void setRecorderMode(Agent.RecorderMode recorderMode)
                               throws DDSNotInitCompleteException

      设置外部录音机拾音模式

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

      Parameters:
        `recorderMode` - 音频格式枚举
      Throws:
        `DDSNotInitCompleteException`

    - #### setTTSRequestListener

          public void setTTSRequestListener(TTSRequestListener listener)
                                     throws DDSNotInitCompleteException

      外部TTS引擎注册接口

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

      Parameters:
        `listener` - TTS请求监听器。如果为空，则为解除注册
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### notifyTTSEnd

          public void notifyTTSEnd()

      外部TTS播报结束通知接口

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

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

    - #### updateVocabs

          public java.lang.String updateVocabs(VocabIntent... vocabs)
                                        throws DDSNotInitCompleteException

      更新词库接口

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

      Parameters:
        `vocabs` - 需要更新的词库列表
      Returns:
        请求ID，用于追踪sys.upload.result
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception
      See Also:
        `VocabIntent`

    - #### updatePhraseHints

          public void updatePhraseHints(PhraseHintsIntent... phraseHints)
                                 throws DDSNotInitCompleteException

      更新热词识别接口(请求级别)

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

      Parameters:
        `phraseHints` - 需要更新的热词识别列表
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception
      See Also:
        `PhraseHintsIntent`

    - #### updateVocab

          @Deprecated
          public java.lang.String updateVocab(java.lang.String vocabName,
                                                          java.lang.String[] contents,
                                                          boolean addOrDelete)
                                                   throws DDSNotInitCompleteException

      Deprecated. Replaced by `updateVocabs(VocabIntent...)`
      Throws:
        `DDSNotInitCompleteException`

    - #### updateDeviceInfo

          @Deprecated
          public java.lang.String updateDeviceInfo(java.lang.String deviceJson)
                                                        throws DDSNotInitCompleteException

      Deprecated. Replaced by `updateProductContext(ContextIntent)`} `updateSkillContext(ContextIntent)`}
      更新设备状态，用来保存设备的一些状态，比如：蓝牙是否打开 更新结果可以通过sys.upload.result消息来获取

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

    - #### updateProductContext

          public java.lang.String updateProductContext(ContextIntent intent)
                                                throws DDSNotInitCompleteException

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

    - #### updateSkillContext

          public java.lang.String updateSkillContext(ContextIntent intent)
                                              throws DDSNotInitCompleteException

      更新技能配置，需要调用ContextIntent.setSkillId设置技能ID 更新结果可以通过sys.upload.result消息来获取
      Parameters:
        `intent` - 请求的ContextIntent对象，包括key、value、skillId。
      Returns:
        请求的ID，用于追踪sys.upload.result
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### endSkillInDialog

          @Deprecated
          public java.lang.String endSkillInDialog()
                                                        throws DDSNotInitCompleteException

      Deprecated. Replaced by `updateDispatchEvent(JSONObject)`}
      在多轮对话中强制设置为首轮
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### updateDispatchEvent

          public java.lang.String updateDispatchEvent(org.json.JSONObject obj)
                                               throws DDSNotInitCompleteException

      多模态事件同步,该接口用于客户端给对话中控发送一个事件
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### getProductContext

          public java.lang.Object getProductContext(java.lang.String inputKey)
                                             throws DDSNotInitCompleteException

      获取产品的配置信息
      Parameters:
        `inputKey` - 配置项名称
      Returns:
        配置项值
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### getSkillContext

          public java.lang.Object getSkillContext(java.lang.String skillId,
                                                  java.lang.String inputKey)
                                           throws DDSNotInitCompleteException

      获取技能的配置信息
      Parameters:
        `skillId` - 技能ID
        `inputKey` - 配置项名称
      Returns:
        配置项值
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### clearDeviceInfo

          public java.lang.String clearDeviceInfo(java.lang.String key)
                                           throws DDSNotInitCompleteException

      清空客户端上传的设备信息
      Parameters:
        `key` - 不为null时，清空指定key的设备信息，如"state" 为null时，清空所有设备信息
      Returns:
        请求ID，用于追踪sys.upload.result
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### getDeviceInfo

          public java.lang.String getDeviceInfo()
                                         throws DDSNotInitCompleteException

      获取客户端保存的设备信息
      Returns:
        设备信息的jsonString，例如：{"bluetooth":"disconnected"}
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### updateMinorWakeupWord

          @Deprecated
          public void updateMinorWakeupWord(java.lang.String word,
                                                        java.lang.String pinyin,
                                                        java.lang.String threshold,
                                                        java.lang.String[] greetings)
                                                 throws DDSNotInitCompleteException

      Deprecated.
      此接口在Agent中已弃用，参见`WakeupEngine.updateMinorWakeupWord(String, String, String, String[])` 更新副唤醒词的接口

      支持设置一个副唤醒词，重复调用会以最新的副唤醒词为准

      Parameters:
        `word` - 副唤醒词, 若设置null，则清空当前的副唤醒词
        `pinyin` - 副唤醒词的拼音
        `threshold` - 副唤醒词的阈值, 若设置null，则自动估算
        `greetings` - 副唤醒词的欢迎语, 若设置null，则与主唤醒词保持一致
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### getASREngine

          public ASREngine getASREngine()

      获取ASR引擎
      Returns:
        ASREngine实例

    - #### getTTSEngine

          public TTSEngine getTTSEngine()

      获取TTS引擎
      Returns:
        TTSEngine实例

    - #### getWakeupEngine

          public WakeupEngine getWakeupEngine()

      获取Wakeup引擎
      Returns:
        Wakeup实例

    - #### getVprintEngine

          public VprintEngine getVprintEngine()

      获取Vprint引擎
      Returns:
        Vprint实例

    - #### updateCommandWakeupWord

          @Deprecated
          public void updateCommandWakeupWord(java.lang.String[] actions,
                                                          java.lang.String[] words,
                                                          java.lang.String[] pinyin,
                                                          java.lang.String[] threshold,
                                                          java.lang.String[][] greetings)
                                                   throws DDSNotInitCompleteException

      Deprecated.
      此接口在Agent中已弃用，参见`WakeupEngine.updateCommandWakeupWord(String[], String[], String[], String[], String[][])` 更新命令唤醒词的接口，这类唤醒词会在唤醒之后执行一条指令，不能打断正在播报的语音

      支持设置多个命令唤醒词，所以参数为数组，重复调用会以最新的命令唤醒词数组为准。

      Parameters:
        `actions` - 命令唤醒词对应的command命令（必须）
        `words` - 命令唤醒词的汉字（必须）
        `pinyin` - 命令唤醒词的拼音（必须）
        `threshold` - 命令唤醒词的阈值（必须
        `greetings` - 命令唤醒词对应的唤醒语，一个唤醒词可以设置多条欢迎语，所以参数为二维数组，如果想要某个唤醒词不要欢迎语，那么该第二维数组的string可以设置为空字符串""
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### clearCommandWakeupWord

          @Deprecated
          public void clearCommandWakeupWord()
                                                  throws DDSNotInitCompleteException

      Deprecated.
      此接口在Agent中已弃用，参见`WakeupEngine.clearCommandWakeupWord()` 清空命令唤醒词的接口
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### clearShortCutWakeupWord

          @Deprecated
          public void clearShortCutWakeupWord()
                                                   throws DDSNotInitCompleteException

      Deprecated.
      此接口在Agent中已弃用，参见`WakeupEngine.clearShortCutWakeupWord()` 清空打断唤醒词的接口
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### updateShortcutWakeupWord

          @Deprecated
          public void updateShortcutWakeupWord(java.lang.String[] words,
                                                           java.lang.String[] pinyin,
                                                           java.lang.String[] threshold)
                                                    throws DDSNotInitCompleteException

      Deprecated.
      此接口在Agent中已弃用，参见`WakeupEngine.updateShortcutWakeupWord(String[], String[], String[])` 更新打断唤醒词的接口,这类唤醒词能打断正在播报的语音并且将唤醒词送入识别

      支持设置多个打断唤醒词，所以参数为数组，重复调用会以最新的打断唤醒词数组为准。

      Parameters:
        `words` - 打断唤醒词的汉字（必须）
        `pinyin` - 打断唤醒词的拼音（必须）
        `threshold` - 打断唤醒词的阈值（必须
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### setVadPauseTime

          @Deprecated
          public boolean setVadPauseTime(long millis)
                                              throws DDSNotInitCompleteException

      Deprecated.
      设置VAD后端停顿时间的接口

      若VAD在用户说话时停顿超过一定的时间，则认为用户已经说完，发出sys.vad.end消息，结束录音。

      Parameters:
        `millis` - 后端停顿时间，单位为毫秒。默认值为500毫秒。
      Returns:
        true-设置成功；false-设置失败
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### getVadPauseTime

          @Deprecated
          public long getVadPauseTime()
                                           throws DDSNotInitCompleteException

      Deprecated.
      获取VAD后端停顿时间的接口
      Returns:
        millis 后端停顿时间，单位为毫秒。
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### sendText

          public void sendText(java.lang.String text)
                        throws DDSNotInitCompleteException

      输入文本的接口

      跳过对话中的识别过程，直接开始对话中的语义理解

      若当前没有在对话中，则以文本作为首轮说法，新发起一轮对话请求 若当前正在对话中，则跳过识别，直接发送文本

      Parameters:
        `text` - 输入的文本内容
      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### getSkillList

          public java.util.List<SkillConfig> getSkillList()
                                                   throws DDSNotInitCompleteException

      Throws:
        `DDSNotInitCompleteException`

    - #### pauseDialog

          public void pauseDialog()
                           throws DDSNotInitCompleteException

      暂停当前对话

      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### resumeDialog

          public void resumeDialog()
                            throws DDSNotInitCompleteException

      恢复当前对话

      Throws:
        `DDSNotInitCompleteException` - 如果DDS没有初始化完成，会抛出exception

    - #### setDMCallback

          @Deprecated
          public void setDMCallback(DMCallback callback)

      Deprecated. 该接口极端情况会导致rpc死锁问题，已舍弃。建议使用支持`topic`的{`setDMTaskCallback(DMTaskCallback)`}接口
      此接口支持修改对话中的语音播报,修改文本展示等功能
      Parameters:
        `callback` - 对话监听器

    - #### updatePermanentSkill

          public void updatePermanentSkill(org.json.JSONArray jsonArray)
                                    throws DDSNotInitCompleteException

      新增技能锁定接口，让用户说的话只落在锁定的技能里
      Parameters:
        `jsonArray` - skillId array, [ {"skillId": "123123"}, {"skillId": "123123"}, {"skillId": "123123"}, ]
      Throws:
        `DDSNotInitCompleteException`

    - #### setDMTaskCallback

          public void setDMTaskCallback(DMTaskCallback dmTaskCallback)

      此接口支持修改对话中的语音播报,修改文本展示等功能
      Parameters:
        `dmTaskCallback` - 对话监听器

    - #### setCustomTips

          public void setCustomTips(org.json.JSONObject obj)
                             throws DDSNotInitCompleteException

      此接口支持动态修改 custom tips
      Parameters:
        `obj` -

        取值：JSON字符串，如：
        { "71304":"这是识别结果为空的自定义播报", "71305":"这是语义结果为空的自定义播报", "71308":"这是进入闲聊技能的自定义播报", "713**":"*****" }

      Throws:
        `DDSNotInitCompleteException`

    - #### onNoObserverAttached

          public void onNoObserverAttached(java.lang.String topic)

    - #### onFirstObserverAttached

          public void onFirstObserverAttached(java.lang.String topic)

    - #### getSubscribedTopics

          public java.util.Set<java.lang.String> getSubscribedTopics()