コード例 #1
0
        public async Task <SendMessagesResponseContract> SendBulkMessage(SendMessageRequestContract reqContract)
        {
            string endpoint      = $"api/v4/messages?apikey={reqContract.ApiKey}&number={reqContract.Numbers}&message={reqContract.Message}&sendername={reqContract.SenderName}";
            var    responseTuple = await PostAsync <List <SendMessageResponseContract>, SendMessageRequestContract>(endpoint, new SendMessageRequestContract());

            var resultContract = new SendMessagesResponseContract();

            resultContract.SendMessages = responseTuple.Item2;
            resultContract.StatusCode   = responseTuple.Item4;
            return(resultContract);
        }
コード例 #2
0
        public async Task SendMessage(string message, string fileUrl, Guid contactUserId, Guid conversationId)
        {
            var identity = _claimsService.GetUserClaims();
            var payload  = new SendMessageRequestContract
            {
                SenderId       = identity.Id,
                ContactUserId  = contactUserId,
                Message        = message,
                MessageType    = string.IsNullOrEmpty(fileUrl) ? 0 : 1,
                AttachmentUrl  = fileUrl,
                ConversationId = conversationId
            };

            var messageId = await _messageService.CreateMessageAsync(payload);

            payload.MessageId = messageId;
            var userConnectionIds = await _cacheService.Get <List <string> >(CachingHelpers.BuildKey("Chat", identity.Id)) ?? new List <string>();

            var contactConnectionIds = await _cacheService.Get <List <string> >(CachingHelpers.BuildKey("Chat", contactUserId)) ?? new List <string>();

            var connectionIds = userConnectionIds.Union(contactConnectionIds).ToList();

            await _pubSub.Publish(Channels.PrivateMessageChannel,
                                  new
                                  PrivateMessageContract
            {
                ConnectionIds = connectionIds,
                NewMessage    = payload
            });

            var unreadMessages = await _messageService.GetUnreadMessages(contactUserId);

            await _pubSub.Publish(Channels.NotififcationMessageChannel, new NewNotificationMessageContract
            {
                ActionType          = NotificationActionType.UnreadMessage,
                ConnectionIds       = await _cacheService.Get <List <string> >(CachingHelpers.BuildKey("Notification", contactUserId)) ?? new List <string>(),
                TotalUnreadMessages = unreadMessages
            });
        }
コード例 #3
0
        public async Task <Guid> CreateMessageAsync(SendMessageRequestContract request)
        {
            var conversation = await _context.Set <Conversation>()
                               .SingleOrDefaultAsync(c => c.Id == request.ConversationId);

            if (conversation != null)
            {
                var message = new Message(
                    request.Message,
                    request.SenderId,
                    (MessageType)request.MessageType,
                    conversation.Id,
                    request.AttachmentUrl
                    );

                await _context.AddAsync(message);

                await _context.SaveChangesAsync();

                return(message.Id);
            }
            throw new Exception("Conversation is not existed");
        }