2017-08-27 2 views
1

Ich kann einen neuen Marketo-Lead erstellen, indem ich ein HTML-Formular und das angehängte Skript (PHP + Rest API) verwende. Es funktioniert meistens, die Leads erscheinen in Marketo.Marketo REST API - Smart Campaign

Das Problem ist, mein Marketo Setup erfordert neue Leads zu einer bestimmten "Smart Campaign" hinzugefügt werden.

Auf Marketos Rest API documentation, fand ich einen Endpunkt zum Hinzufügen von Leads zu einer Liste, aber nicht zum Hinzufügen zu einer Kampagne. Bist du auf dieses Problem gestoßen?

class UpsertLeads{ 
    //these are the CIN Marketo credentials 
    public $host = "####";//CHANGE ME 
    public $clientId = "####";//CHANGE ME 
    public $clientSecret = "####";//CHANGE ME 
    public $input; //an array of lead records as objects 
    public $lookupField; //field used for deduplication 
    public $action; //operation type, createOnly, updateOnly, createOrUpdate, createDuplicate 

    public function postData(){ 
     $url = $this->host . "/rest/v1/leads.json?access_token=" . $this->getToken(); 
     $ch = curl_init($url); 
     $requestBody = $this->bodyBuilder(); 
     //commenting out 
     //dont need to output this stuff in production 
     //print_r($requestBody); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, array('accept: application/json','Content-Type: application/json')); 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $requestBody); 
     curl_getinfo($ch); 
     $response = curl_exec($ch); 
     return $response; 
    } 

    private function getToken(){ 
     $ch = curl_init($this->host . "/identity/oauth/token?grant_type=client_credentials&client_id=" . $this->clientId . "&client_secret=" . $this->clientSecret); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, array('accept: application/json',)); 
     $response = json_decode(curl_exec($ch)); 
     curl_close($ch); 
     $token = $response->access_token; 
     return $token; 
    } 

    private function bodyBuilder(){ 
     $body = new stdClass(); 
     if (isset($this->action)){ 
      $body->action = $this->action; 
     } 
     if (isset($this->lookupField)){ 
      $body->lookupField = $this->lookupField; 
     } 
     $body->input = $this->input; 
     $json = json_encode($body); 
     return $json; 
    } 

    private static function csvString($fields){ 
     $csvString = ""; 
     $i = 0; 
     foreach($fields as $field){ 
      if ($i > 0){ 
       $csvString = $csvString . "," . $field; 
      }elseif ($i === 0){ 
       $csvString = $field; 
      } 
     } 
     return $csvString; 
    } 
} 

Antwort

0

Es ist nicht möglich, Ihre neue Leads direkt an einen Smart Campaign über die API zu setzen.
Wie Sie jedoch angemerkt haben, können Sie sie zu einer Liste schieben, die auf halbem Weg zum Erfolg ist. Von dort, das einzige, was Sie tun müssen, ist die Smart Campaign in Frage zu konfigurieren, um die Leads von der Liste, die Sie ausfüllen.

Sie können das tun auf der Smart List Reiter der Smart Campaign durch die Added to List Trigger einrichten und verweisen Sie auf Ihre Liste. Screenshot beigefügt.

Auf diese Weise wird der neue Lead sofort zur Smart List hinzugefügt.

'Added to List' trigger of Smart Campaign