c# bot framework - 在resumeafter中删除StateForUser

c# bot framework - DeleteStateForUser in resumeafter

是否可以在表单生成器对话框后使用 DeleteStateForUser in resumAfter 离开当前对话框?

    context.Call(searchFormDialog, this.ResumeAfterBuildSatisfactionForm);


    private IForm<SatisfactionQuery> BuildSatisfactionForm()
    {
        OnCompletionAsyncDelegate<SatisfactionQuery> processSearch = async (context, state) =>
        {
            await context.PostAsync($"Thx");
        };

        return new FormBuilder<SatisfactionQuery>()
            //.Message("")
            .AddRemainingFields()
            .OnCompletion(processSearch)
            .Build();
    }

private async Task ResumeAfterBuildSatisfactionForm(IDialogContext context, IAwaitable<SatisfactionQuery> result)
{
  //but i don't have Activity here :-(
activity.GetStateClient().BotState.DeleteStateForUser(activity.ChannelId,activity.From.Id);
}

您可以使用 ServiceUrl 创建 StateClient:

private async Task ResumeAfterBuildSatisfactionForm(IDialogContext context, IAwaitable<SatisfactionQuery> result)
{
    var msg = context.MakeMessage();
    var stateClient = new StateClient(new Uri(msg.ServiceUrl));
    stateClient.BotState.DeleteStateForUser(msg.ChannelId, msg.From.Id);
}