Имя: Пароль:
1C
1С v8
Интеграция с Telegram
Ø (Волшебник 05.01.2025 17:08)
,
0 SuperMario
 
03.01.25
21:50
Всем бодрого здравия!
Вопрос по интеграции с телегой  по webHook.
Не могу обновить клавиатуру по методу "editMessageReplyMarkup"

Гуглил:
Это

https://infostart.ru/1c/articles/2129265/?ysclid=m5gmm8s2d0829539597

и это

Вопрос про Telegram и 1с , но больше про телеграм

должно работать.
Возвращает код состояния =200
Но клаву не обновляет.
Пытаюсь ее скрыть после выбора, бесполезно.

Клавиатура.Вставить("remove_keyboard", Истина);


Куда копнуть?
1 Смотрящий
 
03.01.25
22:49
(0) Клава к сообщению привязана. Причем инлайн к одному а нижняя к другому; на одно сообщение не повесить
2 SuperMario
 
03.01.25
23:22
(1) А в чем связь?
3 SuperMario
 
03.01.25
23:27
(1) ответ телеги на нажатие:





{
    "update_id": 633Н48010,
    "callback_query": {
        "id": "115327687811фФффф",
        "from": {
            "id": 26851блабла,
            "is_bot": false,
            "first_name": "Сергей",
            "last_name": """""""""""""",
            "username": """"""""""""""""""""",
            "language_code": "ru"
        },
        "message": {
            "message_id": 564,
            "from": {
                "id": 6827001487,
                "is_bot": true,
                "first_name": "Test_",
                "username": "immunitet"
            },
            "chat": {
                "id": @68528197,
                "first_name": "Сергей",
                "last_name": "--------",
                "username": "MSergey",
                "type": "private"
            },
            "date": 1736934510,
            "text": "Выберите даты",
            "reply_markup": {
                "inline_keyboard": [
                    [
                        {.... данные.....}
                    ]
                ]
            }
        },
        "chat_instance": "-484493350320085406",
        "data": "202501290000"
    }
}


Что нужно ей ответить для обновления?



Мой ответ

            JsonКлавиатура  = ОбщегоНазначенияHTTP.СтрокаJSON( Телеграм.Календарь( ,КонецМесяца(ТекущаяДата())+1));
            ДанныеОтвета = Новый Структура;
            ДанныеОтвета.Вставить("method", "editMessageReplyMarkup");
            ДанныеОтвета.Вставить("chat_id", ИдентификаторЧата);
            ДанныеОтвета.Вставить("message_id", message.callback_query.message.message_id);
            ДанныеОтвета.Вставить("reply_markup", JsonКлавиатура);
                Возврат (ОбщегоНазначенияHTTP.ОтветJSON(ДанныеОтвета));
4 SuperMario
 
03.01.25
23:28
+(3) код ответа =200 и ничего не обновляется :(
5 Смотрящий
 
03.01.25
23:41
(2) Да хрен знает - штатный питонист на фронтенде постоянно твердит об этом
6 CepeLLlka
 
04.01.25
13:58
(0)
В публикации - https://infostart.ru/public/2129265/

есть небольшой косяк есть только. На любое нажатие нужно всегда возвращать callbackanswer иначе на IOS устройствах, будет писать что "Идёт загрузка". Это не мешает работе клавиатуры, но тем не менее надо поправить будет в этой публикации этот момент.
7 CepeLLlka
 
04.01.25
14:08
(0)remove_keyboard это вроде метод на для инлайн клавиатуры, а для обычной.

Чтобы инлайн клавиатуру убрать, нужно отредактировать сообщение и подложить ему пустую инлайн клаву

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

	//Удалим клавиатуру из соощения
	ДанныеОтвета = ИзменитьКлавиатуруСообщения(ИдентификаторЧата, ИдентификаторСообщения, ПустаяКонтекстнаяКлавиатура());
	Отправить(ДанныеОтвета);	
	
КонецПроцедуры

Функция ИзменитьКлавиатуруСообщения(ИдентификаторЧата, ИдентификаторСообщения, Клавиатура)
	
	ДанныеСообщения = Новый Структура;
	ДанныеСообщения.Вставить("method", "editMessageReplyMarkup");
	ДанныеСообщения.Вставить("chat_id", ИдентификаторЧата);
	ДанныеСообщения.Вставить("message_id", ИдентификаторСообщения);
	ДанныеСообщения.Вставить("reply_markup", Клавиатура);
	
	Возврат ДанныеСообщения;		
	
КонецФункции

Функция ПустаяКонтекстнаяКлавиатура()
	
	ДанныеКлавиатуры = Новый Структура;
	ДанныеКлавиатуры.Вставить("inline_keyboard", Новый Массив);
	
	Возврат ДанныеКлавиатуры;
	
КонецФункции
8 SuperMario
 
04.01.25
15:40
(7)

ИдентификаторСообщения что в ответе телеграм является идентификатором?
callback_query.message.message_id
или
callback_query.id
?

Тело ответа на callback_query


{
    "method": "editMessageReplyMarkup",
    "chat_id": 268518197,
    "callbackanswer": true,
    "message_id": 616,
    "reply_markup": "{\r\n\u0009\"inline_keyboard\": []\r\n}"
}


реакции никакой



Мне, так же, нужно обновить клавиатуру по моей логике.
9 CepeLLlka
 
04.01.25
15:56
ИдентификаторСообщения что в ответе телеграм является идентификатором?
callback_query.message.message_id


Это верно

У меня в логах отправляется вот такое сообщение в телеграм для удаления клавиатуры.

{
	"method": "editMessageReplyMarkup",
	"chat_id": "111111111",
	"message_id": 6962,
	"reply_markup": {
		"inline_keyboard": []
	}
}


В ответ получаю отредактированное сообщение.
Что вам приходит в ответ?
10 SuperMario
 
04.01.25
19:18
В (7) все работает , как и описали.

Я накосячил с преобразование в JSON  в (8)

(CepeLLlka) , спасибо за помощь!



Тема закрыта.