當用戶在小程序點擊客服按鈕,進入會話時,我們一定想知道他從哪個頁面進去的,頁面是什麼內容,用戶最可能想了解什麼信息。
由於我用的是雲開發模式,沒用服務器,因此將今天測試的流程庖丁解牛的發出來,供參考:
步驟一、用戶點擊客服按鈕
按鈕配置代碼:
<button open-type="contact" url="旅遊路線鏈接" send-message-title="卡片標題" show-message-card="true" send-message-img="/images/img_kefu_show_tip.png" bindcontact="handleContact"
session-from='{"title":"兩日遊","url":"http://skb.lvyouquan.com/mg/53af38b41b3440af83e2b4de5cfd094c/bdf30829792b44a1a00e44dd8e18c95c/ProductNew/c7a695d11f104776b2dc4e1252d9493a?busType=1&isQRCode=1","description":"description","thumb_url":"http://vsource.cn/wp-content/uploads/2019/11/learn_downqr-150x150.png"}'>
點擊購買</button>
注意:session-from只有在用戶進入會話的時候纔會發送給回調接口/雲開發的雲函數。
雲開發配置代碼:
event格式如下:
event= { CreateTime: 1617001411,
Event: 'user_enter_tempsession',
FromUserName: 'oZ1ag4rkCRqNTXwiSkjF4_eCZJ14',
MsgType: 'event',
SessionFrom:
'{"title":"兩日遊","url":"http://skb.lvyouquan.com/mg/53af38b41b3440af83e2b4de5cfd094c/bdf30829792b44a1a00e44dd8e18c95c/ProductNew/c7a695d11f104776b2dc4e1252d9493a?busType=1&isQRCode=1","description":"description","thumb_url":"http://vsource.cn/wp-content/uploads/2019/11/learn_downqr-150x150.png"}',
ToUserName: 'gh_7f451e6c35fe',
userInfo:
{ appId: 'wx2c73883c8d9b4e3f',
openId: 'oZ1ag4rkCRqNTXwiSkjF4_eCZJ14' } }
步驟二、用戶發送卡片消息
右下角可以點擊發送,圖片可以定製,比如定製爲:發送商品,那麼後臺就可以自動回覆對應商品的信息。此處發送一條消息的目的在於可以有5條自動回覆消息的權限。否則,若用戶不發送消息,是沒有權限給用戶主動發消息的。
此舉,也可以解決小程序給H5商城導流的問題。小程序僅僅需要做簡單展示或引流,H5做核心的變現和業務邏輯。
雲開發的代碼:
// 雲函數入口文件
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
//<!--下載雲存儲圖片-->
let downLoad = async (fileID) => {
const res = await cloud.downloadFile({
fileID: fileID, // 圖片的File ID
})
const buffer = res.fileContent
console.log(buffer)
return buffer
}
//<!--把媒體文件上傳到微信服務器-->
let upload = async (Buffer) => {
return await cloud.openapi.customerServiceMessage.uploadTempMedia({
type: 'image',
media: {
contentType: 'image/png',
value: Buffer
}
})
}
// 雲函數入口函數
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
console.log('event=',event)
if (event.MsgType == 'miniprogrampage') {
let Buffer = await downLoad('cloud://bvread-bdqed.6276-bvread-bdqed-1302378864/kefu/ad_kefu_qun.png')
let meida = await upload(Buffer)
await cloud.openapi.customerServiceMessage.send({
"touser": wxContext.OPENID,
"msgtype": "image",
"image": {
"media_id": meida.mediaId
}
})
}
else {
var sessionFromStr = event.SessionFrom;
var sessionFrom = JSON.parse(sessionFromStr)
await cloud.openapi.customerServiceMessage.send({
'touser': wxContext.OPENID,
'msgtype': 'link',
'link':{
'title': sessionFrom.title,
'url': sessionFrom.url,
'description': sessionFrom.description,
'thumb_url': sessionFrom.thumb_url
}
})
}
return 'success'
}