admin管理员组文章数量:1529447
首先,我们知道,可以通过button中的属性open-type="contact",实现小程序用户和小程序所有者客服对话。
<button open-type="contact">客服</button>
在没有任何程序干预的情况下, 客服消息可直接在网页版客服工具(https://mpkf.weixin.qq/)和小程序版客服工具(客服小助 手)查看并回复用户消息。
但是,有时有特殊需求,比如:
1、用户打开客服会话,默认给出提示信息
2、需要自定义客服消息,类似电话语音输入1,2,3出现对应回复的功能
3、能否同时兼容自动和人工客服
本文以云函数自定义消息为例:
1、小程序新建两个云函数
1)message-auto(默认进入客服会话的消息处理)
2)message(用户输入后触发的消息处理)
2、在云函数设置中关联
云函数--设置--全局设置,打开云函数接收消息推送,如下图绑定:
3、代码实现
此处为了避免每次进入客户会话,默认发送提示消息给用户造成困扰,建议存库处理,避免重复发送,至于多久发送一次,由开发者自行处理存库逻辑。
message-auto/index.js
// 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() const contentArr = ["输入数字可以获得帮助哦~", "1 怎么知道是否中奖?", "2 如何兑换奖励?", "3 实物如何兑奖?"] // 云函数入口函数 exports.main = async (event, context) => { const wxContext = cloud.getWXContext() let openid = wxContext.OPENID // 查看是否发送过 let res = await db.collection('message_auto') .where({ openid: openid }) .get() console.log("message_auto res: ", res) if(res.data && res.data.length > 0){ return } let messageResult = await cloud.openapi.customerServiceMessage.send({ touser: openid, msgtype: 'text', text: { content: contentArr.join("\n"), }, }) console.log("message_auto send res: ", messageResult) if(messageResult.errCode == 0){ let messageAddRes = await db.collection('message_auto').add({ data: { "openid": openid, "create_time": new Date() } }) console.log('messageAddRes: ', messageAddRes) } }
在用户输入后,校验是否满足自动回复消息条件(输入非1,2,3),可通过transfer_customer_service直接转由人工处理,这样相同于同时兼容了自动和人工客服,如示例中,“你好”会自动转人工处理。
message/index.js
// 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() const contentArr = ["开奖后,会公告中奖用户和对应奖励,并发送中奖通知", "奖励会在您发送兑奖信息后24小时内兑换", "填写好收件人信息,48小时内发货(暂不支持港澳台、新疆、西藏等地区)"] // 云函数入口函数 exports.main = async (event, context) => { console.log('message event:', event) let content = event.Content if(!content || !content.trim()){ console.log('message can not be empty!') return } if(!isNaN(content) && content % 1 == 0 && content > 0 && content <= contentArr.length){ let res = cloud.openapi.customerServiceMessage.send({ touser: event.FromUserName, msgtype: 'text', text: { content: contentArr[content - 1], }, }) return } return { MsgType: 'transfer_customer_service', ToUserName: event.FromUserName, FromUserName: event.ToUserName, CreateTime: parseInt(+new Date / 1000), } }
版权声明:本文标题:关于自定义客服会话contact同时兼容自动和人工客服使用 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1726640615a1079597.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论