33 lines
891 B
Ruby
33 lines
891 B
Ruby
class LlmFormatter::ConversationLlmFormatter < LlmFormatter::DefaultLlmFormatter
|
|
def format
|
|
sections = []
|
|
sections << "Conversation ID: ##{@record.display_id}"
|
|
sections << "Channel: #{@record.inbox.channel.name}"
|
|
sections << 'Message History:'
|
|
sections << if @record.messages.any?
|
|
build_messages
|
|
else
|
|
'No messages in this conversation'
|
|
end
|
|
|
|
sections.join("\n")
|
|
end
|
|
|
|
private
|
|
|
|
def build_messages
|
|
return "No messages in this conversation\n" if @record.messages.empty?
|
|
|
|
message_text = ''
|
|
@record.messages.chat.order(created_at: :asc).each do |message|
|
|
message_text << format_message(message)
|
|
end
|
|
message_text
|
|
end
|
|
|
|
def format_message(message)
|
|
sender = message.message_type == 'incoming' ? 'User' : 'Support agent'
|
|
"#{sender}: #{message.content}\n"
|
|
end
|
|
end
|