2016-10-04 6 views
1

Salesforce(このサードパーティ製プラットフォームの新機能)は、SOAPの代わりにHttpClient -- RESTを使用して、FUEL SDKHttpClient RESTを使用してExactTargetのAPIから送信されたFire Triggered Release

FUEL SDKを使用してSalesforceのエンドポイントをリクエストする唯一の方法である場合は、修正してください。現在、HttpClientを使用してExactTargetsのAPIエンドポイントをヒットしようとしています。これらは私がのオフに私のコードを基づかてきたチュートリアルです:

がオフに基づいてTriggered Sendメールをリクエストできるようにするには:

の検索結果を募集テンプレートの内部はExactTargetです。

問題:

Salesforceのエンドポイントが継続的に私はトークン成功し、認可を受けることができるよ404を返します。GetAccessToken方法は//www.exacttargetapis.com/.....に第二POST要求は404を返しますが、認可が動作する理由を私は理解していない簡潔

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

のために省略されています。これは私にウェルカムメールをトリガするために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

POST

生ヘッダ:

  • のContent-Type:アプリケーション/ JSON
  • 認証:ベアラXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

生ペイロード:

{ 
    "From": { 
     "Address": "[email protected]", 
     "Name": "[email protected]" 
    }, 
    "To": { 
     "Address": "[email protected]", 
     "SubscriberKey": "[email protected]", 
     "ContactAttributes": { 
      "SubscriberAttributes": { 
       "Region": "West", 
       "City": "Indianapolis", 
       "State": "IN" 
      } 
     } 
    }, 
    "OPTIONS": { 
     "RequestType": "ASYNC" 
    } 
} 

答えて

2

問題AppCenterの私のアプリケーションがMarketingCloud =(

)の間違ったログインを指していた
関連する問題