Telegram bot API - разбор документации с примерами

Публикация № 1217332

Разработка - Системная интеграция - Интеграция с WEB

telegram

Перевод документации на язык 1С.

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

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

Ссылки:

Официальная документация

Документация с частичным переводом (документация не полная, но рабочая)

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

 

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

 

Соединение

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

Все запросы к Telegram Bot API должны осуществляться через HTTPS в следующем виде: https://api.telegram.org/bot<token>/НАЗВАНИЕ_МЕТОДА

Подчеркнуто, что соединение именно HTTPS, а значит не забываем указывать порт 443 и создать объект ЗащищенноеСоединениеOpenSSL

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


АдресTelegramAPI = "api.telegram.org";
ПроксиАдрес = "159.138.22.170";
ПрокcиПорт = 3128;

Прокси = Новый ИнтернетПрокси;
Прокси.Установить("https", ПроксиАдрес, ПроксиПорт);
Прокси.Установить("http", ПроксиАдрес, ПроксиПорт);

СоединениеHTTP  =  Новый HTTPСоединение(АдресTelegramAPI,443,,,Прокси,,Новый ЗащищенноеСоединениеOpenSSL());

 

Прокси

Прокси нужен для обхода блокировок РосКомНадзора, если у вас провайдер не блокирует сайт telegram.org, то прокси можно не создавать.

Есть огромное количество сайтов предоставляющий список таких бесплатных прокси, я использую https://free.proxy-sale.com/https/ т.к. там есть возможность скачать списков нужном мне формате для автоматической загрузки.

Я реализовал у себя регистр сведений, где храню флаг доступности, ip и порт прокси. Флаг доступности актуализируется регламентным заданием

Проверка соединения

Для проверки соединения или проверки работает прокси или нет реализован специальный GET-метод getMe

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


МойToken = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11";
АдресTelegramAPI = "api.telegram.org";
ПроксиАдрес = "159.138.22.170";
ПроксиПорт = 3128;
ТаймаутСоединения = 2;//Ставим таймаут в пару секунд, чтобы долго не ждать исключения при неудачной проверке соединения

Прокси = Новый ИнтернетПрокси;
Прокси.Установить("https", ПроксиАдрес, ПроксиПорт);
Прокси.Установить("http", ПроксиАдрес, ПроксиПорт);

СоединениеHTTP  =  Новый HTTPСоединение(АдресTelegramAPI,443,,,Прокси,ТаймаутСоединения,Новый ЗащищенноеСоединениеOpenSSL());

АдресЗапроса = "bot" + МойToken.token + "/getMe";
ЗапросHTTP = Новый HTTPЗапрос(АдресЗапроса);
Попытка
    ОтветHTTP = СоединениеHTTP.Получить(ЗапросHTTP);
    ПроксиДоступен = Истина;
Исключение
    ПроксиДоступен = Ложь;
КонецПопытки;

Сообщить("Прокси доступен - " + ПроксиДоступен);

 

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

{
    "ok": true,
    "result": {
        "id": 12345678912,
        "is_bot": true,
        "first_name": "Представление имени моего бота",
        "username": "unikalnoe_imya_bot",
        "can_join_groups": true,
        "can_read_all_group_messages": false,
        "supports_inline_queries": true
    }
}

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

 

Получение сообщений

Для получения сообщений существуют 2 совершенно разных способа

  1. Через HTTP-запросы к методу getUpdates
  2. Через Webhook

 

Запрос к методу getUpdates инициирует 1С, и есть 2 варианта использования

 

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

В случае с getUpdates мы сразу получаем ответ, где в поле result будет массив объектов с типом Update

 
Примитивный запрос на получение всех сообщений

Данный запрос каждый раз будет возвращать повторяющиеся данные и отслеживание новых сообщений ложится на 1С

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

МойToken = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11";
АдресTelegramAPI = "api.telegram.org";
ПроксиАдрес = "159.138.22.170";
ПроксиПорт = 3128;

