Alan AI 对话助手

精选 Alan AI 常用指令与核心速查备忘单,涵盖高频用法、配置参数与实用技巧。 本备忘单涵盖所有核心脚本概念、客户端 API 方法、句柄与工具,助您使用 Alan AI 构建多模态对话体验。

#示例图例 (Legend)

  • pattern — 触发语音/文本命令或播放响应的模式短语
  • value — 指定的数值/文本值
  • params — 传递的参数
  • action — 执行的操作
  • output — 数据输出结果
  • [...] — 可选的数据或参数

#对话脚本 (Dialog Script)

#意图与模式 (Intents & Patterns)

定义语音/文本命令以播放响应

intent('pattern'[, 'patternN'], reply('pattern'))

定义语音/文本命令以播放响应或执行操作

intent('pattern'[, 'patternN'], p => { action })

定义替代模式 (Alternatives)

intent('phrase1|phrase2')

定义可选词汇与短语

intent('pattern (可选 phrase|)')

#响应函数 (Response Functions)

播放响应(多条模式时随机选取一条响应)

reply('pattern'[, 'patternN'])

播放响应

p.play('pattern')

为助手回复定义语音设置:口音 (en, fr, de, it, ru, es)性别 (male/female)语音类型语调 pitch语速 rate

p.play([voice(code, gender, type, pitch, rate), ]'pattern')

定义播放选项:强制执行:true(按钮未激活时依然执行),activate:true(提前激活按钮), deactivate:true(事后停用按钮)

p.play('pattern'[, opts(options)])

向应用发送命令

p.play({command:data})

#用户自定义槽位 (User-defined Slots)

定义输入中预期的静态值列表

$(SLOTNAME value1|value2) => p.SLOTNAME.value

提供标签分类或识别槽位值

$(SLOTNAME value1~label1|value2~label2) => p.SLOTNAME.label

启用模糊匹配以捕获相似变体

$(SLOTNAME~ value1|value2) => p.SLOTNAME.value

设置槽位为可选

$(SLOTNAME value1|value2|)

捕获多个槽位值

intent('$(SLOTNAME value1|value2) and $(SLOTNAME value1|value2 )') => p.SLOTNAME_ (array), p.SLOTNAME_[0].value, p.SLOTNAME_[1].value

#内置预定义槽位 (Predefined Slots)

捕获日期数值

$(DATE) => p.DATE.value, p.DATE.moment, p.DATE.luxon

捕获时间数值

$(TIME) => p.TIME.value, p.TIME.moment

捕获基数词/数字

$(NUMBER) => p.NUMBER.value, p.NUMBER.number

捕获序数词

$(ORDINAL) => p.ORDINAL.value, p.ORDINAL.number

捕获地理位置

$(LOC) => p.LOC.value

捕获人名

$(NAME) => p.NAME.value

#动态槽位 (Dynamic Slots)

在项目全局作用域定义动态槽位

project.name = {en: "value1|value2|value3"}
$(SLOTNAME p:name) => p.SLOTNAME.value

在对话会话层级定义动态槽位

p.userData.name = {en: "value1|value2|value3"}
$(SLOTNAME u:name) => p.SLOTNAME.value

配合视觉状态获取动态槽位数据

let name = ["value1|value2|value3"]
p.visual.data = {en: name};
$(SLOTNAME v:name) => p.SLOTNAME.value

简写形式定义动态槽位

project.name = {en: "value1|value2|value3"}
$(p:name) => p.SLOTNAME.value

为动态槽位定义标签:参阅 用户自定义槽位

为动态槽位启用模糊匹配:参阅 用户自定义槽位

将动态槽位设为可选:参阅 用户自定义槽位

捕获多个槽位值:参阅 用户自定义槽位

#正则表达式槽位 (RegEx Slots)

捕获数字与/或字母组合

const reg = "([A-Za-z]{1}\\s?){6}"
$(SLOTNAME* ${reg}) => p.SLOTNAME.value

