1. 程式人生 > 其它 >微信公眾號傳送客服訊息---選單訊息,卡片訊息

微信公眾號傳送客服訊息---選單訊息,卡片訊息

技術標籤:微信公眾號小程式

工作中遇到公眾號傳送客服訊息,讓使用者點選選擇。查看了微信開發者文件,發現“選單訊息” 可以滿足,但是使用者接收到的樣式的確很難看,所以就想可不可以改變其樣式來達到一種卡片式的訊息。

先不說別的,先上微信客服訊息---選單訊息文件如下:

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訊息建立時間戳
MsgTypeText
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分鐘)"

效果圖如下: