|
@@ -375,8 +375,6 @@
|
|
|
var WX_GET_CONFIG_SIGN_URL = H5_PAGE_BASE_FALLBACK + "shareAiConsult.html";
|
|
var WX_GET_CONFIG_SIGN_URL = H5_PAGE_BASE_FALLBACK + "shareAiConsult.html";
|
|
|
var WECHAT_JS_SAFE_HOSTS = ["uat.ailien.shop", "prod.ailien.shop"];
|
|
var WECHAT_JS_SAFE_HOSTS = ["uat.ailien.shop", "prod.ailien.shop"];
|
|
|
var APP_ANDROID_PACKAGE = "com.alien.Udianzaizhe";
|
|
var APP_ANDROID_PACKAGE = "com.alien.Udianzaizhe";
|
|
|
- var APP_DOWNLOAD_URL =
|
|
|
|
|
- "https://a.app.qq.com/o/simple.jsp?pkgname=com.alien.Udianzaina";
|
|
|
|
|
var APP_IOS_URL_SCHEME = "shopro://";
|
|
var APP_IOS_URL_SCHEME = "shopro://";
|
|
|
var APP_UNI_AI_PATH = "pages/aiSearchResult/index";
|
|
var APP_UNI_AI_PATH = "pages/aiSearchResult/index";
|
|
|
var AI_LEGAL_CONVERSATION_API =
|
|
var AI_LEGAL_CONVERSATION_API =
|
|
@@ -511,6 +509,49 @@
|
|
|
return { sessionId: sessionId, userId: userId, type: type };
|
|
return { sessionId: sessionId, userId: userId, type: type };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ function parseMessageIdsFromQuery() {
|
|
|
|
|
+ var raw = String(q("message_ids") || q("messageIds") || "").trim();
|
|
|
|
|
+ if (!raw) return null;
|
|
|
|
|
+ return raw
|
|
|
|
|
+ .split(",")
|
|
|
|
|
+ .map(function (s) {
|
|
|
|
|
+ return String(s || "").trim();
|
|
|
|
|
+ })
|
|
|
|
|
+ .filter(Boolean);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function normalizeHistoryRowImageUrls(item) {
|
|
|
|
|
+ var raw = item.image_urls || item.imageUrls || item.images;
|
|
|
|
|
+ if (Array.isArray(raw)) {
|
|
|
|
|
+ return raw
|
|
|
|
|
+ .map(function (u) {
|
|
|
|
|
+ return String(u || "").trim();
|
|
|
|
|
+ })
|
|
|
|
|
+ .filter(Boolean);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (typeof raw === "string" && raw.trim()) {
|
|
|
|
|
+ return raw
|
|
|
|
|
+ .split(",")
|
|
|
|
|
+ .map(function (s) {
|
|
|
|
|
+ return s.trim();
|
|
|
|
|
+ })
|
|
|
|
|
+ .filter(Boolean);
|
|
|
|
|
+ }
|
|
|
|
|
+ return [];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function filterConversationMessagesByIds(messages, idList) {
|
|
|
|
|
+ if (!Array.isArray(idList) || !idList.length) return messages;
|
|
|
|
|
+ var idSet = {};
|
|
|
|
|
+ for (var i = 0; i < idList.length; i++) {
|
|
|
|
|
+ idSet[String(idList[i])] = true;
|
|
|
|
|
+ }
|
|
|
|
|
+ return (Array.isArray(messages) ? messages : []).filter(function (msg) {
|
|
|
|
|
+ if (!msg || msg.id == null || msg.id === "") return false;
|
|
|
|
|
+ return !!idSet[String(msg.id)];
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
function getConversationApiBase(type) {
|
|
function getConversationApiBase(type) {
|
|
|
return String(type || "").trim() === "1"
|
|
return String(type || "").trim() === "1"
|
|
|
? AI_UBAO_CONVERSATION_API
|
|
? AI_UBAO_CONVERSATION_API
|
|
@@ -577,6 +618,7 @@
|
|
|
var item = rawList[i];
|
|
var item = rawList[i];
|
|
|
if (!item || typeof item !== "object") continue;
|
|
if (!item || typeof item !== "object") continue;
|
|
|
|
|
|
|
|
|
|
+ var msgId = item.id != null ? item.id : item.message_id;
|
|
|
var role = normalizeConversationRole(
|
|
var role = normalizeConversationRole(
|
|
|
item.role || item.sender || item.messageRole || item.type || item.messageType || item.senderType
|
|
item.role || item.sender || item.messageRole || item.type || item.messageType || item.senderType
|
|
|
);
|
|
);
|
|
@@ -604,11 +646,24 @@
|
|
|
content = String(item.aiMessage || item.assistantMessage).trim();
|
|
content = String(item.aiMessage || item.assistantMessage).trim();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ var imageUrls = normalizeHistoryRowImageUrls(item);
|
|
|
|
|
+ if (imageUrls.length) {
|
|
|
|
|
+ messages.push({
|
|
|
|
|
+ id: msgId,
|
|
|
|
|
+ role: role || "user",
|
|
|
|
|
+ isImage: true,
|
|
|
|
|
+ imageUrl: imageUrls[0],
|
|
|
|
|
+ content: content,
|
|
|
|
|
+ });
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
if (!content) continue;
|
|
if (!content) continue;
|
|
|
|
|
|
|
|
var imageUrl = item.imageUrl || item.image || item.imgUrl || item.url;
|
|
var imageUrl = item.imageUrl || item.image || item.imgUrl || item.url;
|
|
|
if (imageUrl && /^(https?:)?\/\//i.test(String(imageUrl))) {
|
|
if (imageUrl && /^(https?:)?\/\//i.test(String(imageUrl))) {
|
|
|
messages.push({
|
|
messages.push({
|
|
|
|
|
+ id: msgId,
|
|
|
role: role || "user",
|
|
role: role || "user",
|
|
|
isImage: true,
|
|
isImage: true,
|
|
|
imageUrl: String(imageUrl),
|
|
imageUrl: String(imageUrl),
|
|
@@ -617,6 +672,7 @@
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
messages.push({
|
|
messages.push({
|
|
|
|
|
+ id: msgId,
|
|
|
role: role || (messages.length % 2 === 0 ? "user" : "ai"),
|
|
role: role || (messages.length % 2 === 0 ? "user" : "ai"),
|
|
|
content: content,
|
|
content: content,
|
|
|
});
|
|
});
|
|
@@ -683,9 +739,17 @@
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ var filterIds = parseMessageIdsFromQuery();
|
|
|
main.innerHTML = '<div class="empty">对话内容加载中…</div>';
|
|
main.innerHTML = '<div class="empty">对话内容加载中…</div>';
|
|
|
fetchConversationHistory(params.sessionId, params.userId, params.type)
|
|
fetchConversationHistory(params.sessionId, params.userId, params.type)
|
|
|
.then(function (data) {
|
|
.then(function (data) {
|
|
|
|
|
+ if (filterIds && filterIds.length) {
|
|
|
|
|
+ var filtered = filterConversationMessagesByIds(data.messages, filterIds);
|
|
|
|
|
+ if (!filtered.length) {
|
|
|
|
|
+ throw new Error("未找到所选对话内容");
|
|
|
|
|
+ }
|
|
|
|
|
+ data = Object.assign({}, data, { messages: filtered });
|
|
|
|
|
+ }
|
|
|
render(data);
|
|
render(data);
|
|
|
})
|
|
})
|
|
|
.catch(function (e) {
|
|
.catch(function (e) {
|
|
@@ -752,6 +816,13 @@
|
|
|
'<div class="row row--user"><div class="user-bubble"><img class="user-bubble__image" src="' +
|
|
'<div class="row row--user"><div class="user-bubble"><img class="user-bubble__image" src="' +
|
|
|
escHtml(msg.imageUrl) +
|
|
escHtml(msg.imageUrl) +
|
|
|
'" alt="图片" loading="lazy" decoding="async" /></div></div>';
|
|
'" alt="图片" loading="lazy" decoding="async" /></div></div>';
|
|
|
|
|
+ var imageUserText = String(msg.content || "").trim();
|
|
|
|
|
+ if (imageUserText) {
|
|
|
|
|
+ html +=
|
|
|
|
|
+ '<div class="row row--user"><div class="user-bubble">' +
|
|
|
|
|
+ escHtml(imageUserText) +
|
|
|
|
|
+ "</div></div>";
|
|
|
|
|
+ }
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
|
var userText = String(msg.content || "").trim();
|
|
var userText = String(msg.content || "").trim();
|
|
@@ -1306,7 +1377,7 @@
|
|
|
// }
|
|
// }
|
|
|
|
|
|
|
|
if (/launch:fail/i.test(errMsg) && !getWxShareEntryFrom()) {
|
|
if (/launch:fail/i.test(errMsg) && !getWxShareEntryFrom()) {
|
|
|
- showDownloadTip();
|
|
|
|
|
|
|
+ showAppOpenFailTip("请前往应用商店下载U店在哪app");
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1385,7 +1456,12 @@
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function showDownloadTip() {
|
|
function showDownloadTip() {
|
|
|
- window.location.href = APP_DOWNLOAD_URL;
|
|
|
|
|
|
|
+ var msg = "请到应用商店下载「U店在哪」";
|
|
|
|
|
+ if (typeof uni !== "undefined" && typeof uni.showToast === "function") {
|
|
|
|
|
+ uni.showToast({ title: msg, icon: "none", duration: 2500 });
|
|
|
|
|
+ } else {
|
|
|
|
|
+ window.alert(msg);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function showAppOpenFailTip(msg) {
|
|
function showAppOpenFailTip(msg) {
|
|
@@ -1466,9 +1542,7 @@
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
window.setTimeout(function () {
|
|
window.setTimeout(function () {
|
|
|
- if (done) return;
|
|
|
|
|
finish();
|
|
finish();
|
|
|
- showDownloadTip();
|
|
|
|
|
}, 3200);
|
|
}, 3200);
|
|
|
}
|
|
}
|
|
|
|
|
|