feat: assign connected agent bot owner

This commit is contained in:
Sojan Jose
2026-06-28 19:47:23 -07:00
parent d0b1c055e8
commit f5a7d78180
2 changed files with 21 additions and 1 deletions
+10 -1
View File
@@ -283,12 +283,21 @@ class Conversation < ApplicationRecord
return handle_campaign_status if campaign.present?
# TODO: make this an inbox config instead of assuming bot conversations should start as pending
assign_connected_agent_bot if inbox.agent_bot_inbox&.active?
self.status = :pending if inbox.active_bot?
end
def handle_campaign_status
# If campaign has no sender (bot-initiated) and inbox has active bot, let bot handle it
self.status = :pending if campaign.sender_id.nil? && inbox.active_bot?
return unless campaign.sender_id.nil? && inbox.active_bot?
assign_connected_agent_bot if inbox.agent_bot_inbox&.active?
self.status = :pending
end
def assign_connected_agent_bot
self.assignee = nil
self.assignee_agent_bot = inbox.agent_bot
end
def notify_conversation_creation
+11
View File
@@ -658,6 +658,11 @@ RSpec.describe Conversation do
expect(conversation.status).to eq('pending')
end
it 'sets connected agent bot as the conversation owner' do
expect(conversation.assignee_agent_bot).to eq(bot_inbox.agent_bot)
expect(conversation.assignee).to be_nil
end
context 'with campaigns' do
let(:user) { create(:user, account: bot_inbox.inbox.account) }
@@ -665,12 +670,14 @@ RSpec.describe Conversation do
campaign = create(:campaign, inbox: bot_inbox.inbox, account: bot_inbox.inbox.account, sender: user)
conversation = create(:conversation, inbox: bot_inbox.inbox, campaign: campaign)
expect(conversation.status).to eq('open')
expect(conversation.assignee_agent_bot).to be_nil
end
it 'returns conversation as pending if campaign has no sender (bot-initiated) and bot is active' do
campaign = create(:campaign, inbox: bot_inbox.inbox, account: bot_inbox.inbox.account, sender: nil)
conversation = create(:conversation, inbox: bot_inbox.inbox, campaign: campaign)
expect(conversation.status).to eq('pending')
expect(conversation.assignee_agent_bot).to eq(bot_inbox.agent_bot)
end
end
@@ -701,6 +708,10 @@ RSpec.describe Conversation do
it 'returns conversation status as pending' do
expect(conversation.status).to eq('pending')
end
it 'does not set agent bot ownership' do
expect(conversation.assignee_agent_bot).to be_nil
end
end
describe '#delete conversation' do