Exemplo n.º 1
0
        /// <summary>
        /// (-)  解析來源資料並賦值
        /// </summary>
        private void ReceivedMessageRequest()
        {
            //取得 http Post RawData(should be JSON)
            string postData = Request.Content.ReadAsStringAsync().Result;

            //剖析JSON
            _SendData   = isRock.LineBot.Utility.Parsing(postData);
            _LineEvents = _SendData.events;
            _LineEvent  = _LineEvents.FirstOrDefault();
        }
Exemplo n.º 2
0
        private string GetMessage(ReceievedMessage receivedMessage)
        {
            if (receivedMessage.events[0].type == "join")
            {
                return("歡迎來到布萊恩RD滾石人生頻道");
            }

            //if (receivedMessage.events[0].type == "message" && receivedMessage.events[0].source.userId
            //    == "Ucb61a0292a1972e531f8bd123a7dca02")
            //{
            //    return "林貝珊再吵打你屁股";
            //}
            //if (receivedMessage.events[0].type == "message" && receivedMessage.events[0].source.userId == "U142ea503c7835a515b3ad34db5506f1f")
            //{
            //    return "謝宗明不要再鴨講了";
            //}

            //if (receivedMessage.events[0].type == "message" && receivedMessage.events[0].source.userId == "Ud0b4e4ce86825b1621b960741726223a")
            //{
            //    return "阿信就是胡瓜";
            //}

            //if (receivedMessage.events[0].type == "message" && receivedMessage.events[0].source.userId == "Ub3f1e20be96bd82b11192c613768423c")
            //{
            //    return "劉醬瓜不要再遲到了";
            //}

            var messageText = receivedMessage.events[0].message.text;

            //if (receivedMessage.events[0].type == "message" && messageText.Contains("五月天"))
            //{
            //    return "浪費錢";
            //}
            //if (receivedMessage.events[0].type == "message" && messageText.Contains("阿信"))
            //{
            //    return "胡瓜";
            //}
            if (receivedMessage.events[0].type == "message" && messageText.Contains("股票"))
            {
                int  stockId   = 0;
                bool isStockId = int.TryParse(messageText.Replace("股票", string.Empty).Trim(), out stockId);
                if (isStockId)
                {
                    return(GetStock(stockId));
                }
            }
            return(string.Empty);
        }
Exemplo n.º 3
0
        public IHttpActionResult POST()
        {
            string postData           = string.Empty;
            string ChannelAccessToken = "vrP1wFmPLLwmkWFFG9epSaRJKF+NT6LkviV8qfd2dVIlkD6CzDJXecNFC1zhjD8s4xbsl9as8k+FoiRUj7oda0DQ8sMv1NzyPDNEF+3Cfb63X86L9Z9qOJHpkY+UzNzXJlY+Q7V70tiCgRSfabRwuAdB04t89/1O/w1cDnyilFU=";

            //try
            //{
            //http Post RawData(should be JSON)
            postData = Request.Content.ReadAsStringAsync().Result;
            //JSON
            ReceievedMessage rmsg = Parsing(postData);

            //string Message;
            //Message = "해인 :" + rmsg.events[0].message.text;
            //ReplyMessageText(rmsg.events[0].replyToken, Message, ChannelAccessToken);

            if (rmsg.events[0].message.type.ToLower().Equals("text"))
            {
                if (rmsg.events[0].message.text.Equals("우리집"))
                {
                    ReplyMessageLocation(rmsg.events[0].replyToken, rmsg.events[0].message, ChannelAccessToken);
                }
                else if (rmsg.events[0].message.text.Equals("해인이"))
                {
                    ReplyMessageImage(rmsg.events[0].replyToken, rmsg.events[0].message, ChannelAccessToken);
                }
                else
                {
                    string Message;
                    Message = "해인 :" + rmsg.events[0].message.text;
                    ReplyMessageText(rmsg.events[0].replyToken, Message, ChannelAccessToken);
                }
            }
            else if (rmsg.events[0].message.type.ToLower().Equals("sticker"))
            {
                ReplyMessageSticker(rmsg.events[0].replyToken, rmsg.events[0].message, ChannelAccessToken);
            }
            //API OK
            return(Ok());
            //}
            //catch (Exception ex)
            //{
            //    return Ok();
            //}
        }
