noddysnots commited on
Commit
a9b3ce0
Β·
verified Β·
1 Parent(s): 815f354

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -45
app.py CHANGED
@@ -5,90 +5,76 @@ from oauth2client.service_account import ServiceAccountCredentials
5
  from transformers import pipeline
6
  from twilio.rest import Client
7
 
8
- # Authenticate with Google Sheets using YOUR service account
9
- scope = ["https://spreadsheets.google.com/feeds",
10
- "https://www.googleapis.com/auth/drive",
11
- "https://www.googleapis.com/auth/spreadsheets"]
 
12
 
13
- creds = ServiceAccountCredentials.from_json_keyfile_dict({
14
  "type": "service_account",
15
  "project_id": "varahaa-farmers",
16
  "private_key_id": "f48da20518b3a08df328b6d07006b35472445e5b",
17
- "private_key": os.environ["-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcD5El1Uv2gnz0\nK1DO9sVue1Yasq2K70sFnWq61Nw17GHISUjU5ieAuXrt1kAgo+i8DRcCmKaFd93N\newyBWLq0WNW2NSBSZ2VE3jIj3Ihn8tbw+LcfUbDFapGROYR3mx9Oi+uzl7Ksd5ZO\nFcw71CAvbSA+fJeF9FvmNLc4XSgwriQ2jL1CP4mrCKUQZRoKkrTqsLdzAEdiAYkh\nVgaDLEfSWJZW6GSVLK2WH9osR5hhNf6s1Ou15d/mTbtpf5AF7SOWCpF94jeEG4Uj\nzp6jYsDHtG2CfJvhBVMvU36kT5bqdrFMuPrO2MCoISZA7n2iwpFUAta7EPT54ilq\n25INGecdAgMBAAECggEAATgN2ZSFltvYgZIHOE5jsiEt4DcggoGc1iarolllFGiR\noMezwmrGzIloOz1gTrS5hFeRic9nOTg31Spp5bHckQBv/DG5a1U825kKpU6BAjHJ\nua9EllCcqmdDlowcmMi+UxQENPun7OYlOid4dkhJ7YoVAcLD0GWsaelchy6D6xlK\n7iBp97d2L8d2786uTfAHlK9XUyFohdCK0sAjQnp/D6SVzpvLRQcLgshPGam3KXYK\nMSNHXNfoGHU2CTE+ZS/Wd1r6/mmJ47eTPkbEzX2vpZyxAknuImcoQRA1YtcXxwmS\ni4G8MfxuTZSNFROZvod7bQX6GjlnUmJAWfhQlO9ZmQKBgQDQNliQF088MbeZDW6E\nEtoIwf1G81z9cG8z5XqxKCqf7lrpNnoJnMMo/ZgJgUcvAUpeW5NTDuIc4S4btSGA\n89tWrkasg9fRkmcq1mYMx3DSAOvlg9LrGS0lT5k1o2YZcyIQGwtL/0AWRwH9D8t/\ngcqTIEZhRlke0YsuTwwBeUMsGQKBgQC/4QaGSDj51E2qjfY2srWnw5odBJ8haYqK\ntz8mXIh+d5CqJ3o/4K8WFhvs89Bz5/qvYtNtRhaoC6uJli1qw2/tNloPEXhk+lWN\nUhZUcAKDoL8HEwc7qf59njBknfnpmWXTxmCLVTjPf7kNPXlkzhxl0ribvtF3OucK\nD05Z4+GzpQKBgBkR4hn/ZH/38IZSMrNeXbheOzPWy6SMbCdQgzRfhLpbBcE82Pbd\nVDZUSoEiesKzIhQ4bIW8rgcSKe4WIiGXuxo1w7az7UGDoj5rMEBrpy7yA3VQKQ47\nqs7qRaVKtllsHnbX+sU8x6enBxtEUplYtF6ArVi7ErH+QwbhZ62pvyfJAoGBAIWx\nJVmkssYnjaHbXgUIiZeFqziywqmGHvi96yswaA4uAsb70Kr3QycRao2z57cKmFlh\nc0z8+8ZEs1WfJK/x0memaiN7mbZJ0hgwbMySar4J32/vayfAL0iZUsCYbcu8jP18\niEIss/On22kFPzLkhVbQ9r3Vu57mlJomxgHNzLHdAoGANSXCGDIobaKtXJ7oSTx7\nFP6IPWsI1t0hFQlgrbSLm9zPCUnYda3ghqaL9Cl/4vlqx/6qoYomuZ5ZUPSAaCBu\nkC2wpjDZ4DWEZt26f1QB5Xm9ixXNPx16jnZCfDeuOx/VVLLFrmhqTasZfRI/0p4f\n+3MY4KmHmpzG7N00BZBla2U=\n-----END PRIVATE KEY-----\n"], # Add as secret in HF Space
18
  "client_email": "[email protected]",
19
  "client_id": "113471167964788057428",
20
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
21
  "token_uri": "https://oauth2.googleapis.com/token",
22
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
23
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/huggingface-bot%40varahaa-farmers.iam.gserviceaccount.com"
24
- }, scope)
25
 
 
26
  client = gspread.authorize(creds)
