涉及场景的结构
1.业务背景
开发了一个App,用户可以和App对话:
用户:我要买手机 App:荣耀V9 4G手机 双卡双待 铂光金 全网通(4GB RAM+64GB ROM) 标配 仅售2888,购买还是换一个? 用户:换一个 App:Apple iphone19 plus 128G 贵族金 移动联通电信 仅售6888元,购买还是换一个? 用户:这个好,来一个 App:已下单。还有其他事吗? 用户:我要退货 App:已找到两个订单,手机iphone19 plus和图书上下五千年,选择哪一个呢? 用户:手机 App:为啥退货啊 用户:太你妹贵了 App:已退货,还有其他事吗? 用户:好无聊 App:逛逛我们的电商,里面有很多你想不到的 ... ...
2.时序图

3.分析
2.1分解:
场景(Scene)和事件(Event)。
2.2定义:
这里有两个场景:购物和退货,每个场景里面有N个事件,定义如下:
scene_shopping={evnt_buy, evnt_next, evnt_submit, evnt_invalid}
scene_retreat={evnt_retreat, evnt_chose, evnt_reason, evnt_invalid}
2.3代码结构
2.3.1服务service层
/** * 购物服务 */ interface ShoppingService { // 查询商品 void searchProd(); // 提交 void submit(); } /** * 退货服务 */ interface RetreatService { // 查询订单 void searchOrder(); // 提交 void submit(); }
2.3.2NLU层
/** * 分析服务<br> */ interface AnalysisService { /* * 分析,返回场景和事件;<br> * 需要存储场景信息,分析信息。<br> */ void analyse(); }
2.3.3Controller层
/** * 理解控制器 */ interface UnderstandController { /* * 处理输入;<br> * 根据NLU返回的信息,自己判断调用哪个服务service,也就是把场景的事件和服务service的方法对应起来;<br> * 拿到服务service数据也需要存储起来。<br> */ void handle(String txt); }
2.3.4DB/Redis层
存储或缓存用户在App交流过程的中信息。

浙公网安备 33010602011771号