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); } }
/// <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);//保存消息 }
public void Init() { instance = new SendMessageApi(); }