Интеграция битрикс24 с сайтом через АРІ
41 PLNВ административной панеле сайта имеем 2 формы обратной связи, в настройках которых необходимо написать код, поторый будет запрашивать и передавать данные в CRM Битрикс24
необходимая логика работы:
код запускается в момент оправки формы, необходимо:
1) запросить данные из Битрикс24, таблицы "Контактов", есть ли запись в таблице с таким номером телефона. Если запись есть - получить ID записи (ID контакта), если записи нет - создать новую запись в таблице (записать номер телефона PHONE, имя (если есть) NAME и получить ее ID
2) создать новую запись в таблице сделок, в сделке указать ID контакта (CONTACT_ID), в поле комментария указать всю возможную дополнительную информацию о заявке COMMENTS (дата, время, название формы обратной связи, адрес сайта, урл страницы)
Пример:
<?php
class Sync
{
private $link = 'https://crm.zvilnymo.com/rest/15/pf8v49ci8lrnc9lm/';
private $assigned = 11;
private $source = 2;
public function checkContact($data)
{
$contactID = $this->findContact($data);
if ($contactID == 0) {
$contactID = $this->createContact($data);
}
return $contactID;
}
public function createDeal($data)
{
$DealFieldsToSend['FIELDS'] = [
"TITLE" => $data['dealTitle'],
"STAGE_ID" => 'zvilnymo.amocrm.com_28435531',
"CONTACT_ID" => $data['contactID'],
"CATEGORY_ID" => 0,
"OPENED" => "Y",
"ASSIGNED_BY_ID" => $this->assigned,
"SOURCE_ID" => $this->source,
"COMMENTS" => $data['comment'],
];
$dealID = $this->requestToCRM($DealFieldsToSend, 'crm.deal.add');
return $dealID['result'];
}
private function findContact ($data)
{
if (!empty($data['client-telephone'])) {
$dataToSearch = [
'FILTER' => ['PHONE' => $data['client-telephone']],
'SELECT' => ['ID', 'ORIGIN_ID', 'PHONE', 'EMAIL']];
$searchResult = $this->requestToCRM($dataToSearch, 'crm.contact.list');
if ( count( $searchResult['result'] ) > 0 ) {
return $searchResult['result'][0]['ID'];
}
}
if (!empty($data['client-email'])) {
$dataToSearch = [
'FILTER' => ['EMAIL' => $data['client-email']],
'SELECT' => ['ID', 'ORIGIN_ID', 'PHONE', 'EMAIL']];
$searchResult = $this->requestToCRM($dataToSearch, 'crm.contact.list');
if ( count( $searchResult['result'] ) > 0 ) {
return $searchResult['result'][0]['ID'];
}
}
return 0;
}
private function createContact ($data)
{
$fieldsToSend['FIELDS'] = [
'SOURCE_ID' => $this->source,
'NAME' => $data['client-name'],
'LAST_NAME' => '',
"ASSIGNED_BY_ID" => $this->assigned,
];
if (isset($data['client-telephone'])) {
$fieldsToSend['FIELDS']['PHONE'] = [
["VALUE" => $data['client-telephone'], "VALUE_TYPE" => 'WORK' ],
];
}
if (isset($data['client-email'])) {
$fieldsToSend['FIELDS']['EMAIL'] = [
["VALUE" => $data['client-email'], "VALUE_TYPE" => 'WORK' ],
];
}
$CRMContactID = $this->requestToCRM($fieldsToSend, 'crm.contact.add');
return $CRMContactID['result'];
}
function requestToCRM ($data, $method)
{
$queryUrl = $this->link.$method.'.json';
$queryData = http_build_query($data);
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $queryUrl,
CURLOPT_POSTFIELDS => $queryData,
]);
$result = curl_exec($curl);
curl_close($curl);
$result = json_decode($result, 1);
return $result;
}
}
Załączniki 3
-
5799 264 0 Добрый день, готов взяться за интеграцию, логика понятна, делал уже такое
Добрый день, готов взяться за интеграцию, логика понятна, делал уже такое
-
4182 198 2 5 Доброго дня. Неодноразово реалізовував таку штуку. Якщо швидко виберете мене виконаю сьогодні, або завтра після 20:00
Aktualne zlecenia dla freelancerów w kategorii Aplikacje desktopowe
Dodać przerwy 10-30 sekund między wysyłkami e-mailiWitam! Szukam doświadczonego programisty 1C / BAS (BAF) do szybkiego rozwiązania problemu technicznego z wysyłką maili.Istota problemu: Używamy programu księgowego BAF (Business Automation Framework), edycja 2.0. Raz w miesiącu pojawia się potrzeba masowego wysyłania klientom… Programowanie stron internetowych, Aplikacje desktopowe ∙ 2 dni 22 godziny temu ∙ 10 ofert |
Rewersowe inżynieria konsolowych narzędzi do ankietowania kontrolerów SSD (Flash ID)1. Cel pracy Wydzielenie interfejsu programowania aplikacji (API) do interakcji z kontrolerami SSD/NVMe z dostarczonego zestawu narzędzi konsolowych (Phison, Silicon Motion, Realtek, Maxiotek, Marvell, JMicron itd.). Wynikiem ma być działający kod w języku C/C++ lub dokładna… C i C++, Aplikacje desktopowe ∙ 3 dni 9 godzin temu ∙ 5 ofert |
Modyfikacja w pracy emulatora
163 PLN
Witaj. Ściągnąłem z Internetu emulator automatu do gier gaminator cf final. Bardzo mi się podoba, ale są tam niedociągnięcia. Jest panel administracyjny, ale otwiera się swobodnie, a nie zamyka w ogóle. Zamyka się tylko razem z aplikacją. A dane po zmianach w panelu… Aplikacje desktopowe ∙ 10 dni 23 godziny temu ∙ 10 ofert |