Прокси = Новый ИнтернетПрокси;
Прокси.Установить("https", ПроксиАдрес, ПроксиПорт);
Прокси.Установить("http", ПроксиАдрес, ПроксиПорт);

СоединениеHTTP = Новый HTTPСоединение(АдресTelegramAPI,443,,,Прокси,,Новый ЗащищенноеСоединениеOpenSSL());

АдресЗапроса = "bot" + МойToken + "/getUpdates";
ЗапросHTTP = Новый HTTPЗапрос(АдресЗапроса);
Попытка
   ОтветHTTP = СоединениеHTTP.Получить(ЗапросHTTP);
   Сообщить(ОтветHTTP.ПолучитьТелоКакСтроку());
Исключение
   ВызватьИсключение "Ошибка получения запроса";
КонецПопытки;

 

Пример ответа:

{
	"ok": true,
	"result": [
		{
			"update_id": 910197276,
			"message": {
				"message_id": 55,
				"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": 1585628272,
				"text": "Привет"
			}
		}
	]
}

 

 
 Запрос на получение новых сообщений после последнего запроса

 

Long polling - это схема, когда сервер возвращает ответ на запрос не сразу, а в момент появления данных. Проще говоря ваше HTTP соединение висит пока не появятся новые сообщения или не закончится таймаут.

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

 
 Запрос на ожидание получения новых сообщений

 

Получение сообщений через Webhook

Данные способ подразумевает наличие опубликованного наружу HTTP-сервиса, куда и будут приходить запросы от telegram с новыми сообщениями

Следует отметить 2 важные детали - сервис должен быть HTTPS и обрабатывать POST-запросы

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

Основной плюс данного метода - отсутствие необходимости в рег.заданиях, которые с определенным интервалом опрашивают или ждут ответа от сервера telegram. Новые сообщения приходят в режиме реального времени, причем если ваш сервис будет недоступен, то запрос будет повторен (сколько раз и с каким интервалом не понятно)

 

Обработка входящих сообщений

Сообщения, полученные от сервера telegram это массив объектов с типом Update. У данного типа есть обязательное поле update_id и ряд опциональных, зависящих от типа входящего сообщения. Основное доп.поле - message с типом Message заполнено у входящих текстовых сообщениях, входящих файлах, фотографиях, аудио сообщениях, входящем сообщении с контактом, георасположением, видео и стикеры.

Второе доп.поле - callback_query с типом CallbackQuery - это результат нажатия на кнопку клавиатуры InlineKeyboardMarkup

Примеры сообщений с типом Message

 
 Сообщение
 
 Фото
 
 Документ
 
 Аудио сообщение
 
 Геоданные
 
 Опрос
 
 Контакт
 
 Музыка
 
 Нажатие на кнопку ReplyKeyboard

Пример сообщения с типом CallbackQuery

 
 Нажатие на кнопку InlineKeyboard

 

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

Т.к. в сообщении приходит только идентификатор файла, то необходимо его как то получить.

Для этого существует GET-метод getFile, у которого есть один обязательный параметр file_id

Метод возвращает объект типа File, это еще не файл, но он уже доступен по ссылке, которую необходимо собрать из полученных данных.

Ссылка имеет вид https://api.telegram.org/file/bot<token>/<file_path>, где file_path - это свойство объекта File

 
 Пример загрузки файла

 

Отправка сообщения

Для отправки сообщения используется GET-метод sendMessage, обязательных параметров всего два chat_id и text

chat_id можно взять из полученных сообщений

 
 Отправка простого сообщения

 

У метода sendMessage есть еще ряд необязательных параметров, один из них это parse_mode, который включает нужный синтаксис оформления текста сообщения. Таких режимов два - HTML и Markdown

Проще говоря, этот параметр говорит по каким правилам должно оформляться сообщение

Я приведу пример отправки сообщения в синтаксисе HTML

 
 Отправка оформленного сообщения

В чат при этом запросе прилетит вот такое сообщение

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

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

Также у метода есть параметр reply_to_message_id, который принимает идентификатор сообщения, на которое делается ответ.

 

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

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

