将邮件发送到Azure Functions中的SignalR Service中的一组用户

时间:2018-11-05 14:06:59

标签: azure azure-functions signalr-service

查看docs的SignalR绑定以将消息发送给指定的用户,您就这样在消息上包含了UserId属性-

[FunctionName("SendMessage")]
public static Task SendMessage(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post")]object message, 
    [SignalR(HubName = "chat")]IAsyncCollector<SignalRMessage> signalRMessages)
{
    return signalRMessages.AddAsync(
        new SignalRMessage 
        {
            // the message will only be sent to these user IDs
            UserId = "userId1",
            Target = "newMessage", 
            Arguments = new [] { message } 
        });
}

此示例直接取自文档,但注释表明您会提示多个用户ID,即使该属性是字符串而不是数组也是如此。

您如何指定多个用户? (例如,如果他们在一起是在私人聊天频道中),或者这是注释措辞中的错误,您需要按用户发送消息吗?

对于其他版本的SignalR,我会将它们放在一个组中,但是对于函数而言,此绑定不存在。

2 个答案:

答案 0 :(得分:1)

不幸的是,就像文档所说的那样,现在使用Azure函数绑定,我们只能将消息发送给一个用户或所有客户端。

请参见the code of current extension SDK Microsoft.Azure.WebJobs.Extensions.SignalRService v1.0.0-preview1-10002。 它显示扩展名只有两种方法SendToAll和SendToUser。

    Task SendToAll(string hubName, SignalRData data);
    Task SendToUser(string hubName, string userId, SignalRData data);

该评论使您感到困惑,实际上是因为old sample,作者忘记对其进行修改。

好消息是,对群组操作的支持为under progress

答案 1 :(得分:1)

latest release中引入了组操作。

现在您可以:

  • 使用factors=_repository.AsQueryable.Where(p=>p.FactorStateBase is PaidFactorState && p.PayDate > = yourdate) 中的is向群组发送消息
  • 使用GroupName输出添加/删除组中的用户