Files
playbook/skills/tsl-api-reference/references/codegen/module/ts-opi-callback.md
T

83 lines
2.1 KiB
Markdown

# 第三方交互 / 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/<function>` |
| 同账号 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
);
```