chore: Mark conversations as pending instead of reopen when bot is present (#5751)

With this change, conversations are marked as pending instead of reopening when a bot is connected to that Inbox. 

Fixes: #5668
This commit is contained in:
smartdev58 2022-11-02 12:54:56 -08:00 committed by GitHub
parent 86ca7f4a8d
commit 9c0cce0392
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 2 deletions

View file

@ -210,7 +210,7 @@ class Conversation < ApplicationRecord
def mark_conversation_pending_if_bot
# TODO: make this an inbox config instead of assuming bot conversations should start as pending
self.status = :pending if inbox.agent_bot_inbox&.active? || inbox.hooks.pluck(:app_id).include?('dialogflow')
self.status = :pending if inbox.active_bot?
end
def notify_conversation_creation

View file

@ -101,6 +101,10 @@ class Inbox < ApplicationRecord
channel_type == 'Channel::Whatsapp'
end
def active_bot?
agent_bot_inbox&.active? || hooks.pluck(:app_id).include?('dialogflow')
end
def inbox_type
channel.name
end

View file

@ -193,7 +193,18 @@ class Message < ApplicationRecord
return if conversation.muted?
return unless incoming?
conversation.open! if conversation.resolved? || conversation.snoozed?
conversation.open! if conversation.snoozed?
reopen_resolved_conversation if conversation.resolved?
end
def reopen_resolved_conversation
# mark resolved bot conversation as pending to be reopened by bot processor service
if conversation.inbox.active_bot?
conversation.pending!
else
conversation.open!
end
end
def execute_message_template_hooks

View file

@ -31,6 +31,17 @@ RSpec.describe Message, type: :model do
message.save!
expect(message.conversation.open?).to be false
end
it 'will mark the conversation as pending if the agent bot is active' do
agent_bot = create(:agent_bot)
inbox = conversation.inbox
inbox.agent_bot = agent_bot
inbox.save!
conversation.resolved!
message.save!
expect(conversation.open?).to be false
expect(conversation.pending?).to be true
end
end
context 'with webhook_data' do