每次在Yammer和Bot框架上提到某人或接收私人消息时,调用web服务或运行代码
本文关键字:消息 调用 代码 运行 服务 web Bot Yammer 框架 某人 | 更新日期: 2023-09-27 18:11:55
我正试图找到一种方法来运行一段代码(MS Bot框架,c#托管在Azure上)每次有人在Yammer上被提及或收到直接消息。
我尝试过的两种方法:
1)我现在想到的最好的办法是启用来自Yammer的电子邮件通知,并观察来自notifications@yammer.com
的电子邮件的邮箱。微软的Bot框架有一个一键式监控电子邮件的设置,所以它是有效的。
但是通知邮件会延迟15分钟到达,这使得它非常无用,因为我需要近乎即时的性能。
最后,看起来这种方法根本不起作用,因为MS Bot框架似乎回复发送电子邮件的电子邮件地址,而不是我指定的电子邮件地址:
if (activity.ChannelId == "email" && activity.From.Id == "notifications@yammer.com")
{
var newActivity = activity.CreateReply();
//doesn't work, sends email back to the activity.From.Id
newActivity.Recipient.Id = "k48@gmail.com";
newActivity.Text = "I got a message from " + activity.From.Name + "!";
BotUtils.SendActivityToChat(newActivity);
}
我可以编写自己的代码发送电子邮件给任意收件人,但仍然存在15分钟延迟的问题。
2)我使用的另一种方法是每分钟轮询Yammer的API,看看是否有新消息,但这仍然不是即时的,我不确定如果我经常轮询API,我的帐户是否会被禁止。(更新:官方的速率限制是每分钟1个投票,否则他们会禁止你)。
我错过了什么吗?否则,每次在Yammer上收到消息或提及时,您将如何运行一段代码?
BotFramework将不允许您回复消息到与发送者不同的地址。但是,如果收件人是机器人以前收到过消息的人,则可以向他们发送主动消息。要发送主动消息,您可以保留ServiceUrl和用户的ChannelAccount(从该用户的一条消息中提取),并使用该数据从您的bot向该用户发送新活动。
下面是c#
中的一个例子下面是Node.js中的一个示例