File size: 2,822 Bytes
b26b37f
0308164
 
 
b26b37f
0308164
b26b37f
a9b3ce0
 
 
 
 
b26b37f
a9b3ce0
0308164
 
 
a9b3ce0
0308164
 
 
 
 
 
a9b3ce0
0308164
a9b3ce0
0308164
a9b3ce0
0308164
a9b3ce0
0308164
 
 
a9b3ce0
b26b37f
0308164
 
a9b3ce0
0308164
b26b37f
 
0308164
 
 
a9b3ce0
b26b37f
a9b3ce0
0308164
a9b3ce0
0308164
a9b3ce0
b26b37f
a9b3ce0
b26b37f
a9b3ce0
b26b37f
0308164
 
 
a9b3ce0
 
0308164
 
a9b3ce0
0308164
a9b3ce0
b26b37f
a9b3ce0
 
 
 
 
 
 
b26b37f
0308164
a9b3ce0
b26b37f
 
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
import gradio as gr
import gspread
import os
from oauth2client.service_account import ServiceAccountCredentials
from transformers import pipeline
from twilio.rest import Client

# Authenticate with Google Sheets
scope = [
    "https://www.googleapis.com/auth/spreadsheets",
    "https://www.googleapis.com/auth/drive"
]

creds_dict = {
    "type": "service_account",
    "project_id": "varahaa-farmers",
    "private_key_id": "f48da20518b3a08df328b6d07006b35472445e5b",
    "private_key": os.environ["PRIVATE_KEY"].replace('\\n', '\n'),
    "client_email": "[email protected]",
    "client_id": "113471167964788057428",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/huggingface-bot%40varahaa-farmers.iam.gserviceaccount.com"
}

creds = ServiceAccountCredentials.from_json_keyfile_dict(creds_dict, scope)
client = gspread.authorize(creds)
sheet = client.open("Varahaa Farmer Verification").sheet1

# Initialize Twilio
twilio_client = Client(os.environ["ACf8b3539472179ac15fb46939a02bb802"], os.environ["297cffb015681887dade0d42180332b9"])

# Load NLP model
qa_pipeline = pipeline("question-answering", model="bert-base-uncased")

def get_farmer_data(phone):
    try:
        return sheet.find(phone)
    except:
        return None

def verify_farmer(phone, query):
    farmer = get_farmer_data(phone)
    if not farmer:
        return "Farmer not found"
    
    row = sheet.row_values(farmer.row)
    if "name" in query.lower():
        return f"Name: {row[1]}"
    elif "survey" in query.lower():
        return f"Survey: {row[2]}"
    elif "area" in query.lower():
        return f"Farm Area: {row[4]} acres"
    else:
        return "Available queries: name, survey, area"

def send_questionnaire(phone):
    try:
        message = twilio_client.messages.create(
            body="🌾 Please verify your details:\n1. Is your name correct?\n2. Farm area?",
            from_='whatsapp:+14155238886',
            to=f'whatsapp:{phone}'
        )
        return "Questionnaire sent!"
    except Exception as e:
        return f"Error: {str(e)}"

with gr.Blocks() as demo:
    gr.Markdown("# Varahaa Farmer Verification")
    phone = gr.Textbox(label="Phone Number")
    query = gr.Dropdown(["Name Check", "Survey Status", "Farm Area"], label="Select Query")
    output = gr.Textbox(label="Result")
    verify_btn = gr.Button("Verify")
    send_btn = gr.Button("Send Questionnaire")
    
    verify_btn.click(fn=verify_farmer, inputs=[phone, query], outputs=output)
    send_btn.click(fn=send_questionnaire, inputs=phone, outputs=output)

demo.launch()