Files
workphone-sdk/sdk/scripts/probe_wp_wx04_when_ws_online.sh

69 lines
2.8 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# WP-WX-04真机 WS 在线后一键探针(扫码加友契约层)
# 用法DEVICE_ID=xgfe65eimrrofyws bash sdk/scripts/probe_wp_wx04_when_ws_online.sh
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
DEVICE_ID="${DEVICE_ID:-xgfe65eimrrofyws}"
# Mac Dockerlocalhost(IPv6) 才打到 workphone-sdk127.0.0.1 可能落到旧进程
BASE="${WORKPHONE_SDK_URL:-http://localhost:8899}"
BASE="${BASE%/}"
DEFAULT_IMAGE_FILE="$ROOT_DIR/开发文档/8、部署/05-测试验收/screenshots/verification_110/H26_二维码_generate_my_qr_code_1779086272.png"
IMAGE_URL="${IMAGE_URL:-}"
IMAGE_FILE="${IMAGE_FILE:-}"
IMAGE_BASE64="${IMAGE_BASE64:-}"
VERIFY_MESSAGE="${VERIFY_MESSAGE:-WP-WX-04 probe}"
if [[ -z "$IMAGE_URL" && -z "$IMAGE_FILE" && -z "$IMAGE_BASE64" && -f "$DEFAULT_IMAGE_FILE" ]]; then
IMAGE_FILE="$DEFAULT_IMAGE_FILE"
fi
TMP_EXTRACT="$(mktemp /tmp/wpwx04_extract.XXXXXX.json)"
TMP_ADD="$(mktemp /tmp/wpwx04_add.XXXXXX.json)"
cleanup() {
rm -f "$TMP_EXTRACT" "$TMP_ADD"
}
trap cleanup EXIT
python3 - "$TMP_EXTRACT" "$TMP_ADD" "$DEVICE_ID" "$IMAGE_FILE" "$IMAGE_BASE64" "$IMAGE_URL" "$VERIFY_MESSAGE" <<'PY'
import base64
import json
import os
import sys
extract_path, add_path, device_id, image_file, image_b64, image_url, verify_message = sys.argv[1:]
payload = {"device_id": device_id, "platform": "wechat"}
if image_url:
payload["image_url"] = image_url
elif image_file:
with open(image_file, "rb") as f:
payload["image_base64"] = base64.b64encode(f.read()).decode("ascii")
elif image_b64:
payload["image_base64"] = image_b64
else:
raise SystemExit("需提供 IMAGE_FILE / IMAGE_URL / IMAGE_BASE64 之一")
with open(extract_path, "w", encoding="utf-8") as f:
json.dump(payload, f, ensure_ascii=False)
payload["verify_message"] = verify_message
with open(add_path, "w", encoding="utf-8") as f:
json.dump(payload, f, ensure_ascii=False)
PY
echo "▶ SDK=$BASE DEVICE=$DEVICE_ID"
curl -sS --connect-timeout 3 --max-time 8 "$BASE/health" | python3 -m json.tool 2>/dev/null || true
echo "▶ connection/status"
curl -sS --connect-timeout 3 --max-time 10 "$BASE/api/v3/connection/status" \
| python3 -c "import sys,json;d=json.load(sys.stdin)['data'];print('online_ws_count=',d.get('online_ws_count'),'devices=',d.get('online_device_ids'))"
echo "▶ POST /scan/extract-qr"
curl -sS --connect-timeout 3 --max-time 90 -X POST "$BASE/api/v3/scan/extract-qr" \
-H 'Content-Type: application/json' \
--data-binary "@$TMP_EXTRACT" \
| python3 -m json.tool 2>/dev/null || true
echo "▶ POST /scan/add-friend-from-image"
curl -sS --connect-timeout 3 --max-time 120 -X POST "$BASE/api/v3/scan/add-friend-from-image" \
-H 'Content-Type: application/json' \
--data-binary "@$TMP_ADD" \
| python3 -m json.tool 2>/dev/null || true