Add WeWork XiaoAi TTS bot - WeChat Work long connection bridge

Receives messages from WeChat Work bot via WebSocket long connection
and speaks them through XiaoAi smart speaker TTS.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-03 13:52:04 +08:00
commit c7b8b01fe2
17 changed files with 762 additions and 0 deletions
+49
View File
@@ -0,0 +1,49 @@
#!/bin/bash
# Deploy WeWork XiaoAi Bot to NAS via Docker
# Usage: ./deploy.sh <nas-ip> [nas-user]
set -e
NAS_USER="${2:-root}"
NAS_HOST="$1"
NAS_PATH="/opt/wework_xiaoai_bot"
if [ -z "$NAS_HOST" ]; then
echo "Usage: ./deploy.sh <nas-ip> [nas-user]"
echo "Example: ./deploy.sh 192.168.1.100 root"
exit 1
fi
echo "=== Deploying to $NAS_USER@$NAS_HOST:$NAS_PATH ==="
# 1. Create directory and copy files
ssh "$NAS_USER@$NAS_HOST" "mkdir -p $NAS_PATH"
scp docker-compose.yml Dockerfile .dockerignore requirements.txt \
"$NAS_USER@$NAS_HOST:$NAS_PATH/"
ssh "$NAS_USER@$NAS_HOST" "mkdir -p $NAS_PATH/app/services"
scp app/services/tts.py app/services/ws_client.py app/services/__init__.py \
"$NAS_USER@$NAS_HOST:$NAS_PATH/app/services/"
scp app/__init__.py config.py run.py \
"$NAS_USER@$NAS_HOST:$NAS_PATH/app/"
scp config.py run.py "$NAS_USER@$NAS_HOST:$NAS_PATH/"
# 2. Copy .env and token
echo "=== Copying config files ==="
scp .env "$NAS_USER@$NAS_HOST:$NAS_PATH/.env"
scp .mi.token "$NAS_USER@$NAS_HOST:$NAS_PATH/.mi.token"
# 3. Build and start on NAS
echo "=== Building and starting on NAS ==="
ssh "$NAS_USER@$NAS_HOST" << 'ENDSSH'
cd /opt/wework_xiaoai_bot
docker compose build
docker compose down 2>/dev/null || true
docker compose up -d
echo "=== Done! ==="
echo ""
echo "Useful commands on NAS:"
echo " docker compose -f /opt/wework_xiaoai_bot/docker-compose.yml logs -f"
echo " docker compose -f /opt/wework_xiaoai_bot/docker-compose.yml restart"
echo " docker compose -f /opt/wework_xiaoai_bot/docker-compose.yml down"
echo " docker compose -f /opt/wework_xiaoai_bot/docker-compose.yml up -d"
ENDSSH