27
- sheet = client.open("Varahaa Farmer Verification").sheet1 # Your exact sheet name
28
 
29
- # Initialize Twilio for WhatsApp
30
  twilio_client = Client(os.environ["ACf8b3539472179ac15fb46939a02bb802"], os.environ["297cffb015681887dade0d42180332b9"])
31
 
32
  # Load NLP model
33
- qa_pipeline = pipeline("question-answering", model="bert-large-uncased-whole-word-masking-finetuned-squad")
34
 
35
  def get_farmer_data(phone):
36
  try:
37
- cell = sheet.find(phone)
38
- return sheet.row_values(cell.row)
39
  except:
40
  return None
41
 
42
  def verify_farmer(phone, query):
43
  farmer = get_farmer_data(phone)
44
  if not farmer:
45
- return "Farmer not found in registry"
46
 
47
- # Map columns from your sheet structure:
48
- # [Phone, Name, SurveyDone, Address, FarmArea, Ownership, Signature, PaddyMethod, Residue, WheatTillage]
49
  if "name" in query.lower():
50
- return f"βœ… Name Verified: {farmer[1]}"
51
  elif "survey" in query.lower():
52
- return f"Survey Status: {'βœ… Completed' if farmer[2]=='Yes' else '❌ Pending'}"
53
  elif "area" in query.lower():
54
- return f"Registered Farm Area: {farmer[4]} acres"
55
- elif "ownership" in query.lower():
56
- return f"Ownership Status: {farmer[5]}"
57
- elif "signature" in query.lower():
58
- return f"Digital Signature: {'βœ… Verified' if farmer[6]=='Yes' else '❌ Missing'}"
59
  else:
60
- return "Ask about: name, survey, area, ownership, signature"
61
 
62
  def send_questionnaire(phone):
63
  try:
64
  message = twilio_client.messages.create(
65
- body="🌾 Varahaa Farmer Verification Questionnaire:\n\n"
66
- "1. Is your farm area correct?\n"
67
- "2. Has field staff completed survey?\n"
68
- "3. Need ownership details updated?\n"
69
- "Reply with answers separated by commas",
70
- from_='whatsapp:+14155238886', # Twilio sandbox
71
  to=f'whatsapp:{phone}'
72
  )
73
- return "βœ… Questionnaire sent via WhatsApp!"
74
  except Exception as e:
75
- return f"❌ Error: {str(e)}"
76
 
