Esempio n. 1
0
        public static void ProcessQueueMessage([QueueTrigger("line-bot-workitems")] string message, TextWriter log)
        {
            log.WriteLine(message);

            var data = JsonConvert.DeserializeObject <LineMessageObject>(message);

            if (data?.Results != null)
            {
                Task.WhenAll(data.Results.Select(lineMessage =>
                {
                    if (lineMessage.Content != null)
                    {
                        log.WriteLine("Content: " + string.Join(Environment.NewLine,
                                                                lineMessage.Content.Select(x => $"{x.Key}={x.Value}")));
                    }

                    log.WriteLine("ContentType: " + lineMessage.ContentType);
                    switch (lineMessage.ContentType)
                    {
                    case ContentType.Text:
                        if (lineMessage.TextContent != null)
                        {
                            log.WriteLine("text: " + lineMessage.TextContent.Text);

                            var sendingMessage = new SendingMessage();

                            sendingMessage.AddTo(lineMessage.TextContent.From);

                            //TODO: Use Sending multiple messages, LINE response is {"statusCode":"422","statusMessage":"contentType is not valid : 0"}
                            var sendingMessageApi = new SendMessageApi(log);
                            var result            = new GitHubSearchApi(log).Search(lineMessage.TextContent.Text).Result;
                            if (result == null || !result.Any())
                            {
                                sendingMessage.SetSingleContent(new SendingTextContent("There is no content."));
                                return(Task.WhenAll(sendingMessageApi.Post(sendingMessage)));
                            }
                            return(Task.WhenAll(result.Where(x => !string.IsNullOrEmpty(x))
                                                .Select(s =>
                            {
                                if (s.Length > 1024)
                                {
                                    s = s.Substring(0, 1024);
                                }

                                sendingMessage.SetSingleContent(new SendingTextContent(s));
                                return sendingMessageApi.Post(sendingMessage);
                            })));
                        }
                        break;

                    default:
                        log.WriteLine("Not implemented contentType: " + lineMessage.ContentType);
                        break;
                    }

                    return(Task.FromResult((SendingMessageResponse[])null));
                })).Wait();
            }
        }
        public DigipostClient(ClientConfig clientConfig, X509Certificate2 enterpriseCertificate, ILoggerFactory loggerFactory)
        {
            _logger        = loggerFactory.CreateLogger <DigipostClient>();
            _loggerFactory = loggerFactory;

            _clientConfig  = clientConfig;
            _httpClient    = GetHttpClient(enterpriseCertificate);
            _requestHelper = new RequestHelper(_httpClient, _loggerFactory);
            _api           = new SendMessageApi(new SendRequestHelper(_requestHelper), _loggerFactory);
        }
        private SendMessageApi GetDigipostApi(FakeResponseHandler fakeResponseHandler)
        {
            var httpClient = GetHttpClient(fakeResponseHandler);

            var serviceProvider = LoggingUtility.CreateServiceProviderAndSetUpLogging();

            var requestHelper = new RequestHelper(httpClient, serviceProvider.GetService <ILoggerFactory>())
            {
                HttpClient = httpClient
            };

            var digipostApi = new SendMessageApi(new SendRequestHelper(requestHelper), serviceProvider.GetService <ILoggerFactory>());

            return(digipostApi);
        }
        private void InputInterceptorVirtualMouseAction(object sender, MousePressedEventArgs e)
        {
            if (e.DeviceId != _mouseId)
            {
                return;
            }

            MousePressedEventArgs lastKnown = null;
            Point worldCoodinates           = new Point();

            Application.Current.Dispatcher.Invoke(() =>
            {
                lastKnown       = _inputInterceptor.Mice[e.DeviceId].LastMouseData;
                var destination = new Point(Canvas.GetLeft(VirtualMouse) + lastKnown.X, Canvas.GetTop(VirtualMouse) + lastKnown.Y);

                if (CheckBounds(lastKnown.X, lastKnown.Y))
                {
                    Canvas.SetTop(VirtualMouse, destination.Y);
                    Canvas.SetLeft(VirtualMouse, destination.X);
                    lastKnown.AbsolutX = (int)destination.X;
                    lastKnown.AbsolutY = (int)destination.Y;
                }

                if (lastKnown.State == MouseState.Undefined)
                {
                    return;
                }

                worldCoodinates = AssociatedObject.TranslatePoint(destination, Application.Current.MainWindow);
            }, DispatcherPriority.Send);

            bool handeld             = false;
            var  elementsUnderCursor = new List <DependencyObject>();

            Application.Current.Dispatcher.Invoke(() =>
            {
                var positon = new Point(lastKnown.AbsolutX, lastKnown.AbsolutY);
                if (!GameAreaFocusService.GetExactHitTest(LayoutBounds, LayoutBounds, positon, elementsUnderCursor))
                {
                    return;
                }

                var findScrollProvider = elementsUnderCursor
                                         .Select(GameAreaFocusService.GetVisualParentWithKeyHandling)
                                         .FirstOrDefault(f => f != null);
                if (findScrollProvider == null)
                {
                    return;
                }

                var firstOrDefault = Interaction.GetBehaviors(findScrollProvider).FirstOrDefault(f => f is IVirtualInputReciver) as IVirtualInputReciver;
                handeld            = firstOrDefault.ReciveMouseInput(lastKnown);
            }, DispatcherPriority.Send);
            if (handeld)
            {
                return;
            }
            if (lastKnown.State == MouseState.Undefined)
            {
                return;
            }
            var btnMessages = new MSG[0];

            if (lastKnown.State == MouseState.LeftDown || lastKnown.State == MouseState.LeftUp)
            {
                btnMessages = SendMessageApi.GetControlClickMessages("left", lastKnown.State == MouseState.LeftDown,
                                                                     (int)worldCoodinates.X, (int)worldCoodinates.Y);
            }
            else if (lastKnown.State == MouseState.RightDown || lastKnown.State == MouseState.RightUp)
            {
                btnMessages = SendMessageApi.GetControlClickMessages("right", lastKnown.State == MouseState.RightDown,
                                                                     (int)worldCoodinates.X, (int)worldCoodinates.Y);
            }
            else if (lastKnown.State == MouseState.MiddleDown || lastKnown.State == MouseState.MiddleUp)
            {
                btnMessages = SendMessageApi.GetControlClickMessages("middle", lastKnown.State == MouseState.MiddleDown,
                                                                     (int)worldCoodinates.X, (int)worldCoodinates.Y);
            }
            else if (lastKnown.State == MouseState.ScrollDown)
            {
                Application.Current.Dispatcher.Invoke(() =>
                {
                    var findScrollProvider = GameAreaFocusService.GetVisualParent <ScrollViewer>(elementsUnderCursor.Last());
                    if (findScrollProvider != null)
                    {
                        findScrollProvider.ScrollToVerticalOffset(lastKnown.Rolling);
                    }
                    else
                    {
                        var dependencyObject    = elementsUnderCursor.Last();
                        var mouseWheelEventArgs = new MouseWheelEventArgs(InputManager.Current.PrimaryMouseDevice, 0, lastKnown.Rolling);

                        mouseWheelEventArgs.RoutedEvent = UIElement.MouseWheelEvent;
                        mouseWheelEventArgs.Source      = this;
                        (dependencyObject as UIElement).RaiseEvent(mouseWheelEventArgs);
                    }
                }, DispatcherPriority.Send);
            }

            foreach (var msg in btnMessages)
            {
                SendMessageApi.SendMessageTo(_windowHandle, msg.message, msg.wParam, msg.lParam);
            }
        }
