每次在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上收到消息或提及时,您将如何运行一段代码?

每次在Yammer和Bot框架上提到某人或接收私人消息时,调用web服务或运行代码

BotFramework将不允许您回复消息到与发送者不同的地址。但是,如果收件人是机器人以前收到过消息的人,则可以向他们发送主动消息。要发送主动消息,您可以保留ServiceUrl和用户的ChannelAccount(从该用户的一条消息中提取),并使用该数据从您的bot向该用户发送新活动。

下面是c#

中的一个例子下面是Node.js中的一个示例