配置模式文件内的内容如何转化为脚本可视化内容显示在手机上
配置模式中的参数界面我已经设置好了,但是运行后并没有在手机前端看到可以设置内容的UI界面,是我代码中没有调用这个配置文件么
回答
在 Hamibot 中,你可以通过配置模式使用 JSON 构建一个表单界面,使脚本支持用户输入和调整参数。这些配置会显示为可视化内容(如文本框、选择器等),并在运行脚本时可以动态获取其值。
配置示例
以下是一个基本的 JSON 配置示例,定义了一个文本输入框:
[
{
"label": "输入消息",
"name": "msg",
"placeholder": "请输入内容",
"help": "这是帮助说明",
"type": "text",
"validation": "required"
}
]
在脚本中获取配置
保存该配置文件后,可以通过 hamibot.env
获取用户输入的内容:
// 文档地址 https://docs.hamibot.com/
const { msg } = hamibot.env;
toastLog("你输入的消息是: " + msg);
支持的表单类型
Hamibot 支持多种表单类型,例如:
- 文本输入 (
type: "text"
) - 多行文本 (
type: "textarea"
) - 下拉选择 (
type: "select"
) - 单选 (
type: "radio"
) - 复选框 (
type: "checkbox"
) - 滑块 (
type: "slider"
)
示例:单选选项
JSON 配置如下:
[
{
"label": "选择颜色",
"name": "color",
"type": "radio",
"options": [
{ "label": "红色", "value": "red" },
{ "label": "蓝色", "value": "blue" },
{ "label": "绿色", "value": "green" }
],
"default": "red"
}
]
脚本中获取选择的值:
// 文档地址 https://docs.hamibot.com/
const { color } = hamibot.env;
toastLog("你选择的颜色是: " + color);
表单验证与默认值
- 验证规则:通过
validation
字段设置必填项或其他规则。 - 默认值:可通过
default
设置字段默认值,减少手动输入。
效果展示
当配置完成并运行脚本时,Hamibot 会自动将这些配置转化为手机上的可视化界面,用户可以直接输入或选择参数,脚本则根据用户的输入进行逻辑处理。
如果你需要更复杂的配置,请参考 Hamibot 官方文档。
补充回答 1
出现这种情况,通常是因为没有正确启用配置模式或未引用配置参数。
请检查以下几点:
✅ 1. 是否在脚本顶部声明了 "ui"
模式
带有 UI 的脚本必须在第一行加上:
"ui";
否则界面不会显示。
示例:
"ui"; // 必须放在首行
ui.layout(
<vertical padding="16">
<text text="这是一个可视化界面" />
<input id="msgInput" hint="请输入内容" />
<button text="提交" onClick={() => {
toast("你输入的是:" + ui.msgInput.text());
}} />
</vertical>
);
✅ 2. 是否使用了 ui.layout()
加载布局
如果没有调用 ui.layout()
函数,Hamibot 不会渲染任何 UI 内容。
✅ 3. 配置模式和 UI 模式是两个不同的功能
- 配置模式:用于定义 JSON 表单参数,运行时会展示一个表单让用户填写。
- UI 模式(
"ui"
):用于构建自定义的、可视化的用户界面。
如果你只是想让用户填写参数,不需要自己设计复杂 UI,应使用配置模式。
如果你希望自定义界面,则使用 "ui"
声明并编写 XML 布局。
✅ 4. 如果使用的是配置模式,请确认是否启用了“启用脚本配置”
打开 Hamibot 控制台 → 编辑脚本 → 点击【脚本配置】→ 勾选 启用脚本配置。
如下图结构所示:
[
{
"label": "消息内容",
"name": "message",
"type": "text",
"placeholder": "请输入内容"
}
]
然后在脚本中通过 hamibot.env.message
获取值:
toastLog("你输入的内容是:" + hamibot.env.message);
总结建议
问题 | 解决方法 |
---|---|
没有看到设置界面 | 确保勾选了“启用脚本配置” |
脚本里没显示 UI | 确保加了 "ui" 声明,并使用了 ui.layout() |
配置不生效 | 检查变量名是否一致,如 hamibot.env.xxx |
不清楚配置与 UI 模式的区别 | 如果只是需要参数输入推荐用配置模式;如果要自定义界面则用 UI 模式 |
如果你希望同时使用配置参数和自定义 UI,也可以将两者结合使用,比如在配置中定义默认值,在 UI 中读取这些值并展示。
如有更具体代码可提供,我可以帮你进一步排查问题。