Интеграция Яндекс.Метрики с Telegram-ботом — это интересная задача, которая потребует от вас немного работы, но вполне реализуемая. Основная идея заключается в том, чтобы отправлять данные о событиях (нажатия кнопок) с вашего Telegram-бота на Ваш веб-сайт, который уже отслеживается Яндекс.Метрикой.
Вот шаги, которые помогут вам реализовать это:
### 1. Подготовьте ваш лендинг
На вашем лендинге вы должны установить код Яндекс.Метрики. Вы можете сделать это, добавив следующий код в `<head>` вашего HTML-документа:
```html
<!-- Код Яндекс.Метрики -->
<script type="text/javascript">
(function(m,e,t,r,i,k,a){
m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
k=e.createElement(t);
a=e.getElementsByTagName(t)[0];
k.async=1;k.src=r;a.parentNode.insertBefore(k,a)
})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(YOUR_METRIC_ID, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/YOUR_METRIC_ID" style="position:absolute; left:-9999px;" alt=""/></div></noscript>
```
Замените `YOUR_METRIC_ID` на ваш ID метрики.
### 2. Настройте обработку событий в вашем Telegram-боте
Теперь вам нужно будет реализовать логику для отслеживания нажатий кнопок и отправки данных на ваш лендинг.
В вашем боте, например с помощью библиотеки `python-telegram-bot`, вы можете добавить обработчики для кнопок:
```python
from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import Updater, CommandHandler, CallbackQueryHandler, CallbackContext
import requests
def start(update: Update, context: CallbackContext) -> None:
keyboard = [
[InlineKeyboardButton("Поделиться номером", callback_data='share_number')]
]
reply_markup = InlineKeyboardMarkup(keyboard)
update.message.reply_text('Привет! Нажми на кнопку, чтобы поделиться номером.', reply_markup=reply_markup)
def button(update: Update, context: CallbackContext) -> None:
query = update.callback_query
query.answer()
if query.data == 'share_number':
# Отправка события в Яндекс.Метрику
requests.get('https://ваш_лендинг/track_event?event=share_number')
query.edit_message_text(text="Спасибо за нажатие кнопки 'Поделиться номером'.")
def main() -> None:
updater = Updater("YOUR_BOT_TOKEN")
updater.dispatcher.add_handler(CommandHandler('start', start))
updater.dispatcher.add_handler(CallbackQueryHandler(button))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
```
### 3. Обработка события на лендинге
На вашем сайте вам нужно будет создать страницу или скрипт, который будет обрабатывать запрос с вашего бота и отправлять событие в Яндекс.Метрику.
Вот пример, как можно это сделать с помощью PHP:
```php
<?php
if (isset($_GET['event'])) {
$event = $_GET['event'];
echo '<script type="text/javascript">
ym(YOUR_METRIC_ID, "reachGoal", "' . $event . '");
</script>';
}
?>
```
Замените `YOUR_METRIC_ID` на ваш ID метрики.
### Заключение
Теперь, когда пользователь нажимает кнопку в вашем телеграм-боте, будет вызван запрос на ваш лендинг и произойдёт отправка события в Яндекс.Метрику. Это позволит отслеживать действия пользователей, не используя сторонние сервисы.
Пожалуйста, убедитесь, что на вашем сайте разрешены запросы с вашего телеграм-бота, и используйте меры безопасности для минимизации возможных злоупотреблений.