微信公眾號傳送客服訊息---選單訊息,卡片訊息
阿新 • • 發佈:2020-12-14
工作中遇到公眾號傳送客服訊息,讓使用者點選選擇。查看了微信開發者文件,發現“選單訊息” 可以滿足,但是使用者接收到的樣式的確很難看,所以就想可不可以改變其樣式來達到一種卡片式的訊息。
先不說別的,先上微信客服訊息---選單訊息文件如下:
1、開發文件
{ "touser": "OPENID", "msgtype": "msgmenu", "msgmenu": { "head_content": "您對本次服務是否滿意呢? " "list": [ { "id": "101", "content": "滿意" }, { "id": "102", "content": "不滿意" } ], "tail_content": "歡迎再次光臨" } }
按照上述例子,使用者會看到這樣的選單訊息:
“您對本次服務是否滿意呢?
滿意
不滿意”
其中,“滿意”和“不滿意”是可點選的,當用戶點選後,微信會發送一條XML訊息到開發者伺服器,格式如下:
<xml> <ToUserName><![CDATA[ToUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>1500000000</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[滿意]]></Content> <MsgId>1234567890123456</MsgId> <bizmsgmenuid>101</bizmsgmenuid> </xml>
XML引數說明:
引數 | 說明 |
---|---|
ToUserName | 開發者帳號 |
FromUserName | 接收方帳號(OpenID) |
CreateTime | 訊息建立時間戳 |
MsgType | Text |
Content | 點選的選單名 |
MsgId | 訊息ID |
bizmsgmenuid | 點選的選單ID |
收到XML推送之後,開發者可以根據提取出來的bizmsgmenuid和Content識別出微信使用者點選的是哪個選單。
2、實現方式
本人在測試號呼叫此介面一直報40200的錯誤碼 invalid account type, 在文件上找不到對應的錯誤碼;後來在網上查閱資料才知道,此介面必須在正式的公眾號才能呼叫成功。
備註:
msgmenuid:單擊了哪個按鈕對應的id(測試號以文字方式傳送給微信伺服器的話,返回的xml中不會有這個id,只有公眾號才會有) 1、根據msgmenuid來判斷使用者點選了哪一個按鈕,然後處理相關邏輯。 2、為了防止使用者多次點選,可以後臺返回一個隨機數,使用者點選的時候可以通過這個隨機數判斷是否已經處理過,如果為空或者隨機數不是後臺生成的則拒絕處理,傳送客服提示訊息。
要想達到卡片式的效果,超連結必須要加上微信地址weixin://bizmsgmenu伺服器才會返回選單按鈕樣式的xml。至於排版,可以通過\t 空格 \n換行 自行排版。
傳送文字訊息的內容如下
"檢測到您正在和【張三】醫生進行諮詢尚未結束,是否要切換至【李四】醫生諮詢?\n\n"+"\t\t\t\t\t"+
"<a href=\"weixin://bizmsgmenu?msgmenucontent=切換&msgmenuid=10001\">切換</a>"+
"\t\t\t\t\t\t\t\t\t\t\t\t\t"+
"<a href=\"weixin://bizmsgmenu?msgmenucontent=不切換&msgmenuid=10002\">不切換</a>\n"+
"\n快馬健康!(本次訊息有效時間為30分鐘)"
效果圖如下: