예제 #1
0
        public async Task <PageInfoResponse> GetPageInfoAsync(string strPageToken)
        {
            PageInfoResponse objPageInfo = null;

            try
            {
                string              Url             = GetUrlPageInfo(strPageToken);
                HttpClient          client          = new HttpClient();
                HttpResponseMessage responseMessage = await client.GetAsync(Url);

                if (responseMessage.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    string body = await responseMessage.Content.ReadAsStringAsync();

                    objPageInfo = JsonConvert.DeserializeObject <PageInfoResponse>(body);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(objPageInfo);
        }
예제 #2
0
 public PagedResponse(TResponse[] items, PageInfoResponse pageInfo)
 {
     Items    = items;
     PageInfo = pageInfo;
 }
예제 #3
0
        public async Task StreamingPipelineAsync(IVideoDetailService videoDetailService, string Id, string Token)
        {
            try
            {
                await _facebookApi.VideoStreamingAsync(Id, Token, async (body) =>
                {
                    PageInfoResponse objPageInfo = await _facebookApi.GetPageInfoAsync(Token);
                    var lstCategory = new List <CategoryModel>();
                    foreach (var catergory in objPageInfo.Categories)
                    {
                        lstCategory.Add(new CategoryModel()
                        {
                            CategoryId   = catergory.CategoryId,
                            CategoryName = catergory.CategoryName
                        });
                    }
                    PageModel model = new PageModel()
                    {
                        PageId       = objPageInfo.PageId,
                        PageName     = objPageInfo.PageName,
                        Categories   = lstCategory,
                        About        = objPageInfo.About,
                        Address      = objPageInfo.Address,
                        Link         = objPageInfo.Link,
                        Emails       = objPageInfo.Emails,
                        Website      = objPageInfo.Website,
                        FanCount     = objPageInfo.FanCount,
                        CheckinCount = objPageInfo.CheckinCount,
                        CanCheckin   = objPageInfo.CanCheckin,
                        NewLikeCount = objPageInfo.NewLikeCount,
                        CanPost      = objPageInfo.CanPost,
                        Videos       = new List <VideoModel>()
                    };

                    var pagesModel = _pageRepository.FindAsync(() => Builders <PageModel> .Filter.Eq("PageId", objPageInfo.PageId)).Result.FirstOrDefault();
                    if (pagesModel == null)
                    {
                        await _pageRepository.InsertOneAsync(model);
                    }

                    List <string> lstPhone           = new List <string>();
                    ReplyTemplateModel replyTemplate = new ReplyTemplateModel();
                    bool IsSendWhenDetectedPhone     = false;
                    bool IsSendWhenDetectedGoodWord  = false;
                    bool IsDeleteWhenDetectedBadWord = false;
                    bool IsHidden = false;
                    bool IsHiddenWhenNegSentiment          = false;
                    bool IsSendWhenDetectedPhoneResult     = false;
                    bool IsSendWhenDetectedGoodWordResult  = false;
                    bool IsDeleteWhenDetectedBadWordResult = false;
                    bool IsHiddenResult         = false;
                    Match objBadWord            = null;
                    Match objGoodWord           = null;
                    VideoDetailModel videoModel = null;

                    List <string> lstBadWord  = null;
                    List <string> lstGoodWord = null;

                    if (pagesModel.Videos != null && pagesModel.Videos.Count > 0)
                    {
                        foreach (var video in pagesModel.Videos)
                        {
                            if (video.VideoId.Equals(Id))
                            {
                                lstBadWord                  = video.BadWords;
                                lstGoodWord                 = video.GoodWords;
                                IsSendWhenDetectedPhone     = video.IsSendWhenDetectedPhone;
                                IsSendWhenDetectedGoodWord  = video.IsSendWhenDetectedGoodWord;
                                IsDeleteWhenDetectedBadWord = video.IsDeleteWhenDetectedBadWord;
                                IsHidden = video.IsHidden;
                                IsHiddenWhenNegSentiment          = video.IsHiddenWhenNegSentiment;
                                replyTemplate                     = video.ReplyTemplate;
                                replyTemplate.Recipient.CommentId = body.Id;
                                break;
                            }
                        }
                    }

                    //1. Detect phone number.
                    foreach (Match phone in Regex.Matches(body.Message.Trim(), @"0\d{9}"))
                    {
                        lstPhone.Add(phone.Value);
                    }
                    if (lstPhone != null && lstPhone.Count > 0)
                    {
                        if (IsSendWhenDetectedPhone == true)
                        {
                            IsSendWhenDetectedPhoneResult = await _facebookApi.SendPrivateReplyAsync(replyTemplate.ToModelReq(), Token);
                        }
                        if (IsHidden == true && IsHiddenResult == false)
                        {
                            //IsHiddenResult = await _facebookApi.HiddenCommentAsync(body.Id, Token, true);
                            IsHiddenResult = await _facebookApi.DeleteCommentAsync(body.Id, Token);
                        }
                    }

                    //2. Sentiment NLP
                    if (IsHiddenWhenNegSentiment && IsHiddenResult == false)
                    {
                        if (_sentimentNLPApi.SentimentNLP(body.Message.Trim()).Result)
                        {
                            //IsHiddenResult = await _facebookApi.HiddenCommentAsync(body.Id, Token, true);
                            IsHiddenResult = await _facebookApi.DeleteCommentAsync(body.Id, Token);
                        }
                    }

                    //3. Detect bad word and delete comment.
                    if (lstBadWord != null)
                    {
                        if (IsDeleteWhenDetectedBadWord == true)
                        {
                            foreach (string badWord in lstBadWord)
                            {
                                objBadWord = Regex.Match(body.Message.Trim().ToLower(), badWord.Trim().ToLower());
                                if (objBadWord.Success)
                                {
                                    IsDeleteWhenDetectedBadWordResult = await _facebookApi.DeleteCommentAsync(body.Id, Token);
                                }
                            }
                        }
                    }

                    //4. Detect good word and send private reply
                    if (lstGoodWord != null)
                    {
                        if (IsSendWhenDetectedGoodWord == true)
                        {
                            foreach (string goodWord in lstGoodWord)
                            {
                                objGoodWord = Regex.Match(body.Message.Trim().ToLower(), goodWord.Trim().ToLower());
                                if (objGoodWord.Success)
                                {
                                    IsSendWhenDetectedGoodWordResult = await _facebookApi.SendPrivateReplyAsync(replyTemplate.ToModelReq(), Token);
                                }
                            }
                        }
                    }

                    //5. Insert or Update new document.
                    videoModel       = videoDetailService.FindAsync(() => Builders <VideoDetailModel> .Filter.Eq("FbId", body.From.Id)).Result.FirstOrDefault();
                    var commentModel = new CommentModel()
                    {
                        CommentId = body.Id,
                        Message   = body.Message,
                        IsSendWhenDetectedPhoneResult     = IsSendWhenDetectedPhoneResult,
                        IsSendWhenDetectedGoodWordResult  = IsSendWhenDetectedGoodWordResult,
                        IsDeleteWhenDetectedBadWordResult = IsDeleteWhenDetectedBadWordResult,
                        IsHiddenResult = IsHiddenResult,
                        CreatedTime    = body.CreatedTime
                    };
                    if (videoModel == null)
                    {
                        videoModel        = new VideoDetailModel();
                        videoModel.FbId   = body.From.Id;
                        videoModel.FbName = body.From.Name;
                        videoModel.Phones = lstPhone;
                        videoModel.Comments.Add(commentModel);

                        await videoDetailService.InsertOneAsync(videoModel);
                    }
                    else
                    {
                        if (lstPhone != null && lstPhone.Count > 0)
                        {
                            foreach (string phone in lstPhone)
                            {
                                videoModel.Phones.Add(phone);
                            }
                        }
                        videoModel.Comments.Add(commentModel);

                        await videoDetailService.UpdateOneAsync(() => Builders <VideoDetailModel> .Filter.Eq("FbId", body.From.Id), () => Builders <VideoDetailModel> .Update.Set("Comments", videoModel.Comments).Set("Phones", videoModel.Phones));
                    }
                });
            }
            catch (HttpRequestException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }