/// <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(); }
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); }
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(); //} }
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(); //} }
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(); }
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) { } }
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; } }
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()))); } }
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; } }
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; } }