2016-05-10 6 views
-2

APIバージョン3を使用してMailchimpイベントのWebhookを作成しようとしていますが、ライブラリ、ドキュメント、基本的な例が不足しているために少し苦労しています。私の経験の欠如。MailChimp API V3 Webhookによって送信されたデータを取得する

URLに秘密を入れてWebhookを保護する必要があることは分かりますが、それは問題ありません。ところで、MailChimpでは、ポータルで基本アクセス認証を設定することはできません。

「実際のデータに対してHTTP POSTを送信している間、私たちのwebhookバリデーターはHTTP GETリクエストを送信するだけです。あなたのwebhookが正しく機能するためには両方を許可する必要があります。それがGETであれば、Request.HttpMethodを使用して成功ステータスコードを返し、POSTの場合はデータを処理することができます。

どのようにリクエストを取り除くかわからず、理想的にはすべてのイベントタイプをカバーするクラスとプロパティのヒープを書きたくないのですが、C#は静的に型付けされています。オプション。

JSONを逆シリアル化する必要がありますか?ライブラリの助けを借りて別のAPIのwebhookを書きましたが、リクエストから来た文字列、ストリーム、またはテキストリーダーのいずれかを使ってAPIイベントを構築することができました。図書館はすべてをとてもシンプルにしました。このようなルックスを掲示ますHow to pass email address to webhook from mailchimp

データ(たぶん、V3のための任意のドキュメントがあるように思えません):

参考のために、PHPを使用していくつかのデータを取得する方法を示し、この問題もあります。

"type": "unsubscribe", 
"fired_at": "2009-03-26 21:40:57", 
"data[action]": "unsub", 
"data[reason]": "manual", 
"data[id]": "8a25ff1d98", 
"data[list_id]": "a6b5da1054", 
"data[email]": "[email protected]", 
"data[email_type]": "html", 
"data[merges][EMAIL]": "[email protected]", 
"data[merges][FNAME]": "MailChimp", 
"data[merges][LNAME]": "API", 
"data[merges][INTERESTS]": "Group1,Group2", 
"data[ip_opt]": "10.20.10.30", 
"data[campaign_id]": "cb398d21d2", 
"data[reason]": "hard" 

私は基本的にこのデータを変数に取得する必要があるため、データベースと同期することができます。

はここで、これまでの私(スケルトン)コントローラです:

[Route("mailchimp/newsletter-webhook/super-secret-key-goes-here")] 
public HttpStatusCodeResult ChargeBeeWebhook() 
{ 

    return new HttpStatusCodeResult(200); 
} 
+1

この投稿はhttp://stackoverflow.com/questions/15020807/using-mailchimp-webhooks-featureがMailChimpを送信 – RedJandal

+1

役立つかもしれませんJSONではなく[フォームエンコーディング](https://en.wikipedia.org/wiki/Percent-encoding#The_application.2Fx-www-form-urlencoded_type)を使用してwebhookデータを作成します。 WebフォームからPOSTを処理するのと同じ方法で、それらのPOSTを処理したいと思うでしょう。 – TooMuchPete

+0

最近私はログファイルから、Mailchimpがwebhooksで何も返さなかったことがわかりました。私はそれがV2を廃止した後に起こったと思います。 –

答えて

2

hereを説明するように、あなたが既にあなたのMailChimpウェブフックを設定したと仮定すると、あなたがRequest.Form構文を使用してポストされたデータを取得することができます。質問から例ポストされたデータを使用して、ここにあなたのコントローラのコードは次のようになります方法は次のとおりです。

[AllowAnonymous] 
public void ChargeBeeWebhook() 
{ 
    // type variable will be "unsubscribe" 
    string type = Request.Form["type"]; 

    // action variable will be "unsub" 
    string action = Request.Form["data[action]"]; 

    // reason variable will be "manual" 
    string reason = Request.Form["data[reason]"]; 

    // ... 
    // ... 
    // ... do the same with the rest of the posted variables 
    // ... 

    // sync the posted data above with your database 
    // ... 
    // ... 
} 
+0

ありがとうございます。好奇心が強い、これは古い質問です。どうやって今日は最終的に何らかの行動を起こしていますか? – nmit026

+0

ようこそ。私はこの質問がC#とmailchimpタグにぶつかるのを見ました。他の誰かが私の前でこの質問に答えて、答えが削除されたように見えます。 – ekad

関連する問題