如何以编程方式结束 Pepper 上的聊天?

How can I programmatically end a Chat on Pepper?

我有一个带有以下主题文件的简单聊天机器人,我想在用户说出关键短语(例如“再见”)时结束聊天(并阻止 Pepper 收听)。

u: (hello) hi

u: (my name is _*) nice to meet you 

u: (bye) goodbye %endChat

但是我还没有找到任何操作(smth 就像 chat.end())和文档状态 "If you want to stop the chat when a qiChatbot is stopped you must track the state of the QiChatbot and manually stop the chat when the QiChatbot ends."

知道如何/监听什么事件来做到这一点吗? 我正在使用基于 Android / Java 的 Pepper 版本。

您可以在QiChat中使用^endDiscuss关键字结束当前聊天。

在QiChat:

u: (hello) hi
u: (my name is _*) nice to meet you 
u: (bye) goodbye ^endDiscuss(endReason)

然后在您的应用程序中监听 QiChatbot 结束事件,例如 this,当它被触发时,关闭聊天。正如文档所说,如果您有多个结束条件并想做不同的事情,您可以从 QiChat 传递一个结束原因。

在Java中:

// Create a QiChatbot
final QiChatbot qichatbot = QiChatbotBuilder.with(qiContext)
                                            .withTopic(topic)
                                            .build();

// Create a Chat
final Chat chat = ChatBuilder.with(qiContext)
                             .withChatbot(qichatbot)
                             .build();

// Execute the chat asynchronously
final Future<Void> fchat = chat.async().run();

// Stop the chat when the qichatbot is done
qichatbot.addOnEndedListener(endReason -> {
    Log.i(TAG, "qichatbot end reason = " + endReason);
    fchat.requestCancellation();
});