Skip to content

带入咨询内容 ​

客户从商品详情页、订单详情页点「联系客服」,把他正在看的那一件一起带进去,客服不用再追问「您说的是哪一件」。

需要 SDK 0.7.0 及以上

更早的版本里没有这两个方法,调用不到。

做出来是什么样 ​

聊天页起来时,带进来的内容已经在那儿了。

带一段文字:直接填进输入框,客户可以改、也可以直接发。

APP 内的客服聊天页,输入框里已经填好一段话,还没有发送

带一张卡片:商品、订单或文章卡片摆在消息流最下面,下方有一个发送按钮。

APP 内的客服聊天页,消息流末尾居中显示一张商品卡片,卡片下方是发送按钮,右上角有关闭图标

永远不会自动发出去

带进来的内容只是摆在那里,客户点了发送才会发出。带进来就自动发的话,等于以客户的名义说了他没说过的话。

怎么调 ​

在打开聊天页之前调一次就行,SDK 会记住,页面起来时自动带上:

kotlin
// Android
HecongChat.setPresend("这个还有货吗?", JSONObject().apply {
    put("cardType", "product")
    put("productId", "SKU-10023")
    put("title", "示例商品名称")
    put("price", JSONObject().apply { put("amount", 19900); put("currency", "CNY") })
})
HecongChat.openChat(context)
swift
// iOS
HecongChat.shared.setPresend(text: "这个还有货吗?", card: [
    "cardType": "product",
    "productId": "SKU-10023",
    "title": "示例商品名称",
    "price": ["amount": 19900, "currency": "CNY"]
])
HecongChat.shared.openChat(from: self)

只带文字不带卡片,第二个参数不传即可;聊天页已经开着的时候调,同样立即生效。

撤掉还没发出去的卡片:

kotlin
HecongChat.clearPresend()
swift
HecongChat.shared.clearPresend()

几条规矩 ​

  • 只带一次。 聊天页起来时带上,客户发出去或者自己关掉之后,再打开聊天页不会又冒出来。
  • 两个参数各管各的。 只传文字就只动输入框,只传卡片就只动卡片;先带文字、后带卡片不会把前面的冲掉。
  • 卡片一次只有一张,再调一次就换成新的那张。
  • 文字会覆盖输入框里原有的草稿,带进来的内容是客户刚刚做过的事,比之前留下的半句话更接近他此刻想说的。
  • 卡片只支持商品、订单、文章三类,cardType 决定是哪一类,其余字段按类型各有各的定义。类型不对或者缺必填字段时,卡片不显示、日志里有一行提示,同一次调用里的文字照常生效。

卡片字段 ​

三类卡片的字段和选择器里的条目完全一样,这里是同一份定义。金额一律用 { amount, currency } 的形式,amount 是最小货币单位的整数(人民币为分)。

字段定义 ​

product(商品)、order(订单)、article(文章),每类最多 50 条,超出部分不会呈现。

三类的字段各不相同,字段名必须完全一致:写错名字的字段会被静默丢弃,不报错、不提示,只表现为卡片上少了图或少了描述。

product 商品卡 ​

字段类型必填含义
titlestring是商品名,≤200 字符
descriptionstring否规格、卖点等,≤2000 字符
imageUrlstring否商品图外链,必须是合法 URL
priceMoney否现价
originalPriceMoney否划线原价
detailUrlstring否商品详情页,客服点击可跳转
productIdstring否你自己的 SKU 编号,≤128 字符
layout'compact' | 'large'否卡片形态,缺省由聊天窗决定

order 订单卡 ​

字段类型必填含义
orderIdstring是订单号,≤128 字符
titlestring是订单标题,≤200 字符
totalMoney是订单总额
status见下是订单状态
createdAtnumber是下单时间,毫秒时间戳
itemsarray是商品行,≤30 条
items[].namestring是商品名
items[].quantitynumber是数量,正整数
items[].priceMoney是单价
items[].imageUrlstring否商品图外链
detailUrlstring否订单详情页

status 取值:pending(待付款)、paid(已付款)、shipped(已发货)、delivered(已送达)、refunded(已退款)、cancelled(已取消)。传其他值会被拒绝。

商品行超过 30 条,这张卡整个发不出去,不是只显示前 30 条。卡片是摘要不是清单,行数多的订单挑主要商品放进去,其余让客服点 detailUrl 看详情。

article 文章卡 ​

字段类型必填含义
titlestring是文章标题,≤200 字符
descriptionstring是摘要,≤2000 字符
urlstring是文章链接
imageUrlstring否封面图外链
sourcestring否来源站点名,≤100 字符

Money 金额 ​

js
{ amount: 39900, currency: 'CNY' }   // ¥399.00
{ amount: 99, currency: 'USD' }      // $0.99

amount 是最小货币单位的整数(人民币为分),不接受浮点数。currency 用 ISO 4217 代码。展示时由聊天窗按客户语言格式化,你不用自己拼货币符号。

图片一律用外链 ​

卡片图只能传 imageUrl,值是你自己的图片地址。

不要传 imageAttachmentId。那是客服在工作台上传素材时才用的字段,服务端会校验附件归属,用它发出去的卡片客户这边发不成功,而且不会有明确的报错提示。

客户选完之后 ​

点中某一项,卡片直接作为一条消息发给客服,你不需要再做任何事。客服在工作台里看到的是完整卡片,能点进 detailUrl。

下一步 ​