leafleafleafDocy banner shape 01Docy banner shape 02Man illustrationFlower illustration

Создание чат-бота

Время чтения: 1 мин. 193 просмотров

Эта статья предназначена для разработчиков и технических специалистов, которые хотят создать и настроить чат-бота в Битрикс24.

Создание чат-бота в Битрикс24

Для создания чат-бота в Битрикс24 перейти в раздел Разработчикам -> Добавить чат-бота и выбрать пункт Передавать боту сообщения из чата.

chatbot
chatbot2

* где:

  •  Название бота – имя бота, которое будет отображаться в чате;
  • 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.

Изменить владельца каталога 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.

Настройка чат-бота

Открыть файл обработчик handler.php:

nano /var/www/html/handler.php

nano /home/bitrix/www/local/examplebot/handler.php

Добавить следующий код:

				
					<?php
/**
 * Чат-бот для bitrix24
 */
 
$appsConfig     = array();
$configFileName = '/config_' . trim(str_replace('.', '_', $_REQUEST['auth']['domain'])) . '.php';
if (file_exists(__DIR__ . $configFileName)) {
		include_once __DIR__ . $configFileName;
}
// receive event "new message for bot"
if ($_REQUEST['event'] == 'ONIMBOTMESSAGEADD') {
	// check the event - register this application or not
	if (!isset($appsConfig['TOKEN']) or empty($appsConfig['TOKEN'])) {
		return false;
	}
   
	// Функционал
	$arReport = "Какой-то функционал бота";
	//
   
	// send answer message
	$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"   => $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

Добавить следующий код:

				
					<?php
$appsConfig = array (
  'TOKEN' => 'YOUR_TOKEN'
);
?>

				
			

* гдеYOUR_TOKEN – ваш токен чат-бота, сгенерированный на этапе создания бота, найти можно в настройках бота в Битрикс24 Разработчикам -> Интеграции -> Название бота -> Редактировать -> Вебхук для вызова REST API.

bot_token_image

В примере токеном будет 138/4hkktahqi4asczlm.

Leave a Comment

Поделиться этой страницей

Создание чат-бота

Или скопируйте ссылку

СОДЕРЖИМОЕ