|
Добавление кнопок в Телеграмм-бот из 1с | ☑ | ||
---|---|---|---|---|
0
Рафаэль
18.09.19
✎
09:46
|
Добрый день,форумчане!
Подскажите пожалуйста как вывести клавиатуру(inlineKeyboard или replyKeyboard) в телеграмм-боте. Вот функция ПолучитьСписокСообщений,где используется getUpdates: Функция ПолучитьСписокСообщений() Экспорт Результат = getUpdates(Константы.update_id.Получить() + 1); Если Результат.Свойство("ok") И Результат.ok = Истина Тогда Если Результат.Свойство("result") Тогда Для Каждого НС Из Результат.result Цикл Если НС.Свойство("message") И НС.message.Свойство("chat") Тогда Если НС.message.text = "/start" Тогда chat = НС.message.chat; id = chat.id; sendMessage(id, "Здравствуй, дорогой друг)",,,,,); КонецЕсли; Константы.update_id.Установить(НС.update_id); КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; //показать прайс показать долг сделать заказ Возврат Результат; КонецФункции Вот сама функция getUpdates: Функция getUpdates(offset = 0,limit = 0,timeout = 0) Экспорт method_param = Новый Массив; Если offset> 0 Тогда method_param.Добавить("offset=" + ФорматироватьСтроку(offset)); КонецЕсли; Если limit> 0 Тогда method_param.Добавить("limit=" + ФорматироватьСтроку(limit)); КонецЕсли; Если offset> 0 Тогда method_param.Добавить("timeout=" + ФорматироватьСтроку(timeout)); КонецЕсли; Результат = ОтправитьHTTPЗапрос(ПолучитьAcessToken(),"getUpdates", method_param); Возврат ОбработатьJSON(Результат); КонецФункции Вот функция sendMessage: Функция sendMessage(chat_id,text,parse_mode = Неопределено,disable_web_page_preview = Неопределено,disable_notification = Неопределено, reply_to_message_id = 0,reply_markup = Неопределено) Экспорт Если НЕ ЗначениеЗаполнено(chat_id) ИЛИ НЕ ЗначениеЗаполнено(text) Тогда Возврат Неопределено; КонецЕсли; method_param = Новый Массив; method_param.Добавить("chat_id=" + ФорматироватьСтроку(chat_id)); method_param.Добавить("text=" + text); Если НЕ parse_mode = Неопределено Тогда method_param.Добавить("parse_mode" + parse_mode); КонецЕсли; Если НЕ disable_web_page_preview = Неопределено Тогда method_param.Добавить("disable_web_page_preview" + disable_web_page_preview); КонецЕсли; Если НЕ disable_notification = Неопределено Тогда method_param.Добавить("disable_notification" + disable_notification); КонецЕсли; Если НЕ reply_to_message_id > 0 Тогда method_param.Добавить("reply_to_message_id" + ФорматироватьСтроку(reply_to_message_id)); КонецЕсли; Если НЕ reply_markup = Неопределено Тогда method_param.Добавить("reply_markup=" + reply_markup); КонецЕсли; Результат = ОтправитьHTTPЗапрос(ПолучитьAcessToken(),"sendMessage", method_param); Возврат ОбработатьJSON(Результат); КонецФункции Как я понял reply_markup отвечает за вывод клавиатуры,но как её вывести я так и не понял Заранее спасибо! |
|||
1
dmt
18.09.19
✎
10:07
|
||||
2
Jimmo910
18.09.19
✎
13:40
|
Я делаю так:
Если ЗначениеЗаполнено(ИДСообщения) Тогда Ресурс = "bot" + Токен + "/editMessageText?chat_id=" + СтрЗаменить(Формат(idChat, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "")+"&message_id="+ИДСообщения+"&text="+ТекстОтвета+"&reply_markup="+reply_markup; Иначе Ресурс = "bot" + Токен + "/sendMessage?chat_id=" + СтрЗаменить(Формат(idChat, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text= "+ТекстОтвета+"&reply_markup="+reply_markup; КонецЕсли; Соединение = ПолучитьСоединение(); Запрос = Новый HTTPЗапрос(Ресурс); Ответ = Соединение.Получить(Запрос); В параметре "reply_markup" находится JSON строка. |
|||
3
Рафаэль
19.09.19
✎
12:58
|
Я нашел решение.Кому нужно,вот пример:
Функция ПолучитьСписокСообщений() Экспорт Результат = getUpdates(Константы.update_id.Получить() + 1); Если Результат.Свойство("ok") И Результат.ok = Истина Тогда Если Результат.Свойство("result") Тогда Для Каждого НС Из Результат.result Цикл Если НС.Свойство("message") И НС.message.Свойство("chat") Тогда Если НС.message.text = "/start" Тогда chat = НС.message.chat; id = chat.id; Строки = Новый Массив; Кнопки = Новый Массив; Кнопки.Добавить(Новый Структура("text,callback_data","Показать прайс","prays")); Кнопки.Добавить(Новый Структура("text,callback_data","Сделать заказ","zakaz")); Строки.Добавить(Кнопки); КлавиатураВСообщении = СформироватьJSON(Новый Структура("inline_keyboard",Строки),Ложь); sendMessage(id, "Здравствуй, дорогой друг)",,,,,КлавиатураВСообщении); ИначеЕсли НС.message.text = "/report" Тогда chat = НС.message.chat; id = chat.id; Строки = Новый Массив; Кнопки = Новый Массив; Кнопки.Добавить(Новый Структура("text,callback_data","Показать прайс","prays")); Кнопки.Добавить(Новый Структура("text,callback_data","Сделать заказ","zakaz")); Кнопки.Добавить(Новый Структура("text,callback_data","Показать долг","dolg")); Строки.Добавить(Кнопки); КлавВСообщ = СформироватьJSON(Новый Структура("keyboard,resize_keyboard=Истина",Строки),Ложь); sendMessage(id,"Выберите действие",,,,,КлавВСообщ); КонецЕсли; Константы.update_id.Установить(НС.update_id); КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; //показать прайс показать долг сделать заказ Возврат Результат; КонецФункции |
|||
4
Jimmo910
19.09.19
✎
14:04
|
(3) Ты к стати я вижу Константу перезаписываешь постоянно. Не нужно использовать так Константу.
Константы - это то что редко меняет своё значение. Запили лучше регистр сведений, там и историю какую сможешь хранить... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |