我正在使用Microsoft的Bot Framework / Bot Builder for C#.NET / LUIS构建测试机器人。它部署在Azure上。我的测试项目的想法是向用户发送提醒。
例如,当用户要求“在两个小时内提醒我购买牛奶”时,用户应在两个小时内发起对话或对现有对话发送回复。
我没有问题,可以使用LUIS将自然语言解析为日期和任务,但是我不知道如何安排任务,以便框架稍后以某种方式向用户发送回复。
我已经阅读了文档,并在https://docs.botframework.com/zh-cn/csharp/builder/sdkreference/上查看了示例,并在StackOverflow上进行了搜索,但是该框架似乎不支持它。我也查看过Azure Scheduler,但它似乎非常昂贵,即使我的机器人只有100个用户,每个用户都有一个预定任务。
安排任务以使机器人在指定的时间向用户发送消息的另一种方式是什么?
因此,如果我理解正确,那么您的问题涉及两个部分:
1.如何开始对话
在v3.0中,MS引入了一种新的方式来开始新的对话(组或1对1)。参考:https : //docs.botframework.com/zh-CN/csharp/builder/sdkreference/routing.html#conversation
样例代码:
var connector = new ConnectorClient(incomingMessage.ServiceUrl);
var ConversationId = await connector.Conversations.CreateDirectConversationAsync(incomingMessage.Recipient, incomingMessage.From);
IMessageActivity message = Activity.CreateMessageActivity();
message.From = botChannelAccount;
message.Recipient = new ChannelAccount() { name: "Larry", "id":"@UV357341"};
message.Conversation = new ConversationAccount(id: ConversationId.Id);
message.Text = "Hello";
message.Locale = "en-Us";
var reply = await connector.Conversations.ReplyToActivityAsync(message);
2.如何安排工作
可以通过多种方式进行,您可以使用外部队列服务,Azure Web作业,Web角色,也可以尝试在ASP.NET本身中注册。
Hangfire(http://hangfire.io/)是我的机器人所使用的。
代码示例:
BackgroundJob.Schedule(
() => TriggerConversation(), // <= the start conversation code here
TimeSpan.FromDays(1)); // <= when the job should be ran
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句