twilio-calling / app.py
muhammadhasnain100's picture
Upload 3 files
44acc0c verified
from flask import Flask, request, jsonify
from twilio.twiml.voice_response import VoiceResponse, Gather
import google.generativeai as genai
import requests
# Initialize the Flask app
app = Flask(__name__)
# Configure Google Generative AI
GOOGLE_API_KEY = "AIzaSyAs7z8GwXN-elBeq_mS-NGd..."
genai.configure(api_key=GOOGLE_API_KEY)
def generate_answer(question):
prompt = f"""
You're a calling agent who asks users if they're at home for their COD delivery
Question: {question}
"""
"""Generate an AI-based answer for a question."""
model = genai.GenerativeModel(
'gemini-1.5-flash-001',
generation_config={"response_mime_type": "application/json"}
)
response = model.generate(prompt)
return response.text
# Endpoint to handle outbound call interactions
@app.route("/voice", methods=["POST"])
def voice_interaction():
# Get the Twilio POST request data
incoming_data = request.form
user_speech = incoming_data.get("SpeechResult", "")
response = VoiceResponse()
if "goodbye" in user_speech.lower():
response.say("Goodbye! Ending the call.")
return str(response)
# Generate a response using Generative AI
try:
ai_response = generate_answer(user_speech)
ai_text_response = ai_response.get("text", "I could not generate a response.")
except Exception as e:
ai_text_response = "I'm sorry, I encountered an error generating a response."
# Gather further input from the user
gather = Gather(input="speech", action="/voice", method="POST")
gather.say(ai_text_response)
response.append(gather)
return str(response)
if __name__ == "__main__":
app.run(debug=True)