Типов таких быстрых ответов на данный момент 4: InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardHide и ForceReply.

 

InlineKeyboardMarkup

Это клавиатура, которая привязана к сообщению. У этого объекта всего одно поле inline_keyboard, которое содержит массив строк с массивами кнопок (2 мерный массив кнопок или массив массивов с кнопками)

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

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

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

 
 Пример отправки InlineKeyboardMarkup

 

ReplyKeyboardMarkup

Набор кнопок, которые не привязаны к конкретному сообщению а закреплены внизу окна диалога.

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

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

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

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

 
 Пример отправки ReplyKeyboardMarkup

 

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

ForceReply - команда инициирующая цитату на отправляемое сообщение

 

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

GET-метод sendContact позволяет отправить контакт пользователю спец.сообщением.

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

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

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

 
 Пример отправки контакта

 

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

За отправку файлов отвечает POST-метод sendDocument, у которого 2 обязательных поля - chat_id и document.

Поле document может иметь тип строки, это нужно тогда, когда мы переотправляем уже полученный файл и в этом случае указываем идентификатор файла.

Второй тип, который может содержать поле document - это сам отправляемый файл в формате multipart/form-data

Сам формат multipart/form-data достаточно простой, его цель - оправить серверу ряд разнородных данных (файлы, строки и т.д.) в одном сообщении (файле). Это своего рода zip-архив без сжатия, где не только файлы, но и другие данные.

Сервер, получив сообщение, должен понять где заканчиваются/начинаются блоки с данными и что там за данные. Для этого ему необходим разделитель данных - boundary и некая запись о характере данных блока.

Вернемся к нашему методу sendDocument, которому необходимо передать 2 параметра - строковый chat_id и файл document

Шаблон тела запроса будет выглядеть следующим образом:

--%Разделитель%
Content-Disposition: form-data; name="chat_id"

%ЧатID%
--%Разделитель%
Content-Disposition: form-data; name="document"; filename="%ИмяФайла%"

%СодержимоеФайла%
--%Разделитель%--

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

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

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

 
Пример отправки файла

 

Скачать файлы

Наименование Файл Версия Размер
Документация Telegram Bot API ver.4.7

.pdf 616,12Kb
04.04.20
14
.pdf 616,12Kb 14 Скачать
Telegram bot API Библиотека методов

.epf 7,28Kb
05.04.20
35
.epf 7,28Kb 35 Скачать

Специальные предложения

Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. serg-lom89 61 06.04.20 10:39 Сейчас в теме
тема хоть и "заезженная" но тем не менее почитал с удовольствием,вспомнил как сам разбирался с API_)
Totoro; TreeDogNight; +2 Ответить
2. feva 424 06.04.20 13:52 Сейчас в теме
Хорошее развитие темы ботов телеги и 1с) Грамотно написано! Однозначно луцк!
Evg-Lylyk; +1 4 Ответить
3. CyberCerber 645 06.04.20 14:13 Сейчас в теме
(2) Кажется, это уже правило Инфостарта. В комментах к любой статье появится автор другой статьи на эту тему, и порекламирует себя.
izidakg; leongl; +2 1 Ответить
4. feva 424 06.04.20 14:22 Сейчас в теме
(3) ну тема на самом дела не одинаковая. Тут глубже развернуты команды бота телеги, с примерами. А расширение информационного поля полезно всем - как автору, так и читателю и журналу
Evg-Lylyk; +1 Ответить
5. Nikola23 519 06.04.20 15:04 Сейчас в теме
(3) рынок диктует свои правила. Вам не нравится что-то конкретное в его поведении?
6. CyberCerber 645 06.04.20 15:21 Сейчас в теме
(5) Вообще такая откровенная самореклама не очень нравится. Комменты к этой статье посвящены именно этой публикации, а не всем на эту тему. Найти интересные мне статьи я и сам смогу.
Конкретно в этой фразе не понравилось "Хорошее развитие темы...". Какое развитие? Как будто автор взял именно его статью как эталон и что-то дополнил... Здесь подробный разбор функционала API, там - просто краткий пример базовой возможности.
7. Nikola23 519 07.04.20 09:21 Сейчас в теме
(6) "Комменты к этой статье посвящены именно этой публикации". Ну это правило вы сами придумали.

