如何终止Bot对话(并获取客户详细信息)?

时间:2016-04-18 20:00:48

标签: botframework

我有一个简单的机器人如下:

[Serializable]
[Template(TemplateUsage.NotUnderstood, "I do not understand \"{0}\".", "Try again, I don't get \"{0}\".")]
class MyOrder
{
    public string Subject;
    public string Description;

    public static IForm<MyOrder> BuildForm()
    {

        return new FormBuilder<MyOrder>()
                    .Field(nameof(MyOrder.Subject), "What Subject should I use?")
                    .Field(nameof(MyOrder.Description), "And what Description?")
                    .AddRemainingFields()
                    .OnCompletionAsync(MyFormComplete)
                    .Build();
    }


    private static async Task MyFormComplete(IDialogContext context, MyOrder order)
    {

        if (order != null)
        {
            await context.PostAsync($"Created. Number is 9833");
        }
        else
        {
            await context.PostAsync("Form returned empty response!");
        }

    }

表单完成后,将进行MyFormComplete回调。

第一个问题 - 如何访问该功能中的客户端详细信息?我需要知道Skype句柄,以便我可以将其映射到内部用户。

其次 - 完成表格后,我无法开始新表格。无论我在客户端输入什么,它都会一直触发回调功能。必须有一种方法来终止会话/对话,以便Skype客户端的下一个文本将启动新的对话/表单。是吗?

1 个答案:

答案 0 :(得分:1)

了解如何在Dialog的CompletionDelegate中获取Skype来电显示。在构建对话框之前,只需将消息的From详细信息添加到MessageController内的message.BotUserData。

message.BotUserData = JObject.FromObject(message.From)

然后我可以在该回调中的上下文中访问它。