103 lines
3.3 KiB
Bash
103 lines
3.3 KiB
Bash
|
|
#!/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 ""
|