Всем привет на связи Артем Башмачок из Bashmak Code!
Cегодня мы расскажем про бота, который помогает принимать платежи.
Клиент пришел с желанием сделать простого бота для обратной связи, но переросло это во что-то более серьезное.
Основное техническое задание
Клиент – основатель крупного агентства по продвижению, он оказывает услуги владельцам Telegram-каналов.
Идея бота – помочь принимать платежи владельцам каналов, которые не имеют возможности принимать платежи в России, так как являются гражданами других стран или не имеют самозанятости.
Ознакомившись с задачей заказчика, мы составили подробное ТЗ и Mind-карту, в которой описали сценарий работы бота.
Mind карта бота
Далее приступили к разработке бота на языке программирования Python. Протестировали и доработали. Запустили бота.
Функции у бота
• Принимает оплату за рекламу вместо вас и отправляет денежные средства на указанные реквизиты, либо хранит их до вывода в боте.
• Оплачивает рекламу/услуги и т.д. с вашего счета в банке.
• Принимает оплату на самозанятость владельца и отправляет денежные средства на указанные реквизиты, либо хранит их в боте.
Работа бота
Рассмотрим подачу заявки на пополнение.
Допустим администратору Ивану потребовалось принять оплату от менеджера Евгения за рекламу, но проблема в том, что Евгений может оплатить только Cбербанком, а Иван принимает только Юmoney.
В таком случае Иван создает заявку на пополнение в боте, вводит сумму и бот выдает ему реквизиты Cбербанка (реквизиты – нашего клиента, владельца бота). Евгений оплачивает рекламу, скидывает чек и Иван пересылает чек в бота.
Администратор бота видит пополнение и подтверждает заявку, начисляет денежные средства Ивану, со своей комиссией 5%.
Заявка, приходящая администратору бота
Какие проблемы решил бот?
Со стороны заказчика: ранее заказчик вручную принимал заявки на пополнение и вывод от каждого своего клиента, но это было трудно и энергозатратно. Наш бот позволил удобно сортировать, получать и обрабатывать заявки.
Со стороны пользователя: мы решили проблему многих владельцев каналов с приемом оплаты. К примеру, теперь владельцы каналов из Казахстана, Беларуси и Украины могут так же работать с русскими владельцами без каких либо задержек в оплате.
Результат
Наш клиент решил поставить комиссию 5% от пополнений пользователей.
В первый месяц благодаря качественному маркетингу и автоматизации процесса с помощью нашего бота клиент увеличил месячную выручку в 6 раз - с 600.000 до 4.000.000 рублей (со слов клиента), взяв комиссию 5% и заработав 200.000 рублей!
Когда ты начал, дальше уже нюансы и мелкие трудности которые решаются в моменте.
Приведу топ 3 сложности которые чаще всего я встречал.
1. Выбор тематики.
В одном чате одну тематику советуют, в другом чате другую, а предыдущую тематику из первого чата хаят.
И что же выбрать ?
Разберем вариант когда бюджет подходит под многие тематики.
Анализируем тематики которые на хорошем подъеме и пользуется в данный момент популярностью.
Условно видите как часто рекомендуют тематику, пошли в сервисы аналитики и посмотрели на сколько она активна.
2. Рекламный креатив.
Прямо самая боль всех админов это подобрать креатив который будет вести подписчика в приемлемую цену.
Креативы так же очень быстро выгорают, по этому всегда нужно держать руку на пульсе и контролировать процесс.
3. Закуп рекламы и продажа рекламы.
Для не знающего азов, действительно кажется что это самое трудное, и сам я так думал когда закупал на свой самый первый канал ( были даже мысли найти закупщика, но из-за того что не нашел, стал сам закупщиком в итоге )
По факту закуп рекламы и продажа - это алгоритм, следуя которому успешно можно закупать и продавать рекламу, проблема в том, что этой информации очень мало в открытом доступе, но если взять консультацию или обучится, то в дальнейшем трудностей это не вызовет.
Не забывайте о том, что рынок постоянно меняется, что-то стареет, что-то появляется новое.
По этому всегда нужно получать новые знания, не пренебрегайте консультациями и прочими методами поиска новой информации.
Ещё больше про Telegram, маркетинг и как можно заработать там, я пишу в своём канале
Так же жду ваши вопросы, буду рад на них ответить.
Контент-менеджер - это тот, кто отвечает за создание, редактирование и управление контентом на различных платформах, включая социальные сети, блоги, веб-сайты и мессенджеры, такие как Telegram. Их цель - обеспечить постоянный поток интересного, полезного и привлекательного контента, который привлечет и удержит аудиторию.
Что делает ваш этот контент-менеджер?
- Разработка контент-стратегии:
Определение целей и задач контента, выбор тематики, определение ключевых аудиторий и платформ для размещения контента.
- Создание контента:
Написание текстов, создание изображений, видео и других медиа-материалов в соответствии с контент-стратегией.
- Редактирование и оформление:
Обработка и редактирование контента для обеспечения его качества, удобства чтения и визуальной привлекательности.
- Распространение контента:
Планирование и размещение контента на различных платформах, ведение расписания публикаций, а также взаимодействие с аудиторией и отслеживание реакций.
- Аналитика и оптимизация:
Анализ эффективности контента, изучение метрик и обратной связи, а также внесение корректив в стратегию на основе полученных данных.
Зачем вам нужен контент-менеджер?
Контент-менеджер поможет вам создать сильный и эффективный контент, который будет привлекать и удерживать вашу аудиторию в Telegram.
Они обеспечат постоянный поток интересного и актуального контента, который поможет вам достигнуть ваших целей и выделиться среди конкурентов.
Готовы поднять свой контент на новый уровень?
Тогда вам придется искать хорошего контент-менеджера.
Ещё больше про Telegram, маркетинг и свою жизнь, я пишу в своём канале
Так же жду ваши вопросы, буду рад на них ответить.
Без банальных советов в духе «Заведите и ведите хорошо, а плохо не ведите». Примеры — всё внутри.
В последнее время ко мне всё чаще обращаются эксперты, которые хотят создать свой Telegram-канал. Обычно они просто ищут копирайтера, но там всё не так просто:
Эксперт хочет, чтобы канал как-то сам наполнялся и приносил деньги.
Копирайтер хочет, чтобы ему всё дали и он просто писал текстики.
И интересы этих двух людей часто не пересекаются — эксперту надоедает тратить деньги на штуку, которая не приносит ни денег, ни удовольствия.
Здесь я дам небольшую инструкцию, по которой я запускаю Telegram-каналы своим клиентам. В итоге у них получается нормальная работающая система, которая не сжигает просто так деньги и не забирает всё свободное время.
Определиться, зачем вообще нужен Telegram-канал
«Дать знания людям», «Помочь пользой» — всё это фигня, я в это не верю. Все мы хотим зарабатывать деньги, даже если цели у нас благородные.
И вот как Telegram-канал помогает эти деньги получать:
Продавать свои услуги. Например, таргетолог хочет найти себе клиентов. Он заводит канал, льёт туда трафик, пишет полезные посты и рано или поздно к нему приходят за таргетом.
Продавать своё обучение и продукты. Таргетолог собирает таких же таргетологов, показывает в постах, как он решает сложные задачи, запускает курс и уезжает на Бали или куда там сейчас ездят таргетологи.
Продавать рекламу. К таргетологу приходит онлайн-школа таргетологии и покупает рекламное размещение платного вебинара по таргетологии и нумерологии.
Не обязательно монетизировать чем-то одним, можно использовать все три способа.
Можно делать всё это и без монетизации, но тогда это будет уже скорее хобби. Я вот музыкой занимаюсь для души, деньги на это трачу. Если вдруг начну на этом зарабатывать — супер, но иллюзий я не строю.
Определиться с концепцией канала
После того как поняли, зачем нам вообще нужен Telegram-канал, уже начинаем продумывать концепцию. То есть что это за канал, для кого и что будем писать.
Например, маркетолог-фрилансер хочет продвигать себя на рынке как специалиста. У него есть клиенты, он может и рекламу настроить, и стратегию продвижения продумать. Ему нужно, чтобы о нём знало чуть больше народу, тогда он сможет продавать себя дороже.
Какая тут может быть концепция. Канал для бизнесменов, которые хотят продвигать свои магазины. Будем писать, как сэкономить на рекламе, какие инструменты стоит попробовать, что-то из новостей, свои кейсы из практики.
А вот тот же маркетолог, но у него клиентов как косточек в арбузе. А денег хочется больше. Тогда можно сделать свой видеокурс для таких же маркетологов и продвигать его через свой канал.
Какая концепция может быть тут. Канал для маркетологов, которые хотят вырасти в профессии. Будем писать побольше об инструментах, о старте в профессии, как зарабатывать больше денег и меньше работать, советы, мемасы.
Главное — помнить, для кого и зачем мы будем писать
Может показаться, что сейчас все такие умные и похожих каналов видимо-невидимо, пруд пруди, вагон и маленькая тележка, хоть попой ешь, уйма, дофига и очень много. Да, это так. Но в любом случае, опыт у всех уникальный и всё равно будет кому-то интересен. А ещё при грамотном подходе каналы даже с такой банальной концепцией всё равно взлетают — важна личность эксперта.
Но концепцию можно усилить какой-то фишкой, и тут надо хорошо подумать.
Мы выяснили, что очень много компаний работают и продвигаются в регионах, и там до сих пор работают такие инструменты как баннеры на дороге и объявления на подъезде. Но про это говорит мало экспертов, потому что все сосредоточены в основном на крупных городах со своими латтеми и интернетами.
Так почему бы не завести канал про маркетинг в провинции, если там непаханое поле?
Какие ещё могут быть фишки:
Ленивый продюсер. Блог. - который не любит работать и пытается сделать всё чужими руками.
Влад не шутит - постит всякие каламбуры и приколюхи.
🌼 Радости и ⛈трудности мамы-педиатра - у которого 7 детей
Write it hot - который пишет только про инвестиции
Фишки может и не быть. Не надо вымучивать это из себя — вы и так уникальны в любом случае.
Найти копирайтера
Канал можно вести и самому — это будет суперпреимущество. Но обычно получается так:
Эксперт начинает вести канал
Появляются дела поважнее
Эксперт заканчивает вести канал
А ещё часто эксперты не могут писать хорошие тексты — и это абсолютно нормально.
Эксперт не может быть экспертом во всём.
Я как-то общался с владельцем сети автосалонов. В личке он мне рассказывал кучу интересных вещей: про братков на геликах, как обманывают автосалоны, что новые автомобили могут быть не новыми. Но когда он всё это пытался связать в текст, получалась каша: огромные абзацы, канцелярит, «Уважаемые друзья» и прочее.
Если бы он сделал свой канал с копирайтером, был бы огненный блог про автосалоны. Но так его будет мало кто читать.
Копирайтер как раз помогает оформить все мысли в связный текст. А ещё он сохраняет кучу времени.
Найти своего человека, который будет не просто писать посты и вносить бездумно правки — огромный труд. Если вы уже искали копирайтера, то знаете, какой бред иногда пытаются вам втюхать под соусом вкусных текстов и богинь копирайтинга.
Чтобы найти копирайтера, надо:
Написать текст вакансии. Написать, чем надо заниматься, на какую тему писать, сколько будет получать копирайтер.
Запостить текст вакансии. Можно и на hh, авито и тд.
Ждать отклики и отсматривать адекватные. На это может уйти неделя, но оно того стоит.
Пообщаться с копирайтером, дать ему попробовать написать пост в качестве тестового задания.
Если тестовое норм — надо брать. Если не норм — искать дальше.
Это долгий и сложный процесс. Вам может прилететь 300 откликов, и в большинстве случаев будет написана какая-то дичь. Надо сидеть, читать и думать, сможете ли вы работать с этим человеком.
Сколько платить копирайтеру — вопрос сложный. Чем больше вы готовы заплатить, тем лучше специалиста получится найти. Кто-то готов писать посты за 100₽.
По моим ощущениям, на данный момент нормальная цена за не самый сложный пост — 2000 ₽. Но всё очень индивидуально.
Продумать конкретно, о чём писать
Здесь надо определиться с темами и форматами контента для Telegram-канала.
Темы зависят от вашей ниши. Например, если вы владелец бухгалтерской компании и хотите привлекать больше клиентов на обслуживание, то можете писать про:
Налоги — как сэкономить, поругать ЕНС, фишки с НДС.
Деньги — на чём можно заработать бизнесу.
Бизнес — нюансы работы с бухгалтерией, наблюдения из вашего опыта.
То есть писать о том, что будет интересно вашим читателям. Не вам, не вашей сестре, партнёру или собаке — а именно читателям.
Форматы — это то, как вы будете писать про ваши темы. Форматы могут быть такими:
Полезная польза — лайфхаки, советы.
Кейсы — как вы кому-то помогли за деньги.
Новости — что происходит в вашей сфере и как это скажется на ваших читателях.
Инструкции — делай вот так и всё будет хорошо.
Продукты — что вы такого делаете, что вы продаёте.
Лайфстайл — «Мы поставили в офисе ёлку из переработанного г**на» или «Сходил в горы, преисполнился в сознании, понял, как заработать денег».
Юмор — все его любят.
Я советую сделать табличку, где прописать темы, форматы и расписать, почему именно ЭТО нужно для вашего канала.
И так незаметно можно уже накидать с десяток тем постов для канала. Придумали тему → подумали, зачем её читать людям → подумали, какую пользу это принесёт лично вам.
Построить работу с копирайтером
У вас есть понимание, о чём вести канал, есть копирайтер — пора начинать работать конкретно.
Есть много способов, как работать с копирайтером. Расскажу про один, самый, на мой взгляд, классный и действенный — когда эксперт придумывает темы сам и отправляет голосовое копирайтеру.
Почему эксперт должен сам придумывать темы постов. Лучше вас никто не знает целевую аудиторию. Если ваши читатели — будущие клиенты, то только вы знаете их лучше всех. Вы с ними работаете, каждый день общаетесь, любите их, ругаетесь с ними, пишете им письма и так далее.
Если темы будет придумывать копирайтер, то это будут вымученные посты, которые пишут все: «Как оптимизировать налоги», «Ой, не забудьте заплатить», «А вот такая новость была». Что бы копирайтер делал это хорошо, он должен быть в штате и находиться постоянно в офисе — а это совсем другой бюджет и профит от этого может быть не самый классный.
Придумывать темы для постов не так сложно, как может показаться на первый взгляд. Берите за основу пример из своей жизни.
Основа темы для поста — пример. Сначала пример, потом тема, потом пост
Темы для постов находятся вокруг вас, главное вовремя их заметить:
Нагрубил клиент — сделали пост на тему, почему в бизнесе важно разговаривать вежливо, и проиллюстрировали примером из жизни.
Вспомнили, как ваш клиент прокололся на какой-то глупой ошибке и получил проверку — сделали пост, что в бизнесе мелочей не бывает.
Клиент спросил, какие нужно собирать бумаги для работы — сделали инструкцию по сбору бумаг.
Пришёл клиент на консультацию с проблемой — сделали кейс, как решили эту проблему. Или пост, как не попасть на такую же проблему.
Как показывает практика, пост может родиться вообще из любого примера, необязательно из рабочей практики.
Важный момент: если вам кажется, что пост будет никому неинтересен — подумайте ещё. Вы во всём этом варитесь и вам уже скучно, а читатели о таком могут и не знать
Если в посте нет примера, то его будет не так интересно читать. С примером и легче для вас, и понятнее для читателя. Поэтому берём его за основу.
Заведите себе темник — документ, где будете записывать темы для постов. Можно просто стандартное приложение заметок. Главное, чтобы был доступ с телефона, потому что идеи могут прийти и в пробке, и на прогулке, и в туалете. А записывать сразу — очень важный навык, знаю по себе.
Если есть тема и есть пример, можно записывать голосовое сообщение для копирайтера.
Почему именно голосовое, а не текстом? Потому что голосовым можно наговорить очень много офигенных подробностей, которые уйдут в пост.
Не надо записывать подкаст — просто типичное голосовое сообщение со словами-паразитами, эканьем, причмокиванием и так далее. Не выдумывайте красивые слова и не пытайтесь построить структуру. Сделать из этого хороший пост — работа копирайтера, а не ваша. Представьте, что хотите рассказать какую-то штуку другу.
Задача голосового — максимально раскрыть тему и выдать как можно больше крутых мыслей, чтобы потом копирайтер переделал голосовое в буквы.
Оформить канал
Что входит в оформление:
Аватарка — желательно яркая, с вашим лицом. В потоке однообразных серых аватарок она должна быть видна сразу.
Название — не просто Имя Фамилия, а чем вы ещё занимаетесь, чтобы было понятно с ходу. Например, «Иван Иванов про инвестиции», «Снимаем рилсы с Джеймсом Куценко». Сильно креативить не нужно, если не умеете.
Описание канала — «Я Аня, диетолог. Помогаю людям похудеть без жёстких тренировок» или «Андрей Андрейко, владелец сети барбершопов. Подробнее о франшизе по ссылке». Ну и контакты для связи не забыть оставить.
Пост-закреп — в первом посте на канале рассказать кто вы, чем занимаетесь, чем можете быть полезны, что продаёте. Обязательно закрепить, чтобы любой новый читатель смог быстро узнать о вас всё нужное. Позже в пост добавить ссылки на ваши самые классные посты.
После этого можно запостить 5–7 готовых постов. Это должны быть классные и отборные посты, потому что канал ещё пустой, и надо быть готовым к приёму новых читателей. А уже после этого постить по своему графику: каждый день или раза три в неделю.
Заняться трафиком
Начинать готовиться к закупке трафика надо заранее, а не когда у вас уже всё готово.
Без привлечения читателей заниматься Telegram-каналом бесполезно. В Telegram нет органического трафика, поэтому можно годами писать для 100 подписчиков.
Если вести канал только для нескольких человек, то рано или поздно это вам надоест. Не будет реакций, комментариев, лидов — тогда зачем это всё? Естественно, эксперты, кто не разобрался с трафиком, забрасывают канал и списывают всё как неудачную инвестицию.
Поэтому контент важен, но без трафика он не работает. Как и трафик будет только вытягивать деньги, если посты будут не очень.
Вот как можно привлекать читателей на свой канал:
Покупать рекламу в других Telegram-каналах
TG Ads
ВК
Яндекс Директ
Через контент-маркетинг
У каждого способа есть свои плюсы и минусы, и будут работать в зависимости от ниши и прямоты рук.
Я советую нанять человека, который будет заниматься трафиком для вашего канала. Он и рекламу закупит, и Директ настроит, и вообще всё что угодно. Стоит в среднем 10–20% от рекламного бюджета, но можно потерять больше, если заниматься этим самому.
Поставить всё на поток
На этом всё. Получается такая схема:
Придумываете тему.
Записываете голосовое сообщение.
Копирайтер пишет пост.
Параллельно льётся трафик на канал.
Важно в перерывах между полезными и крепкими постами не забывать говорить про свои услуги или продукты. А то какой в этом тогда смысл.
Ещё больше про Telegram, маркетинг и свою жизнь, я пишу в своём канале
Так же жду ваши вопросы, буду рад на них ответить.
С момента выхода первой части статьи из рубрики «сам себе экосистема» прошёл уже практически год! За это время, мы успели с вами реализовать клиенты VK и YouTube, которые работают на Android 2.2+, а также на Windows Phone 8, написать небольшую 2D-игру с нуля весом менее 1Мб, которая работает практически везде и довести существующее приложение до ума, дабы оно работало даже на смартфоне с дисплеем 240x320! Но на дворе 2024 год, люди стремительно переходят из соц. сетей в продвинутые мессенджеры и уже сложно себе представить современного человека, который не пользовался бы «телегой» или даже «вайбером» в качестве основного средства общения. Поэтому я решил реализовать клиент Telegram на смартфоне 14-летней давности на базе официальной реализации MTProto от команды Telegram — TDLib. Сегодня мы с вами: узнаем новые причины мотивации вернуть в строй смартфоны прошлых лет, напишем на C# реле-сервер, который обрабатывает пакеты MTProto и кодирует их в простой текстовый формат датасетов, который можно моментально обработать даже при нестабильном GPRS-соединении на 21-летнем Siemens C60, а также узнаем о разработке миниатюрных Android-приложений на базе «голого» API-системы, которые не тянут за собой никаких зависимостей, в том числе и AppCompat/androidx. Интересно? Тогда жду вас под катом!
На дворе уже стукнул 2024 год, современные смартфоны предлагают какие-то немыслимые мощности относительно тех, которые когда-то были в первых Android-девайсах. Сейчас за сотню баксов можно купить смартфон с хорошей 1080p IPS-матрицей, 4Гб ОЗУ и 8-ядерным шустрым чипсетом, который вполне способен плавно тянуть даже стремительно «жиреющие» на ресурсы клиенты социальных сетей, банков и прочие необходимые в повседневной жизни приложения. И казалось бы: всё хорошо, покупай себе редмик раз в год или айфон раз в несколько лет и наслаждайся всеми прелестями работы современных приложений…
Для многих людей смартфон — это лишь инструмент, повседневный компаньон, который помогает облегчить выполнение каких-то задач. Им совершенно не важно, как он выглядит, как ощущается в руках, какой у него дисплей и железо «под капотом», лишь бы работал да и нормально. Но есть и другая категория людей, для которых телефоны, смартфоны и любые портативные гаджеты — это не просто утилитарный девайс, а настоящее инженерное произведение искусства, с которого буквально сдувают пылинки и стараются до последнего пользоваться ими как повседневными устройствами. Хотите пример? Смотрите ниже:
Фактически, среди современных смартфонов по сути и нет представителей такого нынче вымершего форм-фактора, как сайдслайдеры с физической QWERTY-клавиатурой, боковые раскладушки с двумя дисплеями и даже из QWERTY-моноблоков есть только смартфоны от Unihertz. Даже среди моноблоков с тачскринами нет никакого разнообразия, лишь без-рамочные одинаковые девайсы за исключением устройств от Sony.
Galaxy S Plus
Раньше меня часто спрашивали, мол, да как ты вообще можешь пользоваться смартфоном 10-летней давности, на котором давно нет официальных клиентов популярных сервисов и только недавно, с развитием блога, мне перестали задавать этот вопрос, поняв, что это бесполезно — ведь это дело принципа и порыва энтузиазма! Смотрите сами: у нас уже есть простенькие, но вполне рабочие клиенты ВК, YouTube, сейчас я допиливаю клиент «Сбера» на СМСках, реализую карты OpenStreetMap (правда пока без адекватной навигации), а в будущем планирую написать приложение для мониторинга погоды и трекинга посылок. Кроме того, в рамках этой статьи мы реализуем с вами клиент Telegram: так чем же это не функционал современного смартфона?
Но хорошо, с функционалом разобрались, однако для многих читателей слова «старый смартфон» это прямые синонимы «тормозной смартфон», мол «фуу, да как можно пользоваться этим тормозным кирпичом, он же лагает в последней версии моей ВКшечки!». Но давайте поставим вопрос ребром: может, это не столько девайсы немощные, сколько сами приложения, с кодовой базой, которая тянется более 10 лет, откровенно жиреют, обрастают костылями и хаками после далеко не одного поколения программистов, которые над ними работали? :) Один, вот, предпочитал пользоваться чистым AppCompat'ом, другой решил притащить зависимость, которая, например, оптимизирует виртуализацию ListView, третий решил заменить всю сериализацию Json со встроенных классов в Android на что-то стороннее и реализовал это костылями и вот так, по чуть-чуть изначально оптимальный и шустрый код превращается в неповоротливое УГ, которое не рефакторили кучу лет.
На видео Galaxy Pocket Neo — очень дешёвый Android-смартфон из 2011 года с 1-ядерным чипсетом на ~800МГц и 256Мб ОЗУ. При этом всём, Android софтварно рисует все анимации на процессоре, без участия GPU.
А значит у стареньких девайсов всё равно есть шанс быть полезными и стать полноценными повседневными смартфонами даже спустя более чем десять лет после выхода! И в сегодняшнем материале, я вам расскажу об особенностях разработки самопального клиента Telegram с собственным прокси-сервером, которое концептуально допускает реализацию даже на кнопочном Siemens C60 2003 года. Как? Читаем ниже!
❯ Принцип работы
В отличии от ВК (который разрабатывали те же самые люди, что и Telegram), API которого построено на базе REST-запросов и концепции Longpolling'а для моментального получения событий с сервера, Telegram построен на базе собственного протокола под названием MTProto, который может работать поверх любого «транспорта» (протокола нижнего уровня) — TCP, HTTP, WebSocket и т.п. Сам по себе MTProto в современном виде, разработка прожженного математика Николая Дурова и его команды — протокол относительно сложный для реализации «на коленке» и в первую очередь требует довольно серьезного понимания принципов работы современной криптографии, да и документирован он всё ещё не особо хорошо. Кроме того, у MTProto весьма интересный бинарный формат пакетов, эдакий велосипед Protobuf. В долгосрочной перспективе поддерживать свой велосипед MTProto может быть весьма проблематично, учитывая не самую лучшую документацию.
Но городить велосипед и не нужно, поскольку у команды Telegram есть официальная реализация MTProto — библиотека TDLib, которая инкапсулирует в себе не только детали реализации протокола, но и сетевой ввод/вывод и выбор транспорта, хранение базы данных сообщений и авторизации, автоматическую загрузку фото и видео, конвертация объектов из бинарного формата MTProto в JSON и полная многопоточность и частичная потоко-безопасность. С одной стороны это плюс — уже готовое решение для реализации клиента на новой поддерживаемой платформе, где есть OpenSSL (можно статически слинковать), zlib (линкуется статически), сокеты и файловый ввод/вывод, а также довольно неплохой механизм JSON-based API, которое позволяет использовать библиотеку в любом языке, который поддерживает вызов C-функций, а с другой и минус — библиотека довольно много весит, в одиночку прибавляя ~20Мб веса приложения для каждой архитектуры, у неё течёт память и у нее странный механизм получения данных с сервера (например, нельзя ответить на сообщение, зная его ID, если сообщение предварительно не загружено, при том что на сервере весь ответ — это просто ID, на какое сообщение прилетел ответ).
Понятное дело, что на стареньком смартфоне использовать оригинальный TDLib будет проблематичным — даже если собрать либы современным NDK и запилить JNI-интерфейс, библиотека «жрёт» много ОЗУ (20-100Мб «вхолостую», в зависимости от числа диалогов и частоты прилетающих событий, плюс со временем течет до 1-2Гб, если не использовать базу данных сообщений. Скорее всего, это косяк в реализации пулов, объекты из которых выгружаются при сбросе в базу, но не выгружаются при высоком потреблении ОЗУ) и уж тем-более TDLib не запустить на любимых кнопочных Java-сонериках! Поэтому я решил написать прокси-сервер, который отправляет команды, слушает ивенты TDLib и предоставляет REST-like API для клиентских программ, которые просто вызывают какой-либо метод, а в ответ получают простой и короткий строковой датасет только с необходимыми полями, весом до 10Кб (что позволяет его быстро загрузить даже с GPRS-интернетом), который можно быстро распарсить даже на преусловутом Siemens C60!
К сожалению, поскольку TDLib прожорлив, я не смогу захостить на своём сервере инстансы для читателей, которые хотят поюзать приложение, поэтому вам придется ставить и запускать сервер на своём VDS/компьютере с белым IP/роутере, если под него есть .NET Core :)
Клиентом же будет выступать Android-смартфон, где приложение будет фронтэндом данных с сервера. Ничего сложного на первое время нет: первое окно — это список диалогов, второе окно — список сообщений в диалоге + поле для написания сообщения, третье окно — информация о пользователе. Всё это я реализовал за три дня не-напряжной работы «на коленке».
Давайте же перейдем к реализации сервера!
❯ Прокси-сервер
Сервер я решил писать на C#, поскольку у .NET Core сейчас всё очень хорошо с кроссплатформенностью и производительностью. Его можно даже на Raspberry Pi запустить :)
Итак, какая-же архитектура такого сервера может быть? Программа инициализирует TDLib, начинает слушать её события в отдельном потоке, пока в основном потоке крутится HTTP-сервер, который обрабатывает каждый отдельный запрос с клиентского приложения. Почему синхронно? Потому что TDLib фактически не возвращает никаких идентификаторов для возвращаемых датасетов, дабы их можно было отличить друг от друга. Приведу пример: у нас есть метод getChatHistory, который возвращает n-сообщений. При этом TDLib сам определяет, сколько хочет сообщений вернуть (и в первый вызов возвращает одно сообщение вне зависимости от настрое и отправляем пакет message n-раз. При этом в пакете message нет какого-либо ID, который позволял бы ассоциировать текущий объект с какой-либо операцией. Увы!
Начинаем с коммуникации с TDLib. Для работы с библиотекой, мы будем использовать json-интерфейс. Для .NET есть биндинги через C++/CLI, но в таком случае, сервер не будет работать на Linux. Для работы с библиотекой хватит лишь три функции: CreateClientID, которая аллокейтит новый инстанс клиента, Send, которая асинхронно отправляет JSON-объект с командой, которую затем обработает TDLib и Receive, которая ждёт N-секунд и возвращает в виде ASCII-строки (!) JSON-объект с описанием события или данными после одного из запросов. За это у нас отвечает класс TDLibInterface, который объявляет PInvoke-методы для вызова нативных методов из библиотеки. .NET Core сам подгрузит библиотеку tdjson (причём на Linux он добавит ей префикс а-ля libtdjson.so, а на Windows загрузит tdjson.dll) и сам разберется с маршаллингом аргументов функций: например, string автоматически преобразует в const char*. Тем не менее, с const char* возвратами нужно быть аккуратнее — у меня был SIGSEGV, пока я ручками не конвертировал их в обычную строку.
З.Ы: На Пикабу нет отдельного тега для кода, а вставить листинги картинками я не могу из-за ограничения на 25 медиаэлементов. Так что листинги будут совсем без табов, но алгоритм их работы понять можно :)
Позволю себе чуточку критики в сторону TDLib. Во первых, почему нет s-версии функции с возможностью указать длину входной строки, а tdjson полагается исключительно на \0 в конце строки? Во вторых, почему const char*, а не wchar_t*? Сейчас юникод во входной строке приходится escape'ами превращать в \u-последовательности. После этого, нам нужно написать обёртку над TDLib, которая будет вызывать для зарегистрированных событий специальные функции, называемые коллбэками. При этом закомментированный WriteLine снизу — это «дебаг» для того, чтобы узнать названия неизвестных мне ивентов :)
В каждом объекте, полученном с помощью receive, есть поле "@type", которое содержит в себе имя класса возвращаемого объекта. Первый же вопрос от читателей — почему я использую JObject с ручным дерганьем нужных полей и вручную пишу JSON в виде строковых литералов вместо нормальной сериализации/десериализации? Ответ прост: во-первых, для актуализации Data-классов придется писать кодогенератор из TL-схемы, а во-вторых иногда TDLib может возвращать немного разные объекты в JSON, из-за чего приходится мудрить с атрибутами на этих самых Data-классах, иначе десериализатор выбросит исключение. Это решается нормальными юнит-тестами на всех вариантах данных, но зачем себе в колени стрелять, если нужен конкретный фиксированный функционал и лишь малое число от всех полей, возвращаемых TDLib?
string recv = NativeInterface.Receive(10.0d);
if (recv != null) { JObject json = JObject.Parse(recv);
if (!handlers.ContainsKey(type)) { //Console.WriteLine("Unknown event type: {0}", type); continue; }
handlers[type](recv, json); }
Теперь переходим к самому интересному — обработке событий и реализации синхронного клиента, который позволяет без async/await просто запросить список сообщений и сразу же его получить (такой подход может быть полезен и юзерботам, которые не хотят размазывать стейты по всей программе). Почему без асинков? Честно сказать, мне они просто не нравятся: как привык к концепции wait/notify и коллбэков из Java, так их и юзаю всю жизнь :)
Сначала TDLib запрашивает параметры инициализации (стейт authorizationStateWaitTdlibParameters), затем если пользователь не авторизован — запрашивает номер телефона и код подтверждения (плюс дополнительные шаги для авторизации если они есть). В конце, TDLib возвращает стейт Ready, что означает готовность библиотеки к работе:
После этого, можно начать работу с данными. Обратите внимание, мой подход потоко-небезопасен, его нельзя дергать из нескольких потоков одновременно! В коде ниже, я вызываю метод для фетча сообщений, а затем в соответствующем коллбэке от TDLib обрабатываю данные (дабы статья не разрасталась на 20+ минут, я чуть урезал все листинги).
public List<Message> QueryMessagesInChat(long chatId, long lastMessage, int count) { messages.Clear();
public User QueryUser(long userId) { string json = Utils.Format("{\"@type\": \"getUser\", \"user_id\": \"{0}\" }", userId); NativeInterface.Send(InstanceID, json);
waitHandle.WaitOne(); return user; }
Переходим к реализации самого сервера, для наших целей хватит обычного HttpListener. Сначала мы зарегистрируем все поддерживаемые методы и занесем их в ассоциативный список ключ-значение. Сами методы реализованы в виде делегатов, которые принимают лишь один аргумент — список параметров из строки запроса, а возвращают строку — все ответы, за исключением особых (связанных с загрузкой вложений) — текстовые.
Переходим к обработке запроса. Метод ищет, зарегистрирован ли запрошенный метод и если да, то парсит строку запроса, которая начинается с "?", которую затем передаёт в виде коллекции ключ->значения обработчику метода:
А сами методы, в свою очередь, дергают соответствующие функции из клиента и формируют на их основе датасет в примитивном формате:
public staticstring QueryChats(Dictionary<string, string> args) { if(args.ContainsKey("count")) { int count = int.Parse(args["count"]); StringBuilder ret = new StringBuilder();
В результате получаем вот такой простой датасет, который, как я и говорил, легко распарсить и на Siemens C60, и на Atmega328 — да где угодно! В целом, такой сервер можно использовать для реализации бота в телеграме, который будет передавать показания каких-то датчиков, сигнализацию и прочие клевые штуки!
Переходим к реализации клиента, т.е. приложения на Android. Здесь будет не менее интересно!
❯ Пилим для Android
В геймдеве есть своеобразный мем — некоторые инди-разработчики сначала начинают делать меню, вместо основного геймплея, что становится предметом насмешек среди других разработчиков. Но в разработке приложений для смартфонов всё по другому — здесь как-раз таки хорошо заранее продумывать макет будущего приложения!
Поскольку у нас с вами мессенджер, то главный экран должен представлять из себя список чатов (ListView) и верхнюю панельку, где в будущем могут разместиться настройки и свайп-менюшка:
Такой вот простой макет.
Каждый пункт меню — это тоже отдельный layout, в котором мы по шаблону строим внешний вид будущего элемента списка. На немолодых устройствах есть смысл использовать как можно меньше контейнеров в layout'е, поскольку пересчет позиций и размеров элементов — одна из самых «тяжелых» операций в UI-фреймворке вообще. Кроме того, не стоит использовать кучу картинок и drawable — в Android 2.x всё 2D рисуется софтварно, аппаратное ускорение появилось только в 3.0 (частично).
Но дабы в списке диалогов что-то появилось, нужно сначала реализовать фетчинг (получение) этих самых диалогов с сервера! Сам объект, который занимается обработкой запросов называется ClientManager и является синглтоном — он в единственном экземпляре на все время работы программы. Помимо менеджмента «ноды» (т.е. прокси-сервера), токена для авторизации и обработчика ошибок, ClientManager реализует метод для асинхронного запроса информации с сервера и, собственно, формирует строки запросов с помощью соответствующих методов:
Подгрузка чатов и сообщений реализована через Adapter — концепция «виртуальных» списков, которая предполагает что система создаст не 50 элементов интерфейса на каждую кнопку чата, а только 5 и будет их виртуально «мотать по кругу», обновляя только данные в уже существующих элементах. Это позволяет значительно ускорить отрисовку, учитывая то, что Android 2.x Canvas рисуется программно.
Ну вы уже явно замучились видеть простыни кода, давайте посмотрим что у нас вышло!
Шустренько, да? А ведь это ультрабюджетник Alcatel OT-916D, один из последних массовых дешевых QWERTY-смартфонов за 5 000 рублей из 2012 года. Кстати, смартфон подарил мне читатель chuvakoff с Хабра!
Переходим к окну чата. Основной макет почти такой-же, как и у основного окна: только добавилась панелька для ввода сообщения снизу.
Концептуально, всё тоже самое — запрашиваем данные с сервера, парсим их и загружаем в адаптер, благодаря чему мы сможем листать наш диалог. Однако в сообщения я добавил контекстное меню с стандартными фишками типа копирования, ответа и прочих подобных действий. Поскольку у нас нет ни пушей, ни еще каких-либо средств для поулчения данных о новых сообщениях, я раз в определенный интервал просто получаю сообщения — и если новый датасет отличается от старого — обновляю окошко чата.
Переходим к реализации поля для ввода сообщения. Здесь всё просто — на серверсайде за это отвечает метод SendMessage. Однако для того, чтобы с нашего клиента можно было ответить на другие сообщения, я ввёл также «контекст ответа», в котором запоминается сообщение, на которое мы хотим ответить. Telegram также поддерживает Markdown, однако его полная поддержка пока не реализована.
В остальном же, функционал конечно пока совсем базовый, однако клиент работает очень шустро даже бюджетной X10 Mini Pro и позволяет чатится с моими читателями в Telegram. В будущем хотелось бы допилить:
Поддержка картинок: Сейчас уже есть кривоватый механизм кэширования изображений на стороне сервера, который позволяет загружать аватарки чатов. В будущем, я добавлю поддержку «галерей» с картинками!
Поддержка голосовых сообщений: Не все их любят, но они порой удобны и выручают. Реализую как прослушивание, так и запись!
Подробный просмотр профилей и менеджмент чатов: Удаление сообщений, чатов и прочие фишечки из официальных клиентов.
Казалось бы — до официальных клиентов ещё очень далеко. Но сам факт, чтобы всё это работало достаточно шустро на девайсах, которым уже более 10 лет!
❯ Звучит интересно! Как заюзать твой клиент?
Тут всё очень и очень просто! В первую очередь, нам понадобится ПК с белым IP, роутер (если под него есть сборка dotnet), либо VDS. Виртуальные сервера сейчас стоят копейки, у ТаймВеба есть тариф за 188 рублей в месяц, которого с головой хватит для нашего сервера.
Такая вот рекламная интеграция (к слову, прокси для всех приложений уже более года крутятся именно на мощностях TimeWeb Cloud)!
Программа сначала запросит номер телефона, а затем код подтверждения Telegram. После этого будет создана папка tdlib/, где будут хранится данные вашей сессии, а также файл authkey.txt, где хранится случайный ключ для сессии (md5 phone_number + response code + псевдослучайное число). Не оставляйте его в /var/www/!
Если всё нормально, программа начнёт слушать порт 13377 на всех сетевых интерфейсах, в т.ч и в локальной сети. После этого, ставим уже предварительно собранный, либо собираем сами в Android Studio APK и в окне авторизации пишем адрес ноды и ключ авторизации. Если всё настроено верно — программа запомнит сервер и будет работать без проблем! Вот так всё легко :) Как видите — всё очень и очень просто!
Кроме того, буквально за пару дней до публикации статьи я сел вечерком из интереса что-нить под Java-телефоны попилить… и, как и обещал, реализовал Proof of Concept возможности работы Telegram даже на сонериках, которым скоро 20 лет стукнет! А ведь если ещё чуть заморочится, можно запустить приложение даже на преусловутых монохромных сименсах!
❯ Заключение
Вот такой у нас получился проект с реализацией лёгкого, примитивного, но тем не менее рабочего клиента Telegram, который на клиентской части вообще не использует никаких зависимостей. Вес собранного APK в release-версии — всего 54 килобайта! Понятное дело что с ростом функционала, вес программы будет увеличиваться, но я обещаю — больше 1Мб он не вырастет :)
Ну а вам, моим читателям, надеюсь было интересно прочитать такой «двойной материал» не только о разработке сетевой части без использования Apache/nginx/IIS, но и UI-фронтэнда для Android-смартфонов, которым уже более 10 лет! Исходный код проекта можно найти на моём GitHub: как приложения, так и сервера, а также убедиться в отсутствии каких либо закладок и, если совсем не доверяете, собрать бинарники сами! Для сборки понадобится VS2017 или свежее, а также Android Studio 2.3.2 (если собираете для Android 2.1 и ниже).
Друзья! Сейчас на Хабре опросы сломаны, поэтому если у вас есть желание, вы можете проголосовать в комментариях: какой стиль статей вам больше нравится — где больше конкретики и кода с пояснением как конкретно работает та или иная часть программы, или наоборот стиль ближе к научпопу, где фрагментов кода нет, или их значительно меньше? Пишите своё мнение о проекте в комментариях!
Кроме того, у меня есть канал в Telegram, куда я публикую бэкстейдж статей, ссылки на новый материал, свои наработки, а также посты о ремонте девайсов и различные мысли.
Статья подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, чтобы не пропускать новые статьи каждую неделю!
Друзья, доброго времени суток. Меня зовут Нурмагомедов Арип, я основатель рекламного агентства "BENCHMARK", а так же блога "Коммерсанты". Сегодня расскажем о нашем самом первом кейс, когда мы только взялись за этот проект, он был одним из самых маленьких проектов в тематике кулинария, а спустя год он в списке самых крупных Telegram-каналов в сфере кулинарии. На сегодняшний день в нем более 100.000 подписчиков.
Как и всегда, расскажем все в деталях и с подробностями: 20 декабря, к нам обратился клиент с вопросом о создании Telegram-канала под ключ. Клиент был новичком в данном рынке и это был его 1-ый запуск проекта, который он хотел успешно запустить, и минимизировать свои риски.
Нашей командой было предложено готовое бизнес-решение для создание проекта, которое позволяло за 7-ь дней подготовить проект к запуску, а уже на 12-ый день совершать 1-ые продажи, получать прибыль с проекта и окупать свои стартовые вложения. И так давайте пройдемся по каждому этапу по проделанной нами работой.
Этап 1. Определение стратегии и бюджета
Наше агентство, рассматривает варианты со стартовым бюджетом от 200.000 рублей, поскольку маленькие бюджеты не дадут ту самую прибыль, которую Вы бы хотели иметь с канала, с учетом затрачиваемого времени на его дальнейшие ведение. Выше вложение = выше прибыль.
С нашим клиентом мы определились со стартовым бюджетом в 200.000 рублей. (+100.000 рублей на дальнейшее финансирование проекта, после запуска) в будущем этот бюджет будет эквивалентен 12.000 подписчикам (а на конец января 17.000 подписчикам) и охватам в районе 3.000-4.000.
С учетом того, что СРМ будет равен 300-350 дальнейшая ежедневная выручка будет составлять от 3.300 до 3.900 рублей.
Так же специально для клиента мы создали финансовую модель с помощью, которой ему будет удобно фиксировать все доходы и расходы, закупы и продажи — это позволит сэкономить в будущем время, а так же построить стратегию развития своего канала на будущее.
Этап 2. Создание/доработка концепции Вашего канала
На данном этапе мы совместно с нашим клиентов разобрали тематики с нарастающим спросом, и отсутствующим предложением на рынке telegram-каналов. И из 10-и тематик наш выбор упал на сферу "Еды и кулинарии" с женской целевой аудиторией.
Нашей командой было предложено более 20-и названий для канала, и в конечном счете выбор упал на название "Авокадо | Рецепты От и До".
Этап 3. Проработка контент-плана
На следующем этапе совестно с заказчиком определились с оформлением контента, учли все пожелания и требования для будущих постов. А так же опубликовали 1-ые 10-ть постов для подготовки к запуску и подготовили контент на 30-ть дней вперед (по 7-мь постов в день).
Этап 4. Создание авторского дизайн-оформления
Один из немаловажных факторов является разработка привлекательной и бросающейся в глаза аватарки для Telegram-канала и описания канала. Поскольку у заказчика не было идей, за счет наводящих вопросов и анализу рынка мы разработали следующий логотип:
Этап 5. Подключение всех необходимых сервисов
После полного оформления необходимо было настроить автоматизацию для канала: от работоспособности ботов по публикации, автоматического приема на канал и отправки приветственного сообщения подписчику до добавления в биржи.
Канал так же был добавлен в нашу рекламную биржу "BENCHMARK Media" - это позволило нашему клиенту закрывать места на канале просто и быстро.
Этап 6. Создание и тест рекламных креативов
На данном этапе мы предварительно обсудили главную идею креатива с заказчиком, и нашей командой был разработан и протестирован рекламный креатив. Был написан текст для креатива, а так же разработан видео-креатив, который повысил конверсию и интерес будущих подписчиков к каналу.
Этап 7. Закуп рекламы и доведение до первых покупателей
За счет хорошего креатива, который мы разработали на 6 этапе, нам получилось привлечь подписчика на канал от 8 до 20 рублей. При потраченных на рекламу 299.899 рублей за январь, нам удалось привлечь 17008 подписчиков, а цена за подписчика обошлась в 17,63 рубля. Ниже предоставляем отчет с Telemetr'а (так же полученные результаты вы можете проверить на аналитических сервисах):
Этап 8. Полноценное ведение и консультации, чтобы Вы окупили канал как можно быстрее
На данном этапе мы даем базовые знания нашему заказчику, добавляем его во все актуальные биржи, рассказываем, как правильно закупать и, как совершать продажи, как подбирать контент, и Наше агентство заинтересован в Вашем успехе и в вашем росте.
Всего 20 дней
Именно столько дней нашей команде потребовалось, что бы создать канал и позволит зарабатывать нашему клиенту от 150.000 рублей в месяц.
С учетом стартовых вложений в 200.000 рублей + добавлением 100.000 рублей до конца месяца. Нам удалось привлечь 17008 подписчиков по цене 17.63 рубля., охваты на канале были в районе 6500-7000 на пост, соответственно и рекламу нам удалось продать на момент старта проекта по завышенному СРМ.
По нашим расчетам, данный проект выйдет на точку безубыточности через ~2-5 месяцев, и дальше будет приносить только чистую прибыль.
Если Вы не хотите обжигаться на большом количестве этапов по запуску своего канала, а просто хотите обойти все подводные камни и сделать успешный запуск, научиться всему и перенять наш опыт, то мы будем рады нашему дальнейшему сотрудничеству.
Наша команда сделает все возможное, что бы Вы стали обладателем того самого канала, который будет приносить Вам прибыль, а окупаемость проекта будет достигнута за короткий промежуток времени за счет хорошего запуска и полученных от нас знаний.
В ближайшее время так же будет дополнение к кейсы, где мы расскажем, как нам удалось в течении года сделать из маленького канала в 17тыс. пдп, превратить его в один из самых крупных тематик в Telegram и набрать более 100тыс. пдп. Так же расскажу, что выходит по цифрам и немного раскрою занавесу финансового учета.
Давайте посмотрим реальный кейс Telegram-канала the OFFICE
Срок: 3 месяца
Подписчики: 5 000
Монетизация: через продажу рекламы
Так как канал ведется от первого лица, то изначально было выбрано название CEO, чтобы приходили уведомления от канала как от CEO. Но увидели, что много целевой (офисной) аудитории не знают, что значит CEO (Chief Executive Officer, главный исполнительный директор или Генеральный директор, если максимально близко к русскому языку), поэтому переименовали в the OFFICE, так как планируем расширять канал до сети.
Концепция коротко:
«Основатель IT-компании пишет о рабочих моментах честно и напрямую как своим сотрудникам». Концепция подразумевает короткие, но емкие по смыслу фразы с юмором, который близок офисникам, digital и IT-шникам. Канал является способом подсмотреть в офис IT-компании и увидеть их привычную рабочую рутину, но с огоньком и внутренними приколами. Идея в том, чтобы во время рабочей рутины получать неожиданные сообщения от CEO.
Контент канала состоит только из текстового формата.
Аудитория канала:
Аудиторией определили: офисников, digital и IT-шников.
Продвижение канала:
Канал продвигали через посевы по тематикам офиса, маркетинга, программистов, айтишников, юмора, мотивации, бизнеса и даже немного лайфстаил.
Подписчик получился до 50 рублей.
Само рекламное размещение делали уже с контентом, что помогло снизить стоимость подписчика, а также подбирать необходимые материалы под каждое размещение индивидуально.
Контент:
Многие спрашивают, о том как именно создается контент для этого канала напишу об этом отдельно, так как это большая тема) но я расскажу какие критерии есть при создании контента для the OFFICE:
Есть четкие границы, что можно и нельзя. Эти запреты могут касаться как политики и религии так и этических или моральных норм. Часто приходят в голову очень смешные шутки, но до публикации они не вывозят этого первого пункта.
Юмор не объективная вещь, поэтому сложно тестировать или проверять шутки даже на какой-то выборке людей. Что помогает? Общая концепция и помнить, что позиционирование – это как тебя воспринимает аудитория. Можно написать очень много смешных поверхностных шуток, которые будут собирать больше репостов и лайков, но они не будут отображать изначальный образ созданного персонажа, поэтому создаются шутки не только поверхностные, но и многоуровневые после публикации, которых не получаешь 100 репостов, но пишут в ЛС, что этот пост просто разбил сердце и долго смеялся в голос. Этот пункт помогает не скатиться до пошлых и поверхностных шуток и поддерживать их интеллектуальный или профессиональный уровень.
Понимание контента целевой аудитории. Представление реальной ситуации и выкручивание ее до определенной температуры/ уровня.
Выдержка тематики. Когда пишешь материалы на одну тему невольно мозг подкидывает идеи как это можно расширить и добавить еще несколько новых тем. Но это уводит нас от изначальной концепции.
Качество. Опять же юмор необъективная вещь, поэтому несколько сложно говорить о качестве шутки. Но метрики репостов, реакций, вовлеченных комментариев и сообщений в лс – очень помогают ориентироваться в том куда стоит идти и что точно не работает.
Что еще помогает:
Наличие бэклога в 100+ шуток, которые ждут когда их докрутят и можно будет взять в публикацию.
Насмотренность.
Реальный опыт, нет большего вдохновителя, чем сама жизнь.
Цепляться за необычные фразы и комментарии реальных людей, с которыми сталкиваешься.
Подписчики часто подкидывают идеи своими комментариями.
Инсайды:
Общаясь с аудиторией в комментариях и личке увидели несколько классных моментов:
Есть аудитория, которая не работает в офисе и никогда не работали в IT-компании, но в целом понимают сферу и им интересно это наблюдать. Кто-то наблюдает за этим и думает: «как хорошо, что я не офисник»
Часть аудитории очень быстро стала себя ассоциировать с этой компанией и ведут себя подыгрывая каналу.
Канал мотивирует людей, чтобы не забивать на рабочие задачи и быть лучше, посмотреть на себя и коллег со стороны и посмотреть на это с юмором и легкостью.
Монетизация:
Монетизация происходит через рекламные размещения в канале. Вот некоторые из размещений:
1/3
Что еще было бы интересно узнать о кейсе Telegram-канала the OFFICE?