private SpotsRequest createSpotRequest(string entity) { var request = new SpotsRequest(); request.keyword = entity; return(request); }
public async Task <BaseSearchResult> Search(string utterance) { try { var luisResult = await find(utterance); var intent = primaryIntent(luisResult); var entity = primaryEntity(luisResult); SpotsResult result = null; switch (intent) { case INTENT.PLACES__FIND_PLACE: var request = createSpotRequest(entity); previous_request = request; result = await searchSpotAsync(request); break; case INTENT.UTILITIES__SHOW_PREVIOUS: if (previous_request == null) { var new_request = createSpotRequest(entity); previous_request = new_request; result = await searchSpotAsync(new_request); } else { previous_request.ModifyForPrev(); result = await searchSpotAsync(previous_request); } break; case INTENT.UTILITIES__SHOW_NEXT: if (previous_request == null) { var new_request = createSpotRequest(entity); previous_request = new_request; result = await searchSpotAsync(new_request); } else { previous_request.ModifyForNext(); result = await searchSpotAsync(previous_request); } break; default: // nothing break; } return(result); } catch (Exception) { return(null); } }
private SpotsRequest createSpotNameFieldRequest(string keyword) { var request = new SpotsRequest(); request.keyword = keyword; request.search_fields = "name"; return(request); }
public async Task <BaseSearchResult> SearchWithKeyword(string keyword) { try { var request = createSpotNameFieldRequest(keyword); previous_request = request; return(await searchSpotAsync(request));; } catch (Exception) { return(null); } }
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); }
private async Task <SpotsResult> searchSpotAsync(SpotsRequest request) { var service = new Services.SpotSearchService(); return(await service.Search(request) as SpotsResult); }