chatwoot-develop/tmp_test_crm_funnel.rb

48 lines
2.2 KiB
Ruby

# Script to create a test conversation for CRM Funnel
# 1. Create Contact and Conversation
inbox = Inbox.first
account = inbox.account
puts "Using Inbox ##{inbox.id} (#{inbox.channel_type}) and Account ##{account.id}"
contact = Contact.create!(name: 'Cliente Teste Funil', phone_number: "+55119#{rand(10_000_000..99_999_999)}", account: account)
puts "Created Contact ##{contact.id}"
# Ensure ContactInbox exists
ci = ContactInbox.find_or_create_by!(contact: contact, inbox: inbox) do |c|
c.source_id = contact.phone_number # valid for phone-based channels, might need adjustment for others
end
puts "Created/Found ContactInbox ##{ci.id}"
conv = Conversation.create!(contact: contact, inbox: inbox, contact_inbox: ci, account: account, status: :open)
puts "Created Conversation ##{conv.id}"
# 2. Add Messages (Booking Flow)
conv.messages.create!(content: 'Oi, gostaria de saber o preço da suíte com hidro para sábado.', message_type: :incoming, account: account,
inbox: inbox, sender: contact)
conv.messages.create!(content: 'Olá! A suíte está 400 reais.', message_type: :outgoing, account: account, inbox: inbox)
conv.messages.create!(content: 'Entendi. Tem disponibilidade?', message_type: :incoming, account: account, inbox: inbox, sender: contact)
# 3. Create CRM Insight with Funnel Data
data = {
'summary_text' => 'Cliente interessado em suíte com hidro para sábado. Perguntou preço e disponibilidade.',
'funnel' => {
'stage' => 'availability',
'confidence' => 0.85,
'reason' => 'Cliente perguntou explicitamente sobre disponibilidade após receber o preço.',
'evidence_message_ids' => conv.messages.pluck(:id),
'updated_at' => Time.current.iso8601
},
'intent' => 'Reserva',
'urgency' => 'high',
'commercial_status' => 'Interessado',
'preferences' => ['Suite Hidro'],
'contact_pattern' => { 'time_range' => 'Noite', 'days' => ['Sabado'] } # Adding more data for rich UI
}
conv.crm_insights.create!(account_id: 1, contact_id: conv.contact_id, structured_data: data, status: :success, generated_at: Time.current)
puts '========================================'
puts "SUCCESS! Open Conversation ##{conv.id} to test the Funnel UI."
puts '========================================'