Exemplo n.º 4
0
        public IHttpActionResult POST()
        {
            string postData           = string.Empty;
            string ChannelAccessToken = "TD9YQDq4woBQXd91J11K2V08pAoesJQ/SxaOAaT5I7cNQhW8ZYd6Y8Bcs5mB8o6X4xbsl9as8k+FoiRUj7oda0DQ8sMv1NzyPDNEF+3Cfb4pbnDmIRE8cH0uPDz+m5KNz4/bFKxJECSHRgJ8aWUDiAdB04t89/1O/w1cDnyilFU=";

            //try
            //{
            //http Post RawData(should be JSON)
            postData = Request.Content.ReadAsStringAsync().Result;
            //JSON
            ReceievedMessage rmsg = Parsing(postData);

            //string Message;
            //Message = "해인 :" + rmsg.events[0].message.text;
            //ReplyMessageText(rmsg.events[0].replyToken, Message, ChannelAccessToken);

            if (rmsg.events[0].message.type.ToLower().Equals("text"))
            {
                if (rmsg.events[0].message.text.Equals("우리집"))
                {
                    ReplyMessageLocation(rmsg.events[0].replyToken, rmsg.events[0].message, ChannelAccessToken);
                }
                else if (rmsg.events[0].message.text.Equals("해인이"))
                {
                    ReplyMessageImage(rmsg.events[0].replyToken, rmsg.events[0].message, ChannelAccessToken);
                }
                else
                {
                    string Message;
                    Message = "해인 :" + rmsg.events[0].message.text;
                    ReplyMessageText(rmsg.events[0].replyToken, Message, ChannelAccessToken);
                }
            }
            else if (rmsg.events[0].message.type.ToLower().Equals("sticker"))
            {
                ReplyMessageSticker(rmsg.events[0].replyToken, rmsg.events[0].message, ChannelAccessToken);
            }
            //API OK
            return(Ok());
            //}
            //catch (Exception ex)
            //{
            //    return Ok();
            //}
        }
Exemplo n.º 5
0
        internal void process(Event item, ReceievedMessage receivedMessage, string channelAccessToken, Bot bot)
        {
            string     userDisplayName = isRock.LineBot.Utility.GetUserInfo(item.source.userId, channelAccessToken).displayName;
            UserStatus userStatus      = new UserStatus(item.source.userId, userDisplayName);

            userStatus.InitializeByUserID();

            PeriodOrderTmp periodOrderTmp = new PeriodOrderTmp(item.source.userId);

            periodOrderTmp.InsertInitialPeriodOrderTmp();

            OrderTemp orderTmp = new OrderTemp(item.source.userId);

            orderTmp.InsertInitialOrderTmp();

            ShopTemp shopTemp = new ShopTemp(item.source.userId);

            shopTemp.InsertInitialShopTemp();
        }
Exemplo n.º 6
0
        public void MessageProcess(Event item, ReceievedMessage receivedMessage)
        {
            try
            {
                switch (item.type)
                {
                case "postback":

                    PostbackManager postbackManager = new PostbackManager();
                    postbackManager.Process(item, receivedMessage, ChannelAccessToken);
                    break;

                case "join":

                    break;

                case "message":

                    MessageManager messageManager = new MessageManager();
                    messageManager.Process(item, receivedMessage, ChannelAccessToken, bot);

                    break;


                case "follow":
                    FollowManager followManager = new FollowManager();
                    followManager.process(item, receivedMessage, ChannelAccessToken, bot);
                    break;

                default:
                    break;
                }
            }
            catch (Exception ex)
            {
            }
        }
