微信小程序?qū)崿F(xiàn)自動(dòng)回復(fù)圖片消息
前提
小程序已經(jīng)開(kāi)通了“云開(kāi)發(fā)”功能
在微信開(kāi)發(fā)者工具中打開(kāi)“云開(kāi)發(fā)”,點(diǎn)“設(shè)置”,點(diǎn)擊“其它設(shè)置”,點(diǎn)擊“添加消息推送”(添加消息類(lèi)型為“image”和“event”兩種消息推送設(shè)置),點(diǎn)擊“確定”
目前微信小程序用戶(hù)使用客服功能,必須通過(guò)固定的按鈕進(jìn)行觸發(fā),在下文展示
按鈕觸發(fā)后小程序會(huì)主動(dòng)發(fā)送客服圖片消息
實(shí)現(xiàn)
小程序index.wxml文件中實(shí)現(xiàn)
需要將 button 組件 open-type 的值設(shè)置為 contact,當(dāng)用戶(hù)點(diǎn)擊后就會(huì)進(jìn)入客服會(huì)話(huà),如果用戶(hù)在會(huì)話(huà)中點(diǎn)擊了小程序消息,則會(huì)返回到小程序,開(kāi)發(fā)者可以通過(guò) bindcontact 事件回調(diào)獲取到用戶(hù)所點(diǎn)消息的頁(yè)面路徑 path 和對(duì)應(yīng)的參數(shù) query,此外,開(kāi)發(fā)者可以通過(guò)設(shè)置 session-from 將會(huì)話(huà)來(lái)源透?jìng)鞯娇头?/p>
<button open-type="contact" bindcontact="handleContact" session-from="sessionFrom">客服</button>
云函數(shù)config.json配置文件
{
"permissions": {
"openapi": [
"wxacode.get",
"customerServiceMessage.send",
"customerServiceMessage.uploadTempMedia"
]
}
}
小程序云函數(shù)入口文件index.js實(shí)現(xiàn)
const cloud = require('wx-server-sdk')
cloud.init()
// 下載云存儲(chǔ)圖片
// 講圖片上傳到小程序云開(kāi)發(fā)的存儲(chǔ)中可以得到文件的fileID
let downLoad = async(event, context) => {
const res = await cloud.downloadFile({
fileID: 'cloud://example.png'
})
const buffer = res.fileContent
return buffer
}
// 把媒體文件上傳到微信服務(wù)器
let upload = async(Buffer) => {
return await cloud.openapi.customerServiceMessage.uploadTempMedia({
type: 'image',
media: {
contentType: 'image/png',
value: Buffer
}
})
}
// 云函數(shù)入口函數(shù)
exports.main = async (event, context) => {
// 客服消息
if (event.MsgType == 'event') {
const wxContext = cloud.getWXContext()
let Buffer = await downLoad()
let meida = await upload(Buffer)
await cloud.openapi.customerServiceMessage.send({
"touser": wxContext.OPENID,
"msgtype": "image",
"image": {
"media_id": meida.mediaId
}
})
return "success"
}
};
備注
customerServiceMessage.uploadTempMedia 的使用:
把媒體文件上傳到微信服務(wù)器。目前僅支持圖片。用于發(fā)送客服消息或被動(dòng)回復(fù)用戶(hù)消息。
云調(diào)用是微信云開(kāi)發(fā)提供的在云函數(shù)中調(diào)用微信開(kāi)放接口的能力,需要在云函數(shù)中通過(guò) wx-server-sdk 使用。
調(diào)用實(shí)例
// cloud = require('wx-server-sdk')
// ...
// 方法返回 Promise
cloud.openapi.customerServiceMessage.uploadTempMedia({
type: 'image',
media: {
contentType: 'image/png',
value: Buffer
}
})
cloud.downloadFile的使用
從云存儲(chǔ)空間下載文件 其中下載文件的返回類(lèi)型為 ArrayBuffer
調(diào)用實(shí)例
wx.cloud.downloadFile({
fileID: 'a7xzcb'
}).then(res => {
console.log(res.data)
}).catch(error => {
// handle error
})
到此這篇關(guān)于微信小程序?qū)崿F(xiàn)自動(dòng)回復(fù)圖片消息的文章就介紹到這了,更多相關(guān)小程序自動(dòng)回復(fù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript中對(duì)象property的讀取和寫(xiě)入方法介紹
這篇文章主要介紹了JavaScript中對(duì)象property的讀取和寫(xiě)入方法介紹,本文講解了原型繼承鏈中property的讀取、原型繼承鏈中property的寫(xiě)入等內(nèi)容,需要的朋友可以參考下2014-12-12
原生javascript實(shí)現(xiàn)圖片輪播效果代碼
前幾天用jquery做了一個(gè)JS的圖片輪播效果,現(xiàn)在用原生的javascript代碼實(shí)現(xiàn)同樣的功能,當(dāng)練習(xí)用吧,代碼寫(xiě)得不是很滿(mǎn)意。2010-09-09
js中查找最近的共有祖先元素的實(shí)現(xiàn)代碼
司徒正美給出的題,也嘗試著寫(xiě)一下。希望大家多多交流。2010-12-12
js添加千分位的實(shí)現(xiàn)代碼(超簡(jiǎn)單)
下面小編就為大家?guī)?lái)一篇js添加千分位的實(shí)現(xiàn)代碼(超簡(jiǎn)單)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08
bootstrap 設(shè)置checkbox部分選中效果
本篇文章主要介紹了bootstrap 設(shè)置checkbox部分選中效果,主要涉及到j(luò)s各個(gè)方面的內(nèi)容,對(duì)于bootstrap設(shè)置checkbox選中效果感興趣的朋友可以參考一下吧2017-04-04
JavaScript訪問(wèn)字符串中單個(gè)字符的兩種方法
這篇文章主要介紹了JavaScript訪問(wèn)字符串中單個(gè)字符的兩種方法,本文分別講解了索引方式訪問(wèn)單個(gè)字符串、charAt()函數(shù)訪問(wèn)單個(gè)字符以及兩種方式的不同,需要的朋友可以參考下2015-07-07

