【问题标题】:Bot Framework, promptchoice a list of objectBot Framework,提示选择对象列表
【发布时间】:2017-07-26 16:13:29
【问题描述】:

我想在搜索小部件后询问用户想要使用哪个小部件,这会产生一个小部件列表。我希望能够单击小部件的名称,然后获取小部件的 URL。当我运行以下代码时,我得到invalid need: expected Call, have Poll

public async Task SelectAfterSearch(IDialogContext context, List<Widget> widgetlist)
{
    PromptDialog.Choice(context, this.OnWidgetSelected, GetListOfWidgets("list"), "Which one do you want more information about?", "Not a valid option", 3);
}

public async Task OnWidgetSelected(IDialogContext context, IAwaitable<Widget> result)
{
    var chosen = await result;
    await context.PostAsync($"You have chosen {chosen.Name}: {chosen.Url}");
}

【问题讨论】:

    标签: c# .net frameworks bots botframework


    【解决方案1】:

    您在OnWidgetSelected 方法的末尾缺少context.Wait

    public async Task OnWidgetSelected(IDialogContext context, IAwaitable<Widget> result)
    {
        var chosen = await result;
        await context.PostAsync($"You have chosen {chosen.Name}: {chosen.Url}");
        context.Wait(...) // => usually you Wait on the MessageReceived method.
    }
    

    【讨论】:

    • 没有。可能是因为它没有收到结果。但是提示对话框永远不会执行
    • public async Task OnWidgetSelected(IDialogContext context, IAwaitable&lt;Widget&gt; result) { await context.PostAsync($"Before await result"); var chosen = await result; await context.PostAsync($"After await result");
    • 这只会发回“等待结果之前”。
    • Right.. 所以可能会抛出异常。尝试围绕等待结果进行尝试/捕获...并检查异常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    相关资源
    最近更新 更多