ИМХО, вы придираетесь. В каждом форуме с момента появления такого понятия, есть темы и есть админы.
Да, принято писать "по теме", но не запрещено (по умолчанию). На инфостарте - не запрещено.
Админы принимают решение что и где писать, а не пользователи.

Выбор за вами - адаптироваться или нет.
Кстати и вы и я сейчас пишем совсем не по теме, но никто же не возмущается :)
Fox-trot; +1 Ответить
8. izidakg 161 07.04.20 16:23 Сейчас в теме
(3) когда статья не то что хуже, но существенно менее информативна, это наверное и не плохо
но в данном случае эта статья более полная, а значит лучше
9. Anton64 274 08.04.20 09:53 Сейчас в теме
Вы только в тексте статьи описания клавиатур делаете обычным текстом? или в обработке так же?
Непонятно как вы динамически собираетесь при таком подходе формировать клавиатуры.
10. leongl 359 08.04.20 10:44 Сейчас в теме
(9)В тексте не стал делать динамически для прозрачности.
В обработке 2 экспортных метода
ПрикрепитьКнопки(Получатель, ТекстСообщения, МассивМассивовКнопок, ЭтоФорматированноеСообщение = Ложь)
ОтправитьСообщениеСКнопками(Получатель, ТекстСообщения, МассивМассивовInlineКнопок, ЭтоФорматированноеСообщение = Ложь)
и обертка для получения описания inlineКнопки
ПолучитьКнопкуInline(Заголовок, ДанныеДляВозврата = Неопределено, СсылкаURL = Неопределено)

Использование простое - для прикрепления кнопки делаете 2мерный массив строк и скармливаете ПрикрепитьКнопки
Для inlineКлавиатуры делаете 2мерный массив из результатов функции ПолучитьКнопкуInline(
CyberCerber; +1 Ответить
11. Anton64 274 08.04.20 11:50 Сейчас в теме
(10) Тогда понятно)) а то в публикации как-то слишком странно выглядело
12. nestokay 63 10.04.20 08:26 Сейчас в теме
Воооот, отличная статья, спасибо!!!
13. hardcodder2020 13.04.20 11:38 Сейчас в теме
Статья крутейшая! Автору респектую!
14. Pixar0000 13.04.20 18:46 Сейчас в теме
А отправка смайликов - не раскрыта вообще, если добавить, то настольное руководство на связке 1С + Тележка
Автору респект!
15. AlexK_2012 14.04.20 17:29 Сейчас в теме
а обработка запускабельна?
16. leongl 359 14.04.20 18:11 Сейчас в теме
17. leongl 359 14.04.20 18:13 Сейчас в теме
(15)Запускабельны примеры из статьи
18. AlexK_2012 15.04.20 12:38 Сейчас в теме
(17) Добрый день! Большая просьба добавить пример разбора полученных сообщений, вижу только примеры получаемых данных
19. leongl 359 15.04.20 16:55 Сейчас в теме
(18)Это немного выходит за рамки статьи, но я могу посоветовать:
1. Получив ОтветHTTP проверить его свойство КодСостояния, при удачном выполнении он должен быть равен 200
2. Получить тело ответа через метод ПолучитьТелоКакСтроку и преобразовать его из JSON в объект 1С через Новый ЧтениеJSON
3. Проверить получившийся объект 1С на наличие поля "ok" и его значение = Истина
4. Обработать свойство result объекта
В обработке с библиотекой методов есть экспортный метод ПолучитьИОбработатьСообщения() там есть и получение сообщений и их обработка.
igormiro; Terve!R; AlexK_2012; CyberCerber; +4 Ответить
20. mvgfirst 5 17.04.20 16:00 Сейчас в теме
Не то что бы я придирался
но вот есть кусочек
где ошибка:

