Создаем бота Telegram

20.10.16

Интеграция - Мессенджеры и боты

Легко и непринужденно создаем бота, который поможет получать данные из 1С, используя API Teletram

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

Наименование Файл Версия Размер
ОбработкаБот
.epf 27,05Kb
110
.epf 27,05Kb 110 Скачать

Используя побликации  //infostart.ru/public/387433/ и //infostart.ru/public/419846/ решил создать бота, используя API Telegram

Для разбора JSON использовалась обработка из публикации: //infostart.ru/public/119601/

Регистрируем бот и получаем ТОКЕН, тут: //infostart.ru/public/419846/  есть описание, как это сделать

В текущей версии реализована реакция на тестовые сообщения от пользователя;

"скажи" - бот в ответ посылает сообщение

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

"файлы" - показывается клавиатура со списком доступных файлов

Также бот получает присланные фотографии.

Основные процедуры бота:

&НаСервере
Процедура ПрочитатьСобщенияНаСервере() Экспорт
	Сервер = "api.telegram.org";    
	
	СтрокаСоединения = "/bot"+Токен+"/getUpdates" + ?(ПоследнийИД = "", "", "?offset=" + ПоследнийИД);
	
	HTTPЗапрос = Новый HTTPЗапрос();
	Заголовки = Новый Соответствие;
	
	HTTPЗапрос.Заголовки.Вставить("Connection", "keep-alive"); 
	HTTPЗапрос.АдресРесурса = СтрокаСоединения; 
	
	ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
	HTTPСоединение = 	Новый HTTPСоединение(Сервер,,,,Новый ИнтернетПрокси,, ЗащищенноеСоединение);
	Попытка 
		ОтветHTTP = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
	Исключение
		Сообщить(ОписаниеОшибки());
		Возврат;
	КонецПопытки;
	
	ДанныеКакСтрока = ОтветHTTP.ПолучитьТелоКакСтроку();
	
	обОбработка = РеквизитФормыВЗначение("Объект");
	
	Рез = обОбработка.мПрочитатьJSON(ДанныеКакСтрока);
	Если Рез["ok"] <> Истина Тогда
		Возврат;
	КонецЕсли;
	
	
	Рез = СоответвиеВСтруктуру(Рез);
	
	result = Рез.result;
	МаксИД = 0;
	
	Для Каждого mes из result Цикл
		
		ПоследнийИД = Формат(mes.update_id + 1, "ЧГ=");
		
		Попытка
			message	 = mes.message;
		Исключение
			Продолжить;
		КонецПопытки;
		
		Дата = '19700101' + message.date +7*60*60;
		
		Попытка
			from = message.from.username;
		Исключение
			from = message.from.first_name;
		КонецПопытки;
		
		chatИД = Формат(message.chat.id, "ЧГ=");
		
		Если message.Свойство("text") Тогда
			Ок= истина;
			Если Найти(ВРег(message.text), "СКАЖИ")<>0 Тогда
				
				HTTPЗапрос.АдресРесурса = "/bot"+Токен+"/sendMessage?text=Hello I am BOT&chat_id="+chatИД+"&reply_to_message_id=" + message.message_id; 
				HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
				
			ИначеЕсли  Врег(message.text) = "ОТЧЕТЫ" Тогда
				
				HTTPЗапрос.АдресРесурса = "/bot"+Токен+"/sendMessage?text=Доступные отчеты: &chat_id="+chatИД+"&reply_to_message_id=" + message.message_id + 
				"&reply_markup="+КлаваОтчеты;
				HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
				
			ИначеЕсли  Врег(message.text) = "ФАЙЛЫ" Тогда
				
				HTTPЗапрос.АдресРесурса = "/bot"+Токен+"/sendMessage?text=Доступные файлы: &chat_id="+chatИД+"&reply_to_message_id=" + message.message_id + 
				"&reply_markup="+КлаваФайлы;
				HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
				
			ИначеЕсли Лев(message.text, 7) = "Отчет: " Тогда
				
				HTTPЗапрос.АдресРесурса = "/bot"+Токен+"/sendMessage?text=Ждите. Отчет формируется&chat_id="+chatИД+"&reply_to_message_id=" + message.message_id;
				HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
				
				ТекстОтчета = ПолучитьТекстОтчета(message.text);
				
				HTTPЗапрос.АдресРесурса = "/bot"+Токен+"/sendMessage?parse_mode=HTML&text="+Кодировать(ТекстОтчета)+"&chat_id="+chatИД+"&reply_to_message_id=" + message.message_id;
				HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
				
			ИначеЕсли message.text = "Файл: PDF" Тогда
				
				ОтправитьФайлPDF(chatИД, HTTPСоединение, HTTPЗапрос)				
				
			ИначеЕсли message.text = "Файл: XLS" Тогда
				
				ОтправитьФайлXLS(chatИД, HTTPСоединение, HTTPЗапрос)				
				
			КонецЕсли;
			
		ИначеЕсли message.Свойство("photo") Тогда
			МассивФото = message.photo;
			Для Каждого Фото из МассивФото Цикл
				HTTPЗапрос.АдресРесурса = "/bot"+Токен+"/getFile?file_id=" + Фото.file_id;
				Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
				СтрокаОтвета = Ответ.ПолучитьТелоКакСтроку();
				Путь = СтрЗаменить(Сред(СтрокаОтвета, Найти(СтрокаОтвета,"photo\/") + 7) , """}}", "");
				СтрФото = Фотографии.Добавить();
				СтрФото.Имя = Путь;
				СтрФото.Размер = "" + Фото.height +"x" + Фото.width;
			КонецЦикла;
			
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры


&НаСервере
Функция СоответвиеВСтруктуру(Рез) 
	мРез = Новый Структура;
	Для Каждого Эл из Рез Цикл
		Ключ = Эл.Ключ;
		мЗнач = Эл.Значение;
		Если ТипЗнч(мЗнач) =Тип("Соответствие") Тогда
			мЗнач = СоответвиеВСтруктуру(мЗнач);
		ИначеЕсли ТипЗнч(мЗнач) =Тип("Массив") Тогда
			мЗнач = Новый Массив;
			Для Каждого элМ из Эл.Значение Цикл
				мЗнач.Добавить(СоответвиеВСтруктуру(элМ));
			КонецЦикла;
		КонецЕсли;
		мРез.Вставить(Ключ, мЗнач);
	КонецЦикла;
	Возврат мРез;
КонецФункции

&НаСервере
функция Кодировать(Текст)
	Возврат ?(Текст = "", "Пусто", КодироватьСтроку(Текст,  СпособКодированияСтроки.URLВКодировкеURL));
КонецФункции

&НаСервере
Процедура ОтправитьФайлPDF(chat_id, HTTPСоединение, HTTPЗапрос)
	
	Таб = РеквизитФормыВЗначение("Объект").ПолучитьМакет("МакетОтчета");
	
	
    ИмяФайла = ПолучитьИмяВременногоФайла("PDF");
    Таб.АвтоМасштаб = Истина;
    Таб.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF);
	
    
    СтрокаСоединения = "/bot" + Токен + "/sendDocument";
    
    Boundary = "----"+Строка(Новый УникальныйИдентификатор());
    
    //Определяем массив для процедуры ОбъединитьФайлы
    МассивФайловДляОбъединения = Новый Массив;
    
    //Формируем начальный фрагмент файла POST-запроса
    ИмяФайлаОтправкиНачало = ПолучитьИмяВременногоФайла("txt");
    ФайлОтправкиНачало = Новый ЗаписьТекста(ИмяФайлаОтправкиНачало, КодировкаТекста.UTF8);
    
    //Формируем конечный фрагмент файла POST-запроса
    ИмяФайлаОтправкиКонец = ПолучитьИмяВременногоФайла("txt");
    ФайлаОтправкиКонец = Новый ЗаписьТекста(ИмяФайлаОтправкиКонец, КодировкаТекста.UTF8);
    
    ТекстДляОтправки = "";
    
    ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary + Символы.ПС;
    ТекстДляОтправки = ТекстДляОтправки + "Content-Disposition: form-data; name=""chat_id""" + Символы.ПС + Символы.ПС;
    ТекстДляОтправки = ТекстДляОтправки + chat_id + Символы.ПС;
    
    ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary + Символы.ПС;
    ТекстДляОтправки = ТекстДляОтправки + "Content-Disposition: form-data; name=""document""; filename=""report.PDF""" + Символы.ПС;
    
    ФайлОтправкиНачало.ЗаписатьСтроку(ТекстДляОтправки );
    ФайлОтправкиНачало.Закрыть();
    
    МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиНачало);
    
    МассивФайловДляОбъединения.Добавить(СокрЛП(ИмяФайла));
    
    ТекстДляОтправки = "" + Символы.ПС;
    ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary+"--";
    ФайлаОтправкиКонец.ЗаписатьСтроку(ТекстДляОтправки);
    ФайлаОтправкиКонец.Закрыть();
    МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиКонец);
    
    ИмяФайлаОтправки = ПолучитьИмяВременногоФайла("txt");
    ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки);
    
    HTTPЗапрос.Заголовки.Вставить("Connection", "keep-alive");
    HTTPЗапрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary="+Boundary);
    
    HTTPЗапрос.УстановитьИмяФайлаТела(ИмяФайлаОтправки);
    HTTPЗапрос.АдресРесурса = СтрокаСоединения;
    
    Попытка
        ОтветHTTP = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
