feat: publish workphone SDK deployment and API docs
This commit is contained in:
60
sdk/agent/skills/network_reconnect.py
Normal file
60
sdk/agent/skills/network_reconnect.py
Normal file
@@ -0,0 +1,60 @@
|
||||
"""
|
||||
网络连接恢复技能 - 断网时尝试恢复上网(仅合法操作)
|
||||
|
||||
通过 Hawk 模块执行:开 WiFi、打开系统网络设置、连接已保存网络等。
|
||||
不涉及且永不涉及:破解密码、未授权访问等任何违规行为。
|
||||
若设备无可用已保存网络,仅打开 WiFi 设置供用户手动连接或输入密码。
|
||||
"""
|
||||
|
||||
import logging
|
||||
import sys
|
||||
import os
|
||||
from typing import Dict, Any
|
||||
|
||||
# 兼容独立运行和包导入
|
||||
_agent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
if _agent_dir not in sys.path:
|
||||
sys.path.insert(0, _agent_dir)
|
||||
|
||||
try:
|
||||
from skills.base import BaseSkill
|
||||
except ImportError:
|
||||
from ..base import BaseSkill
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class NetworkReconnectSkill(BaseSkill):
|
||||
"""网络连接恢复技能 - 与 Hawk 协同,仅做合法网络恢复"""
|
||||
|
||||
PACKAGE = ""
|
||||
NAME = "网络恢复"
|
||||
|
||||
def try_reconnect(self) -> Dict[str, Any]:
|
||||
"""
|
||||
尝试恢复网络:委托 Hawk 执行开 WiFi、打开设置、连接已保存网络等合法操作。
|
||||
若仍连不上,返回建议(如「请在设置中手动连接或输入密码」)。
|
||||
"""
|
||||
try:
|
||||
from hawk import try_reconnect_network, is_network_available
|
||||
|
||||
if self.d is None:
|
||||
return {"success": False, "message": "无设备,无法执行网络恢复", "steps": []}
|
||||
|
||||
if is_network_available(self.d):
|
||||
return {"success": True, "message": "当前已有网络", "steps": ["检测到网络"]}
|
||||
|
||||
result = try_reconnect_network(self.d)
|
||||
if self.bus:
|
||||
self.bus.append(self.NAME, result.get("message", ""), data=result)
|
||||
return result
|
||||
except ImportError as e:
|
||||
logger.warning("Hawk 模块未安装,无法执行网络恢复: %s", e)
|
||||
return {
|
||||
"success": False,
|
||||
"message": "Hawk 模块不可用,请检查网络或手动连接 WiFi",
|
||||
"steps": [],
|
||||
}
|
||||
except Exception as e:
|
||||
logger.exception("网络恢复失败")
|
||||
return {"success": False, "message": str(e), "steps": []}
|
||||
Reference in New Issue
Block a user