From 49de7c92a57866fd98472984b2873037cf0bd1eb Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Wed, 15 Jan 2025 18:05:24 +0530 Subject: [PATCH] fix: check exotel number --- .../crm_exotel_agent/crm_exotel_agent.json | 10 ++++++++-- crm/integrations/exotel/handler.py | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/crm/fcrm/doctype/crm_exotel_agent/crm_exotel_agent.json b/crm/fcrm/doctype/crm_exotel_agent/crm_exotel_agent.json index 826a49db..f9730b94 100644 --- a/crm/fcrm/doctype/crm_exotel_agent/crm_exotel_agent.json +++ b/crm/fcrm/doctype/crm_exotel_agent/crm_exotel_agent.json @@ -9,7 +9,8 @@ "user", "user_name", "column_break_hdec", - "mobile_no" + "mobile_no", + "exotel_number" ], "fields": [ { @@ -41,11 +42,16 @@ "in_list_view": 1, "in_standard_filter": 1, "label": "User Name" + }, + { + "fieldname": "exotel_number", + "fieldtype": "Data", + "label": "Exotel Number" } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2025-01-11 16:20:21.877873", + "modified": "2025-01-15 16:19:21.965415", "modified_by": "Administrator", "module": "FCRM", "name": "CRM Exotel Agent", diff --git a/crm/integrations/exotel/handler.py b/crm/integrations/exotel/handler.py index 4375f0a7..3b6dd523 100644 --- a/crm/integrations/exotel/handler.py +++ b/crm/integrations/exotel/handler.py @@ -66,6 +66,12 @@ def make_a_call(to_number, from_number=None, caller_id=None, link_to_document=No if not from_number: from_number = frappe.get_value("CRM Exotel Agent", {"user": frappe.session.user}, "mobile_no") + if not caller_id: + caller_id = frappe.get_value("CRM Exotel Agent", {"user": frappe.session.user}, "exotel_number") + + if caller_id and caller_id not in get_all_exophones(): + frappe.throw(_("Exotel Number {0} is not valid").format(caller_id), title=_("Invalid Exotel Number")) + if not from_number: frappe.throw( _("You do not have mobile number set in your Exotel Agent"), title=_("Mobile Number Missing") @@ -119,6 +125,15 @@ def get_exotel_endpoint(action=None): ) +def get_all_exophones(): + endpoint = get_exotel_endpoint("IncomingPhoneNumbers.json") + response = requests.get(endpoint) + return [ + phone.get("IncomingPhoneNumber", {}).get("PhoneNumber") + for phone in response.json().get("IncomingPhoneNumbers", []) + ] + + def get_status_updater_url(): from frappe.utils.data import get_url