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);
}
?>
Не могли бы вы помочь, возможно, в этом коде есть ошибка, которую я не нахожу.
Я думаю, что это поможет многим людям. Спасибо.