diff --git a/rasa/domain.yml b/rasa/domain.yml deleted file mode 100644 index a7dc3a5f..00000000 --- a/rasa/domain.yml +++ /dev/null @@ -1,152 +0,0 @@ -version: "3.1" - -intents: - - ask_wen_zhong_da_sheng_huo_shi_jian_1717735465479581698 - - ask_wen_chu_xian_jian_ge_1717735465047568386 - - ask_wen_fa_zuo_pin_lv_1717735465211146241 - - ask_wen_dui_ri_chang_ying_xiang_1717735465357946881 - - ask_wen_fu_yao_shi_1717735465630576641 - - ask_wen_chou_yan_shi_1717735465680908289 - - ask_wen_ri_chang_bian_hua_1717735465387307010 - - ask_wen_bing_shi_1717735465420861442 - - ask_wen_fa_bing_zhi_qian_de_dong_zuo_1717735465529913345 - - ask_wen_zheng_zhuang_miao_shu_1717735465076928513 - - ask_wen_jia_zu_shi_1717735465328586753 - - ask_wen_chu_xian_duo_jiu_1717735464976265217 - - ask_wen_jian_qing_huo_jia_zhong_qing_kuang_1717735465014013954 - - ask_wen_fu_yao_shi_1717735465735434241 - - ask_wen_guo_min_shi_1717735465710268417 - - ask_wen_jiu_zhen_shi_1717735465299226626 - - ask_wen_qi_ta_zheng_zhuang_1717735465173397505 - - ask_wen_bu_shu_fu_1717735464913350658 - - ask_wen_lei_si_qing_kuang_1717735465240506370 - - ask_wen_ti_li_1717735465605410818 - - ask_wen_zheng_zhuang_gai_bian_qing_kuang_1717735465269866497 - - ask_wen_fu_xie_1717735465580244993 - - ask_wen_zi_wo_gan_jue_1717735465504747522 - - ask_wen_shou_shang_shi_1717735465450221569 - - ask_wen_zheng_zhuang_yan_zhong_cheng_du_1717735465135648770 - - ask_wen_diao_tou_fa_1717735465555079170 - - ask_wen_yin_jiu_shi_1717735465655742466 - -responses: - utter_ask_wen_zhong_da_sheng_huo_shi_jian_1717735465479581698: - - text: "没有" - utter_ask_wen_chu_xian_jian_ge_1717735465047568386: - - text: "基本上天天出现。" - utter_ask_wen_fa_zuo_pin_lv_1717735465211146241: - - text: "反复发作,基本上天天出现," - utter_ask_wen_dui_ri_chang_ying_xiang_1717735465357946881: - - text: "影响到我的工作和生活了。" - utter_ask_wen_fu_yao_shi_1717735465630576641: - - text: "没有" - utter_ask_wen_chou_yan_shi_1717735465680908289: - - text: "没有" - utter_ask_wen_ri_chang_bian_hua_1717735465387307010: - - text: "没有注意到。" - utter_ask_wen_bing_shi_1717735465420861442: - - text: "没有" - utter_ask_wen_fa_bing_zhi_qian_de_dong_zuo_1717735465529913345: - - text: "没有" - utter_ask_wen_zheng_zhuang_miao_shu_1717735465076928513: - - text: "感觉心跳特别快,喘不上气,活动后更严重。" - utter_ask_wen_jia_zu_shi_1717735465328586753: - - text: "没有" - utter_ask_wen_chu_xian_duo_jiu_1717735464976265217: - - text: "最近半年吧" - utter_ask_wen_jian_qing_huo_jia_zhong_qing_kuang_1717735465014013954: - - text: "活动后会加重,双腿还会没劲。" - utter_ask_wen_fu_yao_shi_1717735465735434241: - - text: "之前身体很好,没吃过什么药。" - utter_ask_wen_guo_min_shi_1717735465710268417: - - text: "没有" - utter_ask_wen_jiu_zhen_shi_1717735465299226626: - - text: "没有" - utter_ask_wen_qi_ta_zheng_zhuang_1717735465173397505: - - text: "觉得手抖、怕热,容易出汗,胃口很好,吃很多还总觉得饿,紧张,特别容易发脾气,还拉肚子,瘦了一些" - utter_ask_wen_bu_shu_fu_1717735464913350658: - - text: "我最近感觉心跳特别快,喘不上气。" - utter_ask_wen_lei_si_qing_kuang_1717735465240506370: - - text: "之前没有。" - utter_ask_wen_ti_li_1717735465605410818: - - text: "体力好像比之前差了一些,最近这些天我经常喘不过气来,并且活动后感觉双腿乏力,感觉到非常虚弱。" - utter_ask_wen_zheng_zhuang_gai_bian_qing_kuang_1717735465269866497: - - text: "夏天很怕热,晚上也会睡不着。" - utter_ask_wen_fu_xie_1717735465580244993: - - text: "是的,我每天大约3次稀便。" - utter_ask_wen_zi_wo_gan_jue_1717735465504747522: - - text: "我不知道" - utter_ask_wen_shou_shang_shi_1717735465450221569: - - text: "没有" - utter_ask_wen_zheng_zhuang_yan_zhong_cheng_du_1717735465135648770: - - text: "比较严重。" - utter_ask_wen_diao_tou_fa_1717735465555079170: - - text: "似乎是比之前掉的多了。" - utter_ask_wen_yin_jiu_shi_1717735465655742466: - - text: "没有" - utter_tool_height: - - text: "---tool---7" - utter_tool_blood_pressure: - - text: "---tool---2" - utter_tool_heart_rate: - - text: "---tool---9" - utter_tool_thermometer: - - text: "---tool---6" - utter_tool_weight: - - text: "---tool---8" - utter_ancillary_eye_ct: - - text: "---ancillary---10" - utter_ancillary_blood_a-g: - - text: "---ancillary---3" - utter_ancillary_jia_zhuang_xian_chao_sheng: - - text: "---ancillary---9" - utter_ancillary_xi_dian_lv: - - text: "---ancillary---4" - utter_ancillary_blood_h-z: - - text: "---ancillary---1" - utter_ancillary_xin_dian_tu: - - text: "---ancillary---2" - -actions: - - utter_ask_wen_zhong_da_sheng_huo_shi_jian_1717735465479581698 - - utter_ask_wen_chu_xian_jian_ge_1717735465047568386 - - utter_ask_wen_fa_zuo_pin_lv_1717735465211146241 - - utter_ask_wen_dui_ri_chang_ying_xiang_1717735465357946881 - - utter_ask_wen_fu_yao_shi_1717735465630576641 - - utter_ask_wen_chou_yan_shi_1717735465680908289 - - utter_ask_wen_ri_chang_bian_hua_1717735465387307010 - - utter_ask_wen_bing_shi_1717735465420861442 - - utter_ask_wen_fa_bing_zhi_qian_de_dong_zuo_1717735465529913345 - - utter_ask_wen_zheng_zhuang_miao_shu_1717735465076928513 - - utter_ask_wen_jia_zu_shi_1717735465328586753 - - utter_ask_wen_chu_xian_duo_jiu_1717735464976265217 - - utter_ask_wen_jian_qing_huo_jia_zhong_qing_kuang_1717735465014013954 - - utter_ask_wen_fu_yao_shi_1717735465735434241 - - utter_ask_wen_guo_min_shi_1717735465710268417 - - utter_ask_wen_jiu_zhen_shi_1717735465299226626 - - utter_ask_wen_qi_ta_zheng_zhuang_1717735465173397505 - - utter_ask_wen_bu_shu_fu_1717735464913350658 - - utter_ask_wen_lei_si_qing_kuang_1717735465240506370 - - utter_ask_wen_ti_li_1717735465605410818 - - utter_ask_wen_zheng_zhuang_gai_bian_qing_kuang_1717735465269866497 - - utter_ask_wen_fu_xie_1717735465580244993 - - utter_ask_wen_zi_wo_gan_jue_1717735465504747522 - - utter_ask_wen_shou_shang_shi_1717735465450221569 - - utter_ask_wen_zheng_zhuang_yan_zhong_cheng_du_1717735465135648770 - - utter_ask_wen_diao_tou_fa_1717735465555079170 - - utter_ask_wen_yin_jiu_shi_1717735465655742466 - - utter_tool_height - - utter_tool_blood_pressure - - utter_tool_heart_rate - - utter_tool_thermometer - - utter_tool_weight - - utter_ancillary_eye_ct - - utter_ancillary_blood_a-g - - utter_ancillary_jia_zhuang_xian_chao_sheng - - utter_ancillary_xi_dian_lv - - utter_ancillary_blood_h-z - - utter_ancillary_xin_dian_tu - -session_config: - session_expiration_time: 60 - carry_over_slots_to_new_session: true diff --git a/rasa/nlu.yml b/rasa/nlu.yml deleted file mode 100644 index e17cc18a..00000000 --- a/rasa/nlu.yml +++ /dev/null @@ -1,864 +0,0 @@ -version: "3.1" - -nlu: - - intent: ask_wen_bu_shu_fu_1717735464913350658 - examples: | - - 今天您有什么不舒服?哪里不舒服? - - 今天您感到不适吗? - - 您是否有不舒服的感觉? - - 您今天身体感觉怎么样? - - 今天您是否觉得不对劲? - - 您今天感到不自在吗? - - 您是否体验到身体上的不适? - - 您今天是否感到不适之情? - - 您有没有身体不适的情况? - - 您今天是否有不适感? - - 您今天是否身体不适? - - 您今天是否有不舒服的感觉? - - 今天您有没有身体不适的症状? - - 您今天是否体验到不适之处? - - 您今天是否感到不适或不舒服? - - 今天您是否体验到身体的不适? - - 您今天是否有身体上的不适感? - - 您是否在今天感受到身体不适? - - 您今天是否体验到身体不适的情况? - - 您今天是否感到不自在或不舒适? - - 您今天是否感到身体的不 - - intent: ask_wen_chu_xian_duo_jiu_1717735464976265217 - examples: | - - 您第一次发现这个问题是在什么时候?它是从什么时候开始的? - - 当您首次察觉到这一问题是在什么日期? - - 您是何时开始意识到这个问题的存在? - - 您是在什么时间点首次察觉到这个问题? - - 您是何时首次觉察到这个问题的存在? - - 这个问题是在什么日期首次引起您的关注? - - 您是在什么时间首次察觉到这个问题的存在? - - 您是何时开始感知到这个问题的存在? - - 这个问题是在什么日期首次显现在您的视野中? - - 您是在什么时间点开始注意到这个问题? - - 这个问题何时首次引起您的注意? - - 您是在什么日期首次注意到这个问题? - - 这个问题是在什么时间点开始变得明显? - - 您是何时首次觉察到这个问题? - - 您是在什么日期开始感知到这个问题的存在? - - 这个问题何时首次显现在您的视野中? - - 您是在什么时间点首次发觉这个问题? - - 这个问题是在什么日期首次引起您的注意? - - 您是何时开始察觉到这个问题的存在? - - 您是在什么时间点首次注意到这个问题? - - 这个问题是在什么日期首次被您察 - - intent: ask_wen_jian_qing_huo_jia_zhong_qing_kuang_1717735465014013954 - examples: | - - 您有没有注意过什么情况下症状会减轻或加重? - - 您是否留意到在特定情况下症状有所缓解或加重? - - 请问您是否观察到在某些情况下症状减轻或恶化? - - 您是否留心到症状在何种情况下会有所好转或恶化? - - 请问您是否曾留意到症状在某些情况下会减轻或加重? - - 您是否曾经观察到在某些情况下症状有所缓解或加剧? - - 请问您是否留意到在什么情况下症状减轻或恶化? - - 您是否留心到有没有情况会影响症状的轻重? - - 请问您是否观察到在某些特定情况下症状改善或加剧? - - 您是否留意到在何种情况下症状变得更轻或更重? - - 请问您是否曾经观察到在某些情况下症状变得更好或更糟? - - 您是否曾留意到在某些情况下症状会有所减轻或加重? - - 请问您是否留意到在特定情况下症状有所改善或恶化? - - 您是否留心到症状在何种情况下会有所好转或变得更糟? - - 请问您是否观察到在某些情境下症状有所减轻或恶化? - - 您是否留意到有没有特定情况可能会影响症状的严重程度? - - 请问您是否观察到在某些情况下症状减轻或加剧? - - 您是否留心到在什么情况下症状有所改善或加重? - - 请问您是否曾留意到在某些情况下症状减轻或变得更严重? - - 您是否留意到在何种情况下症状会减轻或加重? - - 请问您是否观察到在某些特定情况下症状有所改善或惡化? - - intent: ask_wen_chu_xian_jian_ge_1717735465047568386 - examples: | - - 这些症状多久出现一次? - - 多长时间会出现这些症状一次? - - 请问这些症状以何种频率出现? - - 这些症状每隔多久会出现一次? - - 这些症状出现的时间间隔是多长? - - 请问这些症状的发作频率如何? - - 这些症状每隔多久会再次显现? - - 这些症状出现的周期是多久? - - 请问这些症状多长时间出现一次? - - 这些症状每隔多长时间会再次发生? - - 这些症状的复发间隔是多久? - - 请问这些症状的出现频率如何? - - 这些症状每隔多长时间会再次出现? - - 这些症状的发作频度是多少? - - 请问这些症状多长时间出现一次? - - 这些症状的复发时间间隔是多久? - - 这些症状每隔多久会再次表现出来? - - 请问这些症状的出现频繁程度如何? - - 这些症状每隔多久会再次出现? - - 这些症状的发作周期是多久? - - 请问这些症状多久才会再次出现? - - intent: ask_wen_zheng_zhuang_miao_shu_1717735465076928513 - examples: | - - 您能描述一下这些症状吗? - - 您可以详细描述一下这些症状吗? - - 能否就这些症状进行一番详尽的描述? - - 请您能够对这些症状进行一次详细的描述吗? - - 您是否能够提供有关这些症状的详细信息? - - 可否对这些症状进行一番详细的叙述? - - 请您详细描述一下这些症状。 - - 能否对这些症状做出详尽的说明? - - 请您对这些症状进行详细的描述。 - - 能否提供有关这些症状的详细信息? - - 请您详细叙述一下这些症状。 - - 能否就这些症状提供更详细的信息? - - 请您详细阐述一下这些症状。 - - 能否对这些症状提供更详尽的描述? - - 请您能够提供这些症状的详细信息吗? - - 能否详细描述一下这些症状? - - 请您详细叙述有关这些症状的情况。 - - 能否对这些症状做出更详尽的说明? - - 请您对这些症状提供详细的描述。 - - 能否提供有关这些症状的更多详细信息? - - 请您详细描述一下这些症状的情况。 - - intent: ask_wen_zheng_zhuang_yan_zhong_cheng_du_1717735465135648770 - examples: | - - 这些症状有多严重?很轻微还是比较严重? - - 这些症状的严重程度是多少?是轻微的还是相当严重的? - - 请问这些症状有多严重?它们是轻微的还是相当严重的? - - 这些症状的强烈程度如何?它们是轻微的还是相当严重的? - - 这些症状的程度是不是很重?还是相对较轻? - - 请问这些症状有多严重?它们是很轻微的还是相当严重的? - - 这些症状的强度是怎样的?是轻微的还是相当严重的? - - 这些症状的严重程度是轻微的还是相当显著的? - - 请问这些症状有多重?是轻微的还是比较严重的? - - 这些症状的严重程度是否较高?还是相对较轻? - - 这些症状的严重程度是否很明显?还是相对较轻微? - - 请问这些症状有多严重?它们是轻微的还是相当严重的? - - 这些症状的程度是否很大?还是相对较小? - - 这些症状的严重性如何?是轻微的还是相当严重的? - - 这些症状的强度是多少?是轻微的还是相当严重的? - - 请问这些症状有多严重?它们是轻微的还是相当严重的? - - 这些症状的严重程度是不是很高?还是相对较低? - - 这些症状的程度是多严重?是轻微的还是相当严重的? - - 请问这些症状有多重?它们是轻微的还是相当严重的? - - 这些症状的严重程度是否很严重?还是相对较轻? - - 这些症状的严重性如何?是很轻微的还是相当严重的? - - intent: ask_wen_qi_ta_zheng_zhuang_1717735465173397505 - examples: | - - 当您出现这些症状时是否还伴有其他异常? - - 您在出现这些症状的同时是否还有其他异常情况? - - 当您经历这些症状时,是否还伴随其他不正常情况? - - 请问,当出现这些症状时,是否还有其他不寻常的情况? - - 当您出现这些症状时,是否还出现其他不正常的情况? - - 您是否同时经历其他异常情况,当出现这些症状时? - - 当您有这些症状的时候,是否还伴随其他异常? - - 请问,当您出现这些症状时,是否还有其他异常情况? - - 是否有其他不正常情况伴随着这些症状的出现? - - 当这些症状出现时,是否还伴随其他异常情况? - - 请问,当您出现这些症状时,是否还有其他不寻常的情况? - - 您是否在出现这些症状的同时还经历其他异常情况? - - 当您有这些症状的时候,是否还伴随其他不正常的情况? - - 是否有其他异常情况同时发生,当这些症状出现时? - - 当您经历这些症状时,是否还伴随其他不正常情况? - - 请问,当您出现这些症状时,是否还有其他异常情况? - - 您是否在出现这些症状的同时还有其他不正常情况? - - 当这些症状出现时,是否还伴随其他异常情况? - - 是否有其他不正常情况伴随着这些症状的出现? - - 您是否同时经历其他异常情况,当出现这些症状时? - - 请问,当您出现这些症状时,是否还有其他不寻常的情况? - - intent: ask_wen_fa_zuo_pin_lv_1717735465211146241 - examples: | - - 这些症状是反复发作还是只出现了一次?有多频繁? - - 这些症状是周期性出现的,还是只发生过一次? - - 请问这些症状是不断重复出现的,还是只出现了一次? - - 这些症状是有规律地再次发生,还是只出现了一次? - - 这些症状是经常性出现的,还是只出现了一次? - - 请问这些症状是否反复发作,还是只出现了一次? - - 这些症状是定期再次发生的,还是只出现了一次? - - 请问这些症状是否多次重复发生,还是只发生了一次? - - 这些症状是以某种频率反复发生的,还是只出现了一次? - - 请问这些症状是否定期出现,还是只出现了一次? - - 这些症状是以一定的频率再次发生的,还是只出现了一次? - - 请问这些症状是否频繁出现,还是只发生了一次? - - 这些症状是否有规律地反复出现,还是只出现了一次? - - 请问这些症状是否经常性出现,还是只出现了一次? - - 这些症状是定期反复发生的,还是只出现了一次? - - 请问这些症状是否多次发作,还是只发生了一次? - - 这些症状是否以某种频率再次发生,还是只出现了一次? - - 请问这些症状是否有规律地出现,还是只出现了一次? - - 这些症状是以一定的频率再次发生的,还是只出现了一次? - - 请问这些症状是否频繁出现,还是只发生了一次? - - 这些症状是否以一种周期性的方式再次出现,还是只出现了一次? - - intent: ask_wen_lei_si_qing_kuang_1717735465240506370 - examples: | - - 您以前有过类似情况吗? - - 在过去,您是否曾经经历过类似的情况? - - 您以前是否曾经遇到过相似的情况? - - 在过去,您是否曾经有过相似的经历? - - 您以前是否曾经经历过相似的情况? - - 在过去,您是否曾经有过相似的经历? - - 您以前是否曾经遇到过类似的情况? - - 在以前的经历中,您是否曾经有过相似的情况? - - 您以前是否曾经遇到过与此相似的情况? - - 在过去,您是否曾经经历过与此相似的情况? - - 您以前是否曾经遇到过与此相似的情况? - - 在过去,您是否曾经有过与此相似的经历? - - 您以前是否曾经经历过与此相似的情况? - - 在过去,您是否曾经遇到过类似的情况? - - 您以前是否曾经有过类似的经历? - - 在以前的经历中,您是否曾经遇到过相似的情况? - - 您以前是否曾经有过与此类似的情况? - - 在过去,您是否曾经经历过与此类似的情况? - - 您以前是否曾经遇到过与此类似的情况? - - 在以前的经历中,您是否曾经有过类似的情况? - - 您以前是否曾经有过类似的经历? - - intent: ask_wen_zheng_zhuang_gai_bian_qing_kuang_1717735465269866497 - examples: | - - 这些症状会随着时间、气候或季节等的不同而改变吗? - - 这些症状是否会受时间、气候或季节等因素的影响而变化? - - 请问这些症状是否会随着时间、气候或季节等的变化而改变? - - 这些症状是否在不同的时间、气候或季节下会有所不同? - - 请问这些症状是否受时间、气候或季节等因素的变化而改变? - - 这些症状是否会在不同的时间、气候或季节下表现出不同的特点? - - 请问这些症状是否受时间、气候或季节等因素的差异而改变? - - 这些症状是否会因时间、气候或季节等的变化而有所不同? - - 请问这些症状是否在不同的时间、气候或季节下会发生变化? - - 这些症状是否会根据时间、气候或季节等因素的不同而有所变动? - - 请问这些症状是否受时间、气候或季节等变化的影响而改变? - - 这些症状是否会在不同的时间、气候或季节下表现出变化? - - 请问这些症状是否受时间、气候或季节等变化的差异而改变? - - 这些症状是否会因时间、气候或季节等的不同而发生变化? - - 请问这些症状是否在不同的时间、气候或季节下会有所不同? - - 这些症状是否会随着时间、气候或季节等因素的不同而有所改变? - - 请问这些症状是否受时间、气候或季节等因素的变动而改变? - - 这些症状是否会在不同的时间、气候或季节下有所改变? - - 请问这些症状是否受时间、气候或季节等因素的差异而改变? - - 这些症状是否会因时间、气候或季节等的变化而发生改变? - - 请问这些症状是否在不同的时间、气候或季节下会表现出差异? - - intent: ask_wen_jiu_zhen_shi_1717735465299226626 - examples: | - - 您以前有没有因为这些症状看过其他的医生? - - 您之前是否因这些症状曾就诊于其他医生? - - 以前,您是否因这些症状而咨询过其他医生? - - 您之前有没有因这些症状而就医求诊? - - 以前,您是否曾经因这些症状而看过其他医生? - - 您之前是否因这些症状而咨询了其他医生? - - 以前,您是否曾经因这些症状而就医? - - 您之前有没有因为这些症状而寻求其他医生的帮助? - - 以前,您是否因这些症状而咨询过其他专科医生? - - 您之前是否因这些症状而就诊于其他医疗专家? - - 以前,您是否曾经因这些症状而寻求其他医生的意见? - - 您之前有没有因这些症状而寻求其他医疗专家的帮助? - - 以前,您是否曾经因这些症状而咨询了其他专科医生? - - 您之前是否因这些症状而就医求助? - - 以前,您是否曾经因这些症状而就诊于其他专科医生? - - 您之前有没有因为这些症状而寻求了其他医疗专家的意见? - - 以前,您是否因这些症状而咨询了其他医疗专家? - - 您之前是否因这些症状而就医看诊? - - 以前,您是否曾经因这些症状而咨询其他专业医生? - - 您之前有没有因这些症状而咨询其他医疗专家? - - 以前,您是否曾经因这些症状而就医寻求了其他医生的帮助? - - intent: ask_wen_jia_zu_shi_1717735465328586753 - examples: | - - 您的家人或朋友出现过类似的情况吗? - - 您的家人或朋友是否经历过相似的情况? - - 有没有人您认识的人曾经遇到过类似的情形? - - 您的亲属或朋友中是否有人经历过相同的情况? - - 有没有您身边的人曾经遇到过相似的情况? - - 您的亲戚或朋友中是否有人有过类似的经验? - - 有没有您周围的人曾经经历过相似的情况? - - 您的亲朋好友中是否有人曾经遇到过相同的状况? - - 有没有您认识的人曾经有过类似的经验? - - 您的家庭成员或朋友中是否有人经历过相似的情况? - - 有没有人您认识的人曾经遇到过相类似的情况? - - 您的朋友或家人中是否有人有过类似的经验? - - 有没有您身边的人曾经有过相似的情况? - - 您的朋友或亲戚中是否有人曾经遇到过相同的情况? - - 有没有您周围的人曾经遇到过相似的情形? - - 您的朋友或家人中是否有人曾经有过类似的经验? - - 有没有人您认识的人曾经经历过相似的情况? - - 您的亲戚或朋友中是否有人有过类似的情况? - - 有没有您身边的人曾经遇到过相同的状况? - - 您的亲朋好友中是否有人曾经有过类似的经验? - - 有没有您认识的人曾经有过相似的情形? - - intent: ask_wen_dui_ri_chang_ying_xiang_1717735465357946881 - examples: | - - 这些症状对您的日常生活有什么负面的影响吗? - - 这些症状对您的日常生活有造成什么不便吗? - - 这些症状是否对您的日常生活产生了不利影响? - - 您是否因这些症状在日常生活中遇到了问题? - - 这些症状是否对您的日常生活带来了负面影响? - - 这些症状是否对您的日常生活造成了困扰? - - 您是否因这些症状在日常生活中感到不适? - - 这些症状是否对您的日常生活带来了麻烦? - - 您是否因这些症状在日常生活中受到了限制? - - 这些症状是否对您的日常生活产生了负面的效果? - - 这些症状是否对您的日常生活造成了固定的问题? - - 您是否因这些症状在日常生活中遇到了挑战? - - 这些症状是否对您的日常生活有所损害? - - 这些症状是否对您的日常生活产生了不利的结果? - - 您是否因这些症状在日常生活中遇到了不便? - - 这些症状是否对您的日常生活带来了负面的结果? - - 这些症状是否对您的日常生活产生了障碍? - - 您是否因这些症状在日常生活中受到了制约? - - 这些症状是否对您的日常生活带来了不适? - - 这些症状是否对您的日常生活有所影响? - - 您是否因这些症状在日常生活中感到受限? - - intent: ask_wen_ri_chang_bian_hua_1717735465387307010 - examples: | - - 您是否注意到日常生活中还有什么其他的变化? - - 您是否留意到日常生活中还有其他的变化? - - 您是否察觉到日常生活中还有其他的变化? - - 您是否发现日常生活中还有其他的变化? - - 您是否意识到日常生活中还有其他的变化? - - 您是否觉察到日常生活中还有其他的变化? - - 您是否注意到了日常生活中还有其他的变化? - - 您是否发觉到了日常生活中还有其他的变化? - - 您是否察觉到了日常生活中还有其他的变化? - - 您是否意识到了日常生活中还有其他的变化? - - 您是否觉察到了日常生活中还有其他的变化? - - 您是否留意到了日常生活中还有其他的变化? - - 您是否发现了日常生活中还有其他的变化? - - 您是否察觉到日常生活中还有其他的变化的存在? - - 您是否意识到日常生活中还有其他的变化的存在? - - 您是否觉察到日常生活中还有其他的变化的存在? - - 您是否注意到了日常生活中还有其他的变化的存在? - - 您是否发觉到了日常生活中还有其他的变化的存在? - - 您是否察觉到了日常生活中还有其他的变化的存在? - - 您是否意识到了日常生活中还有其他的变化的存在? - - 您是否觉察到了日常生活中还有其他的变化的存在? - - intent: ask_wen_bing_shi_1717735465420861442 - examples: | - - 您最近生过病吗?什么时候?是什么病? - - 您最近是否患过疾病?是什么时候?是什么疾病? - - 您最近是否生病了?是在什么时候?是什么病? - - 您最近是否曾经生病?是在什么时候?是什么疾病? - - 您最近是否有过疾病?是在什么时候?是什么病症? - - 您最近是否有生病的经历?是在什么时候?是什么疾病? - - 您最近是否有患过病?是在什么时候?是什么疾病? - - 您最近是否有过病症?是在什么时候?是什么疾病? - - 您最近是否有生过病?是在什么时候?是什么疾病? - - 您最近是否有患病?是在什么时候?是什么疾病? - - 您最近是否有生病?是在什么时候?是什么疾病? - - 您最近是否有生过病?是在什么时候?是什么疾病? - - 您最近是否有患过疾病?是在什么时候?是什么病? - - 您最近是否有患病状况?是在什么时候?是什么疾病? - - 您最近是否有生过病症?是在什么时候?是什么疾病? - - 您最近是否有患过病症?是在什么时候?是什么疾病? - - 您最近是否有生过疾病?是在什么时候?是什么病? - - 您最近是否有患过疾病?是在什么时候?是什么病? - - 您最近是否有生过病?是在什么时候?是什么疾病? - - 您最近是否有患病?是在什么时候?是什么病? - - 您最近是否有生病?是在什么时候?是什么病? - - intent: ask_wen_shou_shang_shi_1717735465450221569 - examples: | - - 您最近受过伤吗?什么时候?受过什么伤? - - 您最近是否受伤了?是在什么时候?受伤的部位是什么? - - 您最近是否有受伤的经历?是在什么时候?受伤的类型是什么? - - 您最近是否受过伤?是在什么时候?受伤的部位是什么? - - 您最近是否有受过伤害?是在什么时候?受伤的类型是什么? - - 您最近是否有过受伤的情况?是在什么时候?受伤的部位是什么? - - 您最近是否有患过伤病?是在什么时候?受伤的类型是什么? - - 您最近是否有受过伤?是在什么时候?受伤的部位是什么? - - 您最近是否有受过伤害?是在什么时候?受伤的类型是什么? - - 您最近是否有过受伤的经历?是在什么时候?受伤的部位是什么? - - 您最近是否有患过伤病?是在什么时候?受伤的类型是什么? - - 您最近是否有受伤的情况?是在什么时候?受伤的部位是什么? - - 您最近是否有受过伤害?是在什么时候?受伤的类型是什么? - - 您最近是否有过受伤?是在什么时候?受伤的部位是什么? - - 您最近是否有受过伤害?是在什么时候?受伤的类型是什么? - - 您最近是否有受伤的经历?是在什么时候?受伤的部位是什么? - - 您最近是否有患过伤病?是在什么时候?受伤的类型是什么? - - 您最近是否有受过伤?是在什么时候?受伤的部位是什么? - - 您最近是否有受过伤害?是在什么时候?受伤的类型是什么? - - 您最近是否有过受伤的情况?是在什么时候?受伤的部位是什么? - - 您最近是否有患过伤病?是在什么时候?受伤的类型是什么? - - intent: ask_wen_zhong_da_sheng_huo_shi_jian_1717735465479581698 - examples: | - - 最近有没有发生什么重大的生活事件导致精神压力增加? - - 最近是否发生了一些重大的生活事件,导致您的精神压力增加了? - - 最近是否有什么重大的生活事件发生,导致您的精神压力增加了? - - 您最近是否经历了一些重大的生活事件,导致您的精神压力增加了? - - 最近是否发生了一些重要的生活事件,使您的精神压力增加了? - - 您最近是否遇到了一些重要的生活事件,导致您的精神压力增加了? - - 最近是否有什么重要的生活事件发生,使您感到精神压力增加了? - - 您最近是否经历了一些重要的生活事件,导致您感到精神压力增加了? - - 最近是否发生了一些重大的生活事件,导致您的心理压力增加了? - - 您最近是否遇到了一些重大的生活事件,导致您的心理压力增加了? - - 最近是否有什么重大的生活事件发生,使您感到心理压力增加了? - - 您最近是否经历了一些重大的生活事件,导致您感到心理压力增加了? - - 最近是否发生了一些重要的生活事件,使您的心理压力增加了? - - 您最近是否遇到了一些重要的生活事件,导致您的心理压力增加了? - - 最近是否有什么重要的生活事件发生,使您感到心理压力增加了? - - 您最近是否经历了一些重要的生活事件,导致您感到心理压力增加了? - - 最近是否发生了一些重大的生活事件,导致您的情绪压力增加了? - - 您最近是否遇到了一些重大的生活事件,导致您的情绪压力增加了? - - 最近是否有什么重大的生活事件发生,使您感到情绪压力增加了? - - 您最近是否经历了一些重大的生活事件,导致您感到情绪压力增加了? - - 最近是否发生了一些重要的生活事件,使您的情绪压力增加了? - - intent: ask_wen_zi_wo_gan_jue_1717735465504747522 - examples: | - - 您认为可能是什么问题? - - 您觉得可能出现了什么问题? - - 您认为可能存在着什么困难? - - 您觉得可能会有哪些难题? - - 您认为可能存在什么障碍? - - 您觉得可能会有什么挑战? - - 您认为可能出现了什么疑问? - - 您觉得可能存在着什么情况? - - 您认为可能会有哪些不确定因素? - - 您觉得可能出现了什么疑惑? - - 您认为可能存在着什么疑虑? - - 您觉得可能会有什么未知因素? - - 您认为可能出现了什么困扰? - - 您觉得可能存在着什么挫折? - - 您认为可能会有哪些瓶颈? - - 您觉得可能出现了什么纷扰? - - 您认为可能存在着什么挣扎? - - 您觉得可能会有哪些未知情况? - - 您认为可能出现了什么疑问? - - 您觉得可能存在着什么挑战? - - 您认为可能会有哪些不明确因素? - - intent: ask_wen_fa_bing_zhi_qian_de_dong_zuo_1717735465529913345 - examples: | - - 在上述症状发生前你在做什么?吃东西?活动?还是别的? - - 在出现上述症状之前,您在做什么?是在吃东西吗?还是在进行活动?或者其他? - - 在上述症状出现之前,您在做什么?是在进食吗?还是在进行活动?或者其他? - - 在出现上述症状之前,您在做什么?是在吃东西吗?还是在进行运动?或者其他? - - 在上述症状出现之前,您在做什么?是在进食吗?还是在进行运动?或者其他? - - 在出现上述症状之前,您在做什么?是在用餐吗?还是在进行活动?或者其他? - - 在上述症状出现之前,您在做什么?是在用餐吗?还是在进行活动?或者其他? - - 在出现上述症状之前,您在做什么?是在进食吗?还是在进行身体活动?或者其他? - - 在上述症状出现之前,您在做什么?是在进食吗?还是在进行身体活动?或者其他? - - 在出现上述症状之前,您在做什么?是在吃东西吗?还是在进行运动?或者其他? - - 在上述症状出现之前,您在做什么?是在进食吗?还是在进行运动?或者其他? - - 在出现上述症状之前,您在做什么?是在用餐吗?还是在进行运动?或者其他? - - 在上述症状出现之前,您在做什么?是在用餐吗?还是在进行运动?或者其他? - - 在出现上述症状之前,您在做什么?是在进食吗?还是在进行身体活动?或者其他? - - 在上述症状出现之前,您在做什么?是在进食吗?还是在进行身体活动?或者其他? - - 在出现上述症状之前,您在做什么?是在用餐吗?还是在进行身体活动?或者其他? - - 在上述症状出现之前,您在做什么?是在用餐吗?还是在进行身体活动?或者其他? - - 在出现上述症状之前,您在做什么?是在吃东西吗?还是在进行运动?或者其他? - - 在上述症状出现之前,您在做什么?是在进食吗?还是在进行运动?或者其他? - - intent: ask_wen_diao_tou_fa_1717735465555079170 - examples: | - - 有没有掉头发 - - 您是否正在脱发? - - 您是否注意到了头发脱落? - - 您是否发现头发在减少? - - 您的头发有没有减少? - - 您是否有掉发的情况? - - 您是否发现头发在稀疏? - - 您是否察觉到头发变少? - - 您的头发有没有减少的迹象? - - 您是否正在经历脱发问题? - - 您是否注意到头发在减少? - - 您是否有头发脱落的问题? - - 您是否发现头发在减小? - - 您是否有发现自己的头发变少? - - 您的头发是否出现减少的情况? - - 您是否有头发减少的症状? - - 您是否察觉到头发在减少? - - 您的头发是否有减少的迹象? - - 您是否正在经历头发减少? - - 您是否有头发掉落的情况? - - 您是否发现头发在减少? - - intent: ask_wen_fu_xie_1717735465580244993 - examples: | - - 有没有腹泻 - - 您是否有腹泻的情况? - - 您是否出现了腹泻症状? - - 您有没有腹泻的问题? - - 您是否经历了腹泻? - - 您的肚子有没有腹泻? - - 您是否出现了腹泻症状? - - 您是否有腹泻的迹象? - - 您是否正在腹泻? - - 您是否有肚子病了? - - 您是否出现了肚子不适的情况? - - 您的肚子有没有出现腹泻? - - 您是否经历了肚子疼痛和腹泻? - - 您是否有肚子病了? - - 您是否出现了肚子不适的情况? - - 您的肚子有没有腹泻? - - 您是否正在腹泻? - - 您是否有腹泻的迹象? - - 您是否经历了腹泻? - - 您是否出现了腹泻症状? - - 您有没有腹泻的问题? - - intent: ask_wen_ti_li_1717735465605410818 - examples: | - - 体力情况怎么样 - - 你的体力如何? - - 你的身体状况怎么样? - - 你感觉身体好吗? - - 你有没有体力问题? - - 你的健康状态如何? - - 你的体能情况怎样? - - 你感觉体力充沛吗? - - 你的身体感觉怎么样? - - 你是否感到精力充沛? - - 你的体力水平如何? - - 你觉得身体健康吗? - - 你感觉自己有没有足够的体力? - - 你的体能状况如何? - - 你觉得自己有没有足够的精力? - - 你的身体感觉良好吗? - - 你的体力状态如何? - - 你感觉体力是否足够? - - 你的身体情况怎么样? - - 你有没有注意到体力的变化? - - 你的体能是否正常? - - intent: ask_wen_fu_yao_shi_1717735465630576641 - examples: | - - 有没有吃过通便药、感冒药、阿司匹林等药 - - 你有没有尝试过通便药、感冒药、阿司匹林等药物? - - 请问您是否曾经使用过通便药、感冒药、阿司匹林等类型的药品? - - 请问您是否有服用过通便药、感冒药、阿司匹林等药物的经历? - - 您是否有使用过通便药、感冒药、阿司匹林等这些药物的经验? - - 请问您是否尝试过通便药、感冒药、阿司匹林等这些药品? - - 您是否有服用过通便药、感冒药、阿司匹林等此类药物? - - 请问您是否曾尝试过通便药、感冒药、阿司匹林等这些药物? - - 您是否有使用过通便药、感冒药、阿司匹林等此类药品的经验? - - 请问您是否有使用过通便药、感冒药、阿司匹林等药物的记录? - - 您是否曾经尝试过通便药、感冒药、阿司匹林等此类药品? - - 请问您是否有服用过通便药、感冒药、阿司匹林等这些药物的经历? - - 您是否有使用过通便药、感冒药、阿司匹林等药品? - - 请问您是否尝试过通便药、感冒药、阿司匹林等这些药物? - - 您是否有服用过通便药、感冒药、阿司匹林等此类药物? - - 请问您是否曾尝试过通便药、感冒药、阿司匹林等这些药物? - - 您是否有使用过通便药、感冒药、阿司匹林等此类药品的经验? - - 请问您是否有使用过通便药、感冒药、阿司匹林等药物的记录? - - 您是否曾经尝试过通便药、感冒药、阿司匹林等此类药品? - - 请问您是否有服用过通便药、感冒药、阿司匹林等这些药物的经历? - - 您是否有使用过通便药、感冒药、阿司匹林等药品的经验? - - intent: ask_wen_yin_jiu_shi_1717735465655742466 - examples: | - - 有没有喝酒 - - 请问您是否有饮酒的习惯? - - 您是否曾经尝试过饮酒? - - 请问您是否有喝过酒的经历? - - 您是否有饮酒的经验? - - 请问您是否尝试过喝酒? - - 您是否有喝过酒的习惯? - - 请问您是否曾尝试过喝酒? - - 您是否有饮酒的记录? - - 请问您是否有喝过酒的习惯? - - 您是否曾经尝试过喝酒? - - 请问您是否有饮酒的经历? - - 您是否有喝过酒的经验? - - 请问您是否尝试过喝酒这件事? - - 您是否有喝过酒的习惯? - - 请问您是否曾尝试过喝酒? - - 您是否有饮酒的记录? - - 请问您是否有喝过酒的习惯? - - 您是否曾经尝试过喝酒? - - 请问您是否有饮酒的经历? - - 您是否有喝过酒的经验? - - intent: ask_wen_chou_yan_shi_1717735465680908289 - examples: | - - 有没有抽烟 - - 请问您是否有吸烟的习惯? - - 您是否曾经尝试过抽烟? - - 请问您是否有吸过烟的经历? - - 您是否有抽烟的经验? - - 请问您是否尝试过吸烟? - - 您是否有吸烟的习惯? - - 请问您是否曾尝试过吸烟? - - 您是否有抽烟的记录? - - 请问您是否有吸过烟的习惯? - - 您是否曾经尝试过吸烟? - - 请问您是否有抽烟的经历? - - 您是否有抽过烟的经验? - - 请问您是否尝试过抽烟这件事? - - 您是否有吸烟的习惯? - - 请问您是否曾尝试过抽烟? - - 您是否有吸烟的记录? - - 请问您是否有抽过烟的习惯? - - 您是否曾经尝试过吸烟? - - 请问您是否有吸烟的经历? - - 您是否有抽烟的经验? - - intent: ask_wen_guo_min_shi_1717735465710268417 - examples: | - - 有没有过敏 - - 请问您是否有过敏反应? - - 您是否有过过敏的经历? - - 请问您是否对某些物质过敏? - - 您是否曾经出现过过敏症状? - - 请问您是否对任何东西有过敏反应? - - 您是否有过过敏的记录? - - 请问您是否对某种食物或者物质有过敏? - - 您是否曾经遇到过过敏的情况? - - 请问您是否对某种药物有过敏反应? - - 您是否有过过敏的经验? - - 请问您是否有任何过敏症状? - - 您是否曾经出现过过敏的情况? - - 请问您是否对花粉或者尘螨有过敏? - - 您是否有过过敏的历史? - - 请问您是否对某种环境因素过敏? - - 您是否曾经遭遇过过敏反应? - - 请问您是否对特定气候条件有过敏反应? - - 您是否有过过敏的症状? - - 请问您是否对某种动物有过敏? - - 您是否曾经出现过过敏的症状? - - intent: ask_wen_fu_yao_shi_1717735465735434241 - examples: | - - 还吃过什么药 - - 请问您还使用过其他药物吗? - - 您还服用了哪些药物? - - 请问您还有没有使用其他药品? - - 您还尝试过其他药物吗? - - 请问您还有没有尝试其他药物? - - 您还服用了别的药吗? - - 请问您还吃过其他的药物吗? - - 您还使用了其他类型的药品吗? - - 请问您还有没有使用过其他的药物? - - 您还尝试过其他类型的药物吗? - - 请问您还吃过别的药吗? - - 您还使用了其他药品吗? - - 请问您还有没有尝试其他药品? - - 您还服用了其他的药物吗? - - 请问您还有没有使用过别的药物? - - 您还尝试过其他的药品吗? - - 请问您还有没有吃过其他的药? - - 您还使用了其他类型的药吗? - - 请问您还有没有尝试别的药物? - - 您还服用了其他的药品吗? - - intent: tool_blood_pressure - examples: | - - 让我们来测量一下血压。 - - 让我们进行一次血压测量。 - - 让我们来检查一下血压。 - - 让我们进行一次血压检查。 - - 让我们来测试一下血压。 - - 让我们进行一次血压测试。 - - 让我们来观察一下血压。 - - 让我们进行一次血压观察。 - - 让我们来监测一下血压。 - - 让我们进行一次血压监测。 - - 让我们来评估一下血压。 - - 让我们进行一次血压评估。 - - 让我们来测算一下血压。 - - 让我们进行一次血压测算。 - - 让我们来记录一下血压。 - - 让我们进行一次血压记录。 - - 让我们来调查一下血压。 - - 让我们进行一次血压调查。 - - 让我们来测验一下血压。 - - 让我们进行一次血压测验。 - - intent: tool_thermometer - examples: | - - 进行一次体温测量。 - - 测量一下体温。 - - 检测一下体温。 - - 进行一次体温检测。 - - 测测体温。 - - 进行一次体温观察。 - - 观察一下体温。 - - 进行一次体温监测。 - - 监测一下体温。 - - 评估一下体温。 - - 进行一次体温评估。 - - 测测看体温。 - - 进行一次体温测试。 - - 测试一下体温。 - - 记录一下体温。 - - 进行一次体温记录。 - - 检查一下体温。 - - 进行一次体温调查。 - - 调查一下体温。 - - 量一下体温。 - - intent: tool_height - examples: | - - 进行一次身高测量。 - - 测量一下身高。 - - 检测一下身高。 - - 进行一次身高检测。 - - 测测身高。 - - 进行一次身高观察。 - - 观察一下身高。 - - 进行一次身高监测。 - - 监测一下身高。 - - 评估一下身高。 - - 进行一次身高评估。 - - 测测看身高。 - - 进行一次身高测试。 - - 测试一下身高。 - - 记录一下身高。 - - 进行一次身高记录。 - - 检查一下身高。 - - 进行一次身高调查。 - - 调查一下身高。 - - 量一下身高。 - - intent: tool_weight - examples: | - - 进行一次体重测量。 - - 测量一下体重。 - - 检测一下体重。 - - 进行一次体重检测。 - - 称一下体重。 - - 进行一次体重观察。 - - 观察一下体重。 - - 进行一次体重监测。 - - 监测一下体重。 - - 评估一下体重。 - - 进行一次体重评估。 - - 测测看体重。 - - 进行一次体重测试。 - - 测试一下体重。 - - 记录一下体重。 - - 进行一次体重记录。 - - 检查一下体重。 - - 进行一次体重调查。 - - 量一下体重。 - - 获取一下体重数据。 - - intent: tool_heart_rate - examples: | - - 进行一次心率测量。 - - 测量一下心率。 - - 检测一下心率。 - - 进行一次心率检测。 - - 测测心率。 - - 进行一次心率观察。 - - 观察一下心率。 - - 进行一次心率监测。 - - 监测一下心率。 - - 评估一下心率。 - - 进行一次心率评估。 - - 测测看心率。 - - 进行一次心率测试。 - - 测试一下心率。 - - 记录一下心率。 - - 进行一次心率记录。 - - 检查一下心率。 - - 进行一次心率调查。 - - 调查一下心率。 - - 量一下心率。 - - intent: ancillary_blood_h-z - examples: | - - 需要进行一次血液检查。 - - 需要进行血液检验。 - - 需要完成一次血液检查。 - - 需要进行一次血液分析。 - - 需要进行一次血液化验。 - - 需要做一个血液检查。 - - 需要进行一次血液检测。 - - 需要进行血液测试。 - - 需要进行血液筛查。 - - 需要进行一次血液分析检查。 - - 需要做一个血液化验。 - - 需要进行一次全血细胞计数。 - - 需要进行一次血液常规检查。 - - 需要进行一次血液病理学检查。 - - 需要进行一次血清学检查。 - - 需要做一个血液生化指标检查。 - - 需要进行一次凝血功能检查。 - - 需要进行一次血常规检查。 - - 需要进行一次血液糖化血红蛋白检查。 - - 需要进行一次血液电解质检查。 - - intent: ancillary_eye_ct - examples: | - - 需要进行一次眼眶CT检查。 - - 需要进行一次眼眶CT扫描。 - - 需要做一次眼眶CT影像检查。 - - 需要进行一次眼眶计算机断层扫描。 - - 需要进行一次眼眶CT成像检查。 - - 需要进行一次眼眶CT图像检查。 - - 需要进行一次眼眶CT影像扫描。 - - 需要进行一次眼眶CT成像扫描。 - - 需要进行一次眼眶计算机断层影像检查。 - - 需要进行一次眼眶计算机断层图像检查。 - - 需要进行一次眼眶CT切片扫描。 - - 需要进行一次眼眶计算机断层成像检查。 - - 需要进行一次眼眶计算机断层影像扫描。 - - 需要进行一次眼眶CT图像扫描。 - - 需要进行一次眼眶计算机断层影响成像检查。 - - 需要进行一次眼眶CT断层成像扫描。 - - 需要进行一次眼眶计算机断层图像扫描。 - - 需要进行一次眼眶CT扫描检查。 - - 需要进行一次眼眶计算机断层影像图检查。 - - 需要进行一次眼眶计算机断层成像图像扫描。 - - intent: ancillary_xin_dian_tu - examples: | - - 需要进行一次心电图检查。 - - 需要进行心电图测试。 - - 需要做一次心脏电图检查。 - - 需要进行一次心脏电图监测。 - - 需要进行一次心电图记录。 - - 需要进行一次心电图测量。 - - 需要进行心电图扫描。 - - 需要进行一次心脏电图测验。 - - 需要进行一次心律监测。 - - 需要完成一次心电图录制。 - - 需要进行一次心电图示波监测。 - - 需要做一个心电图检查。 - - 需要进行一次心脏电图记录。 - - 需要进行一次心电活动监测。 - - 需要进行一次心脏电图测量。 - - 需要进行心脏电图扫描。 - - 需要进行一次心脏电图图像检查。 - - 需要进行一次心电图示波图监测。 - - 需要进行一次心律失常监测。 - - 需要进行一次心脏电图示波记录。 - - intent: ancillary_blood_a-g - examples: | - - 需要进行一次血液检查。 - - 需要进行血液检验。 - - 需要完成一次血液检查。 - - 需要进行一次血液分析。 - - 需要进行一次血液化验。 - - 需要做一个血液检查。 - - 需要进行一次血液检测。 - - 需要进行血液测试。 - - 需要进行血液筛查。 - - 需要进行一次血液分析检查。 - - 需要做一个血液化验。 - - 需要进行一次全血细胞计数。 - - 需要进行一次血液常规检查。 - - 需要进行一次血液病理学检查。 - - 需要进行一次血清学检查。 - - 需要做一个血液生化指标检查。 - - 需要进行一次凝血功能检查。 - - 需要进行一次血常规检查。 - - 需要进行一次血液糖化血红蛋白检查。 - - 需要进行一次血液电解质检查。 - - intent: ancillary_xi_dian_lv - examples: | - - 需要进行吸碘率检查。 - - 需要进行碘摄取率检查。 - - 需要进行碘吸收率检查。 - - 需要进行碘摄入率检查。 - - 需要完成吸碘率检查。 - - 需要进行碘吸收能力检查。 - - 需要进行碘摄取能力检查。 - - 需要进行甲状腺碘摄取率检查。 - - 需要进行碘吸收效能检查。 - - 需要进行甲状腺碘吸收率检查。 - - 需要进行吸碘率测量。 - - 需要进行碘吸收效率检查。 - - 需要进行甲状腺碘吸附率检查。 - - 需要进行碘吸附能力检查。 - - 需要进行甲状腺碘吸取率检查。 - - 需要进行碘吸取能力检查。 - - 需要进行碘的吸收率检查。 - - 需要进行碘吸引率检查。 - - 需要进行碘摄取能力检查。 - - 需要进行碘的吸附率检查。 - - intent: ancillary_jia_zhuang_xian_chao_sheng - examples: | - - 现在需要进行一次甲状腺超声检查。 - - 现在需要做一次甲状腺超声检查。 - - 现在需要进行甲状腺超声检查。 - - 现在需要进行一次甲状腺超声检查。 - - 现在需要完成一次甲状腺超声检查。 - - 现在需要进行一次甲状腺超声波检查。 - - 现在需要进行甲状腺超声波检查。 - - 现在需要做一次甲状腺超声波检查。 - - 现在需要进行一次甲状腺超声像检查。 - - 现在需要进行甲状腺超声像检查。 - - 现在需要做一次甲状腺超声像检查。 - - 现在需要进行一次甲状腺超声影像检查。 - - 现在需要进行甲状腺超声影像检查。 - - 现在需要做一次甲状腺超声影像检查。 - - 现在需要进行一次甲状腺超声图检查。 - - 现在需要进行甲状腺超声图检查。 - - 现在需要做一次甲状腺超声图检查。 - - 现在需要进行一次甲状腺超声诊断。 - - 现在需要进行甲状腺超声诊断。 - - 现在需要做一次甲状腺超声诊断。 diff --git a/rasa/rules.yml b/rasa/rules.yml deleted file mode 100644 index 37ed247f..00000000 --- a/rasa/rules.yml +++ /dev/null @@ -1,156 +0,0 @@ -version: "3.1" - -rules: - - - rule: 问重大生活事件 - steps: - - intent: ask_wen_zhong_da_sheng_huo_shi_jian_1717735465479581698 - - action: utter_ask_wen_zhong_da_sheng_huo_shi_jian_1717735465479581698 - - rule: 问出现间隔 - steps: - - intent: ask_wen_chu_xian_jian_ge_1717735465047568386 - - action: utter_ask_wen_chu_xian_jian_ge_1717735465047568386 - - rule: 问发作频率 - steps: - - intent: ask_wen_fa_zuo_pin_lv_1717735465211146241 - - action: utter_ask_wen_fa_zuo_pin_lv_1717735465211146241 - - rule: 问对日常影响 - steps: - - intent: ask_wen_dui_ri_chang_ying_xiang_1717735465357946881 - - action: utter_ask_wen_dui_ri_chang_ying_xiang_1717735465357946881 - - rule: 问服药史 - steps: - - intent: ask_wen_fu_yao_shi_1717735465630576641 - - action: utter_ask_wen_fu_yao_shi_1717735465630576641 - - rule: 问抽烟史 - steps: - - intent: ask_wen_chou_yan_shi_1717735465680908289 - - action: utter_ask_wen_chou_yan_shi_1717735465680908289 - - rule: 问日常变化 - steps: - - intent: ask_wen_ri_chang_bian_hua_1717735465387307010 - - action: utter_ask_wen_ri_chang_bian_hua_1717735465387307010 - - rule: 问病史 - steps: - - intent: ask_wen_bing_shi_1717735465420861442 - - action: utter_ask_wen_bing_shi_1717735465420861442 - - rule: 问发病之前的动作 - steps: - - intent: ask_wen_fa_bing_zhi_qian_de_dong_zuo_1717735465529913345 - - action: utter_ask_wen_fa_bing_zhi_qian_de_dong_zuo_1717735465529913345 - - rule: 问症状描述 - steps: - - intent: ask_wen_zheng_zhuang_miao_shu_1717735465076928513 - - action: utter_ask_wen_zheng_zhuang_miao_shu_1717735465076928513 - - rule: 问家族史 - steps: - - intent: ask_wen_jia_zu_shi_1717735465328586753 - - action: utter_ask_wen_jia_zu_shi_1717735465328586753 - - rule: 问出现多久 - steps: - - intent: ask_wen_chu_xian_duo_jiu_1717735464976265217 - - action: utter_ask_wen_chu_xian_duo_jiu_1717735464976265217 - - rule: 问减轻或加重情况 - steps: - - intent: ask_wen_jian_qing_huo_jia_zhong_qing_kuang_1717735465014013954 - - action: utter_ask_wen_jian_qing_huo_jia_zhong_qing_kuang_1717735465014013954 - - rule: 问服药史 - steps: - - intent: ask_wen_fu_yao_shi_1717735465735434241 - - action: utter_ask_wen_fu_yao_shi_1717735465735434241 - - rule: 问过敏史 - steps: - - intent: ask_wen_guo_min_shi_1717735465710268417 - - action: utter_ask_wen_guo_min_shi_1717735465710268417 - - rule: 问就诊史 - steps: - - intent: ask_wen_jiu_zhen_shi_1717735465299226626 - - action: utter_ask_wen_jiu_zhen_shi_1717735465299226626 - - rule: 问其他症状 - steps: - - intent: ask_wen_qi_ta_zheng_zhuang_1717735465173397505 - - action: utter_ask_wen_qi_ta_zheng_zhuang_1717735465173397505 - - rule: 问不舒服 - steps: - - intent: ask_wen_bu_shu_fu_1717735464913350658 - - action: utter_ask_wen_bu_shu_fu_1717735464913350658 - - rule: 问类似情况 - steps: - - intent: ask_wen_lei_si_qing_kuang_1717735465240506370 - - action: utter_ask_wen_lei_si_qing_kuang_1717735465240506370 - - rule: 问体力 - steps: - - intent: ask_wen_ti_li_1717735465605410818 - - action: utter_ask_wen_ti_li_1717735465605410818 - - rule: 问症状改变情况 - steps: - - intent: ask_wen_zheng_zhuang_gai_bian_qing_kuang_1717735465269866497 - - action: utter_ask_wen_zheng_zhuang_gai_bian_qing_kuang_1717735465269866497 - - rule: 问腹泻 - steps: - - intent: ask_wen_fu_xie_1717735465580244993 - - action: utter_ask_wen_fu_xie_1717735465580244993 - - rule: 问自我感觉 - steps: - - intent: ask_wen_zi_wo_gan_jue_1717735465504747522 - - action: utter_ask_wen_zi_wo_gan_jue_1717735465504747522 - - rule: 问受伤史 - steps: - - intent: ask_wen_shou_shang_shi_1717735465450221569 - - action: utter_ask_wen_shou_shang_shi_1717735465450221569 - - rule: 问症状严重程度 - steps: - - intent: ask_wen_zheng_zhuang_yan_zhong_cheng_du_1717735465135648770 - - action: utter_ask_wen_zheng_zhuang_yan_zhong_cheng_du_1717735465135648770 - - rule: 问掉头发 - steps: - - intent: ask_wen_diao_tou_fa_1717735465555079170 - - action: utter_ask_wen_diao_tou_fa_1717735465555079170 - - rule: 问饮酒史 - steps: - - intent: ask_wen_yin_jiu_shi_1717735465655742466 - - action: utter_ask_wen_yin_jiu_shi_1717735465655742466 - - rule: 身高 - steps: - - intent: tool_height - - action: utter_tool_height - - rule: 水银血压计 - steps: - - intent: tool_blood_pressure - - action: utter_tool_blood_pressure - - rule: 心率 - steps: - - intent: tool_heart_rate - - action: utter_tool_heart_rate - - rule: 体温计 - steps: - - intent: tool_thermometer - - action: utter_tool_thermometer - - rule: 体重 - steps: - - intent: tool_weight - - action: utter_tool_weight - - rule: 眼眶CT - steps: - - intent: ancillary_eye_ct - - action: utter_ancillary_eye_ct - - rule: Blood A-G - steps: - - intent: ancillary_blood_a-g - - action: utter_ancillary_blood_a-g - - rule: 甲状腺超声 - steps: - - intent: ancillary_jia_zhuang_xian_chao_sheng - - action: utter_ancillary_jia_zhuang_xian_chao_sheng - - rule: 吸碘率 - steps: - - intent: ancillary_xi_dian_lv - - action: utter_ancillary_xi_dian_lv - - rule: Blood H-Z - steps: - - intent: ancillary_blood_h-z - - action: utter_ancillary_blood_h-z - - rule: 心电图 - steps: - - intent: ancillary_xin_dian_tu - - action: utter_ancillary_xin_dian_tu diff --git a/virtual-patient-common/src/main/java/com/supervision/config/ResponseConfig.java b/virtual-patient-common/src/main/java/com/supervision/config/ResponseConfig.java index 52af4d36..ba9a1c7d 100644 --- a/virtual-patient-common/src/main/java/com/supervision/config/ResponseConfig.java +++ b/virtual-patient-common/src/main/java/com/supervision/config/ResponseConfig.java @@ -3,6 +3,7 @@ package com.supervision.config; import cn.hutool.json.JSONUtil; import com.supervision.domain.GlobalResult; import com.supervision.exception.BusinessException; +import com.supervision.exception.HumanException; import lombok.extern.slf4j.Slf4j; import org.springframework.core.MethodParameter; import org.springframework.http.HttpStatus; @@ -70,6 +71,18 @@ public class ResponseConfig implements ResponseBodyAdvice { return GlobalResult.error(HttpStatus.INTERNAL_SERVER_ERROR.value(), exception.getMessage(), "业务异常"); } + /** + * 数字人异常处理 + * + * @param exception 业务异常 + * @return 通用返回值 + */ + @ExceptionHandler(HumanException.class) + public GlobalResult humanExceptionResponse(HumanException exception) { + log.error(exception.getMessage(), exception); + return GlobalResult.error(exception.getCode(), exception.getMessage(), "数字人异常"); + } + /** * 参数验证异常处理 @@ -99,4 +112,5 @@ public class ResponseConfig implements ResponseBodyAdvice { return GlobalResult.error(HttpStatus.INTERNAL_SERVER_ERROR.value(), "未知错误", exception.getMessage()); } + } diff --git a/virtual-patient-common/src/main/java/com/supervision/exception/HumanException.java b/virtual-patient-common/src/main/java/com/supervision/exception/HumanException.java new file mode 100644 index 00000000..814529a1 --- /dev/null +++ b/virtual-patient-common/src/main/java/com/supervision/exception/HumanException.java @@ -0,0 +1,59 @@ +/* + * 文 件 名: CustomException + * 版 权: + * 描 述: <描述> + * 修 改 人: RedName + * 修改时间: 2022/8/5 + * 跟踪单号: <跟踪单号> + * 修改单号: <修改单号> + * 修改内容: <修改内容> + */ +package com.supervision.exception; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; + +/** + * <功能详细描述> + * 自定义异常 + * + * @author ljt + * @version [版本号, 2022/8/5] + * @see [相关类/方法] + * @since [产品/模块版本] + */ +@Slf4j +public class HumanException extends RuntimeException { + + /** + * 房间状态获取异常时,前端刷新房间,重新进入 + */ + private static final Integer HUMAN_ERROR = 6001; + /** + * 异常编码 + */ + private final Integer code; + + /** + * 异常信息 + */ + private final String message; + + private HumanException(Integer code, String message) { + this.code = code; + this.message = message; + } + + public static HumanException humanError(String message) { + return new HumanException(HUMAN_ERROR, message); + } + + @Override + public String getMessage() { + return message; + } + + public Integer getCode() { + return code; + } +} diff --git a/virtual-patient-model/src/main/java/com/supervision/mapper/LockMapper.java b/virtual-patient-model/src/main/java/com/supervision/mapper/LockMapper.java new file mode 100644 index 00000000..933d13c5 --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/mapper/LockMapper.java @@ -0,0 +1,18 @@ +package com.supervision.mapper; + +import com.supervision.model.Lock; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author flevance +* @description 针对表【lock(并发锁,目前没有redis,使用这个)】的数据库操作Mapper +* @createDate 2023-11-01 13:11:34 +* @Entity com.supervision.model.Lock +*/ +public interface LockMapper extends BaseMapper { + +} + + + + diff --git a/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisQaRecord.java b/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisQaRecord.java index ab81bafd..5b118db4 100644 --- a/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisQaRecord.java +++ b/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisQaRecord.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -18,7 +19,7 @@ import lombok.Data; @TableName(value ="vp_diagnosis_qa_record") @Data @ApiModel -public class DiagnosisQaRecord implements Serializable { +public class DiagnosisQaRecord extends Model implements Serializable { /** * 主键 */ @@ -31,6 +32,9 @@ public class DiagnosisQaRecord implements Serializable { @ApiModelProperty("诊断进程ID") private String processId; + @ApiModelProperty("问答类型:default,disease") + private String questionAnswerType; + /** * 问题答案表ID */ diff --git a/virtual-patient-model/src/main/java/com/supervision/model/Lock.java b/virtual-patient-model/src/main/java/com/supervision/model/Lock.java new file mode 100644 index 00000000..5a0fbd44 --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/model/Lock.java @@ -0,0 +1,45 @@ +package com.supervision.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import lombok.Data; + +/** + * 并发锁,目前没有redis,使用这个 + * @TableName lock + */ +@TableName(value ="lock") +@Data +public class Lock implements Serializable { + /** + * + */ + @TableId + private String id; + + /** + * 锁 + */ + private String lockCode; + + /** + * 时间戳 + */ + private Long timestamp; + + /** + * 超时毫秒数 + */ + private Long expireMs; + + /** + * 线程ID,以支持重入 + */ + private String threadId; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/virtual-patient-model/src/main/java/com/supervision/service/LockService.java b/virtual-patient-model/src/main/java/com/supervision/service/LockService.java new file mode 100644 index 00000000..393b4cb5 --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/service/LockService.java @@ -0,0 +1,13 @@ +package com.supervision.service; + +import com.supervision.model.Lock; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author flevance +* @description 针对表【lock(并发锁,目前没有redis,使用这个)】的数据库操作Service +* @createDate 2023-11-01 13:11:34 +*/ +public interface LockService extends IService { + +} diff --git a/virtual-patient-model/src/main/java/com/supervision/service/impl/LockServiceImpl.java b/virtual-patient-model/src/main/java/com/supervision/service/impl/LockServiceImpl.java new file mode 100644 index 00000000..e58d9810 --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/service/impl/LockServiceImpl.java @@ -0,0 +1,22 @@ +package com.supervision.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.supervision.model.Lock; +import com.supervision.service.LockService; +import com.supervision.mapper.LockMapper; +import org.springframework.stereotype.Service; + +/** +* @author flevance +* @description 针对表【lock(并发锁,目前没有redis,使用这个)】的数据库操作Service实现 +* @createDate 2023-11-01 13:11:34 +*/ +@Service +public class LockServiceImpl extends ServiceImpl + implements LockService{ + +} + + + + diff --git a/virtual-patient-rasa/src/main/java/com/supervision/rasa/pojo/vo/RasaTalkVo.java b/virtual-patient-model/src/main/java/com/supervision/vo/rasa/RasaTalkVo.java similarity index 86% rename from virtual-patient-rasa/src/main/java/com/supervision/rasa/pojo/vo/RasaTalkVo.java rename to virtual-patient-model/src/main/java/com/supervision/vo/rasa/RasaTalkVo.java index 0b20ebdc..d4c1cab9 100644 --- a/virtual-patient-rasa/src/main/java/com/supervision/rasa/pojo/vo/RasaTalkVo.java +++ b/virtual-patient-model/src/main/java/com/supervision/vo/rasa/RasaTalkVo.java @@ -1,4 +1,4 @@ -package com.supervision.rasa.pojo.vo; +package com.supervision.vo.rasa; import lombok.Data; diff --git a/virtual-patient-model/src/main/resources/mapper/DiagnosisQaRecordMapper.xml b/virtual-patient-model/src/main/resources/mapper/DiagnosisQaRecordMapper.xml index b0a02479..4be5869a 100644 --- a/virtual-patient-model/src/main/resources/mapper/DiagnosisQaRecordMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/DiagnosisQaRecordMapper.xml @@ -5,21 +5,24 @@ - - - - - - - - - - - + + + + + + + + + + + + - id,process_id,question,question_answer_id + id + ,question_answer_type + ,process_id,question,question_answer_id question_wav_id,answer,answer_wav_id, create_user_id,create_time,update_user_id, update_time diff --git a/virtual-patient-model/src/main/resources/mapper/LockMapper.xml b/virtual-patient-model/src/main/resources/mapper/LockMapper.xml new file mode 100644 index 00000000..7f5495cf --- /dev/null +++ b/virtual-patient-model/src/main/resources/mapper/LockMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + id,lock_code,timestamp, + expire_ms,thread_id + + diff --git a/virtual-patient-rasa/src/main/java/com/supervision/rasa/controller/RasaFileController.java b/virtual-patient-rasa/src/main/java/com/supervision/rasa/controller/RasaFileController.java index d22adec7..cc96563c 100644 --- a/virtual-patient-rasa/src/main/java/com/supervision/rasa/controller/RasaFileController.java +++ b/virtual-patient-rasa/src/main/java/com/supervision/rasa/controller/RasaFileController.java @@ -6,6 +6,10 @@ import com.supervision.rasa.service.RasaFileService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; diff --git a/virtual-patient-rasa/src/main/java/com/supervision/rasa/controller/RasaTalkController.java b/virtual-patient-rasa/src/main/java/com/supervision/rasa/controller/RasaTalkController.java index 4f4f236e..04331728 100644 --- a/virtual-patient-rasa/src/main/java/com/supervision/rasa/controller/RasaTalkController.java +++ b/virtual-patient-rasa/src/main/java/com/supervision/rasa/controller/RasaTalkController.java @@ -1,6 +1,6 @@ package com.supervision.rasa.controller; -import com.supervision.rasa.pojo.vo.RasaTalkVo; +import com.supervision.vo.rasa.RasaTalkVo; import com.supervision.rasa.service.RasaTalkService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/virtual-patient-rasa/src/main/java/com/supervision/rasa/service/RasaTalkService.java b/virtual-patient-rasa/src/main/java/com/supervision/rasa/service/RasaTalkService.java index 7386e8e2..5fbd7418 100644 --- a/virtual-patient-rasa/src/main/java/com/supervision/rasa/service/RasaTalkService.java +++ b/virtual-patient-rasa/src/main/java/com/supervision/rasa/service/RasaTalkService.java @@ -1,6 +1,6 @@ package com.supervision.rasa.service; -import com.supervision.rasa.pojo.vo.RasaTalkVo; +import com.supervision.vo.rasa.RasaTalkVo; import java.util.List; diff --git a/virtual-patient-rasa/src/main/java/com/supervision/rasa/service/impl/RasaTalkServiceImpl.java b/virtual-patient-rasa/src/main/java/com/supervision/rasa/service/impl/RasaTalkServiceImpl.java index cdcd97e0..dd9bf7b8 100644 --- a/virtual-patient-rasa/src/main/java/com/supervision/rasa/service/impl/RasaTalkServiceImpl.java +++ b/virtual-patient-rasa/src/main/java/com/supervision/rasa/service/impl/RasaTalkServiceImpl.java @@ -1,6 +1,5 @@ package com.supervision.rasa.service.impl; -import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; @@ -8,7 +7,7 @@ import com.supervision.exception.BusinessException; import com.supervision.model.RasaModelInfo; import com.supervision.rasa.pojo.dto.RasaReqDTO; import com.supervision.rasa.pojo.dto.RasaResDTO; -import com.supervision.rasa.pojo.vo.RasaTalkVo; +import com.supervision.vo.rasa.RasaTalkVo; import com.supervision.rasa.service.RasaTalkService; import com.supervision.service.RasaModeService; import lombok.RequiredArgsConstructor; @@ -17,7 +16,6 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.List; -import java.util.function.Predicate; import java.util.stream.Collectors; @Service @Slf4j diff --git a/virtual-patient-rasa/src/main/resources/application.yml b/virtual-patient-rasa/src/main/resources/application.yml index 7fbc9f14..f7f5461d 100644 --- a/virtual-patient-rasa/src/main/resources/application.yml +++ b/virtual-patient-rasa/src/main/resources/application.yml @@ -1,7 +1,7 @@ server: port: 8890 servlet: - context-path: / + context-path: /virtual-patient-rasa undertow: # HTTP post内容的最大大小。当值为-1时,默认值为大小是无限的 max-http-post-size: -1 diff --git a/virtual-patient-web/pom.xml b/virtual-patient-web/pom.xml index d23ec0a0..67c7f60b 100644 --- a/virtual-patient-web/pom.xml +++ b/virtual-patient-web/pom.xml @@ -57,7 +57,6 @@ provided - diff --git a/virtual-patient-web/src/main/java/com/supervision/VirtualPatientApplication.java b/virtual-patient-web/src/main/java/com/supervision/VirtualPatientApplication.java index 45091892..7a4fcbf3 100644 --- a/virtual-patient-web/src/main/java/com/supervision/VirtualPatientApplication.java +++ b/virtual-patient-web/src/main/java/com/supervision/VirtualPatientApplication.java @@ -7,7 +7,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.web.socket.config.annotation.EnableWebSocket; -@EnableWebSocket @SpringBootApplication @MapperScan(basePackages = {"com.supervision.**.mapper"}) public class VirtualPatientApplication { diff --git a/virtual-patient-web/src/main/java/com/supervision/controller/AskController.java b/virtual-patient-web/src/main/java/com/supervision/controller/AskController.java index 3b3a497d..10d122f3 100644 --- a/virtual-patient-web/src/main/java/com/supervision/controller/AskController.java +++ b/virtual-patient-web/src/main/java/com/supervision/controller/AskController.java @@ -1,17 +1,15 @@ package com.supervision.controller; +import com.supervision.pojo.vo.TalkResultResVO; import com.supervision.service.AskService; -import com.supervision.websocket.cache.WebSocketUserCache; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.socket.TextMessage; -import org.springframework.web.socket.WebSocketSession; import java.io.IOException; -import java.util.List; @Api(tags = "问诊") @RestController @@ -22,17 +20,14 @@ public class AskController { private AskService askService; - @ApiOperation("发送消息到页面") - @GetMapping("/sendMessage") - public void sendMessage(String message, String sessionId) throws IOException { - WebSocketSession session = WebSocketUserCache.getSession(sessionId); - session.sendMessage(new TextMessage(message)); - } @ApiOperation("接收页面的语音消息(这个接口使用京东数字人接口来做)") @PostMapping("/receiveVoiceFile") - public String receiveVoiceFile(@RequestParam("file") MultipartFile file) throws IOException { - return askService.receiveVoiceFile(file); + public TalkResultResVO receiveVoiceFile(@RequestParam("file") MultipartFile file, + @ApiParam("流程ID") String processId, + @ApiParam("数字人房间的数字人ID") String roomKey, + @ApiParam("数字人的TOKEN") String roomToken) throws IOException { + return askService.receiveVoiceFile(file, processId, roomKey, roomToken); } @ApiOperation("回复语音及文字消息") @@ -41,12 +36,6 @@ public class AskController { return askService.replyVoice(); } - @ApiOperation("进行对话") - @GetMapping("conversation") - public List conversation(String question, String sessionId) { - return askService.conversation(question, sessionId); - } - @ApiOperation("查询对话历史") public void queryAskHistory(String processId) { diff --git a/virtual-patient-web/src/main/java/com/supervision/controller/TestController.java b/virtual-patient-web/src/main/java/com/supervision/controller/TestController.java index d180d35a..b3b1c70a 100644 --- a/virtual-patient-web/src/main/java/com/supervision/controller/TestController.java +++ b/virtual-patient-web/src/main/java/com/supervision/controller/TestController.java @@ -65,7 +65,7 @@ public class TestController { * @param roomId 房间ID */ @GetMapping("shuZiRenSend") - public void shuZiRenSend(String text, String roomId) { + public String shuZiRenSend(String text, String roomId) { HashMap param = new HashMap<>(); long timeStamp = System.currentTimeMillis(); @@ -79,8 +79,7 @@ public class TestController { (String) param.get("text"), (String) param.get("actionId"), (String) param.get("roomId"))); - String s = HttpUtil.get("https://digital-human.jd.com/text_driven", param); - System.out.println(s); + return HttpUtil.get("https://digital-human.jd.com/text_driven", param); } private static String getSign(String timeStamp, String nonce, String text, String actionId, String roomId) { diff --git a/virtual-patient-web/src/main/java/com/supervision/websocket/dto/ActionDTO.java b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/ActionDTO.java similarity index 84% rename from virtual-patient-web/src/main/java/com/supervision/websocket/dto/ActionDTO.java rename to virtual-patient-web/src/main/java/com/supervision/pojo/vo/ActionDTO.java index babff18d..f0b2e611 100644 --- a/virtual-patient-web/src/main/java/com/supervision/websocket/dto/ActionDTO.java +++ b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/ActionDTO.java @@ -1,4 +1,4 @@ -package com.supervision.websocket.dto; +package com.supervision.pojo.vo; import lombok.Data; diff --git a/virtual-patient-web/src/main/java/com/supervision/pojo/vo/TalkResultResVO.java b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/TalkResultResVO.java new file mode 100644 index 00000000..57a57a79 --- /dev/null +++ b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/TalkResultResVO.java @@ -0,0 +1,18 @@ +package com.supervision.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class TalkResultResVO { + + @ApiModelProperty("若有动作,这是需要执行的动作内容") + private ActionDTO action; + + /** + * 后端返回给前端时使用,表示该是消息还是action动作,1消息,2动作 + */ + @ApiModelProperty("后端返回给前端时使用,表示该是消息还是action动作,1消息,2动作") + private Integer type; + +} diff --git a/virtual-patient-web/src/main/java/com/supervision/service/AskService.java b/virtual-patient-web/src/main/java/com/supervision/service/AskService.java index 68653521..a09ad61a 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/AskService.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/AskService.java @@ -1,20 +1,15 @@ package com.supervision.service; -import com.supervision.websocket.dto.SocketMessageDTO; +import com.supervision.pojo.vo.TalkResultResVO; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.util.List; public interface AskService { - void handlerMessageBySocket(SocketMessageDTO socketMessageDTO) throws IOException; - - String receiveVoiceFile(MultipartFile file) throws IOException; + TalkResultResVO receiveVoiceFile(MultipartFile file, String processId, String roomKey, String roomToken) throws IOException; String replyVoice(); - List conversation(String question, String sessionId); - } diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskServiceImpl.java index 340d60b5..e62ace82 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskServiceImpl.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskServiceImpl.java @@ -1,104 +1,103 @@ package com.supervision.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; -import cn.hutool.json.JSONUtil; import com.supervision.exception.BusinessException; -import com.supervision.util.AsrUtil; -import com.supervision.util.TtsUtil; -import com.supervision.util.RasaUtil; +import com.supervision.model.DiagnosisQaRecord; +import com.supervision.model.Process; +import com.supervision.pojo.vo.TalkResultResVO; +import com.supervision.service.AskDefaultQuestionAnswerService; +import com.supervision.service.AskDiseaseQuestionAnswerService; +import com.supervision.service.ProcessService; +import com.supervision.util.*; import com.supervision.service.AskService; -import com.supervision.util.UserUtil; -import com.supervision.websocket.cache.WebSocketUserCache; -import com.supervision.websocket.dto.ActionDTO; -import com.supervision.websocket.dto.SocketMessageDTO; +import com.supervision.pojo.vo.ActionDTO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.socket.TextMessage; -import org.springframework.web.socket.WebSocketSession; import java.io.IOException; import java.util.List; +import java.util.Optional; +import java.util.Random; @Slf4j @Service @RequiredArgsConstructor public class AskServiceImpl implements AskService { + private final ProcessService processService; - @Override - public void handlerMessageBySocket(SocketMessageDTO socketMessageDTO) throws IOException { - // 首先获取消息的类型 - String text; - if (0 == socketMessageDTO.getMessageType()) { - // 如果是语音消息 - // 调用百度接口,语音转文字 - text = AsrUtil.asrTransformByBytes(socketMessageDTO.getVoiceMessage()); - } else { - text = socketMessageDTO.getTextMessage(); - } - if (StrUtil.isBlank(text)) { - throw new BusinessException("语音消息不能为空"); - } - // 进行rasa对话 - List rasaResultList = RasaUtil.talkRasa(text, socketMessageDTO.getSocketId()); - log.info("问题:{},rasa回复:{}", text, JSONUtil.toJsonStr(rasaResultList)); - WebSocketSession session = WebSocketUserCache.getSession(socketMessageDTO.getSocketId()); - for (String rasaResult : rasaResultList) { - if (StrUtil.isNotBlank(rasaResult)) { - // 这里校验,rasa回复的结果是不是action - // 这里设置的模板,对于action的动作全部是用---进行标记,详情看生成rasa的yml的代码:RasaServiceImpl.generateDomain - // ---ancillary---xxx - // ---tool---xxx - if (rasaResult.startsWith("---")) { - // ["","ancillary","xxx"] - List actionList = StrUtil.split(rasaResult, "---"); - if (actionList.size() > 2) { - ActionDTO actionDTO = new ActionDTO(); - actionDTO.setActionType(actionList.get(1)); - actionDTO.setActionId(actionList.get(2)); - // 在这里给socket回复,设置为动作 - SocketMessageDTO res = new SocketMessageDTO(); - res.setSocketId(socketMessageDTO.getSocketId()); - res.setUserId(UserUtil.getUser().getId()); - res.setAction(actionDTO); - res.setType(2); - session.sendMessage(new TextMessage(JSONUtil.toJsonStr(res))); - return; - } - } else { - // 走到这里,说明是文字,这个时候文字转语音 - String replyVoiceResVO = TtsUtil.ttsTransform(rasaResult); - // 在这里给socket回复 - SocketMessageDTO res = new SocketMessageDTO(); - res.setSocketId(socketMessageDTO.getSocketId()); - res.setUserId(UserUtil.getUser().getId()); - res.setTextMessage(rasaResult); - res.setVoiceMessage(replyVoiceResVO); - res.setType(1); - session.sendMessage(new TextMessage(JSONUtil.toJsonStr(res))); - return; - } - } - } - // 兜底,如果走到了这里,就直接返回未识别 - SocketMessageDTO res = new SocketMessageDTO(); - res.setSocketId(socketMessageDTO.getSocketId()); - res.setUserId(UserUtil.getUser().getId()); - res.setTextMessage("医生,我没有听懂您说的什么意思"); - res.setType(1); - session.sendMessage(new TextMessage(JSONUtil.toJsonStr(res))); - log.info("兜底话术,需要检查上面是不是出什么问题了"); - } + private final AskDiseaseQuestionAnswerService askDiseaseQuestionAnswerService; + + private final AskDefaultQuestionAnswerService askDefaultQuestionAnswerService; @Override - public String receiveVoiceFile(MultipartFile file) throws IOException { + @Transactional(rollbackFor = Exception.class) + public TalkResultResVO receiveVoiceFile(MultipartFile file, String processId, String roomKey, String roomToken) throws IOException { + // 根据processId找到对应的病人 + Process process = Optional.ofNullable(processService.getById(processId)).orElseThrow(() -> new BusinessException("未找到诊疗进程")); // 获取音频对应的文字 String askQuestion = AsrUtil.asrTransformByBytes(file.getBytes()); // 调用rasa获取文字内容 + String rasaResult = RasaUtil.talkRasa(askQuestion, UserUtil.getUser().getId(), process.getPatientId()); + TalkResultResVO talkResultResVO = new TalkResultResVO(); + // 这里校验,rasa回复的结果是不是action + // 这里设置的模板,对于action的动作全部是用ancillary_ | tool_进行标记,详情看生成rasa的yml的代码:RasaServiceImpl.generateDomain + // ancillary_ | tool_ + if (rasaResult.startsWith("ancillary_") || rasaResult.startsWith("tool_")) { + List actionList = StrUtil.split(rasaResult, '_'); + if (actionList.size() > 1) { + ActionDTO actionDTO = new ActionDTO(); + actionDTO.setActionType(actionList.get(0)); + actionDTO.setActionId(actionList.get(1)); + // 在这里给socket回复,设置为动作 + talkResultResVO.setAction(actionDTO); + talkResultResVO.setType(2); + return talkResultResVO; + } + } else { + // 语音消息,这时调用京东的接口进行播放操作 + // 这里调用京东数字人接口首先根据token获取房间号 + String roomId = HumanUtil.queryRoomId(roomKey, roomToken); + // 区分 + List answerIdList = StrUtil.split(rasaResult, '_'); + String qaId = null; + String qaType = "miss"; + String answer = "您好,我没有听懂您说什么"; + if (answerIdList.size() > 1) { + if (rasaResult.startsWith("default_")) { + qaType = "default"; + List answerList = Optional.ofNullable(askDefaultQuestionAnswerService.getById(answerIdList.get(1)).getAnswer()) + .orElse(CollUtil.newArrayList("您好,我没有听懂您说什么")); + answer = answerList.get(new Random().nextInt(answerList.size())); + qaId = answerIdList.get(1); - throw new BusinessException("暂未实现"); + } else if (rasaResult.startsWith("disease_")) { + qaType = "disease"; + List answerList = Optional.ofNullable(askDiseaseQuestionAnswerService.getById(answerIdList.get(1)).getAnswer()) + .orElse(CollUtil.newArrayList("您好,我没有听懂您说什么")); + answer = answerList.get(new Random().nextInt(answerList.size())); + qaId = answerIdList.get(1); + } + } + // 然后这里进行播放 + // 这里应该从对话中取结果 + HumanUtil.textDriven(rasaResult, roomId); + // 保存记录 + DiagnosisQaRecord record = new DiagnosisQaRecord(); + record.setProcessId(processId); + record.setQuestionAnswerType(qaType); + record.setQuestionAnswerId(qaId); + record.setQuestion(askQuestion); + record.setAnswer(answer); + record.setCreateUserId(UserUtil.getUser().getId()); + record.insert(); + } + talkResultResVO.setType(1); + return talkResultResVO; } @@ -109,8 +108,4 @@ public class AskServiceImpl implements AskService { } - @Override - public List conversation(String question, String sessionId) { - return RasaUtil.talkRasa(question, sessionId); - } } diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/RasaServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/RasaServiceImpl.java index e1595fe5..b4c4126e 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/impl/RasaServiceImpl.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/RasaServiceImpl.java @@ -93,7 +93,7 @@ public class RasaServiceImpl implements RasaService { nlu.setExamples(defaultQA.getQuestion()); nluList.add(nlu); // 添加到map中,key为意图编码,value为意图ID - intentCodeAndIdMap.put(intentCode, new QuestionAnswerDTO(defaultQA.getQuestion(), defaultQA.getAnswer(), defaultQA.getDescription())); + intentCodeAndIdMap.put(intentCode, new QuestionAnswerDTO(defaultQA.getQuestion(), CollUtil.newArrayList("default_" + defaultQA.getId()), defaultQA.getDescription())); } } // 然后处理该疾病对应的意图 @@ -124,7 +124,7 @@ public class RasaServiceImpl implements RasaService { nlu.setIntent(intentCode); nlu.setExamples(askTemplateQuestion.getQuestion()); nluList.add(nlu); - intentCodeAndIdMap.put(intentCode, new QuestionAnswerDTO(askTemplateQuestion.getQuestion(), askDiseaseQuestionAnswer.getAnswer(), askTemplateQuestion.getDescription())); + intentCodeAndIdMap.put(intentCode, new QuestionAnswerDTO(askTemplateQuestion.getQuestion(), CollUtil.newArrayList("disease_" + askDiseaseQuestionAnswer.getId()), askTemplateQuestion.getDescription())); } } @@ -144,7 +144,7 @@ public class RasaServiceImpl implements RasaService { // answer格式为:---tool---工具ID intentCodeAndIdMap.put(toolIntent, new QuestionAnswerDTO(tool.getCallOutQuestion(), - CollUtil.newArrayList("---tool---" + tool.getId()), "呼出-tool-" + tool.getToolName())); + CollUtil.newArrayList("tool_" + tool.getId()), "tool-" + tool.getToolName())); } // 生成呼出的辅助检查 @@ -162,7 +162,7 @@ public class RasaServiceImpl implements RasaService { // answer格式为:---ancillary---工具ID intentCodeAndIdMap.put(itemIntent, new QuestionAnswerDTO(ancillary.getCallOutQuestion(), - CollUtil.newArrayList("---ancillary---" + ancillary.getId()), "呼出-ancillary-" + ancillary.getItemName())); + CollUtil.newArrayList("ancillary_" + ancillary.getId()), "呼出-ancillary-" + ancillary.getItemName())); } NluYmlTemplate nluYmlTemplate = new NluYmlTemplate(); nluYmlTemplate.setNlu(nluList); diff --git a/virtual-patient-web/src/main/java/com/supervision/util/HumanUtil.java b/virtual-patient-web/src/main/java/com/supervision/util/HumanUtil.java new file mode 100644 index 00000000..a428192b --- /dev/null +++ b/virtual-patient-web/src/main/java/com/supervision/util/HumanUtil.java @@ -0,0 +1,101 @@ +package com.supervision.util; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.crypto.digest.MD5; +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.supervision.exception.BusinessException; +import com.supervision.exception.HumanException; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.core.env.Environment; + +import java.util.HashMap; +import java.util.Map; +import java.util.TreeMap; +import java.util.UUID; + +@Slf4j +public class HumanUtil { + private static final Environment environment = SpringBeanUtil.getBean(Environment.class); + + private static final String BASE_URL = environment.getProperty("human.base-url"); + + private static final String QUERY_ROOM_ID_URL = BASE_URL + environment.getProperty("human.room-id"); + + private static final String TEXT_DRIVEN_URL = BASE_URL + environment.getProperty("human.text-driven"); + + private static final String QUERY_TOKEN_STATUS = BASE_URL + environment.getProperty("human.talk-status"); + + + public static String queryRoomId(String roomKey, String roomToken) { + Map param = new HashMap<>(); + param.put("key", roomKey); + param.put("token", roomToken); + String res = HttpUtil.get(QUERY_ROOM_ID_URL, param); + HumanRes resDTO = JSONUtil.toBean(res, HumanRes.class); + if (!"200".equals(resDTO.code)) { + throw new BusinessException("获取房间号失败"); + } + // 去过为true,则data是房间号 + return resDTO.data; + } + + /** + * 这里是加锁的,注意,只能对应目前单机的情况,如果多节点,可能存在失效的问题 + * + * @param text 需要发送的内容 + * @param roomId 房间ID + */ + public static void textDriven(String text, String roomId) { + HashMap param = new HashMap<>(); + long timeStamp = System.currentTimeMillis(); + // 要播报的⽂本 + param.put("text", text); + // 当前数字⼈房间id + param.put("roomId", roomId); + // 动作id,默认-1 + param.put("action", "-1"); + // 请求唯⼀值,使⽤uuid即可,每次播报⽂本都要不同,否则视为重复播报,返回失败 + param.put("nonce", UUID.randomUUID().toString()); + // 毫秒 + param.put("timeStamp", String.valueOf(timeStamp)); + param.put("sign", getSign(String.valueOf(timeStamp), + (String) param.get("nonce"), + (String) param.get("text"), + (String) param.get("actionId"), + (String) param.get("roomId"))); + String res = HttpUtil.get(TEXT_DRIVEN_URL, param); + HumanRes resDTO = JSONUtil.toBean(res, HumanRes.class); + if (!"200".equals(resDTO.code)) { + throw HumanException.humanError("播放语音失败"); + } + } + + + + /** + * 获取验签 + * 对timeStamp、nonce、text、rootId、actionId组成的对象的json字符串进⾏MD5计算,结果是16位MD5值 + */ + private static String getSign(String timeStamp, String nonce, String text, String actionId, String roomId) { + Map paramMap = new TreeMap<>(); + paramMap.put("action", actionId); + paramMap.put("nonce", nonce); + paramMap.put("roomId", roomId); + paramMap.put("text", text); + paramMap.put("timeStamp", timeStamp); + String paramJsonString = JSONUtil.toJsonStr(paramMap); + return new MD5().digestHex16(paramJsonString); + } + + @Data + public static class HumanRes { + private String code; + + private String data; + + private String state; + } +} diff --git a/virtual-patient-web/src/main/java/com/supervision/util/RasaUtil.java b/virtual-patient-web/src/main/java/com/supervision/util/RasaUtil.java index 0aba82dc..15cce320 100644 --- a/virtual-patient-web/src/main/java/com/supervision/util/RasaUtil.java +++ b/virtual-patient-web/src/main/java/com/supervision/util/RasaUtil.java @@ -1,25 +1,35 @@ package com.supervision.util; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; import com.supervision.pojo.rasa.train.dto.RasaReqDTO; import com.supervision.pojo.rasa.train.dto.RasaResDTO; +import com.supervision.vo.rasa.RasaTalkVo; +import lombok.extern.slf4j.Slf4j; import org.springframework.core.env.Environment; import java.util.List; import java.util.stream.Collectors; +@Slf4j public class RasaUtil { private static final String RASA_URL = SpringBeanUtil.getBean(Environment.class).getProperty("rasa.url"); - public static List talkRasa(String question, String sessionId) { - RasaReqDTO rasaReqDTO = new RasaReqDTO(); - rasaReqDTO.setSender(sessionId); - rasaReqDTO.setMessage(question); - String post = HttpUtil.post(RASA_URL, JSONUtil.toJsonStr(rasaReqDTO)); - List list = JSONUtil.toList(post, RasaResDTO.class); - return list.stream().map(RasaResDTO::getText).collect(Collectors.toList()); + public static String talkRasa(String question, String sessionId, String patientId) { + RasaTalkVo rasaTalkVo = new RasaTalkVo(); + rasaTalkVo.setQuestion(question); + rasaTalkVo.setSessionId(sessionId); + rasaTalkVo.setModelId(patientId); + String post = HttpUtil.post(RASA_URL, JSONUtil.toJsonStr(rasaTalkVo)); + List list = JSONUtil.toList(post, String.class); + log.info("调用rasa对话返回结果:{}",post); + if (CollUtil.isEmpty(list)){ + return "对不起,我没有听懂您说的是什么意思"; + } + return CollUtil.getFirst(list); } diff --git a/virtual-patient-web/src/main/java/com/supervision/websocket/cache/WebSocketUserCache.java b/virtual-patient-web/src/main/java/com/supervision/websocket/cache/WebSocketUserCache.java deleted file mode 100644 index 9d796202..00000000 --- a/virtual-patient-web/src/main/java/com/supervision/websocket/cache/WebSocketUserCache.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.supervision.websocket.cache; - -import cn.hutool.core.util.ObjectUtil; -import com.supervision.exception.BusinessException; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.socket.WebSocketSession; - -import java.util.Collection; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -@Slf4j -public class WebSocketUserCache { - - private static final Map map = new ConcurrentHashMap<>(); - - - public static void login(String id, WebSocketSession socketSession) { - map.put(id, socketSession); - log.info("sessionId:{}注册成功", id); - - } - - public static void logout(String id) { - map.remove(id); - log.info("sessionId:{}注销成功", id); - } - - public static WebSocketSession getSession(String id){ - WebSocketSession webSocketSession = map.get(id); - if (ObjectUtil.isEmpty(webSocketSession)){ - throw new BusinessException("未找到socket链接"); - } - return webSocketSession; - } - -} diff --git a/virtual-patient-web/src/main/java/com/supervision/websocket/config/WebSocketConfig.java b/virtual-patient-web/src/main/java/com/supervision/websocket/config/WebSocketConfig.java deleted file mode 100644 index f923b623..00000000 --- a/virtual-patient-web/src/main/java/com/supervision/websocket/config/WebSocketConfig.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.supervision.websocket.config; - -import com.supervision.websocket.handler.AskWebSocketHandler; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.socket.WebSocketHandler; -import org.springframework.web.socket.config.annotation.WebSocketConfigurer; -import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; - -@Configuration -public class WebSocketConfig implements WebSocketConfigurer { - - @Override - public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { - registry.addHandler(askWebSocketHandler(), "/askSocket") - .setAllowedOrigins("*"); - } - - @Bean - public WebSocketHandler askWebSocketHandler() { - return new AskWebSocketHandler(); - } -} diff --git a/virtual-patient-web/src/main/java/com/supervision/websocket/dto/SocketMessageDTO.java b/virtual-patient-web/src/main/java/com/supervision/websocket/dto/SocketMessageDTO.java deleted file mode 100644 index 4146d79e..00000000 --- a/virtual-patient-web/src/main/java/com/supervision/websocket/dto/SocketMessageDTO.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.supervision.websocket.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -@ApiModel -public class SocketMessageDTO { - - @ApiModelProperty("socket链接ID") - private String socketId; - - @ApiModelProperty("当前用户ID") - private String userId; - - @ApiModelProperty("文字消息内容") - private String textMessage; - - @ApiModelProperty("语音消息内容") - private String voiceMessage; - - @ApiModelProperty("若有动作,这是需要执行的动作内容") - private ActionDTO action; - - /** - * 后端返回给前端时使用,表示该是消息还是action动作,1消息,2动作 - */ - @ApiModelProperty("后端返回给前端时使用,表示该是消息还是action动作,1消息,2动作") - private Integer type; - - /** - * 表示是消息还是action动作,0语音,1文字 - */ - @ApiModelProperty("前端到后端使用,表示是语音还是文字,1语音,2文字") - private Integer messageType; -} diff --git a/virtual-patient-web/src/main/java/com/supervision/websocket/handler/AskWebSocketHandler.java b/virtual-patient-web/src/main/java/com/supervision/websocket/handler/AskWebSocketHandler.java deleted file mode 100644 index e906db3e..00000000 --- a/virtual-patient-web/src/main/java/com/supervision/websocket/handler/AskWebSocketHandler.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.supervision.websocket.handler; - -import cn.hutool.json.JSONUtil; -import com.supervision.service.AskService; -import com.supervision.util.SpringBeanUtil; -import com.supervision.util.UserUtil; -import com.supervision.websocket.cache.WebSocketUserCache; -import com.supervision.websocket.dto.SocketMessageDTO; -import lombok.extern.slf4j.Slf4j; -import org.springframework.lang.NonNullApi; -import org.springframework.web.socket.CloseStatus; -import org.springframework.web.socket.TextMessage; -import org.springframework.web.socket.WebSocketSession; -import org.springframework.web.socket.handler.TextWebSocketHandler; - -import java.io.IOException; - -@Slf4j -public class AskWebSocketHandler extends TextWebSocketHandler { - - @Override - public void afterConnectionEstablished(WebSocketSession session) throws Exception { - // 获取本次 - String id = session.getId(); - // 缓存sessionId - WebSocketUserCache.login(id, session); - // 返回sessionId到前端 - SocketMessageDTO socketMessageDTO = new SocketMessageDTO(); - socketMessageDTO.setSocketId(id); - session.sendMessage(new TextMessage(JSONUtil.toJsonStr(socketMessageDTO))); - } - - @Override - protected void handleTextMessage(WebSocketSession session, TextMessage message) throws IOException { - // 处理接收到的消息 - log.info("收到消息:{}", message.toString()); - try { - // 这里反序列化消息,将消息形成固定的格式 - SocketMessageDTO socketMessageDTO = JSONUtil.toBean(message.getPayload(), SocketMessageDTO.class); - AskService askService = SpringBeanUtil.getBean(AskService.class); - askService.handlerMessageBySocket(socketMessageDTO); - } catch (Exception e) { - log.error("对话出现异常", e); - SocketMessageDTO res = new SocketMessageDTO(); - res.setSocketId(session.getId()); - res.setUserId(UserUtil.getUser().getId()); - res.setTextMessage("出错了"); - res.setType(1); - session.sendMessage(new TextMessage(JSONUtil.toJsonStr(res))); - } - - } - - @Override - public void afterConnectionClosed(WebSocketSession session, CloseStatus status) { - // 连接关闭时的处理逻辑 - String id = session.getId(); - WebSocketUserCache.logout(id); - } -} diff --git a/virtual-patient-web/src/main/resources/application.yml b/virtual-patient-web/src/main/resources/application.yml index 15f554ae..0aabcc72 100644 --- a/virtual-patient-web/src/main/resources/application.yml +++ b/virtual-patient-web/src/main/resources/application.yml @@ -2,7 +2,7 @@ server: port: 8899 servlet: - context-path: / + context-path: /virtual-patient undertow: # HTTP post内容的最大大小。当值为-1时,默认值为大小是无限的 max-http-post-size: -1 @@ -62,4 +62,9 @@ paddle-speech: tts: http://192.168.10.137:8090/paddlespeech/tts asr: http://192.168.10.137:8090/paddlespeech/asr rasa: - url: 192.168.10.137:5005/webhooks/rest/webhook \ No newline at end of file + url: http://192.168.10.137:8890/rasa/talkRasa +human: + base-url: https://digital-human.jd.com + room-id: /getRoomId + text-driven: /text_driven + talk-status: /talkStatus \ No newline at end of file