public async Task HandleEventAsync(HookEventToPublish <GitPullRequestMergeCommitCreatedPayload> eventData)
        {
            var payload = eventData.Payload;
            var users   = await IdentityToChatUserMapper.GetUsersAsync(
                payload.ResourceContainers.Collection.BaseUrl,
                payload.Resource.Reviewers.Select(x => x.Id).ToArray()
                );

            // TODO: Determine which users / channels to notify
            // Consider making this configurable (Collection-to-Channel, Project-to-Channel; Team-to-Channel)
            var avatarId  = IdentityImageProvider.GetImageId(payload.Resource.CreatedBy.ImageUrl);
            var avatarUri = await ImageUriFactory.GetImageUriAsync(AzureDevOpsConstants.ReceiverName, avatarId);

            var messageTemplate = new MessageDto
            {
                Text   = payload.Message.Markdown,
                Alias  = payload.Resource.CreatedBy.DisplayName,
                Avatar = avatarUri.AbsoluteUri
            };

            foreach (var user in users)
            {
                messageTemplate.Channel = $"@{user.Username}";
                await RocketChatClient.SendMessage(messageTemplate);
            }
        }
예제 #2
0
        public async void RocketChatTest()
        {
            //	Instantiate the client.
            var rc = new RocketChatClient(RocketChatHost, RocketChatPort, RocketChatSSL);

            await rc.Connect(RocketChatUser, RocketChatPass);

            //	Subscribe to events.
            rc.Rooms.UserStartedTyping += (username, room) => Debug.WriteLine("User {0} is typing in room {1}", username, rc.Rooms[room].Name);
            rc.Rooms.UserStoppedTyping += (username, room) => Debug.WriteLine("User {0} is no longer typing in room {1}", username, rc.Rooms[room].Name);
            rc.Rooms.MessageReceived   += (room, message) => Debug.WriteLine("New message received in room {0} from {1}: {2}", rc.Rooms[room].Name, message.User.Username, message.Text);

            //	Iterate over the rooms.
            foreach (var room in rc.Rooms.Keys)
            {
                var rm     = rc.Rooms[room];
                var epoch  = new DateTime(1970, 1, 1);
                var result = await rm.LoadHistory(epoch, 100, epoch);

                Debug.WriteLine("Got: {0} messages in the room {1}", rm.Name, result.Count);

                if (rm.Name != null)
                {
                    Debug.WriteLine("Room Id: {0} Name: {1}", rm.Id, rm.Name);
                }
            }

            //	Sleep indefinitely to stop the test from aborting.
            while (true)
            {
                Thread.Sleep(100);
            }
        }
예제 #3
0
        public MainClass ()
        {
            System.Console.WriteLine ("Starting Rocket.Chat .NET Client...");

            isLoggedIn = false;

            chatClient = RocketChatClient.WithUrl ("ws://192.168.99.100:3000/websocket").Build ();
        }
예제 #4
0
        public MainClass()
        {
            System.Console.WriteLine("Starting Rocket.Chat .NET Client...");

            isLoggedIn = false;

            chatClient = RocketChatClient.WithUrl("ws://192.168.99.100:3000/websocket").Build();
        }