[英]How to send message after inactivity time with Bot Framework C# SDK?
我正在使用B#Framework的C#SDK开发机器人,我希望我的机器人在没有客户活动的情况下发送满意的消息。
我尝试使用Task,但首先Task不可序列化,所以如果我收到一条新消息,我就无法将任务存储到Dispose它,而第二个PrompChoice会抛出一条带有消息的'Microsoft.Bot.Builder.Internals.Fibers.InvalidNeedException' :“无效需要:预期通话,等待”
我试图用一个context.sendAsync(“Hi”)替换我的PromptChoice,这里没有异常,但消息永远不会被发送到模拟器。
如果有人知道如何做到这一点,我将不胜感激。
编辑:
我用这个样本来完成这项工作:
using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, message))
{
var botData = scope.Resolve<IBotData>();
await botData.LoadAsync(CancellationToken.None);
IDialogTask task = scope.Resolve<IDialogTask>();
//interrupt the stack
var dialog = new InactivityDialog();
task.Call(dialog.Void<object, IMessageActivity>(), null);
//stack.Post<InactivityDialog>(dialog, (c, item) => { return Task.CompletedTask; });
await task.PollAsync(CancellationToken.None);
//flush dialog stack
await botData.FlushAsync(CancellationToken.None);
}
这在我的静态messageController中:
var builder = new ContainerBuilder();
builder.Register(c => ((ClaimsIdentity)HttpContext.Current.User.Identity).GetCredentialsFromClaims())
.AsSelf()
.InstancePerLifetimeScope();
builder.Update(Conversation.Container);
但是当HttpContext.Current尝试从作用域解析IBotData时,它是null
该功能目前不在机器人框架中。 您必须创建自己的自定义代码,以保存对话信息并更新您自己的计时器(如果有活动)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.