feat: add campaign context to Captain v2 prompts (#13644)

Co-authored-by: Aakash Bakhle <48802744+aakashb95@users.noreply.github.com>
This commit is contained in:
Shivam Mishra
2026-02-25 18:33:37 +05:30
committed by GitHub
parent ba804e0f30
commit b98c614669
7 changed files with 83 additions and 5 deletions

View File

@@ -19,9 +19,11 @@ module Concerns::Agentable
state = context.context[:state] || {}
conversation_data = state[:conversation] || {}
contact_data = state[:contact] || {}
campaign_data = state[:campaign] || {}
enhanced_context = enhanced_context.merge(
conversation: conversation_data,
contact: contact_data
contact: contact_data,
campaign: campaign_data
)
end

View File

@@ -16,6 +16,8 @@ class Captain::Assistant::AgentRunnerService
custom_attributes additional_attributes
].freeze
CAMPAIGN_STATE_ATTRIBUTES = %i[id title message campaign_type description].freeze
def initialize(assistant:, conversation: nil, callbacks: {})
@assistant = assistant
@conversation = conversation
@@ -129,6 +131,7 @@ class Captain::Assistant::AgentRunnerService
state[:conversation] = @conversation.attributes.symbolize_keys.slice(*CONVERSATION_STATE_ATTRIBUTES)
state[:channel_type] = @conversation.inbox&.channel_type
state[:contact] = @conversation.contact.attributes.symbolize_keys.slice(*CONTACT_STATE_ATTRIBUTES) if @conversation.contact
state[:campaign] = @conversation.campaign.attributes.symbolize_keys.slice(*CAMPAIGN_STATE_ATTRIBUTES) if @conversation.campaign
end
state