稍后如何在 bot 框架中发送消息?

How to send message later in bot framework?

我希望我的机器人能够稍后发送一些回复。就像在闹钟中一样,当用户说,在早上 5 点对我执行 ping 命令时,我想在早上 5 点向用户发送消息。如何发送消息却没有收到消息?

您需要至少收到一封邮件才能知道收件人的地址。您需要保存传入消息中的寻址信息。我认为最简单的方法是保存整个消息。

节点:

var reply = session.message; // address: reply.address
// ...
reply.text = 'Wake up!';
bot.send(reply);

C#:

var reply = activity.CreateReply(""); // reply.Recipient, reply.Conversation, etc.
// ...
reply.Text = "Wake up!";
ConnectorClient connector = new ConnectorClient(new Uri(reply.ServiceUrl));
await connector.Conversations.ReplyToActivityAsync(reply);

无需回复 activity 请求,您可以像下面这样向他发送消息。我要提一下,你必须有用户的 ID,这意味着至少用户应该向 bot 发送消息,以存储他的 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);

以上代码来自here.