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 }
/// <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); } }
protected virtual Task OnAccountLinkAsync(AccountLinkEvent ev) => Task.CompletedTask;