Template Bridge API

Template Bridge API 用于模板函数注册、函数调用、事件发送和事件监听。默认连接本机 Bridge:ws://127.0.0.1:5176

导出 API

API 说明
useTemplateBridge() 获取默认 Bridge 实例。
registerTemplateFunction(name, handler, definition?) 注册当前模板可被外部调用的函数。
unregisterTemplateFunction(name) 注销已注册函数。
invokeTemplateFunction(target, functionName, args?, options?) 调用本地、绑定规则或其他设备上的模板函数。
emitTemplateEvent(channel, payload?, target?) 兼容旧事件总线,发送模板事件。
onTemplateEvent(channel, handler) 监听模板事件。

注册函数

import { registerTemplateFunction } from 'auto-exhibition-template-sdk'

const stop = registerTemplateFunction('playVideo', async (args, context) => {
  console.log(context.messageId, args)
  return { ok: true }
}, {
  label: '播放视频',
  direction: 'inout'
})

// 组件卸载或页面释放时可注销
stop()

调用函数

import { invokeTemplateFunction } from 'auto-exhibition-template-sdk'

const result = await invokeTemplateFunction(
  { mode: 'binding', sourceFunction: 'playVideo' },
  'playVideo',
  { id: 'intro', seekTo: 0 },
  { timeoutMs: 3000 }
)

target.mode

mode 用途
local 同一设备内的模板页之间调用,用于本地调试或多模板页面。
binding 交给网关按后台配置的函数绑定规则展开目标。
unicast 直接调用指定 clientId 的设备模板。
multicast 调用一组设备。
broadcast 广播给所有在线设备。

事件兼容

旧模板仍可继续使用事件模型;新项目建议函数调用用于明确动作,事件用于松散通知。

const off = onTemplateEvent('scene:switch', event => {
  console.log(event.payload)
})

emitTemplateEvent('scene:switch', { scene: 'intro' }, { mode: 'broadcast' })
注意: configJson.functions 只是能力声明,真正可执行的 handler 必须在运行时通过 registerTemplateFunction 注册。