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
相关产品推荐
相关产品推荐

