public async Task ConfirmReply(Event theEvent, JObject data) { var senderId = theEvent.Source.SenderId; if (theEvent.Type != EventType.Message && (theEvent as MessageEvent).Message.Type != MessageType.Text) { // テキスト以外なら 会話:ルート へ await StartConversationAsync(senderId, "/"); return; } var text = ((theEvent as MessageEvent).Message as TextMessage).Text; var replyToken = (theEvent as MessageEvent).ReplyToken; if (text.StartsWith(@"忘れて")) { // 忘れて ならすべて忘れる await ForgetAllAsync(senderId); await _lineMessagingService.ReplyTextMessageAsync(replyToken, @"全部忘れた!"); await StartConversationAsync(senderId, "/"); } else { // それ以外なら 会話:ルート へ await StartConversationAsync(senderId, "/"); } }
public async Task RememberStart(string senderId, JObject data) { var replyToken = data["ReplyToken"].ToString(); await _lineMessagingService.ReplyTextMessageAsync(replyToken, @"顔を覚えるから顔が写った画像を送って!"); }
public async Task DetectStart(string senderId, JObject data) { var replyToken = data["ReplyToken"].ToString(); var messageId = data["MessageId"].ToString(); var rememberMode = bool.Parse(data["RememberMode"].ToString()); // 画像をファイルに保存 var filename = $"{messageId}"; using (var stream = await _lineMessagingService.GetMessageContentAsync(messageId)) using (var memoryStream = new MemoryStream()) using (var fileStream = new FileStream($"{_options.WorkingFileStoreRoot}/{filename}", FileMode.CreateNew)) { await stream.CopyToAsync(memoryStream); await fileStream.WriteAsync(memoryStream.ToArray(), 0, (int)memoryStream.Length); } // 画像の顔を検出 using (var fileStream = new FileStream($"{_options.WorkingFileStoreRoot}/{filename}", FileMode.Open)) { var faces = await _personService.DetectFaceAsync(fileStream); if (faces.Length == 1) { // 顔が単数なら await HandleSingleFaceAsync(senderId, replyToken, filename, faces[0], rememberMode); } else if (faces.Length >= 2) { // 顔が複数なら await HandleMultipleFacesAsync(senderId, replyToken, filename, faces, rememberMode); } else { // 顔が検出されなければ await _lineMessagingService.ReplyTextMessageAsync(replyToken, @"顔が写ってないみたい..."); await StartConversationAsync(senderId, "/"); } } }