Получить сообщение по id telegram bot

Обновлено: 05.07.2024

Falcon Space - это платформа для создания веб-решений с управлением через SQL. Все создается и управляется на SQL. Телеграм бот управляется полностью 1 хранимой процедурой на SQL!

2. В web.config / AppSettings настраиваем следующие параметры:

3. В таблице as_users добавляем 2 поля:

4. Создаем хранимую процедуру такого вида (в разделе Системный SQL / Telegram Bot):

  • SELECT 1 - Result и Msg
  • SELECT 2 - набор команд для telegram (актуально если SELECT1.Result=1). Type, Text, ChatID, replyMessageID, DisableNotification, Channel, ButtonsJSON, parseMode

5. Проверяем, что работает бот. Подписываемся на него в telegram и выполняем /start (при этом мы получим отклик Привет. ). Если нет отклика, значит бот не запущен. Попробуйте его перезапустить в разделе Системный SQL (Старт телеграм бот).

6. Чтобы подписать пользователя на некие действия, необходимо сначала чтобы он указал свой телеграм в профиле (поле as_users.telegram). Затем он должен сделать любую команду в телеграме, отправив боту к примеру /start

Хранение привязки чата к пользователю системы

Использование бота

  • В телеграм находим бота (например, наш бот FalconSpaceBot)
  • Пишем ему /start для инициализации (осуществляется привязка вашего пользователя к чату).
  • Выполняем различные команды, например /getupdates - если команда прописана в чате, то она будет обработана и выдан ответ.

Включение/выключение бота

Бот включается при запуске всего веб приложения (Global.asax/app_start).

Чтобы его выключить в вручную можно из-под админа использовать команду (перейти на URL) /Controls/Stuff/StopTelegramBot

Для включения - /Controls/Stuff/StartTelegramBot

Детали реализации бота

Howto по Telegram боту

Не работает бот Telegram. Что делать?

  1. Проверьте что прокси прописан в web.config
  2. Проверьте что прокси не просрочен
  3. Проверьте что бот в целом отвечает.на ваши команды в телеграм (если не отвечает)
  4. Попробуйте запустить заново бота /Controls/Stuff/StartTelegramBot (либо перезапустите пул приложения в IIS)
  5. Проверьте as_trace (коды TG и Exception). В нем пишутся ошибки и инициализация и завершение потока бота.
  6. Сделать as_print в процедуре и посмотреть попадает ли туда бот.
  7. Бот может остановиться если вы запущена локальная отладка (в этом случае возникает конфликт обновлений, поэтому необходимо отключать бота при локальном запуске - в web.config убирать токен).
  8. Бот может падать если выключается автоматически пул IIS. Необходимо его настроить так, чтобы он не отключался при простое.

Для этого используем Внешнее действие (в формах и др элементах) с кодом telegram.

У пользователя должны быть корректно проставлены поля telegram (заносится сначала вручную для пользователя его логин) и telegramChatID(проставляется автоматически при первом обращении юзера к боту через Телеграм) в as_users. Также можно указать имя в виде '@username' - тогда отправка будет по логину телеграма (если он есть в tg_settings).

buttonsJSON задает настройки кнопок.

ВАЖНО! Необходима реализация процедуры tg_getChatID:

Для этого используем символ "-" и chatID в параметре to

Примечание: бот необязательно должен быть администратором группы.

Для этого используем Внешнее действие (в формах и др элементах) с кодом telegram.

Бот должен быть добавлен администратором в канал при этом.

ВАЖНО! Необходима реализация процедуры tg_getChatID

Как сделать рассылку пользователям при сохранении формы.

Как работать с кнопками Телеграм

Кнопки могут быть либо Inline (в чате при ответе), либо Reply(внизу под чатом).

Кнопки передаются в виде JSON в параметре SELECT 2 ButtonsJSON:

Для Inline кнопок указываем:

  • Text - название кнопки.
  • CallbackData - данные для передачи в процедуру
  • Url - если указан, то кнопка будет открывать указанный адрес. ВАЖНО! Вводите корректный URL, иначе будет исключение и вся исходная команда не будет работать.

