Задача — создание лида через API запрос к облачному Bitrix24.

  1. Для решения этой задачи, будем использовать webhook. Для создания webhook переходи на портале Bitrix24 по пункту «Дополнения»→»Вебхуки»
  2. Нажимаем на кнопку «создать вебхук», из выпадающего списка выбираем «Входящий вебхук».
  3. На следующем окне нужно ввести имя вебхука и выбрать права доступа.
  4. После этого, нажать на кнопку «Сохранить».
  5. После сохранения вебхука, нам будет доступен токен доступа.
  6. Токен нам еще понадобится, запоминаем его.

Переходим к созданию программного кода

Во время написании back-end кода, будем использовать язык программирования PHP.
Для webhook, синтаксис GET запросса, выгляти так:

https://домен_Б24.bitrix24.{ru|com|de}/rest/ID_администратора_портала/токен/имя_метода.транспорт?параметры_метода

  • «транспорт» — необязательный параметр, который может иметь значения json или xml. По умолчанию — json.
  • Запрос может отправляться как методом GET, так и POST.
  • Значения параметров методов принимаются в кодировке UTF-8.

Пример:

https://mydomain.bitrix24.ua/rest/36/yi4qdsaaq3nyjq1r/user.get.json?ID=1

Создаем файл с именем add_lid.php, добавляем у него следующий текст:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
//функция отправки\получение запроса
function get_curl($queryUrl,$queryData){
    $curl = curl_init();
    curl_setopt_array($curl, array(
        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;
}
if ((isset($_GET['ASSIGNED_BY_ID']))&&(isset($_GET['PHONE']))) {
//id ответственного
$ASSIGNED_BY_ID=$_GET['ASSIGNED_BY_ID'];
//переменная искомого номера
$PHONE=$_GET['PHONE'];
//токен, получаемый при создании webhook
$token='yi4qdsaaq3nyjq1r';
//функция bitrix24 получения списка контактов.
$json_function='crm.contact.list';
// id пользователя с админ правами (в моем случае id, который создавал webhook)
$admin_id='36';
//ссылка bitrix портала
$url = 'https://mydomain.bitrix24.ua';
//создаем запрос для поиска контакта по номеру телефона в базе bitrix
$query = http_build_query(array( 
    'filter'=> array("PHONE" => $PHONE ),
    'select' => array( "ID", "NAME", "LAST_NAME" ),
));
//выполняем запрос, получаем ответ от bitrix
$res_curl = get_curl($url.'/rest/'.$admin_id.'/'.$token.'/'.$json_function.'.json',$query);
//изменяем имя вызываемого метода
$json_function='crm.lead.add';
//проверяем, что вернул нам портал
if (array_key_exists('result', $res_curl)){//Проверяем, что запрос выполнен, и ответ нам вернулся
    if(isset($res_curl['result']['0']['ID'])) { //если контакт с телефоном в базе найден, то:
    $query = http_build_query(array(//формируем тело запроса
        'fields' => array(
            "TITLE" => 'Лид с номером '.$PHONE, //указываем названия лида
            "NAME" => $res_curl['result']['0']['NAME'],//Устанавливаем имя лиду
            "LAST_NAME" => $res_curl['result']['0']['LAST_NAME'],//Устанавливаем фамилию лиду
            "STATUS_ID" => "NEW",//статус новый
            "OPENED" => "Y",//Флаг "Доступна для всех"
            "ASSIGNED_BY_ID" => $ASSIGNED_BY_ID,// указываем ответственного
            "CONTACT_ID" => $res_curl['result']['0']['ID'],// привязка к лиду контакта (устанавливается статус "повторный лид")
        ),
        'params' => array("REGISTER_SONET_EVENT" => "Y")//произвести регистрацию события добавления лида в живой ленте. Дополнительно будет отправлено уведомление ответственному за лид.
    ));
    $res_curl = get_curl($url.'/rest/'.$admin_id.'/'.$token.'/'.$json_function.'.json',$query);//отправляем тело запроса на выполнения
    }
else{//если контакта в поиске по номеру не было найдено, то:
    $query = http_build_query(array(
        'fields' => array(
            "TITLE" => 'Лид с номером '.$PHONE,
            "STATUS_ID" => "NEW",
            "OPENED" => "Y",
            "ASSIGNED_BY_ID" => $ASSIGNED_BY_ID,
            "PHONE" => array(array("VALUE" => $PHONE, "VALUE_TYPE" => "WORK" )),
        ),
        'params' => array("REGISTER_SONET_EVENT" => "Y")
    ));
    $res_curl = get_curl($url.'/rest/'.$admin_id.'/'.$token.'/'.$json_function.'.json',$query);
$url.'/rest/'.$admin_id.'/'.$token.'/'.$json_function.'.json';
}
}
}