Commit 155a35b4 authored by Steven杜宇's avatar Steven杜宇

// AI

parent df5e593a
...@@ -79,4 +79,35 @@ class YHAIChatConfiguration { ...@@ -79,4 +79,35 @@ class YHAIChatConfiguration {
messages.remove(at: findIndex) messages.remove(at: findIndex)
} }
} }
func createRobotResponseTextMessage(_ text: String) -> YHAIChatMessage {
let message = YHAIChatMessage()
message.messageId = UUID().uuidString + NSDate().timeIntervalSince1970.description
message.isSelf = false
let body = YHAIMessageBody()
body.contentType = YHAIMessageType.text.rawValue
body.contentText = text
message.setDone()
message.body = body
message.updateBodyToData()
return message
}
func createRobotResponseLocalPictureMessage(_ imgName: String) -> YHAIChatMessage {
let message = YHAIChatMessage()
message.messageId = UUID().uuidString + NSDate().timeIntervalSince1970.description
message.isSelf = false
let body = YHAIMessageBody()
body.contentType = YHAIMessageType.picture.rawValue
let imgInfo = YHAIImageInfo()
imgInfo.imageType = YHAIImageType.local.rawValue
imgInfo.localImageName = imgName
body.imageInfo = imgInfo
message.setDone()
message.body = body
message.updateBodyToData()
return message
}
} }
...@@ -15,8 +15,7 @@ class YHAIMainChatViewController: YHBaseViewController { ...@@ -15,8 +15,7 @@ class YHAIMainChatViewController: YHBaseViewController {
var robotId: String = "" var robotId: String = ""
var conversationId: String = "" var conversationId: String = ""
var historyLastMessageId: String = "" var isNeedAutoResponseImage = false
var messages:[YHAIChatMessage] = [] var messages:[YHAIChatMessage] = []
let manager = YHAIRequestManager() let manager = YHAIRequestManager()
...@@ -111,6 +110,11 @@ class YHAIMainChatViewController: YHBaseViewController { ...@@ -111,6 +110,11 @@ class YHAIMainChatViewController: YHBaseViewController {
} }
} }
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
autoResponseLocalPictureMessage()
}
func scrollToBottom() { func scrollToBottom() {
self.tableView.reloadData { self.tableView.reloadData {
if self.messages.count > 0 { if self.messages.count > 0 {
...@@ -149,11 +153,10 @@ class YHAIMainChatViewController: YHBaseViewController { ...@@ -149,11 +153,10 @@ class YHAIMainChatViewController: YHBaseViewController {
if !isPull { if !isPull {
YHHUD.show(.progress(message: "加载中...")) YHHUD.show(.progress(message: "加载中..."))
} }
viewModel.getHistoryChatMessages(botId: robotId, conversationId: conversationId, messageId: historyLastMessageId) { viewModel.getHistoryChatMessages(botId: robotId, conversationId: conversationId, messageId: "") {
[weak self] success, error in [weak self] success, error in
YHHUD.hide() YHHUD.hide()
guard let self = self else { return } guard let self = self else { return }
self.historyLastMessageId = self.viewModel.lastHistroyMsgId
self.tableView.es.stopPullToRefresh() self.tableView.es.stopPullToRefresh()
var results = self.viewModel.historyMessages.map { var results = self.viewModel.historyMessages.map {
...@@ -172,6 +175,14 @@ class YHAIMainChatViewController: YHBaseViewController { ...@@ -172,6 +175,14 @@ class YHAIMainChatViewController: YHBaseViewController {
} }
} }
func autoResponseLocalPictureMessage() {
if isNeedAutoResponseImage {
let msg = self.chatConfig.createRobotResponseLocalPictureMessage("ai_auto_chat_img")
messages.append(msg)
self.tableView.reloadData()
}
}
func uploadEvaluationMessage(_ msg: YHAIChatMessage, callback:((Bool)->())? = nil) { func uploadEvaluationMessage(_ msg: YHAIChatMessage, callback:((Bool)->())? = nil) {
viewModel.createMessage(conversationId: conversationId, role: "assistant", msg: msg) { viewModel.createMessage(conversationId: conversationId, role: "assistant", msg: msg) {
[weak self] success, error in [weak self] success, error in
......
...@@ -17,7 +17,6 @@ class YHAIRobotChatViewController: YHBaseViewController { ...@@ -17,7 +17,6 @@ class YHAIRobotChatViewController: YHBaseViewController {
var listItemId: Int = 0 var listItemId: Int = 0
var conversationId: String = "" var conversationId: String = ""
var messages:[YHAIChatMessage] = [] var messages:[YHAIChatMessage] = []
var historyLastMessageId: String = ""
var isNeedShowBannerHeader: Bool = false var isNeedShowBannerHeader: Bool = false
var robotType: String = "" var robotType: String = ""
let manager = YHAIRequestManager() let manager = YHAIRequestManager()
...@@ -169,11 +168,10 @@ class YHAIRobotChatViewController: YHBaseViewController { ...@@ -169,11 +168,10 @@ class YHAIRobotChatViewController: YHBaseViewController {
printLog("PULL MESSAGE HISTORY") printLog("PULL MESSAGE HISTORY")
} }
viewModel.getHistoryChatMessages(botId: robotId, conversationId: conversationId, messageId: historyLastMessageId) { viewModel.getHistoryChatMessages(botId: robotId, conversationId: conversationId, messageId: "") {
[weak self] success, error in [weak self] success, error in
YHHUD.hide() YHHUD.hide()
guard let self = self else { return } guard let self = self else { return }
self.historyLastMessageId = self.viewModel.lastHistroyMsgId
self.tableView.es.stopPullToRefresh() self.tableView.es.stopPullToRefresh()
var results = self.viewModel.historyMessages.map { var results = self.viewModel.historyMessages.map {
...@@ -189,9 +187,21 @@ class YHAIRobotChatViewController: YHBaseViewController { ...@@ -189,9 +187,21 @@ class YHAIRobotChatViewController: YHBaseViewController {
} }
messages.insert(contentsOf: results, at: 0) messages.insert(contentsOf: results, at: 0)
self.tableView.reloadData() self.tableView.reloadData()
autoResponseLocalTextMessage()
} }
} }
func autoResponseLocalTextMessage() {
if messages.count <= 0 {
if robotType == YHAIRobotType.sale.rawValue {
let text = "银河集团能够为您提供全方位、一站式的香港身份规划及本地生活服务。\n在身份规划方面,我们专注于香港优才、专才、留学等身份产品服务,根据您的个人情况和需求,量身定制最合适的身份规划方案,助您轻松获取香港身份,享受香港的各项福利和优势。\n同时,我们还提供丰富的香港本地生活服务,包括教育咨询、商务支持、个人账户开设、港宝(即香港宝宝)相关服务、保险规划以及房产购置等。我们的专业团队对香港市场有着深入的了解,能够为您提供精准、高效的服务,让您在香港的生活更加便捷、舒适。\n银河集团凭借多年的行业经验和丰富的成功案例,以及专业、敬业的团队,致力于为客户提供最优质、最贴心的服务。选择银河集团,您将享受到专业、高效、便捷的服务体验,让我们携手共创美好未来。"
let msg = self.chatConfig.createRobotResponseTextMessage(text)
messages.append(msg)
self.tableView.reloadData()
}
}
}
func uploadEvaluationMessage(_ msg: YHAIChatMessage, callback:((Bool)->())? = nil) { func uploadEvaluationMessage(_ msg: YHAIChatMessage, callback:((Bool)->())? = nil) {
viewModel.createMessage(conversationId: conversationId, role: "assistant", msg: msg) { viewModel.createMessage(conversationId: conversationId, role: "assistant", msg: msg) {
......
...@@ -10,6 +10,8 @@ import UIKit ...@@ -10,6 +10,8 @@ import UIKit
import JXSegmentedView import JXSegmentedView
import IQKeyboardManagerSwift import IQKeyboardManagerSwift
let isNeedShowAutoPictureMsg = "isNeedShowAutoPictureMsg"
class YHAIServiceListViewController: YHBaseViewController { class YHAIServiceListViewController: YHBaseViewController {
var serviceArr: [YHEntranceconfigModel] = [] var serviceArr: [YHEntranceconfigModel] = []
...@@ -79,7 +81,8 @@ class YHAIServiceListViewController: YHBaseViewController { ...@@ -79,7 +81,8 @@ class YHAIServiceListViewController: YHBaseViewController {
}() }()
@objc func didInputButtonClicked() { @objc func didInputButtonClicked() {
NotificationCenter.default.post(name: YhConstant.YhNotification.didSwitchToAIChatNotification, object: nil) let dict:[String : Any] = [isNeedShowAutoPictureMsg : false]
NotificationCenter.default.post(name: YhConstant.YhNotification.didSwitchToAIChatNotification, object: dict)
} }
override func viewDidLoad() { override func viewDidLoad() {
...@@ -173,7 +176,8 @@ extension YHAIServiceListViewController: UICollectionViewDelegate, UICollectionV ...@@ -173,7 +176,8 @@ extension YHAIServiceListViewController: UICollectionViewDelegate, UICollectionV
if model.businessType == YHAIRobotType.main.rawValue { if model.businessType == YHAIRobotType.main.rawValue {
// 切到主Robot // 切到主Robot
NotificationCenter.default.post(name: YhConstant.YhNotification.didSwitchToAIChatNotification, object: nil) let dict:[String : Any] = [isNeedShowAutoPictureMsg : true]
NotificationCenter.default.post(name: YhConstant.YhNotification.didSwitchToAIChatNotification, object: dict)
} else { } else {
......
...@@ -112,7 +112,7 @@ class YHAITabViewController: YHBaseViewController { ...@@ -112,7 +112,7 @@ class YHAITabViewController: YHBaseViewController {
IQKeyboardManager.shared.isEnabled = false IQKeyboardManager.shared.isEnabled = false
NotificationCenter.default.addObserver(self, selector: #selector(didJumoToAIChat), name: YhConstant.YhNotification.didSwitchToAIChatNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(didJumoToAIChat(_:)), name: YhConstant.YhNotification.didSwitchToAIChatNotification, object: nil)
view.addSubview(bgImgView) view.addSubview(bgImgView)
view.addSubview(headerImgView) view.addSubview(headerImgView)
...@@ -202,9 +202,19 @@ class YHAITabViewController: YHBaseViewController { ...@@ -202,9 +202,19 @@ class YHAITabViewController: YHBaseViewController {
self.segmentedView.selectItemAt(index: itemIndex) self.segmentedView.selectItemAt(index: itemIndex)
} }
@objc func didJumoToAIChat() { @objc func didJumoToAIChat(_ notify: Notification) {
var showImg = false
if let dict = notify.object as? [String : Any] {
if let isShowImg = dict[isNeedShowAutoPictureMsg] as? Bool {
showImg = isShowImg
}
}
printLog("SHOW_IMG: \(showImg)")
mainChatVC.isNeedAutoResponseImage = showImg
jumpToItemIndex(itemIndex: 1) jumpToItemIndex(itemIndex: 1)
mainChatVC.bottomInputView.showKeyBoard() mainChatVC.bottomInputView.showKeyBoard()
} }
@objc func didCleanButtonClicked() { @objc func didCleanButtonClicked() {
......
...@@ -285,11 +285,17 @@ class YHProductTag: SmartCodable { ...@@ -285,11 +285,17 @@ class YHProductTag: SmartCodable {
} }
} }
enum YHAIImageType: Int {
case url = 1
case local = 2
}
class YHAIImageInfo: SmartCodable { class YHAIImageInfo: SmartCodable {
var imageType: Int = 0 var imageType: Int = 0 // 0 url图片 1本地图片
var imageUrl: String = "" var imageUrl: String = ""
var imageDownloadUrl: String = "" var imageDownloadUrl: String = ""
var localImageName: String = ""
required init() { required init() {
......
...@@ -15,15 +15,33 @@ class YHAIPictureMessageCell: UITableViewCell { ...@@ -15,15 +15,33 @@ class YHAIPictureMessageCell: UITableViewCell {
var imgInfo = YHAIImageInfo() { var imgInfo = YHAIImageInfo() {
didSet { didSet {
imgView.sd_setImage(with: URL(string: imgInfo.imageUrl), placeholderImage: UIImage(named: "global_default_image"), options: [], completed: { (image, error, cacheType, url) in if imgInfo.imageType == YHAIImageType.url.rawValue {
imgView.sd_setImage(with: URL(string: imgInfo.imageUrl), placeholderImage: UIImage(named: "global_default_image"), options: [], completed: { (image, error, cacheType, url) in
let size = self.getShowSize(image: image!)
self.imgView.snp.updateConstraints { make in
make.width.equalTo(size.width)
make.height.equalTo(size.height)
}
})
let size = self.getShowSize(image: image!) } else if imgInfo.imageType == YHAIImageType.local.rawValue {
self.imgView.snp.updateConstraints { make in if let img = UIImage(named: imgInfo.localImageName) {
make.width.equalTo(size.width) imgView.image = img
make.height.equalTo(size.height) self.imgView.snp.updateConstraints { make in
make.width.equalTo(img.size.width)
make.height.equalTo(img.size.height)
}
} else {
imgView.image = UIImage(named: "global_default_image")
self.imgView.snp.updateConstraints { make in
make.width.equalTo(200)
make.height.equalTo(200)
}
} }
self.setNeedsLayout() }
})
self.setNeedsLayout()
} }
} }
......
...@@ -72,7 +72,7 @@ class YHCardMessageCell: UITableViewCell { ...@@ -72,7 +72,7 @@ class YHCardMessageCell: UITableViewCell {
iconImgView.sd_setImage(with: URL(string: cardListModel.icon)) iconImgView.sd_setImage(with: URL(string: cardListModel.icon))
titleLabel.text = cardListModel.title titleLabel.text = cardListModel.title
subtitleLabel.text = cardListModel.description subtitleLabel.text = cardListModel.description
bottomBtn.setTitle(cardListModel.title, for: .normal) bottomBtn.setTitle(cardListModel.btnText, for: .normal)
listView.removeSubviews() listView.removeSubviews()
var lastItemView:YHAICardItemView? = nil var lastItemView:YHAICardItemView? = nil
......
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Mask group@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Mask group@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment