public async Task <BaseResponse> SendMessageById([FromBody] PushMessageRequest request)
 {
     if (!MessageHub.connections.ContainsKey(request.ReceivedUserId.ToString()))
     {
         return(BaseResponse.GetBaseResponse(BusinessStatusType.LoginExpire));
     }
     return(await _messageSer.SendMessageById(request));
 }
예제 #2
0
        /// <summary>
        /// Send message
        /// </summary>
        /// <param name="pushMessageRequest"></param>
        /// <returns></returns>
        public async Task <LineClientResult <ResponseItem> > PushMessage(PushMessageRequest pushMessageRequest)
        {
            if (pushMessageRequest.messages.Count > 5)
            {
                throw new ArgumentException("Only allow maximun 5 messages");
            }

            return(await messageClient.PushMessage(pushMessageRequest));
        }
        public async Task <BaseResponse> PushMessage([FromBody] PushMessageRequest request)
        {
            var message = JsonSerializer.Serialize(request);

            _logger.LogInformation("PushMessage:" + message);

            await _hubcontext.Clients.Group(request.UserId.ToString()).SendAsync("PushMessage", message);

            return(BaseResponse.Ok());
        }
예제 #4
0
        /// <summary>
        /// Send message
        /// </summary>
        /// <param name="pushMessageRequest"></param>
        /// <returns></returns>
        public async Task <LineClientResult <ResponseItem> > PushMessage(PushMessageRequest pushMessageRequest)
        {
            if (pushMessageRequest == null)
            {
                throw new ArgumentNullException(nameof(PushMessageRequest));
            }

            var request = new LinePostRequest <ResponseItem>(this, "bot/message/push");

            return(await request.Execute(pushMessageRequest));
        }
예제 #5
0
        /// <summary>
        /// Send text message
        /// </summary>
        /// <param name="to"></param>
        /// <param name="message"></param>
        /// <returns></returns>
        public async Task <LineClientResult <ResponseItem> > PushTextMessage(string to, string message)
        {
            var pushMessageRequest = new PushMessageRequest()
            {
                to       = to,
                messages = new List <Message>()
                {
                    new TextMessage(message)
                }
            };

            return(await messageClient.PushMessage(pushMessageRequest));
        }
예제 #6
0
        /// <summary>
        /// Send location message
        /// </summary>
        /// <param name="to"></param>
        /// <param name="title"></param>
        /// <param name="address"></param>
        /// <param name="latitude"></param>
        /// <param name="longitude"></param>
        /// <returns></returns>
        public async Task <LineClientResult <ResponseItem> > PushLocationMessage(string to, string title, string address, decimal latitude, decimal longitude)
        {
            var pushMessageRequest = new PushMessageRequest()
            {
                to       = to,
                messages = new List <Message>()
                {
                    new LocationMessage(title, address, latitude, longitude)
                }
            };

            return(await messageClient.PushMessage(pushMessageRequest));
        }
예제 #7
0
        /// <summary>
        /// Send sticker message
        /// </summary>
        /// <param name="to"></param>
        /// <param name="packageId"></param>
        /// <param name="stickerId"></param>
        /// <returns></returns>
        public async Task <LineClientResult <ResponseItem> > PushStickerMessage(string to, int packageId, int stickerId)
        {
            var pushMessageRequest = new PushMessageRequest()
            {
                to       = to,
                messages = new List <Message>()
                {
                    new StickerMessage(packageId, stickerId)
                }
            };

            return(await messageClient.PushMessage(pushMessageRequest));
        }
예제 #8
0
        /// <summary>
        /// Send image map messages
        /// </summary>
        /// <param name="to"></param>
        /// <param name="imageMapMessages"></param>
        /// <returns></returns>
        public async Task <LineClientResult <ResponseItem> > PushImageMapMessage(string to, ImageMapMessage imageMapMessages)
        {
            var pushMessageRequest = new PushMessageRequest()
            {
                to       = to,
                messages = new List <Message>()
                {
                    imageMapMessages
                }
            };

            return(await messageClient.PushMessage(pushMessageRequest));
        }
