欢迎语支持多段配置与图片
租户可配置有序文本/图片欢迎语;设置页支持增删排序与上传,Widget 空会话按序展示;兼容旧 welcome_message 字段。
This commit is contained in:
@@ -748,9 +748,9 @@ func TestTenantSettingsPersistAndAffectWidgetPrompt(t *testing.T) {
|
||||
t.Fatalf("创建渠道失败: %v", err)
|
||||
}
|
||||
|
||||
// 保存欢迎语与离线提示
|
||||
// 保存多段欢迎语与离线提示
|
||||
saveRec := httptest.NewRecorder()
|
||||
saveBody := `{"welcome_message":"定制欢迎语ABC","offline_prompt":"定制离线提示XYZ","work_hours":{"monday":"全天","tuesday":"全天","wednesday":"全天","thursday":"全天","friday":"全天","saturday":"全天","sunday":"全天"}}`
|
||||
saveBody := `{"welcome_messages":[{"type":"text","content":"定制欢迎语ABC"},{"type":"text","content":"第二段欢迎"}],"offline_prompt":"定制离线提示XYZ","work_hours":{"monday":"全天","tuesday":"全天","wednesday":"全天","thursday":"全天","friday":"全天","saturday":"全天","sunday":"全天"}}`
|
||||
router.ServeHTTP(saveRec, bearerRequest(t, http.MethodPut, "/api/settings", []byte(saveBody), admin))
|
||||
if saveRec.Code != http.StatusOK {
|
||||
t.Fatalf("保存设置失败: %s", saveRec.Body.String())
|
||||
@@ -763,8 +763,12 @@ func TestTenantSettingsPersistAndAffectWidgetPrompt(t *testing.T) {
|
||||
}
|
||||
var getResp struct {
|
||||
Data struct {
|
||||
WelcomeMessage string `json:"welcome_message"`
|
||||
OfflinePrompt string `json:"offline_prompt"`
|
||||
WelcomeMessage string `json:"welcome_message"`
|
||||
WelcomeMessages []struct {
|
||||
Type string `json:"type"`
|
||||
Content string `json:"content"`
|
||||
} `json:"welcome_messages"`
|
||||
OfflinePrompt string `json:"offline_prompt"`
|
||||
} `json:"data"`
|
||||
}
|
||||
if err := json.Unmarshal(getRec.Body.Bytes(), &getResp); err != nil {
|
||||
@@ -773,6 +777,9 @@ func TestTenantSettingsPersistAndAffectWidgetPrompt(t *testing.T) {
|
||||
if getResp.Data.WelcomeMessage != "定制欢迎语ABC" || getResp.Data.OfflinePrompt != "定制离线提示XYZ" {
|
||||
t.Fatalf("设置未持久化: %+v", getResp.Data)
|
||||
}
|
||||
if len(getResp.Data.WelcomeMessages) != 2 || getResp.Data.WelcomeMessages[1].Content != "第二段欢迎" {
|
||||
t.Fatalf("多段欢迎语未持久化: %+v", getResp.Data.WelcomeMessages)
|
||||
}
|
||||
|
||||
// 无在线客服时 init 应返回定制离线提示
|
||||
initRec := httptest.NewRecorder()
|
||||
@@ -784,9 +791,13 @@ func TestTenantSettingsPersistAndAffectWidgetPrompt(t *testing.T) {
|
||||
}
|
||||
var initResp struct {
|
||||
Data struct {
|
||||
WelcomeMessage string `json:"welcome_message"`
|
||||
OfflinePrompt string `json:"offline_prompt"`
|
||||
AgentsOnline bool `json:"agents_online"`
|
||||
WelcomeMessage string `json:"welcome_message"`
|
||||
WelcomeMessages []struct {
|
||||
Type string `json:"type"`
|
||||
Content string `json:"content"`
|
||||
} `json:"welcome_messages"`
|
||||
OfflinePrompt string `json:"offline_prompt"`
|
||||
AgentsOnline bool `json:"agents_online"`
|
||||
} `json:"data"`
|
||||
}
|
||||
if err := json.Unmarshal(initRec.Body.Bytes(), &initResp); err != nil {
|
||||
@@ -798,4 +809,7 @@ func TestTenantSettingsPersistAndAffectWidgetPrompt(t *testing.T) {
|
||||
if initResp.Data.WelcomeMessage != "定制欢迎语ABC" || initResp.Data.OfflinePrompt != "定制离线提示XYZ" {
|
||||
t.Fatalf("widget 未使用租户设置: %+v", initResp.Data)
|
||||
}
|
||||
if len(initResp.Data.WelcomeMessages) != 2 {
|
||||
t.Fatalf("widget 未返回多段欢迎语: %+v", initResp.Data.WelcomeMessages)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user