API для мессенджеров
Сhat API предназначен для создания чат-ботов, интеграций messengers с бизнес-системами (CRM, ERP, сайтом).
Chat API уже используют для: переписки из CRM-систем, записи в салон красоты, отправки подробностей вакансии или чат-бота с промокодами.
- Возможность использования брендированных сообщений;
- Медиа-сообщения (изображения, файлы, местоположение, аудио, видео, кнопки, ссылки и т.д.);
- Рассылки без риска быть заблокированным.
успешной работы
в сфере автоматизации messengers
![]()
интеграций с различными платформами
ERP/CRM системами, чат-ботами
![]()
компаний и программистов
сотрудничают с нами



API для программистов
Надежное и масштабируемое решение
для автоматизации работ с мессенджерами
Простая документация и понятные инструкции позволят собрать чат-бота за пару часов или интеграцию на 100 000 сообщений в сутки на PHP, JavaScript, 1С, Python, Java, C# или даже VBA на базе официального API
![]()
Один миллиард+
стабильно обрабатываемых запросов пользователей
![]()
10+
сообщений в секунду
без задержек

Визуальный Конструктор ботов & Мульти-агент Чат
Создавайте продвинутые чат-боты или гибкие интеграции с помощью нашего масштабируемого API или используйте встроенные готовые решения для автоматизации общения

