Skip to content
This repository was archived by the owner on Jun 30, 2022. It is now read-only.

Commit fb804f9

Browse files
xieofxieryanisgrig
authored andcommitted
[Weather] use Latitude & Longitude if possible (#2447)
* remove sample, bug fix * [Weather] use Latitude & Longitude if possible * add Service.GetLocationByGeoAsync * update manifestTemplate
1 parent 3ee5239 commit fb804f9

18 files changed

+85
-205
lines changed

skills/csharp/experimental/weatherskill/Dialogs/ForecastDialog.cs

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
using Microsoft.Bot.Builder.Solutions.Responses;
1313
using Microsoft.Bot.Connector;
1414
using WeatherSkill.Models;
15-
using WeatherSkill.Responses.Sample;
1615
using WeatherSkill.Responses.Shared;
1716
using WeatherSkill.Services;
1817

@@ -67,7 +66,7 @@ private async Task<DialogTurnResult> RouteToGeographyPromptOrForecastResponse(Wa
6766
var state = await _stateAccessor.GetAsync(stepContext.Context);
6867
var geography = state.Geography;
6968

70-
if (string.IsNullOrEmpty(geography))
69+
if (string.IsNullOrEmpty(geography) && state.Latitude == double.NaN)
7170
{
7271
return await stepContext.NextAsync();
7372
}
@@ -118,7 +117,19 @@ private async Task<DialogTurnResult> GetWeatherResponse(WaterfallStepContext ste
118117
var state = await _stateAccessor.GetAsync(stepContext.Context);
119118

120119
var service = new AccuweatherService(Settings);
121-
state.GeographyLocation = await service.GetLocationByQueryAsync(state.Geography);
120+
121+
if (!string.IsNullOrEmpty(state.Geography))
122+
{
123+
state.GeographyLocation = await service.GetLocationByQueryAsync(state.Geography);
124+
}
125+
else if (state.Latitude != double.NaN)
126+
{
127+
state.GeographyLocation = await service.GetLocationByGeoAsync(state.Latitude, state.Longitude);
128+
}
129+
else
130+
{
131+
throw new Exception("Must have Geography or Latitude & Longitude!");
132+
}
122133

123134
var oneDayForecast = await service.GetOneDayForecastAsync(state.GeographyLocation.Key);
124135

@@ -193,14 +204,14 @@ private string GetWeatherIcon(int iconValue, bool useFile)
193204
// partly sunny
194205
case 3:
195206
// return sun icon
196-
return useFile ? GetImageUri("sunicon.png") : "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCI+PHRpdGxlPndlYXRoZXJpY29uczwvdGl0bGU+PHBhdGggZD0iTTE4LjU3LDIxLjVIMTUuMlYyMC4zOGgzLjM3Wm0xLjA4LTMuNzQtMi4zOC0yLjM5Ljc5LS44TDIwLjQ1LDE3Wm0wLDYuMzYuOC44TDE4LjA2LDI3LjNsLS43OS0uNzlabTQtNy4xMmEzLjc4LDMuNzgsMCwwLDEsMS41NC4zMSwzLjkxLDMuOTEsMCwwLDEsMi4wOSwyLjA5LDQsNCwwLDAsMSwwLDMuMDcsMy43MiwzLjcyLDAsMCwxLS44NCwxLjI1LDQuMTMsNC4xMywwLDAsMS0xLjI1Ljg1LDQsNCwwLDAsMS0zLjA3LDAsNCw0LDAsMCwxLTEuMjUtLjg1LDMuODMsMy44MywwLDAsMS0xLjE1LTIuNzhBNCw0LDAsMCwxLDIwLDE5LjRhNC4xMyw0LjEzLDAsMCwxLC44NS0xLjI1LDMuODIsMy44MiwwLDAsMSwxLjI1LS44NEEzLjc3LDMuNzcsMCwwLDEsMjMuNjMsMTdabTAsNi43NWEyLjY2LDIuNjYsMCwwLDAsMS4wOS0uMjIsMy4wOCwzLjA4LDAsMCwwLC45LS42LDMsMywwLDAsMCwuNi0uOSwyLjcsMi43LDAsMCwwLC4yMy0xLjA5LDIuNjYsMi42NiwwLDAsMC0uMjMtMS4wOSwyLjg1LDIuODUsMCwwLDAtMS41LTEuNSwyLjY2LDIuNjYsMCwwLDAtMS4wOS0uMjMsMi43LDIuNywwLDAsMC0xLjA5LjIzLDIuODUsMi44NSwwLDAsMC0xLjUsMS41LDIuNjYsMi42NiwwLDAsMC0uMjIsMS4wOUEyLjY5LDIuNjksMCwwLDAsMjEsMjJhMywzLDAsMCwwLC42LjksMy4wOCwzLjA4LDAsMCwwLC45LjZBMi42OSwyLjY5LDAsMCwwLDIzLjYzLDIzLjc1Wm0uNTctNy44N0gyMy4wN1YxMi41SDI0LjJaTTIzLjA3LDI2SDI0LjJ2My4zOEgyMy4wN1ptNC41NS04LjI0LS44LS44LDIuMzktMi4zOS43OS44Wm0wLDYuMzZMMzAsMjYuNTFsLS43OS43OS0yLjM5LTIuMzhabTQuNDUtMy43NFYyMS41SDI4LjdWMjAuMzhaIi8+PC9zdmc+";
207+
return useFile ? GetImageUri("sun.png") : "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCI+PHRpdGxlPndlYXRoZXJpY29uczwvdGl0bGU+PHBhdGggZD0iTTE4LjU3LDIxLjVIMTUuMlYyMC4zOGgzLjM3Wm0xLjA4LTMuNzQtMi4zOC0yLjM5Ljc5LS44TDIwLjQ1LDE3Wm0wLDYuMzYuOC44TDE4LjA2LDI3LjNsLS43OS0uNzlabTQtNy4xMmEzLjc4LDMuNzgsMCwwLDEsMS41NC4zMSwzLjkxLDMuOTEsMCwwLDEsMi4wOSwyLjA5LDQsNCwwLDAsMSwwLDMuMDcsMy43MiwzLjcyLDAsMCwxLS44NCwxLjI1LDQuMTMsNC4xMywwLDAsMS0xLjI1Ljg1LDQsNCwwLDAsMS0zLjA3LDAsNCw0LDAsMCwxLTEuMjUtLjg1LDMuODMsMy44MywwLDAsMS0xLjE1LTIuNzhBNCw0LDAsMCwxLDIwLDE5LjRhNC4xMyw0LjEzLDAsMCwxLC44NS0xLjI1LDMuODIsMy44MiwwLDAsMSwxLjI1LS44NEEzLjc3LDMuNzcsMCwwLDEsMjMuNjMsMTdabTAsNi43NWEyLjY2LDIuNjYsMCwwLDAsMS4wOS0uMjIsMy4wOCwzLjA4LDAsMCwwLC45LS42LDMsMywwLDAsMCwuNi0uOSwyLjcsMi43LDAsMCwwLC4yMy0xLjA5LDIuNjYsMi42NiwwLDAsMC0uMjMtMS4wOSwyLjg1LDIuODUsMCwwLDAtMS41LTEuNSwyLjY2LDIuNjYsMCwwLDAtMS4wOS0uMjMsMi43LDIuNywwLDAsMC0xLjA5LjIzLDIuODUsMi44NSwwLDAsMC0xLjUsMS41LDIuNjYsMi42NiwwLDAsMC0uMjIsMS4wOUEyLjY5LDIuNjksMCwwLDAsMjEsMjJhMywzLDAsMCwwLC42LjksMy4wOCwzLjA4LDAsMCwwLC45LjZBMi42OSwyLjY5LDAsMCwwLDIzLjYzLDIzLjc1Wm0uNTctNy44N0gyMy4wN1YxMi41SDI0LjJaTTIzLjA3LDI2SDI0LjJ2My4zOEgyMy4wN1ptNC41NS04LjI0LS44LS44LDIuMzktMi4zOS43OS44Wm0wLDYuMzZMMzAsMjYuNTFsLS43OS43OS0yLjM5LTIuMzhabTQuNDUtMy43NFYyMS41SDI4LjdWMjAuMzhaIi8+PC9zdmc+";
197208

198209
// intermittent clouds
199210
case 4:
200211
// hazy sunshine
201212
case 5:
202213
// cloud icon
203-
return useFile ? GetImageUri("cloudicon.png") : "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCI+PHRpdGxlPndlYXRoZXJpY29uczwvdGl0bGU+PHBhdGggZD0iTTI5Ljc5LDIyLjM4YTMuMzIsMy4zMiwwLDAsMSwxLjMzLjI2LDMuMzMsMy4zMywwLDAsMSwxLjgxLDEuNzgsMy4yOSwzLjI5LDAsMCwxLC4yNywxLjMzLDMuMTcsMy4xNywwLDAsMS0uMjcsMS4zMSwzLjMsMy4zLDAsMCwxLS43MiwxLjA4LDMuNDYsMy40NiwwLDAsMS0xLjA4LjcyLDMuMjMsMy4yMywwLDAsMS0xLjMxLjI2SDE5LjdhNC4zNiw0LjM2LDAsMCwxLTEuNzYtLjM1LDQuNSw0LjUsMCwwLDEtMS40My0xLDQuMzksNC4zOSwwLDAsMS0xLTEuNDMsNC41OCw0LjU4LDAsMCwxLDAtMy41MSw0LjM5LDQuMzksMCwwLDEsMS0xLjQzLDQuNSw0LjUsMCwwLDEsMS40My0xLDQuMzYsNC4zNiwwLDAsMSwxLjc2LS4zNiw0LjQ1LDQuNDUsMCwwLDEsLjgxLjA4LDUuNTQsNS41NCwwLDAsMSwuODItMSw0Ljc1LDQuNzUsMCwwLDEsMS0uNzNBNS4yOSw1LjI5LDAsMCwxLDIzLjQ5LDE4YTUuMzgsNS4zOCwwLDAsMSwxLjI3LS4xNSw1LDUsMCwwLDEsMy4zNywxLjI4LDUsNSwwLDAsMSwxLjExLDEuNDNBNS4xOSw1LjE5LDAsMCwxLDI5Ljc5LDIyLjM4Wm0wLDUuNjJhMi4yLDIuMiwwLDAsMCwuODgtLjE4LDIsMiwwLDAsMCwuNzEtLjQ4LDIuMTQsMi4xNCwwLDAsMCwuNDktLjcyLDIuMzEsMi4zMSwwLDAsMCwwLTEuNzQsMi4xNCwyLjE0LDAsMCwwLS40OS0uNzIsMiwyLDAsMCwwLS43MS0uNDgsMi4yLDIuMiwwLDAsMC0uODgtLjE4SDI4Ljd2LS41NmE0LDQsMCwwLDAtLjMxLTEuNTQsNC4xMyw0LjEzLDAsMCwwLS44NS0xLjI1LDMuNzIsMy43MiwwLDAsMC0xLjI1LS44NEEzLjc3LDMuNzcsMCwwLDAsMjQuNzYsMTlhMy45NCwzLjk0LDAsMCwwLTEuMTkuMTgsNC4yOSw0LjI5LDAsMCwwLTEuMDUuNTIsNC4wNyw0LjA3LDAsMCwwLS44NS44MSw0LjEzLDQuMTMsMCwwLDAtLjU5LDEsMy4xMywzLjEzLDAsMCwwLTEuMzgtLjMxLDMuNDEsMy40MSwwLDAsMC0xLjMyLjI2LDMuNTcsMy41NywwLDAsMC0xLjA3LjczLDMuNDksMy40OSwwLDAsMC0uNzMsMS4wOCwzLjM1LDMuMzUsMCwwLDAtLjI2LDEuMywzLjI5LDMuMjksMCwwLDAsMSwyLjM5LDMuNTcsMy41NywwLDAsMCwxLjA3LjczQTMuNDEsMy40MSwwLDAsMCwxOS43LDI4WiIvPjwvc3ZnPg==";
214+
return useFile ? GetImageUri("cloud.png") : "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCI+PHRpdGxlPndlYXRoZXJpY29uczwvdGl0bGU+PHBhdGggZD0iTTI5Ljc5LDIyLjM4YTMuMzIsMy4zMiwwLDAsMSwxLjMzLjI2LDMuMzMsMy4zMywwLDAsMSwxLjgxLDEuNzgsMy4yOSwzLjI5LDAsMCwxLC4yNywxLjMzLDMuMTcsMy4xNywwLDAsMS0uMjcsMS4zMSwzLjMsMy4zLDAsMCwxLS43MiwxLjA4LDMuNDYsMy40NiwwLDAsMS0xLjA4LjcyLDMuMjMsMy4yMywwLDAsMS0xLjMxLjI2SDE5LjdhNC4zNiw0LjM2LDAsMCwxLTEuNzYtLjM1LDQuNSw0LjUsMCwwLDEtMS40My0xLDQuMzksNC4zOSwwLDAsMS0xLTEuNDMsNC41OCw0LjU4LDAsMCwxLDAtMy41MSw0LjM5LDQuMzksMCwwLDEsMS0xLjQzLDQuNSw0LjUsMCwwLDEsMS40My0xLDQuMzYsNC4zNiwwLDAsMSwxLjc2LS4zNiw0LjQ1LDQuNDUsMCwwLDEsLjgxLjA4LDUuNTQsNS41NCwwLDAsMSwuODItMSw0Ljc1LDQuNzUsMCwwLDEsMS0uNzNBNS4yOSw1LjI5LDAsMCwxLDIzLjQ5LDE4YTUuMzgsNS4zOCwwLDAsMSwxLjI3LS4xNSw1LDUsMCwwLDEsMy4zNywxLjI4LDUsNSwwLDAsMSwxLjExLDEuNDNBNS4xOSw1LjE5LDAsMCwxLDI5Ljc5LDIyLjM4Wm0wLDUuNjJhMi4yLDIuMiwwLDAsMCwuODgtLjE4LDIsMiwwLDAsMCwuNzEtLjQ4LDIuMTQsMi4xNCwwLDAsMCwuNDktLjcyLDIuMzEsMi4zMSwwLDAsMCwwLTEuNzQsMi4xNCwyLjE0LDAsMCwwLS40OS0uNzIsMiwyLDAsMCwwLS43MS0uNDgsMi4yLDIuMiwwLDAsMC0uODgtLjE4SDI4Ljd2LS41NmE0LDQsMCwwLDAtLjMxLTEuNTQsNC4xMyw0LjEzLDAsMCwwLS44NS0xLjI1LDMuNzIsMy43MiwwLDAsMC0xLjI1LS44NEEzLjc3LDMuNzcsMCwwLDAsMjQuNzYsMTlhMy45NCwzLjk0LDAsMCwwLTEuMTkuMTgsNC4yOSw0LjI5LDAsMCwwLTEuMDUuNTIsNC4wNyw0LjA3LDAsMCwwLS44NS44MSw0LjEzLDQuMTMsMCwwLDAtLjU5LDEsMy4xMywzLjEzLDAsMCwwLTEuMzgtLjMxLDMuNDEsMy40MSwwLDAsMC0xLjMyLjI2LDMuNTcsMy41NywwLDAsMC0xLjA3LjczLDMuNDksMy40OSwwLDAsMC0uNzMsMS4wOCwzLjM1LDMuMzUsMCwwLDAtLjI2LDEuMywzLjI5LDMuMjksMCwwLDAsMSwyLjM5LDMuNTcsMy41NywwLDAsMCwxLjA3LjczQTMuNDEsMy40MSwwLDAsMCwxOS43LDI4WiIvPjwvc3ZnPg==";
204215

205216
// mostly cloudy
206217
case 6:
@@ -273,7 +284,7 @@ private string GetWeatherIcon(int iconValue, bool useFile)
273284
// windy
274285
case 32:
275286
// wind icon
276-
return useFile ? GetImageUri("win.png") : "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCI+PHRpdGxlPndlYXRoZXJpY29uczwvdGl0bGU+PHBhdGggZD0iTTI4LjcsMTguMTJhMy40LDMuNCwwLDAsMS0xLDIuMzksMy40OSwzLjQ5LDAsMCwxLTEuMDguNzMsMy40LDMuNCwwLDAsMS0xLjMxLjI2SDE1LjJWMjAuMzhIMjUuMzJhMi4yLDIuMiwwLDAsMCwuODgtLjE4QTIuMjksMi4yOSwwLDAsMCwyNy40LDE5YTIuMzQsMi4zNCwwLDAsMCwwLTEuNzUsMi4yOSwyLjI5LDAsMCwwLTEuMi0xLjIsMi4xOSwyLjE5LDAsMCwwLS44OC0uMTcsMi4xMSwyLjExLDAsMCwwLS44Ny4xNywyLjM5LDIuMzksMCwwLDAtLjcyLjQ4LDIuMzMsMi4zMywwLDAsMC0uNDguNzIsMi4xMiwyLjEyLDAsMCwwLS4xOC44N0gyMmEzLjE4LDMuMTgsMCwwLDEsLjI2LTEuMywzLjQ5LDMuNDksMCwwLDEsLjczLTEuMDgsMy4yOSwzLjI5LDAsMCwxLDIuMzgtMSwzLjQsMy40LDAsMCwxLDEuMzEuMjYsMy40OSwzLjQ5LDAsMCwxLDEuMDguNzMsMy4zLDMuMywwLDAsMSwuNzIsMS4wOEEzLjE5LDMuMTksMCwwLDEsMjguNywxOC4xMlpNMzEsMjAuMzhhMi4xMSwyLjExLDAsMCwxLC44Ny4xNywyLjIxLDIuMjEsMCwwLDEsMS4yLDEuMiwyLjIyLDIuMjIsMCwwLDEsMCwxLjc1LDIuMjEsMi4yMSwwLDAsMS0xLjIsMS4yLDIuMTIsMi4xMiwwLDAsMS0uODcuMThIMjkuNTJhMi4xMywyLjEzLDAsMCwxLC4zLDEuMTIsMi4zOCwyLjM4LDAsMCwxLS4xNy44OCwyLjIsMi4yLDAsMCwxLS40OS43MSwyLDIsMCwwLDEtLjcxLjQ4LDIuMiwyLjIsMCwwLDEtLjg4LjE4LDIuMTIsMi4xMiwwLDAsMS0uODctLjE4LDIuMDcsMi4wNywwLDAsMS0uNzItLjQ4LDIuMTcsMi4xNywwLDAsMS0uNDgtLjcxLDIuMiwyLjIsMCwwLDEtLjE4LS44OGgxLjEzYTEuMjcsMS4yNywwLDAsMCwuMDguNDQsMS4wOSwxLjA5LDAsMCwwLDEsLjY4QTEsMSwwLDAsMCwyOCwyN2ExLjExLDEuMTEsMCwwLDAsLjM2LS4yNSwxLjIxLDEuMjEsMCwwLDAsLjI0LS4zNSwxLjEyLDEuMTIsMCwwLDAsMC0uODgsMS4yMSwxLjIxLDAsMCwwLS4yNC0uMzVBMS4xMSwxLjExLDAsMCwwLDI4LDI1YTEsMSwwLDAsMC0uNDQtLjA4SDE1LjJWMjMuNzVIMzFhMS4xMiwxLjEyLDAsMCwwLC40NC0uMDksMS4yMSwxLjIxLDAsMCwwLC4zNS0uMjQsMS4xMywxLjEzLDAsMCwwLC4yNC0uMzYsMSwxLDAsMCwwLC4wOS0uNDQsMSwxLDAsMCwwLS4wOS0uNDMsMS4xMywxLjEzLDAsMCwwLS4yNC0uMzYsMS4yMSwxLjIxLDAsMCwwLS4zNS0uMjRBMS4xMiwxLjEyLDAsMCwwLDMxLDIxLjVhMSwxLDAsMCwwLS40NC4wOSwxLjEsMS4xLDAsMCwwLS42LjYsMSwxLDAsMCwwLS4wOS40M0gyOC43YTIuMTEsMi4xMSwwLDAsMSwuMTctLjg3LDIuMjksMi4yOSwwLDAsMSwxLjItMS4yQTIuMTYsMi4xNiwwLDAsMSwzMSwyMC4zOFoiLz48L3N2Zz4=";
287+
return useFile ? GetImageUri("wind.png") : "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCI+PHRpdGxlPndlYXRoZXJpY29uczwvdGl0bGU+PHBhdGggZD0iTTI4LjcsMTguMTJhMy40LDMuNCwwLDAsMS0xLDIuMzksMy40OSwzLjQ5LDAsMCwxLTEuMDguNzMsMy40LDMuNCwwLDAsMS0xLjMxLjI2SDE1LjJWMjAuMzhIMjUuMzJhMi4yLDIuMiwwLDAsMCwuODgtLjE4QTIuMjksMi4yOSwwLDAsMCwyNy40LDE5YTIuMzQsMi4zNCwwLDAsMCwwLTEuNzUsMi4yOSwyLjI5LDAsMCwwLTEuMi0xLjIsMi4xOSwyLjE5LDAsMCwwLS44OC0uMTcsMi4xMSwyLjExLDAsMCwwLS44Ny4xNywyLjM5LDIuMzksMCwwLDAtLjcyLjQ4LDIuMzMsMi4zMywwLDAsMC0uNDguNzIsMi4xMiwyLjEyLDAsMCwwLS4xOC44N0gyMmEzLjE4LDMuMTgsMCwwLDEsLjI2LTEuMywzLjQ5LDMuNDksMCwwLDEsLjczLTEuMDgsMy4yOSwzLjI5LDAsMCwxLDIuMzgtMSwzLjQsMy40LDAsMCwxLDEuMzEuMjYsMy40OSwzLjQ5LDAsMCwxLDEuMDguNzMsMy4zLDMuMywwLDAsMSwuNzIsMS4wOEEzLjE5LDMuMTksMCwwLDEsMjguNywxOC4xMlpNMzEsMjAuMzhhMi4xMSwyLjExLDAsMCwxLC44Ny4xNywyLjIxLDIuMjEsMCwwLDEsMS4yLDEuMiwyLjIyLDIuMjIsMCwwLDEsMCwxLjc1LDIuMjEsMi4yMSwwLDAsMS0xLjIsMS4yLDIuMTIsMi4xMiwwLDAsMS0uODcuMThIMjkuNTJhMi4xMywyLjEzLDAsMCwxLC4zLDEuMTIsMi4zOCwyLjM4LDAsMCwxLS4xNy44OCwyLjIsMi4yLDAsMCwxLS40OS43MSwyLDIsMCwwLDEtLjcxLjQ4LDIuMiwyLjIsMCwwLDEtLjg4LjE4LDIuMTIsMi4xMiwwLDAsMS0uODctLjE4LDIuMDcsMi4wNywwLDAsMS0uNzItLjQ4LDIuMTcsMi4xNywwLDAsMS0uNDgtLjcxLDIuMiwyLjIsMCwwLDEtLjE4LS44OGgxLjEzYTEuMjcsMS4yNywwLDAsMCwuMDguNDQsMS4wOSwxLjA5LDAsMCwwLDEsLjY4QTEsMSwwLDAsMCwyOCwyN2ExLjExLDEuMTEsMCwwLDAsLjM2LS4yNSwxLjIxLDEuMjEsMCwwLDAsLjI0LS4zNSwxLjEyLDEuMTIsMCwwLDAsMC0uODgsMS4yMSwxLjIxLDAsMCwwLS4yNC0uMzVBMS4xMSwxLjExLDAsMCwwLDI4LDI1YTEsMSwwLDAsMC0uNDQtLjA4SDE1LjJWMjMuNzVIMzFhMS4xMiwxLjEyLDAsMCwwLC40NC0uMDksMS4yMSwxLjIxLDAsMCwwLC4zNS0uMjQsMS4xMywxLjEzLDAsMCwwLC4yNC0uMzYsMSwxLDAsMCwwLC4wOS0uNDQsMSwxLDAsMCwwLS4wOS0uNDMsMS4xMywxLjEzLDAsMCwwLS4yNC0uMzYsMS4yMSwxLjIxLDAsMCwwLS4zNS0uMjRBMS4xMiwxLjEyLDAsMCwwLDMxLDIxLjVhMSwxLDAsMCwwLS40NC4wOSwxLjEsMS4xLDAsMCwwLS42LjYsMSwxLDAsMCwwLS4wOS40M0gyOC43YTIuMTEsMi4xMSwwLDAsMSwuMTctLjg3LDIuMjksMi4yOSwwLDAsMSwxLjItMS4yQTIuMTYsMi4xNiwwLDAsMSwzMSwyMC4zOFoiLz48L3N2Zz4=";
277288

278289
// clear
279290
case 33:

skills/csharp/experimental/weatherskill/Dialogs/MainDialog.cs

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System;
55
using System.Collections.Generic;
66
using System.Globalization;
7+
using System.Spatial;
78
using System.Threading;
89
using System.Threading.Tasks;
910
using Luis;
@@ -38,7 +39,6 @@ public MainDialog(
3839
ResponseManager responseManager,
3940
UserState userState,
4041
ConversationState conversationState,
41-
SampleDialog sampleDialog,
4242
IBotTelemetryClient telemetryClient,
4343
IHttpContextAccessor httpContext)
4444
: base(nameof(MainDialog), telemetryClient)
@@ -53,7 +53,6 @@ public MainDialog(
5353
_contextAccessor = userState.CreateProperty<SkillContext>(nameof(SkillContext));
5454

5555
// Register dialogs
56-
AddDialog(sampleDialog);
5756
AddDialog(new ForecastDialog(_settings, _services, _responseManager, conversationState, TelemetryClient, httpContext));
5857
}
5958

@@ -153,6 +152,28 @@ public MainDialog(
153152
await dc.Context.SendActivityAsync(response);
154153
}
155154

155+
break;
156+
}
157+
case Events.Location:
158+
{
159+
// Test trigger with
160+
// /event:{ "Name": "Location", "Value": "34.05222222222222,-118.2427777777777" }
161+
var value = dc.Context.Activity.Value.ToString();
162+
163+
if (!string.IsNullOrEmpty(value))
164+
{
165+
var coords = value.Split(',');
166+
if (coords.Length == 2)
167+
{
168+
if (double.TryParse(coords[0], out var lat) && double.TryParse(coords[1], out var lng))
169+
{
170+
var state = await _stateAccessor.GetAsync(dc.Context, () => new SkillState());
171+
state.Latitude = lat;
172+
state.Longitude = lng;
173+
}
174+
}
175+
}
176+
156177
break;
157178
}
158179
}
@@ -259,15 +280,28 @@ private async Task PopulateStateFromSkillContext(ITurnContext context)
259280
{
260281
var location = semanticAction.Entities["location"];
261282
var locationObj = location.Properties["location"].ToString();
262-
var state = await _stateAccessor.GetAsync(context, () => new SkillState());
263-
state.Geography = locationObj;
283+
284+
var coords = locationObj.Split(',');
285+
if (coords.Length == 2 && double.TryParse(coords[0], out var lat) && double.TryParse(coords[1], out var lng))
286+
{
287+
var state = await _stateAccessor.GetAsync(context, () => new SkillState());
288+
state.Latitude = lat;
289+
state.Longitude = lng;
290+
}
291+
else
292+
{
293+
// In case name has ','
294+
var state = await _stateAccessor.GetAsync(context, () => new SkillState());
295+
state.Geography = locationObj;
296+
}
264297
}
265298
}
266299

