Bot框架 - 多个延迟答案

时间:2017-01-23 16:21:59

标签: .net botframework

我正在使用Microsft BotFramework。

过程: 客户要求我的机器人生成一个特定的代码 1.机器人回答客户他正在生成代码。 2.大约10秒钟后,机器人将代码发送给客户端,没有任何其他请求。

问题: 我正在使用

ReplyToActivityAsync(...)

在return语句之前发送两个答案的方法。 在这种情况下,2个答案之间存在超时错误。

这是我的代码:

        if (activity.Type == ActivityTypes.Message)
        {
            ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));

            // return our reply to the user
            string welcomeMessage = "[...] Reply 1 [...]"
            await connector.Conversations.ReplyToActivityAsync(activity.CreateReply(welcomeMessage));

            // MyApi.GetCode() takes about 10 secs
            await connector.Conversations.ReplyToActivityAsync(activity.CreateReply(MyAPI.GetCode()));
        }

如何在不等待用户请求的情况下开始回复? 谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用收件人的ID发送邮件,而无需用户的请求,如下所示。因此,您可以在从api呼叫成功响应并延迟时,也可以在另一个功能中向用户发送消息。

Integer

在上文中,您可以使用相关频道中的ID向用户发送消息。此外,string userId ="123456789"; // For Example string serviceUrl = "https://telegram.botframework.com"; // For Example var connector = new ConnectorClient(new Uri(serviceUrl)); IMessageActivity newMessage = Activity.CreateMessageActivity(); newMessage.Type = ActivityTypes.Message; newMessage.From = new ChannelAccount("<BotId>", "<BotName>"); newMessage.Conversation = new ConversationAccount(false, userId); newMessage.Recipient = new ChannelAccount(userId); newMessage.Text = "<MessageText>"; await connector.Conversations.SendToConversationAsync((Activity)newMessage); 是基于相关频道定义的(此处,Telegram为例)。