我正在使用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()));
}
如何在不等待用户请求的情况下开始回复? 谢谢!
答案 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为例)。