Для reply кнопок команда используется в поле text. Также для них есть 2 настройки:

  • ResizeKeyboard - Requests clients to resize the keyboard.
  • OneTimeKeyboard - Requests clients to hide the keyboard as soon as it’s been used.

В процедуру для инлайн кнопок будет передаваться как команда поле callbackData, а для reply кнопок - поле text.

Дополнительная информация о кнопках Телеграм:

Выбираем символ, на страницу символа берем его код UTF16 LE

В SQL используем этот код следующим образом:

Для этого используется параметр paseMode='html' (это значение используется по умолчанию).

Есть альтернативные способы разметки - default, markdown, markdownv2.

Как быстро подписать пользователя на телеграм бота

Пользователь переходит на бота и нажимает там кнопку Запустить. При этом ваша команда /start должна учитывать что в этом случае придет она как /start 1

Т.е. используем left () для определения команды start, а не точное соответствие.

Многоступенчатые команды в боте

Для этого используются следующие поля в tg_settings:

  1. currentCommand - текущая рабочая команда (в рамках которой пользователь вводит данные).
  2. currentCommandStep - текущий шаг в команде (для определения какой текст вывести в рамках команды).
  3. currentCommandData - здесь накапливаются данные по выполнению команды.

Пример кода такой команды:

В примере указан полный код процедуры бота с обработкой start, меню и бизнес-логикой ступенчатой команды. Также в коде есть пример как использовать Эмоджи в боте.

Falcon Space - функциальная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space

SQL-инструмент для создания личных кабинетов на сайте

Веб-платформа для создания личных кабинетов

Платформа Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки

Это быстрое внесение изменений

по ходу эксплуатации программы

Это современный интерфейс

полная адаптация под мобильные устройства

Веб-приложения на MS SQL. Партнерская программа для разработчиков и веб-студий

Вы можете разрабатывать самостоятельно или сотрудничать с нами в плане веб-разработки на платформе Falcon Space, используя только SQL и HTML.

Всем доброго времени суток, пишу бота на пхп в телеграмме, и столкнулся с задачей, нужно взять данные из прошлого смс, и поработать с ними. Но вот незадача, изучив документацию, и погуглив я понял, что есть метод копирования + отправки смс, ответа на смс, но именно получения смс по id в апи нет.

Отсюда вопрос, подскажите пожалуйста может я просто не увидел и это можно сделать простыми манипуляциями посредством апи?

А если нет, то перспектива записывать все смс в файл или бд меня не очень радует.

Может быть кто-то сталкивался с подобным вопросом?

P S Информация из смс мне нужна, чтобы определять в каком месте человек отправляет смс, для заполнения информации в бд, возможно это не самый лучший метод, но вижу суть так:
нажатая команда -> отправленное смс ботом -> отправленный ответ боту пользователем -> проверяем смс от бота, совпадает? - отлично - записываем данные что ввел юзер, и пишем ему что все хорошо

Отправка файла телеграмм ботом
Здравствуйте, можете подсказать, как сделать отправку телеграмм ботом архива?

Основной функционал мессенджера не позволяет узнавать идентификатор чата или свой, разработчиками не предусмотрена эта опция.

Получить данные от бота в телеграмм
Всем привет, пытаюсь получить данные от бота телеграмм Для начала зарегистрировал бота тут.

Не могу получить ответ от телеграмм бота
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters updater =.

Как вычислить айпи адрес письма, отправленного с gmail
Добрый день! Кругом и всюду эти любвеобильные красивые овдовевшие миллиардеры из Нигерии и.

Хоть и с большим запозданием, публикую шпаргалку по telegram bot api, может, будет полезна.

Прикладываю официальную документацию, и готовый набор методов для работы с telegram. Обработку тестировал на 8.3.15.1747.

В тексте я буду давать ссылки на вторую документацию т.к. для ее просмотра не нужны премудрости для обхода блокировок.


В клиенте telegram ищем бота BotFather

Далее отправляем ему команды

