Настройка звонков через Telegram
Обратите внимание: Все данные авторизации / секретные коды / данные переписки Telegram используются исключительно ЛОКАЛЬНО на вашей АТС и НЕ передаются на сервера МИКО.
Модуль состоит из нескольких компонент:
Шлюз SIP ↔ Telegram — позволяет принимать звонки от telegram и совершать исходящие звонки через telegram. Шлюз не зависит от прочих компонент, они лишь его дополняют
Телеграм клиент — работает совместно с ботом, во время входящего звонка звонящему отправляется клавиатура для ввода добавочного номера.
Телеграм бот — служит для формирования клавиатуры и отправки тональных команд в текущий канал. Для работы необходимо предварительно получить токен через интерфейс бота «@BotFather»
При звонке в компанию клиенту будет отправлена с сообщением клавиатура для ввода добавочного номера: После завершения звонка клавиатура будет скрыта.
После неудачного звонка из компании (клиент не ответил). Клиенту будет отправлена визитка:
Текст визитки и клавиатуры ввода добавочного можно исправить в настройках модуля:
Настройка Telegram
Аккаунт

Необходимо настроить видимость номера телефона:

Необходимо разрешить ВСЕМ звонить на номер телефона:
Telegram Bot
Создайте бота
Откройте чат с @BotFather в любом удобном клиенте Телеграм
Отправьте команду
/newbot
Введите «name» нового бота, к примеру new_keyboard_bot, имя должно быть коротким и понятным, имя увидит клиент при получении клавиатуры
Введите «username» для нового бота, к примеру new_keyboard_bot
Включите Inline Mode
Отправьте боту команду
/setinline

Выберите созданного ранее бота
Получите Token
Отправьте команду
/mybots
Выберите созданного ранее бота
Кликните по кнопке « API Token»
Скопируйте значение «token»
Начните диалог с ботом
Отправьте из аккаунта телеграмм вашему боту команду
/start
Напишите боту произвольное сообщение, к примеру «Привет!»
С ботом должен быть открытый диалог, если не отправить ему команду «/start», то часть функционала работать не будет.
Получение «App api_id» и «App api_hash»
«App api_id» и «App api_hash» — это секретные параметры, которые привязываются к вашему telegram аккаунту. Никому не сообщайте эти значения! Они необходимы для подключения к API Telegram. Подробнее можно почитать в документации.
Перейдите по ссылке https://my.telegram.org/auth

Укажет номер телефона, привязанный к telegram аккаунту

Перейдите в раздел « API development tools»

Опишите параметры нового приложения
«App title» — заголовок приложения
«Shot name» — уникальное короткое имя приложения
« URL »- произвольный адрес сайта
«Platform» — Other
«Description» — произвольное описание
Выполните действие «Create application»

Скопируйте значения App api_id« и «App api_hash»
Настройки модуля MikoPBX
При восстановлении из бекапа может потребоваться повторная авторизация в telegram.
Установите дополнительный модуль «Провайдер Telegram», (см. инструкции по установке модулей в разделе Управление модулями)
Ведите значения «App api_id» и «App api_hash», полученные на предыдущем этапе
Сохраните изменения
Добавьте новый номер по кнопке «Добавить»

Запустите процесс авторизации для Шлюза, Клиента Telegram, для Бота

На ваш telegram аккаунт придет уведомление с кодом подтверждения:

В интерфейсе MIkoPBX откроется форма ввода кода подтверждения:

Введите код и подтвердите выбор. Через некоторое время линия отобразиться как активная
Красный — Необходима авторизация
Оранжевый — Ожидается запуск сервиса
Зеленый — Соединение установлено
В любом из состояний возможно запустить процесс авторизации заново.
/storage/usbdisk1/mikopbx/custom_modules/ModuleTelegramProvider/db/7906660000
/storage/usbdisk1/mikopbx/custom_modules/ModuleTelegramProvider/db/madeline/7906660000
где 7906660000 — номер телефона, логин телеграмм аккаунта
Настройка провайдера
Скопируйте адрес и порт из активной линии «127.0.0.1:30001»
Перейдите в раздел »Провайдеры телефонии«
Добавьте нового провайдера
Введите «Название провайдера» — произвольное значение
Укажите «Тип учетной записи» — «Аутентификация по IP адресу, без пароля»
Введите «Хост или IP адрес» — 127.0.0.1