예제 #9
0
        /// <summary>
        /// 进行消息推送
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <BaseResponse> SendMessageById(PushMessageRequest request)
        {
            MessageViewModel        thisMessage = JsonConvert.DeserializeObject <MessageViewModel>(JsonConvert.SerializeObject(request));
            List <MessageViewModel> messageList = new List <MessageViewModel>
            {
                thisMessage
            };
            string content = JsonConvert.SerializeObject(messageList);

            _logger.LogInformation("系统消息已发送ID:" + request.ReceivedUserId + "内容:" + content);
            await _hubcontext.Clients.Client(MessageHub.connections[request.ReceivedUserId.ToString()]).SendAsync("sendMessage", content);

            return(BaseResponse.GetBaseResponse(BusinessStatusType.OK));
        }
예제 #10
0
        public void PushTextMessageRequest_JsonFormatTest()
        {
            PushMessageRequest request = new PushMessageRequest()
            {
                to       = "user id",
                messages = new List <Message>()
                {
                    new TextMessage("text")
                }
            };

            // Verify
            Assert.AreEqual <string>(JsonConvert.SerializeObject(request, Formatting.None, jsonSettings), "{\"to\":\"user id\",\"messages\":[{\"type\":\"text\",\"text\":\"text\"}]}");
        }
예제 #11
0
        /// <summary>
        /// Send audio message
        /// </summary>
        /// <param name="to"></param>
        /// <param name="originalContentUrl">URL of audio file (Max: 1000 characters),HTTPS,m4a,Max: 1 minute,Max: 10 MB</param>
        /// <param name="duration">Length of audio file (milliseconds)</param>
        /// <returns></returns>
        public async Task <LineClientResult <ResponseItem> > PushAudioMessage(string to, string originalContentUrl, int duration)
        {
            Uri _originalContentUrl = new Uri(originalContentUrl);

            var pushMessageRequest = new PushMessageRequest()
            {
                to       = to,
                messages = new List <Message>()
                {
                    new AudioMessage(_originalContentUrl, duration)
                }
            };

            return(await messageClient.PushMessage(pushMessageRequest));
        }
예제 #12
0
        /// <summary>
        /// Send video message
        /// </summary>
        /// <param name="to"></param>
        /// <param name="originalContentUrl">URL of video file (Max: 1000 characters) ,HTTPS,mp4,Max: 1 minute,Max: 10 MB</param>
        /// <param name="previewImageUrl">URL of preview image (Max: 1000 characters),HTTPS,JPEG,Max: 240 x 240,Max: 1 MB</param>
        /// <returns></returns>
        public async Task <LineClientResult <ResponseItem> > PushVideoMessage(string to, string originalContentUrl, string previewImageUrl)
        {
            Uri _originalContentUrl = new Uri(originalContentUrl);
            Uri _previewImageUrl    = new Uri(previewImageUrl);

            var pushMessageRequest = new PushMessageRequest()
            {
                to       = to,
                messages = new List <Message>()
                {
                    new VideoMessage(_originalContentUrl, _previewImageUrl)
                }
            };

            return(await messageClient.PushMessage(pushMessageRequest));
        }
예제 #13
0
        /// <summary>
        /// Send image message
        /// </summary>
        /// <param name="to"></param>
        /// <param name="imageContentUrl"></param>
        /// <param name="imagePreviewUrl"></param>
        /// <returns></returns>
        public async Task <LineClientResult <ResponseItem> > PushImageMessage(string to, string imageContentUrl, string imagePreviewUrl)
        {
            Uri imgContentUrl  = new Uri(imageContentUrl);
            Uri imgePreviewUrl = new Uri(imagePreviewUrl);

            var pushMessageRequest = new PushMessageRequest()
            {
                to       = to,
                messages = new List <Message>()
                {
                    new ImageMessage(imgContentUrl, imgePreviewUrl)
                }
            };

            return(await messageClient.PushMessage(pushMessageRequest));
        }
