Upload app.py
Browse files
app.py
CHANGED
@@ -1,11 +1,8 @@
|
|
1 |
import os, json, random, requests
|
2 |
from livekit import api
|
3 |
from fastapi.responses import JSONResponse
|
4 |
-
from twilio.twiml.messaging_response import MessagingResponse
|
5 |
from fastapi.middleware.cors import CORSMiddleware
|
6 |
from fastapi import FastAPI, Request
|
7 |
-
from fastapi.responses import Response
|
8 |
-
from pydantic import BaseModel, Field
|
9 |
from dotenv import load_dotenv
|
10 |
load_dotenv()
|
11 |
|
@@ -176,113 +173,4 @@ async def generate_token(request: Request):
|
|
176 |
return JSONResponse(content={
|
177 |
"accessToken": access_token,
|
178 |
"url": LIVEKIT_WEBSCOKET_URL_NUNNA,
|
179 |
-
})
|
180 |
-
|
181 |
-
class MessageRequestValidate(BaseModel):
|
182 |
-
from_phone: str = Field(default="+917389058485")
|
183 |
-
|
184 |
-
@app.post('/realtor/validate')
|
185 |
-
async def realtor_validate_user(request: MessageRequestValidate):
|
186 |
-
print(request)
|
187 |
-
if request.from_phone == "+917389058485":
|
188 |
-
return JSONResponse(content="User is verified")
|
189 |
-
return JSONResponse(content="user is not verified")
|
190 |
-
|
191 |
-
class MessageRequestSignUP(BaseModel):
|
192 |
-
from_phone: str = Field(default="+917389058485")
|
193 |
-
agent_id: str = Field(default="agent_id1")
|
194 |
-
full_name: str = Field(default="agent_full_name")
|
195 |
-
broker_id: str = Field(default="broker_id1")
|
196 |
-
|
197 |
-
@app.post('/realtor/singup')
|
198 |
-
async def realtor_sign_up(request: MessageRequestSignUP):
|
199 |
-
print(request)
|
200 |
-
return JSONResponse(content="user is signed up sucessfully now you can contine to ask propertry related questions")
|
201 |
-
|
202 |
-
|
203 |
-
@app.post('/chatbot/')
|
204 |
-
async def whatsapp_webhook(request: Request):
|
205 |
-
form_data = await request.form()
|
206 |
-
|
207 |
-
num_media = int(form_data.get('NumMedia', 0))
|
208 |
-
sender_number = form_data.get("From")[9:]
|
209 |
-
profile_name = form_data.get("ProfileName")
|
210 |
-
user_query = form_data.get("Body")
|
211 |
-
|
212 |
-
print(f"num_media: {num_media}, sender_number: {sender_number}, ProfileName: {profile_name}, user_query: {user_query}")
|
213 |
-
|
214 |
-
payload = {
|
215 |
-
"input_value": json.dumps({"from_phone": sender_number, "msg": user_query}),
|
216 |
-
"session_id": sender_number
|
217 |
-
}
|
218 |
-
print(f"Payload: {payload}")
|
219 |
-
headers = {
|
220 |
-
'Content-Type': 'application/json'
|
221 |
-
}
|
222 |
-
url = "https://workflows.kickcall.ai/api/v1/run/c94b14f5-d7a7-4fc8-89d8-eb672716c778?stream=false&user_id=1"
|
223 |
-
|
224 |
-
try:
|
225 |
-
response = requests.post(url, headers=headers, data=json.dumps(payload))
|
226 |
-
print(f"[Langflow][run] Response status code received: {response.status_code}")
|
227 |
-
|
228 |
-
if response.status_code == 200:
|
229 |
-
response_json = response.json()
|
230 |
-
print(f"[Langflow][run] Response: {response_json}")
|
231 |
-
output_text = response_json["outputs"][0]["outputs"][0]["results"]["message"]["data"]["text"]
|
232 |
-
|
233 |
-
bot_resp = MessagingResponse()
|
234 |
-
msg = bot_resp.message()
|
235 |
-
msg.body(output_text)
|
236 |
-
|
237 |
-
return Response(content=str(bot_resp), media_type="application/xml")
|
238 |
-
else:
|
239 |
-
print(f"Error: Received status code {response.status_code}")
|
240 |
-
bot_resp = MessagingResponse()
|
241 |
-
msg = bot_resp.message()
|
242 |
-
msg.body("I'm sorry, I couldn't process your request at the moment. Please try again later.")
|
243 |
-
return Response(content=str(bot_resp), media_type="application/xml")
|
244 |
-
|
245 |
-
except Exception as e:
|
246 |
-
print(f"Error in processing user query: {e}")
|
247 |
-
bot_resp = MessagingResponse()
|
248 |
-
msg = bot_resp.message()
|
249 |
-
msg.body("I'm sorry, an unexpected error occurred. Please try again later.")
|
250 |
-
return Response(content=str(bot_resp), media_type="application/xml")
|
251 |
-
|
252 |
-
|
253 |
-
class MessageRequestRunFlow(BaseModel):
|
254 |
-
from_phone: str = Field(default="+917389058485")
|
255 |
-
user_query: str = Field(default="Hello")
|
256 |
-
|
257 |
-
@app.post('/realtor/run_flow')
|
258 |
-
async def realtor_validate_user(request: MessageRequestRunFlow):
|
259 |
-
print(f"body: {request}")
|
260 |
-
user_query = request.user_query
|
261 |
-
print(f"user_query: {user_query}")
|
262 |
-
payload = {
|
263 |
-
"input_value": json.dumps({"from_phone": request.from_phone, "msg": user_query}),
|
264 |
-
"session_id": request.from_phone
|
265 |
-
}
|
266 |
-
print(f"Payload: {payload}")
|
267 |
-
headers = {
|
268 |
-
'Content-Type': 'application/json'
|
269 |
-
}
|
270 |
-
url = "https://workflows.kickcall.ai/api/v1/run/c94b14f5-d7a7-4fc8-89d8-eb672716c778?stream=false&user_id=1"
|
271 |
-
|
272 |
-
try:
|
273 |
-
response = requests.post(url, headers=headers, data=json.dumps(payload))
|
274 |
-
print(f"[Langflow][run] Response status code received: {response.status_code}")
|
275 |
-
|
276 |
-
if response.status_code == 200:
|
277 |
-
response_json = response.json()
|
278 |
-
print(f"[Langflow][run] Response: {response_json}")
|
279 |
-
output_text = response_json["outputs"][0]["outputs"][0]["results"]["message"]["data"]["text"]
|
280 |
-
return JSONResponse(content=output_text)
|
281 |
-
else:
|
282 |
-
print(f"Error: Received status code {response.status_code}")
|
283 |
-
msg ="I'm sorry, I couldn't process your request at the moment. Please try again later."
|
284 |
-
return JSONResponse(content=msg)
|
285 |
-
except Exception as e:
|
286 |
-
print(f"Error in processing user query: {e}")
|
287 |
-
msg = "I'm sorry, an unexpected error occurred. Please try again later."
|
288 |
-
return JSONResponse(content=msg)
|
|
|
1 |
import os, json, random, requests
|
2 |
from livekit import api
|
3 |
from fastapi.responses import JSONResponse
|
|
|
4 |
from fastapi.middleware.cors import CORSMiddleware
|
5 |
from fastapi import FastAPI, Request
|
|
|
|
|
6 |
from dotenv import load_dotenv
|
7 |
load_dotenv()
|
8 |
|
|
|
173 |
return JSONResponse(content={
|
174 |
"accessToken": access_token,
|
175 |
"url": LIVEKIT_WEBSCOKET_URL_NUNNA,
|
176 |
+
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|