«Расширенные настройки» — «Порт соединения SIP» — укажите порт линии, в текущем примере «30001»

«Расширенные настройки» — «Отключить использование поля fromuser»
Сохраните изменения

В разделе «Общие настройки» разрешите использование кодека Opus
Входящий маршрут
Для настройки входящих маршрутов ознакомьтесь с документацией »Входящие маршруты«
X-TG-Phone — номер телефона
X-TG-Username — ник пользователя
X-TG-ID — идентификатор пользователя
Некоторые идентификаторы могут быть скрыты клиентом в настройках приватности. Caller ID будет установлен исходя из этих полей, X-TG-Phone — имеет наивысший приоритет, X-TG-ID — низший.
Исходящий маршрут
Для настройки исходящих маршрутов ознакомьтесь с документацией »Исходящие маршруты«
Обязательно добавить плюс при наборе номера! См. пример ниже.
«Название правила» — siptg
«Номер начинается с» — 7
«Остальная часть номера состоит из указанного количества цифр» — 10
«Перед тем как начать звонок отсекаем» — 0

«цифр в начале номера, затем добавляем в начало » — символ плюс »+«
module-telegram-provider.txt · Последние изменения: 2022/10/18 07:30 — Портнов Алексей
Инструменты страницы
- Показать исходный текст
- История страницы
- Ссылки сюда
- Наверх
Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Как подключить платёжку в Telegram-бот
Отметим сразу, что подключать платёжки можно не к обычному чат-боту, а к Telegram-магазину. Создать его можно двумя способами: с помощью конструктора или JavaScript. В первом случае знания программирования не нужны, потому что бот создаётся через блок-схемы. Во втором – придётся нанять специалиста. Мы разберёмся на примере ЮKassa. Остальные платёжные системы можно подключить по аналогичной схеме.
7.5K открытий
Подключаем ЮKassa
Алгоритм подключения не сложен. Для этого нужно:
- Создать бота с помощью конструктора или вручную.
- Подключить его к боту ЮKassa.
- Настроить бота для приёма платежей (для этого понадобится параметр shopId, который появится после регистрации на сервисе и подключения к ЮKassa).
Создать бота можно, запустив диалог с @BotFather. Вводите команды вручную или используйте команды /start и /newbot. Предстоит ввести имя бота и юзернейм. Они должны быть уникальными. Если всё хорошо, то @BotFather пришлёт токен доступа к созданному боту. Никому его не показывайте, даже представителям платёжных сервисов или поддержке Telegram.
Что делать дальше?
- Отправьте @BotFather команду «/mybots».
- Выберите созданного бота.
- В открывшейся панели управления перейдите по кнопкам «BotSettings» – «Payments».
Далее выберите, что вы хотите подключить: если готовы сразу принимать настоящие платежи, то вам нужен пункт «Connect ЮKassa: платежи». Если хотите сначала потестировать настройки, то нужно выбирать «Connect ЮKassa: тест». После этого следуйте инструкциям. В итоге @BotFather пришлёт вам токен, который будет нужен для выставления счетов.
Что делать дальше? Всё зависит от того, как вы создавали бота. Если использовали конструкторы, то нужно обратиться к их FAQ и гайдам. Если настраивать бота через API Telegram, то нужно реализовать метод sendinvoice из платёжного API Telegram. В итоге ваш бот будет автоматически отправлять пользователям счета на оплату. В них необходимо настроить показ стоимости, названия, описания товара или услуги. Также нужно указать provider_token (его выдаёт BotFather после подключения бот-магазина к ЮKassa).
Пример настройки запроса sendinvoice выглядит так:
В итоге после подтверждения платежа Telegram вышлет webhook, содержащий PreCheckoutQuery. На него нужно ответить за 10 секунд с помощью метода answerPreCheckoutQuery. После успешного платежа вам придут уведомления об этом: от Telegram (через webhook с объектом SuccefulPayment) и письмо на e-mail от ЮKassa. Если вы продаёте пользователям доступ к контенту или услуге, то можно запрограммировать своего бота так, чтобы он автоматически отправлял их пользователю после подтверждения оплаты.
Какие платёжные системы можно подключить к боту?
Для этого достаточно открыть FatherBot, выбрать команду «/mybots», перейти в настройки конкретного бота и выбрать кнопку «Payments». Сегодня вы можете подключить:
- ЮKassa
- Сбербанк
- ПСБ
- Банк 131
- Tranzoo
- PayMaster
- Stripe
- Paycom.Uz
- CLICK Uzbekistan
- LiqPay
- ECOMMPAY
- Global Pay Uzbekistan
- Cascad
- Paymega
- Portmone
- LeoGaming
- Smart Glocal
- iPay88
Разумеется, выбирать, какую платёжную систему нужно подключить, в первую очередь, в зависимости от ГЕО, с аудиторией которого вы работаете. Обратим внимание, что в зависимости от выбранного варианта (например, если вы выбрали Банк 131 или что-то ещё) вам может понадобиться выслать заявку финансовой организации, получить подтверждение и код для подключения.
Конструкторы для создания ботов
Конструкторы ботов позволяют создавать их, не обладая навыками в программировании на JavaScript. Какие сервисы могут помочь с этим?
С их помощью вы быстро соберёте простого бота, настроите интерфейс и подключите платёжную систему.
Возможность принимать оплату через Telegram – отличная возможность ускорить воронку продаж для арбитражника: особенно, если вы работаете с белой товаркой или онлайн-образованием. Бот позволит выбрать товар, контент или услугу, оплатить их, не выходя из привычного мессенджера. Теперь не нужно вести пользователя на преленд, а сделать процесс покупки намного проще. Это, в свою очередь, может положительно повлиять на ваш профит.
Полезные ссылки на наши обзоры и статьи:
- Кейсы по арбитражу трафика 2022
- Кейсы по Арбитражу в Фейсбук
- Арбитраж с Google Ads
- Статьи по арбитражу трафика
Мой первый telegram-бот на заказ и как не повторить моих ошибок
Месяц назад я создал пост где предложил любому юзеру написать telegram-бота бесплатно. Условий было два: я выбираю на своё усмотрение и сроки могут быть любыми. Я выбрал вариант с ботом, который уведомляет о начале стримов на Twitch, с такой идеей ко мне обратился Игнат Ивасенко.
1.2K показов
531 открытие
Сделаю Telegram-бота бесплатно (не кликбейт)
Первая версия бота
Логика бота мне была понятна сразу: тело бота (обработчики команд, обработчик текстовых сообщений от юзера, база данных, запросы к TwitchAPI). С первым и вторым всё просто, я воспользовался фреймворком aiogram, так как это асинхронный метод и работа одной функции не прерывает работу другой. Но с базой данных и сторонним API я ранее не взаимодействовал и даже теории никакой не было.
Написав тело бота я обратился к ChatGPT, чтобы он написал мне код для создания базы данных с помощью sqlite3 и код для запросов к TwitchAPI. Получилось ужасно. Дело в том, что ChatGPT использует данные до 2021 года, за это время методы TwitchAPI обновились и пока я пытался добиться от чата рабочего решения, я потратил 3 дня в пустую. Запросы к базе данных так же были очень кривыми и приводили к разным ошибкам в разных сценариях. Я получил важный опыт по работе с ChatGPT: бот не способен к написанию действительно сложного кода, который подразумевает разные сценарии, которые могут запустить большое количество людей.
Поэтому я решил переписать бота с нуля. Я не перестал использовать ChatGPT, но теперь он был просто консультантом.
Вторая версия бота
В первую очередь я серьезно переработал логику кода, теперь каждая функция бота имеет свою асинхронную функцию (def), которые разделены на несколько файлов .py (main.py, database.py, twitch.py), это сделало код более читабельным и самое главное, позволило мне не дублировать строчки кода в разных функциях, теперь, если мне нужно обратиться к базе данных, мне не нужно прописывать открытие соединения и получение курсора в каждой функции, мне достаточно импортировать database.py с помощью кода import database as db и вызвать нужную функцию для работы с базой данных. К сожалению, у меня не сохранилась первая версия кода, но в этом разделе я покажу вам отрывки из второй версии.
Как подключить платежную систему с Payments к Telegram

Telegram-боты позволяют решать самые разные задачи. С помощью них можно автоматизировать рабочие процессы. В статье показываем, как разработать бота для приема платежей и развернуть его на облачном сервере.
Платежные системы Telegram
Сейчас мессенджер поддерживает оплату в более чем 200 странах через такие шлюзы, как: Stripe, YooMoney, Sberbank, LiqPay, PayMaster и другие.
Все начинается с установки библиотеки aiogram. Сейчас, пожалуй, это самая популярная библиотека для разработки ботов на Python.
python -m pip install aiogram
Переходим в Telegram и пишем тут BotFather’у команду /newbot . Вводим имя нового бота. Важно, чтобы оно заканчивалось словом Bot.

Получаем уникальный токен нового бота. Теперь напишем код простейшего эхо-бота, чтобы проверить его работу.
Связать бота с приложением
Создаем файл config.py и вписываем в него токен, который выдал BotFather. В основном файле main.py прописываем базовый код любого бота.
Обратите внимание на один важный момент: бот должен обрабатывать каждое сообщение с серверов Telegram. Для этого при запуске бота обязательно нужно поставить аргумент skip_updates в значение False. Это спасет от проблем при обработке платежей.
import config import logging from aiogram import Bot, Dispatcher, executor, types from aiogram.types.message import ContentType # log logging.basicConfig(level=logging.INFO) # init bot = Bot(token=config.TOKEN) dp = Dispatcher(bot) # echo bot @dp.message_handler() async def echo(message; types.Message): await message.answer (message.text) # run long-polling if __name__ == "main": executor.start_polling(dp, skip_updates=False)
Теперь можно запустить код и проверить, работает ли бот. Убедившись, что все хорошо, приступаем к подключению платежей.

Возвращаемся к BotFather’у, даем команду /mybots и выбираем из списка своего бота.
В открывшемся меню кликаем на кнопку Payments. Из предоставленного списка выбираем нужный платежный шлюз. В качестве теста используем PayMaster. Чтобы подключить оплату в Telegram-бота, сначала нужно выполнить тест, поэтому выбираем PayMaster Test.

Следуем простым инструкциям бота платежной системы и получаем тестовый токен PayMaster. Его сразу же можно сохранить в config.py.
TOKEN = "5432877141:AAHEwBEb2mwnZX56oaHM10o33ZBZwVkvv-s" PAYMENTS_TOKEN = "1744374395:TEST:f14d9f0d42528b780370"
Возвращаемся к коду бота. Для того, чтобы запросить оплату товаров/услуг, нужно сгенерировать invoice с деталями платежа. Отправить его клиенту и обработать результат.
Подключаем оплату
Указываем список доступных цен на продукты. В качестве цены нужно передать целочисленное значение в минимально возможных единицах валюты. Если речь идет о рублях, то стоимость нужно указывать в копейках. То есть место 500 рублей мы тут укажем 500 * 100 или же 50 000 копеек. В случае с долларами будет почти также, $1=100 центов. Если предполагается работа с другими валютами, можно использовать currencies.json от Telegram API.
Дальше в коде бота платежной системы мы создаем обработчик команды /buy . Команда будет генерировать и отправлять пользователю invoice платежа. В примере используется оплата месячной подписки.
import config import logging from aiogram import Bot, Dispatcher, executor, types from aiogram.types.message import ContentType # log logging.basicConfig(level=logging.INFO) # init bot = Bot(token=config.TOKEN) dp = Dispatcher(bot) # prices PRICE = types.LabeledPrice(label="Подписка на 1 месяц", amount=500*100) # в копейках (руб) # buy @dp.message_handler(commands=['buy']) async def buy(message: types.Message): if config.PAYMENTS_TOKEN.split(':')[1] == 'TEST': await bot.send_message(message.chat.id, "Тестовый платеж. ") await bot.send_invoice(message.chat.id, title="Подписка на бота", description="Активация подписки на бота на 1 месяц", provider_token=config.PAYMENTS_TOKEN, currency="rub", photo_url="https://www.aroged.com/wp-content/uploads/2022/06/Telegram-has-a-premium-subscription.jpg", photo_width=416, photo_height=234, photo_size=416, is_flexible=False, prices=[PRICE], start_parameter="one-month-subscription", payload="test-invoice-payload")
Сам процесс генерации invoice довольно простой. Не стоит беспокоиться большому количеству аргументов. Это названия продуктов или услуг, описания, цена, валюта и т.п.

