Создание чат-бота
Эта статья предназначена для разработчиков и технических специалистов, которые хотят создать и настроить чат-бота в Битрикс24.
Создание чат-бота в Битрикс24
Для создания чат-бота в Битрикс24 перейти в раздел Разработчикам -> Добавить чат-бота и выбрать пункт Передавать боту сообщения из чата.
* где:
- Название бота – имя бота, которое будет отображаться в чате;
- URL обработчик бота – url адрес до скрипта логики работы бота;
- Тип бота – оставить по умолчанию;
- Исходящий вебхук – определяет отправлять запрос на указанный url при вызове определённого события в системе;
- Настройка прав доступа – чтобы бот мог отправлять сообщения в чат, нужно дать права Создание и управление Чат-ботами (imbot).
Установка чат-бота на сервер
Установка чат-бота предполагает размещение файлов, описывающих логику работы бота, на сервере, куда будут отправляться запросы. Чат-бот может быть установлен как на сервере Битрикс24 в случае коробочной версии, так и на отдельной выделенной машине в случае облачной версии.
Установка чат-бота на выделенный сервер
Предполагается наличие установленного Apache и PHP на сервере, а также потребуется расширение curl для PHP.
Удалить содержимое каталога html:
rm /var/www/html/*
Создать файл обработчика бота:
touch /var/www/html/handler.php
Создать файл конфигурации бота:
touch /var/www/html/config_crm_example_ru.php
* где, config_crm_example_ru.php – название файла, должно содержать домен вашего Битрикс24, например, если адрес вашего Битрикс24 crm.example.ru
.
URL адрес обработчика чат-бота в Битрикс24 будет следующим:
http://SERVER_ADDRESS/handler.php
Изменить владельца каталога html:
chown www-data:www-data /var/www/html
Установка чат-бота на сервер Битрикс24
Предполагается, что Битрикс24 был установлен и настроен с помощью веб-окружения (BitrixEnv).
Создать файл обработчика бота:
mkdir /home/bitrix/www/local/examplebot
touch /home/bitrix/www/local/examplebot/handler.php
Создать файл конфигурации бота:
touch /home/bitrix/www/local/examplebot/config_crm_example_ru.php
* где, config_crm_example_ru.php – название файла, должно содержать домен вашего Битрикс24, например, если адрес вашего Битрикс24 crm.example.ru
.
URL адрес обработчика чат-бота в Битрикс24 будет следующим:
https://BITRIX_ADDRESS/local/examplebot/handler.php
Настройка чат-бота
Открыть файл обработчик handler.php:
nano /var/www/html/handler.php
nano /home/bitrix/www/local/examplebot/handler.php
Добавить следующий код:
array_shift($_REQUEST['data']['BOT'])['BOT_ID'],
'CLIENT_ID' => $_REQUEST['auth']['application_token'],
"DIALOG_ID" => $_REQUEST['data']['PARAMS']['DIALOG_ID'],
"MESSAGE" => $arReport . "\n"
),
$_REQUEST['auth']);
} // receive event "open private dialog with bot" or "join bot to group chat"
else {
if ($_REQUEST['event'] == 'ONIMBOTJOINCHAT') {
// check the event - register this application or not
if (!isset($appsConfig['TOKEN']) or empty($appsConfig['TOKEN'])) {
return false;
}
// send help message how to use chat-bot. For private chat and for group chat need send different instructions.
$result = restCommand($appsConfig['TOKEN'], 'imbot.message.add', array(
'BOT_ID' => array_shift($_REQUEST['data']['BOT'])['BOT_ID'],
'CLIENT_ID' => $_REQUEST['auth']['application_token'],
'DIALOG_ID' => $_REQUEST['data']['PARAMS']['DIALOG_ID'],
'MESSAGE' => 'Привет! Чем могу помочь?'
),
$_REQUEST['auth']);
}
}
/**
* Send rest query to Bitrix24.
*
* @param $method - Rest method, ex: methods
* @param array $params - Method params, ex: array()
* @param array $auth - Authorize data, ex: array('domain' => 'https://test.bitrix24.com', 'access_token' => '7inpwszbuu8vnwr5jmabqa467rqur7u6')
*
* @return mixed
*/
function restCommand($token, $method, array $params = array(), array $auth = array()) {
$queryUrl = 'https://' . $auth['domain'] . '/rest/' . $method;
$queryData = http_build_query($params);
#writeToLog(array('URL' => $queryUrl, 'PARAMS' => $params)), 'ReportBot send data');
$curl = curl_init();
curl_setopt_array($curl, array(
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;
}
/**
* 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(__DIR__ . '/imbot.log', $log, FILE_APPEND);
return true;
}
За основу взять код из документации Битрикса.
Открыть файл конфигурации config_domain_ru.php:
nano /var/www/html/config_crm_example_ru.php
nano /home/bitrix/www/local/examplebot/config_crm_example_ru.php
Добавить следующий код:
'YOUR_TOKEN'
);
?>
* где, YOUR_TOKEN – ваш токен чат-бота, сгенерированный на этапе создания бота, найти можно в настройках бота в Битрикс24 Разработчикам -> Интеграции -> Название бота -> Редактировать -> Вебхук для вызова REST API.
В примере токеном будет 138/4hkktahqi4asczlm.