Example #1
0
        public override async Task OnReceiveActivity(IBotContext context)
        {
            if (HasActiveTopic)
            {
                await ActiveTopic.OnReceiveActivity(context);

                return;
            }

            var utterance = context.Request.AsMessageActivity().Text;


            if (this.State.Alarm.Title == null)
            {
                // LUIS実行
                await context.SendActivity("got it!");

                var luisResult = await playLuis(context, utterance);


                // TODO: LUISの戻り値に応じて呼び出すAPIを変更する
                var intent         = luisResult.Intents.GetValue("Places.FindPlace");
                var entity         = luisResult.Entities.GetValue("Places_AbsoluteLocation");
                var entity_keyword = entity.First().ToString();
                await context.SendActivity(entity_keyword.ToString());

                /*
                 * if (this.State.Alarm.Title == "Searched") {
                 *  this.SetActiveTopic(SEARCH_PROMPT)
                 *      .OnReceiveActivity(context);
                 *  return Task.CompletedTask;
                 *
                 * }
                 *
                 */
                // LUISの結果でスポット検索
                var service = new Services.SpotSearchService();
                var req     = new SpotsRequest();
                req.keyword = entity_keyword;
                var result = await service.Search(req) as SpotsResult;

                await context.SendActivity(result.spots.First().name);

                // Replyを作成し表示
                var reply = context.Request.CreateReply();
                reply.Attachments = result.Attachments;
                await context.SendActivity(reply);

                // next feed back prompt
                await this.SetActiveTopic(FEEDBACK_PROMPT)
                .OnReceiveActivity(context);

                await context.SendActivity($"{HasActiveTopic}");


                return;
            }

            /*
             * if (this.State.Alarm.Title == null) {// spotの場合
             *  await context.SendActivity("スポット表示");
             *  this.State.Alarm.Title = "Searched";
             *
             *  // APIの戻り値表示
             *
             *  // next feed back prompt
             *  await this.SetActiveTopic(FEEDBACK_PROMPT)
             *      .OnReceiveActivity(context);
             * }
             * else {
             *  await context.SendActivity("スポット表示失敗");
             * }
             * await context.SendActivity("すみません、お役に立てなくて");
             * this.OnSuccess(context, null);
             *
             */
            await context.SendActivity("ここまでくれば終了で抜けます");

            //this.OnSuccess(context, this.State.Alarm);
        }
Example #2
0
        private async Task <SpotsResult> searchSpotAsync(SpotsRequest request)
        {
            var service = new Services.SpotSearchService();

            return(await service.Search(request) as SpotsResult);
        }