此速查表涵盖了所有主要脚本概念、客户端 API 方法、处理程序以及其他工具,用于通过 Alan AI 创建多模式对话体验。
pattern
— 用于调用语音/文本命令或播放响应的短语value
— 指定的值params
— 传递的参数action
— 要执行的操作output
— 数据结果[...]
— 可选数据或参数定义一个语音/文本命令以播放响应
intent('pattern'[, 'patternN'], reply('pattern'))
定义一个语音/文本命令以播放响应或执行操作
intent('pattern'[, 'patternN'], p => { action })
定义替代方案
intent('phrase1|phrase2')
定义可选词语和短语
intent('pattern (optional phrase|)')
播放响应(如果存在多个模式,则随机选择一个响应)
reply('pattern'[, 'patternN'])
播放响应
p.play('pattern')
定义助手回复的语音设置:口音 (en, fr, de, it, ru, es)
、性别 (male/female)
、语音类型
、语调
、语速
p.play([voice(code, gender, type, pitch, rate), ]'pattern')
定义播放选项:force:true
(如果按钮未激活则执行),activate:true
(之前激活按钮),deactivate:true
(之后停用按钮)
p.play('pattern'[, opts(options)])
向应用程序发送命令
p.play({command:data})
定义输入中预期的静态值列表
$(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
捕获日期值
$(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
在项目级别定义动态槽位
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
定义动态槽位的标签:参见用户定义的槽位。
为动态槽位启用模糊匹配:参见用户定义的槽位。
使动态槽位可选:参见用户定义的槽位。
捕获多个槽位值:参见用户定义的槽位。
捕获数字和/或字母组合
const reg = "([A-Za-z]{1}\\s?){6}"
$(SLOTNAME* ${reg}) => p.SLOTNAME.value
捕获任何用户输入
$(SLOTNAME* .+) => p.SLOTNAME.value
定义上下文
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')
存储从客户端应用程序传递的静态设备和用户特定数据
authData.data => p.authData.data
存储在项目范围内全局可用的状态数据
project.info = {data:yourData} => project.info.data
存储意图匹配分数
p.score
存储在上下文之间传递的数据
p.state.data
存储通过 setVisualState()
从客户端应用程序传递的可视化上下文数据
p.visual.data
存储在对话会话期间可访问的用户特定状态数据
p.userData.data
定义在脚本保存和对话模型构建时要执行的操作
onCreateProject(() => { action })
定义在对话会话开始时要执行的操作
onCreateUser((p) => { action })
定义在对话会话结束时要执行的操作
onCleanupUser((p) => { action })
定义在设置可视化状态时要执行的操作
onVisualState((p, s) => { action })
定义在客户端应用程序中触发用户事件时要执行的操作:buttonReady
、buttonClicked
、micPermissionPrompt
、micAllowed
、firstActivate
、showPopup
、popupCloseClicked
、recognized
onUserEvent((p, e) => { action })
定义在上下文激活时要执行的操作
onEnter((p) => { action })
定义要索引的资源的 URL
corpus({url: url, depth: depthLevel})
定义助手在对话中使用的文本语料库
corpus('text')
进行 API 调用
axios, request
处理时间
moment-timezone, luxon
处理数组、数字、对象、字符串等
lodash
提供提示列表以帮助识别特定术语
recognitionHints('hint'[, 'hintN'])
将信息消息写入 Alan Studio 日志
console.log(data)
将错误消息写入 Alan Studio 日志
console.error(data)
从客户端应用程序向对话脚本发送有关可视化状态的信息
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)
以编程方式激活 Alan 按钮
activate()
以编程方式停用 Alan 按钮
deactivate()
检查 Alan 按钮状态
isActive()
从父元素、页面中移除 Alan 按钮(在 Web、Ionic 上受支持)
remove()
检查唤醒词的状态(在 iOS、Android 上受支持)
getWakewordEnabled()
设置唤醒词的状态(在 iOS、Android 上受支持)
setWakewordEnabled(enabled:boolean)
// 示例针对 Web 平台提供
处理从对话脚本发送到客户端应用程序的命令
onCommand: function (commandData) { action }
处理 Alan 按钮状态更改
onButtonState: function (e) { action }
处理与 Alan Cloud 中虚拟助手项目的连接状态
onConnectionStatus: function (e) { action }
处理从 Alan 收到的事件
onEvent: function (e) { action }