【问题标题】:How to end a conversation?如何结束对话?
【发布时间】:2017-04-27 12:11:50
【问题描述】:

我已经使用 Bot Framework 创建了一个机器人,并且我正在使用 conversationID 来维护我的后端对话引擎的状态。我在结束对话的文档中找不到。在某些时候,用户必须能够向对话发出“结束或退出”信号,以便下次他们开始对话时,它会得到一个新的conversationID。我认为这应该是一项简单的任务。我正在使用默认的回显模板,只是用我的类的方法替换了计算字母行的数量,该方法返回要发送回用户的文本。

【问题讨论】:

  • 请不要在 Stack Exchange 网络上使用主题标签。 (显然他们的文档告诉你这样做,呃......)
  • 文档不再引用 StackOverflow 上的主题标签。

标签: c# .net botframework


【解决方案1】:

现在有一个 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);
}

【讨论】:

  • 我认为这是针对 v3 而不是 v4。 v4 Bot Framework 不支持 IBotToUser。请问如何在v4中使用它?
  • @noobprogrammer 我已经用 v4 示例更新了答案
【解决方案2】:

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

【讨论】:

  • 据我所知,.Net 框架中没有 session.endConversation()。这就是我发布问题的原因。
【解决方案3】:

有一种更新、更短的方式1

context.EndConversation(EndOfConversationCodes.CompletedSuccessfully);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多