Exemplo n.º 7
0
 public DialogFlow(ReceievedMessage ReceivedMessage)
 {
     this._ReceivedMessage = ReceivedMessage;
     this._user_id         = ReceivedMessage.events.FirstOrDefault().source.userId;
     StatusInit();
 }
        public static void Handle(int _subState, ReceievedMessage _ReceivedMessage)
        {
            var _LineEvent   = _ReceivedMessage.events.FirstOrDefault();
            var _userId      = _LineEvent.source.userId;
            var ChannelToken = ConfigurationManager.AppSettings["ChannelAccessToken"];

            isRock.LineBot.Bot bot = new isRock.LineBot.Bot(ChannelToken);
            var userInfo           = bot.GetUserInfo(_userId);

            switch (_subState)
            {
            case (int)SubStateEnum.Step0:

                if (!Process_Validate.Handle(_LineEvent, bot))
                {
                    return;
                }

                bot.ReplyMessage(_LineEvent.replyToken, $"哈,'{userInfo.displayName}' 你來了...歡迎,現在開始用藥流程對話");
                azQuery.resetStatus(string.Concat(0, (int)StateEnum.DrugRemind, 0, (int)SubStateEnum.Step1));

                break;

            case (int)SubStateEnum.Step1:

                if (!Process_Validate.Handle(_LineEvent, bot))
                {
                    return;
                }

                bot.ReplyMessage(_LineEvent.replyToken, $"哈,'{userInfo.displayName}' 現在是第一階段對話");
                azQuery.resetStatus(string.Concat(0, (int)StateEnum.DrugRemind, 0, (int)SubStateEnum.Step2));

                break;

            case (int)SubStateEnum.Step2:

                if (!Process_Validate.Handle(_LineEvent, bot))
                {
                    return;
                }

                bot.ReplyMessage(_LineEvent.replyToken, $"哈,'{userInfo.displayName}' 現在是第二階段對話");
                azQuery.resetStatus(string.Concat(0, (int)StateEnum.DrugRemind, 0, (int)SubStateEnum.Step3));

                break;

            case (int)SubStateEnum.Step3:

                if (!Process_Validate.Handle(_LineEvent, bot))
                {
                    return;
                }

                bot.ReplyMessage(_LineEvent.replyToken, $"哈囉,'{userInfo.displayName}' 現在是最後階段對話");
                azQuery.resetStatus(string.Concat(0, (int)StateEnum.DrugRemind, 0, (int)SubStateEnum.StepReset));

                break;

            case (int)SubStateEnum.Step4:


                break;

            case (int)SubStateEnum.Step5:

                break;

            case (int)SubStateEnum.Step6:

                break;

            default:
                break;
            }
        }
Exemplo n.º 9
0
        public async Task <IHttpActionResult> POSTAsync()
        {
            try
            {
                //取得 http Post RawData(should be JSON)
                postData = Request.Content.ReadAsStringAsync().Result;
                //剖析JSON
                ReceivedMessage = isRock.LineBot.Utility.Parsing(postData);
                //建立 Line BOT
                LintBot = new isRock.LineBot.Bot(ChannelAccessToken);
                //取得 User 的資訊
                userInfo = LintBot.GetUserInfo(ReceivedMessage.events.FirstOrDefault().source.userId);
                switch (userInfo.displayName.Trim())
                {
                case "熊寶寶":
                    username = "******";
                    break;

                case "蔡福元":
                    username = "******";
                    break;

                case "Maggie":
                    username = "******";
                    break;

                default:
                    break;
                }
                //取得 User 所 PO 的訊息
                string userMsg = ReceivedMessage.events[0].message.text;

                //新朋友來了(或解除封鎖)
                if (ReceivedMessage.events.FirstOrDefault().type == "follow" || ReceivedMessage.events.FirstOrDefault().type == "join")
                {
                    NewJoin();
                }

                //專門處理關鍵字 - "/ShowMyID"
                if (userMsg.ToUpper().Contains("/SHOWMYID"))
                {
                    ShowMyID();
                }

                //專門處理關鍵字 - "PM2.5"
                if (userMsg.ToUpper().Contains("PM2.5") || userMsg.Contains("空氣品質") || userMsg.Contains("空污"))
                {
                    string getmsg = await CallFunction.GetAirQulity(userMsg.ToUpper());

                    isRock.LineBot.Utility.ReplyMessage(ReceivedMessage.events[0].replyToken, getmsg, ChannelAccessToken);
                    //LintBot.ReplyMessage(ReceivedMessage.events[0].replyToken, pm25);
                }

                //專門處理關鍵字 - "股價 / 股票"
                if (userMsg.ToUpper().Contains("股價") || userMsg.Contains("股票"))
                {
                    GetStock(userMsg.ToUpper());
                }

                //專門處理關鍵字 - "股價 / 股票"
                if (userMsg.ToUpper().Contains("匯率"))
                {
                    string getmsg = CallFunction.GetExchange(userMsg.ToUpper());
                    isRock.LineBot.Utility.ReplyMessage(ReceivedMessage.events[0].replyToken, getmsg, ChannelAccessToken);
                }

                ////專門處理 Q & A :前置字元為"熊熊:"
                //if (userMsg.Contains("熊熊:") || userMsg.Contains("熊熊,"))
                //{
                //    QNAMaker(userMsg);
                //}

                // 先處理以上含有特殊關鍵字,若未含特殊關鍵字就丟 Q&A (不用再判斷是否有"熊熊,"開頭)
                QNAMaker(userMsg);

                //若 Q&A 沒有處理到,就專門處理關鍵字 - "里長嬤" or "里長伯"
                if (userMsg.Contains("里長嬤"))
                {
                    District("里長嬤");
                }
                if (userMsg.Contains("里長伯"))
                {
                    District("里長伯");
                }
                //回覆API OK
                return(Ok());
            }
            catch (Exception ex)
            {
                return(InternalServerError(new Exception("Error : " + ex.Message.ToString())));
            }
        }
