| def create_ivr_script(alert_json: dict) -> list[dict]: | |
| """ | |
| Creates a voice script with timing from a structured alert JSON. | |
| """ | |
| script = [ | |
| {"text": f"Namaste. Mausam ki chetavani {alert_json['location']['district']} ke liye.", "delay_after": 1}, | |
| {"text": f"Fasal: {alert_json['crop']['name']}.", "delay_after": 1}, | |
| {"text": f"Chetavani: {alert_json['alert']['message']}", "delay_after": 2}, | |
| {"text": "Salah ke liye, ek dabaye.", "delay_after": 0} | |
| ] | |
| return script | |
| def get_ivr_submenu_script(alert_json: dict) -> list[dict]: | |
| """ | |
| Returns a submenu script for the IVR. | |
| """ | |
| actions = ". ".join([action.replace('_', ' ') for action in alert_json['alert']['action_items']]) | |
| script = [ | |
| {"text": f"Salah: {actions}", "delay_after": 2}, | |
| {"text": "Dhanyavad.", "delay_after": 0} | |
| ] | |
| return script | |
| if __name__ == '__main__': | |
| sample_alert = { | |
| "alert_id": "BH_PAT_001_20250723", | |
| "timestamp": "2025-07-23T06:00:00Z", | |
| "location": { | |
| "village": "Kumhrar", | |
| "district": "Patna", | |
| "state": "Bihar", | |
| "coordinates": [25.5941, 85.1376] | |
| }, | |
| "crop": { | |
| "name": "rice", | |
| "stage": "flowering", | |
| "planted_estimate": "2025-06-15" | |
| }, | |
| "alert": { | |
| "type": "weather_warning", | |
| "urgency": "high", | |
| "message": "Heavy rainfall (40-60mm) expected in next 2 days. Delay fertilizer application. Ensure proper drainage.", | |
| "action_items": ["delay_fertilizer", "check_drainage"], | |
| "valid_until": "2025-07-25T18:00:00Z" | |
| }, | |
| "weather": { | |
| "forecast_days": 3, | |
| "rain_probability": 85, | |
| "expected_rainfall": "45mm" | |
| } | |
| } | |
| main_script = create_ivr_script(sample_alert) | |
| print("--- Main Script ---") | |
| for line in main_script: | |
| print(line) | |
| submenu_script = get_ivr_submenu_script(sample_alert) | |
| print("\n--- Submenu Script ---") | |
| for line in submenu_script: | |
| print(line) | |