Esempio n. 5
0
    /// <summary>
    /// 回复消息
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btn_Save_Click(object sender, EventArgs e)
    {
        string         data    = string.Empty;
        SendMessageApi sendApi = new SendMessageApi();

        #region 文本消息
        if (hidMsgType.Value == CommonEnum.enumMsgType.text.ToString())//文本消息
        {
            TextMessageModel txtModel = new TextMessageModel();
            txtModel.msgtype      = hidMsgType.Value;                            //消息类型
            txtModel.touser       = getmodel.TMIOpenId;                          //接收人
            txtModel.msgrelative  = getmodel.TMIMsgRelative;                     //消息唯一标识
            txtModel.msgsource    = CommonEnum.enumMsgSource.send.GetHashCode(); //消息来源
            txtModel.text.content = txtContent.Text.Trim();
            if (!sendApi.SendTextMessage(txtModel))
            {
                Response.Write("<script>alert('发送失败')</script>");
                return;
            }
            data = JsonHelper.JsonSerializer(txtModel);
        }
        #endregion

        #region 图片消息
        else if (hidMsgType.Value == CommonEnum.enumMsgType.image.ToString())//图片消息
        {
            ImageMessageModel imgModel = new ImageMessageModel();
            string            fileName = GetFileName(Fileimg.PostedFile, "imgMsg");
            if (string.IsNullOrEmpty(fileName))
            {
                Response.Write("<script>alert('上传文件为空')</script>");
                return;
            }
            imgModel.msgtype        = hidMsgType.Value;
            imgModel.touser         = getmodel.TMIOpenId;
            imgModel.msgrelative    = getmodel.TMIMsgRelative;                                                          //消息唯一标识
            imgModel.msgsource      = CommonEnum.enumMsgSource.send.GetHashCode();                                      //消息来源
            imgModel.image.media_id = CommMsgParam.UploadMultimedia(fileName, CommonEnum.enumMsgType.image.ToString()); //上传多媒体返回media_Id
            if (!sendApi.SendImageMessage(imgModel))
            {
                Response.Write("<script>alert('发送失败')</script>");
                return;
            }
            data = JsonHelper.JsonSerializer(imgModel);
        }
        #endregion

        #region 语音消息
        else if (hidMsgType.Value == CommonEnum.enumMsgType.voice.ToString())//语音消息
        {
            VoiceMessageModel vocModel = new VoiceMessageModel();
            string            fileName = GetFileName(Filevoice.PostedFile, "voiceMsg");
            if (string.IsNullOrEmpty(fileName))
            {
                Response.Write("<script>alert('上传文件为空')</script>");
                return;
            }
            vocModel.msgtype        = hidMsgType.Value;
            vocModel.touser         = getmodel.TMIOpenId;                                                               //接收人
            vocModel.msgrelative    = getmodel.TMIMsgRelative;                                                          //消息唯一标识
            vocModel.msgsource      = CommonEnum.enumMsgSource.send.GetHashCode();                                      //消息来源
            vocModel.voice.media_id = CommMsgParam.UploadMultimedia(fileName, CommonEnum.enumMsgType.voice.ToString()); //上传多媒体返回media_Id
            if (!sendApi.SendVoiceMessage(vocModel))
            {
                Response.Write("<script>alert('发送失败')</script>");
                return;
            }
            data = JsonHelper.JsonSerializer(vocModel);
        }
        #endregion

        #region 视频消息
        else if (hidMsgType.Value == CommonEnum.enumMsgType.video.ToString())//视频消息
        {
            VideoMessageModel vdoModel = new VideoMessageModel();
            string            fileName = GetFileName(FileVideo.PostedFile, "videoMsg");//上传返回名称
            if (string.IsNullOrEmpty(fileName))
            {
                Response.Write("<script>alert('上传文件为空')</script>");
                return;
            }
            vdoModel.msgtype              = hidMsgType.Value;
            vdoModel.touser               = getmodel.TMIOpenId;                                                               //接收人
            vdoModel.msgrelative          = getmodel.TMIMsgRelative;                                                          //消息唯一标识
            vdoModel.msgsource            = CommonEnum.enumMsgSource.send.GetHashCode();                                      //消息来源
            vdoModel.video.media_id       = CommMsgParam.UploadMultimedia(fileName, CommonEnum.enumMsgType.video.ToString()); //上传多媒体返回media_Id
            vdoModel.video.thumb_media_id = CommMsgParam.UploadMultimedia(fileName, CommonEnum.enumMsgType.thumb.ToString()); //上传多媒体返回media_Id
            vdoModel.video.title          = title.Text;
            vdoModel.video.description    = description.Text;
            if (!sendApi.SendVideoMessage(vdoModel))
            {
                Response.Write("<script>alert('发送失败')</script>");
                return;
            }
            data = JsonHelper.JsonSerializer(vdoModel);
        }
        #endregion

        #region 音乐消息
        else if (hidMsgType.Value == CommonEnum.enumMsgType.music.ToString())//音乐消息
        {
            MusicMessageModel musModel = new MusicMessageModel();
            string            fileName = GetFileName(FileMusic.PostedFile, "musicMsg");
            if (string.IsNullOrEmpty(fileName))
            {
                Response.Write("<script>alert('上传文件为空')</script>");
                return;
            }
            musModel.msgtype              = hidMsgType.Value;
            musModel.touser               = getmodel.TMIOpenId;                          //接收人
            musModel.msgrelative          = getmodel.TMIMsgRelative;                     //消息唯一标识
            musModel.msgsource            = CommonEnum.enumMsgSource.send.GetHashCode(); //消息来源
            musModel.music.musicurl       = musicUrl.Text.Trim();
            musModel.music.hqmusicurl     = hqMusicUrl.Text;
            musModel.music.title          = title.Text;
            musModel.music.description    = description.Text;
            musModel.music.thumb_media_id = CommMsgParam.UploadMultimedia(fileName, CommonEnum.enumMsgType.thumb.ToString());//上传多媒体返回media_Id;
            if (!sendApi.SendMusicMessage(musModel))
            {
                Response.Write("<script>alert('发送失败')</script>");
                return;
            }
            data = JsonHelper.JsonSerializer(musModel);
        }
        #endregion

        #region 图文消息
        else if (hidMsgType.Value == CommonEnum.enumMsgType.news.ToString())//图文消息
        {
            NewsMessageModel newsModel = new NewsMessageModel();
            newsModel.msgtype     = hidMsgType.Value;
            newsModel.touser      = getmodel.TMIOpenId;                          //接收人
            newsModel.msgrelative = getmodel.TMIMsgRelative;                     //消息唯一标识
            newsModel.msgsource   = CommonEnum.enumMsgSource.send.GetHashCode(); //消息来源
            List <NewsArticles> list = new List <NewsArticles>();
            string   newslist        = hidnewsType.Value.TrimEnd('|');
            string[] newsListArr     = newslist.Split('|');
            string   picUrls         = string.Empty;//获取所有的图片链接
            for (int i = 0; i < newsListArr.Length; i++)
            {
                NewsArticles articles = new NewsArticles();
                string[]     listArr  = newsListArr[i].Split(',');
                articles.title       = listArr[0]; //图文标题
                articles.url         = listArr[1]; //点击跳转的链接
                articles.picurl      = listArr[2]; //图文消息的链接
                articles.description = listArr[3]; //描述
                list.Add(articles);
                picUrls += list[0] + ",";
            }
            newsModel.news.articles = list;
            if (!sendApi.SendNewsMessage(newsModel))
            {
                Response.Write("<script>alert('发送失败')</script>");
                return;
            }
            data = JsonHelper.JsonSerializer(newsModel);
        }
        #endregion

        SaveMessage(data);//保存消息
    }
Esempio n. 6
0
 public void Init()
 {
     instance = new SendMessageApi();
 }