ЗапросHTTP = Новый HTTPЗапрос(АдресЗапроса);
Попытка
   ОтветHTTP = СоединениеHTTP.Получить(HTTPЗапрос);
   Сообщить(ОтветHTTP.ПолучитьТелоКакСтроку())
21. leongl 359 17.04.20 21:37 Сейчас в теме
22. igormiro 709 28.04.20 09:41 Сейчас в теме
Хорошая статья.
Есть вопрос бот работает, у некоторых пользователей вот перестаёт реагировать на все команды.
Что делать в таких случаях?
23. leongl 359 28.04.20 11:11 Сейчас в теме
(22) Команды от пользователя приходят в сообщениях?
24. igormiro 709 28.04.20 11:46 Сейчас в теме
25. igormiro 709 28.04.20 11:49 Сейчас в теме
Уже было такое пришлось пересоздать бот. Тогда все ок.
26. doctordre 30.04.20 21:55 Сейчас в теме
ошибочка в адресе запроса для получения файла. там не bot a /file/bot
поправьте пожалуйста
27. leongl 359 06.05.20 11:55 Сейчас в теме
28. uno-c 162 18.06.20 20:24 Сейчас в теме
для ее просмотра не нужны премудрости для обхода блокировок.

Случайно обнаружил, что теперь справка https://core.telegram.org/bots/api открывается без премудростей. Да и https://api.telegram.org/botXXX/getMe тоже отвечает - прямо в браузере без VPN и прокси. Это у всех теперь так в нашей стране?
29. dvk09 19.06.20 07:21 Сейчас в теме
30. vladnet 361 10.07.20 09:48 Сейчас в теме
Подскажите sendDocument посылается через multipart/form-data. Все нормально работает, но кроме основных параметров существуют еще параметры:

reply_markup
reply_to_message_id
reply_markup

Как их правильно засунуть в запрос?
31. leongl 359 10.07.20 13:11 Сейчас в теме
(30)
НачальныеДанные = "--%Разделитель%
|Content-Disposition: form-data; name=""chat_id""
|
|%ЧатID%
|--%Разделитель%
|Content-Disposition: form-data; name=""reply_markup""
|
|%ДанныеReply_markup%
|--%Разделитель%
|Content-Disposition: form-data; name=""document""; filename=""%ИмяФайла%""
|";
НачальныеДанные = СтрЗаменить(НачальныеДанные,"%Разделитель%",Boundary);
НачальныеДанные = СтрЗаменить(НачальныеДанные,"%ЧатID%",ЧатID);
НачальныеДанные = СтрЗаменить(НачальныеДанные,"%ДанныеReply_markup%", ДанныеReply_markup);
НачальныеДанные = СтрЗаменить(НачальныеДанные,"%ИмяФайла%",Файл.Имя);
Показать
tuzmich007; +1 Ответить
32. vladnet 361 10.07.20 16:42 Сейчас в теме
(31) Спасибо! Основную суть ухватил, остался вопрос, а как должна выглядеть переменная ДанныеReply_markup? Это ведь структура, к примеру в ней может быть:
{
"inline_keyboard": [
{"text": "123", "callback_data", "333"}
]
}
tuzmich007; +1 Ответить
33. vladnet 361 10.07.20 18:23 Сейчас в теме
(32) Нашел, записывается обычным JSON )
34. ROM_1C 683 12.07.20 21:04 Сейчас в теме
А отложение сообщения можно отправить по апи или нет такой функции?
В документации что-то не нашел((
Спасибо.
35. leongl 359 13.07.20 06:53 Сейчас в теме
(34)Скорее всего это только фишка приложения.
36. ROM_1C 683 13.07.20 10:16 Сейчас в теме
(35) точно нет, экспортируется на все устройства, и уведомления прийдет даже если устройства будут выключены
37. maksa2005 327 23.07.20 13:11 Сейчас в теме
АдресЗапроса = "bot" + МойToken.token + "/getUpdates";


исправьте на

АдресЗапроса = "bot" + МойToken+ "/getUpdates";
38. leongl 359 24.07.20 07:38 Сейчас в теме
39. maksa2005 327 24.07.20 09:43 Сейчас в теме
Скажите, а можно отправить команду в телеграмм не через телефон для регистрации бота?
Для чего это? суть такова что нужно сделать 40 ботов для 40 людей и каждому их настроить. Чтобы у каждого не брать телефоны и настраивать, а прописать команду и получить от него токен.
40. leongl 359 24.07.20 13:31 Сейчас в теме
(39)На самом деле телега дает возможность реализовать свой кастомный клиент, по этому вполне реально реализовать автоматизацию по созданию ботов)
Почитайте тут https://core.telegram.org/api#telegram-api
41. rinik88 28 28.07.20 15:27 Сейчас в теме
добрый день. А отправка фото-картинки такая же как и файла? хотя наверное необходимо использовать /sendPhoto...
42. leongl 359 29.07.20 09:00 Сейчас в теме
(41)Добрый день. Можно использовать sendDocument и sendPhoto. У меня работало и то и то
43. rinik88 28 29.07.20 09:25 Сейчас в теме
(42) если в статью добавите пример по отправке фото не как вложения, было бы замечательно)
44. umni4ka 19 27.08.20 22:51 Сейчас в теме
Крутая статья, спасибо!
Velement; +1 Ответить
45. CAIN 16 20.10.20 23:09 Сейчас в теме
Как отправить просто фото, это даже нужнее чем просто файл вложение
46. leongl 359 21.10.20 07:46 Сейчас в теме
(45)Можно использовать вместо sendDocument - sendPhoto. У меня работало и то и то
47. oneman@yandex.ru 20.11.20 17:25 Сейчас в теме
Внимание, вопрос! Как запросом бота получить обратно сообщения, отправленные этим же ботом ?
В методе "getUpdates" возвращаются сообщения, отправленные только прочими пользователями чата.
tuzmich007; +1 Ответить
Оставьте свое сообщение

