我已成功将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
非常感谢任何有关此事的帮助。谢谢。
答案 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