コード例 #1
0
        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());
        }
コード例 #2
0
        // 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());
        }