Exemplo n.º 10
0
        public void SendDynamicMessageToCustommer(ReceievedMessage ReceivedMessage)
        {
            try
            {
                dynamic dataJson = new ExpandoObject();

                if (ReceivedMessage.events[0].message.type == "text")
                {
                    dataJson = DeclareDynamicTextModel(ReceivedMessage.events[0].message.text);
                }
                else if (ReceivedMessage.events[0].message.type == "image")
                {
                    dataJson = DeclareDynamicImageModel(
                        ReceivedMessage.events[0].message.originalContentUrl,
                        ReceivedMessage.events[0].message.previewImageUrl

                        );
                }
                else if (ReceivedMessage.events[0].message.type == "video")
                {
                    dataJson = DeclareDynamicVideoModel(
                        ReceivedMessage.events[0].message.originalContentUrl,
                        ReceivedMessage.events[0].message.previewImageUrl

                        );
                }
                else if (ReceivedMessage.events[0].message.type == "audio")
                {
                    dataJson = DeclareDynamicAudioModel(
                        ReceivedMessage.events[0].message.originalContentUrl,
                        ReceivedMessage.events[0].message.duration
                        );
                }
                else if (ReceivedMessage.events[0].message.type == "location")
                {
                    dataJson = DeclareDynamicLocationModel(
                        ReceivedMessage.events[0].message.title,
                        ReceivedMessage.events[0].message.address,
                        ReceivedMessage.events[0].message.latitude,
                        ReceivedMessage.events[0].message.longitude
                        );
                }
                else if (ReceivedMessage.events[0].message.type == "sticker")
                {
                    dataJson = DeclareDynamicStickernModel(ReceivedMessage.events[0].message.packageId, ReceivedMessage.events[0].message.stickerId);
                }
                else if (ReceivedMessage.events[0].message.type == "imagemap")
                {
                    dataJson = DeclareDynamicImagemapModel(
                        ReceivedMessage.events[0].message.actions,
                        ReceivedMessage.events[0].message.baseUrl,
                        ReceivedMessage.events[0].message.altText

                        );
                }
                else if (ReceivedMessage.events[0].message.type == "buttons" && ReceivedMessage.events[0].message.template.type == "buttons") //template
                {
                    dataJson = DeclareDynamicTemplateModel(
                        ReceivedMessage.events[0].message.template.actions,
                        ReceivedMessage.events[0].message.altText,
                        ReceivedMessage.events[0].message.template.text,
                        ReceivedMessage.events[0].message.template.title,
                        ReceivedMessage.events[0].message.template.thumbnailImageUrl
                        );
                }
                else if (ReceivedMessage.events[0].message.type == "buttons" && ReceivedMessage.events[0].message.template.type == "carousel")//carouseltemplate
                {
                    dataJson = DeclareDynamicCarouselTemplateModel(
                        ReceivedMessage.events[0].message.template.columns,
                        ReceivedMessage.events[0].message.altText);
                }
                else if (ReceivedMessage.events[0].message.type == "buttons" && ReceivedMessage.events[0].message.template.type == "confirm")//confirm
                {
                    dataJson = DeclareDynamicConfirmTemplateModel(
                        ReceivedMessage.events[0].message.template.actions,
                        ReceivedMessage.events[0].message.altText,
                        ReceivedMessage.events[0].message.text);
                }

                dynamic mainJson = new ExpandoObject();
                if (ReceivedMessage.events[0].source.multicastToUserId != null && ReceivedMessage.events[0].source.multicastToUserId.Length > 0)
                {
                    mainJson.to = ReceivedMessage.events[0].source.multicastToUserId;
                }
                else
                {
                    mainJson.to = ReceivedMessage.events[0].source.userId;
                }
                mainJson.messages = new List <ExpandoObject>();
                mainJson.messages.Add(dataJson);
                var serialized = JsonConvert.SerializeObject(mainJson);
                PushDynamicMessage(serialized);
            }
            catch (Exception exc)
            {
                throw exc;
            }
        }
