You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SalesForce In-App Messages iOS Swift SDK v1.5.2:如何设置PreChatFields与HiddenPreChatFields?

问题描述

我正在使用Salesforce Messages for in-app iOS Swift SDK v1.5.2,尝试通过Swift代码设置预聊天字段(PreChatFields)和隐藏预聊天字段(HiddenPreChatFields),已编写部分代码,但需要补充实现将指定键值对作为预聊天字段传入SDK的逻辑,寻求解决方案。

现有代码

OpenChat

let preChatValue = "myValue"
let preChatKey = "Somename"
let config = UIConfiguration(serviceAPI: serviceAPIURL,
                             organizationId: organizationId,
                             developerName: developerName,
                             conversationId: conversationId)

let coreClient = CoreFactory.create(withConfig: config)

let myPreChatDelegate = HiddenPrechatDelegateImplementation(preChatValue: preChatValue, preChatKey: preChatKey)
coreClient.preChatDelegate = myPreChatDelegate
// 需要补充代码将指定键值对作为预聊天字段传入SDK

HiddenPrechatDelegateImplementation

import Foundation
import SMIClientCore // 导入Salesforce SDK,请确认正确的模块名

class HiddenPrechatDelegateImplementation: HiddenPreChatDelegate {
  
  var preChatValue: String
  var preChatKey: String
  
  init(preChatValue: String, preChatKey: String) {
    self.preChatValue = preChatValue
    self.preChatKey = preChatKey
  }
  
  func core(_ core: CoreClient,
            conversation: Conversation,
            didRequestPrechatValues hiddenPreChatFields: [HiddenPreChatField],
            completionHandler: HiddenPreChatValueCompletion) {

    // 可通过conversation对象查看对话相关信息

    // 将预聊天字段传回SDK
    completionHandler(hiddenPreChatFields)
  }
  
}
解决方案

核心逻辑是在HiddenPreChatDelegate的回调方法中,给SDK请求的隐藏预聊天字段赋值后通过completionHandler传回SDK。修改后的HiddenPrechatDelegateImplementation代码如下:

import Foundation
import SMIClientCore

class HiddenPrechatDelegateImplementation: HiddenPreChatDelegate {
  
  var preChatValue: String
  var preChatKey: String
  
  init(preChatValue: String, preChatKey: String) {
    self.preChatValue = preChatValue
    self.preChatKey = preChatKey
  }
  
  func core(_ core: CoreClient,
            conversation: Conversation,
            didRequestPrechatValues hiddenPreChatFields: [HiddenPreChatField],
            completionHandler: HiddenPreChatValueCompletion) {
    // 遍历SDK请求的隐藏预聊天字段,匹配目标键并赋值
    let updatedFields = hiddenPreChatFields.map { field in
      var mutableField = field
      if mutableField.name == preChatKey {
        mutableField.value = preChatValue
      }
      return mutableField
    }
    
    // 若需添加自定义隐藏预聊天字段(需先在Salesforce后台配置对应字段)
    // let customField = HiddenPreChatField(name: preChatKey, value: preChatValue, label: "", isRequired: false)
    // let updatedFields = hiddenPreChatFields + [customField]
    
    // 将赋值后的字段数组传回SDK
    completionHandler(updatedFields)
  }
}

说明

  • 标准流程:针对Salesforce后台已配置的隐藏预聊天字段,通过匹配字段名preChatKey设置对应的值preChatValue,这是SDK预期的处理方式。
  • 自定义字段:如果要添加新的隐藏预聊天字段,必须先在Salesforce后台完成配置,再使用注释中的代码构造字段并添加到数组中。
  • OpenChat中的现有代码无需额外修改,预聊天字段的传递逻辑已通过preChatDelegate的回调完成。

内容的提问来源于stack exchange,提问作者Vladimir Antin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 07:53:23