捕获任何用户输入文本

$(SLOTNAME* .+) => p.SLOTNAME.value

#上下文管理 (Contexts)

定义上下文

let contextName = context(() => { action })

激活上下文

intent('pattern', p => {..., p.then(contextName)}

向上下文传递数据

p.then(contextName, state: {data:yourData}) => p.state.data

解析完成上下文

p.resolve([data:yourData])

重置上下文

p.resetContext()

定义随时匹配且无需切换当前上下文的意图

intent(noctx, 'pattern', ...) or noContext(() => {intent(...)})

播放预期输入的提示语

fallback('pattern1'[, 'patternN'])

给上下文命名标题

title('contextName')

#预定义对象 (Predefined Objects)

存储从客户端应用传递的静态设备与用户特定数据

authData.data => p.authData.data

存储项目作用域内全局可用的状态数据

project.info = {data:yourData} => project.info.data

存储意图匹配得分

p.score

存储上下文之间传递的数据

p.state.data

存储通过 setVisualState() 从客户端应用传递的视觉上下文数据

p.visual.data

存储对话会话期间可访问的用户特定状态数据

p.userData.data

#预定义回调函数 (Predefined Callbacks)

定义当脚本保存且对话模型构建完成时执行的操作

onCreateProject(() => { action })

定义当对话会话启动时执行的操作

onCreateUser((p) => { action })

定义当对话会话结束时执行的操作

onCleanupUser((p) => { action })

定义当设置视觉状态时执行的操作

onVisualState((p, s) => { action })

定义当客户端应用触发用户事件时执行的操作:buttonReadybuttonClickedmicPermissionPromptmicAllowedfirstActivateshowPopuppopupCloseClickedrecognized

onUserEvent((p, e) => { action })

定义当激活上下文时执行的操作

onEnter((p) => { action })

#Q&A 问答服务 (Q&A Service)

定义要建立索引的资源 URL

corpus({url: url, depth: depthLevel})

定义助手在对话中使用的文本语料库

corpus('text')

#内置 JS 库 (Built-in JS Libraries)

发起 API 请求

axios, request

处理时间与时区

moment-timezone, luxon

处理数组、数字、对象与字符串等

lodash

#杂项与日志 (Other)

提供提示词列表以帮助识别特定术语

recognitionHints('hint'[, 'hintN'])

向 Alan Studio 日志中写入信息日志

console.log(data)

向 Alan Studio 日志中写入错误日志

console.error(data)

#客户端 SDK (Client SDK)

#客户端 API 方法 (Client API Methods)

从客户端应用向对话脚本发送关于视觉状态的信息

setVisualState(visualStateData:object)

无需语音/文本命令即可发送数据或执行操作

projectAPI.method = function(p, param, callback) {
  p.userData.data = param.data;
  callback();
};

callProjectApi(method:string, data:object, callback:function)

在客户端应用中播放文本消息

playText(text:string)

作为用户输入向 Alan 发送文本消息

sendText(text:string)

在客户端应用中执行命令

playCommand(command:object)

#客户端 API 方法(续)

以编程方式激活 Alan 按钮

activate()

以编程方式停用 Alan 按钮

deactivate()

检查 Alan 按钮的状态

isActive()

从父元素/页面中移除 Alan 按钮(Web、Ionic 支持)

remove()

检查唤醒词状态(iOS、Android 支持)

getWakewordEnabled()

设置唤醒词状态(iOS、Android 支持)

setWakewordEnabled(enabled:boolean)

#事件句柄 (Handlers)

// 以下以 Web 平台示例为例

处理从对话脚本发送至客户端应用的命令

onCommand: function (commandData) { action }

处理 Alan 按钮状态变更

onButtonState: function (e) { action }

处理与 Alan 云端虚拟助手项目的连接状态

onConnectionStatus: function (e) { action }

处理从 Alan 接收到的事件

onEvent: function (e) { action }