См. также

Hello world на metadata.js Промо

Инструментарий разработчика WEB Мобильная разработка v8 1cv8.cf Абонемент ($m)

Про браузерные offline-first приложения можно написать миллионы слов. Сэкономлю своё и ваше время и перейду сразу к делу. В статье не будет рекламы и агитации за новые технологии, не будет критики традиционных или попсовых решений. Рассмотрим по шагам разработку простейшей программы на metadata.js. Постараюсь сделать акцент не на том «как это сделано», а «почему сделано именно так»

1 стартмани

11.08.2016    59109    unpete    208    

Перенос всех логов в Elasticsearch

WEB v8 Абонемент ($m)

В качестве стандартного места хранения логов в "1С:Предприятие" используется Журнал регистрации. Также часто для хранения служебных событий создают специальные Регистры сведений. Но у этих решений есть свои недостатки. В статье описан подход для хранения любых логов в самой популярной свободной поисковой системе Elasticsearch.

1 стартмани

15.07.2020    2526    kuleshov.x    4    

Выбираем российского провайдера для интеграции с WhatsApp

WEB Интеграция v8 Россия Абонемент ($m)

Собственно, почему выбираем именно провайдера и почему российского? WhatsApp, создавая свое API, преследовал две цели - делать деньги и минимизировать спам. И чтобы убить сразу двух зайцев, было принято решение предлагать API исключительно через партнеров. Ну а вопрос по поводу российского партнера скорее уже риторический. И не только из-за курса рубля, но и из-за таланта работать с российскими телефонными номерами, коим одарены далеко не все провайдеры. Между тем статья не претендует на всесторонний анализ всех возможностей всех провайдеров. Мы копнем лишь верхушку айсберга этого немаленького рынка.

1 стартмани

19.05.2020    4288    ripreal1    5    

Синтез речи из текста с помощью Яндекс SpeechKit

WEB v8 1cv8.cf Абонемент ($m)

