在API.net应用程序中使用Facebook API Lead Ad webhook首席检索?

时间:2017-08-09 06:09:59

标签: c# asp.net facebook

我已成功将Facebook Webhook与我的asp.net应用程序连接起来。 现在,当我尝试订阅Lead广告时,webhook不会触发对我的回拨网址的任何发布请求。

Facebook提供的用于获取数据的代码如下。

注意PHP中的代码需要在c#

中转换
<?php

$challenge = $_REQUEST['hub_challenge'];
$verify_token = $_REQUEST['hub_verify_token'];

if ($verify_token === 'abc123xyz') {
echo $challenge;
}

$input = json_decode(file_get_contents('php:://input'), true);
error_log(print_r($input, true))

不幸的是我无法转换c#中的最后两行。 我在下面提到了链接。 https://developers.facebook.com/docs/marketing-api/guides/lead-ads/quickstart/webhooks-integration

非常感谢任何有关此事的帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

创建以下类

public class JsonData
{
    [JsonProperty("entry")]
    public List<Entry> Entry { get; set; }

    [JsonProperty("object")]
    public string Object { get; set; }
}
public class Entry
{
    [JsonProperty("changes")]
    public List<Change> Changes { get; set; }

    [JsonProperty("id")]
    public string Id { get; set; }

    [JsonProperty("time")]
    public int Time { get; set; }
}

public class Change
{
    [JsonProperty("field")]
    public string Field { get; set; }

    [JsonProperty("value")]
    public Value Value { get; set; }
}

public class Value
{
    [JsonProperty("ad_id")]
    public string AdId { get; set; }

    [JsonProperty("form_id")]
    public string FormId { get; set; }

    [JsonProperty("leadgen_id")]
    public string LeadGenId { get; set; }

    [JsonProperty("created_time")]
    public int CreatedTime { get; set; }

    [JsonProperty("page_id")]
    public string PageId { get; set; }

    [JsonProperty("adgroup_id")]
    public string AdGroupId { get; set; }
}

public class LeadData
{
    [JsonProperty("created_time")]
    public string CreatedTime { get; set; }

    [JsonProperty("id")]
    public string Id { get; set; }

    [JsonProperty("field_data")]
    public List<FieldData> FieldData { get; set; }
}

public class FieldData
{
    [JsonProperty("name")]
    public string Name { get; set; }

    [JsonProperty("values")]
    public List<string> Values { get; set; }
}

public class LeadFormData
{
    [JsonProperty("id")]
    public string Id { get; set; }

    [JsonProperty("leadgen_export_csv_url")]
    public string CsvExportUrl { get; set; }

    [JsonProperty("locale")]
    public string Locale { get; set; }

    [JsonProperty("name")]
    public string Name { get; set; }

    [JsonProperty("status")]
    public string Status { get; set; }
}

在Post动作中执行此操作

public void Post([FromBody] JsonData data)
    {
        try
        {
            var entry = data.Entry.FirstOrDefault();
            //Get change
            var change = entry?.Changes.FirstOrDefault();
            if (change == null) return;

            //Get lead Id
            var leadId = change.Value.LeadGenId;

            //Lead Id is used for further processing
        }
        catch (Exception ex)
        {
            Trace.TraceError($"Error >> {ex.Message} >> StackTrace {ex.StackTrace}");
        }
    }

有关详细信息,请参阅Facebook ASP.NET Webhook