2016-03-30 3 views
0

Ich bin neu dazu! Webhooks sind auf dem Vormarsch und bei der Arbeit generieren wir Leads. Ich habe einen 'GET' Controller in Web API 2 und dies überprüft meine App und tatsächlich bekomme ich Werte für hub.verify_token, hub.challenge und hub.mode. Controller GET:Warum erhält mein Web-API-Post-Controller keine Facebook-Informationen über Leachgen?

public HttpResponseMessage Get([FromUri]Hub hub){} 

Bitte beachten Sie: I C# und Web-api 2

Jetzt bin mit, mein Problem ist, dass Facebook nicht einmal meine Pfosten. Wenn ich die WADLogsTable im Azure-Speicher-Explorer überprüfe, gibt es Informationen über meine get-Anfrage, die ich aufgezeichnet habe. Es gibt jedoch nicht einmal einen Fehler in Bezug auf den POST, obwohl der Post-Controller Trace.TraceError() hat. Daher wird POST nicht getroffen. Ich habe das Gefühl, dass meine Datenstruktur falsch ist. Hier sind meine Post-Controller und in-line mit der Facebook-Dokumentation: "https://developers.facebook.com/docs/graph-api/webhooks" (Empfangen von Updates), ich habe meinen Code wie folgt strukturiert:

  1. POST-Controller:

    public HttpResponseMessage Post([FromBody]Entry[] entry){...} 
    
  2. Eintrag Klasse :

    public class Entry 
    { 
        public string id { get; set; } 
        public string[] changed_fields { get; set; } 
        public Change[] changes { get; set; } 
        public DateTime time { get; set; } 
    } 
    
  3. ändern Klasse

    public class Change 
    { 
        public string field { get; set; } 
        public LeadInfo value { get; set; } 
    } 
    
  4. LeadInfo Klasse

    public class LeadInfo 
    { 
        public string ad_id { get; set; } 
        public string adgroup_id { get; set; } 
        public DateTime created_time { get; set; } 
        public string form_id { get; set; } 
        public string leadgen_id { get; set; } 
        public string page_id { get; set; } 
    
    } 
    

Bitte beachten Sie, dass die öffentlichen Requisiten klein geschrieben werden, so dass sie die Variablennamen von Facebook senden lassen.

IS meine Datenstruktur korrekt?

Jede Hilfe wird sehr geschätzt. Danke an alle.

Antwort

0

Ich habe das Problem gelöst. Facebook sendet die Daten im POST-Anfragetext als Anwendung/json, im Gegensatz zu den üblichen URL-Codes in HTML-Formularen. Daher muss der rohe Inhalt gelesen und deserialisiert werden.

+0

@Nkosi warum Downvoting du mich? Ich habe klar gesagt, dass ich neu bin und mir die Formatierung nicht bewusst war. Hast du nichts anderes zu tun! –

0

Verwenden Sie dies für Ihr Modell. Ich habe die JSON-Antwort gefunden, indem ich auf diese Seite gegangen bin, um eine Testführung von Ihrem Formular aus zu machen.

https://developers.facebook.com/tools/lead-ads-testing

using Newtonsoft.Json; 

public class WebHookResponseModel 
{ 
    public Entry[] entry { get; set; } 

    [JsonProperty("object")] 
    public string _object { get; set; } 
} 

public class Entry 
{ 
    public Change[] changes { get; set; } 
    public string id { get; set; } 
    public int time { get; set; } 
} 

public class Change 
{ 
    public string field { get; set; } 
    public Value value { get; set; } 
} 

public class Value 
{ 
    public int ad_id { get; set; } 
    public long form_id { get; set; } 
    public long leadgen_id { get; set; } 
    public int created_time { get; set; } 
    public long page_id { get; set; } 
    public int adgroup_id { get; set; } 
} 
Verwandte Themen