В статье описан процесс подключения Яндекс SpeechKit API и программная реализация синтеза речи из текста с помощью этого API. Тестировалось на релизе платформы 8.3.16.1224. Может использоваться в любой конфигурации. Синтез речи может использоваться для самых разных целей, в моём случае потребовалось перевести лекции из текстовых файлов в звук

1 стартмани

05.04.2020    3103    m0zg153    2    

Демо связи веб сервисов 1С и php Промо

Практика программирования Математика и алгоритмы WEB v8 1cv8.cf Абонемент ($m)

Демонстрация обращения к веб сервису 1С из php. Пример простейший, уровня hello world. Дана одна страница и информационная база 1С с одним справочником и одним веб сервисом. Веб сервис выдаёт содержимое справочника по запросу странички.

1 стартмани

19.07.2013    32232    Трактор    20    

Вариант реализации REST API для 1С-Битрикс Управление сайтом

WEB v8 Россия Абонемент ($m)

В статье опишу вариант обмена 1С УТ 11.4 и 1С-Битрикс управление сайтом с иcпользованием компонентов Symfony, в качестве примера обмен данными по товарам.

1 стартмани

28.01.2020    5332    malikov_pro    2    

"Живые" картинки со Snap.SVG

Практика программирования WEB Работа с интерфейсом v8 Абонемент ($m)

В статье рассмотрен пример использования http-сервисов для визуализации данных

1 стартмани

24.10.2019    13707    blackhole321    7    

Интеграция 1С с сайтом (магазином) WordPress (WooCommerce) с помощью Rest API сайта. Часть 1. Авторизация

WEB v8 Абонемент ($m)

Интеграция 1С с сайтом (магазином) WordPress (WooCommerce) с помощью функционала Rest API предоставляемого платформой (CMS) WordPress (WooCommerce). Без дополнительных приложений на PHP/вставьте сюда любой другой язык программирования/.

1 стартмани

12.10.2019    28654    osivv    32    

Примеры пользования web сервисов 1С из браузера Промо

WEB Практика программирования v8 1cv8.cf Абонемент ($m)

Даны примеры реализации доступа к web сервисам 1С из браузера. Примеры web сервисов, а также javascript'ы для доступа к этим сервисам. AJAX доступ к 1С.

1 стартмани

29.06.2008    153521    Трактор    233    

АИТП. Автоматизируем управление ресурсами на примере Яндекс.Почта для домена

WEB v8 1cv8.cf Абонемент ($m)

В статье демонстрируется использование программного пакета АИТП для автоматизации предоставления ИТ-ресурсов сотрудникам на примере управления почтовыми ящиками Яндекс.Почта для домена.

1 стартмани

26.08.2019    4710    blackhole321    4    

Использование HTTP-сервиса для создания "фронтенда" HTML/CSS/jQuery с кэшированием

WEB v8 1cv8.cf Абонемент ($m)

В статье описан способ создания "фронтенда" на HTML/CSS/jQuery и скрипт кеширования AJAX запросов на PHP.

1 стартмани

06.08.2019    13964    Sedaiko    25    

Обмен с интернет-магазином на платформе DOCPART

WEB Оптовая торговля Розничная торговля Оптовая торговля Розничная торговля v8 1cv8.cf Абонемент ($m)

В настоящее время существует множество платформ для создания интернет-магазинов. Удобные и не очень, платные или бесплатные. У каждого решения найдутся свои сторонники, но наличие оперативного обмена с учётной системой важно для любой платформы. В этой публикации мы рассмотрим одну из популярных платформ для создания интернет-магазина по продаже автозапчастей Docpart и организацию обмена данными с ней.

10 стартмани

04.07.2019    5036    Johny_v    18    

1C + Python + Django Rest Framework + Vue.js. Опыт несложной full-stack разработки

Практика программирования Внешние источники данных Обмен через XML WEB Разработка v8 1cv8.cf Абонемент ($m)

В этой статье мы рассмотрим путь и основные моменты создания небольшого вэб-сервиса, который мы называем "Онлайн Прайс-лист". Выгрузка из 1С, бэкенд, фронтенд, получение заказов в 1С.

