fix(wp-wx-04): improve scan probe and u2 fallback
This commit is contained in:
68
sdk/scripts/probe_wp_wx04_when_ws_online.sh
Executable file
68
sdk/scripts/probe_wp_wx04_when_ws_online.sh
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/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 Docker:localhost(IPv6) 才打到 workphone-sdk;127.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
|
||||
Reference in New Issue
Block a user