Как осуществить интеграцию телеграм-бота с Яндекс Метрикой?

Как создать бота на Python, который будет отслеживать пользователей сайта, которые подписались на канал, и передавать эту информацию в Яндекс.Метрику через JS событие? Пожалуйста, предоставьте код для решения этой задачи.
  • 17 сентября 2023 г. 14:37
Ответы на вопрос 1
Для осуществления интеграции телеграм-бота с Яндекс Метрикой, вам потребуется использовать Telegram API и Метрику API.

Ниже приведен пример кода на Python, который позволяет отслеживать пользователей сайта, которые подписались на канал, и передавать эту информацию в Яндекс.Метрику через JS событие:

```python
import requests
import json

# Здесь нужно указать ваш токен от Telegram Bot API
telegram_token = 'YOUR_TELEGRAM_TOKEN'

# Здесь нужно указать ваш ID канала в Telegram
telegram_channel_id = 'YOUR_TELEGRAM_CHANNEL_ID'

# Здесь нужно указать ваш ID цели в Яндекс Метрике
yandex_metrika_goal_id = 'YOUR_YANDEX_METRIKA_GOAL_ID'

def start_bot():
    # Открываем сессию для работы с API Телеграма
    with requests.Session() as session:
        offset = None
        while True:
            try:
                params = {'offset': offset, 'timeout': 60}
                response = session.get(f'https://api.telegram.org/bot{telegram_token}/getUpdates', params=params)
                data = json.loads(response.text)
                updates = data.get('result', [])
    
                if updates:
                    for update in updates:
                        offset = update['update_id'] + 1
                        message = update.get('message')
    
                        if message and message.get('channel_post'):
                            # Обнаружена новая публикация в канале
                            subscribers = get_subscribers()
                            send_event(subscribers)
    
            except requests.exceptions.RequestException as e:
                # Обработка ошибок
                print(f'An error occurred: {e}')
    

def get_subscribers():
    # Отправляем запрос к Telegram Bot API для получения списка подписчиков канала
    response = requests.get(f'https://api.telegram.org/bot{telegram_token}/getChatMembersCount?chat_id={telegram_channel_id}')
    data = json.loads(response.text)
    subscriber_count = data.get('result', 0)
    return subscriber_count


def send_event(subscribers):
    # Отправляем запрос к Метрике API для передачи данных о количестве подписчиков в Яндекс.Метрику
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    data = {'event1': 'channel_subscribers', 'goal_id': yandex_metrika_goal_id, 'data': f'{{"subscribers": {subscribers}}}'}
    response = requests.post(f'https://mc.yandex.ru/watch/{yandex_metrika_goal_id}', headers=headers, data=data)
    if response.status_code != 200:
        print(f'Failed to send event to Yandex.Metrika: {response.text}')
    else:
        print('Event sent successfully')


if __name__ == '__main__':
    start_bot()
```

Для использования данного кода вам необходимо выполнить следующие шаги:

1. Зарегистрируйте бота в Telegram, получите его токен и ID канала, в который пользователи должны подписываться.

2. Получите ID вашей цели в Яндекс.Метрике и замените значение переменной `yandex_metrika_goal_id` в коде.

3. Замените значение переменной `telegram_token` на ваш токен от Telegram Bot API.

4. Замените значение переменной `telegram_channel_id` на ID вашего канала в Telegram.

5. Запустите скрипт на выполнение.

После запуска скрипт будет периодически проверять наличие новых публикаций в канале и отправлять информацию о количестве подписчиков в Яндекс.Метрику через событие "channel_subscribers".
Похожие вопросы