1 стартмани

22.04.2019    33792    riposte    65    

Подключение к REST API через OAuth протокол из 1С

WEB v8 1cv8.cf Абонемент ($m)

В статье описаны варианты подключения И решение граблей по подключению к REST API через протокол OAuth 2.0 из 1С. При разработке такого подключения для получения данных и загрузки в базу 1С я столкнулся с некоторыми проблемами, решил их и хочу поделиться этими наработками.

1 стартмани

06.09.2018    13212    chemezov    11    

HTTP Сервисы: Путь к своему сервису. Часть 1

Практика программирования WEB v8 1cv8.cf Абонемент ($m)

Уже много было написано про http-сервисы, но то и дело всплывают «Новые» статьи по обмену между базами V8 по COM, что «Немножко» удивляет. Решил внести свои 5 копеек, поработаем с http-сервисом.

1 стартмани

15.07.2018    89412    dsdred    32    

А чё это вы здесь делаете, а?

WEB v8 1cv8.cf Абонемент ($m)

Разработчикам тиражных обработок близка и понятна проблема обратной связи с пользователем. Много важного и полезного можно почерпнуть, зная, что делает бухгалтер, который запустил обработку. В большом мире вэба сбор статистики на сайте дело привычное и даже обязательное. Эта статья покажет практику применения инструментов сбора статистики из мира веба для обработок на платформе 1С:Предприятие.

1 стартмани

21.01.2018    23893    infosoft-v    42    

Пример заполнения/создания файла XML из XSD схемы, используя XDTO

Обмен через XML WEB v8 1cv8.cf Абонемент ($m)

Добрый день, коллеги! Наконец-то дошли руки написать сию статью. Хочу поделиться своим опытом по разбору xsd схемы используя Фабрику XDTO, а также связанным с этим XML файлом. Думаю, наверняка кому-то понадобится.

1 стартмани

21.12.2017    47760    sandybaev    24    

Получение данных из Wialon Hosting через HTTP запросы (Remote API)

WEB v8 1cv8.cf Автомобили, автосервисы Россия Абонемент ($m)

Статья будет полезна для быстрого старта работы с Wialon Hosting. Здесь я опишу основные принципы работы с системой Wialon через Remote API.

1 стартмани

12.09.2017    22360    maxopik2    22    

Google OAuth и мобильное приложение

Мобильная разработка Обмен данными 1С Внешние источники данных WEB v8 v8::Mobile 1cv8.cf Абонемент ($m)

Об аутентификации для работы с сервисами google из мобильного или настольного приложения

1 стартмани

29.08.2017    11582    stveans@gmail.com    3    

Заполнение ОГРН с использованием Инструментов разработчика

Обработка справочников WEB v8 Россия Абонемент ($m)

Вот и до нашей организации добралось требование указывать в отчетности для ГлавКонтроля ОГРН контрагента. Как всегда, задача возникла внезапно, и решить ее нужно было "вчера".

1 стартмани

14.04.2017    6656    vsuh    0    

Передача большого количества объектов через Web-сервисы

WEB v8 УТ11 Абонемент ($m)

Один из вариантов передачи большого количества объектов при использовании Web-сервисов.

1 стартмани

31.01.2017    15481    SinglCOOLer    14    

Пошаговая инструкция настройки web-сервисов для 1Сv8.3 и IIS 8.5

Практика программирования WEB v8 1cv8.cf Абонемент ($m)

Пошаговая инструкция настройки web-сервисов для 1Сv8.3 и IIS 8.5. Windows Server 2012 R2 Standard, 1С:Предприятие 8.3 (8.3.4.465)

30.04.2014    387577    alexstey    104    

Пошаговая инструкция по созданию мобильного приложения для iOS с обменом через WEB сервисы Часть II.

Практика программирования WEB v8 Абонемент ($m)

Пошаговая инструкция по созданию мобильного приложения для iOS с обменом через WEB сервисы Часть II.

1 стартмани

16.05.2013    18102    amrec.ru    11