Agile CRM с контактной формой 7

Я не могу интегрировать agilecrm с формой контактов Wordpress 7. Я пытаюсь использовать этот плагин. Но это не работает для меня и для многих людей, по-видимому.

Я нахожу php-код для включения в файл контактной формы 7, но он не работает. У меня ошибка 500. источник

<?php

define(“AGILE_DOMAIN”, “xxxxx”); 
define(“AGILE_USER_EMAIL”, “xx@xx.com”);
define(“AGILE_REST_API_KEY”, “xxxx”);
$owner_id=5000009344; 

 $log_file = “/tmp/contact-form7.lsh.log”;
add_action( ‘wpcf7_before_send_mail’, ‘sync_agilecrm’ );
function sync_agilecrm( $cf7 ){
 global $owner_id;
 $submission = WPCF7_Submission::get_instance();
 $data =& $submission->get_posted_data();

# Определяем переменные для записи в agileCRM
 $email = $data[“crm-email”];
 list($first_name, $last_name) = split(“ “, $data[“crm-name”],2);
 $phone = $data[“crm-phone”];
 $tag = $data[“crm-tag”];
 
 #print_log(“INFO: Контактная информация: email:$email, fist_name:$first_name, last_name:$last_name, phone: $phone, tag:$tag”);
 
 #сделка
 $deal_name = $data[“crm-dealname”];
 $deal_value = $data[“crm-dealvalue”];
 #print_log(“INFO: Информация по сделке: deal_name: $deal_name deal_value:$deal_value”);
 
 #задача
 $task_name = $data[“crm-taskname”];
 #print_log(“INFO: Информация по задаче: task_name: $task_name”);
 
 if (isset($email)){
 $result = curl_wrap(“contacts/search/email/$email”, null, “GET”, “application/json”);
 $result = json_decode($result, false, 512, JSON_BIGINT_AS_STRING);
 $contact_json = array(
 “tags”=>array($tag),
 “properties”=>array(
 array(
 “name”=>”first_name”,
 “value”=>$first_name,
 “type”=>”SYSTEM”
 ),
 array(
 “name”=>”last_name”,
 “value”=>$last_name,
 “type”=>”SYSTEM”
 ),
 array(
 “name”=>”email”,
 “value”=>$email,
 “type”=>”SYSTEM”
 ), 
 array(
 “name”=>”phone”,
 “value”=>$phone,
 “type”=>”SYSTEM”
 )
 )
 );
 if (!isset($contact_json[‘properties’][1][‘value’]))
 array_splice($contact_json[‘properties’], 1, 1);
 
 if (isset($result)){
 # Обновляем данные у контакта
 $contact_id = $result->id;
 $contact_json = array_merge($contact_json, array(“id” => $contact_id));
 $c = json_encode($contact_json);
 # обновление контактных данных
 curl_wrap(“contacts/edit-properties”, $c, “PUT”, “application/json”);
 
 #обновление tags отдельно
 $contact_json = array(
 “id” => $contact_id, //It is mandatory field. Id of contact
 “tags” => array($tag)
 );
 $contact_json = json_encode($contact_json);
 curl_wrap(“contacts/edit/tags”, $contact_json, “PUT”, “application/json”);
 }else{
 # Это новый контакт и мы его добавляем
 $c = json_encode($contact_json);
 $result = curl_wrap(“contacts”, $c, “POST”, “application/json”);
 $result = json_decode($result, false, 512, JSON_BIGINT_AS_STRING);
 $contact_id = $result->id;
 }
 
 # Добавляем новую сделку
 if (isset($contact_id) and isset($deal_name) and isset($deal_value)) {
 $opportunity_json = array(
 “name”=>$deal_name,
 “expected_value”=>$deal_value,
 “milestone”=>”New”,
 “probability”=>50,
 “contact_ids”=> array($contact_id)
 );
 $opportunity_json = json_encode($opportunity_json);
 # Добавляем новую сделку
 $result_deal = curl_wrap(“opportunity”, $opportunity_json, “POST”, “application/json”);
 $result_deal = json_decode($result_deal, false, 512, JSON_BIGINT_AS_STRING);
 $deal_id =$result_deal->id;
 
 }
 
 # Добавляем новую задачу для сделки
 if (isset($contact_id) and isset($deal_id)){
 # как посчитать текущее время
 $date_due = time()+60*60; # +1 час.
 $task_json = array(
 “type”=>”CALL”, # делаем звонок 
 “priority_type”=>”HIGH”,
 “due”=>$date_due,
 “contacts”=>array($contact_id),
 “deal_ids”=>array($deal_id),
 “subject”=>”$task_name”,
 “status”=>”YET_TO_START”,
 “owner_id”=>$owner_id,
 );
 
 # задача на сотрудника, нужно узнать код сотрудника
 #$userList = curl_wrap(“users”, null, “GET”, NULL);
 #print_r($userList);
 
 $task_json = json_encode($task_json);
 $result_task = curl_wrap(“tasks”, $task_json, “POST”, “application/json”);
 $result_task = json_decode($result_task, false, 512, JSON_BIGINT_AS_STRING);
 }
 }
}
function curl_wrap($entity, $data, $method, $content_type) {
 if ($content_type == NULL) {
 $content_type = “application/json”;
 }
 
 $agile_url = “https://” . AGILE_DOMAIN . “.agilecrm.com/dev/api/” . $entity;
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
 curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
 curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, true);
 switch ($method) {
 case “POST”:
 $url = $agile_url;
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, “POST”);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
 break;
 case “GET”:
 $url = $agile_url;
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, “GET”);
 break;
 case “PUT”:
 $url = $agile_url;
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, “PUT”);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
 break;
 case “DELETE”:
 $url = $agile_url;
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, “DELETE”);
 break;
 default:
 break;
 }
 curl_setopt($ch, CURLOPT_HTTPHEADER, array(
 “Content-type : $content_type;”, ‘Accept : application/json’
 ));
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_USERPWD, AGILE_USER_EMAIL . ‘:’ . AGILE_REST_API_KEY);
 curl_setopt($ch, CURLOPT_TIMEOUT, 120);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
 $output = curl_exec($ch);
 curl_close($ch);
 return $output;
}
function print_log($msg, $fl_email){
 global $log_file;
 $msg = ‘[‘.date(‘d.m.Y H:i:s’).”] $msg\n”;
 #error_log($msg, 3, $log_file);
}

?>

Не могли бы вы помочь, возможно, в этом коде есть ошибка, которую я не нахожу.

Я думаю, что это поможет многим людям. Спасибо.

0 ответов

Другие вопросы по тегам