77
- with gr.Blocks(theme=gr.themes.Soft()) as demo:
78
- gr.Markdown("# 🌱 Varahaa Farmer Verification")
79
-
80
- with gr.Row():
81
- phone = gr.Textbox(label="Farmer's WhatsApp Number", placeholder="+91XXXXXXXXXX")
82
- query = gr.Dropdown(["Name Verification", "Survey Status", "Farm Area",
83
- "Ownership Check", "Signature Status"], label="Select Query")
84
-
85
- output = gr.Textbox(label="Verification Result", interactive=False)
86
-
87
- with gr.Row():
88
- verify_btn = gr.Button("Verify Details", variant="primary")
89
- questionnaire_btn = gr.Button("Send Questionnaire", variant="secondary")
90
 
91
  verify_btn.click(fn=verify_farmer, inputs=[phone, query], outputs=output)
92
- questionnaire_btn.click(fn=send_questionnaire, inputs=phone, outputs=output)
93
 
94
  demo.launch()
 
5
  from transformers import pipeline
6
  from twilio.rest import Client
7
 
8
+ # Authenticate with Google Sheets
9
+ scope = [
10
+ "https://www.googleapis.com/auth/spreadsheets",
11
+ "https://www.googleapis.com/auth/drive"
12
+ ]
13
 
14
+ creds_dict = {
15
  "type": "service_account",
16
  "project_id": "varahaa-farmers",
17
  "private_key_id": "f48da20518b3a08df328b6d07006b35472445e5b",
18
+ "private_key": os.environ["PRIVATE_KEY"].replace('\\n', '\n'),
19
  "client_email": "[email protected]",
20
  "client_id": "113471167964788057428",
21
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
22
  "token_uri": "https://oauth2.googleapis.com/token",
23
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
24
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/huggingface-bot%40varahaa-farmers.iam.gserviceaccount.com"
25
+ }
26
 
27
+ creds = ServiceAccountCredentials.from_json_keyfile_dict(creds_dict, scope)
28
  client = gspread.authorize(creds)
29
+ sheet = client.open("Varahaa Farmer Verification").sheet1
30
 
31
+ # Initialize Twilio
32
  twilio_client = Client(os.environ["ACf8b3539472179ac15fb46939a02bb802"], os.environ["297cffb015681887dade0d42180332b9"])
33
 
34
  # Load NLP model
35
+ qa_pipeline = pipeline("question-answering", model="bert-base-uncased")
36
 
37
  def get_farmer_data(phone):
38
  try:
39
+ return sheet.find(phone)
 
40
  except:
41
  return None
42
 
43
  def verify_farmer(phone, query):
44
  farmer = get_farmer_data(phone)
45
  if not farmer:
46
+ return "Farmer not found"
47
 
48
+ row = sheet.row_values(farmer.row)
 
49
  if "name" in query.lower():
50
+ return f"Name: {row[1]}"
51
  elif "survey" in query.lower():
52
+ return f"Survey: {row[2]}"
53
  elif "area" in query.lower():
54
+ return f"Farm Area: {row[4]} acres"
 
 
 
 
55
  else:
56
+ return "Available queries: name, survey, area"
57
 
58
  def send_questionnaire(phone):
59
  try:
60
  message = twilio_client.messages.create(
61
+ body="🌾 Please verify your details:\n1. Is your name correct?\n2. Farm area?",
62
+ from_='whatsapp:+14155238886',
 
 
 
 
63
  to=f'whatsapp:{phone}'
64
  )
65
+ return "Questionnaire sent!"
66
  except Exception as e:
67
+ return f"Error: {str(e)}"
68
 
69
+ with gr.Blocks() as demo:
70
+ gr.Markdown("# Varahaa Farmer Verification")
71
+ phone = gr.Textbox(label="Phone Number")
72
+ query = gr.Dropdown(["Name Check", "Survey Status", "Farm Area"], label="Select Query")
73
+ output = gr.Textbox(label="Result")
74
+ verify_btn = gr.Button("Verify")
75
+ send_btn = gr.Button("Send Questionnaire")
 
 
 
 
 
 
76
 
77
  verify_btn.click(fn=verify_farmer, inputs=[phone, query], outputs=output)
78
+ send_btn.click(fn=send_questionnaire, inputs=phone, outputs=output)
79
 
80
  demo.launch()