КонецПроцедуры

Добавлено:

Что бы клавиатура появлялась прямо в чате необходимо подавать другой текст клавиатуры в обработке он получается так:

	Строки = Новый Массив;
	Кнопки = Новый Массив;
	Кнопки.Добавить(Новый структура("text, callback_data", "Файл: PDF", "1"));
	Кнопки.Добавить(Новый структура("text, callback_data", "Файл: XLS", "2"));
	Строки.Добавить(Кнопки);

	КлавиатураВСообщении = JSON.мЗаписатьJSON(Новый Структура("inline_keyboard", Строки), Ложь);

если текстом:

КлавиатураВСообщении =
"{""inline_keyboard"":[[{""text"":""Файл: PDF"",""callback_data"":""1""},{""text"":""Файл: XLS"",""callback_data"":""2""}]]}"

обработка нажатия на эту кнопку отличается от обработки нажатия на простую клавиатуру, которая впринципе просто отсылает сообщение с нужным текстом:

блок "сallback_query" как раз говорит нам о нажатии на такую кнопку, в нем будет содержаться информации о коде нажатой кноки, в нашем примере это "1" или "2"

КодНажатойКнопки = mes.callback_query.data

далее обратабываем так как нам надо

Обработка Бот Telegramm API HTTP inline_keyboard

