@doubao-dev/plugin-app-dev 0.0.0-stage → 0.0.40-canary-dea0ddc73-20261026073950
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -2
- package/dist/147.js +9 -0
- package/dist/assets.d.ts +5 -0
- package/dist/assets.js +4 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.js +1378 -0
- package/dist/plugin.d.ts +102 -0
- package/dist/plugin.js +4995 -0
- package/dist/preview.js +16 -0
- package/dist/rslib-runtime.js +33 -0
- package/dist/skills/doubao-plugin-app/SKILL.md +21 -0
- package/dist/skills/doubao-plugin-app/references/app-development.md +85 -0
- package/dist/skills/doubao-plugin-app/references/frontend/components/container-overlay.md +131 -0
- package/dist/skills/doubao-plugin-app/references/frontend/components/form-controls.md +146 -0
- package/dist/skills/doubao-plugin-app/references/frontend/components/interactive-controls.md +120 -0
- package/dist/skills/doubao-plugin-app/references/frontend/components/map-canvas.md +107 -0
- package/dist/skills/doubao-plugin-app/references/frontend/components/overview.md +43 -0
- package/dist/skills/doubao-plugin-app/references/frontend/components/scroll-list.md +149 -0
- package/dist/skills/doubao-plugin-app/references/frontend/components/text-media.md +209 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/01-/345/237/272/347/241/200.md +1389 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/02-/347/263/273/347/273/237.md +1376 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/03-/350/207/252/345/256/232/344/271/211/351/200/232/344/277/241.md +127 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/04-/345/256/232/344/275/215.md +784 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/05-/345/255/230/345/202/250.md +1176 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/06-/350/267/257/347/224/261.md +839 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/07-/347/225/214/351/235/242.md +376 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/08-/344/272/244/344/272/222.md +1319 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/09-/350/276/223/345/205/245.md +192 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/10-/347/275/221/347/273/234.md +900 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/11-/345/252/222/344/275/223.md +1496 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/12-/344/270/232/345/212/241/350/203/275/345/212/233.md +1281 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/13-/347/231/273/345/275/225.md +511 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/14-/346/224/257/344/273/230.md +943 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/15-/346/225/260/346/215/256/345/210/206/346/236/220.md +124 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/16-/350/223/235/347/211/231.md +3364 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/17-wi-fi.md +1028 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/18-/345/212/240/351/200/237/345/272/246/350/256/241.md +354 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/19-ibeacon.md +508 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/20-/347/275/227/347/233/230.md +320 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/21-/350/256/276/345/244/207/346/226/271/345/220/221.md +351 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/22-/351/231/200/350/236/272/344/273/252.md +354 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/23-/345/252/222/344/275/223-/350/256/276/345/244/207-/347/275/221/347/273/234.md +264 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/24-/347/237/255/344/277/241.md +155 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/25-/346/227/240/351/232/234/347/242/215.md +144 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/26-/345/237/272/347/241/200/344/277/241/346/201/257.md +238 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/27-/347/224/265/346/261/240.md +235 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/28-/345/211/252/350/264/264/346/235/277.md +303 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/29-/345/212/240/345/257/206.md +126 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/30-/346/227/245/345/216/206.md +417 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/31-/347/224/265/350/257/235.md +144 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/32-/346/211/253/347/240/201.md +236 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/33-/345/261/217/345/271/225.md +747 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/34-/351/234/207/345/212/250.md +277 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/35-/346/226/207/344/273/266/347/263/273/347/273/237.md +431 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/common-errors.md +69 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/groups.md +43 -0
- package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/quick-reference.md +436 -0
- package/dist/skills/doubao-plugin-app/references/frontend/examples/common-patterns.md +590 -0
- package/dist/skills/doubao-plugin-app/references/frontend/examples/doubao-agentic-service-api-recipes.md +209 -0
- package/dist/skills/doubao-plugin-app/references/frontend/examples/page-widget-basics.md +368 -0
- package/dist/skills/doubao-plugin-app/references/frontend/examples/page-widget-recipes.md +65 -0
- package/dist/skills/doubao-plugin-app/references/frontend/framework/core.md +283 -0
- package/dist/skills/doubao-plugin-app/references/frontend/guides/auth.md +277 -0
- package/dist/skills/doubao-plugin-app/references/frontend/guides/best-practices.md +574 -0
- package/dist/skills/doubao-plugin-app/references/frontend/guides/client-tools-and-events.md +209 -0
- package/dist/skills/doubao-plugin-app/references/frontend/guides/component-development.md +832 -0
- package/dist/skills/doubao-plugin-app/references/frontend/guides/debugger-mcp.md +537 -0
- package/dist/skills/doubao-plugin-app/references/frontend/guides/expired-widget.md +101 -0
- package/dist/skills/doubao-plugin-app/references/frontend/guides/performance-optimization.md +417 -0
- package/dist/skills/doubao-plugin-app/references/frontend/guides/troubleshooting.md +278 -0
- package/dist/skills/doubao-plugin-app/references/frontend/lynx/best-practices.md +720 -0
- package/dist/skills/doubao-plugin-app/references/frontend/lynx/css/pseudo-classes.md +149 -0
- package/dist/skills/doubao-plugin-app/references/frontend/lynx/css/selectors.md +224 -0
- package/dist/skills/doubao-plugin-app/references/frontend/lynx/css/supported-properties.md +269 -0
- package/dist/skills/doubao-plugin-app/references/frontend/lynx/css/values-and-units.md +314 -0
- package/dist/skills/doubao-plugin-app/references/frontend/lynx/layout/flex-layout.md +334 -0
- package/dist/skills/doubao-plugin-app/references/frontend/lynx/layout/grid-layout.md +408 -0
- package/dist/skills/doubao-plugin-app/references/frontend/lynx/layout/linear-layout.md +355 -0
- package/dist/skills/doubao-plugin-app/references/frontend/lynx/layout/relative-layout.md +189 -0
- package/dist/skills/doubao-plugin-app/references/frontend/lynx/lynx-vs-web/css-differences.md +737 -0
- package/dist/skills/doubao-plugin-app/references/frontend/lynx/lynx-vs-web/migration-guide.md +669 -0
- package/dist/skills/doubao-plugin-app/references/frontend/lynx/lynx-vs-web/unsupported-features.md +290 -0
- package/dist/skills/doubao-plugin-app/references/frontend/lynx/overview.md +60 -0
- package/dist/skills/doubao-plugin-app/references/frontend/lynx/patterns/animation.md +243 -0
- package/dist/skills/doubao-plugin-app/references/frontend/lynx/patterns/responsive.md +194 -0
- package/dist/skills/doubao-plugin-app/references/frontend/lynx/patterns/theming.md +143 -0
- package/dist/skills/doubao-plugin-app/references/frontend/lynx/quick-reference.md +229 -0
- package/dist/skills/doubao-plugin-app/references/frontend/rules/dos-and-donts.md +479 -0
- package/dist/skills/doubao-plugin-app/references/frontend/widget-templates/design-boundary.md +46 -0
- package/dist/skills/doubao-plugin-app/references/frontend/widget-templates/overview.md +118 -0
- package/dist/skills/doubao-plugin-app/references/frontend/widget-templates/props.md +301 -0
- package/dist/skills/doubao-plugin-app/references/mcp-and-cards.md +38 -0
- package/dist/templates/README.md.template +11 -0
- package/dist/templates/com.doubao/app/manifest.yaml +41 -0
- package/dist/templates/com.doubao/app/package.json.template +13 -0
- package/dist/templates/com.doubao/app/src/app.config.ts.template +5 -0
- package/dist/templates/com.doubao/app/src/app.ts.template +3 -0
- package/dist/templates/com.doubao/app/src/pages/home/index.css +14 -0
- package/dist/templates/com.doubao/app/src/pages/home/index.tsx.template +14 -0
- package/dist/templates/com.doubao/app/src/widgets/example/index.tsx.template +29 -0
- package/dist/templates/com.doubao/app/tsconfig.json +19 -0
- package/dist/templates/mcp.json +9 -0
- package/dist/templates/plugin.json.template +29 -0
- package/dist/templates/skills/example/SKILL.md.template +14 -0
- package/dist/upload.d.ts +44 -0
- package/dist/upload.js +38 -0
- package/package.json +60 -3
|
@@ -0,0 +1,1281 @@
|
|
|
1
|
+
# 豆包应用插件的端能力 API: 业务能力
|
|
2
|
+
|
|
3
|
+
开放业务能力、卡片更新、模型上下文、任务和隐私设置。
|
|
4
|
+
|
|
5
|
+
[返回目录](./groups.md) | [返回速查](./quick-reference.md)
|
|
6
|
+
|
|
7
|
+
## 速查
|
|
8
|
+
|
|
9
|
+
| API | 说明 |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| [callTool](#calltool) | 调用当前应用的 Tool。 豆包会根据当前应用插件页面或会话 Widget 确定应用和版本,开发者只需传入 Tool 名称和参数。 Tool 正常结果通过 toolResult 返回,Tool 业务错误通过 toolError 返回,两者都会正常 resolve;调用前校验、鉴权或返回结构校验失败时 Promise reject。 |
|
|
12
|
+
| [expiredWidget](#expiredwidget) | 更新过期的 Widget 为固定卡片。 |
|
|
13
|
+
| [getPrivacySetting](#getprivacysetting) | 获取隐私设置状态。 |
|
|
14
|
+
| [sendFollowUpMessage](#sendfollowupmessage) | 以用户身份发送后续消息,触发新一轮对话、API 调用或引导模型响应。 |
|
|
15
|
+
| [createTask](#createtask) | 创建任务。 |
|
|
16
|
+
| [updateModelContext](#updatemodelcontext) | 向 Agent 捐赠上下文。 |
|
|
17
|
+
| [updateWidget](#updatewidget) | 更新指定 Widget 卡片实例的渲染数据。 用于卡片内操作后刷新卡片展示、把服务端最新结果写回卡片,或由 Page 根据传入的 widgetInstanceId 更新原卡片;需要替换卡片类型时可同时传入新的 widgetId。 widgetData 与 toolResult 二选一。传入 toolResult 时不能切换 widgetId, 结构化结果必须符合当前应用的 Entity 协议。切换 widgetId 时不能关闭重新创建。 |
|
|
18
|
+
|
|
19
|
+
## API 详情
|
|
20
|
+
|
|
21
|
+
<a id="calltool"></a>
|
|
22
|
+
### callTool()
|
|
23
|
+
|
|
24
|
+
# callTool
|
|
25
|
+
|
|
26
|
+
调用当前应用的 Tool。
|
|
27
|
+
|
|
28
|
+
豆包会根据当前应用插件页面或会话 Widget 确定应用和版本,开发者只需传入 Tool 名称和参数。
|
|
29
|
+
Tool 正常结果通过 `toolResult` 返回,Tool 业务错误通过 `toolError` 返回,两者都会正常
|
|
30
|
+
resolve;调用前校验、鉴权或返回结构校验失败时 Promise reject。
|
|
31
|
+
|
|
32
|
+
## 支持版本
|
|
33
|
+
|
|
34
|
+
前端库版本不低于 `0.0.42`。
|
|
35
|
+
|
|
36
|
+
## 支持平台
|
|
37
|
+
|
|
38
|
+
<table>
|
|
39
|
+
<thead>
|
|
40
|
+
<tr><th>平台</th><th>支持情况</th></tr>
|
|
41
|
+
</thead>
|
|
42
|
+
<tbody>
|
|
43
|
+
<tr><td>Android</td><td>支持</td></tr>
|
|
44
|
+
<tr><td>iOS</td><td>支持</td></tr>
|
|
45
|
+
<tr><td>PC</td><td>不支持</td></tr>
|
|
46
|
+
<tr><td>HarmonyOS</td><td>不支持</td></tr>
|
|
47
|
+
</tbody>
|
|
48
|
+
</table>
|
|
49
|
+
|
|
50
|
+
## 支持场景
|
|
51
|
+
|
|
52
|
+
<table>
|
|
53
|
+
<thead>
|
|
54
|
+
<tr><th>场景</th><th>支持情况</th></tr>
|
|
55
|
+
</thead>
|
|
56
|
+
<tbody>
|
|
57
|
+
<tr><td>页面</td><td>支持</td></tr>
|
|
58
|
+
<tr><td>卡片</td><td>支持</td></tr>
|
|
59
|
+
</tbody>
|
|
60
|
+
</table>
|
|
61
|
+
|
|
62
|
+
## 接入准备
|
|
63
|
+
|
|
64
|
+
### 前置条件
|
|
65
|
+
|
|
66
|
+
- **Android**:在当前应用的应用插件页面或由当前应用真实生成的会话 Widget 内调用,且目标 Tool 已在当前应用版本中配置
|
|
67
|
+
- **iOS**:在当前应用的应用插件页面或由当前应用真实生成的会话 Widget 内调用,且目标 Tool 已在当前应用版本中配置
|
|
68
|
+
|
|
69
|
+
## 使用说明
|
|
70
|
+
|
|
71
|
+
- toolResult 与 toolError 互斥;toolError 是正常返回的 Tool 业务错误,不会导致 Promise reject。skipWidgetUpdate 为 true 时不执行 Widget 更新阶段,因此不会返回 cardUpdateError;否则 cardUpdateError 表示 Tool 已执行但当前 Widget 更新失败。reloadWidget 默认为 true,仅影响更新后的 Widget 是否重建。重试会再次执行 Tool,请避免重复触发。
|
|
72
|
+
|
|
73
|
+
## 调用方式
|
|
74
|
+
|
|
75
|
+
### 异步 API
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
callTool(params: CallToolParams): Promise<CallToolResult>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## 入参
|
|
82
|
+
|
|
83
|
+
<table>
|
|
84
|
+
<thead>
|
|
85
|
+
<tr><th>名称</th><th>类型</th><th>必填</th><th>默认值</th><th>约束</th><th>说明</th></tr>
|
|
86
|
+
</thead>
|
|
87
|
+
<tbody>
|
|
88
|
+
<tr><td><code>reloadWidget</code></td><td><code>boolean</code></td><td>否</td><td><code>true</code></td><td>-</td><td>是否重新创建更新后的 Widget 组件;设为 `false` 时复用当前组件。</td></tr>
|
|
89
|
+
<tr><td><code>skipWidgetUpdate</code></td><td><code>boolean</code></td><td>否</td><td><code>false</code></td><td>仅影响会下发 Widget 的 Tool。</td><td>是否跳过 Widget 更新阶段。设为 `true` 时,即使 Tool 下发 Widget,也只返回 Tool 数据,<br>不更新当前 Widget。</td></tr>
|
|
90
|
+
<tr><td><code>toolArgs</code></td><td><code>Record<string, unknown></code></td><td>是</td><td>-</td><td>-</td><td>Tool 入参。</td></tr>
|
|
91
|
+
<tr><td><code>toolName</code></td><td><code>string</code></td><td>是</td><td>-</td><td>-</td><td>当前应用内需要调用的 Tool 名称。</td></tr>
|
|
92
|
+
</tbody>
|
|
93
|
+
</table>
|
|
94
|
+
|
|
95
|
+
## 调用示例
|
|
96
|
+
|
|
97
|
+
```typescript
|
|
98
|
+
import { callTool } from '@doubao-dev/framework/api';
|
|
99
|
+
|
|
100
|
+
const result = await callTool({
|
|
101
|
+
toolName: 'query_order',
|
|
102
|
+
toolArgs: {
|
|
103
|
+
orderId: 'order-123'
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
if (result.toolError) {
|
|
108
|
+
console.warn(result.toolError.code, result.toolError.message);
|
|
109
|
+
} else {
|
|
110
|
+
console.log(result.toolResult);
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## 成功返回
|
|
115
|
+
|
|
116
|
+
<table>
|
|
117
|
+
<thead>
|
|
118
|
+
<tr><th>名称</th><th>类型</th><th>必返</th><th>说明</th></tr>
|
|
119
|
+
</thead>
|
|
120
|
+
<tbody>
|
|
121
|
+
<tr><td><code>cardUpdateError</code></td><td><code>CallToolError</code></td><td>否</td><td>Tool 已执行,但返回结果未能用于更新当前 Widget 时的错误。仅 Widget 场景可能返回。</td></tr>
|
|
122
|
+
<tr><td><code>cardUpdateError.code</code></td><td><code>string</code></td><td>否</td><td>错误码。</td></tr>
|
|
123
|
+
<tr><td><code>cardUpdateError.message</code></td><td><code>string</code></td><td>否</td><td>错误信息。</td></tr>
|
|
124
|
+
<tr><td><code>cardUpdateError.phase</code></td><td><code>"render"</code></td><td>否</td><td>错误阶段,固定为渲染阶段。</td></tr>
|
|
125
|
+
<tr><td><code>toolResult</code></td><td><code>ToolResult</code></td><td>否</td><td>Tool 正常结果,与 `toolError` 二选一。</td></tr>
|
|
126
|
+
<tr><td><code>toolResult.content</code></td><td><code>Record<string, unknown>[]</code></td><td>否</td><td>Tool 返回的内容块。</td></tr>
|
|
127
|
+
<tr><td><code>toolResult.isError</code></td><td><code>boolean</code></td><td>否</td><td>Tool 执行是否返回错误结果。</td></tr>
|
|
128
|
+
<tr><td><code>toolResult.structuredContent</code></td><td><code>unknown</code></td><td>否</td><td>Tool 返回的结构化内容。</td></tr>
|
|
129
|
+
<tr><td><code>toolError</code></td><td><code>CallToolBusinessError</code></td><td>否</td><td>Tool 业务错误,与 `toolResult` 二选一。该字段不会导致 API reject。</td></tr>
|
|
130
|
+
<tr><td><code>toolError.code</code></td><td><code>number</code></td><td>否</td><td>Tool 业务错误码。</td></tr>
|
|
131
|
+
<tr><td><code>toolError.message</code></td><td><code>string</code></td><td>否</td><td>Tool 业务错误信息。</td></tr>
|
|
132
|
+
</tbody>
|
|
133
|
+
</table>
|
|
134
|
+
|
|
135
|
+
### 返回示例
|
|
136
|
+
|
|
137
|
+
```json
|
|
138
|
+
{
|
|
139
|
+
"toolResult": {
|
|
140
|
+
"content": [
|
|
141
|
+
{
|
|
142
|
+
"type": "text",
|
|
143
|
+
"text": "订单已支付"
|
|
144
|
+
}
|
|
145
|
+
],
|
|
146
|
+
"structuredContent": {
|
|
147
|
+
"orderId": "order-123",
|
|
148
|
+
"status": "paid"
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## 错误处理
|
|
155
|
+
|
|
156
|
+
错误对象和通用错误码见 [通用错误处理](./common-errors.md#错误返回)。
|
|
157
|
+
|
|
158
|
+
### 失败示例
|
|
159
|
+
|
|
160
|
+
```json
|
|
161
|
+
{
|
|
162
|
+
"errNo": 104,
|
|
163
|
+
"errMsg": "invalid parameter"
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### 错误码
|
|
168
|
+
|
|
169
|
+
<table>
|
|
170
|
+
<thead>
|
|
171
|
+
<tr><th>errNo</th><th>errMsg</th><th>平台</th><th>触发条件</th><th>处理建议</th></tr>
|
|
172
|
+
</thead>
|
|
173
|
+
<tbody>
|
|
174
|
+
<tr><td><code>103</code></td><td><code>feature not support</code></td><td>Android、iOS</td><td>在 Worker 等非应用插件页面、Widget 容器中调用</td><td>仅在应用插件页面或会话 Widget 中调用。</td></tr>
|
|
175
|
+
<tr><td><code>104</code></td><td><code>invalid parameter</code></td><td>Android、iOS</td><td>toolName 为空、toolArgs 无法序列化为 JSON 对象,或传入的 skipWidgetUpdate、reloadWidget 不是布尔值</td><td>修正 Tool 名称、参数和 Widget 更新控制参数后重试。</td></tr>
|
|
176
|
+
<tr><td><code>112</code></td><td><code>invalid result</code></td><td>Android、iOS</td><td>Tool 正常结果、业务错误或 Widget 更新错误结构无效</td><td>稍后重试;持续失败时反馈 Tool 或服务端返回异常。</td></tr>
|
|
177
|
+
</tbody>
|
|
178
|
+
</table>
|
|
179
|
+
|
|
180
|
+
#### 通用错误码
|
|
181
|
+
|
|
182
|
+
<table>
|
|
183
|
+
<thead>
|
|
184
|
+
<tr><th>errNo</th><th>errMsg</th><th>说明</th><th>平台</th></tr>
|
|
185
|
+
</thead>
|
|
186
|
+
<tbody>
|
|
187
|
+
<tr><td><code>102</code></td><td><code>internal error</code></td><td>内部错误</td><td>Android、iOS</td></tr>
|
|
188
|
+
</tbody>
|
|
189
|
+
</table>
|
|
190
|
+
|
|
191
|
+
## 平台差异
|
|
192
|
+
|
|
193
|
+
- 非应用插件页面、Widget 容器返回 103;参数非法返回 104;返回结构无效返回 112;上下文无效、网络或服务端调用失败返回 102。
|
|
194
|
+
|
|
195
|
+
<a id="expiredwidget"></a>
|
|
196
|
+
### expiredWidget()
|
|
197
|
+
|
|
198
|
+
# expiredWidget
|
|
199
|
+
|
|
200
|
+
更新过期的 Widget 为固定卡片。
|
|
201
|
+
|
|
202
|
+
## 扫码预览
|
|
203
|
+

|
|
204
|
+
|
|
205
|
+
## 支持版本
|
|
206
|
+
|
|
207
|
+
前端库版本不低于 `0.0.27`。
|
|
208
|
+
|
|
209
|
+
## 支持平台
|
|
210
|
+
|
|
211
|
+
<table>
|
|
212
|
+
<thead>
|
|
213
|
+
<tr><th>平台</th><th>支持情况</th></tr>
|
|
214
|
+
</thead>
|
|
215
|
+
<tbody>
|
|
216
|
+
<tr><td>Android</td><td>支持</td></tr>
|
|
217
|
+
<tr><td>iOS</td><td>支持</td></tr>
|
|
218
|
+
<tr><td>PC</td><td>不支持</td></tr>
|
|
219
|
+
<tr><td>HarmonyOS</td><td>不支持</td></tr>
|
|
220
|
+
</tbody>
|
|
221
|
+
</table>
|
|
222
|
+
|
|
223
|
+
## 支持场景
|
|
224
|
+
|
|
225
|
+
<table>
|
|
226
|
+
<thead>
|
|
227
|
+
<tr><th>场景</th><th>支持情况</th></tr>
|
|
228
|
+
</thead>
|
|
229
|
+
<tbody>
|
|
230
|
+
<tr><td>页面</td><td>支持</td></tr>
|
|
231
|
+
<tr><td>卡片</td><td>支持</td></tr>
|
|
232
|
+
</tbody>
|
|
233
|
+
</table>
|
|
234
|
+
|
|
235
|
+
## 接入准备
|
|
236
|
+
|
|
237
|
+
### 前置条件
|
|
238
|
+
|
|
239
|
+
- **Android**:在卡片或消息环境中调用,需传入有效的 widgetInstanceId
|
|
240
|
+
- **iOS**:在卡片或消息环境中调用,需传入有效的 widgetInstanceId
|
|
241
|
+
|
|
242
|
+
## 使用说明
|
|
243
|
+
|
|
244
|
+
用于将状态已经过期的 Widget 实例转换为固定卡片,用户点击后可跳转到指定页面。
|
|
245
|
+
|
|
246
|
+
`getWidgetInstanceId` 仅在卡片环境中有效,在应用插件页面中会返回 `undefined`。如果需要在页面中调用,
|
|
247
|
+
请在 `navigateTo` 时通过参数传递卡片实例 ID。
|
|
248
|
+
|
|
249
|
+
- 请在卡片状态过期后调用,将卡片转换为可点击跳转的固定卡片;建议使用 url 字段而非已废弃的 schema 字段。
|
|
250
|
+
|
|
251
|
+
## 调用方式
|
|
252
|
+
|
|
253
|
+
### 异步 API
|
|
254
|
+
|
|
255
|
+
```typescript
|
|
256
|
+
expiredWidget(params: ExpiredWidgetParams): Promise<object>
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
## 入参
|
|
260
|
+
|
|
261
|
+
<table>
|
|
262
|
+
<thead>
|
|
263
|
+
<tr><th>名称</th><th>类型</th><th>必填</th><th>默认值</th><th>约束</th><th>说明</th></tr>
|
|
264
|
+
</thead>
|
|
265
|
+
<tbody>
|
|
266
|
+
<tr><td><code>detailText</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>点击失效卡要跳转的页面 detailText。</td></tr>
|
|
267
|
+
<tr><td><code>schema</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>已废弃:使用 url 字段替代 schema 字段,后续版本将移除 schema 字段,请尽快迁移到 url 字段。</td><td>点击失效卡要跳转的页面 schema,格式与 navigateTo 的 url 参数一致。</td></tr>
|
|
268
|
+
<tr><td><code>title</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>点击失效卡要跳转的页面 title。</td></tr>
|
|
269
|
+
<tr><td><code>url</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>点击失效卡要跳转的页面 URL 或 sslocal schema。应用插件页面 URL 格式与 navigateTo 的 url 参数一致。</td></tr>
|
|
270
|
+
<tr><td><code>widgetInstanceId</code></td><td><code>string</code></td><td>是</td><td>-</td><td>-</td><td>卡片实例 ID。<br><br>在卡片环境可通过 `getWidgetInstanceId` 获取;在应用插件页面等非卡片环境需要通过传参或通信传递。</td></tr>
|
|
271
|
+
</tbody>
|
|
272
|
+
</table>
|
|
273
|
+
|
|
274
|
+
## 调用示例
|
|
275
|
+
|
|
276
|
+
```ts
|
|
277
|
+
import { expiredWidget } from '@doubao-dev/framework/api';
|
|
278
|
+
import { getWidgetInstanceId } from '@doubao-dev/framework';
|
|
279
|
+
|
|
280
|
+
expiredWidget({
|
|
281
|
+
widgetInstanceId: getWidgetInstanceId(),
|
|
282
|
+
url: '/pages/detail/index?key=value'
|
|
283
|
+
});
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
## 成功返回
|
|
287
|
+
|
|
288
|
+
无返回字段。
|
|
289
|
+
|
|
290
|
+
<a id="getprivacysetting"></a>
|
|
291
|
+
### getPrivacySetting()
|
|
292
|
+
|
|
293
|
+
# getPrivacySetting
|
|
294
|
+
|
|
295
|
+
获取隐私设置状态。
|
|
296
|
+
|
|
297
|
+
## 扫码预览
|
|
298
|
+

|
|
299
|
+
|
|
300
|
+
## 支持版本
|
|
301
|
+
|
|
302
|
+
前端库版本不低于 `0.0.19`。
|
|
303
|
+
|
|
304
|
+
## 支持平台
|
|
305
|
+
|
|
306
|
+
<table>
|
|
307
|
+
<thead>
|
|
308
|
+
<tr><th>平台</th><th>支持情况</th></tr>
|
|
309
|
+
</thead>
|
|
310
|
+
<tbody>
|
|
311
|
+
<tr><td>Android</td><td>支持</td></tr>
|
|
312
|
+
<tr><td>iOS</td><td>支持</td></tr>
|
|
313
|
+
<tr><td>PC</td><td>不支持</td></tr>
|
|
314
|
+
<tr><td>HarmonyOS</td><td>不支持</td></tr>
|
|
315
|
+
</tbody>
|
|
316
|
+
</table>
|
|
317
|
+
|
|
318
|
+
## 支持场景
|
|
319
|
+
|
|
320
|
+
<table>
|
|
321
|
+
<thead>
|
|
322
|
+
<tr><th>场景</th><th>支持情况</th></tr>
|
|
323
|
+
</thead>
|
|
324
|
+
<tbody>
|
|
325
|
+
<tr><td>页面</td><td>支持</td></tr>
|
|
326
|
+
<tr><td>卡片</td><td>支持</td></tr>
|
|
327
|
+
</tbody>
|
|
328
|
+
</table>
|
|
329
|
+
|
|
330
|
+
## 使用说明
|
|
331
|
+
|
|
332
|
+
- 用于在展示隐私相关能力前判断是否需要引导用户完成隐私协议授权。
|
|
333
|
+
|
|
334
|
+
## 调用方式
|
|
335
|
+
|
|
336
|
+
### 异步 API
|
|
337
|
+
|
|
338
|
+
```typescript
|
|
339
|
+
getPrivacySetting(params?: object): Promise<PrivacySettingResult>
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
## 入参
|
|
343
|
+
|
|
344
|
+
无。
|
|
345
|
+
|
|
346
|
+
## 调用示例
|
|
347
|
+
|
|
348
|
+
```typescript
|
|
349
|
+
import { getPrivacySetting } from '@doubao-dev/framework/api';
|
|
350
|
+
|
|
351
|
+
const { needAuthorization } = await getPrivacySetting();
|
|
352
|
+
|
|
353
|
+
console.log(needAuthorization);
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
## 成功返回
|
|
357
|
+
|
|
358
|
+
<table>
|
|
359
|
+
<thead>
|
|
360
|
+
<tr><th>名称</th><th>类型</th><th>必返</th><th>说明</th></tr>
|
|
361
|
+
</thead>
|
|
362
|
+
<tbody>
|
|
363
|
+
<tr><td><code>needAuthorization</code></td><td><code>boolean</code></td><td>是</td><td>是否需要用户对隐私协议进行授权。</td></tr>
|
|
364
|
+
</tbody>
|
|
365
|
+
</table>
|
|
366
|
+
|
|
367
|
+
### 返回示例
|
|
368
|
+
|
|
369
|
+
```json
|
|
370
|
+
{
|
|
371
|
+
"needAuthorization": false
|
|
372
|
+
}
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
## 错误处理
|
|
376
|
+
|
|
377
|
+
错误对象和通用错误码见 [通用错误处理](./common-errors.md#错误返回)。
|
|
378
|
+
|
|
379
|
+
### 错误码
|
|
380
|
+
|
|
381
|
+
#### 通用错误码
|
|
382
|
+
|
|
383
|
+
<table>
|
|
384
|
+
<thead>
|
|
385
|
+
<tr><th>errNo</th><th>errMsg</th><th>说明</th><th>平台</th></tr>
|
|
386
|
+
</thead>
|
|
387
|
+
<tbody>
|
|
388
|
+
<tr><td><code>102</code></td><td><code>internal error</code></td><td>内部错误</td><td>Android、iOS</td></tr>
|
|
389
|
+
</tbody>
|
|
390
|
+
</table>
|
|
391
|
+
|
|
392
|
+
## 平台差异
|
|
393
|
+
|
|
394
|
+
- 该 API 无专属错误码,失败时统一返回 102。
|
|
395
|
+
|
|
396
|
+
<a id="sendfollowupmessage"></a>
|
|
397
|
+
### sendFollowUpMessage()
|
|
398
|
+
|
|
399
|
+
# sendFollowUpMessage
|
|
400
|
+
|
|
401
|
+
以用户身份发送后续消息,触发新一轮对话、API 调用或引导模型响应。
|
|
402
|
+
|
|
403
|
+
## 扫码预览
|
|
404
|
+

|
|
405
|
+
|
|
406
|
+
## 支持版本
|
|
407
|
+
|
|
408
|
+
前端库版本不低于 `0.0.37`。
|
|
409
|
+
|
|
410
|
+
## 支持平台
|
|
411
|
+
|
|
412
|
+
<table>
|
|
413
|
+
<thead>
|
|
414
|
+
<tr><th>平台</th><th>支持情况</th></tr>
|
|
415
|
+
</thead>
|
|
416
|
+
<tbody>
|
|
417
|
+
<tr><td>Android</td><td>支持</td></tr>
|
|
418
|
+
<tr><td>iOS</td><td>支持</td></tr>
|
|
419
|
+
<tr><td>PC</td><td>不支持</td></tr>
|
|
420
|
+
<tr><td>HarmonyOS</td><td>不支持</td></tr>
|
|
421
|
+
</tbody>
|
|
422
|
+
</table>
|
|
423
|
+
|
|
424
|
+
## 支持场景
|
|
425
|
+
|
|
426
|
+
<table>
|
|
427
|
+
<thead>
|
|
428
|
+
<tr><th>场景</th><th>支持情况</th></tr>
|
|
429
|
+
</thead>
|
|
430
|
+
<tbody>
|
|
431
|
+
<tr><td>页面</td><td>支持</td></tr>
|
|
432
|
+
<tr><td>卡片</td><td>支持</td></tr>
|
|
433
|
+
</tbody>
|
|
434
|
+
</table>
|
|
435
|
+
|
|
436
|
+
## 接入准备
|
|
437
|
+
|
|
438
|
+
### 前置条件
|
|
439
|
+
|
|
440
|
+
- **Android**:在卡片或应用插件页面中调用
|
|
441
|
+
- **iOS**:在卡片或应用插件页面中调用,且当前上下文已关联有效会话
|
|
442
|
+
|
|
443
|
+
## 使用说明
|
|
444
|
+
|
|
445
|
+
可在卡片或应用插件页面中调用,不支持在 app.ts 代码中调用。客户端会根据调用上下文关联会话:
|
|
446
|
+
卡片使用其所在会话,从卡片打开的页面沿用该会话,其他页面使用主会话。
|
|
447
|
+
|
|
448
|
+
- Promise 解析表示发送请求已提交,不表示消息已成功送达;实际发送失败不会通过该 Promise 返回。
|
|
449
|
+
|
|
450
|
+
## 调用方式
|
|
451
|
+
|
|
452
|
+
### 异步 API
|
|
453
|
+
|
|
454
|
+
```typescript
|
|
455
|
+
sendFollowUpMessage(params: SendFollowUpMessageParams): Promise<object>
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
## 入参
|
|
459
|
+
|
|
460
|
+
<table>
|
|
461
|
+
<thead>
|
|
462
|
+
<tr><th>名称</th><th>类型</th><th>必填</th><th>默认值</th><th>约束</th><th>说明</th></tr>
|
|
463
|
+
</thead>
|
|
464
|
+
<tbody>
|
|
465
|
+
<tr><td><code>content</code></td><td><code>Content[]</code></td><td>是</td><td>-</td><td>至少包含一条 text 类型且 text 不为空白的消息;第一条符合条件的消息作为本轮用户输入。</td><td>消息内容。</td></tr>
|
|
466
|
+
</tbody>
|
|
467
|
+
</table>
|
|
468
|
+
|
|
469
|
+
### `content[].type = "text"`
|
|
470
|
+
|
|
471
|
+
<table>
|
|
472
|
+
<thead>
|
|
473
|
+
<tr><th>名称</th><th>类型</th><th>必填</th><th>默认值</th><th>约束</th><th>说明</th></tr>
|
|
474
|
+
</thead>
|
|
475
|
+
<tbody>
|
|
476
|
+
<tr><td><code>content[].type</code></td><td><code>"text"</code></td><td>是</td><td>-</td><td>-</td><td>文本消息。</td></tr>
|
|
477
|
+
<tr><td><code>content[].text</code></td><td><code>string</code></td><td>是</td><td>-</td><td>-</td><td>后续消息的文本内容。</td></tr>
|
|
478
|
+
</tbody>
|
|
479
|
+
</table>
|
|
480
|
+
|
|
481
|
+
### `content[].type = "api/call"`
|
|
482
|
+
|
|
483
|
+
<table>
|
|
484
|
+
<thead>
|
|
485
|
+
<tr><th>名称</th><th>类型</th><th>必填</th><th>默认值</th><th>约束</th><th>说明</th></tr>
|
|
486
|
+
</thead>
|
|
487
|
+
<tbody>
|
|
488
|
+
<tr><td><code>content[].type</code></td><td><code>"api/call"</code></td><td>是</td><td>-</td><td>-</td><td>API 调用消息。</td></tr>
|
|
489
|
+
<tr><td><code>content[].data</code></td><td><code>object</code></td><td>是</td><td>-</td><td>-</td><td>要调用的 API 及其参数。</td></tr>
|
|
490
|
+
<tr><td><code>content[].data.arguments</code></td><td><code>object</code></td><td>是</td><td>-</td><td>-</td><td>API 调用参数。</td></tr>
|
|
491
|
+
<tr><td><code>content[].data.name</code></td><td><code>string</code></td><td>是</td><td>-</td><td>-</td><td>API 名称。</td></tr>
|
|
492
|
+
</tbody>
|
|
493
|
+
</table>
|
|
494
|
+
|
|
495
|
+
### `content[].type = "responseHint"`
|
|
496
|
+
|
|
497
|
+
<table>
|
|
498
|
+
<thead>
|
|
499
|
+
<tr><th>名称</th><th>类型</th><th>必填</th><th>默认值</th><th>约束</th><th>说明</th></tr>
|
|
500
|
+
</thead>
|
|
501
|
+
<tbody>
|
|
502
|
+
<tr><td><code>content[].type</code></td><td><code>"responseHint"</code></td><td>是</td><td>-</td><td>-</td><td>模型响应提示。</td></tr>
|
|
503
|
+
<tr><td><code>content[].data</code></td><td><code>object</code></td><td>是</td><td>-</td><td>-</td><td>用户动作和模型响应建议。</td></tr>
|
|
504
|
+
<tr><td><code>content[].data.responseGuidance</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>建议模型如何响应。</td></tr>
|
|
505
|
+
<tr><td><code>content[].data.userAction</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>用户做了什么。</td></tr>
|
|
506
|
+
</tbody>
|
|
507
|
+
</table>
|
|
508
|
+
|
|
509
|
+
## 调用示例
|
|
510
|
+
|
|
511
|
+
```typescript
|
|
512
|
+
import { sendFollowUpMessage } from '@doubao-dev/framework/api';
|
|
513
|
+
|
|
514
|
+
await sendFollowUpMessage({
|
|
515
|
+
content: [
|
|
516
|
+
{ type: 'text', text: '选择拿铁' },
|
|
517
|
+
{
|
|
518
|
+
type: 'api/call',
|
|
519
|
+
data: {
|
|
520
|
+
name: 'selectDrink',
|
|
521
|
+
arguments: { drinkId: 'latte_001' }
|
|
522
|
+
}
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
type: 'responseHint',
|
|
526
|
+
data: {
|
|
527
|
+
userAction: '用户选择了拿铁',
|
|
528
|
+
responseGuidance: '确认已选择拿铁,并询问是否需要调整杯型'
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
]
|
|
532
|
+
});
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
## 成功返回
|
|
536
|
+
|
|
537
|
+
无返回字段。
|
|
538
|
+
|
|
539
|
+
<a id="createtask"></a>
|
|
540
|
+
### createTask()
|
|
541
|
+
|
|
542
|
+
# createTask
|
|
543
|
+
|
|
544
|
+
创建任务。
|
|
545
|
+
|
|
546
|
+
## 使用限制
|
|
547
|
+
|
|
548
|
+
> [!WARNING]
|
|
549
|
+
> **Android、iOS**:豆包 Android、iOS 仅支持 remote 任务,传入 local 无法按本地任务处理;调用方传入 local 时行为与预期不符。
|
|
550
|
+
|
|
551
|
+
## 支持版本
|
|
552
|
+
|
|
553
|
+
前端库版本不低于 `0.0.31`。
|
|
554
|
+
|
|
555
|
+
## 支持平台
|
|
556
|
+
|
|
557
|
+
<table>
|
|
558
|
+
<thead>
|
|
559
|
+
<tr><th>平台</th><th>支持情况</th></tr>
|
|
560
|
+
</thead>
|
|
561
|
+
<tbody>
|
|
562
|
+
<tr><td>Android</td><td>支持</td></tr>
|
|
563
|
+
<tr><td>iOS</td><td>支持</td></tr>
|
|
564
|
+
<tr><td>PC</td><td>不支持</td></tr>
|
|
565
|
+
<tr><td>HarmonyOS</td><td>不支持</td></tr>
|
|
566
|
+
</tbody>
|
|
567
|
+
</table>
|
|
568
|
+
|
|
569
|
+
## 支持场景
|
|
570
|
+
|
|
571
|
+
<table>
|
|
572
|
+
<thead>
|
|
573
|
+
<tr><th>场景</th><th>支持情况</th></tr>
|
|
574
|
+
</thead>
|
|
575
|
+
<tbody>
|
|
576
|
+
<tr><td>页面</td><td>支持</td></tr>
|
|
577
|
+
<tr><td>卡片</td><td>支持</td></tr>
|
|
578
|
+
</tbody>
|
|
579
|
+
</table>
|
|
580
|
+
|
|
581
|
+
## 使用说明
|
|
582
|
+
|
|
583
|
+
创建任务时需要传入开发者侧唯一任务标识、任务模板、任务详情和任务类型。开发者侧唯一任务标识
|
|
584
|
+
可用于幂等创建和后续业务关联。远端任务创建成功后,返回的 taskId 可用于查询或更新任务。
|
|
585
|
+
|
|
586
|
+
- 当前仅支持 taskType 为 remote 的远端任务;outTaskId 建议使用业务侧唯一标识以支持幂等创建。
|
|
587
|
+
|
|
588
|
+
## 调用方式
|
|
589
|
+
|
|
590
|
+
### 异步 API
|
|
591
|
+
|
|
592
|
+
```typescript
|
|
593
|
+
createTask(params: CreateTaskParams): Promise<CreateTaskResult>
|
|
594
|
+
```
|
|
595
|
+
|
|
596
|
+
## 入参
|
|
597
|
+
|
|
598
|
+
<table>
|
|
599
|
+
<thead>
|
|
600
|
+
<tr><th>名称</th><th>类型</th><th>必填</th><th>默认值</th><th>约束</th><th>说明</th></tr>
|
|
601
|
+
</thead>
|
|
602
|
+
<tbody>
|
|
603
|
+
<tr><td><code>outTaskId</code></td><td><code>string</code></td><td>是</td><td>-</td><td>-</td><td>开发者侧任务唯一标识,用于幂等和关联</td></tr>
|
|
604
|
+
<tr><td><code>taskDetail</code></td><td><code>TaskDetail</code></td><td>是</td><td>-</td><td>-</td><td>模板对应的数据,传入对象时会自动序列化为 JSON 字符串</td></tr>
|
|
605
|
+
<tr><td><code>taskDetail.display_data</code></td><td><code>TaskDisplayData</code></td><td>否</td><td>-</td><td>-</td><td>任务展示数据。</td></tr>
|
|
606
|
+
<tr><td><code>taskDetail.display_data.sub_title</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>任务副标题。</td></tr>
|
|
607
|
+
<tr><td><code>taskDetail.display_data.title</code></td><td><code>string</code></td><td>否</td><td>-</td><td>-</td><td>任务标题。</td></tr>
|
|
608
|
+
<tr><td><code>taskDetail.expire_in_sec</code></td><td><code>number</code></td><td>否</td><td>-</td><td>-</td><td>任务过期时间,单位:秒。任务创建后经过该时间将自动过期。</td></tr>
|
|
609
|
+
<tr><td><code>taskDetail.jump_page_data</code></td><td><code>JumpSchemaData</code></td><td>否</td><td><code>-</code></td><td>-</td><td>点击任务跳转的页面参数。</td></tr>
|
|
610
|
+
<tr><td><code>taskDetail.jump_page_data.path</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>跳转页面。</td></tr>
|
|
611
|
+
<tr><td><code>taskDetail.jump_page_data.query</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>页面参数,应用插件内消费时会自动 base64 url encode,需要 decode。</td></tr>
|
|
612
|
+
<tr><td><code>taskDetail.progress_data</code></td><td><code>TaskProgressData</code></td><td>否</td><td><code>-</code></td><td>-</td><td>任务进度数据。</td></tr>
|
|
613
|
+
<tr><td><code>taskDetail.progress_data.progress</code></td><td><code>number</code></td><td>否</td><td>-</td><td>-</td><td>任务进度值,如百分比 0-100。</td></tr>
|
|
614
|
+
<tr><td><code>taskDetail.progress_data.progress_text</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>进度描述文本,如"正在处理中"。</td></tr>
|
|
615
|
+
<tr><td><code>taskDetail.progress_data.remaining_seconds</code></td><td><code>number</code></td><td>否</td><td><code>-</code></td><td>-</td><td>预估剩余时间,单位:秒。</td></tr>
|
|
616
|
+
<tr><td><code>taskDetail.remove_data</code></td><td><code>TaskActionParams</code></td><td>否</td><td><code>-</code></td><td>-</td><td>移除任务时的操作参数。</td></tr>
|
|
617
|
+
<tr><td><code>taskDetail.remove_data.action_key</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>操作标识。</td></tr>
|
|
618
|
+
<tr><td><code>taskDetail.remove_data.page_param</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>页面参数。</td></tr>
|
|
619
|
+
<tr><td><code>taskTemplate</code></td><td><code>"remote_normal_v1"</code></td><td>是</td><td>-</td><td>-</td><td>任务样式模板,当前仅支持 remote_normal_v1</td></tr>
|
|
620
|
+
<tr><td><code>taskType</code></td><td><code>TaskType</code></td><td>是</td><td>-</td><td>-</td><td>任务类型,当前支持 local 和 remote。Android、iOS:豆包 Android、iOS 仅支持 remote 任务,传入 local 无法按本地任务处理。</td></tr>
|
|
621
|
+
</tbody>
|
|
622
|
+
</table>
|
|
623
|
+
|
|
624
|
+
## 调用示例
|
|
625
|
+
|
|
626
|
+
```typescript
|
|
627
|
+
import { createTask } from '@doubao-dev/framework/api';
|
|
628
|
+
|
|
629
|
+
const result = await createTask({
|
|
630
|
+
outTaskId: 'order-20260529-001',
|
|
631
|
+
taskTemplate: 'remote_normal_v1',
|
|
632
|
+
taskType: 'remote',
|
|
633
|
+
taskDetail: {
|
|
634
|
+
expire_in_sec: 3600,
|
|
635
|
+
display_data: {
|
|
636
|
+
title: '订单处理中',
|
|
637
|
+
sub_title: '正在为你处理订单,请稍候'
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
});
|
|
641
|
+
|
|
642
|
+
console.log(result.taskId, result.token, result.expiresIn);
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
## 成功返回
|
|
646
|
+
|
|
647
|
+
<table>
|
|
648
|
+
<thead>
|
|
649
|
+
<tr><th>名称</th><th>类型</th><th>必返</th><th>说明</th></tr>
|
|
650
|
+
</thead>
|
|
651
|
+
<tbody>
|
|
652
|
+
<tr><td><code>expiresIn</code></td><td><code>number</code></td><td>否</td><td>任务超时过期时间</td></tr>
|
|
653
|
+
<tr><td><code>taskId</code></td><td><code>string</code></td><td>是</td><td>任务 ID,后续可以使用这个 ID 更新任务</td></tr>
|
|
654
|
+
<tr><td><code>token</code></td><td><code>string</code></td><td>否</td><td>远端任务 token,后续使用 token 通过 OpenAPI 更新远端任务</td></tr>
|
|
655
|
+
</tbody>
|
|
656
|
+
</table>
|
|
657
|
+
|
|
658
|
+
### 返回示例
|
|
659
|
+
|
|
660
|
+
```json
|
|
661
|
+
{
|
|
662
|
+
"taskId": "task_123",
|
|
663
|
+
"token": "task-token",
|
|
664
|
+
"expiresIn": 3600
|
|
665
|
+
}
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
## 错误处理
|
|
669
|
+
|
|
670
|
+
错误对象和通用错误码见 [通用错误处理](./common-errors.md#错误返回)。
|
|
671
|
+
|
|
672
|
+
### 失败示例
|
|
673
|
+
|
|
674
|
+
```json
|
|
675
|
+
{
|
|
676
|
+
"errNo": 104,
|
|
677
|
+
"errMsg": "invalid parameter"
|
|
678
|
+
}
|
|
679
|
+
```
|
|
680
|
+
|
|
681
|
+
### 错误码
|
|
682
|
+
|
|
683
|
+
<table>
|
|
684
|
+
<thead>
|
|
685
|
+
<tr><th>errNo</th><th>errMsg</th><th>平台</th><th>触发条件</th><th>处理建议</th></tr>
|
|
686
|
+
</thead>
|
|
687
|
+
<tbody>
|
|
688
|
+
<tr><td><code>104</code></td><td><code>invalid parameter</code></td><td>Android、iOS</td><td>taskType 不是 remote(如传入 local)</td><td>传入 remote 任务类型后重试。</td></tr>
|
|
689
|
+
<tr><td><code>112</code></td><td><code>invalid result</code></td><td>Android、iOS</td><td>远端任务创建成功但返回数据为空或缺少 taskId</td><td>稍后重试;持续失败时反馈服务端响应异常。</td></tr>
|
|
690
|
+
</tbody>
|
|
691
|
+
</table>
|
|
692
|
+
|
|
693
|
+
#### 通用错误码
|
|
694
|
+
|
|
695
|
+
<table>
|
|
696
|
+
<thead>
|
|
697
|
+
<tr><th>errNo</th><th>errMsg</th><th>说明</th><th>平台</th></tr>
|
|
698
|
+
</thead>
|
|
699
|
+
<tbody>
|
|
700
|
+
<tr><td><code>102</code></td><td><code>internal error</code></td><td>内部错误</td><td>Android、iOS</td></tr>
|
|
701
|
+
</tbody>
|
|
702
|
+
</table>
|
|
703
|
+
|
|
704
|
+
## 平台差异
|
|
705
|
+
|
|
706
|
+
- taskType 非 remote 返回 104;远端返回数据为空或缺少 taskId 返回 112;其他失败统一返回 102。
|
|
707
|
+
|
|
708
|
+
<a id="updatemodelcontext"></a>
|
|
709
|
+
### updateModelContext()
|
|
710
|
+
|
|
711
|
+
# updateModelContext
|
|
712
|
+
|
|
713
|
+
向 Agent 捐赠上下文。
|
|
714
|
+
|
|
715
|
+
## 扫码预览
|
|
716
|
+

|
|
717
|
+
|
|
718
|
+
## 支持版本
|
|
719
|
+
|
|
720
|
+
前端库版本不低于 `0.0.26`。
|
|
721
|
+
|
|
722
|
+
## 支持平台
|
|
723
|
+
|
|
724
|
+
<table>
|
|
725
|
+
<thead>
|
|
726
|
+
<tr><th>平台</th><th>支持情况</th></tr>
|
|
727
|
+
</thead>
|
|
728
|
+
<tbody>
|
|
729
|
+
<tr><td>Android</td><td>支持</td></tr>
|
|
730
|
+
<tr><td>iOS</td><td>支持</td></tr>
|
|
731
|
+
<tr><td>PC</td><td>不支持</td></tr>
|
|
732
|
+
<tr><td>HarmonyOS</td><td>不支持</td></tr>
|
|
733
|
+
</tbody>
|
|
734
|
+
</table>
|
|
735
|
+
|
|
736
|
+
## 支持场景
|
|
737
|
+
|
|
738
|
+
<table>
|
|
739
|
+
<thead>
|
|
740
|
+
<tr><th>场景</th><th>支持情况</th></tr>
|
|
741
|
+
</thead>
|
|
742
|
+
<tbody>
|
|
743
|
+
<tr><td>页面</td><td>支持</td></tr>
|
|
744
|
+
<tr><td>卡片</td><td>支持</td></tr>
|
|
745
|
+
</tbody>
|
|
746
|
+
</table>
|
|
747
|
+
|
|
748
|
+
## 接入准备
|
|
749
|
+
|
|
750
|
+
### 前置条件
|
|
751
|
+
|
|
752
|
+
- **Android**:未传 taskId 时需传 entityId;两者都不传时仅可在卡片环境调用,以便客户端补充必要信息
|
|
753
|
+
- **iOS**:未传 taskId 时需传 entityId;两者都不传时仅可在卡片环境调用,以便客户端补充必要信息
|
|
754
|
+
|
|
755
|
+
## 使用说明
|
|
756
|
+
|
|
757
|
+
`taskId` 可以为空,此时客户端会尝试使用 `entityId` 填充;`entityId` 可以为空,
|
|
758
|
+
此时如果处于卡片环境,客户端会尝试使用卡片的 `entityId` 填充。
|
|
759
|
+
|
|
760
|
+
- 用于在任务或实体维度补充模型可理解的上下文,请在业务状态变化后按需调用,避免高频重复捐赠相同内容。
|
|
761
|
+
|
|
762
|
+
## 调用方式
|
|
763
|
+
|
|
764
|
+
### 异步 API
|
|
765
|
+
|
|
766
|
+
```typescript
|
|
767
|
+
updateModelContext(params: UpdateModelContextParams): Promise<object>
|
|
768
|
+
```
|
|
769
|
+
|
|
770
|
+
## 入参
|
|
771
|
+
|
|
772
|
+
<table>
|
|
773
|
+
<thead>
|
|
774
|
+
<tr><th>名称</th><th>类型</th><th>必填</th><th>默认值</th><th>约束</th><th>说明</th></tr>
|
|
775
|
+
</thead>
|
|
776
|
+
<tbody>
|
|
777
|
+
<tr><td><code>content</code></td><td><code>string</code></td><td>是</td><td>-</td><td>-</td><td>上下文内容,格式无约束,可以与 MCP 服务下发的上下文格式保持一致。</td></tr>
|
|
778
|
+
<tr><td><code>entityId</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>上下文所属的 entityId,业务侧管理。为空且处于卡片环境时,客户端会尝试使用卡片的 entityId 填充。</td></tr>
|
|
779
|
+
<tr><td><code>taskId</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>上下文所属任务 ID,业务侧定义。为空时客户端会尝试使用 entityId 填充。</td></tr>
|
|
780
|
+
</tbody>
|
|
781
|
+
</table>
|
|
782
|
+
|
|
783
|
+
## 调用示例
|
|
784
|
+
|
|
785
|
+
```typescript
|
|
786
|
+
import { updateModelContext } from '@doubao-dev/framework/api';
|
|
787
|
+
|
|
788
|
+
await updateModelContext({
|
|
789
|
+
taskId: 'task-id',
|
|
790
|
+
entityId: 'entity-id',
|
|
791
|
+
content: '用户选择了标准配送'
|
|
792
|
+
});
|
|
793
|
+
```
|
|
794
|
+
|
|
795
|
+
## 成功返回
|
|
796
|
+
|
|
797
|
+
无返回字段。
|
|
798
|
+
|
|
799
|
+
## 错误处理
|
|
800
|
+
|
|
801
|
+
错误对象和通用错误码见 [通用错误处理](./common-errors.md#错误返回)。
|
|
802
|
+
|
|
803
|
+
### 失败示例
|
|
804
|
+
|
|
805
|
+
```json
|
|
806
|
+
{
|
|
807
|
+
"errNo": 305,
|
|
808
|
+
"errMsg": "network failure"
|
|
809
|
+
}
|
|
810
|
+
```
|
|
811
|
+
|
|
812
|
+
### 错误码
|
|
813
|
+
|
|
814
|
+
<table>
|
|
815
|
+
<thead>
|
|
816
|
+
<tr><th>errNo</th><th>errMsg</th><th>平台</th><th>触发条件</th><th>处理建议</th></tr>
|
|
817
|
+
</thead>
|
|
818
|
+
<tbody>
|
|
819
|
+
<tr><td><code>103</code></td><td><code>feature not support</code></td><td>Android</td><td>当前容器类型不受支持,无法归类为页面、卡片或 Worker 来源</td><td>请在支持的容器(页面、卡片或 Worker)环境中调用。</td></tr>
|
|
820
|
+
<tr><td><code>112</code></td><td><code>invalid result</code></td><td>Android</td><td>捐赠上下文的远端响应无法解析</td><td>稍后重试;持续失败时反馈服务端响应异常。</td></tr>
|
|
821
|
+
<tr><td><code>301</code></td><td><code>network request cancelled</code></td><td>iOS</td><td>捐赠上下文的网络请求被取消</td><td>确认应用与网络状态后重试。</td></tr>
|
|
822
|
+
<tr><td><code>302</code></td><td><code>connection timed out</code></td><td>Android、iOS</td><td>捐赠上下文的网络连接超时</td><td>检查网络连接后重试。</td></tr>
|
|
823
|
+
<tr><td><code>303</code></td><td><code>no network connection</code></td><td>Android、iOS</td><td>当前无可用网络连接</td><td>恢复网络连接后重试。</td></tr>
|
|
824
|
+
<tr><td><code>305</code></td><td><code>network failure</code></td><td>Android、iOS</td><td>捐赠上下文时发生其他网络错误</td><td>检查网络连接,稍后重试。</td></tr>
|
|
825
|
+
</tbody>
|
|
826
|
+
</table>
|
|
827
|
+
|
|
828
|
+
#### 通用错误码
|
|
829
|
+
|
|
830
|
+
<table>
|
|
831
|
+
<thead>
|
|
832
|
+
<tr><th>errNo</th><th>errMsg</th><th>说明</th><th>平台</th></tr>
|
|
833
|
+
</thead>
|
|
834
|
+
<tbody>
|
|
835
|
+
<tr><td><code>100</code></td><td><code>unknown error</code></td><td>未知错误</td><td>Android</td></tr>
|
|
836
|
+
<tr><td><code>102</code></td><td><code>internal error</code></td><td>内部错误</td><td>Android</td></tr>
|
|
837
|
+
</tbody>
|
|
838
|
+
</table>
|
|
839
|
+
|
|
840
|
+
## 平台差异
|
|
841
|
+
|
|
842
|
+
- **Android**:网络失败细分为连接超时 302、无网络 303、其他网络错误 305;远端响应无法解析返回 112;当前容器类型不受支持返回 103;其他失败统一返回 102,未归类的远端业务错误返回 100。
|
|
843
|
+
- **iOS**:依据网络错误细分:请求取消 301、连接超时 302、无网络 303、其他 305;不支持的调用来源仅回退处理、不作为失败。
|
|
844
|
+
|
|
845
|
+
<a id="updatewidget"></a>
|
|
846
|
+
### updateWidget()
|
|
847
|
+
|
|
848
|
+
# updateWidget
|
|
849
|
+
|
|
850
|
+
更新指定 Widget 卡片实例的渲染数据。
|
|
851
|
+
|
|
852
|
+
用于卡片内操作后刷新卡片展示、把服务端最新结果写回卡片,或由 Page 根据传入的
|
|
853
|
+
`widgetInstanceId` 更新原卡片;需要替换卡片类型时可同时传入新的 `widgetId`。
|
|
854
|
+
|
|
855
|
+
`widgetData` 与 `toolResult` 二选一。传入 `toolResult` 时不能切换 `widgetId`,
|
|
856
|
+
结构化结果必须符合当前应用的 Entity 协议。切换 `widgetId` 时不能关闭重新创建。
|
|
857
|
+
|
|
858
|
+
## 扫码预览
|
|
859
|
+

|
|
860
|
+
|
|
861
|
+
## 支持版本
|
|
862
|
+
|
|
863
|
+
前端库版本不低于 `0.0.26`。
|
|
864
|
+
|
|
865
|
+
## 支持平台
|
|
866
|
+
|
|
867
|
+
<table>
|
|
868
|
+
<thead>
|
|
869
|
+
<tr><th>平台</th><th>支持情况</th></tr>
|
|
870
|
+
</thead>
|
|
871
|
+
<tbody>
|
|
872
|
+
<tr><td>Android</td><td>支持</td></tr>
|
|
873
|
+
<tr><td>iOS</td><td>支持</td></tr>
|
|
874
|
+
<tr><td>PC</td><td>不支持</td></tr>
|
|
875
|
+
<tr><td>HarmonyOS</td><td>不支持</td></tr>
|
|
876
|
+
</tbody>
|
|
877
|
+
</table>
|
|
878
|
+
|
|
879
|
+
## 支持场景
|
|
880
|
+
|
|
881
|
+
<table>
|
|
882
|
+
<thead>
|
|
883
|
+
<tr><th>场景</th><th>支持情况</th></tr>
|
|
884
|
+
</thead>
|
|
885
|
+
<tbody>
|
|
886
|
+
<tr><td>页面</td><td>支持</td></tr>
|
|
887
|
+
<tr><td>卡片</td><td>支持</td></tr>
|
|
888
|
+
</tbody>
|
|
889
|
+
</table>
|
|
890
|
+
|
|
891
|
+
## 接入准备
|
|
892
|
+
|
|
893
|
+
### 前置条件
|
|
894
|
+
|
|
895
|
+
- **Android**:在卡片或消息环境中调用,需传入有效的 widgetInstanceId
|
|
896
|
+
- **iOS**:在卡片或消息环境中调用,需传入有效的 widgetInstanceId
|
|
897
|
+
|
|
898
|
+
## 使用说明
|
|
899
|
+
|
|
900
|
+
- widgetData 和 toolResult 互斥;应用插件支持 toolResult 和 reloadWidget,旧版 Applet Widget 仅支持 widgetData。toolResult 更新模型上下文并须符合 Entity 协议,不能同时切换 widgetId。reloadWidget 默认为 true;切换 widgetId 时不能设为 false。
|
|
901
|
+
|
|
902
|
+
## 调用方式
|
|
903
|
+
|
|
904
|
+
### 异步 API
|
|
905
|
+
|
|
906
|
+
```typescript
|
|
907
|
+
updateWidget(params: UpdateWidgetParams): Promise<object>
|
|
908
|
+
```
|
|
909
|
+
|
|
910
|
+
## 入参
|
|
911
|
+
|
|
912
|
+
<table>
|
|
913
|
+
<thead>
|
|
914
|
+
<tr><th>名称</th><th>类型</th><th>必填</th><th>默认值</th><th>约束</th><th>说明</th></tr>
|
|
915
|
+
</thead>
|
|
916
|
+
<tbody>
|
|
917
|
+
<tr><td><code>reloadWidget</code></td><td><code>boolean</code></td><td>否</td><td><code>true</code></td><td>-</td><td>是否重新创建 Widget 组件;设为 `false` 时仅更新同一 Widget 的数据。<br>仅应用插件支持;旧版 Applet Widget 使用 IM 更新,不支持此参数。</td></tr>
|
|
918
|
+
<tr><td><code>widgetInstanceId</code></td><td><code>string</code></td><td>是</td><td>-</td><td>-</td><td>需要更新的 Widget 实例 ID。<br><br>卡片内可通过 `getWidgetInstanceId()` 获取;页面中需要由路由参数或业务数据传入。</td></tr>
|
|
919
|
+
<tr><td><code>widgetData</code></td><td><code>string</code></td><td>否</td><td>-</td><td>-</td><td>新的卡片渲染数据,通常传入 `JSON.stringify(viewData)`;不会更新模型上下文。</td></tr>
|
|
920
|
+
<tr><td><code>widgetId</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>可选的新 widgetId。传入后会把当前实例切换成另一个已注册的 Widget。</td></tr>
|
|
921
|
+
<tr><td><code>toolResult</code></td><td><code>ToolResult</code></td><td>否</td><td>-</td><td>-</td><td>符合 Entity 协议的 ToolResult;仅应用插件支持,更新卡片并同步模型上下文。</td></tr>
|
|
922
|
+
<tr><td><code>toolResult.content</code></td><td><code>Record<string, unknown>[]</code></td><td>否</td><td><code>-</code></td><td>-</td><td>Tool 返回的内容块。</td></tr>
|
|
923
|
+
<tr><td><code>toolResult.isError</code></td><td><code>boolean</code></td><td>否</td><td><code>false</code></td><td>-</td><td>Tool 执行是否返回错误结果。</td></tr>
|
|
924
|
+
<tr><td><code>toolResult.structuredContent</code></td><td><code>unknown</code></td><td>否</td><td><code>-</code></td><td>-</td><td>Tool 返回的结构化内容。</td></tr>
|
|
925
|
+
</tbody>
|
|
926
|
+
</table>
|
|
927
|
+
|
|
928
|
+
## 调用示例
|
|
929
|
+
|
|
930
|
+
```typescript
|
|
931
|
+
import { updateWidget } from '@doubao-dev/framework/api';
|
|
932
|
+
import { getWidgetInstanceId } from '@doubao-dev/framework';
|
|
933
|
+
|
|
934
|
+
await updateWidget({
|
|
935
|
+
widgetInstanceId: getWidgetInstanceId(),
|
|
936
|
+
widgetData: JSON.stringify({ title: '更新后的标题', status: 'done' })
|
|
937
|
+
});
|
|
938
|
+
```
|
|
939
|
+
|
|
940
|
+
## 成功返回
|
|
941
|
+
|
|
942
|
+
无返回字段。
|
|
943
|
+
|
|
944
|
+
## 错误处理
|
|
945
|
+
|
|
946
|
+
错误对象和通用错误码见 [通用错误处理](./common-errors.md#错误返回)。
|
|
947
|
+
|
|
948
|
+
### 失败示例
|
|
949
|
+
|
|
950
|
+
```json
|
|
951
|
+
{
|
|
952
|
+
"errNo": 104,
|
|
953
|
+
"errMsg": "invalid parameter"
|
|
954
|
+
}
|
|
955
|
+
```
|
|
956
|
+
|
|
957
|
+
### 错误码
|
|
958
|
+
|
|
959
|
+
<table>
|
|
960
|
+
<thead>
|
|
961
|
+
<tr><th>errNo</th><th>errMsg</th><th>平台</th><th>触发条件</th><th>处理建议</th></tr>
|
|
962
|
+
</thead>
|
|
963
|
+
<tbody>
|
|
964
|
+
<tr><td><code>103</code></td><td><code>feature not support</code></td><td>Android、iOS</td><td>当前豆包环境未提供消息更新能力,或旧版 Applet Widget 传入 reloadWidget/toolResult</td><td>在支持的环境调用;旧版 Applet Widget 只传 widgetData。</td></tr>
|
|
965
|
+
<tr><td><code>104</code></td><td><code>invalid parameter</code></td><td>Android、iOS</td><td>widgetInstanceId 为空、widgetData 与 toolResult 未二选一、reloadWidget 类型错误,或切换 widgetId 时关闭重建</td><td>修正参数后重试。</td></tr>
|
|
966
|
+
<tr><td><code>116</code></td><td><code>resource not found</code></td><td>Android、iOS</td><td>依据 widgetInstanceId 找不到对应消息,或依据 widgetId 找不到已注册的 Widget</td><td>确认 widgetInstanceId 与 widgetId 有效后重试。</td></tr>
|
|
967
|
+
</tbody>
|
|
968
|
+
</table>
|
|
969
|
+
|
|
970
|
+
#### 通用错误码
|
|
971
|
+
|
|
972
|
+
<table>
|
|
973
|
+
<thead>
|
|
974
|
+
<tr><th>errNo</th><th>errMsg</th><th>说明</th><th>平台</th></tr>
|
|
975
|
+
</thead>
|
|
976
|
+
<tbody>
|
|
977
|
+
<tr><td><code>102</code></td><td><code>internal error</code></td><td>内部错误</td><td>Android、iOS</td></tr>
|
|
978
|
+
</tbody>
|
|
979
|
+
</table>
|
|
980
|
+
|
|
981
|
+
## 平台差异
|
|
982
|
+
|
|
983
|
+
- 参数为空返回 104;消息或 Widget 未找到返回 116;当前豆包环境未提供消息更新能力时返回 103;其他失败统一返回 102。
|
|
984
|
+
|
|
985
|
+
## 相关类型
|
|
986
|
+
|
|
987
|
+
<a id="toolresult"></a>
|
|
988
|
+
### ToolResult
|
|
989
|
+
|
|
990
|
+
Tool 返回的标准内容。
|
|
991
|
+
|
|
992
|
+
#### Properties
|
|
993
|
+
|
|
994
|
+
• **content?**: `Array<Record<string, unknown>>` - Tool 返回的内容块
|
|
995
|
+
• **structuredContent?**: `unknown` - Tool 返回的结构化内容
|
|
996
|
+
• **isError?**: `boolean` - Tool 执行是否返回错误结果
|
|
997
|
+
|
|
998
|
+
<a id="calltoolbusinesserror"></a>
|
|
999
|
+
### CallToolBusinessError
|
|
1000
|
+
|
|
1001
|
+
Tool 正常完成调用后返回的业务错误。
|
|
1002
|
+
|
|
1003
|
+
#### Properties
|
|
1004
|
+
|
|
1005
|
+
• **code**: `number` - Tool 业务错误码
|
|
1006
|
+
• **message**: `string` - Tool 业务错误信息
|
|
1007
|
+
|
|
1008
|
+
<a id="calltoolerror"></a>
|
|
1009
|
+
### CallToolError
|
|
1010
|
+
|
|
1011
|
+
Widget 更新阶段的错误。
|
|
1012
|
+
|
|
1013
|
+
#### Properties
|
|
1014
|
+
|
|
1015
|
+
• **code**: `string` - 错误码
|
|
1016
|
+
• **message**: `string` - 错误信息
|
|
1017
|
+
• **phase**: `'render'` - 错误阶段,固定为渲染阶段
|
|
1018
|
+
|
|
1019
|
+
<a id="calltoolparams"></a>
|
|
1020
|
+
### CallToolParams
|
|
1021
|
+
|
|
1022
|
+
调用 Tool 的参数。
|
|
1023
|
+
|
|
1024
|
+
#### Properties
|
|
1025
|
+
|
|
1026
|
+
• **toolName**: `string` - 当前应用内需要调用的 Tool 名称
|
|
1027
|
+
• **toolArgs**: `Record<string, unknown>` - Tool 入参
|
|
1028
|
+
• **skipWidgetUpdate?**: `boolean` - 是否跳过 Widget 更新阶段。设为 true 时,即使 Tool 下发 Widget,也只返回 Tool 数据, 不更新当前 Widget
|
|
1029
|
+
• **reloadWidget?**: `boolean` - 是否重新创建更新后的 Widget 组件;设为 false 时复用当前组件
|
|
1030
|
+
|
|
1031
|
+
<a id="calltoolresult"></a>
|
|
1032
|
+
### CallToolResult
|
|
1033
|
+
|
|
1034
|
+
调用 Tool 的结果。
|
|
1035
|
+
|
|
1036
|
+
#### Type
|
|
1037
|
+
|
|
1038
|
+
`{
|
|
1039
|
+
/**
|
|
1040
|
+
* Tool 已执行,但返回结果未能用于更新当前 Widget 时的错误。仅 Widget 场景可能返回。
|
|
1041
|
+
*
|
|
1042
|
+
* @default -
|
|
1043
|
+
*/
|
|
1044
|
+
cardUpdateError?: CallToolError;
|
|
1045
|
+
} & (
|
|
1046
|
+
| {
|
|
1047
|
+
/** Tool 正常结果,与 `toolError` 二选一。 */
|
|
1048
|
+
toolResult: ToolResult;
|
|
1049
|
+
/** @hidden */
|
|
1050
|
+
toolError?: never;
|
|
1051
|
+
}
|
|
1052
|
+
| {
|
|
1053
|
+
/** Tool 业务错误,与 `toolResult` 二选一。该字段不会导致 API reject。 */
|
|
1054
|
+
toolError: CallToolBusinessError;
|
|
1055
|
+
/** @hidden */
|
|
1056
|
+
toolResult?: never;
|
|
1057
|
+
}
|
|
1058
|
+
)`
|
|
1059
|
+
|
|
1060
|
+
<a id="expiredwidgetparams"></a>
|
|
1061
|
+
### ExpiredWidgetParams
|
|
1062
|
+
|
|
1063
|
+
将过期卡片转换为固定卡片的请求参数。
|
|
1064
|
+
|
|
1065
|
+
#### Properties
|
|
1066
|
+
|
|
1067
|
+
• **widgetInstanceId**: `string` - 卡片实例 ID。 在卡片环境可通过 getWidgetInstanceId 获取;在应用插件页面等非卡片环境需要通过传参或通信传递
|
|
1068
|
+
• **url?**: `string` - 点击失效卡要跳转的页面 URL 或 sslocal schema。应用插件页面 URL 格式与 navigateTo 的 url 参数一致
|
|
1069
|
+
• **title?**: `string` - 点击失效卡要跳转的页面 title
|
|
1070
|
+
• **detailText?**: `string` - 点击失效卡要跳转的页面 detailText
|
|
1071
|
+
|
|
1072
|
+
<a id="privacysettingresult"></a>
|
|
1073
|
+
### PrivacySettingResult
|
|
1074
|
+
|
|
1075
|
+
#### Properties
|
|
1076
|
+
|
|
1077
|
+
• **needAuthorization**: `boolean` - 是否需要用户对隐私协议进行授权
|
|
1078
|
+
|
|
1079
|
+
<a id="content"></a>
|
|
1080
|
+
### Content
|
|
1081
|
+
|
|
1082
|
+
后续消息内容。
|
|
1083
|
+
|
|
1084
|
+
#### Type
|
|
1085
|
+
|
|
1086
|
+
`| {
|
|
1087
|
+
/** 文本消息。 */
|
|
1088
|
+
type: 'text';
|
|
1089
|
+
/** 后续消息的文本内容。 */
|
|
1090
|
+
text: string;
|
|
1091
|
+
}
|
|
1092
|
+
| {
|
|
1093
|
+
/** API 调用消息。 */
|
|
1094
|
+
type: 'api/call';
|
|
1095
|
+
/** 要调用的 API 及其参数。 */
|
|
1096
|
+
data: {
|
|
1097
|
+
/** API 名称。 */
|
|
1098
|
+
name: string;
|
|
1099
|
+
/** API 调用参数。 */
|
|
1100
|
+
arguments: object;
|
|
1101
|
+
};
|
|
1102
|
+
}
|
|
1103
|
+
| {
|
|
1104
|
+
/** 模型响应提示。 */
|
|
1105
|
+
type: 'responseHint';
|
|
1106
|
+
/** 用户动作和模型响应建议。 */
|
|
1107
|
+
data: {
|
|
1108
|
+
/**
|
|
1109
|
+
* 用户做了什么。
|
|
1110
|
+
* @default -
|
|
1111
|
+
*/
|
|
1112
|
+
userAction?: string;
|
|
1113
|
+
/**
|
|
1114
|
+
* 建议模型如何响应。
|
|
1115
|
+
* @default -
|
|
1116
|
+
*/
|
|
1117
|
+
responseGuidance?: string;
|
|
1118
|
+
};
|
|
1119
|
+
}`
|
|
1120
|
+
|
|
1121
|
+
<a id="sendfollowupmessageparams"></a>
|
|
1122
|
+
### SendFollowUpMessageParams
|
|
1123
|
+
|
|
1124
|
+
发送后续消息的请求参数。
|
|
1125
|
+
|
|
1126
|
+
#### Properties
|
|
1127
|
+
|
|
1128
|
+
• **content**: `Content[]` - 消息内容
|
|
1129
|
+
|
|
1130
|
+
<a id="tasktype"></a>
|
|
1131
|
+
### TaskType
|
|
1132
|
+
|
|
1133
|
+
任务类型。 local 表示本地任务,remote 表示远端任务。
|
|
1134
|
+
|
|
1135
|
+
#### Type
|
|
1136
|
+
|
|
1137
|
+
`'local' | 'remote'`
|
|
1138
|
+
|
|
1139
|
+
<a id="taskdisplaydata"></a>
|
|
1140
|
+
### TaskDisplayData
|
|
1141
|
+
|
|
1142
|
+
任务展示数据。
|
|
1143
|
+
|
|
1144
|
+
#### Properties
|
|
1145
|
+
|
|
1146
|
+
• **title**: `string` - 任务标题
|
|
1147
|
+
• **sub_title?**: `string` - 任务副标题
|
|
1148
|
+
|
|
1149
|
+
<a id="taskactionparams"></a>
|
|
1150
|
+
### TaskActionParams
|
|
1151
|
+
|
|
1152
|
+
任务操作参数。
|
|
1153
|
+
|
|
1154
|
+
#### Properties
|
|
1155
|
+
|
|
1156
|
+
• **action_key?**: `string` - 操作标识
|
|
1157
|
+
• **page_param?**: `string` - 页面参数
|
|
1158
|
+
|
|
1159
|
+
<a id="jumpschemadata"></a>
|
|
1160
|
+
### JumpSchemaData
|
|
1161
|
+
|
|
1162
|
+
点击任务跳转的页面参数。
|
|
1163
|
+
|
|
1164
|
+
#### Properties
|
|
1165
|
+
|
|
1166
|
+
• **path?**: `string` - 跳转页面
|
|
1167
|
+
• **query?**: `string` - 页面参数,应用插件内消费时会自动 base64 url encode,需要 decode
|
|
1168
|
+
|
|
1169
|
+
<a id="taskprogressdata"></a>
|
|
1170
|
+
### TaskProgressData
|
|
1171
|
+
|
|
1172
|
+
任务进度数据。
|
|
1173
|
+
|
|
1174
|
+
#### Properties
|
|
1175
|
+
|
|
1176
|
+
• **progress**: `number` - 任务进度值,如百分比 0-100
|
|
1177
|
+
• **progress_text?**: `string` - 进度描述文本,如"正在处理中"
|
|
1178
|
+
• **remaining_seconds?**: `number` - 预估剩余时间,单位:秒
|
|
1179
|
+
|
|
1180
|
+
<a id="taskdetail"></a>
|
|
1181
|
+
### TaskDetail
|
|
1182
|
+
|
|
1183
|
+
任务详情。传入对象时会自动序列化为 JSON 字符串。
|
|
1184
|
+
|
|
1185
|
+
#### Type
|
|
1186
|
+
|
|
1187
|
+
`string | RemoteNormalV1Detail`
|
|
1188
|
+
|
|
1189
|
+
<a id="createtaskparams"></a>
|
|
1190
|
+
### CreateTaskParams
|
|
1191
|
+
|
|
1192
|
+
创建任务的请求参数。
|
|
1193
|
+
|
|
1194
|
+
#### Properties
|
|
1195
|
+
|
|
1196
|
+
• **outTaskId**: `string` - 开发者侧任务唯一标识,用于幂等和关联
|
|
1197
|
+
• **taskTemplate**: `TaskTemplate` - 任务样式模板,当前仅支持 remote_normal_v1
|
|
1198
|
+
• **taskDetail**: `TaskDetail` - 模板对应的数据,传入对象时会自动序列化为 JSON 字符串
|
|
1199
|
+
• **taskType**: `TaskType` - 任务类型,当前支持 local 和 remote
|
|
1200
|
+
|
|
1201
|
+
<a id="createtaskresult"></a>
|
|
1202
|
+
### CreateTaskResult
|
|
1203
|
+
|
|
1204
|
+
创建任务的返回结果。
|
|
1205
|
+
|
|
1206
|
+
#### Properties
|
|
1207
|
+
|
|
1208
|
+
• **taskId**: `string` - 任务 ID,后续可以使用这个 ID 更新任务
|
|
1209
|
+
• **token?**: `string` - 远端任务 token,后续使用 token 通过 OpenAPI 更新远端任务
|
|
1210
|
+
• **expiresIn?**: `number` - 任务超时过期时间
|
|
1211
|
+
|
|
1212
|
+
<a id="remotenormalv1detail"></a>
|
|
1213
|
+
### RemoteNormalV1Detail
|
|
1214
|
+
|
|
1215
|
+
remote_normal_v1 模板对应的数据。
|
|
1216
|
+
|
|
1217
|
+
#### Properties
|
|
1218
|
+
|
|
1219
|
+
• **expire_in_sec**: `number` - 任务过期时间,单位:秒。任务创建后经过该时间将自动过期
|
|
1220
|
+
• **display_data**: `TaskDisplayData` - 任务展示数据
|
|
1221
|
+
• **jump_page_data?**: `JumpSchemaData` - 点击任务跳转的页面参数
|
|
1222
|
+
• **remove_data?**: `TaskActionParams` - 移除任务时的操作参数
|
|
1223
|
+
• **progress_data?**: `TaskProgressData` - 任务进度数据
|
|
1224
|
+
|
|
1225
|
+
<a id="tasktemplate"></a>
|
|
1226
|
+
### TaskTemplate
|
|
1227
|
+
|
|
1228
|
+
任务样式模板。 当前仅支持 remote_normal_v1。
|
|
1229
|
+
|
|
1230
|
+
#### Type
|
|
1231
|
+
|
|
1232
|
+
`'remote_normal_v1'`
|
|
1233
|
+
|
|
1234
|
+
<a id="updatemodelcontextparams"></a>
|
|
1235
|
+
### UpdateModelContextParams
|
|
1236
|
+
|
|
1237
|
+
向 Agent 捐赠上下文的请求参数。
|
|
1238
|
+
|
|
1239
|
+
#### Properties
|
|
1240
|
+
|
|
1241
|
+
• **taskId?**: `string` - 上下文所属任务 ID,业务侧定义。为空时客户端会尝试使用 entityId 填充
|
|
1242
|
+
• **entityId?**: `string` - 上下文所属的 entityId,业务侧管理。为空且处于卡片环境时,客户端会尝试使用卡片的 entityId 填充
|
|
1243
|
+
• **content**: `string` - 上下文内容,格式无约束,可以与 MCP 服务下发的上下文格式保持一致
|
|
1244
|
+
|
|
1245
|
+
<a id="updatewidgetparams"></a>
|
|
1246
|
+
### UpdateWidgetParams
|
|
1247
|
+
|
|
1248
|
+
#### Type
|
|
1249
|
+
|
|
1250
|
+
`{
|
|
1251
|
+
/**
|
|
1252
|
+
* 需要更新的 Widget 实例 ID。
|
|
1253
|
+
*
|
|
1254
|
+
* 卡片内可通过 `getWidgetInstanceId()` 获取;页面中需要由路由参数或业务数据传入。
|
|
1255
|
+
*/
|
|
1256
|
+
widgetInstanceId: string;
|
|
1257
|
+
/**
|
|
1258
|
+
* 是否重新创建 Widget 组件;设为 `false` 时仅更新同一 Widget 的数据。
|
|
1259
|
+
* 仅应用插件支持;旧版 Applet Widget 使用 IM 更新,不支持此参数。
|
|
1260
|
+
* @default true
|
|
1261
|
+
*/
|
|
1262
|
+
reloadWidget?: boolean;
|
|
1263
|
+
} & (
|
|
1264
|
+
| {
|
|
1265
|
+
/**
|
|
1266
|
+
* 可选的新 widgetId。传入后会把当前实例切换成另一个已注册的 Widget。
|
|
1267
|
+
* @default -
|
|
1268
|
+
*/
|
|
1269
|
+
widgetId?: string;
|
|
1270
|
+
/** 新的卡片渲染数据,通常传入 `JSON.stringify(viewData)`;不会更新模型上下文。 */
|
|
1271
|
+
widgetData: string;
|
|
1272
|
+
toolResult?: never;
|
|
1273
|
+
}
|
|
1274
|
+
| {
|
|
1275
|
+
/** 保持当前 Widget 时可显式传入相同的 widgetId。 */
|
|
1276
|
+
widgetId?: string;
|
|
1277
|
+
widgetData?: never;
|
|
1278
|
+
/** 符合 Entity 协议的 ToolResult;仅应用插件支持,更新卡片并同步模型上下文。 */
|
|
1279
|
+
toolResult: ToolResult;
|
|
1280
|
+
}
|
|
1281
|
+
)`
|