Задача — создание лида через 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';
}
}
}

При передаче скрипту 2-х параметров ASSIGNED_BY_ID (ID ответственного) и PHONE (номер телефона), будет сначала произведен поиск по базе портала Bitrix24 контакта с указанным номером телефона, если контакт найден, буде создан Лид со статусом «Повторный Лид». Если же контакт по номеру не был найден, создается Лид со статусом «Новый», с указаниям только контактный номер телефона. Ответственный при этом будет пользователь с указанным ID.
Перемещаем скрипт себе на любой WEB-сервер (в моем случае он на Linux), и проверяем работоспособность.
Пример:
add_lid.php?ASSIGNED_BY_ID=36&PHONE=0666666666 (будет создан «Повторный Лид», если этот номер уже есть в базе Bitrix24)
add_lid.php?ASSIGNED_BY_ID=36&PHONE=666666666 (будет создан «Новый Лид»)



Интересные ссылки

Похожие статьи:

Доступ к Slave boards Openvox
Для того, чтобы выполнить запрос из консоли Asterisk (asterisk -rx ""), который установлен на шлюз, или через Web-интерфейс (Дополнительно→Asterisk CLI) то будет доступен только Master модуль. Чтобы работать со Slave модулями, нужно поднимать дополнительное соединение. Как же работает Web-интерфейс с Slave модулями? Так и работает! ...
Мониторинг уровня сигнала SIM-карт в Openvox через Zabbix
При переходе по ссылке http://IP_OPENVOX/service?action=get_gsminfo, или http://IP_OPENVOX/X/service?action=get_gsminfo (где X - номер модуля, больше 1), можно увидеть в json-формате статус портов (span-нов). Если Web-сервер на Openvox, для авторизации использует метод Authorization: Basic, то мониторить статус портов (span-нов), можно средствами zabbix. Но на некоторых (более новых) Openvox-шлюзах ...
Web CallBack FreePBX
Задача Создать кнопку "Перезвоните мне" на сайте, с максимальной интеграцией во FreePBX. Решение Для примера возьмем статью https://asterisk-pbx.ru/wiki/artikle/asterisk_web_callback. Принцип работы этой реализации заключается в том, что php скрипт генерирует (Originate) вызов. Первым делом отправляет вызов по каналу Channel. После того, как соединение установлено (вызов принят оператором), осуществляется ...
«Умная» пересылка входящих СМС сообщений в OpenVox
Берем за пример статью Пересылка СМС с OpenVox в Telegram, здесь мы получаем сообщения с Opnevox, отсекаем только те сообщения, которые приходят на определённый порт, и отправляем сообщение в Telegram. В этой статье опишу как "умно" сортировать входящие СМС сообщения, и направлять их на определённые сервисы ...
Отправка сообщений в Telegram
Здесь описаны возможные способы отправки сообщений в Telegram Windows CMD Для удобства отправки с командной строки, написал консольную программу на языке Pascal. Среда разработки PascalABC.NET uses System.IO, System.Net; var i:integer; html : string; chat_id: string; {:='111111111';} token: string; {:= '0000000:AAAAAAAAAAAAAAAAAAAAAA';} parse_mode: string; {:= 'html';} message: string:=''; {:='Сообщение';} url : string; begin token := ParamStr(1); chat_id := ParamStr(2); parse_mode := ...
Оценка работы оператора FreePBX+Asterisk
Задача: 1) Есть группа операторов Call-центра, нужно сделать возможность после разговора, оценивать звонок. 2) Максимальная интеграция с FreePBX. Решение: В Интернете много вариантов, все они ориентированы на чистый Asterisk. Примеры: https://wiki.merionet.ru/ip-telephoniya/55/ocenka-raboty-operatora-posle-zvonka-na-asterisk/ https://habr.com/ru/post/147122/ http://asterisk-service.com/blog/asterisk-1/post/2-0-53 Моя же реализация заключается в том, что все настройки можно делать в Web-интерфейсе FreePBX. Реализация тестировалась и работает на: - версии Asterisk 1.8.10.1 - ...
Bitrix24 создание задачи через URL строку
Приведу пример url запроса, который создает новую задачу в облачной системе Bitrix24 (в коробочной версии этот функционал также работает, но начиная с версии Битрикс24 16.6.0). Для начала нужно создать новый входящий вебхук. Как создавать, я описал здесь: Bitrix24 cоздание лида через API. Права для вебхука ...
Интеграция звонков очереди Asterisk+FreePBX с Bitrix24
Задача Сделать интеграцию звонков с Bitrix24 всех агентов состоящих в очереди Asterisk. Максимальная интеграция с FreePBX. Решение За основу берем статью Оценка работы оператора FreePBX+Asterisk. Здесь мы при входящем звонке запускаем скрипт, который мониторит все события по созданному каналу. По этом же принципу мы и будем делать ...