1) Скачиваем и устаналиваем готового telegram бота на PHP. Очень быстро и просто с помощью composer: composer require longman/telegram-bot Код composer require longman/telegram-bot 2) Создадим бота. Отправьте сообщение /newbot контакту @botfather. Введите имя для вашего нового бота. После этого botfather запросит имя пользователя бота. Оно должно заканчиваться словом bot. Например: bitrixbot Botfather ответит, что бот успешно создан и даст ключ доступа. Примерно такой: 122719761:ABFUhD-t_b_V0pC_JsrE9z-bzONahVwryxc. Сохраните его. Используйте команду /help для доступа ко всем командам и справки по ним. 3)Настройка скрипта. Установим WebHook. Создадим скрипт вот с таким содержимым и откроем его в браузере: <?php $loader = require __DIR__.'/vendor/autoload.php'; $API_KEY = 'ключ_АПИ'; $BOT_NAME = 'имя_бота'; try { $telegram = new Longman\TelegramBot\Telegram($API_KEY, $BOT_NAME); echo $telegram->setWebHook('https://yourdomain/hook.php'); } catch (Longman\TelegramBot\Exception\TelegramException $e) { echo $e->getMessage(); } Код <?php $loader = require __DIR__.'/vendor/autoload.php'; $API_KEY = 'ключ_АПИ'; $BOT_NAME = 'имя_бота'; try { $telegram = new Longman\TelegramBot\Telegram($API_KEY, $BOT_NAME); echo $telegram->setWebHook('https://yourdomain/hook.php'); } catch (Longman\TelegramBot\Exception\TelegramException $e) { echo $e->getMessage(); } Теперь каждый раз, когда пользователь будет отправлять сообщение вашему боту, телеграм будет вызывать https://yourdomain/hook.php и получать ответ для пользователя. Содержимое файла hook.php: ?php $loader = require __DIR__.'/vendor/autoload.php'; $API_KEY = 'your_bot_api_key'; $BOT_NAME = 'namebot'; try { $telegram = new Longman\TelegramBot\Telegram($API_KEY,$BOT_NAME); $telegram->handle(); } catch (Longman\TelegramBot\Exception\TelegramException $e) { // echo $e->getMessage(); } Код ?php $loader = require __DIR__.'/vendor/autoload.php'; $API_KEY = 'your_bot_api_key'; $BOT_NAME = 'namebot'; try { $telegram = new Longman\TelegramBot\Telegram($API_KEY,$BOT_NAME); $telegram->handle(); } catch (Longman\TelegramBot\Exception\TelegramException $e) { // echo $e->getMessage(); } Все команды хранятся в папке Commands. Это достаточно простые классы с методом execute. перед вызовом $telegram->handle(); вы можете указать свой путь для хранения команд: $telegram->addCommandsPath('полный_путь_к_папке'); Код $telegram->addCommandsPath('полный_путь_к_папке'); Внутри команды подключайте пролог, подключайте нужные модули и спокойно работайте с данными битрикс. Набросал пример команды /order, которая выводит данные заказа: class OrderCommand extends Command { protected $name = 'order'; protected $description = 'Команда выводит данные по заказу'; protected $usage = '/order <номер_заказа>'; protected $version = '1.0.0'; protected $enabled = true; protected $public = true; public function execute() { $update = $this->getUpdate(); $message = $this->getMessage(); $chat_id = $message->getChat()->getId(); $text = $message->getText(true); $text = is_numeric($text) ? (int)$text : false; if($text){ $order = \CSaleOrder::GetByID($text); $reply = print_r($order, true); } else { $reply = 'Номер заказа указан не правильно. Использование: ' . $this->usage; } $data = array(); $data['chat_id'] = $chat_id; $data['text'] = $reply; $result = Request::sendMessage($data); return $result; } } Код class OrderCommand extends Command { protected $name = 'order'; protected $description = 'Команда выводит данные по заказу'; protected $usage = '/order <номер_заказа>'; protected $version = '1.0.0'; protected $enabled = true; protected $public = true; public function execute() { $update = $this->getUpdate(); $message = $this->getMessage(); $chat_id = $message->getChat()->getId(); $text = $message->getText(true); $text = is_numeric($text) ? (int)$text : false; if($text){ $order = \CSaleOrder::GetByID($text); $reply = print_r($order, true); } else { $reply = 'Номер заказа указан не правильно. Использование: ' . $this->usage; } $data = array(); $data['chat_id'] = $chat_id; $data['text'] = $reply; $result = Request::sendMessage($data); return $result; } }