top
Главная страница

Поддержка24

Вебхуки

Рейтинг:

Ни одна современная компания не существует в отрыве от внешних сервисов. Наиболее простой путь создать связь - это интегрировать ваш портал. Но как это сделать? Безусловно, существует REST API, который позволяет добавлять функционал в облачный Битрикс24. Однако работа с REST - непростая задача, требующая солидной квалификации от разработчика.

Организуйте быструю связь вашего портала с внешним сервисом или отдельно взятой формой без многоэтажного программирования. Транслируйте отчеты из вашей складской системы прямо в Живую ленту с помощью Вебхуков!

WebHooks - упрощенный вариант rest-событий и rest-команд, не требующий написания приложения.
К сожалению, даже талантливейшей команде разработчиков Битрикс24 пока не под силу придумать способ, чтобы программировать могли и домохозяйки. Хотя вебхуки это и более простой вариант, но доверить работу с ними лучше человеку с определенными знаниями.

Чтобы создать вебхук, перейдите на страницу Приложения > Вебхуки.

Страница_вебхуки.png

Создание Входящего вебхука

  1. Нажмите на кнопку Добавить вебхук в правом верхнем углу и выберите Входящий вебхук.
  2. В открывшейся форме заполните поля:
    • Название и Описание - произвольные данные.
    • Права доступа - укажите, к каким модулям вебхук должен иметь доступ.
  3. После сохранения появится код для авторизации вебхука:

    Внимание! Данный код является конфиденциальной информацией. Его необходимо держать в секрете.
  4. Вместе с кодом будет представлен образец URL, который нужно использовать при отправке данных из сторонней системы в Битрикс24:
    https://********.bitrix24.ru/rest/1/83te1pjdphsa9u15/profile/
    где:
    • ******** - имя вашего портала;
    • /rest/ - указание системе на то, что данный адрес относится в вебхукам;
    • /1/ - идентификатор пользователя, создавшего вебхук. Под правами этого пользователя будет работать этот вебхук.
    • /83te1pjdphsa9u15/ - секретный код;
    • /profile/ - метод REST, который вы хотите выполнить, обращаясь к вебхуку. Разработчик должен сам подобрать метод из REST API в зависимости от целей создания вебхука.
  5. Обратиться из сторонней системы по указанному адресу на Битрикс24.

    Рассмотрим пример такого обращения с задачей создать лид из формы. Надо сформировать URL в переменной $queryUrl, сформировать параметры для создания лида в переменной $queryData и после подготовительных шагов как раз и обратиться к Битрикс24 при помощи функции curl_exec. Полученный в виде JSON результат обработан:

    Пример кода обращения к Битрикс24
    <? /** * Write data to log file. * * @param mixed $data * @param string $title * * @return bool */ function writeToLog($data, $title = '') { $log = "\n------------------------\n"; $log .= date("Y.m.d G:i:s") . "\n"; $log .= (strlen($title) > 0 ? $title : 'DEBUG') . "\n"; $log .= print_r($data, 1); $log .= "\n------------------------\n"; file_put_contents(getcwd() . '/hook.log', $log, FILE_APPEND); return true; } $defaults = array('first_name' => '', 'last_name' => '', 'phone' => '', 'email' => ''); if (array_key_exists('saved', $_REQUEST)) { $defaults = $_REQUEST; writeToLog($_REQUEST, 'webform'); $queryUrl = 'https://restapi.bitrix24.ru/rest/1/31uhq2q855fk1foj/crm.lead.add.json'; $queryData = http_build_query(array( 'fields' => array( "TITLE" => $_REQUEST['first_name'].' '.$_REQUEST['last_name'], "NAME" => $_REQUEST['first_name'], "LAST_NAME" => $_REQUEST['last_name'], "STATUS_ID" => "NEW", "OPENED" => "Y", "ASSIGNED_BY_ID" => 1, "PHONE" => array(array("VALUE" => $_REQUEST['phone'], "VALUE_TYPE" => "WORK" )), "EMAIL" => array(array("VALUE" => $_REQUEST['email'], "VALUE_TYPE" => "WORK" )), ), 'params' => array("REGISTER_SONET_EVENT" => "Y") )); $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); writeToLog($result, 'webform result'); if (array_key_exists('error', $result)) echo "Ошибка при сохранении лида: ".$result['error_description']."
    "; } ?> <form method="post" action=""> Имя: <input type="text" name="first_name" size="15" value="<?=$defaults['first_name']?>"><br/> Фамилия: <input type="text" name="last_name" size="15" value="<?=$defaults['last_name']?>"><br/> Телефон: <input type="phone" name="phone" value="<?=$defaults['phone']?>"<
    E-mail: <input type="email" name="email" value="<?=$defaults['email']?>"><br/> <input type="hidden" name="saved" value="yes"> <input type="submit" value="Отправить"> </form>
    Внимание! Пример условный, в режиме copy/paste использовать не рекомендуется.

Создание исходящего вебхука

  1. В выпадающем меню Добавить вебхук выберите Исходящий вебхук.
  2. В открывшейся форме заполните поля:
    • Адрес обработчика - страница на стороннем ресурсе, куда будет обращаться вебхук.
    • Название и Описание - произвольные данные.
    • Тип события - нужно указать событие, на которое будет инициализироваться вебхук.
  3. После сохранения вебхука будет выведен Код авторизации в виде строки из случайных знаков. Этот код позволит внутри обработчика проверить, действительно ли обработчик вызван вашим Битрикс24.
  4. На странице обработчика размещаем код:
    Пример кода обработчика для события ONCRMDEALUPDATE
    <? print_r($_REQUEST); writeToLog($_REQUEST, 'incoming'); /** * Write data to log file. * * @param mixed $data * @param string $title * * @return bool */ function writeToLog($data, $title = '') { $log = "\n------------------------\n"; $log .= date("Y.m.d G:i:s") . "\n"; $log .= (strlen($title) > 0 ? $title : 'DEBUG') . "\n"; $log .= print_r($data, 1); $log .= "\n------------------------\n"; file_put_contents(getcwd() . '/hook.log', $log, FILE_APPEND); return true; } 

    Для проверки откройте любую сделку на редактирование и сохраните изменения, в логе отобразится примерно такая история:

    2017.01.17 12:58:29 incoming Array ( [event] => ONCRMDEALUPDATE [data] => Array ( [FIELDS] => Array ( [ID] => 662 ) ) [ts] => ххх [auth] => Array ( [domain] => ххх.bitrix24.ru [client_endpoint] => https://ххх.bitrix24.ru/rest/
    	[server_endpoint] => https://oauth.bitrix.info/rest/
    	[member_id] => ххх [application_token] => ххх ) )

Спасибо, помогло! Спасибо :) Не помогло Очень жаль :(
Уточните, пожалуйста, почему:
Это не то, что я ищу
Очень сложно и непонятно

Помогите мне, пожалуйста, улучшить этот ответ. Напишите, какой информации вам не хватает, я постараюсь дополнить.

Александр Рабенок

Не нашли ответ на свой вопрос?

ЗАДАЙТЕ ВОПРОС КОМАНДЕ ПОДДЕРЖКИ24