/start
/newbot
Представление имени моего бота
unikalnoe_imya_bot
После этого бот выдаст нам данные для подключения, а именно токен вида 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11


Скринами




Соединение

В документации написано:

Код создания соединения :

Прокси

Есть огромное количество сайтов предоставляющий список таких бесплатных прокси, я использую getMe

Я специально буду повторять блоки кода, дабы Вы копировали сразу рабочий вариант, конечно это все нужно обернуть в функции и процедуры

Метод getMe вернет в теле ответа JSON структуру

"ok":true - Означает, что авторизация прошла успешно и Ваш токен валидный.

Short polling - это классическая схема, когда отправляя запрос мы сразу получаем результат его выполнения.

т.е. вы заводите РС с обработанными update_id и каждый раз анализируете - обработан полученный id или нет. Можно завести константу с последним обработанным update_id и сравнивать ее на с полученным

Для работы в такой схеме необходимо договориться с сервером - какой таймаут считать допустимым, для этого у метода

Для переключения режима обмена на вебхуки существует метод InlineKeyboardMarkup

"update_id": 910197308,
"message": "message_id": 88,
"from": "id": 882646417,
"is_bot": false,
"first_name": "Александр",
"last_name": "Леонов",
"username": "Rentgengl",
"language_code": "ru"
>,
"chat": "id": 882646417,
"first_name": "Александр",
"last_name": "Леонов",
"username": "Rentgengl",
"type": "private"
>,
"date": 1585918960,
"document": "file_name": "планческие-скалы-собер-баш.gpx",
"mime_type": "application/octet-stream",
"file_id": "BQACAgIAAxkBAANYXocz8Iiqq7kpgxE3bIEdkzgg9lEAAscIAAKPMzhIERX5PAABX3kxGAQ",
"file_unique_id": "AgADxwgAAo8zOEg",
"file_size": 25422
>
>
>

Загрузка полученных файлов

Для этого существует GET-метод

Ответ сервиса getFile

При этом запросе сервер ответит, что все Ок


Показ привью отправленной ссылки можно отключить с помощью параметра disable_web_page_preview

Для этого нужно к запросу добавить строку &disable_web_page_preview=true

Кнопки (клавиатуры)

У метода sendMessage есть еще один очень интересный параметр - reply_markup, который отвечает за быстрые ответы.

Кнопка - это объект InlineKeyboardButton, у которого только одно обязательное поле - text

Есть еще ряд полей, основное из которых - callback_data. Это данные, которые будут отправлены после нажатия кнопки пользователем. Сюда можно записывать идентификаторы из 1С (документа или справочника), числа и т.д. для последующей обработки.

Второй полезный параметр - url, в котором указывается ссылка, которая будет открыта при нажатии на кнопку

Пример JSON-описания клавиатуры


KeyboardButton с основным полем text, данный объект можно не использовать и сразу формировать массив строк.

Еще один важный параметр клавиатуры, но не обязательным, является resize_keyboard, который отвечает за "авто высоту" кнопок.

По умолчанию данный параметр установлен в false и клавиатура растягивается на высоту основной клавиатуры, что выглядит громоздко (см. скрин в примере).

Еще один опциональный параметр - one_time_keyboard, который при установке в true скрывает клавиатуру после нажатия кнопки.


ReplyKeyboardHide - Своего рода команда управления видимостью для клавиатуры

Отправка контактов

Метод похож на sendMessage за исключением нескольких обязательных полей:

phone_number - строковое представление телефонного номера

first_name - Имя контакта


Отправка документов (файлов)

За отправку файлов отвечает POST-метод

Со строковыми значениями вопросов не возникает - делаем СтрЗаменить и все, но есть еще и содержимое файла, которое нужно в итоговый запрос подсунуть.

Для решения этой проблемы у 1С есть метод ОбъединитьФайлы, который объединяет переданный в него массив файлов в один.

Разделим шаблон на части - певая это текст до %СодержимоеФайла%, а вторая это текст после %СодержимоеФайла%. Запишем эти 2 текста в файлы и используем ОбъединитьФайлы подсунув между текстовиками отправляемый файл.

Читайте также: