Сделай бесплатную гадалку чтобы играла по телефону

Позвони и получи горячее предсказание от гадалки по телефону — без смс и регистрации, только магия и тайны судьбы!

В наше время интерактивные голосовые сервисы стали доступными каждому желающему. Вы можете быстро собрать «гадалку», которая будет принимать звонки, задавать пользователю вопросы и выдавать предсказания – всё это без вложений в оборудование и без необходимости платить за хостинг. В статье рассмотрим, как сделать такой сервис полностью бесплатно, используя открытые инструменты и облачные сервисы с бесплатным тарифом.


Что такое телефонная гадалка?

Телефонная гадалка – это IVR‑система (Interactive Voice Response), которая:

  • Принимает входящий звонок.
  • Приветствует абонента голосовым сообщением.
  • Задает несколько вопросов (например, «Выберите номер от 1 до 5»).
  • На основе выбора генерирует «прогноз» и озвучивает его.

Сервис может работать круглосуточно и не требует участия живого человека.

Что понадобится?

  1. Облачный сервис для телефонных звонков – Twilio (есть бесплатный Trial‑аккаунт с $15 кредитом).
  2. Скриптовый язык для обработки логики – Python (можно использовать любой, но Python самый простой для новичков).
  3. Веб‑сервер, поддерживающий HTTPS – Render, Heroku или PythonAnywhere (все имеют бесплатные планы).
  4. Текст‑в‑речь (TTS) и распознавание речи – встроенные возможности Twilio (Say и Gather).

Регистрация и настройка Twilio

Следуйте этим шагам:

  • Перейдите на twilio.com/try-twilio и создайте бесплатный аккаунт.
  • Подтвердите номер телефона – он понадобится для получения кода подтверждения.
  • После входа в Console получите Account SID и Auth Token – они понадобятся в коде.
  • В разделе Phone Numbers нажмите Buy a Number (в бесплатном тарифе можно взять номер с поддержкой голосовых вызовов).
  • Для выбранного номера задайте Voice > A Call Comes In URL – сюда будет отправлен HTTP‑запрос каждый раз, когда кто‑то позвонит. Пока оставьте заглушку, мы её поменяем позже.

Создание логики гадалки на Python

4.1 Структура проекта

my_fortune_teller/
│
├─ app.py # основной Flask‑приложение
├─ requirements.txt # зависимости
└─ fortunes.py # список предсказаний

4.2 requirements.txt

Flask==2.3.3
twilio==8.7.0

4.3 fortunes.py

Файл содержит массив предсказаний. Вы можете добавить свои варианты.

import random

PREDICTIONS = [
 "Сегодня вам улыбнётся удача, будьте смелее!",
 "Ваша любовь скоро вернётся к вам.",
 "Финансовый прорыв будет уже в этом месяце.",
 "Ожидайте неожиданного подарка от близкого человека.",
 "Будьте осторожны в дороге, возможна небольшая задержка."
]

def get_random_fortune:
 return random.choice(PREDICTIONS)

4.4 app.py

Приложение использует Flask и Twilio VoiceResponse для генерации XML‑ответов, которые понимает телефонная сеть.

from flask import Flask, request, Response
from twilio.twiml.voice_response import VoiceResponse, Gather
from fortunes import get_random_fortune

app = Flask(__name__)

@app.route("/voice", methods=['GET', 'POST'])
def voice:
 resp = VoiceResponse
 resp.say("Добро пожаловать в волшебную телефонную гадалку!", voice='alice', language='ru-RU')
 
 gather = Gather(num_digits=1, action="/gather", method="POST", timeout=10)
 gather.say("Нажмите одну цифру от 1 до 5, чтобы узнать ваше предсказание.", voice='alice', language='ru-RU')
 resp.append(gather)
 
 # Если пользователь ничего не ввёл – повторяем приветствие
 resp.redirect("/voice")
 return Response(str(resp), mimetype='text/xml')

