Пример #1
0
        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, "/");
            }
        }
Пример #2
0
 public async Task RememberStart(string senderId, JObject data)
 {
     var replyToken = data["ReplyToken"].ToString();
     await _lineMessagingService.ReplyTextMessageAsync(replyToken, @"顔を覚えるから顔が写った画像を送って!");
 }
Пример #3
0
        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, "/");
                }
            }
        }