botframework - 如何取消机器人框架中的对话框?
问题描述
我试图让我的机器人用户在等待特别慢的 api 时保持忙碌。一旦api返回了我的结果,我将用户转发到一个新对话框并提供一个取消令牌以取消对话框。
当我在取消令牌上调用 Cancel() 时,我希望下面的代码退出stallUntilCompletedDialog
public async Task ResumeAfterFirstDialog(IDialogContext context,
IAwaitable<API.Models.Request> result)
{
var requestData = await result;
var response = new API.Models.Response();
var cancellationToken = new CancellationTokenSource();
Task.Run(async () =>
{
response = await _slowApi.CallApi(requestData, accessToken);
cancellationToken.Cancel();
});
var stallUntilCompletedDialog = new StallUntilCompletedDialog<ApiResponse>();
await context.Forward(stallUntilCompletedDialog,
ResumeAfterCompletedDialog,
result,
cancellationToken.Token);
}
ResumeAfterCompletedDialog 永远不会启动,我被困在停顿对话框中。当 api 响应时,如何实现对话框退出,以及如何使 api 响应在我的 ResumeAfterCompletedDialog 中可用?
解决方案
推荐阅读
- python - 这段代码用正数填充列表有什么问题?
- c# - 第一次使用c#,它说我有错误CS1513
- python - 如何实现 log_softmax() 以更快的速度和数值稳定性计算其值(和梯度)?
- python - HuggingFace BERT `inputs_embeds` 给出了意想不到的结果
- c# - 在 IdentityServer4 中实现 Cookie 授权流程
- javascript - 您的 GraphQL 查询中出现错误:无法在类型“StrapiPropiedadesImagen”上查询字段“childImageSharp”
- javascript - 如何将字符串从 LocalStorage 转换为 int /float
- java - 将 JsonArray 传递给 writeValueAsString 时,ObjectMapper 抛出异常
- ios - IOS In App 购买不可用产品
- javascript - 我如何将数据库数组值从 PHP 传递到 ajax 以及从 ajax 传递到 PHP(使用 ajax post 方法)