1

我一路读到Salesforce(我对这个第3方平台非常陌生)有FUEL SDK一个可以使用哪个版本而不是版本(使用HttpClient -- REST代替SOAP)。

FUEL SDK如果使用是请求 Salesforce 端点的唯一方法,请纠正我。目前我正在尝试使用HttpClient. 这些是我编写代码的教程:

想要的结果:

为了能够Triggered Send根据ExactTarget.

问题:

Salesforce 端点不断返回 404。我能够成功接收授权令牌。GetAccessToken为简洁起见省略了该方法

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

我不明白为什么第二个POST请求//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以下内容:

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

邮政

原始标题:

  • 内容类型:应用程序/json
  • 授权:承载XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

原始有效载荷:

{
    "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 回答