Я разрабатываю бота с Microsoft Bot Framework, на Facebook Messenger карусель показывает, как и должно быть, но в Telegram он показывает как две разные карты на двух разных сообщениях. Не поддерживает ли Telegram карусели или это моя вина? Код:
public async Task Carousel(IDialogContext context, IAwaitable activity) < var act = await activity; //carousel var replyToConversation = context.MakeMessage(); replyToConversation.Text = «2+ Cards are a Carousel»; replyToConversation.Recipient = message.From; replyToConversation.Type = «message»; replyToConversation.Attachments = new List(); //1 List cardImages = new List(); cardImages.Add(new CardImage(url: «https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Asimo_look_new_design.jpg/330px-Asimo_look_new_design.jpg»)); List cardButtons = new List(); CardAction plButton = new CardAction() < Value = «https://en.wikipedia.org/wiki/Robot», Type = «openUrl», Title = «WikiPedia Page» >; cardButtons.Add(plButton); HeroCard plCard = new HeroCard() < Title = «I’m a hero card», Subtitle = «Robot Wikipedia Page», Images = cardImages, Buttons = cardButtons >; Attachment plAttachment = plCard.ToAttachment(); replyToConversation.Attachments.Add(plAttachment); //2 List cardImages2 = new List(); cardImages2.Add(new CardImage(url: «https://upload.wikimedia.org/wikipedia/en/thumb/9/9b/FANUC_6-axis_welding_robots.jpg/330px-FANUC_6-axis_welding_robots.jpg»)); List cardButtons2 = new List(); CardAction plButton2 = new CardAction() < Value = «https://en.wikipedia.org/wiki/Robot», Type = «openUrl», Title = «WikiPedia Page» >; cardButtons2.Add(plButton); HeroCard plCard2 = new HeroCard() < Title = «I’m a hero card», Subtitle = «Robot Wikipedia Page», Images = cardImages2, Buttons = cardButtons2 >; Attachment plAttachment2 = plCard2.ToAttachment(); replyToConversation.AttachmentLayout = AttachmentLayoutTypes.Carousel; replyToConversation.Attachments.Add(plAttachment2); await context.PostAsync(replyToConversation); >
Saeru 27 фев. 2017, в 13:58
он взломал карусель
Источник: overcoder.net
Карусель
Что такое карусельная реклама как формат Карусель — это интерактивное объявление, которое состоит из нескольких слайдов, сменяющих друг друга при клике. Работает так: Хотите освоить сквозную аналитику? Посетите регулярный мастер-класс по аналитике от Roistat. Подключиться Карусель-реклама работает на всех устройствах — на смартфонах, на планшетах, на ПК. У этого формата есть несколько преимуществ перед объявлениями с одним слайдом: В каких каналах можно использовать формат рекламы карусель Формат […]
Взлом телеканала мульт! Мы в шоке !
Что такое карусельная реклама как формат
Карусель — это интерактивное объявление, которое состоит из нескольких слайдов, сменяющих друг друга при клике. Работает так:
- Пользователь видит обычное объявление в соцсетях — с картинкой, заголовком, текстом. Вместо одной картинки в объявлении спрятано несколько изображений — обычно до 10 штук.
- Пользователь видит стрелку в правой части картинки, кликает по ней и переходит на следующее изображение.
- С помощью стрелочек можно пролистать объявление до конца, вернуться в начало или на любой слайд.
Хотите освоить сквозную аналитику?
Посетите регулярный мастер-класс по аналитике от Roistat.
Карусель-реклама работает на всех устройствах — на смартфонах, на планшетах, на ПК. У этого формата есть несколько преимуществ перед объявлениями с одним слайдом:
- пользователь взаимодействует с рекламой — интерактив вызывает интерес, привлекает внимание;
- больше контента в одном объявлении — с помощью карусели можно больше показать и рассказать о продукте;
- выше вероятность клика — пользователь листает картинки, а не просто смотрит изображение и читает текст. Реклама удерживает его внимание, повышает вовлеченность — пользователь чаще кликнет по ней и перейдёт на сайт.
В каких каналах можно использовать формат рекламы карусель
Формат карусели в Facebook*
Для карусели в Facebook* достаточно подобрать от двух до десяти иллюстраций, написать текст объявления, добавить заголовок и ссылку на посадочную. Можно добавить кнопку, которая будет вести на сайт, однако кнопка будет появляться на всех слайдах.
Формат карусель чаще всего используют, чтобы продемонстрировать несколько товаров сразу — например, в виде подборки товаров. Пользователь листает картинки с товарами, чтобы выбрать тот, который понравится больше других.
Формат карусели в Instagram*
Механика такая же, что и в Facebook* — от двух до десяти слайдов листают как сторисы друг за другом. В Instagram* упор сделан на изображениях — текст вторичен и лишь дополняет то, что есть на иллюстрациях.
Нередко бренды делают для рекламы бесшовную карусель — когда листая слайды, вы получаете единое изображение. Одна картинка продолжается на втором слайде и так далее — можно растянуть изображение на 5-6 слайдов.
В соцсети с картинками можно использовать не только статичную графику в каруселях, но и видео.
Формат карусель во ВКонтакте
В ВКонтакте карусельная реклама выглядит в виде поста с карточками, которые можно перелистывать. Ссылка в карусели может вести на любые сайты, а на смартфонах можно добавить на слайд номер телефона — клик по нему автоматически начинает звонок.
Формат карусель myTarget
Рекламный формат карусель доступен в Одноклассниках, на Юле и в рекламной сети myTarget. Карусель отличается только размерами — от трёх до шести слайдов. На каждом слайде можно расположить описание и заголовок, добавить кнопку.
Формат карусели на сайте
Карусельную рекламу можно повесить на главной странице сайта — блоки будут сменяться автоматически или пользователь будет пролистывать их самостоятельно. В этом случае карусель решает сразу две задачи:
- Украшает сайт — блок со слайдами привлекает внимание и делает сайт более привлекательным.
- Упрощает навигацию — в карусели можно отобразить самые ходовые товары или популярные разделы, куда пользователь может быстро перейти с главной страницы.
Примеры карусельной рекламы
- Показать продукт с нескольких ракурсов, чтобы продемонстрировать основные преимущества — например, несколько фотографий ноутбука.
- Объяснить преимущества разных товаров из одной категории — например, показать комплект одежды для хайкинга и подробно рассказать про каждую вещь на слайдах.
- Показать примеры или дать инструкцию — например, пошаговый рецепт блюда.
- Сделать подборкутоваров, продуктов, предложений со скидками.
- Добавить самые интересные посты или статьи в карусель, чтобы прорекламировать группу или сообщество.
- Сделать подборку кейсов или портфолио.
- Собрать группу отдельных товаров, которые вместе создают единый образ — например, одежда в едином стиле. Это повысит эффективность таргетированной рекламы.
Плюсы и минусы карусельной рекламы
Плюсы | Минусы |
Удобно продвигать сразу несколько товаров — формат позволяет не противопоставлять их, товары успешно дополняют друг друга | Выйти за пределы баннерной слепоты не получится — карусель удержит внимание пользователя, но рекламу могут не увидеть из-за привычки не обращать внимания не объявление. Тогда пользователи продолжат листать ленту, не обратив внимание на карусель |
Можно оптимизировать CTR — в начало карусели добавляйте самые цепляющие офферы с высокой конверсией | Если расположить в карусели информацию для разных сегментов целевой аудитории, есть риск, что реклама не сработает. Пользователь может не обратить внимание на объявление или не докрутить карусель до продукта, который нужен ему |
Можно использовать сторителлинг — добавить в рекламу сюжет, персонажей, диалоги, действие, равномерно распределив контент по слайдам. Это поможет добиться сопереживания от пользователей | Карусель на сайте может оказаться слишком быстрой или медленной — нужно определить оптимальное время переключения слайдов, чтобы пользователь успел увидеть самое важное и не отвлёкся в ожидании следующего слайда |
Вместо одной статичной картинки товара можно показать его с разных сторон — это важное преимущество, если нужно продвигать сложные продукты | Есть риск перегрузить пользователя контентом — если добавить слишком много изображений, он устанет, а вы не получите переход на сайт |
Что запомнить про карусельную рекламу
Карусель-реклама — популярный формат для продвижения в соцсетях. Маркетологи используют его, чтобы побольше рассказать о продукте, показать товар с разных ракурсов. В одной рекламе можно объединить несколько креативов и точно попасть в «боль» аудитории. Важно не переборщить с контентом, иначе пользователь быстро устанет, не долистает карусель и не перейдёт на сайт.
*Meta Platforms Inc., которой принадлежит Instagram, Facebook, Messenger, Audience Network, признана экстремистской организацией и запрещена на территории РФ.
Источник: roistat.com
Создание карусели Telegram Bot?
Нужно создать карусель товаров в боте телеграмм.
На данный момент имеется бот, который выводит товары в корзине из базы данных. Хотелось бы что бы бот отправлял одно сообщение, а уже посредством кнопок, содержимое этих сообщений менялось.
Пример:

Нужно сделать примерно так же.
Список товаров который бот получает, для вывода товаров:
[(‘Смертельный яд паралича’, ‘Описание: Смертельный яд паралича’, ‘url_img’), (‘Смертельный яд антимагии’, ‘Описание: Смертельный яд антимагии’, ‘url_img’), (‘Смертельный яд’, ‘Описание: Смертельный яд’, ‘url_img’), (‘Волендранг’, ‘Описание: Волендранг’, ‘url_img’)]
Хотелось бы услышать алгоритм, реализации подобной фичи.
Спасибо за внимание!
- Вопрос задан более года назад
- 1047 просмотров
Комментировать
Решения вопроса 1
Python backend developer
Смотря какой библиотекой вы пользуетесь.
Вам по сути нужно пользоваться методами
bot,edit_message_media() — для редактирования изображений
bot.edit_message_reply_markup() — для редактирования кнопок
параметры для этих функций можно подсмотреть в самой библиотеке.
Ответ написан более года назад
Нравится 1 7 комментариев
Мне тут алгоритм интересен, редактирую сообщение я методом edit_message_text в библиотеке telebot.
Я не совсем понимаю как заставить программу проходится по списку, и в зависимости от элемента в списке, редактировать сообщение.
На данный момент у меня есть ID сообщения который высылает бот, проблема состоит в идентификации элемента товара в высланном сообщении, для последующего изменения сообщения.
Т.е бот отправляет первый товар из списка, мне от этого товара приходит определенный callback, и мне нужно как то обработать этот callback, что бы вывелся следующий товар в списке.
Валерий, ну а какой-то код есть уже? Где именно затуп происходит?
И откуда бот получает список товаров? Есть ли возможность повлиять на формат получаемого списка? Его тоже вы формируете?
Михаил, Код имеется
def display_cart(self): # self это message try: global cart global counter counter = 0 connection = db.create_connection( «merch_telegram_bot_db», «postgres», «password», «127.0.0.1», «5432» ) query = q.interface_query[ ‘display_product_cart’] + str(self.from_user.id) cart = db.execution_of_requests(connection, query) connection.close() cart_keyboard = key.cart_keyboard() bot.send_message(self.chat.id, «Корзина:n») bot.send_message(self.chat.id, f»n» f»n» f»‘> f»;», parse_mode=»HTML», reply_markup=cart_keyboard) except Exception as e: print(‘Фатальная ошибка!’ + f’n’) return def callback_data_handler(self): # self это call (ответ inline кнопок) try: connection = db.create_connection( «merch_telegram_bot_db», «postgres», «password», «127.0.0.1», «5432» ) id_element = extract_id(self.data) if id_element[0] == ‘cat’: query = q.interface_query[‘product’] + id_element[1] product = db.execution_of_requests(connection, query) bot.edit_message_text(chat_id=self.message.chat.id, message_id=self.message.message_id, text=f») for i in product: show_product_keyboard = key.show_product(i) bot.send_photo(self.from_user.id, i[5], caption=f’nn’, reply_markup=show_product_keyboard) bot.answer_callback_query(self.id, show_alert=False) elif id_element[0] == ‘prod’: query = q.interface_query[‘cart_id_info’] + str(self.from_user.id) cart_id = db.execution_of_requests(connection, query) query = q.interface_query[‘add_product_cart’] data = (cart_id[0][0], id_element[1]) db.execution_of_requests(connection, query, data) InterfaceInteraction.alert(self, «Товар добавлен в корзину») elif id_element[0] == ‘delete’: print(«Ok_delete») InterfaceInteraction.alert(self) elif id_element[0] == ‘remove’: print(«Ok_remove») InterfaceInteraction.alert(self) elif id_element[0] == ‘add’: print(«Ok_add») InterfaceInteraction.alert(self) elif id_element[0] == ‘previous’: print(self) InterfaceInteraction.alert(self) elif id_element[0] == ‘next’: print(cart) InterfaceInteraction.alert(self) elif id_element[0] == ‘order’: print(«Ok_order») InterfaceInteraction.alert(self) elif id_element[0] == ‘continue’: print(«Ok_continue») InterfaceInteraction.alert(self) else: InterfaceInteraction.alert(self) connection.close() except Exception as e: print(‘Фатальная ошибка!’ + f’n’) return
Валерий, главная проблема в том, что сам список товаров в карусели никак не получится разово использовать. Я так понимаю, этот список вы получаете каждый раз с помощью запроса к БД. Список этот должен быть обязательно отсортирован для того, чтобы каждый раз при запросе результат был один и тот же.
Допустим вы выводите информацию о первом товаре в списке (Индекс 0), тогда при описании inline кнопок вы должны в кнопку следующего товара добавлять следующий индекс (1) в списке этих товаров. Для кнопки предыдущего — индекс последнего элемента в списке (-1 или len(data)-1, где data — ваш список), либо вообще не выводить эту кнопку.
Каждый раз нажимая на кнопку следующий или предыдущий, вы обращаетесь к БД, опять получаете этот список, вытаскиваете элемент по индексу, который лежит в callback_data, обрабатываете эти данные и выводите сообщение с этими данными. Кнопки следующий и предыдущий оформляете отталкиваясь от текущего индекса.
Источник: qna.habr.com