summaryrefslogtreecommitdiff
path: root/telephony_app/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'telephony_app/main.py')
-rw-r--r--telephony_app/main.py70
1 files changed, 70 insertions, 0 deletions
diff --git a/telephony_app/main.py b/telephony_app/main.py
new file mode 100644
index 0000000..c43d844
--- /dev/null
+++ b/telephony_app/main.py
@@ -0,0 +1,70 @@
+import logging
+import os
+from fastapi import FastAPI
+from vocode.streaming.models.telephony import TwilioConfig
+from pyngrok import ngrok
+from vocode.streaming.telephony.config_manager.redis_config_manager import (
+ RedisConfigManager,
+)
+from vocode.streaming.models.synthesizer import ElevenLabsSynthesizerConfig
+from vocode.streaming.models.agent import ChatGPTAgentConfig
+from vocode.streaming.models.message import BaseMessage
+from vocode.streaming.telephony.server.base import (
+ TwilioInboundCallConfig,
+ TelephonyServer,
+)
+
+from speller_agent import SpellerAgentFactory
+import sys
+
+# if running from python, this will load the local .env
+# docker-compose will load the .env file by itself
+from dotenv import load_dotenv
+
+load_dotenv()
+
+app = FastAPI(docs_url=None)
+
+logging.basicConfig()
+logger = logging.getLogger(__name__)
+logger.setLevel(logging.DEBUG)
+
+config_manager = RedisConfigManager()
+
+BASE_URL = os.getenv("BASE_URL")
+
+if not BASE_URL:
+ ngrok_auth = os.environ.get("NGROK_AUTH_TOKEN")
+ if ngrok_auth is not None:
+ ngrok.set_auth_token(ngrok_auth)
+ port = sys.argv[sys.argv.index("--port") + 1] if "--port" in sys.argv else 3000
+
+ # Open a ngrok tunnel to the dev server
+ BASE_URL = ngrok.connect(port).public_url.replace("https://", "")
+ logger.info('ngrok tunnel "{}" -> "http://127.0.0.1:{}"'.format(BASE_URL, port))
+
+if not BASE_URL:
+ raise ValueError("BASE_URL must be set in environment if not using pyngrok")
+
+telephony_server = TelephonyServer(
+ base_url=BASE_URL,
+ config_manager=config_manager,
+ inbound_call_configs=[
+ TwilioInboundCallConfig(
+ url="/inbound_call",
+ agent_config=ChatGPTAgentConfig(
+ initial_message=BaseMessage(text="What up"),
+ prompt_preamble="Have a pleasant conversation about life",
+ generate_responses=True,
+ ),
+ twilio_config=TwilioConfig(
+ account_sid=os.environ["TWILIO_ACCOUNT_SID"],
+ auth_token=os.environ["TWILIO_AUTH_TOKEN"],
+ ),
+ )
+ ],
+ agent_factory=SpellerAgentFactory(),
+ logger=logger,
+)
+
+app.include_router(telephony_server.get_router())