@app.route("/gather", methods=['GET', 'POST'])
def gather:
 digits = request.values.get('Digits', '')
 resp = VoiceResponse
 
 if digits and digits in "12345":
 fortune = get_random_fortune
 resp.say(fortune, voice='alice', language='ru-RU')
 resp.say("Спасибо, что позвонили; До свидания!", voice='alice', language='ru-RU')
 resp.hangup
 else:
 resp.say("Неверный ввод. Пожалуйста, попробуйте ещё раз.", voice='alice', language='ru-RU')
 resp.redirect("/voice")
 
 return Response(str(resp), mimetype='text/xml')

if __name__ == "__main__":
 app.run(debug=True)

4.5 Пояснения к коду

  • VoiceResponse – объект, который формирует Twiml (XML), понятный телефонной сети.
  • Gather собирает нажатия клавиш DTMF (цифры на клавиатуре телефона).
  • В /voice мы приветствуем пользователя и просим ввести цифру.
  • В /gather проверяем ввод и озвучиваем случайное предсказание.
  • Все сообщения произносятся голосом Alice (русский язык поддерживается).

Развёртывание сервиса бесплатно

Выберите один из бесплатных хостингов:

5.1 Render (рекомендовано)

  1. Зарегистрируйтесь на render.com.
  2. Создайте новый Web Service, укажите репозиторий (GitHub, GitLab) с вашим проектом.
  3. В Build Command укажите pip install -r requirements.txt.
  4. В Start Command укажите gunicorn app:app (не забудьте добавить gunicorn в requirements.txt).
  5. После деплоя получите HTTPS‑URL, например https://my-fortune-teller.onrender.com/voice.

5.2 Настройка Twilio

Вернитесь в консоль Twilio, откройте ваш номер и в поле Voice > A Call Comes In укажите полученный URL, добавив путь /voice:

https://my-fortune-teller.onrender.com/voice

Сохраните изменения. Теперь любой звонок на ваш номер будет перенаправлен в ваш Flask‑приложение.

Тестирование

  1. Позвоните на номер, который вы приобрели в Twilio.
  2. Слушайте приветствие и нажмите цифру от 1 до 5.
  3. Получите предсказание. При неправильном вводе система предложит повторить.

Если что‑то не работает, откройте Twilio Debugger (в консоли Twilio) – там отображаются ошибки запросов к вашему серверу.

Как добавить «нуар» и «интерактивность»

  • База вопросов – храните массив вопросов и вариантов ответов в отдельном файле questions.py. После каждого ответа можно задавать следующий вопрос.
  • Случайные сценарии – используйте random.choice не только для предсказаний, но и для выбора тематики (любовь, карьера, здоровье).
  • Запись звонка – добавьте record=True в Gather, чтобы сохранять разговоры для аналитики.
  • Подключение к базе данных – сохраните номер звонящего и его выбор, чтобы позже анализировать популярность предсказаний.
  • Мультиязычность – создайте словари с переводами и переключайте язык в зависимости от выбора пользователя.

Ограничения бесплатного тарифа Twilio

При использовании Trial‑аккаунта есть несколько нюансов:

  • Все исходящие звонки могут быть ограничены только на проверенные номера (вы можете добавить их в Verified Caller IDs).
  • Каждый звонок будет сопровождаться небольшим голосовым сообщением о том, что это Twilio trial account.
  • Бюджет в $15 покрывает несколько десятков минут разговоров – достаточно для тестов и небольших проектов.

Полезные ссылки и ресурсы

  • Документация Twilio Voice (Twiml)
  • Туториал «Приём входящих звонков» на Python/Flask
  • Развёртывание Flask‑приложения на Render
  • GitHub‑репозиторий с примерами

Создать бесплатную телефонную гадалку проще, чем кажется. С помощью Twilio и небольшого Flask‑скрипта вы получаете полноценный IVR‑сервис, который может работать 24/7 без вложений в оборудование. Главное – правильно настроить веб‑хук, обеспечить HTTPS‑соединение и придумать интересные предсказания. Экспериментируйте с вопросами, добавляйте базы данных и делайте ваш сервис уникальным!

Удачной разработки и пусть ваша гадалка приносит радость звонящим!