告警在外面,手机动作才走接口
上个月在客户那边,客服系统半夜弹出一条「订单异常」。订单要去手机 App 里重新提交。系统知道出事了,中控却不知道;值班的人已经睡了。
能不能让客服系统自己点?可以。
开放接口做的事很直白。它把手机操作变成 HTTP 请求。订单系统会发请求,就能驱动手机;告警系统、业务后台也一样。
不过,接口不该默认加上。触发方在中控之外,才值得接。比如订单系统决定何时重提,或者后台决定跑哪台设备。调度节奏要自己管,也适合走接口;执行结果还能写回自己的数据库。
固定时间跑固定脚本,EasyClick 中控的定时任务已经够用。再套一层接口,只会多一个要维护的地方。
中控能自己决定何时做、做什么,就别接接口。决定来自别的系统,再接。
这里没有 SDK。用普通 HTTP 就行。
地址是中控电脑加 8019 端口。本机调用写 http://127.0.0.1:8019;别的机器来调,就换成中控电脑的内网 IP。
请求方法是 HTTP POST。Content-Type 写 application/json,参数放进请求体。返回也是 JSON;code 为 0 代表成功,其它值代表失败,原因看 msg。
这个判断最好先封装:
import requests
BASE = "http://127.0.0.1:8019"
def openapi_post(path, body=None):
r = requests.post(f"{BASE}{path}", json=body or {}, timeout=30)
r.raise_for_status()
data = r.json()
if data.get("code") != 0:
raise RuntimeError(data.get("msg") or data)
return data
后面的调用都走这个函数。Python 只依赖 requests;Node.js 18+ 已经自带 fetch。
deviceId 拿对了,点击才不会偏
所有设备接口都认 deviceId。先查设备列表,别凭记忆手填。
devices = openapi_post("/openapi/deviceList", {"deviceId": "", "groupId": ""})
print(devices)
deviceId 传空字符串,表示不按设备过滤。groupId 传空,表示不按分组过滤;只取某一组时,再把 groupId 填上。
接口要用列表返回的 deviceId。别名只显示在界面上,拿别名去调会白查一轮。
USB HID 也不能上来就点。顺序固定:
DEVICE_ID = "90e2f3834c0977205e441aa664916a9bdde81e8d" # 从设备列表里取
# 1) 开会话
openapi_post("/openapi/usbhidSessionStart", {"deviceId": DEVICE_ID, "gate": True})
# 2) 设屏幕分辨率(坐标换算依赖它)
openapi_post("/openapi/usbhidSetScreenSize", {"deviceId": DEVICE_ID, "w": 1170, "h": 2532})
# 3) 之后才能点击
openapi_post("/openapi/usbhidClickPoint", {"deviceId": DEVICE_ID, "x": 200, "y": 400})
先开会话。gate 表示是否尝试增强兼容模式,一般传 true;低版本系统会自动忽略。会话已经存在时会复用,不必每次重开。
再设屏幕尺寸。这个步骤最容易漏,漏了就会点偏。HID 发送的是绝对像素坐标;没有 w 和 h,它没法换算。这里的 1170 × 2532,要和投屏或截图里的分辨率一致。
最后才点击。示例坐标是 x=200、y=400。设备分辨率不同,就分别计算;写死一套坐标,换台手机就可能点到旁边。
会话开着,尺寸也设对后,后面几百次点击只调第三步。不用反复设。Node.js 的结构相同,只把请求换成 fetch:
const BASE = "http://127.0.0.1:8019";
async function openapiPost(path, body = {}) {
const res = await fetch(`${BASE}${path}`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(body),
});
const data = await res.json();
if (data.code !== 0) {
throw new Error(data.msg || JSON.stringify(data));
}
return data;
}
接口分成十一组。查这张表,比在文档里来回翻快:
| 模块 | 管什么 |
|---|---|
| 中控接口 | 设备列表、脚本启停等 |
| 自动化 · 动作 | 点击、滑动、输入、App 的打开关闭 |
| 自动化 · 截图 | 截图、图片流 |
| 自动化 · 启停自动化 | 启动 / 释放自动化、隧道、电量 |
| 自动化 · 相册 | 上传图片视频、清空相册 |
| 自动化 · 文件操作 | 设备文件推送与拉取 |
| 自动化 · IME 输入法 | 自定义输入法、剪贴板转发 |
| 自动化 · 蓝牙 BLE | 蓝牙板的 HID 动作 |
| 自动化 · USB HID | 免硬件,数据线直接控制手机 |
| 辅助助手 | 助手剪贴板、相册、端口转发 |
| 快捷指令助手 | 需配合快捷指令助手程序使用 |
「动作」组用得最多。点击、双击、长按、滑动、多点触摸和输入文本都在里面;模拟键盘、打开或关闭 App、安装或卸载 App 也归它管。主页、重启、锁屏解锁、屏幕方向、坐标校正和抓取节点,同样能调。
USB HID 要单独记住。EC iOS USB 10.7.0(2026-09-08)起提供这组接口,不需要蓝牙板或 OTG 板,手机建议 iOS 17 及以上,一根数据线就能模拟点击和输入。它和中控「启动自动化」、脚本 startEnv 互斥,同一台设备不要混用。需要截图时走无自动化截图。走「启动自动化」时,iOS 15 及以上可以用脱机主程序 v7.2.0 及以上当自动化服务,官方下载页有预签 IPA,用爱思助手安装即可测试。自己签名的话,个人开发者账号 688 元一年,可绑 100 台,支持 iOS 12 及以上,费用只算签名。巨魔 TrollStore 支持 iOS 15 到 16.6.1,重启会掉签。脱机版只支持 iOS 15 及以上。7.0.0 起单 App 只装主程序,在设置里选单 App 再开自动化;双 App 还要签名代理 IPA,掉了可以用自激活拉起。EC iOS 10.6.0(2026-09-02)起,AI 智能体升级为 iEasyRun,地址是 https://ieasyrun.com 。
接口只管触发,完整流程留给脚本
中控接口先解决「管哪台」的问题。调设备列表,拿到一批 deviceId;再逐台启动编译好的脚本。订单归属在外部系统里时,这种分工很省事。
设备多了,先在中控里分组。接口仍按 deviceId 单台调用,你的代码负责循环;分组给这个循环一个明确范围。否则每次都把全部设备拉一遍,很快就乱。
想让 AI 助手直接调手机,可以把接口注册成 MCP 工具。直接调用时,接口和参数由你写;接成 MCP 后,AI 助手会选工具、拼参数。临场要判断下一步时,MCP 更合适。固定操作还是直调,省事。
错误要分开看。中控没开、端口不通,属于网络或服务问题,可以重试;设备离线、授权过期、坐标越界,重试通常没用。先看 msg,别见错就重发。
超时也别统一写死。官方示例是 30 秒,普通操作接口往往几百毫秒就返回;截图和上传涉及大文件,要多留时间。现场该留几秒,按接口分组实测。
坐标最磨人。机型混用时,按分辨率换算;能抓节点,就先拿元素坐标再点。直接写死,测试机上没事,换设备就偏。
日志至少留五样:设备 ID、接口名、请求参数、code 与 msg、时间戳。少一项,现场对账都可能多花半小时。
别用接口重写整段手机流程。流程放在设备脚本里,接口只负责触发和取结果;请求少,网络往返也少。出故障时,排查范围会小很多。
| 你的需求 | 推荐方式 | 为什么 |
|---|---|---|
| 定时跑一段固定流程 | EasyClick 中控的定时任务 | 不需要绕一层接口,中控自己就能决定什么时候做 |
| 由外部系统决定何时触发 | EasyClick 开放接口直调 | 8019 端口,HTTP 加 JSON,和你现有系统直接打通 |
| 要让 AI 决定下一步做什么 | EasyClick 注册成 MCP 工具 | AI 自己选工具、拼参数,不用你写调度逻辑 |
| 既要精确控制界面元素,又要在设备上跑完整流程 | EasyClick 代理模式配脚本,接口只做触发 | 流程留在设备上,网络往返少,出问题的地方也少 |
固定流程走定时,外部触发走接口,需要判断的交给 MCP。手机里的具体动作仍由脚本承担。那支跨境团队最后只让告警系统做三件事:查对应设备、启动「重新提交订单」脚本、把结果写回工单表。云控侧如果要对接同一套调度,开放接口说明对应云控 3.11.0 及以上、EC 客户端 9.4.0 及以上,演示站点账号是 test123 / test123。
想先弄清脚本本身怎么写,可以读iOS 免越狱脚本怎么写;USB HID 的原理和完整 API,看USB HID 自动化脚本教程;接口和 AI 系统对接的细节,可以读云控系统开放 API + MCP 对接。
iEasyClick:手机自动化 AI 智能体平台,覆盖安卓免 root、iOS 免越狱(代理/蓝牙 HID/OTG HID)、鸿蒙 Next 三大生态,提供脚本开发、苹果群控、本地中控投屏与云控系统。→ 了解全部产品
想要真实跑起来?
本文介绍的方案均可基于 EasyClick 能力在 iEasyClick 落地。官网提供完整文档、开发工具与自动化产品,免费体验。