예제 #14
0
        public JsonResult PushMessage(PushMessageRequest request)
        {
            try
            {
                var webPushClient = new WebPushClient();
                var subscription  = new PushSubscription(request.Subscription.Endpoint,
                                                         request.Subscription.Keys.P256dh, request.Subscription.Keys.Auth);

                // STEP 5: Send PushMessage to Push Service
                webPushClient.SendNotification(subscription, request.Payload, _vapidDetails);
            }
            catch (WebPushException exception)
            {
                return(Json(new { Ok = false, Error = $"HTTP status code: {exception.StatusCode}" }));
            }
            return(Json(new { Ok = true }));
        }
예제 #15
0
        public void PushVideoMessageRequest_JsonFormatTest()
        {
            string originalContentUrl = "https://test.mp4";
            string previewImageUrl    = "https://test.jpg";

            PushMessageRequest request = new PushMessageRequest()
            {
                to       = "user id",
                messages = new List <Message>()
                {
                    new VideoMessage(new Uri(originalContentUrl), new Uri(previewImageUrl))
                }
            };

            // Verify
            Assert.AreEqual <string>(JsonConvert.SerializeObject(request, Formatting.None, jsonSettings), "{\"to\":\"user id\",\"messages\":[{\"type\":\"video\",\"originalContentUrl\":\"https://test.mp4\",\"previewImageUrl\":\"https://test.jpg\"}]}");
        }
예제 #16
0
        public void PushAudioMessageRequest_JsonFormatTest()
        {
            int    duration            = 4000;
            string orginallyContentUrl = "https://test.m4a";

            PushMessageRequest request = new PushMessageRequest()
            {
                to       = "user id",
                messages = new List <Message>()
                {
                    new AudioMessage(new Uri(orginallyContentUrl), duration)
                }
            };

            // Verify
            Assert.AreEqual <string>(JsonConvert.SerializeObject(request, Formatting.None, jsonSettings), "{\"to\":\"user id\",\"messages\":[{\"type\":\"audio\",\"originalContentUrl\":\"https://test.m4a\",\"duration\":4000}]}");
        }
예제 #17
0
        public void PushLocationMessageRequest_JsonFormatTest()
        {
            string  title     = "my location";
            string  address   = "¢E150-0002 ªF¨Ê³£¯A¨¦°Ï2¤B¤ì21-1";
            decimal latitude  = 35.65910807942215M;
            decimal longitude = 139.70372892916203M;

            PushMessageRequest request = new PushMessageRequest()
            {
                to       = "user id",
                messages = new List <Message>()
                {
                    new LocationMessage(title, address, latitude, longitude)
                }
            };

            // Verify
            Assert.AreEqual <string>(JsonConvert.SerializeObject(request, Formatting.None, jsonSettings), "{\"to\":\"user id\",\"messages\":[{\"type\":\"location\",\"latitude\":35.65910807942215,\"longitude\":139.70372892916203,\"title\":\"my location\",\"address\":\"¢E150-0002 ªF¨Ê³£¯A¨¦°Ï2¤B¤ì21-1\"}]}");
        }
예제 #18
0
        /// <summary>
        /// プッシュ送信
        /// </summary>
        /// <param name="channelAccessToken">ChannelAccessToken</param>
        /// <param name="to">送信先ID</param>
        /// <param name="messageFactoryService">MessageFactoryService</param>
        public static async Task SendReplyMessage(string channelAccessToken, string to, MessageFactoryService messageFactoryService)
        {
            Trace.TraceInformation("Start");

            PushMessageRequest request = new PushMessageRequest()
            {
                to       = to,
                messages = messageFactoryService.Messages
            };
            string requestUrl = ConfigurationManager.AppSettings["BaseUrl"] + ConfigurationManager.AppSettings["PushUrl"];

            await MessagingApiSender.SendMessagingApi <PushMessageRequest, string>(
                channelAccessToken,
                requestUrl,
                request,
                "post"
                ).ConfigureAwait(false);

            Trace.TraceInformation("End");
        }