267300
private class Events
268301
{
269302
public const string TokenResponseEvent = "tokens/response";
270303
public const string SkillBeginEvent = "skillBegin";
304+
public const string Location = "Location";
271305
}
272306
}
273307
}

skills/csharp/experimental/weatherskill/Dialogs/SampleDialog.cs

Lines changed: 0 additions & 72 deletions
This file was deleted.

skills/csharp/experimental/weatherskill/Dialogs/SkillDialogBase.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ protected string GetDivergedCardName(ITurnContext turnContext, string card)
207207
return card;
208208
}
209209
}
210+
210211
private class DialogIds
211212
{
212213
public const string SkillModeAuth = "SkillAuth";

skills/csharp/experimental/weatherskill/Models/SkillState.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,17 @@ public class SkillState
1313

1414
public string Geography { get; set; }
1515

16+
public double Latitude { get; set; } = double.NaN;
17+
18+
public double Longitude { get; set; } = double.NaN;
19+
1620
public Location GeographyLocation { get; set; }
1721

1822
public void Clear()
1923
{
2024
Geography = string.Empty;
25+
Latitude = double.NaN;
26+
Longitude = double.NaN;
2127
GeographyLocation = null;
2228
}
2329
}

skills/csharp/experimental/weatherskill/Responses/Sample/SampleResponses.cs

Lines changed: 0 additions & 18 deletions
This file was deleted.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)