2016-03-30 8 views
0

私はこれが初めてです! Webhooksが増加しており、仕事でリードを生み出しています。私はWeb API 2で 'GET'コントローラを持っており、これは私のアプリを検証し、実際にはhub.verify_token、hub.challenge、hub.modeの値を取得します。コントローラをGET:なぜ私のWeb API POSTコントローラはFacebookのwebhook leadgen情報を受信して​​いませんか?

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

は注意してください:私は2

は今、私の問題は、Facebookがも、私のポストを直撃してしまっていないということであるC#とウェブAPIを使用しています。 AzureストレージエクスプローラでWADLogsTableをチェックすると、私が取得した取得要求に関する情報が記録されます。しかし、ポストコントローラにTrace.TraceError()があっても、POSTに関するエラーはありません。したがって、POSTはヒットしていません。私のデータ構造が間違っていると感じています。ここに私のポストコントローラであり、Facebookのドキュメントとオンラインで:

  1. POSTコントローラ:

    public HttpResponseMessage Post([FromBody]Entry[] entry){...} 
    
  2. エントリクラスを以下のように "https://developers.facebook.com/docs/graph-api/webhooksは"(更新を受信)、私は私のコードを構造化しています:

    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. 変更クラス

    public class Change 
    { 
        public string field { get; set; } 
        public LeadInfo value { get; set; } 
    } 
    
  4. LeadInfoクラス

    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; } 
    
    } 
    

彼らは、変数名はFacebookのから送信一致するように公共小道具が小文字されていることに注意してください。

私のデータ構造は正しいですか?

ご迷惑をおかけして申し訳ありません。みんな、ありがとう。

答えて

0

私はこの問題を解決しました。 Facebookは通常のHTML形式のurlencodeとは対照的に、POSTリクエスト本体のデータをapplication/jsonとして送信します。そのため、未処理のコンテンツを読み込んでデシリアライズする必要があります。

+0

@Nkosiなぜあなたは私をdownvotingていますか?私はこれを初めて知っていて、フォーマットを知らなかったことを明確に述べました。人生を手に入れよう! –

0

これはお使いのモデルに使用してください。私はあなたのフォームからテストリードを作るためにこのページに行くことによってjson応答を見つけました。

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; } 
} 
関連する問題