derzost_namereniya
@derzost_namereniya
Куплю сайт

Как переделать алгоритм создания повторных заявков в amoCRM?

Подскажите как реализовать так, чтобы повторные заявки, ориентируясь по номеру телефона(если такой уже есть в amoCRM), создавались таким образом: создавалась ещё одна сделка, контакт оставался тот же и новая сделка привязывалась к существующему контакту ну и задача, естественно, создавалась новая.

На данный момент при создании лида (если такой телефон есть в базе) контакт новый не создаётся, но сделка не привязывается к старому контакту - просто новая сделка и новая задача.

Вот текущий код (некоторые данные удалил/скрыл)

$link = 'https://' . $subdomain . '.amocrm.com/private/api/auth.php?type=json';
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, 'amoCRM-API-client/1.0');
curl_setopt($curl, CURLOPT_URL, $link);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($user));
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__file__) *******************
curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__file__) *******************
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
$out = curl_exec($curl);
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
CheckCurlResponse($code);
$Response = json_decode($out, true);
$Response = $Response['response'];
if (isset($Response['auth']))
{

#создаём сделку
$leads = array(
'name' => 'Заявка с сайта Детское плавание',
'responsible_user_id' => ******,
//'responsible_user_id'=> ******, //Наталия
'status_id' => 9131076,
);
$leads['custom_fields'][] = array('id' => '363194', 'values' => array(array('value' =>
861050, )));
$leads['custom_fields'][] = array('id' => '363196', 'values' => array(array('value' =>
861012, )));
$leads['custom_fields'][] = array('id' => '363216', 'values' => array(array('value' =>
$utm_source, )));
$leads['custom_fields'][] = array('id' => '363218', 'values' => array(array('value' =>
$utm_medium, )));
$leads['custom_fields'][] = array('id' => '363220', 'values' => array(array('value' =>
$utm_campaign, )));
$leads['custom_fields'][] = array('id' => '363222', 'values' => array(array('value' =>
$utm_term, )));
$lead_set['request']['leads']['add'][] = $leads;
#Формируем ссылку для запроса
$link = 'https://' . $subdomain . '.amocrm.com/private/api/v2/json/leads/set';
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, 'amoCRM-API-client/1.0');
curl_setopt($curl, CURLOPT_URL, $link);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($lead_set));
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__file__) *******************
curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__file__) *******************
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
$out = curl_exec($curl);
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
CheckCurlResponse($code);

$Response = json_decode($out, true);
$Response = $Response['response']['leads']['add'];
$output = 'ID добавленных сделок:' . PHP_EOL;
foreach ($Response as $v)
if (is_array($v))
{
$output .= $v['id'] . PHP_EOL;
$lead_id = $v['id'];
}

if (!$contact_id = contactExist($phone, $subdomain)){

// создаем контакт
$contact = array(
'name' => $name,
'phone' => $phone,
'responsible_user_id' => ******,
//'responsible_user_id'=> ******, //Наталия
'linked_leads_id' => array($lead_id),
);
$contact['custom_fields'][] = array('id' => '363014', 'values' => array(array(
'value' => $phone,
'enum' => 'WORK'
)));

//$contact['custom_fields'][] = array('id' => '363198', 'values' => array(array('value' => $city )));
$contact['custom_fields'][] = array('id' => '363016', 'values' => array(array('value' =>
$email, 'enum' => 'WORK' )));
$contact_set['request']['contacts']['add'][] = $contact;
$link = 'https://' . $subdomain . '.amocrm.com/private/api/v2/json/contacts/set';
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, 'amoCRM-API-client/1.0');
curl_setopt($curl, CURLOPT_URL, $link);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($contact_set));
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__file__)
curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__file__)
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
$out = curl_exec($curl);
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($code != 200 && $code != 204)
{
echo json_encode(array('result'=>'error', 'text'=>$code));
exit;
}
$Response = json_decode($out, true);
$Response = $Response['response']['contacts']['add'];
$output = 'ID добавленных контактов:' . PHP_EOL;
foreach ($Response as $v)
if (is_array($v))
{
$output .= $v['id'] . PHP_EOL;
$contact_id = $v['id'];
}

}
else {
$text = 'Повторный заказ';
}

$tomorrow = strtotime('+12hours');

// создаем задачу
$task = array(
'name' => (isset($text) && !empty($text))?$text:'Новая задача',
'responsible_user_id' => ******,
//'responsible_user_id'=> ******, //Наталия
'element_type' => 1,
'element_id' => $contact_id,
'text' => 'Новая заявка - Позвонить клиенту!',
'complete_till' => $tomorrow,
);
$task_set['request']['tasks']['add'][] = $task;
$link = 'https://' . $subdomain . '.amocrm.com/private/api/v2/json/tasks/set';
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, 'amoCRM-API-client/1.0');
curl_setopt($curl, CURLOPT_URL, $link);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($task_set));
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__file__) *******************
curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__file__) *******************
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
$out = curl_exec($curl);
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
CheckCurlResponse($code);
echo json_encode(array('result'=>'success', 'text'=>'Ваша заявка принята'));
} else
{
echo json_encode(array('result'=>'error', 'text'=>'Авторизация не удалась'));
exit;

_________________________________________________________
Почему что новая сделка не подвязывается к старому контакту?
  • Вопрос задан
  • 947 просмотров
Пригласить эксперта
Ответы на вопрос 1
solohin
@solohin
Внедряю CRM-системы в малый и средний бизнес
Быстрым взглядом не нашел у тебя метода search в коде. Найди существующий контакт по номеру телефона, и при создании сделки укажи id этого существующего контакта, а не создавай новый.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы