public async Task CallApi(LineResponseModel data) { StringContent content = new StringContent(func.JsonSerialize(data), System.Text.Encoding.UTF8, "application/json"); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ChannelAccessToken); var response = await client.PostAsync("https://api.line.me/v2/bot/message/reply", content); var contents = await response.Content.ReadAsStringAsync(); }
public async Task <IActionResult> Webhook(LineRequestModel request) { LineResponseModel response = new LineResponseModel(); LineCardTemplateResponseModel cardResponse = new LineCardTemplateResponseModel(); BubbleMain bubble = new BubbleMain(); dupBubbleMain dupbubble = new dupBubbleMain(); MessageResponseModel message = new MessageResponseModel(); StickerModel sticker = new StickerModel(); StickerMessageModel stickerMessage = new StickerMessageModel(); CarouselMain master = new CarouselMain(); DateTime date; Task <UserProfile> profile; string holyType = "text"; decimal txtnumber; string strMessage = ""; profile = api.GetUserProfile(request.events[0].source.userId); if (profile.Result != null) { action.SP_InsertUserFollow( request.events[0].source.userId, profile.Result.displayName, profile.Result.pictureUrl, profile.Result.statusMessage, profile.Result.language ); } if (request.events[0].message == null) { request.events[0].message = new MessageModel(); } // KeepLog action.SP_InsertLogRequestMessage( request.events[0].type, request.destination, request.events[0].mode, request.events[0].type == "message" ? request.events[0].message.text : "", func.JsonSerialize(request), DateTime.Now, request.events[0].source.userId, request.events[0].source.userId ); if (request.events[0].message.text == "เช็คยอดคงเหลือ") { customer.REST_InitialStep(request.events[0].source.userId, "1", ""); strMessage = "รบกวนให้ลูกค้า กรอกข้อมูล รหัสบัตรประชาชน 13 หลัก"; message = api.SetMessage("รบกวนให้ลูกค้า กรอกข้อมูล รหัสบัตรประชาชน 13 หลัก"); } else if (decimal.TryParse(request.events[0].message.text, out txtnumber) && request.events[0].message.text.Length == 13) { customer.REST_InitialStep(request.events[0].source.userId, "2", request.events[0].message.text); strMessage = "รบกวนขอ วัน/เดือน/ปี (คศ) เกิด ของลูกค้าครับ"; message = api.SetMessage("รบกวนขอ วัน/เดือน/ปี (คศ) เกิด ของลูกค้าครับ"); } else if (DateTime.TryParseExact(request.events[0].message.text, "dd'/'MM'/'yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date)) { customer.REST_InitialStep(request.events[0].source.userId, "3", request.events[0].message.text); dt = new DataTable(); dt = customer.REST_SelectFilterCondition(request.events[0].source.userId); if (dt.Rows.Count > 0) { List <CustomerData> data = new List <CustomerData>(); data = customer.REST_GetAccountInformation(dt.Rows[0]["IDCard"].ToString(), dt.Rows[0]["BirthDay"].ToString(), ""); if (data.Count > 0) { foreach (CustomerData cus in data) { strMessage = func.GetMessageCondition(); strMessage = string.Format(strMessage, cus.AgreementNo, cus.Model, cus.NetFinance > 0 ? cus.NetFinance.ToString("#,###.00") : "-", cus.InstallmentAmount > 0 ? cus.InstallmentAmount.ToString("#,###.00") : "-", cus.DueDate, cus.LastDueDate.Date.ToString("dd-MM-yyyy"), cus.OSBalance > 0 ? cus.OSBalance.ToString("#,###.00") : "-", cus.PeriodDue, cus.CollectionAmount > 0 ? cus.CollectionAmount.ToString("#,###.00") : "-", cus.PenaltyAmount > 0 ? cus.PenaltyAmount.ToString("#,###.00") : "-", cus.OtherFee > 0 ? cus.OtherFee.ToString("#,###.00") : "-", cus.PaymentDue > 0 ? cus.PaymentDue.ToString("#,###.00") : "-", cus.PayDueDate.Date.ToString("dd-MM-yyyy") == "01-01-1900" ? "-" : cus.PayDueDate.Date.ToString("dd-MM-yyyy"), cus.ODAmount > 0 ? cus.ODAmount.ToString("#,###.00") : "-", cus.ODPeriodDue, cus.isPastDue, cus.CurrentInstallment > 0 ? cus.CurrentInstallment.ToString("#,###.00") : "-", cus.ContractStatus, cus.DiscountAmount > 0 ? cus.DiscountAmount.ToString("#,###.00") : "-", cus.SuspensionTenor ); message = api.SetMessage(strMessage); dupbubble = new dupBubbleMain(); dupbubble = api.SetBubbleMessage(strMessage); dupbubble.to = request.events[0].source.userId; await api.CallApi(dupbubble); action.SP_InsertLogRequestMessage( "reply", request.events[0].source.userId, request.events[0].mode, strMessage, "", DateTime.Now, request.destination, "SYSTEM" ); } cardResponse = api.SetCardMessage(strMessage); return(Ok()); } else { action.SP_InsertLogRequestMessage( "reply", request.events[0].source.userId, request.events[0].mode, strMessage, "", DateTime.Now, request.destination, "SYSTEM" ); strMessage = "สถานะสัญญาไม่สอดคล้องกับการแสดงผล รบกวนขอเบอร์ติดต่อ คุณลูกค้าเพื่อให้เจ้าหน้าที่ติดต่อให้ข้อมูลครับ"; message = api.SetMessage("สถานะสัญญาไม่สอดคล้องกับการแสดงผล รบกวนขอเบอร์ติดต่อ คุณลูกค้าเพื่อให้เจ้าหน้าที่ติดต่อให้ข้อมูลครับ"); } } else { strMessage = "ไม่พบข้อมูลที่ต้องการค้นหา กรุณาตรวจสอบข้อมูล หรือ ลองทำรายการใหม่"; message = api.SetMessage("ไม่พบข้อมูลที่ต้องการค้นหา กรุณาตรวจสอบข้อมูล หรือ ลองทำรายการใหม่"); } } else if (request.events[0].message.text == "เช็คยอดปิดบัญชี") { message = api.SetMessage( @" รบกวน แจ้งข้อมูล ดังนี้ครับ 1. เลขที่สัญญา หรือ เลขหลังบัตร Next Card หรือ ทะเบียนรถ 2. ชื่อนาม-สกุลของผู้เช่าซื้อ 3. วันที่ต้องการชำระยอดปิดทั้งหมด 4. พร้อมเบอร์ติดต่อกลับที่สะดวก เพื่อให้เจ้าหน้าที่คำนวณยอดให้ตามระบบและติดต่อกลับครับ "); strMessage = @" รบกวน แจ้งข้อมูล ดังนี้ครับ 1. เลขที่สัญญา หรือ เลขหลังบัตร Next Card หรือ ทะเบียนรถ 2. ชื่อนาม-สกุลของผู้เช่าซื้อ 3. วันที่ต้องการชำระยอดปิดทั้งหมด 4. พร้อมเบอร์ติดต่อกลับที่สะดวก เพื่อให้เจ้าหน้าที่คำนวณยอดให้ตามระบบและติดต่อกลับครับ "; } else if (request.events[0].message.text == "ช่องทางชำระเงิน") { message = api.SetMessage( @"คุณสามารถชำระค่างวดรถเน็คซ์ได้ ตามช่องทางดังนี้ครับ 1. ผ่านแอปฯธนาคาร(ฟรีค่าธรรมเนียม) : ได้ทุกธนาคาร โดยใช้คิวร์อาร์โค้ดบนใบแจ้งชำระ แสกน หรือหากไม่มี ทักมาได้ครับ 👌 ธ.ไทยพาณิชย์ สามารถใช้บาร์โค้ดบนบัตรเน็คซ์การ์ด ชำระได้ 2. ผ่านจุดรับชำระเงิน(ค่าบริการเริ่ม 10บ.) : เคาน์เตอร์เวอร์วิส, เทสโก้โลตัส, เพย์@โพส โดยใช้ บาร์โค้ดหลังบัตรเน็คซ์การ์ด หรือบนใบแจ้งชำระ เพื่อชำระเงิน" ); strMessage = @"คุณสามารถชำระค่างวดรถเน็คซ์ได้ ตามช่องทางดังนี้ครับ 1. ผ่านแอปฯธนาคาร(ฟรีค่าธรรมเนียม) : ได้ทุกธนาคาร โดยใช้คิวร์อาร์โค้ดบนใบแจ้งชำระ แสกน หรือหากไม่มี ทักมาได้ครับ 👌 ธ.ไทยพาณิชย์ สามารถใช้บาร์โค้ดบนบัตรเน็คซ์การ์ด ชำระได้ 2. ผ่านจุดรับชำระเงิน(ค่าบริการเริ่ม 10บ.) : เคาน์เตอร์เวอร์วิส, เทสโก้โลตัส, เพย์@โพส โดยใช้ บาร์โค้ดหลังบัตรเน็คซ์การ์ด หรือบนใบแจ้งชำระ เพื่อชำระเงิน"; } else if (request.events[0].message.text == "ค้นหาสาขาเน็คซ์") { holyType = "card"; bubble = api.SetCarouselMessage(); strMessage = "Card Carousel"; // message = api.SetMessage("https://www.nextcapital.co.th/locator"); } else if (request.events[0].type == "follow") { message = api.SetMessage( string.Format( @"สวัสดีครับ คุณ {0} ขอบคุณที่เป็นเพื่อนกับ Next Connect โดย เน็คซ์แคปปิตอล ให้เราได้ช่วยเหลือคุณ หรือจะพูดคุยสอบถาม กับเราได้ตลอดเวลาครับผม", profile.Result.displayName)); strMessage = string.Format( @"สวัสดีครับ คุณ {0} ขอบคุณที่เป็นเพื่อนกับ Next Connect โดย เน็คซ์แคปปิตอล ให้เราได้ช่วยเหลือคุณ หรือจะพูดคุยสอบถาม กับเราได้ตลอดเวลาครับผม", profile.Result.displayName); } else if (request.events[0].message.text.Length == 10 && !request.events[0].message.text.Contains("-") && !request.events[0].message.text.Contains("/")) { message = api.SetMessage("ทางเราได้รับเบอร์ติดต่อแล้ว เดี๋ยวจะมีเจ้าหน้าที่ติดต่อกลับครับ"); strMessage = "ทางเราได้รับเบอร์ติดต่อแล้ว เดี๋ยวจะมีเจ้าหน้าที่ติดต่อกลับครับ"; sticker = api.SetStickerMessage("11537", "52002739"); } else { message = api.SetMessage("รบกวนขอเบอร์ติดต่อคุณลูกค้า เพื่อให้เจ้าหน้าที่ติดต่อเพื่อให้ข้อมูลครับ"); //message = api.SetMessage(func.JsonSerialize(request)); strMessage = "รบกวนขอเบอร์ติดต่อคุณลูกค้า เพื่อให้เจ้าหน้าที่ติดต่อเพื่อให้ข้อมูลครับ"; } if (holyType == "text") { response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); } else if (holyType == "card") { // cardResponse.to = request.events[0].source.userId; // await api.CallApi(cardResponse); bubble.to = request.events[0].source.userId; await api.CallApi(bubble); } else { master.to = request.events[0].source.userId; await api.CallApi(master); } if (sticker.messages.Count > 0) { sticker.to = request.events[0].source.userId; await api.CallApi(sticker); } action.SP_InsertLogRequestMessage( "reply", request.events[0].source.userId, request.events[0].mode, strMessage, "", DateTime.Now, request.destination, "SYSTEM" ); return(Ok()); }
public async Task <IActionResult> TestConnection(LineRequestModel request) { LineResponseModel response = new LineResponseModel(); LineMessageTemplate.FlexMessageMain flex = new LineMessageTemplate.FlexMessageMain(); MessageResponseModel message = new MessageResponseModel(); LineMessageTemplate.RichMenuMain menu = new LineMessageTemplate.RichMenuMain(); Task <UserProfile> profile; Task <LineMessageTemplate.RichMenuResponse> result; DataTable checkHelperCase = new DataTable(); string msg = ""; string typeofMenu = ""; try { message = api.SetMessage("กรุณากรอก Secret Code ที่ได้รับ เพื่อเริ่มต้นใช้งาน"); for (int i = 0; i < request.events.Count; i++) { response.replyToken = request.events[i].replyToken; response.messages.Add(message); // await api.CallApi(response); try { using (HttpClient client = new HttpClient()) { action.SP_InsertLogRequestMessage( "Call API", "", "request.events[0].mode", "", "Before Call API", DateTime.Now, "request.events[0].source.userId", "request.events[0].source.userId" ); StringContent content = new StringContent(func.JsonSerialize(response), System.Text.Encoding.UTF8, "application/json"); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "q281ubFyT1L3Z1gAyrcLdLY4mHv2hXJFqAb/MEUO2OncgbgXdSsR6BDCXsrTZh0I3haZwDDaz1lrKF694gC0fTnp/CnbLma8WkiHW3UXwSf6gHxU5lNJP/IYeb1+KQRFeun9E5jJT8qx9lpQpY1S9AdB04t89/1O/w1cDnyilFU="); var sresult = await client.PostAsync("https://api.line.me/v2/bot/message/reply", content); var contents = await sresult.Content.ReadAsStringAsync(); action.SP_InsertLogRequestMessage( "Call API", "", "request.events[0].mode", "", contents[0].ToString(), DateTime.Now, "request.events[0].source.userId", "request.events[0].source.userId" ); } } catch (Exception e) { action.SP_InsertLogRequestMessage( "request.events[0].type", "", "Error", "", e.Message, DateTime.Now, "request.events[0].source.userId", "request.events[0].source.userId" ); return(Ok()); } } return(Ok()); } catch (Exception e) { action.SP_InsertLogRequestMessage( "request.events[0].type", "", "request.events[0].mode", "", e.Message, DateTime.Now, "request.events[0].source.userId", "request.events[0].source.userId" ); return(Ok()); } }
public async Task <IActionResult> WebHook(LineRequestModel request) { LineResponseModel response = new LineResponseModel(); LineMessageTemplate.FlexMessageMain flex = new LineMessageTemplate.FlexMessageMain(); MessageResponseModel message = new MessageResponseModel(); LineMessageTemplate.RichMenuMain menu = new LineMessageTemplate.RichMenuMain(); Task <UserProfile> profile; Task <LineMessageTemplate.RichMenuResponse> result; DataTable checkHelperCase = new DataTable(); string msg = ""; string typeofMenu = ""; profile = api.GetUserProfile(request.events[0].source.userId); checkHelperCase = DAC.REST_CheckHelperCase(request.events[0].source.userId); // KeepLog action.SP_InsertLogRequestMessage( request.events[0].type, request.destination, request.events[0].mode, request.events[0].type == "message" ? request.events[0].message.text : "", func.JsonSerialize(request), DateTime.Now, request.events[0].source.userId, request.events[0].source.userId ); if (request.events[0].type == "follow") { if (profile.Result != null) { action.SP_InsertUserFollow( request.events[0].source.userId, profile.Result.displayName == null ? "" : profile.Result.displayName, profile.Result.pictureUrl == null ? "" : profile.Result.pictureUrl, profile.Result.statusMessage == null ? "" : profile.Result.statusMessage, profile.Result.language == null ? "" : profile.Result.language ); } msg = string.Format(template.FollowMessage(), profile.Result.displayName); message = api.SetMessage(msg); response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); } else if (request.events[0].message.text == "เช็คสถานะ") { dt = new DataTable(); dt = DAC.REST_CheckStatustoFlexMessage(request.events[0].source.userId); flex = template.SetupFlexMessage(dt); flex.to = request.events[0].source.userId; await api.CallApi(flex); return(Ok()); } else if (request.events[0].message.text == "ช่วยเหลือ") { message = api.SetMessage("ต้องการให้เราช่วยอะไรครับ"); response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); action.SP_InsertLogRequestMessage( "reply", request.events[0].source.userId, request.events[0].mode, request.events[0].message.text, "", DateTime.Now, request.destination, "SYSTEM" ); return(Ok()); } else if (checkHelperCase.Rows.Count > 0) // Helper Case { if (checkHelperCase.Rows[0]["Log_Message"].ToString() == "ช่วยเหลือ") { message = api.SetMessage("ทางเราได้รับทราบปัญหาแล้ว จะเร่งดำเนินการแก้ไขให้ครับ"); response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); action.SP_InsertLogRequestMessage( "reply", request.events[0].source.userId, request.events[0].mode, request.events[0].message.text, "", DateTime.Now, request.destination, "SYSTEM" ); dt = new DataTable(); dt = DAC.REST_GetNeedHelpMessage(request.events[0].source.userId); string alertLine = template.MessageNeedHelp(); if (dt.Rows.Count > 0) { alertLine = string.Format(alertLine, dt.Rows[0]["User_Role"].ToString(), dt.Rows[0]["BranchCode"].ToString(), dt.Rows[0]["User_Name"].ToString(), dt.Rows[0]["RequestDate"].ToString(), dt.Rows[0]["message"].ToString()); await api.MessageToGroupSupport(alertLine); } return(Ok()); } } else { if (request.events[0].message.text == "เริ่มต้นใช้งาน") { message = api.SetMessage("กรุณากรอก Secret Code ที่ได้รับ เพื่อเริ่มต้นใช้งาน"); response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); return(Ok()); } // Check is AppNo dt = new DataTable(); dt = DAC.CheckApplicationNo(request.events[0].message.text); if (dt.Rows.Count > 0) { dtifExists = new DataTable(); dtifExists = DAC.REST_CheckAceptTaskExisting(request.events[0].message.text); if (dtifExists.Rows.Count > 0) { if (!string.IsNullOrEmpty(dtifExists.Rows[0]["Application_Responsibility"].ToString())) { message = api.SetMessage("ไม่สามารถทำรายการได้เนื่องจากมีคนกดรับงานไปแล้ว"); response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); return(Ok()); } } checker.AcceptTask(request.events[0].source.userId, dt.Rows[0]["Application_No"].ToString()); message = api.SetMessage("บันทึกข้อมูลสำเร็จ"); response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); return(Ok()); } dt = new DataTable(); dt = DAC.CheckSecretCode(request.events[0].message.text); if (dt.Rows.Count == 0) { msg = string.Format(template.UnAuthorizeMessage(), profile.Result.displayName); message = api.SetMessage(msg); response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); } else { dt = new DataTable(); dt = DAC.MatchingUser(request.events[0].source.userId, request.events[0].message.text); if (dt.Rows.Count > 0) { if (dt.Rows[0]["User_Role"].ToString() == "Checker" || dt.Rows[0]["User_Role"].ToString() == "BranchHead") { typeofMenu = "checker"; menu = template.SetupRichMenuChecker(request.events[0].source.userId); } else { typeofMenu = "dealer"; menu = template.SetupRichMenuDealer(request.events[0].source.userId); } if (string.IsNullOrEmpty(dt.Rows[0]["User_RichMenuID"].ToString())) { result = api.SetupMenu(menu, typeofMenu); await api.SetupBackgroundMenu(result.Result.richMenuId, typeofMenu + ".png"); if (result != null) { try { await api.SetDefaultMenu(result.Result.richMenuId, request.events[0].source.userId); } catch (Exception e) { await api.DeleteMenu(result.Result.richMenuId); return(BadRequest(e.Message)); } finally { DAC.SetupRichmenubyUser(request.events[0].source.userId, result.Result.richMenuId); } } } dt = new DataTable(); dt = DAC.GetUserInformation(request.events[0].source.userId); if (dt.Rows.Count > 0) { msg = string.Format( template.PassAuthorizeMessage() , dt.Rows[0]["User_Name"].ToString() , dt.Rows[0]["User_Code"].ToString() , dt.Rows[0]["User_Area"].ToString() ); message = api.SetMessage(msg); response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); } } else { } } } return(Ok()); }