对话内容的定义
源码文件不多几个文件夹挨个翻一下就找到了在assets/dialog.json
里面定义了全部的对话内容。
比如:
{
"id": "0000",
"details": [
["很高兴遇见你"]
],
"responses": [{
"content": "我也是!",
"nextXianzhe": ["0003"]
}, {
"content": "我很怀疑这点……",
"nextXianzhe": ["0001"]
}, {
"content": "真的吗?",
"nextXianzhe": ["0002"]
}],
"nextUser": ["1000"]
}, {
"id": "0001",
"details": [
["……", "好吧"]
],
"nextXianzhe": ["0003"]
}, {
"id": "0002",
"details": [
["我随便说说的,别在意"]
],
"nextXianzhe": ["0003"]
}
分析一下数据结构
根节点下面分两个子节点
fromXianzhe (由机器人先发话的消息组)
这个节点下面是一组消息包数据。以id字段区分。- id:消息组编号
- details:机器人说话的内容(显示完等待访客从response里面挑选一个回复)
response:(此属性省略的话表示暂停对话,等待访客选择一个话题先发话)
可选回复内容1:
- 回复内容、接下来跳转到哪个消息id
可选回复内容2
- ... 同上
fromUser(由访客发话的话题组)
- id:话题编号
- brief:话题名
- details:一个消息内容的数组。每次从里面随机挑选一条显示。
- nextXianzhe:访客发言完了以后跳转到哪个消息id(也就是机器人回复的内容)
没了。
数据结构就这么简单。
知道这些你就可以自己仿照现成的数据修改成自己想要的对话内容了。
试着修改一下。
{
"id": "0000",
"details": [
["很高兴遇见你"]
],
"responses": [{
"content": "我也是!",
"nextXianzhe": ["0003"]
}, {
"content": "我高兴不起来。。。",
"nextXianzhe": ["0001"]
}, {
"content": "真的吗?",
"nextXianzhe": ["0002"]
}],
"nextUser": ["1000"]
}, {
"id": "0001",
"details": [
["为啥", "谁踩你尾巴了?"]
],
"nextXianzhe": ["0003"]
}
效果
残课题
手动改是没有问题,但要很细心,要很小心处理id的跳转。一不小心就跳错了。我想原作者应该是用了某种工具或者机制来自动生成这些对话的内容和回复规则吧。
本节就先到这里了。
系列文章
- 开源代码分析学习 - 有趣的聊天机器人 - 01 - 这么好玩?
- 开源代码分析学习 - 有趣的聊天机器人 - 02 - 对话内容的定义【当前文章】
- 开源代码分析学习 - 有趣的聊天机器人 - 03 - 访客输入区域弹出/收起的动态效果
2 comments
厉害厉害
谢谢 :)