Skip to content

Java/Kotlin/适用于各种聊天机器人的多层级问答对话式菜单模块

Notifications You must be signed in to change notification settings

leishui/ChatBotMenu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

多层级问答对话式菜单模块

简介

适用于聊天机器人、短信机器人、客服机器人等场景的非即时问答对话场景,通过自定义菜单层级及跳转关系实现指令式交互。

基本效果展示

不同层级跳转与指令解析,其中0为返回上一层,00为返回主菜单

此版本除主菜单以外最多支持9个层级,每层可设置至多99个选项,只支持一个主菜单

1

示例代码(Java)

4

层级设置

使用一个long类型数字代表层级,每个菜单对应一个层级,不同层级菜单通过数值运算进行跳转操作,更多有关菜单的跳转请参照源码

其中0号菜单代表主菜单,每两个数字代表一层

例如:

【注】这里使用01做演示,实际使用省略前面的0

主菜单--->第一层:

  • 主菜单第一项跳转为01号菜单
  • 主菜单第55项跳转为55号菜单

第一层--->第二层:

  • 01号菜单继续向后跳转到01号菜单中的第23项,结果为0123号菜单
  • 55号菜单继续向后跳转到55号菜单中的第77项,结果为5577号菜单

以此类推: 且最多支持9个层级,每层可设置1~99个选项

1

各菜单之间呈现树状结构,若将每个节点放置2个子节点,就得到一个二叉树结构,若每个节点放满99个子节点,则是一个99叉树

原理简介

  1. Java中的long类型
基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808
最大值:Long.MAX_VALUE=9223372036854775807

取其中0~999999999999999999范围的数(不包括能被10整除的数,即0除外不以0结尾)

3

每两个数字为一组分成9组,即前面讲到的9层,每个数标志着一个菜单位置

  1. 层级跳转

2

如图所示通过基础运算进行层级跳转,若要跳到102号菜单中的第13个,通过(102 X 100) + 13计算得到10213号菜单,若要再返回上一层,简单通过10213 / 100可得。

  1. 更多实现参照源码

About

Java/Kotlin/适用于各种聊天机器人的多层级问答对话式菜单模块

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published