java - 增加 DialogFlow (api.ai) Android SDK 中的监听超时

标签 java android chatbot dialogflow-es

我做了什么?

我使用 api.ai 的 Android SDK(又名 DialogFlow)创建了一个聊天机器人。我的聊天机器人以语音形式接收输入,然后使用 Google TTS 将响应从文本转换回语音。

我通过像这样循环监听器创建了一个始终监听模式:-

@Override
public void onListeningCanceled() {
   aiService.resume();
}

@Override
public void onListeningFinished() {
   aiService.resume();
}

@Override
public void onError(AIError error) {
   aiService.resume();
}

这工作得很好,因为在调用任何这些方法后监听会自动恢复。

实际问题

但是当机器人说话(即将文本响应转换为语音)并且监听器已经开始监听用户的一些输入时,就会出现问题。

听者等待响应大约 5-6 秒,但此时机器人实际上正在说话,因此听者无法正确收听。

我需要什么?

我想要一个解决方案,其中监听器将等到机器人说出完整的响应,然后监听器再次恢复监听。

这将使机器人更具对话性,并且用户无需每次都按录制按钮。

最佳答案

@Override
public void onResult(ai.api.model.AIResponse response) {


    final Result result = response.getResult();

    String message = result.getResolvedQuery();
    ChatMessage chatMessage0 = new ChatMessage(message, "user");
    ref.child("chat").push().setValue(chatMessage0);


     final String reply = result.getFulfillment().getSpeech();
    final ChatMessage chatMessage = new ChatMessage(reply, "bot");
    ref.child("chat").push().setValue(chatMessage);

    toSpeech.speak(String.valueOf(reply), TextToSpeech.QUEUE_FLUSH, null);


    // this is what you seek!!
    synchronized (aiService) {

        try {
            aiService.wait(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    //this is how i managed to make the bot listen any time! copy and paste all the 
    //method and you will see! 
    } aiService.startListening();


}

关于java - 增加 DialogFlow (api.ai) Android SDK 中的监听超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50405744/

相关文章:

java - 使用 Apache Spark 将数据从一个数据库传输到另一个数据库的 ETL 过程

javascript - 带破折号分隔符的 RegEX 14 位数字验证

java - Kafka消费者启动后是否可以编辑值? (来自 org.apache.kafka.clients.consumer)

java - 在父级或祖先上下文中找不到 Onclick 方法

java - 堆栈使用Processing(基于JAVA)

java - 在textView上显示文本

java - Android 中的国家/地区代码选择器无法获取国家/地区代码

reactjs - 如何使用 React js 将单词建议附加到机器人的聊天输入区域?

node.js - 获取机器人发送消息和用户回复之间的持续时间

python - Twilio 和 Python 的 session 聊天机器人无法正常工作