2017-10-24 5 views
1

Ich baue einen Chatbot mit Microsoft Bot-Framework. Ich bin fest, wie man den Breiten- und Längengrad von "Aktivität" bezieht.Wie bekomme ich ChatBot Benutzer Latitude und Longitude mit BotFramework

Gibt es eine Möglichkeit, Breiten- und Längengradinformationen von "Aktivität" zu erhalten?

Es gibt eine similar question existiert bereits hier, aber das gibt keine Antwort auf diese Frage.

Ich habe versucht Microsoft..Bot.Builder.Location und das gibt nicht lat und lang des Benutzers, sondern hilft beim Abrufen von Informationen vom Benutzer und validieren Sie es.

Jeder Vorschlag wäre willkommen.

+0

Welchen Kanal verwenden Sie? –

+0

Bot Rahmen Arbeit Emulator und Facebook –

Antwort

3

Sie können diesen kostenlos REST-API verwenden, um die Breite und Länge des Orts zu erhalten, funktioniert dieser REST API auf Wi-Fi Traingulation.

REST API for getting Latitude and Longitude of a place

eine Modellklasse Machen Sie mit dem Ausgang des REST-API für die Deserialisierung verwendet entsprechen:

public class PlaceGeography 
     { 
      public string ip { get; set; } 
      public string country_code { get; set; } 
      public string country_name { get; set; } 
      public string region_code { get; set; } 
      public string region_name { get; set; } 
      public string city { get; set; } 
      public string zip_code { get; set; } 
      public string time_zone { get; set; } 
      public float latitude { get; set; } 
      public float longitude { get; set; } 
      public int metro_code { get; set; } 
     } 

Jetzt eine GET-Anfrage machen, einfach von Ihrem C# -Code in Bot Framework und Ergebnis erhalten wie dies:

public async static Task<HttpResponseMessage> GetCoOrdinates() 
     { 
      string responseJSON = string.Empty; 
      PlaceGeography obj = new PlaceGeography(); 

      using (HttpClient client = new HttpClient()) 
      { 
       string URI = $"http://freegeoip.net/json/"; 
       client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

       using (HttpResponseMessage msg = await client.GetAsync(URI)) 
       { 
        if (msg.IsSuccessStatusCode) //if HTTP 200 then 
        { 
         responseJSON = await msg.Content.ReadAsStringAsync(); 
         JsonConvert.PopulateObject(responseJSON, obj); // Deserialize model class object and get latitude and longitude 
         return msg; 
        } 
        else 
         return msg; 
       } 

      } 
     } 
1

Für Messenger auf Mobilgeräten kann der Benutzer seinen Standort speziell mithilfe der integrierten Funktionalität senden. Sobald sie das tun, können Sie die Werte aus der eingehenden Nachricht erhalten:

var location = activity.Entities?.FirstOrDefault(e => e.Type == "Place"); 

if (location != null) 
{ 
    var latitude = location.Properties["geo"]?["latitude"]?.ToString(); 
    var longitude = location.Properties["geo"]?["longitude"]?.ToString(); 
} 
Verwandte Themen