Example #1
0
 protected override async Task OnAccountLinkAsync(AccountLinkEvent ev)
 {
     //アカウント連携イベント
     //Account link event
     //リプライ可能 Replyable
     //https://developers.line.biz/ja/reference/messaging-api/#account-link-event
     //https://developers.line.biz/en/reference/messaging-api/#account-link-event
 }
Example #2
0
        /// <summary>
        /// アカウント連携イベント
        /// </summary>
        protected override async Task OnAccountLinkAsync(AccountLinkEvent ev)
        {
            if (ev.Link.Result == LinkResult.Failed)
            {
                await Line.ReplyMessageAsync(ev.ReplyToken, $"アカウント連携に失敗しました....orz");

                return;
            }

            await Line.ReplyMessageAsync(ev.ReplyToken, $"アカウント連携に成功しました!");

            //メニュー切り替え
            await Line.LinkRichMenuToUserAsync(ev.Source.Id, UnLinkRichMenuId);

            //連携に成功したらNonceを保存しておく
            await Status.UpdateAsync(
                new BotStatus(
                    userId : ev.Source.Id,
                    accountLinkNonce : ev.Link.Nonce));
        }
        //自訂解析JSON傳回物件的邏輯
        public override object ReadJson(JsonReader reader, Type objectType,
                                        object existingValue, JsonSerializer serializer)
        {
            JObject jo = JObject.Load(reader);
            //先取得JobType,由其決定建立物件
            string type = jo["type"].ToString();

            switch (type)
            {
            case Event.MESSAGE_TYPE:
                reader = jo["message"].CreateReader();
                MessageConverter messageConverter = new MessageConverter();
                object           message          = messageConverter.ReadJson(reader, typeof(Message), existingValue, serializer);

                MessageEvent mEv = new MessageEvent();
                serializer.Populate(jo.CreateReader(), mEv);
                mEv.Message = (Message)message;
                return(mEv);

            case Event.UNFOLLOW_TYPE:
            case Event.LEAVE_TYPE:
                Event ufEv = new Event(type);
                serializer.Populate(jo.CreateReader(), ufEv);
                return(ufEv);

            case Event.POST_BACK_TYPE:
                PostbackEvent pbEv = new PostbackEvent();
                serializer.Populate(jo.CreateReader(), pbEv);
                return(pbEv);

            case Event.MEMBER_LEAVE_TYPE:
                MemberLeaveEvent mlEv = new MemberLeaveEvent();
                serializer.Populate(jo.CreateReader(), mlEv);
                return(mlEv);

            case Event.MEMBER_JOIN_TYPE:
                MemberJoinEvent mjEv = new MemberJoinEvent();
                serializer.Populate(jo.CreateReader(), mjEv);
                return(mjEv);

            case Event.JOIN_TYPE:
            case Event.FOLLOW_TYPE:
                FollowJoinEvent fEv = new FollowJoinEvent();
                serializer.Populate(jo.CreateReader(), fEv);
                return(fEv);

            case Event.DEVICE_UN_LINK_TYPE:
                DeviceULinkEvent dulEv = new DeviceULinkEvent();
                serializer.Populate(jo.CreateReader(), dulEv);
                return(dulEv);

            case Event.BEACON_TYPE:
                BeaconEvent bEv = new BeaconEvent();
                serializer.Populate(jo.CreateReader(), bEv);
                return(bEv);

            case Event.ACCOUNT_LINK_TYPE:
                AccountLinkEvent alEv = new AccountLinkEvent();
                serializer.Populate(jo.CreateReader(), alEv);
                return(alEv);

            default:
                throw new ApplicationException("Unsupported type: " + type);
            }
        }
Example #4
0
 protected virtual Task OnAccountLinkAsync(AccountLinkEvent ev) => Task.CompletedTask;