예제 #19
0
        /// <summary>
        /// To the push message request v3.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>Beyova.JPush.V3.PushMessageRequestV3.</returns>
        public static Beyova.JPush.V3.PushMessageRequestV3 ToPushMessageRequestV3(this PushMessageRequest request)
        {
            Beyova.JPush.V3.PushMessageRequestV3 result = null;

            if (request != null)
            {
                result = new Beyova.JPush.V3.PushMessageRequestV3()
                {
                    Platform          = request.Platform,
                    IsTestEnvironment = request.IsTestEnvironment,
                    LifeTime          = request.LifeTime,
                    OverrideMessageId = request.OverrideMessageId,
                    Notification      = new Notification(),
                    AppMessage        = new AppMessage
                    {
                        Content         = request.Message.Content,
                        Title           = request.Message.PushTitle,
                        CustomizedValue = request.Message.CustomizedValue
                    }
                };

                Audience      audience = new Audience();
                List <string> list     = new List <string>(request.ReceiverValue.Split(new char[] { ',', ';', ' ' }, StringSplitOptions.RemoveEmptyEntries));

                switch (request.PushType)
                {
                case PushType.Broadcast:
                    audience.Add(PushTypeV3.Broadcast, null);
                    break;

                case PushType.ByAlias:
                    audience.Add(PushTypeV3.ByAlias, list);
                    break;

                case PushType.ByRegistrationId:
                    audience.Add(PushTypeV3.ByRegistrationId, list);
                    break;

                case PushType.ByTag:
                    audience.Add(PushTypeV3.ByTagWithinOr, list);
                    break;

                default:
                    break;
                }

                result.Audience = audience;

                Notification notification = new Notification();
                if ((request.Platform & PushPlatform.Android) == PushPlatform.Android)
                {
                    result.Notification.AndroidNotification = new AndroidNotificationParameters
                    {
                        Alert            = request.Message.Content,
                        BuilderId        = request.Message.BuilderId,
                        CustomizedValues = request.Message.CustomizedValue,
                        Title            = request.Message.PushTitle
                    };
                }
                if ((request.Platform & PushPlatform.iOS) == PushPlatform.iOS)
                {
                    result.Notification.iOSNotification = new iOSNotificationParameters
                    {
                        Alert            = request.Message.Content,
                        Sound            = request.Message.Sound,
                        CustomizedValues = request.Message.CustomizedValue,
                        Badge            = request.Message.BadgeValue
                    };
                }
            }

            return(result);
        }
예제 #20
0
        public JsonResultObject PushMessage(PushMessageRequest req)
        {
            var    result     = new JsonResultObject();
            var    collection = upLoadConfig.Secures;
            string jsonStr    = string.Empty;
            string pushUrl    = collection["push"].URL;
            //  请求
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(pushUrl);

            httpWebRequest.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
            httpWebRequest.Method      = "POST";

            string data = "method=" + req.Method;

            data += "&channelID=" + req.ChannelID;

            if (req.PushType != null && req.PushType != "")
            {
                data += "&pushType=" + req.PushType;
            }
            if (req.TargetList != null && req.TargetList != "")
            {
                data += "&targetList=" + req.TargetList;
            }
            if (req.Content != null && req.Content != "")
            {
                data += "&content=" + req.Content;
            }
            if (req.TypeID != null && req.TypeID != "")
            {
                data += "&TypeID=" + req.TypeID;
            }
            if (req.Creator != null && req.Creator != "")
            {
                data += "&creator=" + req.Creator;
            }
            if (req.DataID != null && req.DataID != "")
            {
                data += "&dataID=" + req.DataID;
            }
            if (req.Url != null && req.Url != "")
            {
                data += "&url=" + req.Url;
            }
            data += "&template=" + req.Template;
            byte[] bytes = System.Text.Encoding.UTF8.GetBytes(data);
            httpWebRequest.ContentLength = bytes.Length;
            Stream requestStream = httpWebRequest.GetRequestStream();

            requestStream.Write(bytes, 0, bytes.Length);
            requestStream.Flush();
            requestStream.Close();

            //  响应
            try
            {
                HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                StreamReader    streamReader    = new StreamReader(httpWebResponse.GetResponseStream());
                string          responseContent = streamReader.ReadToEnd();
                httpWebResponse.Close();
                streamReader.Close();
                httpWebRequest.Abort();
                httpWebResponse.Close();
                result = JsonHelper.ConvertToObj <JsonResultObject>(responseContent);
            }
            catch
            {
                result.status = false;
                result.msg    = "推送消息失败,网络连接失败!";
            }
            return(result);
        }