Share
Explore

Продажа видеоуроков через бота

Сейчас многим нужна автоматизация продаж видеоконтента, в этих условиях - простой бот может пополнить семейный бюджет))

Собираем бота на платформе JAICP

This link can't be embedded.
Создаём аккаунт
Читаем документацию
Если сложно просим советов тут

Загрузка и раздача видео в ботах

Способ 1, через загрузку на сервер ТГ

Использовать код в том токене, в котором планируешь раздачу видео, иначе не работает
theme: /

state: Start
q!: $regex</start>
a: Начнём.
state: fileEvent
event!: fileEvent
event!: telegramAnyMessage
event!: telegramApiRequestFailed
a: Привет {{$request.rawRequest.message.video.file_id}}

Загружает файлы маленького и большого размера

Минусы подхода

Долгая загрузка файла у пользователя
Отсутствие статистики

Плюсы

Халявное хранение
Блокировка возможности сохранить и переслать (Protect_content)

Способ 2, через Vimeo (платный тариф можно заменить на YouTube)

Минусы подхода

Платный
Иностранный

Плюсы

Быстрая загрузка у пользователя
Небольшая статистика
Защита от скачивания

Способ 3, через Vimeo + Тильда (можно любой конструктор сайтов)

Минусы подхода

Платный
Трудозатратный

Плюсы

Повышает индексацию материнского сайта
Очень гибкая статистика
Защита от скачивания
Размещаю видео на Vimeo ( фишка в том, что можно после видео возвращать по кнопке в нужный стейт (бонусный модуль https://t.me/{какой то бот}?start=bonus2244 (надеюсь идея ясна)

Снимок экрана 2022-04-16 в 09.25.17.png
Встраиваем видео на сайт - беру блок Т123 и ставлю код для встраивания из Vimeo
Снимок экрана 2022-04-16 в 09.14.23.png
👇Ссылка на то, что получилось
This link can't be embedded.
Подключаем яндекс метрику, гугл аналитику и тд
даём пользователю из бота ссылку с utm метками в utm метке указываем user_Id

Снимок экрана 2022-04-16 в 09.08.42.png

Оплата в ТГ

Тестовый токен Юкасса

В ТГ находим @BotFather
Вводим команду /mybots и выбираем нужного бота
Снимок экрана 2022-04-16 в 18.11.40.png
Жмякаем на кнопку Payments
Снимок экрана 2022-04-16 в 18.12.32.png
Жмякаем на Юкассу
Снимок экрана 2022-04-16 в 18.13.23.png
Жмякаем на Тест

Снимок экрана 2022-04-16 в 18.21.54.png
Далее по инструкции получаем токен
Снимок экрана 2022-04-16 в 18.24.01.png

Код оплаты и выдачи контента с utm метками

Пишем код в main.sc
require: slotfilling/slotFilling.sc
module = sys.zb-common
require: functions.js
theme: /

state: Start
q!: $regex</start>
# запоминаем user id для utm метки
script:
$client.user_id = $request.rawRequest.message.from.id;
a: Напиши 1 для оплаты
state: Hello
q!: 1
# отправляем метод sendInvoice
script:
var id = $request.rawRequest.message.chat.id;
$temp.response = postData(id);

state: Precheckout
event: telegramPrecheckoutEvent
# отправляем метод answerPreCheckoutQuery
script:
var id = $request.query;
$temp.response = postData2(id);


state: PaymentFailed
event: telegramPaymentFailedEvent
a: Возникли неполадки. Пожалуйста, напишите нам, куда-то.

state: PaymentSuccessful
event: telegramPaymentSuccessEvent
# при успешной оплате формируем ссылку на контент с utm меткой и делаем ссылку короткой, так мы можем посмотреть сколько юзер был на страничке с видео
script:
$temp.url = "https://intensive-online.ru/perenos01?utm_source=bot&utm_medium=" + $client.user_id
var utm_url = $temp.url
$temp.response = GetUrl(utm_url)
a: Оплата прошла успешно. \nВам открыт доосуп \nЛекция 1 - {{$temp.response}}

state: CatchAll
event: noMatch
a: Платеж не прошел. Проверьте, пожалуйста, правильность введенных данных и повторите попытку.

state: Bye
intent!: /пока
a: Пока пока

state: NoMatch
event!: noMatch
a: Я не понял. Вы сказали: {{$request.query}}
Пишем код в functions.js
function postData(id) {
var url = "https://api.telegram.org/bot2050539171:AAGt-GpY8_bG0xwI1qe5QUH8Y7d_aF11yY4/sendInvoice";
var options = {
dataType: "json",
body: {
"chat_id":id,
"title": "Тариф профи",
"description": "Тестовый платеж в тестовом боте для проверки",
"payload":{},
"provider_token":"381764678:TEST:36029",
"currency": "RUB",
"start_parameter":"mybot",
"photo_url":"https://447906.selcdn.ru/Tc/photo_2022-04-16%2017.55.06.jpeg",
"prices":[{"label":"руб","amount": 10000}],
"need_phone_number": true
}
};
var response = $http.post(url, options);
return response.isOk ? response.data : false;
}

function postData2(id) {
var url = "https://api.telegram.org/bot2050539171:AAGt-GpY8_bG0xwI1qe5QUH8Y7d_aF11yY4/answerPreCheckoutQuery";
var options = {
dataType: "json",
body: {
"pre_checkout_query_id":id,
"ok": true
}
};
var response = $http.post(url, options);
return response.isOk ? response.data : false;
}

function GetUrl(utm_url) {
var url = "https://clck.ru/--?url=" + utm_url;
var options = {
dataType: "json"
};
var response = $http.get(url, options);
return response.isOk ? response.data : false;
}
Идем тестировать в бота
Для оплаты используйте данные тестовой карты: 1111 1111 1111 1026, 12/22, CVC 000
Когда я ввожу номер карты

IMAGE 2022-04-16 18_36_42.jpg
26 попадает в дату, надо после ввода 1111 1111 1111 10 - вернуть курсор на поле ввода номера карты после 10 ввести 26 потом 12 22 000

IMAGE 2022-04-16 18_39_20.jpg
Теперь жмякаем оплатить
photo_2022-04-16 18.40.15.jpeg

Наслаждаемся результатом

photo_2022-04-16 18.34.45.jpeg
👇Смякаем если хочется потестить

Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.