#!/bin/bash # 检查 Chatwoot 会话和消息 echo "======================================" echo "Chatwoot 会话检查工具" echo "======================================" echo "" # 需要设置环境变量 if [ -z "$CHATWOOT_API_TOKEN" ]; then echo "❌ 请先设置 CHATWOOT_API_TOKEN 环境变量" echo "" echo "获取方式:" echo "1. 访问 http://localhost:3000" echo "2. 登录后进入 Settings → Profile → Access Tokens" echo "3. 创建一个新的 Access Token" echo "" echo "然后运行:" echo " CHATWOOT_API_TOKEN=your_token $0" echo "" exit 1 fi CHATWOOT_BASE_URL="http://localhost:3000" ACCOUNT_ID="2" echo "🔍 正在检查 Chatwoot 会话..." echo "" # 1. 获取所有收件箱 echo "1️⃣ 获取所有收件箱..." INBOXES=$(curl -s \ -H "Authorization: Bearer $CHATWOOT_API_TOKEN" \ "$CHATWOOT_BASE_URL/api/v1/accounts/$ACCOUNT_ID/inboxes") INBOX_IDS=$(echo "$INBOXES" | grep -o '"id":[0-9]*' | grep -o '[0-9]*' | sort -u | head -5) echo " 找到收件箱: $(echo "$INBOX_IDS" | wc -l) 个" echo "" # 2. 检查每个收件箱的会话 echo "2️⃣ 检查最近的会话..." echo "======================================" for INBOX_ID in $INBOX_IDS; do echo "" echo "📬 收件箱 ID: $INBOX_ID" echo "--------------------------------------" # 获取收件箱名称 INBOX_NAME=$(echo "$INBOXES" | grep -o "\"id\":$INBOX_ID" -A 20 | grep '"name":"' | head -1 | cut -d'"' -f4) echo " 名称: $INBOX_NAME" # 获取最近5个会话 CONVERSATIONS=$(curl -s \ -H "Authorization: Bearer $CHATWOOT_API_TOKEN" \ "$CHATWOOT_BASE_URL/api/v1/accounts/$ACCOUNT_ID/conversations?inbox_id=$INBOX_ID&sort=-created_at" | head -100) CONV_IDS=$(echo "$CONVERSATIONS" | grep -o '"id":[0-9]*' | grep -o '[0-9]*' | head -5) if [ -z "$CONV_IDS" ]; then echo " 没有会话" continue fi echo " 最近的会话:" echo "$CONV_IDS" | while read CONV_ID; do # 获取会话详情 CONV_DETAIL=$(curl -s \ -H "Authorization: Bearer $CHATWOOT_API_TOKEN" \ "$CHATWOOT_BASE_URL/api/v1/accounts/$ACCOUNT_ID/conversations/$CONV_ID") # 提取会话信息 STATUS=$(echo "$CONV_DETAIL" | grep -o '"status":"[^"]*"' | head -1 | cut -d'"' -f4) CREATED_AT=$(echo "$CONV_DETAIL" | grep -o '"created_at":[^,}]*' | head -1 | cut -d'"' -f2) # 获取消息数量 MESSAGES=$(curl -s \ -H "Authorization: Bearer $CHATWOOT_API_TOKEN" \ "$CHATWOOT_BASE_URL/api/v1/accounts/$ACCOUNT_ID/conversations/$CONV_ID/messages") MSG_COUNT=$(echo "$MESSAGES" | grep -o '"content":' | wc -l) echo " • 会话 #$CONV_ID - 状态: $Status - 消息数: $MSG_COUNT" # 获取最后几条消息 echo "$MESSAGES" | grep -o '"content":"[^"]*"' | tail -3 | while read MSG; do CONTENT=$(echo "$MSG" | cut -d'"' -f4 | sed 's/"/"/g' | head -c 50) echo " - $CONTENT..." done done done echo "" echo "======================================" echo "" echo "💡 提示:" echo "1. 查看上面的会话列表" echo "2. 记录你正在测试的会话 ID" echo "3. 在 Agent 日志中查找相同的 conversation_id" echo "4. 如果会话 ID 不匹配,说明 Widget 连接到了错误的会话" echo ""