瀏覽代碼

feat: chatpanel for inquery case

haitao 4 月之前
父節點
當前提交
dedc0668aa
共有 4 個文件被更改,包括 88 次插入7 次删除
  1. 4 4
      package-lock.json
  2. 1 1
      package.json
  3. 8 1
      src/app/tab2/tab2.page.html
  4. 75 1
      src/app/tab2/tab2.page.ts

+ 4 - 4
package-lock.json

@@ -22,7 +22,7 @@
         "@capacitor/keyboard": "6.0.3",
         "@capacitor/status-bar": "6.0.2",
         "@ionic/angular": "^8.0.0",
-        "fmode-ng": "^0.0.62",
+        "fmode-ng": "^0.0.63",
         "ionicons": "^7.2.1",
         "rxjs": "~7.8.0",
         "tslib": "^2.3.0",
@@ -10380,9 +10380,9 @@
       "license": "ISC"
     },
     "node_modules/fmode-ng": {
-      "version": "0.0.62",
-      "resolved": "https://registry.npmmirror.com/fmode-ng/-/fmode-ng-0.0.62.tgz",
-      "integrity": "sha512-F0RzEu47NgKpaHp/vBEzjsU4efJ1lKLAbbdPE5hltj1W1cDaeht/i6UlEidid4FAEdAg7c9rrQrLgOh/zUfCsg==",
+      "version": "0.0.63",
+      "resolved": "https://registry.npmmirror.com/fmode-ng/-/fmode-ng-0.0.63.tgz",
+      "integrity": "sha512-gTiDZO2CchcTYAmlaweapasqV/8PdhG2vizJNn5dYZyXjgtrjyW+KeW5k2EVyIDvM1+bMGjjhGmr76Fc0TElxw==",
       "license": "COPYRIGHT © 未来飞马 未来全栈 www.fmode.cn All RIGHTS RESERVED",
       "dependencies": {
         "tslib": "^2.3.0"

+ 1 - 1
package.json

@@ -27,7 +27,7 @@
     "@capacitor/keyboard": "6.0.3",
     "@capacitor/status-bar": "6.0.2",
     "@ionic/angular": "^8.0.0",
-    "fmode-ng": "^0.0.62",
+    "fmode-ng": "^0.0.63",
     "ionicons": "^7.2.1",
     "rxjs": "~7.8.0",
     "tslib": "^2.3.0",

+ 8 - 1
src/app/tab2/tab2.page.html

@@ -7,5 +7,12 @@
 </ion-header>
 
 <ion-content [fullscreen]="true">
-  <ion-button (click)="goChat()">开始聊天</ion-button>
+  <h1>页面:配置路由和参数的聊天页</h1>
+  <ion-button (click)="goChat()">开始页面聊天</ion-button>
+  <h1>组件:直接弹出的聊天组件</h1>
+  <ion-button (click)="openChat()">开始新聊天</ion-button>
+  <ion-button (click)="restoreChat('yHEHqMQDNv')">恢复会话</ion-button>
+  <h1>示例:门诊问诊的智能体示例(ChatPanel组件)</h1>
+  <ion-button (click)="openInquiry()">进入门诊</ion-button>
+
 </ion-content>

+ 75 - 1
src/app/tab2/tab2.page.ts

@@ -2,7 +2,7 @@ import { Component } from '@angular/core';
 import { Router } from '@angular/router';
 import { IonHeader, IonToolbar, IonTitle, IonContent, ModalController, IonButton } from '@ionic/angular/standalone';
 import { ExploreContainerComponent } from '../explore-container/explore-container.component';
-import { FmChatModalInput } from 'fmode-ng';
+import { ChatPanelOptions, FmChatModalInput, FmodeChat, FmodeChatMessage, openChatPanelModal } from 'fmode-ng';
 // import { ModalAudioMessageComponent } from 'fmode-ng/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component';
 
 @Component({
@@ -27,6 +27,80 @@ export class Tab2Page {
 
   }
 
+  /** 示例:问诊ChatPanel面板 */
+  openInquiry(){
+    localStorage.setItem("company","E4KpGvTEto")
+    let options:ChatPanelOptions = {
+      roleId:"2DXJkRsjXK",
+      onChatInit:(chat:FmodeChat)=>{
+        console.log("onChatInit");
+              console.log("预设角色",chat.role);
+              chat.role.set("name","晓晓");
+              chat.role.set("title","全科医生");
+              chat.role.set("desc","一名亲切和蔼的门诊全科主任医生,晓晓,年龄36岁");
+              chat.role.set("tags",["全科","门诊"]);
+              chat.role.set("avatar","https://nova-cloud.obs.cn-south-1.myhuaweicloud.com/storage/aigc/imagine/Q4Zif7fTbK-0.png")
+              chat.role.set("prompt",`
+# 角色设定
+您是一名亲切和蔼的专业的全科医生,晓晓,年龄36岁,需要完成一次完整的门诊服务。
+
+# 对话环节
+0.导诊(根据用户基本情况,引导挂号合适的科室)
+1.预设的问询方式(感冒问呼吸、肚子疼叩诊)
+- 打招呼,以用户自述为主
+- 当信息充足时候,确认用户症状对应的科室,并进入下一个环节
+2.拓展的问询细节
+例如:用户反映呼吸不畅,拓展出:是否咳嗽;是否感觉痛或者痒等其他需要的问题。
+- 当问询细节补充完成后进入下一个环节
+3.初步的诊断结果,并且同时列出检查检验项目
+初步诊断:确定需要有哪些进一步检查
+检查检验:获取医学客观数据
+- 等待用户提交客观数据,进入下一阶段
+4.给出诊断方案并给出处方
+- 完成处方时,请在消息结尾附带: [完成]
+
+# 开始话语
+当您准备好了,可以以一个医生的身份,向来访的用户打招呼。`);
+      },
+      onMessage:(chat:FmodeChat,message:FmodeChatMessage)=>{
+        console.log("onMessage",message)
+        let content:any = message?.content
+        if(typeof content == "string"){
+          if(content?.indexOf("[完成]")>-1){
+            console.log("门诊已完成")
+          }
+        }
+      },
+      onChatSaved:(chat:FmodeChat)=>{
+        // chat?.chatSession?.id 本次会话的 chatId
+        console.log("onChatSaved",chat,chat?.chatSession,chat?.chatSession?.id)
+      }
+    }
+    openChatPanelModal(this.modalCtrl,options)
+  }
+
+  openChat(){
+    let options:ChatPanelOptions = {
+      roleId:"2DXJkRsjXK",
+      onChatSaved:(chat:FmodeChat)=>{
+        // chat?.chatSession?.id 本次会话的 chatId
+      
+console.log("onChatSaved",chat,chat?.chatSession,chat?.chatSession?.id)
+
+      },
+
+    }
+    openChatPanelModal(this.modalCtrl,options)
+  }
+
+  restoreChat(chatId:string){
+    let options:ChatPanelOptions = {
+      roleId:"2DXJkRsjXK",
+      chatId:chatId
+    }
+    openChatPanelModal(this.modalCtrl,options)
+  }
+
   goChat(){
     this.router.navigateByUrl("/chat/session/role/2DXJkRsjXK")
   }