如何结束对话?

How to end a conversation?

我使用 Bot Framework 创建了一个机器人,我正在使用 conversationID 来维护我的后端对话引擎的状态。我在结束对话的文档中找不到。在某些时候,用户必须能够向对话发出 "end, or exit" 信号,以便下次他们开始对话时,它会得到一个新的 conversationID。我认为这应该是一项简单的任务。我正在使用默认的 echo 模板,只是用 class 的方法替换了字母数行,returns 将文本发送回用户。

A json 网络令牌 (jwt) 仅在一次聊天中可用。所以它再次获得 converstionId。 session.endConversation() 方法提供了一种方便的方法来快速终止与用户的对话。用于结束对话。

现在有一个 ActivityTypes.EndOfConversation(这已经在 sdk 中了)。

这是一种使用方法: v3

public static async Task EndConversation(this IBotToUser botToUser, string code = EndOfConversationCodes.CompletedSuccessfully, CancellationToken cancellationToken = default(CancellationToken))
{
    var message = botToUser.MakeMessage();
    message.Type = ActivityTypes.EndOfConversation;
    message.AsEndOfConversationActivity().Code = code;

    await botToUser.PostAsync(message, cancellationToken);
}

这也应该在未来的版本中:GitHub Pull Request


v4

public static async Task EndConversation(this ITurnContext turnContext, string code = EndOfConversationCodes.CompletedSuccessfully, CancellationToken cancellationToken = default(CancellationToken))
{
    var endOfConversation = Activity.CreateEndOfConversationActivity();
    endOfConversation.Code = code;
    await turnContext.SendActivityAsync(endOfConversation, cancellationToken);
}

有更新更短的方法1:

context.EndConversation(EndOfConversationCodes.CompletedSuccessfully);