Exemplo n.º 11
0
        public static void Handle(int _subState, ReceievedMessage _ReceivedMessage)
        {
            //取得Line Event
            var _LineEvent = _ReceivedMessage.events.FirstOrDefault();
            Bot bot        = new Bot(ChannelToken);
            var userInfo   = bot.GetUserInfo(_LineEvent.source.userId);

            switch (_subState)
            {
            case (int)SubStateEnum.Step0:

                if (!Process_Validate.Handle(_LineEvent, bot))
                {
                    return;
                }

                //replyToken只能使用一次,可以塞Button Template和Flex Message
                bot.ReplyMessage(_LineEvent.replyToken, $"哈,'{userInfo.displayName}' 你來了...歡迎,現在開始首頁對話");
                //轉為字串存取進DB狀態欄
                azQuery.resetStatus(string.Concat(0, (int)StateEnum.Portal, 0, (int)SubStateEnum.Step1));

                break;

            case (int)SubStateEnum.Step1:

                if (!Process_Validate.Handle(_LineEvent, bot))
                {
                    return;
                }


                bot.ReplyMessage(_LineEvent.replyToken, $"哈囉,'{userInfo.displayName}' 現在是第一階段對話");
                azQuery.resetStatus(string.Concat(0, (int)StateEnum.Portal, 0, (int)SubStateEnum.Step2));

                break;

            case (int)SubStateEnum.Step2:

                if (!Process_Validate.Handle(_LineEvent, bot))
                {
                    return;
                }

                bot.ReplyMessage(_LineEvent.replyToken, $"哈囉,'{userInfo.displayName}' 現在是第二階段對話");
                azQuery.resetStatus(string.Concat(0, (int)StateEnum.Portal, 0, (int)SubStateEnum.Step3));

                break;

            case (int)SubStateEnum.Step3:

                if (_LineEvent.type == "message" && _LineEvent.message.type == "text")
                {
                    bot.ReplyMessage(_LineEvent.replyToken, $"哈囉,'{userInfo.displayName}' 現在是第三階段對話");

                    //轉為字串存取進DB狀態欄
                    azQuery.resetStatus(string.Concat(0, (int)StateEnum.Portal, 0, (int)SubStateEnum.Step4));
                }
                else
                {
                    bot.ReplyMessage(_LineEvent.replyToken, $"不好意思,我只聽得懂語言");
                }

                break;

            case (int)SubStateEnum.Step4:

                if (_LineEvent.type == "message" && _LineEvent.message.type == "text")
                {
                    bot.ReplyMessage(_LineEvent.replyToken, $"哈囉,'{userInfo.displayName}' 現在是最後階段對話");
                    azQuery.resetStatus(string.Concat(0, (int)StateEnum.Portal, 0, (int)SubStateEnum.StepReset));
                }
                else
                {
                    bot.ReplyMessage(_LineEvent.replyToken, $"不好意思,我只聽得懂語言");
                }
                break;

            case (int)SubStateEnum.Step5:

                break;

            case (int)SubStateEnum.Step6:

                break;

            default:
                break;
            }
        }