Настройки платежей
Обратите внимание на аргумент is_flexible. Его нужно указывать в значение True только в том случае, если финальная стоимость зависит от выбранного способа доставки, если речь идет о продаже какого-то физического продукта.
О других параметрах метода send_invoice вы всегда можете прочитать в официальной документации Telegram API.
Теперь нужно создать еще два обработчика: Pre Checkout Query и Successful Payment.
Pre Checkout Query отвечает за обработку и утверждение платежа перед тем, как пользователь его совершит. Так можно проверить доступность товара на складе или уточнить стоимость.
Successful Payment отвечает за обработку успешно проведенного платежа.
Важно, что серверам Telegram ответ нужен в течение 10 секунд. Если его не будет, платеж не пройдет.
# pre checkout (must be answered in 10 seconds) @dp.pre_checkout_query_handler(lambda query: True) async def pre_checkout_query(pre_checkout_q: types.PreCheckoutQuery): await bot.answer_pre_checkout_query(pre_checkout_q.id, ok=True) # successful payment @dp.message_handler(content_types=ContentType.SUCCESSFUL_PAYMENT) async def successful_payment(message: types.Message): print("SUCCESSFUL PAYMENT:") payment_info = message.successful_payment.to_python() for k, v in payment_info.items(): print(f" = ") await bot.send_message(message.chat.id, f"Платеж на сумму прошел успешно. ") # run long-polling if __name__ == "__main__": executor.start_polling(dp, skip_updates=False)
Тут можно выдать пользователю тот самый месяц подписки, за которую он заплатил или любую другую услугу.
Как бот работает на практике
Получив invoice на оплату от бота, нажимаем Оплатить. Поскольку сначала мы проводим тестирование бота, воспользуемся специальной тестовой картой.

Вводим данные и оплачиваем подписку — все работает. При переходе на боевой проект важно не забыть выбрать правильный счет.
Теперь возвращаемся в BotFather, чтобы получить реальный токен от выбранного платежного шлюза. Если есть запрос на разные тарифы или способы оплаты, лучше запросить сразу 2-3 токена от разных платежных шлюзов. Далее нужно будет генерировать invoice с помощью токена выбранного провайдера.
Перенос бота на боевой сервер
Чтобы бот работал 24/7 вне зависимости от того, включен компьютер или нет, зальем его на реальный сервер.
Для этого воспользуемся облачным сервером линейки Shared Line от Selectel. Калькулятор панели управления позволяет выбрать гибкую конфигурацию сервера и сразу узнать, сколько будет стоить решение. Все продукты и услуги собраны у провайдера в одном месте, поэтому ими легко управлять. Арендовать сервер можно от 10 ₽/день, а в консоли есть возможность быстро масштабировать вычислительные ресурсы при необходимости.
Регистрируемся и входим в панель управления my.selectel.ru. Переходим в раздел Облачная платформа и выбираем Серверы. Создаем сервер — после этого шага он загорится в списке как ACTIVE.
Настраиваем конфигурацию. Для примера используем 1 ядро, 512 МБ DDR4 и 5 ГБ на диске.

Теперь переходим к выгрузке бота на боевой сервер. Сначала нужно подключиться к серверу через SSH. Для этого мы можем воспользоваться программой WinSCP для Windows. В Linux и MAC для этого есть свои встроенные инструменты.
Запускаем WinSCP. В качестве имени хоста указываем IP адрес нашего нового сервера. Логин и пароль можно взять во вкладке Консоль в панели управления.
Теперь перенесем сюда файлы нашего бота: config.py и main.py. Далее открываем отдельное соединение с сервером по SSH в консоли. Для этого в WinSCP нажать кнопку и открыть PuTTY. Можно также воспользоваться командной строкой, принципиальной разницы нет.

Настройка бота с Payments 2.0
Подключившись к серверу, нужно выполнить ряд простых действий.
- Обновить Python до версии 3.10.
- Установить PIP.
- Поставить библиотеку Aiogram.
Есть несколько способов, как решить этот вопрос. Рассмотрим самый простой – использование команды screen .
Пишем команду screen и жмем Enter. Запускаем бота из обычного терминала и закрываем соединение. Бот продолжит работу. Чтобы в любой момент вернуться к этому экрану, достаточно ввести команду screen -r $screen_running . На этом деплой в облаке Selectel закончен.
Заключение
Описанная схема запуска Telegram-бота не предел того, как можно настроить прием платежей. К боту всегда можно добавить дополнительные возможности: запрашивать адрес доставки или менять цену в зависимости от него. Видеоверсия с инструкцией доступна по ссылке.
Возможно, эти тексты тоже вас заинтересуют:
