Spaces:
Sleeping
Sleeping
File size: 2,763 Bytes
052e52f 3f861d9 cbda7a6 3f861d9 72b4474 e9086c4 052e52f 77e49e3 cbda7a6 082246f 052e52f cbda7a6 052e52f f586e58 052e52f 8597bda cbda7a6 8597bda cbda7a6 08961c8 cbda7a6 8597bda cbda7a6 c67a732 d258a15 36ec663 783400a 36ec663 6510aba 14536ce 6510aba 36ec663 6510aba 44d0ab9 cbda7a6 052e52f 08961c8 052e52f 08961c8 052e52f e9086c4 052e52f cbda7a6 052e52f 08961c8 90742c7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
from flask import Flask, request
from twilio.twiml.messaging_response import MessagingResponse
from twilio.rest import Client
import os
import requests
from PIL import Image
import io
import uuid
import shutil
from other_function import predict_pest,predict_disease,convert_img,generate_response
app = Flask(__name__)
UPLOAD_FOLDER = '/code/uploads'
if not os.path.exists(UPLOAD_FOLDER):
os.makedirs(UPLOAD_FOLDER)
# Initialize the Flask app
account_sid = os.environ.get('TWILIO_ACCOUNT_SID')
auth_token = os.environ.get('TWILIO_AUTH_TOKEN')
client = Client(account_sid, auth_token)
# WhatsApp number to send messages from (your Twilio number)
from_whatsapp_number = 'whatsapp:+14155238886'
@app.route('/whatsapp', methods=['POST'])
def whatsapp_webhook():
incoming_msg = request.values.get('Body', '').lower()
sender = request.values.get('From')
# Check if an image is attached
num_media = int(request.values.get('NumMedia', 0))
if num_media > 0:
media_url = request.values.get('MediaUrl0')
content_type = request.values.get('MediaContentType0')
if content_type.startswith('image/'):
filepath = convert_img(media_url, account_sid, auth_token)
if predict_disease(filepath):
response_text = predict_disease(filepath)
elif predict_pest(filepath):
response_text=predict_pest(filepath)
else:
response_text = "Please upload other image with good quality."
else:
response_text = "The attached file is not an image. Please send an image for classification."
elif 'bookkeeping' in incoming_msg:
response_text = "Please provide the details you'd like to record."
else:
response_text = get_agricultural_insights(incoming_msg)
send_message(sender, response_text)
return '', 204 # Return an empty response to Twilio
def get_agricultural_insights(query):
return generate_response(query)
def send_message(to, body):
try:
message = client.messages.create(
from_=from_whatsapp_number,
body=body,
to=to
)
print(f"Message sent with SID: {message.sid}")
except Exception as e:
print(f"Error sending message: {e}")
# Function to send an initial message
def send_initial_message(to_number):
send_message(
f'whatsapp:{to_number}',
'Welcome to the Agri AI Chatbot! How can I assist you today? You can send an image with "pest" or "disease" to classify it.'
)
if __name__ == '__main__':
send_initial_message('916382792828')
app.run(host='0.0.0.0', port=7860) |