diff --git a/erpnext/communication/doctype/call_log/call_log.py b/erpnext/communication/doctype/call_log/call_log.py
index fcca0e4..0534706 100644
--- a/erpnext/communication/doctype/call_log/call_log.py
+++ b/erpnext/communication/doctype/call_log/call_log.py
@@ -3,8 +3,17 @@
 # For license information, please see license.txt
 
 from __future__ import unicode_literals
-# import frappe
+import frappe
 from frappe.model.document import Document
+from erpnext.crm.doctype.utils import get_employee_emails_for_popup
 
 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)
diff --git a/erpnext/erpnext_integrations/exotel_integration.py b/erpnext/erpnext_integrations/exotel_integration.py
index 32602d6..f91f757 100644
--- a/erpnext/erpnext_integrations/exotel_integration.py
+++ b/erpnext/erpnext_integrations/exotel_integration.py
@@ -1,5 +1,4 @@
 import frappe
-from erpnext.crm.doctype.utils import get_employee_emails_for_popup
 import requests
 
 # api/method/erpnext.erpnext_integrations.exotel_integration.handle_incoming_call
@@ -17,14 +16,9 @@
 
 	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)
 def handle_end_call(*args, **kwargs):
 	call_log = update_call_log(kwargs, 'Completed')
-	frappe.publish_realtime('call_disconnected', call_log)
 
 @frappe.whitelist(allow_guest=True)
 def handle_missed_call(*args, **kwargs):
diff --git a/erpnext/public/js/call_popup/call_popup.js b/erpnext/public/js/call_popup/call_popup.js
index 4df2321..8748980 100644
--- a/erpnext/public/js/call_popup/call_popup.js
+++ b/erpnext/public/js/call_popup/call_popup.js
@@ -2,6 +2,7 @@
 	constructor(call_log) {
 		this.caller_number = call_log.from;
 		this.call_log = call_log;
+		this.setup_listener();
 		this.make();
 	}
 
@@ -187,6 +188,13 @@
 			}
 		});
 	}
+	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 () {
@@ -198,9 +206,4 @@
 			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);
-		}
-	});
 });
