/// <summary> /// /// </summary> /// <param name="turnContext"></param> /// <param name="cancellationToken"></param> /// <returns></returns> protected override async Task OnMessageActivityAsync(ITurnContext <IMessageActivity> turnContext, CancellationToken cancellationToken) { //异常处理可迭代成全局异常,免得每个机器人都需要try catch,使用中间件 try { string text = turnContext.Activity.Text; StringBuilder replyText = new StringBuilder(); HttpClient httpClient = _httpClientFactory.CreateClient(nameof(StudyEchoBotConst.News)); string response = await httpClient.GetStringAsync($"?type={text}&page=1&page_size=1&key={_configuration["NewsKey"]}"); StudyEchoBotResponse <NewsQueryResponse> studyEchoBotResponse = Newtonsoft.Json.JsonConvert.DeserializeObject <StudyEchoBotResponse <NewsQueryResponse> >(response); if (!0.Equals(studyEchoBotResponse.ErrorCode)) { replyText.Append($"{studyEchoBotResponse.Reason},支持类型top(推荐,默认)guonei(国内)guoji(国际)yule(娱乐)tiyu(体育)junshi(军事)keji(科技)caijing(财经)shishang(时尚)youxi(游戏)qiche(汽车)jiankang(健康)"); } else { NewsQueryResponse newsQueryResponse = studyEchoBotResponse.Result; List <News> newses = newsQueryResponse.Data; foreach (News news in newses) { replyText.AppendLine($"类型:{news.Category} \r\n 标题:{news.Title} \r\n 作者名称:{news.AuthorName} \r\n"); } } await turnContext.SendActivityAsync(MessageFactory.Text(replyText.ToString()), cancellationToken); } catch (Exception e) { //防止暴力异常,让系统宕机 Thread.Sleep(1000); _logger.LogError($"StackTrace:{e.StackTrace}\r\nMessage:{e.Message}"); await turnContext.SendActivityAsync(MessageFactory.Text("系统内部异常,请联系管理员"), cancellationToken); } }
/// <summary> /// /// </summary> /// <param name="turnContext"></param> /// <param name="cancellationToken"></param> /// <returns></returns> protected override async Task OnMessageActivityAsync(ITurnContext <IMessageActivity> turnContext, CancellationToken cancellationToken) { //异常处理可迭代成全局异常,免得每个机器人都需要try catch,使用中间件 try { string text = turnContext.Activity.Text; string replyText; HttpClient httpClient = _httpClientFactory.CreateClient(nameof(StudyEchoBotConst.Weather)); string response = await httpClient.GetStringAsync($"?city={text}&key={_configuration["WeatherKey"]}"); StudyEchoBotResponse <WeatherQueryResponse> studyEchoBotResponse = Newtonsoft.Json.JsonConvert.DeserializeObject <StudyEchoBotResponse <WeatherQueryResponse> >(response); if (!0.Equals(studyEchoBotResponse.ErrorCode)) { replyText = $"{studyEchoBotResponse.Reason},城市名称如:温州、上海、北京"; } else { WeatherQueryResponse weatherQueryResponse = studyEchoBotResponse.Result; RealtimeWeather realtimeWeather = weatherQueryResponse.RealtimeWeather; replyText = $"{weatherQueryResponse.City}当前天气{realtimeWeather.Info}{realtimeWeather.Temperature}℃ {realtimeWeather.Power}{realtimeWeather.Direct}"; } await turnContext.SendActivityAsync(MessageFactory.Text(replyText), cancellationToken); } catch (Exception e) { //防止暴力异常,让系统宕机 Thread.Sleep(1000); _logger.LogError($"StackTrace:{e.StackTrace}\r\nMessage:{e.Message}"); await turnContext.SendActivityAsync(MessageFactory.Text("系统内部异常,请联系管理员"), cancellationToken); } }