/// <summary> /// テキストメッセージイベント実行 /// </summary> /// <param name="text">テキスト本文</param> private async Task ExecuteTextMessageEvent( string channelAccessToken, SourceBase source, string replyToken, string text ) { Trace.TraceInformation("Start"); // 引数nullチェック if (channelAccessToken == null) { Trace.TraceInformation("Channel Access Token is Null"); return; } if (source == null) { Trace.TraceWarning("Source is Null"); return; } if (text == null) { Trace.TraceWarning("Text is Null"); return; } switch (text) { case "プロフィールほしい": if (source is GroupSource) { string groupId = (source as GroupSource).groupId; if (groupId == null) { Trace.TraceInformation("Group Id is Null"); return; } string userId = (source as GroupSource).userId; if (userId == null) { Trace.TraceInformation("User Id is Null"); return; } GetUserProfileInGroupOrRoomMemberResponse profilesResponse = await GroupService.GetUserProfileInGroupMember(channelAccessToken, groupId, userId) .ConfigureAwait(false); string messageText = "表示名:" + profilesResponse.displayName + "ID:" + profilesResponse.userId + "画像:" + profilesResponse.pictureUrl + "\n"; await ReplyMessageService.SendReplyMessage( channelAccessToken, replyToken, MessageFactoryService.CreateMessage() .AddTextMessage(messageText) ).ConfigureAwait(false); } else if (source is RoomSource) { string roomId = (source as RoomSource).roomId; if (roomId == null) { Trace.TraceInformation("Room Id is Null"); return; } string userId = (source as RoomSource).userId; if (userId == null) { Trace.TraceInformation("User Id is Null"); return; } GetUserProfileInGroupOrRoomMemberResponse profilesResponse = await RoomService.GetUserProfileInRoomMember(channelAccessToken, roomId, userId) .ConfigureAwait(false); string messageText = "表示名:" + profilesResponse.displayName + "ID:" + profilesResponse.userId + "画像:" + profilesResponse.pictureUrl + "\n"; await ReplyMessageService.SendReplyMessage( channelAccessToken, replyToken, MessageFactoryService.CreateMessage() .AddTextMessage(messageText) ).ConfigureAwait(false); } else if (source is UserSource) { string userId = (source as UserSource).userId; if (userId == null) { Trace.TraceInformation("User Id is Null"); return; } await ReplyMessageService.SendReplyMessage( channelAccessToken, replyToken, MessageFactoryService.CreateMessage() .AddTextMessage("リプライ") ).ConfigureAwait(false); GetProfileResponse profile = await ProfileService.GetProfile(channelAccessToken, userId).ConfigureAwait(false); Trace.TraceInformation("User Id is " + profile?.userId); Trace.TraceInformation("Display Name is " + profile?.displayName); Trace.TraceInformation("Status Message is " + profile?.statusMessage); Trace.TraceInformation("Picture Url is " + profile?.pictureUrl); } break; case "茜ちゃん帰って": if (source is GroupSource) { string groupId = (source as GroupSource).groupId; if (groupId == null) { Trace.TraceInformation("Group Id is Null"); return; } await GroupService.LeaveGroup(channelAccessToken, groupId).ConfigureAwait(false); } else if (source is RoomSource) { string roomId = (source as RoomSource).roomId; if (roomId == null) { Trace.TraceInformation("Room Id is Null"); return; } await RoomService.LeaveRoom(channelAccessToken, roomId).ConfigureAwait(false); } break; default: Trace.TraceInformation("Unexpected Text"); break; } Trace.TraceInformation("End"); return; }
/// <summary> /// メッセージの返信 /// </summary> /// <param name="channelAccessToken">ChannelAccessToken</param> /// <param name="replyToken">ReplyToken</param> /// <param name="messageFactoryService">MessageFactoryService</param> public static async Task SendReplyMessage(string channelAccessToken, string replyToken, MessageFactoryService messageFactoryService) { Trace.TraceInformation("Start"); ReplyMessageRequest request = new ReplyMessageRequest() { replyToken = replyToken, messages = messageFactoryService.Messages }; string requestUrl = ConfigurationManager.AppSettings["BaseUrl"] + ConfigurationManager.AppSettings["ReplyUrl"]; await MessagingApiSender.SendMessagingApi <ReplyMessageRequest, string>( channelAccessToken, requestUrl, request, "post" ).ConfigureAwait(false); Trace.TraceInformation("End"); }
/// <summary> /// 複数人同時プッシュ送信 /// </summary> /// <param name="channelAccessToken">ChannelAccessToken</param> /// <param name="to">送信先IDの配列</param> /// <param name="messageFactoryService">MessageFactoryService</param> public static async Task SendMultiCastPushMessage(string channelAccessToken, string[] to, MessageFactoryService messageFactoryService) { Trace.TraceInformation("Start"); MultiCastMessageRequest request = new MultiCastMessageRequest() { to = to, messages = messageFactoryService.Messages }; string requestUrl = ConfigurationManager.AppSettings["BaseUrl"] + ConfigurationManager.AppSettings["MultiCastUrl"]; await MessagingApiSender.SendMessagingApi <MultiCastMessageRequest, string>( channelAccessToken, requestUrl, request, "post" ).ConfigureAwait(false); Trace.TraceInformation("End"); }