|
@@ -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()
|
|
}
|
|
}
|
|
}
|
|
}
|