См. также

SALE! 25%

Конструктор ботов Телеграм, редакция 2

Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Развитие популярного решения для интеграции мессенджера Telegram с нашей любимой 1С.

15000 11250 руб.

18.06.2021    58662    291    255    

345

SALE! 25%

Что нам стоит бота построить? Нарисуем - будет жить! Графический конструктор телеграм-ботов/Telegram

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 9900 руб.

27.12.2021    33273    80    157    

174

Легкий документооборот (+чат-бот для Telegram)

Документооборот и делопроизводство (СЭД) Мессенджеры и боты Учет документов Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 Платные (руб)

Расширение для согласования справочников и документов в конфигурациях "1С: Бухгалтерия 3.0", "Управление нашей фирмой", "1С ERP Управление предприятием", "Бухгалтерия государственного учреждения". Ролевая адресация, условная маршрутизация, последовательное и параллельное согласование, уведомление о новых задачах на почту, блокировка объектов в зависимости от статуса, запрет проведения в зависимости от статуса, автозапуск процессов согласования, отчеты по исполнительской дисциплине. Не требуется снятие конфигурации с поддержки. Настройка без программирования. Версия для 1cfresh.com. Сертификат 1С-Совместимо.

14900 руб.

15.11.2018    27783    25    48    

57

Email, SMS, Telegram рассылки из 1С - Директ Маркетинг

Управление взаимоотношениями с клиентами (CRM) Мессенджеры и боты SMS рассылки Email рассылки Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Полный набор инструментов для качественных транзакционных и маркетинговых Email, SMS, Telegram рассылок из 1С. Даже простые уведомления об оплате счетов способны существенно упростить сбор дебиторской задолженности. Применение всех возможностей прямого маркетинга выводит коммуникацию с клиентами, уровень сервиса и лояльность на новый уровень.

7788 руб.

07.04.2014    83610    40    191    

127

Интеграция 1С с телефонией и чатами WhatsApp и Telegram

Телефония, SIP Мессенджеры и боты Платформа 1С v8.3 Конфигурации 1cv8 Россия Управленческий учет Платные (руб)

