Om Agent OpenAPI
  1. 接口使用说明
Om Agent OpenAPI
  • 接口使用说明
    • 调用流程简介
    • linker-sign说明
  • ilink
    • 错误码定义
    • 任务管理
      • 任务开启或关闭
      • 查询抽帧任务
    • 设备能力
      • 设备云台控制
      • 设备云台聚焦
      • 设备3D定位
      • 设备预置点位
      • 机器狗设备点位管理
      • 机器狗设备路径管理
      • 机器狗获取设备状态
      • 机器狗控制
      • 机器狗导航
      • 录像回放控制
      • 录像下载
      • 录像下载进度查询
      • 设备回放流列表
    • 设备信息
      • 获取设备详情
      • 获取设备流地址
      • 批量获取设备详情
      • 设备通道名称修改
      • 获取企业下设备列表
    • 单次抓拍/抽帧
      POST
    • 周期抽帧订阅
      POST
    • 周期抽帧任务删除
      POST
    • 周期抽帧任务更新
      POST
    • 开始监听语音消息(来自萝卜头)
      POST
    • 停止监听语音消息(来自萝卜头)
      POST
    • 发送语音播报(发送到萝卜头)
      POST
  • 工作流
    • 同步运行工作流(仅支持感知、执行类型工作流)
      POST
    • 获取工作流执行结果(仅支持感知、执行类型工作流)
      GET
    • 取消异步运行的工作流(仅支持感知、执行类型工作流)
      POST
    • 异步运行工作流(仅支持感知、执行类型工作流)
      POST
  • 智能体
    • 获取智能体列表
      GET
    • 获取智能体详情
      GET
    • 会话打开
      POST
    • 会话聊天
      POST
  1. 接口使用说明

linker-sign说明

功能:#

用于开发者根据appKey和secret组装linker-sign,linker-sign用于后续调用接口时的鉴权信息,请妥善保存。

注意事项:#

linker-sign有效期是5分钟。

生成方法:#

public static String encrypt(String content, String appKey, String appSecret) {
        long time = System.currentTimeMillis();
        String nonce = UUID.randomUUID().toString().replaceAll("-", "");
        String signKey = content + time + nonce + appKey + appSecret;
        log.info("signKey :" + signKey);
        String signMd5 = this.md5ToUpper32(signKey);
        Map<String, Object> contentMap = new HashMap();
        contentMap.put("time", time);
        contentMap.put("nonce", nonce);
        contentMap.put("appKey", appKey);
        contentMap.put("sign", signMd5);
        String contentValue = JSONObject.toJSONString(contentMap);
        return Base64.getEncoder().encodeToString(contentValue.getBytes(Charsets.UTF_8));
    }

md5ToUpper32方法#

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public static String md5ToUpper32(String input) {
    try {
        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] bytes = md.digest(input.getBytes());
        StringBuilder sb = new StringBuilder(32);
        for (byte b : bytes) {
            sb.append(String.format("%02X", b));
        }
        return sb.toString();
    } catch (Exception e) {
        throw new RuntimeException("MD5计算失败", e);
    }
}

python:#

import time
import uuid
import hashlib
import json
import base64
import logging
import requests

# 配置日志(可根据需要配置日志级别)
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

def encrypt(content, appKey, appSecret):
    # 获取当前时间戳(毫秒)- 使用和Java完全一样的方式
    current_time = int(time.time() * 1000)
    # 生成UUID并移除破折号,和Java保持一致
    nonce = str(uuid.uuid4()).replace("-", "")
    # 直接字符串拼接,确保顺序和Java一致
    # 注意:content已经是字符串,不需要额外处理
    signKey = str(content) + str(current_time) + nonce + appKey + appSecret
    logger.info("signKey : %s", signKey)
    # MD5计算,转换为大写以匹配Java实现
    signMd5 = hashlib.md5(signKey.encode('utf-8')).hexdigest().upper()
    logger.info("signMd5 : %s", signMd5)
    # 构造Map,确保key的类型和Java一致
    contentMap = {
        "time": current_time,  # 注意这里使用数字类型
        "nonce": nonce,
        "appKey": appKey,
        "sign": signMd5
    }
    # 转换为JSON字符串,确保格式和Java的JSONObject.toJSONString()一致
    contentValue = json.dumps(contentMap, separators=(',', ':'))
    # Base64编码,确保和Java的Base64.getEncoder()一致
    encoded = base64.b64encode(contentValue.encode('utf-8')).decode('utf-8')
    return encoded

字段解释:#

1.
content为请求体body的JSON转换结果。
2.
time为当前时间时间戳。
3.
nonce为随机生成的唯一值。
用上述三个+ak+sk拼接为signkey,用md5方法加密生成signMd5。组装contentMap,转为String后,Base64转换即可。
注意:
1、转Md5需大写
2、请求体body需为紧凑型(不可有多余的空格或换行),包括在组装linker-sign时请求体body也需要为紧凑型
3、调用的域名请联系对接人员获取
修改于 2025-06-09 02:22:49
上一页
调用流程简介
下一页
错误码定义
Built with