public async Task <ActionResult> Post([FromBody] string value) { var activity = JsonConvert.DeserializeObject <Activity>(value); // Line may send multiple events in one message, so need to handle them all. foreach (Event lineEvent in activity.Events) { LineMessageHandler handler = new LineMessageHandler(lineEvent); Profile profile = await handler.GetProfile(lineEvent.Source.UserId); //if(profile == null) //{ // return Request.CreateResponse(HttpStatusCode.OK); //} switch (lineEvent.Type) { case EventType.Beacon: await handler.HandleBeaconEvent(); break; case EventType.Follow: await handler.HandleFollowEvent(); break; case EventType.Join: await handler.HandleJoinEvent(); break; case EventType.Leave: await handler.HandleLeaveEvent(); break; case EventType.Message: Message message = JsonConvert.DeserializeObject <Message>(lineEvent.Message.ToString()); switch (message.Type) { case MessageType.Text: await handler.HandleTextMessage(MessageHandler.Current); break; case MessageType.Audio: case MessageType.Image: case MessageType.Video: await handler.HandleMediaMessage(); break; case MessageType.Sticker: await handler.HandleStickerMessage(); break; case MessageType.Location: await handler.HandleLocationMessage(); break; } break; case EventType.Postback: await handler.HandlePostbackEvent(); break; case EventType.Unfollow: await handler.HandleUnfollowEvent(); break; } } return(this.Ok()); }
// GET: LineEvents public async Task <ActionResult> Index(/*[FromBody]String content*/) { Request.SaveAs(Path.Combine(Logger.LogDailyPath, "LineEvents-" + DateTime.Now.Ticks + ".txt"), true); if (Request.ContentLength > 0) { byte[] content = new byte[Request.ContentLength]; Request.InputStream.Read(content, 0, Request.ContentLength); if (validateSignature(content)) { var jsonData = Encoding.UTF8.GetString(content); Activity activity = JsonConvert.DeserializeObject <Activity>(jsonData); foreach (Event lineEvent in activity.Events) { //if (lineEvent.ReplyToken == "00000000000000000000000000000000" // || lineEvent.ReplyToken != "ffffffffffffffffffffffffffffffff") //{ // return new EmptyResult(); //} LineMessageHandler handler = new LineMessageHandler(lineEvent, models); Profile profile = await handler.GetProfile(lineEvent.Source.UserId); switch (lineEvent.Type) { case EventType.Beacon: await handler.HandleBeaconEvent(); break; case EventType.Follow: await handler.HandleFollowEvent(); break; case EventType.Join: await handler.HandleJoinEvent(); break; case EventType.Leave: await handler.HandleLeaveEvent(); break; case EventType.Message: Message message = JsonConvert.DeserializeObject <Message>(lineEvent.Message.ToString()); switch (message.Type) { case MessageType.Text: await handler.HandleTextMessage(); break; case MessageType.Audio: case MessageType.Image: case MessageType.Video: await handler.HandleMediaMessage(); break; case MessageType.Sticker: await handler.HandleStickerMessage(); break; case MessageType.Location: await handler.HandleLocationMessage(); break; } break; case EventType.Postback: await handler.HandlePostbackEvent(); break; case EventType.Unfollow: await handler.HandleUnfollowEvent(); break; } } } } return(new EmptyResult()); }