# 第三方交互 / TS-OPI callback 本页记录框架函数通过 TS-OPI 与 TS-OPS 接收可执行回调的调用模式 PDF 没有声明名为 `callback` 的 TSL 函数;实际调用入口是 `tenantCall`、`opsCall` 以及业务方发布的 service function,因此本页作为场景页保留,不把文档标题伪装成 API 声明 ## 场景分类 | 场景 | 回调所在位置 | 调用方式 | | ------------------- | ----------------------------- | ---------------------------------- | | 跨账号 OPI callback | 其他租户的 TSL function | `tenantCall` 调用租户公开接口 | | 跨账号 OPS callback | 其他租户授权的 OPS function | `tenantCall` 调用 `OPS/` | | 同账号 OPS callback | 当前账号可访问的 OPS function | `opsCall` 直接调用 OPS 服务 | ## TSL 调用案例 ### 跨账号调用 OPI 因子 ```tsl // 需已为该 SESSION-KEY 配置目标函数的租户访问权限 session_key := "{9B687E49-******}"; return tenantCall( session_key, "MF_Demo_Data_YS_02", array("SH000300", 20260430T), 5000 ); ``` ### 跨账号调用 OPS 因子 ```tsl // 需目标租户已授权对应 OPS function session_key := "{9B687E49-******}"; return tenantCall( session_key, "OPS/tfm_getlocalfactordataendt", array("A02001", 20260430T), 5000 ); ``` ### 同账号直接调用 OPS 因子 ```tsl // 需本地 OPS 服务已注册并保持运行 return opsCall( "tfm_getlocalfactordataendt", "", array("A02001", 20240131T), 50000 ); ``` ### 将跨账号 function 作为 service callback ```tsl // 目标 service function 与租户接口需由业务方预先发布 factor_formula_daily := %%callback tenantCall( "{9B687E49-******}", "MF_Demo_Data_YS_02", array("SH000300", endt), 5000 ) %%callback; factor_name := "账面市值比"; beg_t := 20240101T; end_t := 20250101T; cycle := cy_Month(); stock_zone := "SH000300"; index_id := "SH000300"; return trainVideo_TS04020_05( factor_formula_daily, factor_name, beg_t, end_t, cycle, stock_zone, index_id ); ```