diff --git a/app/builders/contact_inbox_builder.rb b/app/builders/contact_inbox_builder.rb
index ffa45db2e..617161b53 100644
--- a/app/builders/contact_inbox_builder.rb
+++ b/app/builders/contact_inbox_builder.rb
@@ -21,6 +21,8 @@ class ContactInboxBuilder
email_source_id
when 'Channel::Sms'
phone_source_id
+ when 'Channel::Voice'
+ phone_source_id # Voice uses phone number as source ID
when 'Channel::Api', 'Channel::WebWidget'
SecureRandom.uuid
else
@@ -35,7 +37,12 @@ class ContactInboxBuilder
end
def phone_source_id
- raise ActionController::ParameterMissing, 'contact phone number' unless @contact.phone_number
+ unless @contact.phone_number.present?
+ # For voice channels, we'll create a fallback source ID if phone number is missing
+ return SecureRandom.uuid if @inbox.channel_type == 'Channel::Voice'
+
+ raise ActionController::ParameterMissing, 'contact phone number'
+ end
@contact.phone_number
end
@@ -98,6 +105,6 @@ class ContactInboxBuilder
end
def allowed_channels?
- @inbox.email? || @inbox.sms? || @inbox.twilio? || @inbox.whatsapp?
+ @inbox.email? || @inbox.sms? || @inbox.twilio? || @inbox.whatsapp? || @inbox.channel_type == 'Channel::Voice'
end
end
diff --git a/app/javascript/dashboard/components-next/CallModal/CallButton.vue b/app/javascript/dashboard/components-next/CallModal/CallButton.vue
new file mode 100644
index 000000000..f8b10ccac
--- /dev/null
+++ b/app/javascript/dashboard/components-next/CallModal/CallButton.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/javascript/dashboard/components-next/CallModal/CallModal.vue b/app/javascript/dashboard/components-next/CallModal/CallModal.vue
new file mode 100644
index 000000000..48142acd7
--- /dev/null
+++ b/app/javascript/dashboard/components-next/CallModal/CallModal.vue
@@ -0,0 +1,306 @@
+
+