Facebook Messenger Bot无法在IOS中检索位置作为附件

时间:2018-01-28 23:03:14

标签: c# ios facebook bots messenger

我已经建立了一个机器人需要获得用户的位置作为经度/纬度,它在Android和iOS上都运行得很好,但是现在我可以从安装在Android设备上的messenger获取位置,但是无法实现在iOS设备上安装了一个messenger!有什么帮助吗?

注意:我正在使用一个接收来自facebook的回调的c#类,而不是Microsoft Bot框架。

[ActionName("Receive")]
[AcceptVerbs(HttpVerbs.Post)]

public ActionResult ReceivePost(BotRequest data)
    {        
       Task.Factory.StartNew(() =>
        {
      foreach (var entry in data.entry)
             {
            foreach (var message in entry.messaging)
                  {

              foreach (var item in message.message.attachments)
                            {
                                if (item.payload != null)
                                {
                                   // here i can get the location
                                   // if the location sent from android I can get attachment with long/lat 
                                   // if location sent from iOS I get attachment as null
                                    var location = item.payload.coordinates;

                                }
                            }
                        }
                 }
        });
        return new HttpStatusCodeResult(HttpStatusCode.OK);}

BotRequest类:

using Newtonsoft.Json;
using System.Collections.Generic;

public class BotRequest
{
    public string @object { get; set; }
    public List<BotEntry> entry { get; set; }
}

public class BotEntry
{
    public string id { get; set; }
    public long time { get; set; }
    public List<BotMessageReceivedRequest> messaging { get; set; }
}

public class FBUser
{
    public string first_name { get; set; }
    public string last_name { get; set; }
    public string profile_pic { get; set; }
    public string locale { get; set; }
    public int timezone { get; set; }
    public string gender { get; set; }
}

public class BotMessageReceivedRequest
{
    public BotUser sender { get; set; }
    public BotUser recipient { get; set; }
    public string timestamp { get; set; }
    public BotMessage message { get; set; }
    public BotPostback postback { get; set; }

}

public class BotPostback
{
    public string payload { get; set; }
}


public class BotMessageResponse
{
    public BotUser recipient { get; set; }
    public MessageResponse message { get; set; }

}

public class BotMessage
{
    public string mid { get; set; }
    public List<MessageAttachment> attachments { get; set; }
    public long seq { get; set; }
    public string text { get; set; }
    public QuickReply quick_reply { get; set; }
}

public class BotUser
{
    public string id { get; set; }
}

public class MessageResponse
{
    public dynamic attachment { get; set; }
    public List<QuickReply> quick_replies { get; set; }
    public string text { get; set; }
}

public class QuickReply
{
    public string content_type { get; set; }
    public string title { get; set; }
    public string payload { get; set; }
}

public class ResponseButtons
{
    public string type { get; set; }
    public string title { get; set; }
    public string payload { get; set; }

    public string url { get; set; }
    public string webview_height_ratio { get; set; }
}

public class MessageAttachment
{
    public string type { get; set; }
    public MessageAttachmentPayLoad payload { get; set; }
}

public class MessageAttachmentPayLoad
{
    public string url { get; set; }
    public string template_type { get; set; }
    public string top_element_style { get; set; }
    public List<PayloadElements> elements { get; set; }
    public List<ResponseButtons> buttons { get; set; }
    public string recipient_name { get; set; }
    public string order_number { get; set; }
    public string currency { get; set; }
    public string payment_method { get; set; }
    public string order_url { get; set; }
    public string timestamp { get; set; }
    public Address address { get; set; }
    public Summary summary { get; set; }
    public coordinates coordinates { get; set; }
}


public class coordinates
{
    public string lat { get; set; }

    public string @long { get; set; }
}

public class PayloadElements
{
    public string title { get; set; }
    public string image_url { get; set; }
    public string subtitle { get; set; }
    public List<ResponseButtons> buttons { get; set; }
    public string item_url { get; set; }
    public int? quantity { get; set; }
    public decimal? price { get; set; }
    public string currency { get; set; }
}

public class Address
{
    internal string street_2;

    public string street_1 { get; set; }
    public string city { get; set; }
    public string postal_code { get; set; }
    public string country { get; set; }
    public string state { get; set; }
}
public class Summary
{
    public decimal? subtotal { get; set; }
    public decimal? shipping_cost { get; set; }
    public decimal? total_tax { get; set; }
    public decimal total_cost { get; set; }
}

0 个答案:

没有答案