Интеграция битрикс24 с сайтом через АРІ
11 USDВ административной панеле сайта имеем 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;
}
}
Applications 3
-
5769 264 0 Добрый день, готов взяться за интеграцию, логика понятна, делал уже такое
Добрый день, готов взяться за интеграцию, логика понятна, делал уже такое
-
4182 198 2 5 Доброго дня. Неодноразово реалізовував таку штуку. Якщо швидко виберете мене виконаю сьогодні, або завтра після 20:00
Current freelance projects in the category Desktop Apps
Add pauses of 10-30 seconds between sending emails.Hello! I am looking for an experienced 1C / BAS (BAF) programmer to promptly resolve a technical issue with email distribution.Problem essence: We use the accounting program BAF (Business Automation Framework), version 2.0. Once a month, there is a need to send about 300 emails… Web Programming, Desktop Apps ∙ 4 days 23 hours back ∙ 10 proposals |
Reverse engineering of console utilities for querying SSD controllers (Flash ID)1. Purpose of the work Extraction of the application programming interface (API) for interaction with SSD/NVMe controllers from the provided set of console utilities (Phison, Silicon Motion, Realtek, Maxiotek, Marvell, JMicron, etc.). The result should be working code in C/C++… C & C++, Desktop Apps ∙ 5 days 11 hours back ∙ 5 proposals |
Modification in the emulator's operation
45 USD
Hello. I downloaded the Gaminator CF Final slot machine emulator from the Internet. I really liked it, but there are some issues. There is an admin panel, but it opens freely and cannot be closed at all. It only closes along with the application. Also, the data does not save… Desktop Apps ∙ 13 days 1 hour back ∙ 10 proposals |