V
V
Vyacheslav Zhgilev2021-08-26 23:37:52
Bitrix24
Vyacheslav Zhgilev, 2021-08-26 23:37:52

Site on WP + Contact Form 7 + Bitrix24 - the "list" type field is not transmitted?

Friends, hello everyone!

The value of the "list" type field from the site is not transferred to Bitrix24.
I pass the "list" type field to the Bitrix24 comment field.
There are no problems with the rest of the fields ...

Tell me, what's wrong?

Here is the code with comments:

//Начало кода интеграции Contact Form 7 с Битрикс24
//вызываем функцию для перехвата данных
add_action( 'wpcf7_mail_sent', 'your_wpcf7_mail_sent_function' );
function your_wpcf7_mail_sent_function( $contact_form ) {

//подключение к серверу CRM
define('CRM_HOST', '***.bitrix24.ru'); // Ваш домен CRM системы
define('CRM_PORT', '443'); // Порт сервера CRM. Установлен по умолчанию
define('CRM_PATH', '/crm/configs/import/lead.php'); // Путь к компоненту lead.rest

//авторизация в CRM
define('CRM_LOGIN', '***@yandex.ru'); // Логин пользователя Вашей CRM по управлению лидами
define('CRM_PASSWORD', '*******'); // Пароль пользователя Вашей CRM по управлению лидами

//перехват данных из Contact Form 7
$title = $contact_form->title;
$posted_data = $contact_form->posted_data;
if ('Контактная форма 1' == $title ): { //Вместо "Контактная форма 1" необходимо указать название Вашей контактной формы
$submission = WPCF7_Submission::get_instance();
$posted_data = $submission->get_posted_data();

//далее мы перехватывает введенные данные в Contact Form 7
$firstName = $posted_data['name']; //перехватываем поле Имя
$myphone = $posted_data['tel-780']; //перехватываем поле Телефон
$vidpomeshenia = $posted_data['vidpom']; //перехватываем поле Вид помещения

//сопостановление полей Битрикс24 с полученными данными из Contact Form 7
$postData = array(
'TITLE' => 'Заявка с сайта', // Установить значение свое значение
'NAME' => $firstName,
'PHONE_WORK' => $myphone,
'COMMENTS' => $vidpomeshenia

);

//передача данных из Contact Form 7 в Битрикс24
if (defined('CRM_AUTH')) {
$postData['AUTH'] = CRM_AUTH;
} else {
$postData['LOGIN'] = CRM_LOGIN;
$postData['PASSWORD'] = CRM_PASSWORD;
}

$fp = fsockopen("ssl://".CRM_HOST, CRM_PORT, $errno, $errstr, 30);
if ($fp) {
$strPostData = '';
foreach ($postData as $key => $value)
$strPostData .= ($strPostData == '' ? '' : '&').$key.'='.urlencode($value);

$str = "POST ".CRM_PATH." HTTP/1.0\r\n";
$str .= "Host: ".CRM_HOST."\r\n";
$str .= "Content-Type: application/x-www-form-urlencoded\r\n";
$str .= "Content-Length: ".strlen($strPostData)."\r\n";
$str .= "Connection: close\r\n\r\n";

$str .= $strPostData;

fwrite($fp, $str);

$result = '';
while (!feof($fp))
{
$result .= fgets($fp, 128);
}
fclose($fp);

$response = explode("\r\n\r\n", $result);

$output = '
.print_r($response[1], 1).
';
} else {
echo 'Connection Failed! '.$errstr.' ('.$errno.')';}
};

Answer the question

In order to leave comments, you need to log in

2 answer(s)
V
Vyacheslav Zhgilev, 2021-08-27
@jazzz

Everything turned out to be much simpler, it was necessary to use $_POST, example:

//далее мы перехватывает введенные данные в Contact Form 7
$firstName = $posted_data['name']; //перехватываем поле Имя
$myphone = $posted_data['tel-780']; //перехватываем поле Телефон
$vidpomeshenia = $_POST['vidpom']; //перехватываем поле Вид помещения

R
Roman, 2021-08-27
@Ramapriya

Good afternoon.

  1. Use webhooks - if someone intercepts your authorization data, they will be able to get into the portal. The webhook will not provide such an opportunity - it will return in json format only the information for which it was given rights + user rights on the portal (i.e. through the webhook it will not be possible to delete all leads if the user does not have the rights to delete).
  2. Use the CRest class - it greatly simplifies data transfer to B24
  3. To write a value to a list field, you need to get the id of the value (you can view the list of lead fields and values ​​using the crm.lead.userfield.list method ) and pass this id in the parameters

Sample code:
// settings.php
define('C_REST_WEB_HOOK_URL','https://rest-api.bitrix24.com/rest/1/doutwqkjxgc3mgc1/');//url on creat Webhook

//ваш код
$postData = [
'TITLE' => 'Заявка с сайта', // Установить значение свое значение
'NAME' => $firstName,
'PHONE_WORK' => $myphone,
'COMMENTS' => $userFieldEnumValueId // id значения списочного поля
];

$lead = CRest::call('crm.lead.add', ['fields' => $postData]);

return $lead['result'] ?? [$lead['error'], $lead['error_description'];

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question