first commit
This commit is contained in:
82
app/main.py
Normal file
82
app/main.py
Normal file
@@ -0,0 +1,82 @@
|
||||
from fastapi import FastAPI, HTTPException, status
|
||||
from .config import settings
|
||||
from .voipms_client import update_did_routing
|
||||
from .database import Session
|
||||
from .models import Call
|
||||
|
||||
app = FastAPI(
|
||||
title="EAMCO VoIP.ms Controller",
|
||||
description="An API to manage routing for a VoIP.ms DID.",
|
||||
version="1.0.0",
|
||||
)
|
||||
|
||||
|
||||
|
||||
@app.get("/", tags=["General"])
|
||||
def read_root():
|
||||
"""A simple root endpoint to confirm the API is running."""
|
||||
return {"message": f"Welcome to the VoIP.ms API for DID: {settings.target_did}"}
|
||||
|
||||
|
||||
@app.post("/route/sip", status_code=status.HTTP_200_OK, tags=["DID Routing"])
|
||||
def route_to_sip_account():
|
||||
"""
|
||||
Routes the target DID to the pre-configured SIP account.
|
||||
"""
|
||||
routing_string = f"sip:{settings.target_sip_account}"
|
||||
try:
|
||||
result = update_did_routing(did=settings.target_did, routing=routing_string)
|
||||
target_phone = routing_string.split(':')[1]
|
||||
db = Session()
|
||||
db.add(Call(current_phone=target_phone))
|
||||
db.commit()
|
||||
db.close()
|
||||
return {
|
||||
"message": f"Successfully routed DID {settings.target_did} to SIP account {settings.target_sip_account}",
|
||||
"voipms_response": result
|
||||
}
|
||||
except HTTPException as e:
|
||||
# Re-raise the exception to let FastAPI handle the response
|
||||
raise e
|
||||
|
||||
|
||||
@app.post("/route/cellphone1", status_code=status.HTTP_200_OK, tags=["DID Routing"])
|
||||
def route_to_cellphone_1():
|
||||
"""
|
||||
Routes the target DID to the pre-configured Cellphone #1.
|
||||
"""
|
||||
routing_string = f"fwd:{settings.target_cellphone_1}"
|
||||
try:
|
||||
result = update_did_routing(did=settings.target_did, routing=routing_string)
|
||||
target_phone = routing_string.split(':')[1]
|
||||
db = Session()
|
||||
db.add(Call(current_phone=target_phone))
|
||||
db.commit()
|
||||
db.close()
|
||||
return {
|
||||
"message": f"Successfully routed DID {settings.target_did} to Cellphone #1 ({settings.target_cellphone_1})",
|
||||
"voipms_response": result
|
||||
}
|
||||
except HTTPException as e:
|
||||
raise e
|
||||
|
||||
|
||||
@app.post("/route/cellphone2", status_code=status.HTTP_200_OK, tags=["DID Routing"])
|
||||
def route_to_cellphone_2():
|
||||
"""
|
||||
Routes the target DID to the pre-configured Cellphone #2.
|
||||
"""
|
||||
routing_string = f"fwd:{settings.target_cellphone_2}"
|
||||
try:
|
||||
result = update_did_routing(did=settings.target_did, routing=routing_string)
|
||||
target_phone = routing_string.split(':')[1]
|
||||
db = Session()
|
||||
db.add(Call(current_phone=target_phone))
|
||||
db.commit()
|
||||
db.close()
|
||||
return {
|
||||
"message": f"Successfully routed DID {settings.target_did} to Cellphone #2 ({settings.target_cellphone_2})",
|
||||
"voipms_response": result
|
||||
}
|
||||
except HTTPException as e:
|
||||
raise e
|
||||
Reference in New Issue
Block a user