|
@@ -231,6 +231,7 @@ func (l *CronTask) openaiRequest(messages string, template []custom_types.Contac
|
|
|
if err == nil && resp != nil && len(resp.Choices) > 0 {
|
|
|
logx.Info("resp.Choices: ", resp.Choices[0].Message.Content)
|
|
|
// 尝试第一层解析成 string
|
|
|
+
|
|
|
items, err := parseContent(resp.Choices[0].Message.Content)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
@@ -395,15 +396,13 @@ func (l *CronTask) UpdateContactFields(botID string, receiverID string, fields [
|
|
|
continue
|
|
|
}
|
|
|
}
|
|
|
- } else {
|
|
|
- if field.Value != nil {
|
|
|
- if len(field.Value) == 0 || field.Value[0] == "" {
|
|
|
- _, err := l.svcCtx.DB.ContactField.UpdateOneID(f.ID).
|
|
|
- SetValue(field.Value).
|
|
|
- Save(l.ctx)
|
|
|
- if err != nil {
|
|
|
- continue
|
|
|
- }
|
|
|
+ } else if len(f.Value) == 0 || f.Value[0] == "" {
|
|
|
+ if field.Value != nil && len(field.Value) > 0 && field.Value[0] != "" {
|
|
|
+ _, err := l.svcCtx.DB.ContactField.UpdateOneID(f.ID).
|
|
|
+ SetValue(field.Value).
|
|
|
+ Save(l.ctx)
|
|
|
+ if err != nil {
|
|
|
+ continue
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -451,7 +450,7 @@ func parseContent(content string) ([]ResponseItem, error) {
|
|
|
return parseContent(unq) // 尝试递归
|
|
|
}
|
|
|
|
|
|
- // ② 数组形式
|
|
|
+ // ② 直接数组形式: [...]
|
|
|
if strings.HasPrefix(content, "[") {
|
|
|
var list []ResponseItem
|
|
|
if err := json.Unmarshal([]byte(content), &list); err == nil {
|
|
@@ -459,8 +458,17 @@ func parseContent(content string) ([]ResponseItem, error) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // ③ 单对象形式
|
|
|
+ // ③ 对象形式
|
|
|
if strings.HasPrefix(content, "{") {
|
|
|
+ // 3‑1 尝试对象包裹数组: {"values":[...]}
|
|
|
+ var wrapper struct {
|
|
|
+ Values []ResponseItem `json:"values"`
|
|
|
+ }
|
|
|
+ if err := json.Unmarshal([]byte(content), &wrapper); err == nil && len(wrapper.Values) > 0 {
|
|
|
+ return wrapper.Values, nil
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3‑2 尝试单对象形式: {"dataIndex": ...}
|
|
|
var item ResponseItem
|
|
|
if err := json.Unmarshal([]byte(content), &item); err == nil {
|
|
|
return []ResponseItem{item}, nil
|