|  | @@ -5,8 +5,9 @@ import { IonButton, IonCard, IonCardContent, IonCardHeader, IonCardTitle, IonIte
 | 
											
												
													
														|  |     IonList,IonSelect, IonSelectOption } from '@ionic/angular/standalone';
 |  |     IonList,IonSelect, IonSelectOption } from '@ionic/angular/standalone';
 | 
											
												
													
														|  |  import { CommonModule } from '@angular/common';
 |  |  import { CommonModule } from '@angular/common';
 | 
											
												
													
														|  |  import { Router } from '@angular/router';
 |  |  import { Router } from '@angular/router';
 | 
											
												
													
														|  | -import { ChatPanelOptions, FmodeChat, openChatPanelModal } from 'fmode-ng';
 |  | 
 | 
											
												
													
														|  | 
 |  | +import { ChatPanelOptions, FmodeChat, FmodeChatMessage, openChatPanelModal } from 'fmode-ng';
 | 
											
												
													
														|  |  import { ModalController } from '@ionic/angular/standalone';
 |  |  import { ModalController } from '@ionic/angular/standalone';
 | 
											
												
													
														|  | 
 |  | +import { CloudObject, CloudQuery } from 'src/lib/ncloud';
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  @Component({
 |  |  @Component({
 | 
											
												
													
														|  |    selector: 'app-tab2',
 |  |    selector: 'app-tab2',
 | 
											
										
											
												
													
														|  | @@ -29,50 +30,53 @@ export class Tab2Page {
 | 
											
												
													
														|  |      this.modalCtrl = modalCtrl;
 |  |      this.modalCtrl = modalCtrl;
 | 
											
												
													
														|  |      // 其他构造函数代码
 |  |      // 其他构造函数代码
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  | -  consultants = [
 |  | 
 | 
											
												
													
														|  | -    {
 |  | 
 | 
											
												
													
														|  | -      name: '小娇陪聊师',
 |  | 
 | 
											
												
													
														|  | -      bio:"注于焦虑症的李晓慧,通过认知行为疗法帮助来访者重拾内心的平静与自信",
 |  | 
 | 
											
												
													
														|  | -      avatar: '/assets/img/2.png',
 |  | 
 | 
											
												
													
														|  | -      expertise: ['专业领域:焦虑']
 |  | 
 | 
											
												
													
														|  | -    },
 |  | 
 | 
											
												
													
														|  | -    {
 |  | 
 | 
											
												
													
														|  | -      name: '小易陪聊师',
 |  | 
 | 
											
												
													
														|  | -      bio:"致力于抑郁症辅导,运用共情与认知疗法帮助来访者重建积极的生活态度",
 |  | 
 | 
											
												
													
														|  | -      avatar: '/assets/img/4.png',
 |  | 
 | 
											
												
													
														|  | -      expertise: ['专业领域:抑郁']
 |  | 
 | 
											
												
													
														|  | -    },
 |  | 
 | 
											
												
													
														|  | -    {
 |  | 
 | 
											
												
													
														|  | -      name: '小雅陪聊师',
 |  | 
 | 
											
												
													
														|  | -      bio:"专注于压力管理,通过实用技巧帮助来访者提升自我效能,找到生活平衡",
 |  | 
 | 
											
												
													
														|  | -      avatar: '/assets/img/5.png',
 |  | 
 | 
											
												
													
														|  | -      expertise: ['专业领域:压力']
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -  ];
 |  | 
 | 
											
												
													
														|  | -  clickToConsult(consultant:any) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +  clickToConsult(chatpartner:CloudObject) {
 | 
											
												
													
														|  |      // 弹窗形式聊天:开始咨询
 |  |      // 弹窗形式聊天:开始咨询
 | 
											
												
													
														|  | 
 |  | +    localStorage.setItem("company","E4KpGvTEto")
 | 
											
												
													
														|  | 
 |  | +    let consult = new CloudObject("ChatRecord")
 | 
											
												
													
														|  | 
 |  | +    let now = new Date();
 | 
											
												
													
														|  | 
 |  | +    let dateStr = `${now.getFullYear()}-${now.getMonth()+1}-${now.getDate()}`
 | 
											
												
													
														|  | 
 |  | +    consult.set({
 | 
											
												
													
														|  | 
 |  | +      title:`${chatpartner.get('expertise') || ""}聊天记录${dateStr}-${chatpartner.get('name')}`,
 | 
											
												
													
														|  | 
 |  | +      chatpartner:chatpartner.toPointer(),
 | 
											
												
													
														|  | 
 |  | +    })
 | 
											
												
													
														|  |      let options:ChatPanelOptions = {
 |  |      let options:ChatPanelOptions = {
 | 
											
												
													
														|  |        roleId:"2DXJkRsjXK",
 |  |        roleId:"2DXJkRsjXK",
 | 
											
												
													
														|  |        onChatInit: (chat: FmodeChat) => {
 |  |        onChatInit: (chat: FmodeChat) => {
 | 
											
												
													
														|  |          console.log("onChatInit");
 |  |          console.log("onChatInit");
 | 
											
												
													
														|  |          console.log("预设角色", chat.role);
 |  |          console.log("预设角色", chat.role);
 | 
											
												
													
														|  | -        chat.role.set("name", consultant.name);
 |  | 
 | 
											
												
													
														|  | -        chat.role.set("bio",consultant.bio);
 |  | 
 | 
											
												
													
														|  | -        chat.role.set("expertise", consultant.expertise);
 |  | 
 | 
											
												
													
														|  | -        chat.role.set("avatar", consultant.avatar)
 |  | 
 | 
											
												
													
														|  | 
 |  | +        chat.role.set("name", chatpartner.get("name"));
 | 
											
												
													
														|  | 
 |  | +        chat.role.set("bio",chatpartner.get("bio"));
 | 
											
												
													
														|  | 
 |  | +        chat.role.set("expertise", chatpartner.get("expertise"));
 | 
											
												
													
														|  | 
 |  | +        chat.role.set("avatar", chatpartner.get("avatar") || "/assets/img/2.png")
 | 
											
												
													
														|  |          chat.role.set("prompt", `
 |  |          chat.role.set("prompt", `
 | 
											
												
													
														|  |          # 角色设定
 |  |          # 角色设定
 | 
											
												
													
														|  | -        您是${consultant.name},一位${consultant.title},${consultant.desc},需要为学生提供陪伴和支持等积极情绪。
 |  | 
 | 
											
												
													
														|  | -`);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        您是${chatpartner.get("name")},一位${chatpartner.get("bio")},${chatpartner.get("expertise")},需要为用户提供陪伴和支持等积极情绪。
 | 
											
												
													
														|  | 
 |  | +        # 对话环节
 | 
											
												
													
														|  | 
 |  | +        用户提及到关于不想聊了、不想说了、有事先走了类似的话语,耐心积极开导回复结束后请在消息结尾附带: [聊天结束]
 | 
											
												
													
														|  | 
 |  | +        # 开始话语
 | 
											
												
													
														|  | 
 |  | +        当您准备好了,可以以一个关心用户的朋友的身份,向来访的用户打招呼。
 | 
											
												
													
														|  | 
 |  | +        `);
 | 
											
												
													
														|  | 
 |  | +      },
 | 
											
												
													
														|  | 
 |  | +      onMessage:(chat:FmodeChat,message:FmodeChatMessage)=>{
 | 
											
												
													
														|  | 
 |  | +        console.log("onMessage",message)
 | 
											
												
													
														|  | 
 |  | +        let content:any = message?.content
 | 
											
												
													
														|  | 
 |  | +        if(typeof content == "string"){
 | 
											
												
													
														|  | 
 |  | +          if(content?.indexOf("[聊天结束]")>-1){
 | 
											
												
													
														|  | 
 |  | +            console.log("聊天结束")
 | 
											
												
													
														|  | 
 |  | +            consult.set({
 | 
											
												
													
														|  | 
 |  | +              content:content
 | 
											
												
													
														|  | 
 |  | +            })
 | 
											
												
													
														|  | 
 |  | +            consult.save();
 | 
											
												
													
														|  | 
 |  | +          }
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  |        },
 |  |        },
 | 
											
												
													
														|  | -      onChatSaved:(chat:FmodeChat)=>{
 |  | 
 | 
											
												
													
														|  |          // chat?.chatSession?.id 本次会话的 chatId
 |  |          // chat?.chatSession?.id 本次会话的 chatId
 | 
											
												
													
														|  | 
 |  | +        onChatSaved:(chat:FmodeChat)=>{
 | 
											
												
													
														|  |          console.log("onChatSaved",chat,chat?.chatSession,chat?.chatSession?.id)
 |  |          console.log("onChatSaved",chat,chat?.chatSession,chat?.chatSession?.id)
 | 
											
												
													
														|  | -      },
 |  | 
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |      openChatPanelModal(this.modalCtrl,options)
 |  |      openChatPanelModal(this.modalCtrl,options)
 | 
											
												
													
														|  | -    // 页面形式聊天:开始咨询
 |  | 
 | 
											
												
													
														|  | -    // this.router.navigateByUrl("/chat/session/role/2DXJkRsjXK")
 |  | 
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  |    //selectedIssue:string='';
 |  |    //selectedIssue:string='';
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -98,15 +102,16 @@ export class Tab2Page {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |    matchCounselor() {
 |  |    matchCounselor() {
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  | -  putong = [
 |  | 
 | 
											
												
													
														|  | -    {
 |  | 
 | 
											
												
													
														|  | -      name: '小娇陪聊师',
 |  | 
 | 
											
												
													
														|  | -      bio:"注于焦虑症的李晓慧,通过认知行为疗法帮助来访者重拾内心的平静与自信",
 |  | 
 | 
											
												
													
														|  | -      avatar: '/assets/img/2.png',
 |  | 
 | 
											
												
													
														|  | -      expertise: ['专业领域:焦虑']
 |  | 
 | 
											
												
													
														|  | -    },
 |  | 
 | 
											
												
													
														|  | -  ]
 |  | 
 | 
											
												
													
														|  |    goChat(){
 |  |    goChat(){
 | 
											
												
													
														|  |        this.router.navigateByUrl("/chat/session/role/2DXJkRsjXK")
 |  |        this.router.navigateByUrl("/chat/session/role/2DXJkRsjXK")
 | 
											
												
													
														|  | 
 |  | +  } 
 | 
											
												
													
														|  | 
 |  | +  ngOnInit() {
 | 
											
												
													
														|  | 
 |  | +    this.loadChatPartnerList()
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +  chatpartnerList:Array<CloudObject>=[]
 | 
											
												
													
														|  | 
 |  | +  async loadChatPartnerList(){
 | 
											
												
													
														|  | 
 |  | +    let query = new CloudQuery("ChatPartner");
 | 
											
												
													
														|  | 
 |  | +    this.chatpartnerList = await query.find()
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  |  }
 |  |  }
 |