Интеграция 1С с телефонией и чатами WhatsApp и Telegram автоматизирует работу оператора со звонками и чатами и добавит вашей 1С элементы CRM системы. Храните всю историю взаимоотношений в 1С, не теряйте звонки, скачивайте, прослушивайте в любое время из карточки клиента или журнала звонков, держите руку на пульсе, используя блок отчетов по звонкам. Интегрируйте вашу 1С и чатами WhatsApp и Telegram, общайтесь с клиентами с единого номера и в одном окне. Теперь чаты с клиентами хранятся в карточке партнера в 1С, а не в личных мобильных ваших менеджеров.

4100 руб.

28.04.2022    13851    11    6    

36

Отправка в Telegram отчетов, печатных форм, присоединённых файлов и произвольных вложений. Загрузка получателей. Хранение истории отправок.

Мессенджеры и боты Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Платные (руб)

Универсальное расширение для отправки (напрямую и через прокси) печатных форм, отчетов, присоединённых файлов, табличных документов и произвольных вложений в чат Telegram прямо из 1С. Ручная и автоматическая фоновая загрузка по расписанию идентификаторов получателей Telegram. Хранение истории отправок сообщений с ограничением по времени хранения и с автоматической очисткой по мере истечения срока хранения.

4800 руб.

26.12.2023    2199    1    0    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. TreeDogNight 22 30.09.16 10:18 Сейчас в теме
2. gzharkoj 502 30.09.16 13:20 Сейчас в теме
Желтый у вас заголовок, где же тут процесс создания бота?
3. FirePyres 70 30.09.16 14:01 Сейчас в теме
(2) ifal, Как понять что он "желтый"?
4. gzharkoj 502 30.09.16 15:18 Сейчас в теме
(3) В заголовке статьи написано: " создаем бота..." -, я ожидал увидеть описание процесса, а что видим внутри? ссылки на другие статьи, где описан процесс, а все что ваше личное упрятано в обработку. Поэтому я делаю такой вывод. Правильней звучало бы "Пример использования бота Telegram".
5. FirePyres 70 04.10.16 05:41 Сейчас в теме
(4) Добавил тексты основных процедур
Хотел описать, но код вроде настолько простой что вроде и объяснений не надо
6. FirePyres 70 06.10.16 10:35 Сейчас в теме
Добавил пример inline клавиатуры
7. METAL 289 08.11.16 11:00 Сейчас в теме
Добрый день!
Скажите, а не приходилось ли Вам делать интеграцию с Facebook API https://developers.facebook.com/ ?
Иными словами, можно ли то же самое прикрутить не к Телеграм, а к Фейсбуку?
Просто в нашей компании никто Телеграм не использует, а интеграцию с каким-нибудь популярным мессенджером хотят, и несмотря на мои уговоры, даже пробовать телеграм не хотят, аргумент такой - вот есть Фейсбук, приложение у всех стоит, АПИ есть, пусть корпоративный бот работает на этой платформе...
Но мне пока не удалось найти ни одного примера реализации бота.. Это потому что на порядок сложней, чем с телеграмом, или просто руки не дошли ни у кого?..
Спасибо!
8. FirePyres 70 09.11.16 05:15 Сейчас в теме
(7) Я бы попробовал, но не совсем понимаю как это должно работать
Как вы это себе представляете?
9. METAL 289 09.11.16 10:15 Сейчас в теме
(8) аналогично
Пользователь подписывается на бота
И дальше например пишет в чат ОТЧЕТЫ и может выбрать нужный отчёт за нужную дату (sales today - без кнопок для выбора тоже подойдёт, непринципиально)
Либо происходит событие в 1С какое-то, и пользователю в мессенджер приходит уведомление
Но насколько я вчёра смог разобраться - при разработке придётся использовать некую php-прослойку, так как для ФБ обязательно использовать webhook, как я понял.. По крайней мере, именно на этом этапе я споткнулся http://prntscr.com/d4yojf