Быстрая и понятная
самостоятельная активация аккаунта
- Отправить шаблон
- Отправить сообщение
- Установить Webhook
- Управление профилем
Отправить шаблон (инициировать диалог)
Мессендежры могут ограничивать содержание текстов сообщений, с помощью которых можно начать разговор с клиентом или продолжить разговор через 24 часа после последнего сообщения клиента. Это сообщение должно быть заранее утвержденным шаблоном. За отправку шаблона взимается плата, так как это инициирует диалог. Если клиент ответил вам, вы можете общаться с ним бесплатно в течение 24 часов с момента получения ответа.
$data = [ 'phone' => '79995253422', // Receivers phone 'template' => 'template_name', // Template name 'namespace' => 'namespace_of_template', // Namespace of template 'language' => ['code' => 'en', 'policy' => 'deterministic'], // Language parameters ]; $json = json_encode($data); // Encode data to JSON // URL for request POST /message $token = '83763g87x'; $instanceId = '777'; $url = "https://api.chat-api.com/instance/sendTemplate?token="; // Make a POST request $options = stream_context_create(['http' => [ 'method' => 'POST', 'header' => 'Content-type: application/json', 'content' => $json ] ]); // Send a request $result = file_get_contents($url, false, $options);
var request = require('request'); //bash: npm install request // URL for request POST /message const token = '83763g87x'; const instanceId = '777'; const url = `https://api.chat-api.com/instance$/sendTemplate?token=$`; var data = < phone: '79995253422', // Receivers phone template: "template_name", namespace : "namespace_of_template", language: < code: "en", policy: "deterministic">>; // Send a request request(< url: url, method: "POST", json: data >);
// URL for request POST /message const token = '83763g87x'; const instanceId = '777'; const url = `https://api.chat-api.com/instance$/sendTemplate?token=$`; let data = < phone: '79995253422', // Receivers phone template: "template_name", namespace : "namespace_of_template", language: < code: "en", policy: "deterministic">>; // Send a request $.ajax(url, < data : JSON.stringify(data), contentType : 'application/json', type : 'POST' >);
curl \ -d '>' \ # Phone and template parameters -H "Content-Type: application/json" \ # Headers -X POST \ # Type = POST "https://api.chat-api.com/sendTemplate?token=83763g87x" # URL for request POST /message
Отправить сообщение
Если диалог был инициирован клиентом, то вы можете отвечать обычным сообщением. Этот диалог так же является оплачиваемым, если вы ответили клиенту. Вы можете общаться с ним бесплатно в течение 24 часов с момента ответа.
// URL для запроса GET /messages $token = '83763g87x'; $instanceId = '777'; $url = 'https://api.chat-api.com/instance'.$instanceId.'/messages?token='.$token; $result = file_get_contents($url); // Отправим запрос $data = json_decode($result, 1); // Разберем полученный JSON в массив foreach($data['messages'] as $message)< // Распечатаем каждое сообщение echo "Отправитель:".$message['author']."<br>"; echo "Сообщение: ".$message['body']."<br>"; >
var request = require('request');// npm install request var token = '83763g87x'; var instanceId = '777'; var url = `https://api.chat-api.com/instance$/messageы?token=$`; request(url, function (error, response, body) < // Выполним GET запрос на URL if (error) return console.error('HTTP Error', error); // Декодируем ответ var data = JSON.parse(body); // Для каждого сообщения for (var i = 0; i < data.messages.length; i++) < var message = data.messages[i]; console.log(message.author + ': ' + message.body); //Выведем его в консоль >>);
var token = '83763g87x'; var instanceId = '777'; var url = `https://api.chat-api.com/instance$/message?token=$`; $.get(url, function (data) < // Выполним GET запрос на URL for (var i = 0; i < data.messages.length; i++) < // Для каждого сообщения var message = data.messages[i]; console.log(message.author + ': ' + message.body); //Выведем его в консоль >>);
# Всего лишь GET запрос curl "https://api.chat-api.com/instance777/messages?token=83763g87x"
Установить Webhook
Получайте уведомления о личных сообщениях через входящие http запросы на ваш сервер.
// Сначала установите webhook согласно // документации например на http://ваш.сайт/incoming_message.php // Декодируем пришедший по webhook JSON $data = json_decode(file_get_contents('php://input'), true); foreach($data['messages'] as $message)< // Распечатаем каждое сообщение // Здесь уже обработайте каждое сообщение: // Добавьте в базу данных или сразу ответьте >
// Сначала установите webhook согласно // документации например на http://ваш.сайт/incoming_message.php // Подключим Express JS и Body Parser для того чтобы принять JSON POST var app = require('express')(); var bodyParser = require('body-parser'); app.use(bodyParser.json()); // Теперь напишем обработик для app.post('/got_messages', function (req, res) < var data = req.body; // Получили новые сообщения в body for (var i = 0; i < data.messages.length; i++) < // Для каждого сообщения var message = data.messages[i]; console.log(message.author + ': ' + message.body); //Выведем его в консоль >res.send('Ok'); //Ответим хоть что-нибудь, лишь бы код 200 был >); app.listen(80);
Управление профилем аккаунта
Вы можете просматривать и редактировать свой профиль. Однако если вы хотите изменить отображаемое имя аккаунта, существует несколько правил.
$data = [ 'address' => '79995253422', // Телефон получателя 'description' => 'Best Company', // Сообщение 'email' => '', // mail Организации 'vertical' => '' // Отрасль ]; $json = json_encode($data); // Закодируем данные в JSON // URL для запроса POST /message $token = '83763g87x'; $instanceId = '777'; $url = 'https://api.chat-api.com/instance'.$instanceId.'/me?token='.$token; // Сформируем контекст обычного POST-запроса $options = stream_context_create(['http' => [ 'method' => 'POST', 'header' => 'Content-type: application/json', 'content' => $json ] ]); // Отправим запрос $result = file_get_contents($url, false, $options);

Chat API позволяет эффективнее взаимодействовать с клиентами, автоматизировать обмен сообщениями,
а также интегрировать любые сервисы, настраивая messengers под ваш бизнес

Что говорят наши клиенты
Доверие тысячи разработчиков
Как создать простого бота для Телеграм на PHP
Здравствуйте, дорогие читатели. Раз вы здесь, то пришли вы сюда из поиска по фразе «бот для телеграм на пхп». И работающего бота вы сделать сможете, прочитав данную статью. Вопросы для чего вам бот в Телеграм, здесь не обсуждаются, хотя мы сами используем собственного публичного бота @novelsite_bot для информирования о нас и наших услугах и сборе заявок. А также у нас есть закрытый бот, который мы используем как информатор в CRM (уведомления, свои задачи) и как показала практика — это действительно удобно.

Создадим простого бота для мессенджера Telegram с использованием PHP. Данная статья создана исключительно в поучительных целях и не претендует на полноту или правильность подхода. Весь код бота очень простой и может быть освоен начинающими PHP-разработчиками.
Предупреждаю сразу профессионалов и перфекционистов от программирования — вам здесь делать нечего . Никаких фреймворков и гитхабов! Все будет очень просто и примитивно, но работать будет. И это главное. Всем счастья
Шаг 1: подготовка
Что нам понадобится:
- Веб-сервер с работающим PHP 5.6 и выше — не локальный веб-сервер, а веб-сервер на хостинге, что важно! Так как сервисы Telegram должны будут видеть вашего бота по внешней URL-ссылке;
- Веб-сервер должен работать через https — то есть на веб-сервере должен быть установлен давно (больше суток назад) зарегистрированный SSL-сертификат. Достаточно будет бесплатного Let’s Encrypt SSL-сертификата;
- Доступ к файлам на этом сервере, конечно же — иначе как мы что-то сделаем;
- Установленная кодовая страница UTF-8 на сервере по-умолчанию или добавьте в файл .htacces в корне сайта строку AddDefaultCharset utf-8;
- Аккаунт в мессенджере Telegram;
Шаг 2. Регистрация вашего бота в Телеграм
Да, да. Бот еще даже не создан, но перед этим его уже нужно зарегистрировать, чтобы получить уникальный идентификатор, чтобы в дальнейшем обращаться к BOT API Telegram.
- Для этого заходим в Телеграм в специального бота @BotFather и присоеденяемся к нему — кнопка Присоединится, при этом бот выдаст команду /start — это базовая команда любого бота;
- @BotFather вас поприветствует и можно посмотреть все команды, введя /help
- Создаем бота, введя /newbot
- И вводим имя бота и username, чтобы не заморачиваться — введите одинаково, но помните, что username вводится на латинице и в конце должно быть _bot, например:
username: verysimple_bot — подходит
username: verysimplebot — не подходит - Далее @BotFather вас поздравит и выдаст ключ или токен бота для HTTP API — по сути это строка из номера (ID) бота и набора случайных символов, примерно в таком виде:
1234567899:AAKJhkkjhkjhKhKhjkhkhk_kJhgkjhJhgjghjhG
Запомните свой токен — он нам понадобится дальше. - Далее можно задать картинку (аватар) бота, введя /setuserpic
— Можно использовать любую вашу картинку в формате JPG, PNG, загрузив её после этой команды. - Можно приступать к программированию.
Шаг 3. Создаем код бота
Будем делать прямо в корне сервера (не самый верный подход, можно создать папку bot, а в ней уже файл verysimple_bot.php). Для этого на сервере создадим файл verysimple_bot.php в котором и будет весь код бота. Не забываем, что весь код в файле verysimple_bot.php должен быть в кодировке UTF-8.
Для редактирования файлов кода и заброске их на сервер удобно использовать FAR Manager — в нем есть и подсветка синтаксиса и FTP/SFTP клиент для копирования файла на сервер.
Делаем заготовку бота, который сможет выдавать список команд и информацию о нас:
/** * Very simple chat bot @verysimple_bot by Novelsite.ru * 05.07.2021 */ header('Content-Type: text/html; charset=utf-8'); // на всякий случай досообщим PHP, что все в кодировке UTF-8 $site_dir = dirname(dirname(__FILE__)).'/'; // корень сайта $bot_token = '1234567899:AAKJhkkjhkjhKhKhjkhkhk_kJhgkjhJhgjghjhG'; // токен вашего бота $data = file_get_contents('php://input'); // весь ввод перенаправляем в $data $data = json_decode($data, true); // декодируем json-закодированные-текстовые данные в PHP-массив // Для отладки, добавим запись полученных декодированных данных в файл message.txt, // который можно смотреть и понимать, что происходит при запросе к боту // Позже, когда все будет работать закомментируйте эту строку: file_put_contents(__DIR__ . '/message.txt', print_r($data, true)); // Основной код: получаем сообщение, что юзер отправил боту и // заполняем переменные для дальнейшего использования if (!empty($data['message']['text'])) < $chat_id = $data['message']['from']['id']; $user_name = $data['message']['from']['username']; $first_name = $data['message']['from']['first_name']; $last_name = $data['message']['from']['last_name']; $text = trim($data['message']['text']); $text_array = explode(" ", $text); if ($text == '/help') < $text_return ; message_to_telegram($bot_token, $chat_id, $text_return); >elseif ($text == '/about') < $text_return ; message_to_telegram($bot_token, $chat_id, $text_return); >> // функция отправки сообщени в от бота в диалог с юзером function message_to_telegram($bot_token, $chat_id, $text, $reply_markup = '') < $ch = curl_init(); $ch_post = [ CURLOPT_URL =>'https://api.telegram.org/bot' . $bot_token . '/sendMessage', CURLOPT_POST => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_TIMEOUT => 10, CURLOPT_POSTFIELDS => [ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'text' => $text, 'reply_markup' => $reply_markup, ] ]; curl_setopt_array($ch, $ch_post); curl_exec($ch); >
Шаг 4. Делаем WebHook и конкретизируем код бота
-
Чтобы все заработало, нужно сособщить сервису Телеграм, что наш бот лежит там-то — используй его код для такого-то бота verysimple_bot.
Для этого нужно сформировать ссылку, которая называется WebHook и её мы и сообщим телеграму:
https://api.telegram.org/bot 1234567899:AAKJhkkjhkjhKhKhjkhkhk_kJhgkjhJhgjghjhG /setWebhook?url= https://www.mysite.ru/verysimple_bot.php
Не забываем где красное заменяем на свои данные!
Как сформируете эту ссылку — вставьте её в браузер и запустите!
- Пользователь в диалоге с ботом пишет запрос, например /help
- Telegram Bot API через WebHook, что мы установили, берет этот запрос и отправляет в код бота
- Мы в боте получаем его, анализируем, видим например, /help и через Telegram Bot API и
функцию message_to_telegram отправляем ответ — который появлется в диалоге как ответ бота.
Шаг 5. Добавим возможность делать заявки через бота
Заявкой будем считать сообщение или вопрос, которое можно будет отправить через нашего бота какому-то пользователю, назовем его менеджер компании. То есть нам нужно организовать такую цепочку:
- Пользователь запрашивает у бота «Оставить заявку», например набрав команду /order
- Бот входит в режим ожидания текста Заявки
- Если пользователь ввел текст и нажал Enter, только тогда отослать это сообщение заранее запрограммированному по менеджеру компании.
Получим идентификатор chat_id пользователя кому нужно отсылать заявки:
- Помните наш файл message.txt — вот он сейчас понадобится
- Присоединяемся к нашему боту тем пользователем, кому будем слать заявки (менеджер компании)
- Сразу открываем файл message.txt и смотрим блок: [chat]
$order_chat_id = '123456789'; //chat_id менеджера компании для заявок $bot_state = ''; // состояние бота, по-умолчанию пустое
Сохраняем состояние бота для каждого пользователя
Далее, важный момент: у нас любой присоединившийся пользователь сможет сделать заявку, и чтобы бот понимал, что находится в режиме ввода заявки именно с этим пользователем, мы должны сохранять и считывать состояния бота для каждого пользователя отдельно!
Напишем две функции: set_bot_state($chat_id, $data) и get_bot_state($chat_id) — которые сохраняют текущее состояние бота и получают соответсвенно, для нужного пользователя. Сохранять будем в подпапке /users на сервере, которую создадим предварительно не забыв дать права на запись. Состояния будут хранится все в тех же текстовых файлах с именами chat_id пользователей и содержать последнюю команду:
// сохранить состояние бота для пользователя function set_bot_state ($chat_id, $data) < file_put_contents(__DIR__ . '/users/'.$chat_id.'.txt', $data); >// получить текущее состояние бота для пользователя function get_bot_state ($chat_id) < if (file_exists(__DIR__ . '/users/'.$chat_id.'.txt')) < $data = file_get_contents(__DIR__ . '/users/'.$chat_id.'.txt'); return $data; >else < return ''; >>
Теперь дополним код бота, добавив запись и отлов состояния и отправив заявку менеджеру компании, если состояние отправки заявки.
/** * Very simple chat bot @verysimple_bot by Novelsite.ru * 05.07.2021 */ header('Content-Type: text/html; charset=utf-8'); // на всякий случай досообщим PHP, что все в кодировке UTF-8 $site_dir = dirname(dirname(__FILE__)).'/'; // корень сайта $bot_token = '1234567899:AAKJhkkjhkjhKhKhjkhkhk_kJhgkjhJhgjghjhG'; // токен вашего бота $data = file_get_contents('php://input'); // весь ввод перенаправляем в $data $data = json_decode($data, true); // декодируем json-закодированные-текстовые данные в PHP-массив $order_chat_id = '123456789'; //chat_id менеджера компании для заявок $bot_state = ''; // состояние бота, по-умолчанию пустое // Для отладки, добавим запись полученных декодированных данных в файл message.txt, // который можно смотреть и понимать, что происходит при запросе к боту // Позже, когда все будет работать закомментируйте эту строку: file_put_contents(__DIR__ . '/message.txt', print_r($data, true)); // Основной код: получаем сообщение, что юзер отправил боту и // заполняем переменные для дальнейшего использования if (!empty($data['message']['text'])) < $chat_id = $data['message']['from']['id']; $user_name = $data['message']['from']['username']; $first_name = $data['message']['from']['first_name']; $last_name = $data['message']['from']['last_name']; $text = trim($data['message']['text']); $text_array = explode(" ", $text); // получим текущее состояние бота, если оно есть $bot_state = get_bot_state ($chat_id); // если текущее состояние бота отправка заявки, то отправим заявку менеджеру компании на $order_chat_id if (substr($bot_state, 0, 6) == '/order') < $text_return ; message_to_telegram($bot_token, $order_chat_id, $text_return); set_bot_state ($chat_id, ''); // не забудем почистить состояние на пустоту, после отправки заявки >// если состояние бота пустое -- то обычные запросы else < // вывод информации Помощь if ($text == '/help') < $text_return ; message_to_telegram($bot_token, $chat_id, $text_return); set_bot_state ($chat_id, '/help'); >// вывод информации о нас elseif ($text == '/about') < $text_return ; message_to_telegram($bot_token, $chat_id, $text_return); set_bot_state ($chat_id, '/about'); >// переход в режим Заявки elseif ($text == '/order') < $text_return ; message_to_telegram($bot_token, $chat_id, $text_return); set_bot_state ($chat_id, '/order'); >> > // функция отправки сообщения от бота в диалог с юзером function message_to_telegram($bot_token, $chat_id, $text, $reply_markup = '') < $ch = curl_init(); $ch_post = [ CURLOPT_URL =>'https://api.telegram.org/bot' . $bot_token . '/sendMessage', CURLOPT_POST => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_TIMEOUT => 10, CURLOPT_POSTFIELDS => [ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'text' => $text, 'reply_markup' => $reply_markup, ] ]; curl_setopt_array($ch, $ch_post); curl_exec($ch); > // сохранить состояние бота для пользователя function set_bot_state ($chat_id, $data) < file_put_contents(__DIR__ . '/users/'.$chat_id.'.txt', $data); >// получить текущее состояние бота для пользователя function get_bot_state ($chat_id) < if (file_exists(__DIR__ . '/users/'.$chat_id.'.txt')) < $data = file_get_contents(__DIR__ . '/users/'.$chat_id.'.txt'); return $data; >else < return ''; >>
Шаг 6. Регистрация команд бота
Теперь, если у вас все работает и бот отзывается на все команды, можно будет зарегистрировать эти команды у отца ботов @BotFather
- Заходим к боту @BotFather
- Запрашиваем установку команд /setcommands
- Выбираем нашего бота
- Вбиваем команды (без слешей вначале):
help — список команд
about — о нас
order — оставить заявку - Все — теперь в вашем боте появится список команд, если нажать в диалоге /
Вот и все — простой бот работает! Всем спасибо, если дочитали и что-то заработало.

Николай Комарков
Как сделать чат на php
В качестве примера создадим чат-бота, который будет сообщать пользователю о его просроченных задачах. Наш чат-бот будет знать и обрабатывать только одну команду Что горит. По аналогии всегда можно расширить его функционал, чтобы получать прямо в чат нужные отчеты на основании любых данных в Битрикс24.
Пример простого чат-бота:
// receive event "new message for bot" if ($_REQUEST['event'] == 'ONIMBOTMESSAGEADD') < // check the event - register this application or not if (!isset($appsConfig[$_REQUEST['auth']['application_token']])) < return false; >// response time $arReport = getAnswer($_REQUEST['data']['PARAMS']['MESSAGE'], $_REQUEST['data']['PARAMS']['FROM_USER_ID']); $arReport['attach'][] = array("MESSAGE" => 'Как разберетесь с этими задачами, просто спросите еще раз [send=что горит]Что горит?[/send] и я дам новую сводку!'); // send answer message $result = restCommand('imbot.message.add', array( "DIALOG_ID" => $_REQUEST['data']['PARAMS']['DIALOG_ID'], "MESSAGE" => $arReport['title'] . "\n" . $arReport['report'] . "\n", "ATTACH" => array_merge( $arReport['attach'] ), ), $_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[$_REQUEST['auth']['application_token']])) < return false; >// send help message how to use chat-bot. For private chat and for group chat need send different instructions. $result = restCommand('imbot.message.add', array( 'DIALOG_ID' => $_REQUEST['data']['PARAMS']['DIALOG_ID'], 'MESSAGE' => 'Привет! Я Докладун, докладываю все как есть.', "ATTACH" => array( array('MESSAGE' => '[send=что горит]Что горит?[/send]'), ), ), $_REQUEST["auth"]); > // receive event "delete chat-bot" else < if ($_REQUEST['event'] == 'ONIMBOTDELETE') < // check the event - register this application or not if (!isset($appsConfig[$_REQUEST['auth']['application_token']])) < return false; >// unset application variables unset($appsConfig[$_REQUEST['auth']['application_token']]); // save params saveParams($appsConfig); > // receive event "Application install" else < if ($_REQUEST['event'] == 'ONAPPINSTALL') < // handler for events $handlerBackUrl = ($_SERVER['SERVER_PORT'] == 443 ? 'https' : 'http') . '://' . $_SERVER['SERVER_NAME'] . (in_array($_SERVER['SERVER_PORT'], array(80, 443)) ? '' : ':' . $_SERVER['SERVER_PORT']) . $_SERVER['SCRIPT_NAME']; // If your application supports different localizations // use $_REQUEST['data']['LANGUAGE_ID'] to load correct localization // register new bot $result = restCommand('imbot.register', array( 'CODE' =>'ReportBot', // строковой идентификатор бота, уникальный в рамках вашего приложения (обяз.) 'TYPE' => 'B', // Тип бота, B - бот, ответы поступают сразу, H - человек, ответы поступаю с задержкой от 2х до 10 секунд 'EVENT_MESSAGE_ADD' => $handlerBackUrl, // Ссылка на обработчик события отправки сообщения боту (обяз.) 'EVENT_WELCOME_MESSAGE' => $handlerBackUrl, // Ссылка на обработчик события открытия диалога с ботом или приглашения его в групповой чат (обяз.) 'EVENT_BOT_DELETE' => $handlerBackUrl, // Ссылка на обработчик события удаление бота со стороны клиента (обяз.) 'PROPERTIES' => array( // Личные данные чат-бота (обяз.) 'NAME' => 'Докладун', // Имя бота (обязательное одно из полей NAME или LAST_NAME) 'LAST_NAME' => '', // Фамилия бота (обязательное одно из полей NAME или LAST_NAME) 'COLOR' => 'AQUA', // Цвет бота для мобильного приложения RED, GREEN, MINT, LIGHT_BLUE, DARK_BLUE, PURPLE, AQUA, PINK, LIME, BROWN, AZURE, KHAKI, SAND, MARENGO, GRAY, GRAPHITE 'EMAIL' => 'no@mail.com', // Емейл для связи 'PERSONAL_BIRTHDAY' => '2016-03-23', // День рождения в формате YYYY-mm-dd 'WORK_POSITION' => 'Докладываю о делах', // Занимаемая должность, используется как описание бота 'PERSONAL_WWW' => '', // Ссылка на сайт 'PERSONAL_GENDER' => 'M', // Пол бота, допустимые значения M - мужской, F - женский, пусто если не требуется указывать 'PERSONAL_PHOTO' => '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', // Аватар бота - base64 ), ), $_REQUEST["auth"]); // save params $appsConfig[$_REQUEST['auth']['application_token']] = array( 'BOT_ID' => $result['result'], 'LANGUAGE_ID' => $_REQUEST['data']['LANGUAGE_ID'], ); saveParams($appsConfig); // write debug log // writeToLog($result, 'ReportBot register'); > > > > /** * Save application configuration. * * @param $params * * @return bool */ function saveParams($params) < $config = ""; $configFileName = '/config_' . trim(str_replace('.', '_', $_REQUEST['auth']['domain'])) . '.php'; file_put_contents(__DIR__ . $configFileName, $config); return true; > /** * 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($method, array $params = array(), array $auth = array()) < $queryUrl = 'https://' . $auth['domain'] . '/rest/' . $method; $queryData = http_build_query(array_merge($params, array('auth' =>$auth['access_token']))); // writeToLog(array('URL' => $queryUrl, 'PARAMS' => array_merge($params, array("auth" => $auth["access_token"]))), '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; > /** * Формируем отчет по команде * * @param string $text строка, которую отправил юзер * @param int $user идентификатор пользователя, который нам написал * * @return array */ function getAnswer($command = '', $user) < switch (strtolower($command)) < case 'что горит': $arResult = b24BadTasks($user); break; default: $arResult = array( 'title' =>'Туплю-с', 'report' => 'Не соображу, что вы хотите узнать. А может вообще не умею. ', ); > return $arResult; > function b24BadTasks ($user) < $tasks = restCommand('task.item.list', array( 'ORDER' =>array('DEADLINE' => 'desc'), 'FILTER' => array('RESPONSIBLE_ID' => $user, ' date("Y-m-d")), 'PARAMS' => array(), 'SELECT' => array() ), $_REQUEST["auth"]); if (count($tasks['result']) > 0) < $arTasks = array(); foreach ($tasks['result'] as $id =>$arTask) < $arTasks[] = array( 'LINK' =>array( 'NAME' => $arTask['TITLE'], 'LINK' => 'https://'.$_REQUEST['auth']['domain'].'/company/personal/user/'.$arTask['RESPONSIBLE_ID'].'/tasks/task/view/'.$arTask['ID'].'/' ) ); $arTasks[] = array( 'DELIMITER' => array( 'SIZE' => 400, 'COLOR' => '#c6c6c6' ) ); > $arReport = array( 'title' => 'Да, кое-какие задачи уже пролетели, например:', 'report' => '', 'attach' => $arTasks ); > else < $arReport = array( 'title' =>'Шикарно работаете!', 'report' => 'Нечем даже огорчить - ни одной просроченной задачи', ); > return $arReport; >
Сейчас для вас данный код выглядит большим и непонятным, но пройдя весь учебный курс, вы увидите, что на самом деле все достаточно просто.
Создание нового приложения чат-бота доступно как «для личного пользования», так и в кабинете для публикации всем пользователям Битрикс24 через Маркет.
Примечание: Для чат-ботов не является обязательным использование сертификата https, но крайне рекомендуется из-за возможной передачи конфиденциальных данных клиента. При этом само приложение должно быть в кодировке UTF-8.
Запуск чат-бота на своем портале
Вы уже сейчас можете взять код примера чат-бота, выложить на своем сервере и запустить чат-бота на своем портале, не публикуя его через Маркет. Для этого в Битрикс24 есть возможность устанавливать локальные приложения:
- В разделе левого меню Приложения 1 нужно нажать кнопку Добавить приложение 2 :

- Далее выбираем Другое 3 :

- И затем сценарий Локальное приложение 4 :

- Выбираем тип Серверное приложение. Указываем название бота, а называться он у нас будет «Докладун». Включаем опцию Использует только API и даем приложению права доступа:
— Веб-мессенджер (im) — без этого права невозможна передача сообщений пользователю,
— Создание и управление Чат-ботами (imbot) – без этих прав приложение не сможет зарегистрировать чат-бота,
— Задачи (task) и Задачи (расширенные права) (task_extended) – без этих прав приложение не сможет сформировать отчет по задачам, чтобы сообщить о них через чат-бота пользователю:
- Поскольку наш скрипт написан таким образом, что является обработчиком всех событий, то в форме приложения мы укажем обе ссылки на один и тот же URL.
- Если бот создаётся для коробочной версии Битрикс24, то есть не используется опция Использует только API, то нужно использовать тип приложения Статичное и обязательное поле Архив с вашим приложением (zip) для указания пути к файлу-инсталлеру.
Собственно, уже все — в общем чате появится сообщение о том, что к порталу присоединился новый пользователь: чатбот по имени «Докладун». Мы можем открыть с ним чат, нажать на ссылку «Что горит?» и получить свой список просроченных задач.
Примечание: Другой пример — ЭхоБот, с большим количеством функций и постоянно обновляемый можно скачать c сервиса GitHub здесь.
