03. Использование BA-TG-Sender.md
Отправка сообщений
BA_TelegramSender
Непосредственно отправку сообщения осуществляет класс BA_TelegramSender.
Простейший код для отправки:
$tgSender = new BA_TelegramSender();
$tgSender
->setBotToken($bot_token)
->sendMessage($chatID, $message)
->sendFiles($chatID, $uploadedFiles);
или
$tgSender = new BA_TelegramSender();
$tgSender->setBotToken($bot_token);
$tgSender->sendMessage($chatID, $message);
$tgSender->sendFiles($chatID, $uploadedFiles);
Переменные из примера
$bot_token - токен телеграм-бота
$chatID - идентификатор чата, куда нужно отправить сообщение. Целое число: положительное - если чат персональный, отрицательное - если чат групповой.
$message - текст сообщения (строковой тип);
$uploadedFiles - массив с данными о загруженных файлах. Аналогичные данным массива $_FILES, но к информации о файле добавлено ещё поле ‘file_path’ - полный путь до файла на сервере.
Рекомендация
BA_TelegramSender рекомендуется использовать в связке с классами:
- BA_FileUploader - выполнит всё, что связано с загрузкой файлов на сервер, в т.ч. - различные проверки. Составит перечень загруженных файлов в виде массива, который может быть использован в качестве второго параметра метода sendFiles.
- BA_KeyValue_combinator - соберёт данные полей формы обратной связи и поможет превратить текст сообщения в удобный мини-отчёт.
Подробнее о методах этого класса
Загрузка файлов
BA_FileUploader
Для того, чтобы отправить файлы в Телеграм, из нужно загрузить на сервер, поместить в заданный каталог, проверить на допустимый тип и размер, переименовать (как минимум - заменив пробелы дефисами) и возможно удалить после отправки. Всё это делает класс BA_FileUploader.
$uploader = new BA_FileUploader();
$uploader
->setFiles($_FILES)
->setUploadDir(__DIR__.DIRECTORY_SEPARATOR.'uploads')
->setRenameFiles('translit')
->uploadFiles();
$uploadedFiles = $uploader->getUploadedArray();
Методом setUploadDir задайте папку для загрузки файлов.
Внимание! Транслитерация только символов русского языка! Другие кириллические языки данный метод не поддерживает.
В любом случае пробелы в имени файла будут заменены дефисами.
Массив возвращённый методом $uploader->getUploadedArray() можно передать для отправки в метод $tgSender->sendFiles() вторым параметром.
Класс позволяет задать допустимые типы файлов и будет отсеивать не состоящие в списке разрешённых.
Метод clearUploads удаляет с сервера файлы загруженные в текущую сессию. Таким образом, после отправки файлов можно “подчистить за собой”, удалив уже не нужное содержимое папки с загрузками.
Подробнее о методах этого класса
Комбинатор данных
BA_KeyValue_combinator
Как правило, при использовании формы обратной связи (например - “заказать обратный звонок”), требуется отправить админу или менеджеру некое уведомление, содержащее отчёт о заявке и какие данные получены. Желательно - удобный для восприятия. Для этой цели создан класс BA_KeyValue_combinator.
С помощью метода setField нужно задать, как название поля должно отобразиться в тексте сообщения. Вместо типового “name” и “address”, можно указать например: “Имя пользователя” и “Обратный адрес”. Третьим (необязательным) параметром передаётся значение этого поля.
Так-же значения полей можно передать через методы setValue (по одному) и setValues - массивом.
Пример кода:
$combinator = new BA_KeyValue_combinator();
$combinator
->setField('name', 'Имя')
->setField('phone', 'Телефон')
->setValues($_POST)
->setSeparator(': ');
$strings = $combinator->combineAll();
В результате получаем массив строк вроде:
Имя: Иван Телефон: +7999*******
Подробнее о методах этого класса
Проверка полей и фильтрация значений
Следующие классы не имеют прямого отношения к отправке сообщений в Телеграм, но могут пригодиться при работе с формами обратной связи.
Фильтрация данных формы
BA_RequestDataFilter
Обычно данные форм нужно фильтровать от тегов, спецсимволов и начальных пробелов. С данной библиотекой это делается одной командой.
$post = BA_RequestDataFilter::filter($_POST);
В данном примере фильтруются все поля глобального массива POST.
Подробнее о методах этого класса
Проверка значений полей
BA_FieldChecker
Иногда веб-разработчики специально создают на форме скрытые поля, которые должны содержать строго определенные значения или наоборот - оставаться пустыми.
Для таких случаев предназначен класс BA_FieldChecker.
Метод addRequiredValue добавляет в список допустимое значение для соответствующего поля. В примере ниже поле “secret” должно быть пустым:
$fieldChecker->addRequiredValue('secret', '');
if ($fieldChecker->checkData($_POST)) {
}
Метод checkData возвращает true - если проверка пройдена и в заданных полях переданного массива присутствуют допустимые значения. Если хотя-бы в одном из полей значение не соответствует допустимому, метод возвращает false.
Подробнее о методах этого класса