Day 8 - [Zenbo开发系列] 05-DDE回覆规则设计

这篇会写如何设计 DDE 语料库,还有 DDE 设计的逻辑。
终於来到第五篇,这次截图比较多,主要是我如何设定,直接看图比文字说明清楚。

在 ASUS 平台注册 APP

有完成这个步骤才能呼叫「嘿,Zenbo,我要用 App name

首先需要先建立一个 Android 专案,要特别注意 Package name 等下会用到,所以请尽量取个不会跟别人重复的。

习惯上 Package name 会用公司会学校或学校的 domian 相反过来。
例如: google.com -> com.google

再来你还需要一个 ASUS 帐号,就可以在 Console 注册自己的 APP。
依序输入打 * 号的几个栏位,送出後可以看到生成好的 App ID 和 App Key。APP ID 会在设定 DDE 专案的地方用到。

console_config

建立 DDE 专案

从这边 DDE Editor 建立一个新的 Project。

设定专案资讯

点选画面上方的 info 设定
info
project_info

  • DDE Domain ID: 如果是第一次使用,需要先注册 (Register) 一个 DDE Domain ID,创建好点选 All 可以看到你所有的 DDE Domain 和相应的 UUID。UUID 之後在 Zenbo 端会用到。这个栏位是下拉式选单,记得选择刚注册的 Domain 哦。
  • Developer App ID: 要选择前面注册好 Package name 的那组,下面的三个栏位会自动跟着填满。
    • 确定 Developer App ID(App ID)、Package Name(Package Name)、Brand(Brand Name)、App Name(App Name) 和上一步骤一样
  • Launch Activity: 填写你 APP 首页 Activity 完整的 package 路径。
  • 剩下都预设就好~

设计 DDE 规则

各个 Basic Contexts 的说明可以看我的上一篇文章 [Zenbo开发系列] 04-DDE简介

流程

因为我做的是一个 Q&A 的聊天机器人,我希望使用使用者可以一直问完一题再问下一题,但是 Zenbo 一般问题流程会比较像树状结构,一条路走到底就结束了,没办法接下一题。

所以我後来借用 Plans 的 Input/Output Contexts 参数达到可以一题接一题的效果。流程大致如下图。

flow

Concepts

把同样概念的词,做成一个个 Concepts,我截几个作范例。

concepts1
concepts2

  • Concept ID: 这个 Concepts 的名称,可以用中文。
  • Instances: 先不用建,等下在 Concept 有用到的时候再加就好。

Intents

举出一个「意图」所有可能的说法。例如说,我今天想申请长照,就可以有很多种说法,「我要申请长照」、「申请长照」、「我想申请长照」、「如何申请长照」、「申请长照的流程」,尽可能把各种你想得到、想不到的讲法都写上去。

官方文件:
人们可能使用不同句子来表达自己的意图,因此开发人员有责任枚举所有可能的句子。

Intents1
Intents2

图中可以看到词分种 3 种颜色,蓝色、橘色、浅橘,代表不同的用意

  • 蓝色
    一定要出现的常数,而且一定要相同。像 applyLTC 的第一个例句中"我",如果输入的句子中是"你",就比对不到,一定要是"我"。
    可以在这里建立新的 Concept,或是加入一个原有的 Concept
    Intents3
    Intents4

  • 橘色
    和 Concept 绑定的词。

  • 浅橘
    和橘色一样,但是 optional 的,代表输入的句子中可以有也可以没有这个词。
    Intents5

Plans

介绍几个会用到的栏位:

  • Input Context/Output Contexts: 举例,如果这个 Plan 的 Input Context 是 "A",那他会接在其他 Output Context 是 "A" 的 Plan 後面
  • Events: 是指要绑定哪个 Intent
  • Actions
    • Condition: 可以设定一些条件,例如: 早上/晚上要说什麽? 晴天/雨天要说什麽?
    • Task Type: Zenbo 要回应什麽内容。如果有多个 Task Type,会照顺序念,而不是随机挑一个念哦!
      • 第二个栏位可以选择 TextReference。Text 直接写要回覆的内容。Reference 可对应到 TTS ID。

首先,预设的这个 Plan ThisPlanLaunchingThisApp,在 Output Context 的地方填 needAnyHelp,再让其他每一个 Plan 的 Input/Output Context 也都填 needAnyHelp,对话可以就能像这个流程图一样,一直回圈。

input_output_contexts

圆角方形:

Intent ID/Plan ID
  Intent 句子 

Plans1
Plans2

Graph

DDE Editor 提供了方便的视觉化工具,可以查看 Plan 之间的关联。

plan_graph

TTS

若有会重复使用的句子,可以写到 TTS 重复利用哦。我只有一个 TTS,给大家参考。

TTS

发布 DDE

先 Publish 再 Deploy To Download Server,Zenbo 端才能下载。之後 DDE 还有修改的话,记得要再 Publish 和 Deploy 一次唷。

publish

Tests

基本上,上面的步骤做完就设定好了,接下来测试一下吧!
右侧的 Tests 区,可以测试刚刚设计的流程。要开始这个对话流程,需要使用 UtteranceToLanuchApp Intent 的句子。

所以要先用「我要用静宜大学长照机器人」,下一句才能用「我要申请长照」。
选 All domains 或 Specified domains 都可以。

Test1
Test2



<<:  Kotlin Android 第17天,从 0 到 ML - MVVM架构 - LiveData

>>:  Flutter体验 Day 14-容器组件

WUSON的CISSP学习资源

Effective CISSP LINE公开群组 [http://line.me/ti/g/vqK...

Day 22 活泼是为了不让人倦怠

一个人应该:活泼而守纪律,天真而不幼稚,勇敢而不鲁莽,倔强而有原则,热情而不冲动,乐观而不盲目。 《...

DAY18 MongoDB Replication 实战

DAY18 MongoDB Replication 实战 本篇我们要使用 Dcoker compos...

自动化测试,让你上班拥有一杯咖啡的时间 | Day 14 - 取得 ESLint 支援

此系列文章会同步发文到个人部落格,有兴趣的读者可以前往观看喔。 今天要跟大家分享在 cypress...

非本科、半路转职的「软件科技职涯发展笔记」

from Unsplash 写了三十天的技术文章,最後一篇想谈谈「职涯发展」,毕竟这才是非本科转职...