1

私は、Salesforce (私はこのサードパーティのプラットフォームに非常に慣れていない) がFUEL SDKバージョンの代わりに使用できるもの (の代わりに使用HttpClient -- REST)を持っていることを読みましたSOAP

FUEL SDKSalesforce のエンドポイントを要求する唯一の方法が使用である場合は、訂正してください。現在、を使用して ExactTargets の API エンドポイントをヒットしようとしていますHttpClient。これらは、私がコードの基にしているチュートリアルです。

望んでいた結果:

Triggered Send内のテンプレートに基づいて電子メールをリクエストできるようにするためExactTarget

問題:

Salesforce エンドポイントは継続的に 404 を返します。認証トークンを正常に受け取ることができます。GetAccessToken簡潔にするためにメソッドは省略されています

https://www.exacttargetapis.com/messaging/v1/messageDefinitionSends/key:MyExternalKey/send

POST2 番目のリクエスト//www.exacttargetapis.com/.....で 404 が返される理由がわかりませんが、承認は機能します。FUEL SDKこれにより、ウェルカム メールをトリガーするために を使用する必要はないと思います。


コード:

    private const string requestTokenUrl = "https://auth.exacttargetapis.com/v1/requestToken";
    private const string messagingSendUrl = "https://www.exacttargetapis.com/messaging/v1/messageDefinitionSends";
    private string exactTargetClientId = ConfigurationManager.AppSettings["ExactTargetClientId"];
    private string exactTargetClientSecret = ConfigurationManager.AppSettings["ExactTargetClientSecret"];

    private string TriggerEmail(User model, string dbName)
    {
        var etExternalKeyAppSetting = ConfigurationManager.AppSettings.AllKeys.FirstOrDefault(x => x.Equals(dbName));
        if (etExternalKeyAppSetting != null)
        {
            string etExternalKey = ConfigurationManager.AppSettings[etExternalKeyAppSetting];

            HttpClient client = new HttpClient
            {
                BaseAddress = new Uri(string.Format(@"{0}/key:{1}/send", messagingSendUrl, etExternalKey)),
                DefaultRequestHeaders =
                {
                    Authorization = new AuthenticationHeaderValue("Bearer", this.GetAccessToken())
                }
            };

            try
            {
                var postData = this.CreateExactTargetPostData(model.Email, etExternalKey);
                var response = client.PostAsync(client.BaseAddress
                                                , new StringContent(JsonConvert.SerializeObject(postData).ToString()
                                                                        , Encoding.UTF8
                                                                        , "application/json")).Result;

                // get triggered email response
                if (response.IsSuccessStatusCode)
                {
                    dynamic result = JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result);
                }
            }
            catch (Exception ex)
            {
                string message = ex.Message;
            }
        }

        return "testing";
    }

    private object CreateExactTargetPostData(string email, string extKey)
    {

        var fromData = new
        {
            Address = ConfigurationManager.AppSettings["AwsSenderEmail"],
            Name = "Test"
        };

        var subscriberAttributes = new { };

        var contactAttributes = new
        {
            SubscriberAttributes = subscriberAttributes
        };

        var toData = new
        {
            Address = email,
            //SubscriberKey = extKey,
            //ContactAttributes = contactAttributes
        };

        var postData = new
        {
            From = fromData,
            To = toData
        };

        return postData;
    }

私はまた、以下を使用して試しAdvanced REST Clientました:

URL: https://www.exacttargetapis.com/messaging/v1/messageDefinitionSends/key:MyExternalKey/send

役職

生のヘッダー:

  • コンテンツ タイプ: アプリケーション/json
  • 認可: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

生のペイロード:

{
    "From": {
        "Address": "code@exacttarget.com",
        "Name": "Code@"
    },
    "To": {
        "Address": "example@example.com",
        "SubscriberKey": "example@example.com",
        "ContactAttributes": {
            "SubscriberAttributes": {
                "Region": "West",
                "City": "Indianapolis",
                "State": "IN"
            }
        }
    },
    "OPTIONS": {
        "RequestType": "ASYNC"
    }
}
4

1 に答える 1

2

問題は、AppCenter の私のアプリが MarketingCloud の間違ったログインを指していたことです =(

于 2016-10-06T17:18:54.010 に答える