Мнение одного специалиста, который делал и для ФБ (на php), и для телеграм (он писал мне в личку, поэтому имя не публикую):
На 1С не делал, делал на php. но там чуть чуть меньше возможностей, есть ограничения и т.д. В принципе можно на php запустить на сайте готовый какой нить движок работы с фейсбуком, и написать для него АПИ интерфейса для 1с. Это самое простое решение будет
10. PhoenixAOD 62 09.11.16 10:40 Сейчас в теме
12. FirePyres 70 10.11.16 05:50 Сейчас в теме
Сегодня по радио услышал что Viber запустил для всех возможность создания публичного аккаунта

"Представленные паблик аккаунты — это чат-каналы, которые можно использовать для отправки важной (рекламной) информации пользователям, проводить презентации, размещать новости, полезные ссылки, GIF-изображения, всячески общаться и получать обратную реакцию от участников канала. Также создателям каналов доступны CRM-инструменты для управления чатом."
13. rayastar 1459 19.06.17 23:13 Сейчас в теме
Коллеги, приветствую! С ботом разобрался, все отлично, но есть одно НО. Почему то иногда мои команды не обрабатываются. Опишу проблему. Отправляю команду - и надеюсь увидеть ее в входящем файле json. Но там остается какой то перечень старых команд...в чем может быть проблема? Вот только что отправил боту команду - пришел ответ, все ок. отправляю следующую команду - и в ответ тишина...Мне не совсем понятна логика формирования json файла
17. PLAstic 295 29.08.17 17:49 Сейчас в теме
(13) Внимательно прочитайте описание https://core.telegram.org/bots/api#getupdates
Наверняка, вы увидели, что параметры не обязательны и юзаете без них. Поэтому получаете первые 100 сообщений по сроку давности. Если вчитаться, то там написано, что этот оффсет - это не смещение, а номер первого непрочитанного сообщения. Т.е. последний полученный ид сообщения + 1.
Получается, чтобы получать свежие сообщения, надо указывать параметр offset.
14. terrorion 92 14.08.17 09:12 Сейчас в теме
Добрый день, коллеги.
Никак не могу разобраться, как удалить клавиатуру в чате ("inline_keyboard").
Был бы признателен за наглядный пример.
18. PLAstic 295 29.08.17 17:52 Сейчас в теме
(14) Передайте пустую клавиатуру.

Процедура ИзменитьКлавиатуруСообщения(Чат, Сообщение, Клавиатура = "")

	ТекстЗапроса = СтрШаблон("bot%1/editMessageReplyMarkup?chat_id=%2&message_id=%3", ТокенБота, Формат(Чат, "ЧГ="), Формат(Сообщение, "ЧГ="));
	Если НЕ ПустаяСтрока(Клавиатура) Тогда
		ТекстЗапроса = ТекстЗапроса + "&reply_markup=" + Клавиатура;
	КонецЕсли;

	Запрос = Новый HTTPЗапрос(ТекстЗапроса);
	Соединение = Новый HTTPСоединение("api.telegram.org", 443,,,,, Новый ЗащищенноеСоединениеOpenSSL());
	HTTPОтвет = Соединение.Получить(Запрос);
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(HTTPОтвет.ПолучитьТелоКакСтроку());
	Результат = ПрочитатьJSON(ЧтениеJSON);
	ЧтениеJSON.Закрыть();

	Если НЕ Результат.ok Тогда
		ТекстОписания = СтрШаблон("%1
|Чат: %2
|Сообщение: %3", Результат.description, Чат, Сообщение);
		ЗаписьЖурналаРегистрации("Бот", УровеньЖурналаРегистрации.Ошибка,,, ТекстОписания);
	КонецЕсли;

КонецПроцедуры
Показать
19. terrorion 92 30.08.17 07:59 Сейчас в теме
15. FirePyres 70 15.08.17 05:15 Сейчас в теме
День добрый.
Вроде работает если передать пустую клавиатуру: "{""keyboard"":[],""one_time_keyboard"":true}"
16. terrorion 92 24.08.17 14:34 Сейчас в теме
(15) Спасибо за ответ. Но, к сожалению, ничего не получилось. Насколько я понял, как то нужно использовать ReplyKeyboardRemove.
22. Sakuraso 17.04.19 09:07 Сейчас в теме
(15)Здравствуйте, скажите возможно ли приобрести у вас лично вашу обработку, т.к. купить отдельно стартмани я не могу, а на дорогущий абонемент денег нет. Просто делаю диплом в колледже на похожу тему, вот и хотелось бы посмотреть как это реализовано.
32. hawksib 04.05.22 21:15 Сейчас в теме
(16) конечно, для Вас, возможно, не актуально уже, но для истории, что бы в поисковиках выпадали варианты, я сделал так:

КлавиатураСтруктура = Новый Структура;
КлавиатураСтруктура.Вставить("remove_keyboard", Истина);
КлавиатураJSON = Новый ЗаписьJSON;
КлавиатураJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет,,,
ЭкранированиеСимволовJSON.Нет));
ЗаписатьJSON(КлавиатураJSON, КлавиатураСтруктура,,);
КлавиатураДляЗапроса = КлавиатураJSON.Закрыть();


