fix: Decouple call popup from exotel
This commit is contained in:
parent
3fdeffff7a
commit
5ea6a5e33a
@ -3,8 +3,17 @@
|
|||||||
# For license information, please see license.txt
|
# For license information, please see license.txt
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
# import frappe
|
import frappe
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
|
from erpnext.crm.doctype.utils import get_employee_emails_for_popup
|
||||||
|
|
||||||
class CallLog(Document):
|
class CallLog(Document):
|
||||||
pass
|
def after_insert(self):
|
||||||
|
employee_emails = get_employee_emails_for_popup(self.medium)
|
||||||
|
for email in employee_emails:
|
||||||
|
frappe.publish_realtime('show_call_popup', self, user=email)
|
||||||
|
|
||||||
|
def on_update(self):
|
||||||
|
doc_before_save = self.get_doc_before_save()
|
||||||
|
if doc_before_save.status in ['Ringing'] and self.status in ['Missed', 'Completed']:
|
||||||
|
frappe.publish_realtime('call_{id}_disconnected'.format(id=self.id), self)
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import frappe
|
import frappe
|
||||||
from erpnext.crm.doctype.utils import get_employee_emails_for_popup
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
# api/method/erpnext.erpnext_integrations.exotel_integration.handle_incoming_call
|
# api/method/erpnext.erpnext_integrations.exotel_integration.handle_incoming_call
|
||||||
@ -17,14 +16,9 @@ def handle_incoming_call(*args, **kwargs):
|
|||||||
|
|
||||||
call_log = get_call_log(kwargs)
|
call_log = get_call_log(kwargs)
|
||||||
|
|
||||||
employee_emails = get_employee_emails_for_popup(kwargs.get('To'))
|
|
||||||
for email in employee_emails:
|
|
||||||
frappe.publish_realtime('show_call_popup', call_log, user=email)
|
|
||||||
|
|
||||||
@frappe.whitelist(allow_guest=True)
|
@frappe.whitelist(allow_guest=True)
|
||||||
def handle_end_call(*args, **kwargs):
|
def handle_end_call(*args, **kwargs):
|
||||||
call_log = update_call_log(kwargs, 'Completed')
|
call_log = update_call_log(kwargs, 'Completed')
|
||||||
frappe.publish_realtime('call_disconnected', call_log)
|
|
||||||
|
|
||||||
@frappe.whitelist(allow_guest=True)
|
@frappe.whitelist(allow_guest=True)
|
||||||
def handle_missed_call(*args, **kwargs):
|
def handle_missed_call(*args, **kwargs):
|
||||||
|
@ -2,6 +2,7 @@ class CallPopup {
|
|||||||
constructor(call_log) {
|
constructor(call_log) {
|
||||||
this.caller_number = call_log.from;
|
this.caller_number = call_log.from;
|
||||||
this.call_log = call_log;
|
this.call_log = call_log;
|
||||||
|
this.setup_listener();
|
||||||
this.make();
|
this.make();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,6 +188,13 @@ class CallPopup {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
setup_listener() {
|
||||||
|
frappe.realtime.on(`call_${this.call_log.id}_disconnected`, call_log => {
|
||||||
|
this.call_disconnected(call_log);
|
||||||
|
// Remove call disconnect listener after the call is disconnected
|
||||||
|
frappe.realtime.off(`call_${this.call_log.id}_disconnected`);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).on('app_ready', function () {
|
$(document).on('app_ready', function () {
|
||||||
@ -198,9 +206,4 @@ $(document).on('app_ready', function () {
|
|||||||
erpnext.call_popup.dialog.show();
|
erpnext.call_popup.dialog.show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
frappe.realtime.on('call_disconnected', call_log => {
|
|
||||||
if (erpnext.call_popup && erpnext.call_popup.call_log.id === call_log.id) {
|
|
||||||
erpnext.call_popup.call_disconnected(call_log);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user