# 测试 search_image 消息发送 ## 方法 1: 使用 Rails Console(推荐) 在你的终端中执行: ```bash cd /home/lxj/project/chatwoot-develop # 确保已初始化 rbenv eval "$(rbenv init -)" # 启动 Rails console bundle exec rails c ``` 然后在 Rails console 中复制粘贴以下代码: ```ruby # 配置参数 ACCOUNT_ID = 2 INBOX_ID = 1 USER_IDENTIFIER = '211845' # 1. 查找联系人 contact = Contact.find_by(identifier: USER_IDENTIFIER) if contact.nil? puts "❌ 联系人不存在,请先通过 widget 创建会话" else puts "✅ 联系人: #{contact.name} (ID: #{contact.id})" # 2. 获取会话 conversation = Conversation.where( contact_id: contact.id, inbox_id: INBOX_ID ).order(created_at: :desc).first if conversation.nil? puts "❌ 会话不存在" else puts "✅ 会话: #{conversation.display_id}" # 3. 创建 search_image 消息 test_image_url = "https://img.gaia888.com/image/www/test_#{SecureRandom.uuid}.jpg" message = Message.create!( account_id: ACCOUNT_ID, conversation_id: conversation.id, inbox_id: INBOX_ID, sender: contact, sender_type: 'Contact', sender_id: contact.id, message_type: :incoming, content_type: :search_image, content: '', content_attributes: { url: test_image_url }, status: :sent ) puts "\n✅ 消息创建成功!" puts " Message ID: #{message.id}" puts " content_type: #{message.content_type}" puts " URL: #{test_image_url}" end end ``` ## 方法 2: 使用 Rails Runner ```bash cd /home/lxj/project/chatwoot-develop eval "$(rbenv init -)" bundle exec rails runner test_search_image_console.rb ``` ## 预期结果 成功后会看到: ``` ✅ 联系人: 测试用户 211845 (ID: 24) ✅ 会话: 16 ✅ 消息创建成功! Message ID: 427 content_type: search_image URL: https://img.gaia888.com/image/www/test/... ``` ## 验证消息 1. **Dashboard 查看**: - 访问: http://localhost:3000/app/accounts/2/inbox/1/conversations/16 - 应该看到新发送的图片消息 2. **Webhook 日志**: - 查看 webhook 接收到的数据 - 应该看到 content_type: "search_image" 3. **Widget 查看**: - 刷新 /widget_tests 页面 - 应该看到图片显示在聊天界面 ## 错误排查 ### 错误: 联系人不存在 **原因**: 还没有通过 widget 创建过会话 **解决**: 先访问 /widget_tests 页面并发送一条消息 ### 错误: 会话不存在 **原因**: 联系人没有在此 inbox 中的会话 **解决**: 先通过 widget 发送消息创建会话 ### 错误: content_type 未知 **原因**: 数据库没有 search_image 枚举值 **解决**: 运行迁移添加 search_image 到 content_type 枚举