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);
            }
        }
Exemplo n.º 2
0
        public async Task HandleEventAsync(HookEventToPublish <PipelineRunStateChangedPayload> eventData)
        {
            var payload = eventData.Payload;

            var message = new MessageDto
            {
                Text    = payload.Message.Markdown,
                Channel = "@nm"
            };

            await RocketChatWebHookClient.SendMessage(message);
        }