как я понял, это так работает: в объекте записывается поле "remove_keyboard": thue и reply_markup становится типом ReplyKeyboardRemove
(15)
20. Euroset1 11 18.02.18 15:43 Сейчас в теме
Автор, как ты решил проблему с BOM кодом? Или веб сервис телеграма самостоятельно его вырезает перед первым boundary?
21. stako8 18.01.19 08:20 Сейчас в теме
Может кто сталкивался: отправляю клавиатуру "bot******/sendMessage?chat_id=******&text=Меню&reply_markup={"inline_keyboard":[[{"text":"1","callback_data":"1"},{"text":"2","callback_data":"2"}]]}", она приходит пользователю, тот нажимает на неё, но через "getUpdates" не приходит ответ что он нажал. Куда копать?
23. lishniy 132 19.04.19 13:27 Сейчас в теме
(21) Сообщения из inline_keyboard приходят чуть по другому. Добавьте в цикле
Для Каждого mes из result Цикл
		Если message.Свойство("text") Тогда

условие

ИначеЕсли mes.Свойство("callback_query") Тогда
 Ответ = СтрокаМассива.callback_query.data;
24. stako8 19.04.19 13:37 Сейчас в теме
(23) У меня проблема не с поиском, а с тем, что ответ вообще не приходит, чтобы я не нажимал и не делал. Приходит только сообщение о том, что я вызывал меню. А вот апдейт, что я нажал кнопку не приходит.
Прикрепленные файлы:
25. lishniy 132 19.04.19 13:50 Сейчас в теме
(24) Странно. А клиент какой? Должно быть так.
Прикрепленные файлы:
26. stako8 19.04.19 13:56 Сейчас в теме
(25) Если Вы про клиент телеграмма - пробовал нажимать и на десктопе и на мобилке, результат на скрине в предыдущем моём сообщении.
27. lishniy 132 19.04.19 14:02 Сейчас в теме
(26)Конечно, это не совсем то, что вы делаете, попробуйте так сделать меню
/sendMessage?chat_id=ЧЧЧ&text=Меню&reply_markup={"keyboard":[[{"text":"Пункт меню"}]],"resize_keyboard":true}
28. stako8 19.04.19 14:16 Сейчас в теме
(27) Так это обычная кнопка, которая отправляется как текст
Прикрепленные файлы:
29. lishniy 132 19.04.19 14:18 Сейчас в теме
(28) Так и есть. Разница, что первая в чате под сообщением, а эта как отдельная клавиатура
30. stako8 19.04.19 14:22 Сейчас в теме
(29)Ещё раз повторюсь: возможно я не в том формате формирую строку и данные на сервер телеграмма приходят не совсем корректные (с виду строка с параметрами правильная), по-этому не могут быть возвращены через callback_query.
31. 028 24.05.20 02:29 Сейчас в теме
Добрый день вопрос как решить перенос кнопок на другую строку, чтобы кнопки выстроились одна под другой? использую inline_keyboard
не пойму как в 1С это сделать в инете пишут вот так kb1 = Types.InlineKeyboardMarkup(row_width=1), как это сделать в 1С?
подскажите пожалуйста.
33. FirePyres 70 05.05.22 06:53 Сейчас в теме
пример:
ТекстКлавиатуры = 
"{""inline_keyboard"":[[{""text"":""Стр1Кн1"",""callback_data"":""Стр1Кн1""},{""text"":""Стр1Кн1"",""callback_data"":""Стр1Кн1""}]," //Массив кнопок 1 строка
+"[{""text"":""Стр2Кн1"",""callback_data"":""%1""}]"// массив кнопок 2 строка
+ "]}";
Прикрепленные файлы:
Оставьте свое сообщение