版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】微信開發(fā)消息應(yīng)答的技巧有哪些
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[this
is
a
test]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>/upload/information/20201208/260/11886.jpg
圖片消息<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<PicUrl><![CDATA[this
is
a
url]]></PicUrl>
<MediaId><![CDATA[media_id]]></MediaId>
<MsgId>1234567890123456</MsgId>
</xml>語音消息<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<Format><![CDATA[Format]]></Format>
<MsgId>1234567890123456</MsgId>
</xml><xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<Format><![CDATA[Format]]></Format>
<Recognition><![CDATA[騰訊微信團隊]]></Recognition>
<MsgId>1234567890123456</MsgId>
</xml><xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[video]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>
<MsgId>1234567890123456</MsgId>
</xml>/upload/information/20201208/260/11889.jpg<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[shortvideo]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>
<MsgId>1234567890123456</MsgId>
</xml>地理位置消息<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1351776360</CreateTime>
<MsgType><![CDATA[location]]></MsgType>
<Location_X>23.134521</Location_X>
<Location_Y>113.358803</Location_Y>
<Scale>20</Scale>
<Label><![CDATA[位置信息]]></Label>
<MsgId>1234567890123456</MsgId>
</xml>/upload/information/20201208/260/11891.jpg鏈接消息<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1351776360</CreateTime>
<MsgType><![CDATA[link]]></MsgType>
<Title><![CDATA[公眾平臺官網(wǎng)鏈接]]></Title>
<Description><![CDATA[公眾平臺官網(wǎng)鏈接]]></Description>
<Url><![CDATA[url]]></Url>
<MsgId>1234567890123456</MsgId>
</xml>/upload/information/20201208/260/11893.jpg/upload/information/20201208/260/11894.jpg
///
<summary>
///
獲取用戶發(fā)送的消息
///
</summary>
///
<param
name="postString"></param>
private
void
ResponseXML(string
postString)
{
//使用XMLDocument加載信息結(jié)構(gòu)
XmlDocument
xmlDoc
=
new
XmlDocument();
xmlDoc.LoadXml(postString);
XmlElement
rootElement
=
xmlDoc.DocumentElement;//獲取文檔的根
XmlNode
MsgType
=
rootElement.SelectSingleNode("MsgType");
//獲取消息的文本類型
RequestXML
requestXML
=
new
RequestXML();//聲明實例,獲取各個屬性并賦值
requestXML.ToUserName
=
rootElement.SelectSingleNode("ToUserName").InnerText;//公眾號
requestXML.FromUserName
=
rootElement.SelectSingleNode("FromUserName").InnerText;//用戶
requestXML.CreateTime
=
rootElement.SelectSingleNode("CreateTime").InnerText;//創(chuàng)建時間
requestXML.MsgType
=
MsgType.InnerText;//消息類型
///對消息的不同類型進行賦值
if
(requestXML.MsgType
==
"text")
{
//賦值文本信息內(nèi)容
requestXML.Content
=
rootElement.SelectSingleNode("Content").InnerText;
}
if
(requestXML.MsgType.Trim()
==
"location")
{
///賦值地理位置緯度,經(jīng)度,地圖縮放比例,地理位置說明
requestXML.Location_X
=
rootElement.SelectSingleNode("Location_X").InnerText;
requestXML.Location_Y
=
rootElement.SelectSingleNode("Location_Y").InnerText;
requestXML.Scale
=
rootElement.SelectSingleNode("Scale").InnerText;
requestXML.Label
=
rootElement.SelectSingleNode("Label").InnerText;
}
if
(requestXML.MsgType.Trim().ToLower()
==
"event")
{
///賦值事件名稱和事件key值
requestXML.EventName
=
rootElement.SelectSingleNode("Event").InnerText;
requestXML.EventKey
=
rootElement.SelectSingleNode("EventKey").InnerText;
}
if
(requestXML.MsgType.Trim().ToLower()
==
"voice")
{
///賦值語音識別結(jié)果,賦值之前一定要記得在開發(fā)者模式下,把語音識別功能開啟,否則獲取不到
requestXML.Recognition
=
rootElement.SelectSingleNode("Recognition").InnerText;
}
ResponseMsg(requestXML);
}語音識別功能開啟如下:/upload/information/20201208/260/11895.jpg
///
<summary>
///
接收消息的實體類
///
</summary>
public
class
RequestXML
{
private
String
toUserName
=
String.Empty;
///
<summary>
///
本公眾號
///
</summary>
public
String
ToUserName{get;set;}
///
<summary>
///
用戶微信號
///
</summary>
public
String
FromUserName{get;set;}
///
<summary>
///
創(chuàng)建時間
///
</summary>
public
String
CreateTime{get;set;}
///
<summary>
///
信息類型
///
</summary>
public
String
MsgType{get;set;}
///
<summary>
///
信息內(nèi)容
///
</summary>
public
String
Content{get;set;}
/*以下為事件類型的消息特有的屬性*/
///
<summary>
///
事件名稱
///
</summary>
public
String
EventName{get;set;}
///
<summary>
///
事件值
///
</summary>
public
string
EventKey
{
get;
set;
}
/*以下為圖文類型的消息特有的屬性*/
///
<summary>
///
圖文消息的個數(shù)
///
</summary>
public
int
ArticleCount
{
get;
set;
}
///
<summary>
///
圖文消息的標(biāo)題
///
</summary>
public
string
Title
{
get;
set;
}
///
<summary>
///
圖文消息的簡介
///
</summary>
public
string
Description
{
get;
set;
}
///
<summary>
///
圖文消息圖片的鏈接地址
///
</summary>
public
string
PicUrl
{
get;
set;
}
///
<summary>
///
圖文消息詳情鏈接地址
///
</summary>
public
string
Url
{
get;
set;
}
///
<summary>
///
圖文消息集合
///
</summary>
public
List<RequestXML>
Articles
{
get;
set;}
/*以下為地理位置類型的消息特有的屬性*/
///
<summary>
///
地理位置緯度
///
</summary>
public
String
Location_X
{
get;
set;
}
///
<summary>
///
地理位置經(jīng)度
///
</summary>
public
String
Location_Y
{
get;
set;
}
///
<summary>
///
地圖縮放比例
///
</summary>
public
String
Scale
{
get;
set;
}
///
<summary>
///
地圖位置說明
///
</summary>
public
String
Label
{
get;
set;
}
///
<summary>
///
語音消息特有字段
///
</summary>
public
String
Recognition
{
get;
set;
}
}繼續(xù)關(guān)注
ResponseMsg(requestXML);方法如下
private
void
ResponseMsg(RequestXML
requestXML)
{
string
MsgType
=
requestXML.MsgType;
try
{
//根據(jù)消息類型判斷發(fā)送何種類型消息
switch
(MsgType)
{
case
"text":
SendTextCase(requestXML);//發(fā)送文本消息
break;
case
"event"://發(fā)送事件消息
if
(!string.IsNullOrWhiteSpace(requestXML.EventName)
&&
requestXML.EventName.ToString().Trim().Equals("subscribe"))
{
SendWelComeMsg(requestXML);//關(guān)注時返回的圖文消息
}
else
if
(!string.IsNullOrWhiteSpace(requestXML.EventName)
&&
requestXML.EventName.ToString().Trim().Equals("CLICK"))
{
SendEventMsg(requestXML);//發(fā)送事件消息
}
break;
case
"voice":
SendVoiceMsg(requestXML);//發(fā)送語音消息
break;
case
"location"://發(fā)送位置消息
SendMapMsg(requestXML);
break;
default:
break;
}
}
catch
(Exception
ex)
{
HttpContext.Current.Response.Write(ex.ToString());
}
}先來關(guān)注發(fā)送文本消息,SendTextCase(requestXML);//發(fā)送文本消息
///
<summary>
///
發(fā)送文本
///
</summary>
///
<param
name="requestXML"></param>
private
void
SendTextCase(RequestXML
requestXML)
{
string
responseContent
=
FormatTextXML(requestXML.FromUserName,
requestXML.ToUserName,
requestXML.Content);
HttpContext.Current.Response.ContentType
=
"text/xml";
HttpContext.Current.Response.ContentEncoding
=
Encoding.UTF8;
HttpContext.Current.Response.Write(responseContent);
HttpContext.Current.Response.End();
}FormatTextXML方法制定格式
///
<summary>
///
返回格式化的Xml格式內(nèi)容
///
</summary>
///
<param
name="p1">公眾號</param>
///
<param
name="p2">用戶號</param>
///
<param
name="p3">回復(fù)內(nèi)容</param>
///
<returns></returns>
private
string
FormatTextXML(string
p1,
string
p2,
string
p3)
{
return
"<xml><ToUserName><![CDATA["
+
p1
+
"]]></ToUserName><FromUserName><![CDATA["
+
p2
+
"]]></FromUserName><CreateTime>"
+
DateTime.Now.Subtract(new
DateTime(1970,
1,
1,
8,
0,
0)).TotalSeconds.ToString()
+
"</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA["
+
p3
+
"]]></Content><FuncFlag>1</FuncFlag></xml>";
}這樣就能實現(xiàn)消息的應(yīng)答,如果用戶點擊的按鈕,如下代碼:
case
"event"://發(fā)送事件消息
if
(!string.IsNullOrWhiteSpace(requestXML.EventName)
&&
requestXML.EventName.ToString().Trim().Equals("subscribe"))
{
SendWelComeMsg(requestXML);//關(guān)注時返回的圖文消息
}
else
if
(!string.IsNullOrWhiteSpace(requestXML.EventName)
&&
requestXML.EventName.ToString().Trim().Equals("CLICK"))
{
SendEventMsg(requestXML);//發(fā)送事件消息
}
break;
///
<summary>
///
發(fā)送響應(yīng)事件消息
///
</summary>
///
<param
name="requestXML"></param>
private
void
SendEventMsg(RequestXML
requestXML)
{
string
keyStr
=
requestXML.EventKey.ToString();
switch
(keyStr)
{
case
"mypay":
SendPayDetails(requestXML);//發(fā)送薪資賬單
break;
case
"tianqiyubao":
SendWeaterMessage(requestXML);//發(fā)送天氣預(yù)報
break;
case
"kaixinyixiao":
SendKaiXinMessage(requestXML);//發(fā)送開心一笑結(jié)果集
break;
case
"updateMessage":
SendUpdateMessage(requestXML);//發(fā)送修改信息鏈接
break;
case
"yuangonghuodong":
SendYuanGongHuoDong(requestXML);//發(fā)送學(xué)生活動
break;
case
"yuangongtongzhi":
SendYuanGongTongZhi(requestXML);//發(fā)送員工通知
break;
case
"youwenbida":
SendWenti(requestXML);//發(fā)送員工提交問題鏈接
break;
case
"mywen":
SendWentiList(requestXML);//發(fā)送問題列表鏈接
break;
case
"PhoneSerices":
SendKeFuMessage(requestXML);//接入客服
break;
default:
String
responseContent
=
String.Empty;
responseContent
=
FormatTextXML(requestXML.FromUserName,
requestXML.ToUserName,"此功能暫未開放!敬請期待!");
HttpContext.Current.Response.ContentType
=
"text/xml";
HttpContext.Current.Response.ContentEncoding
=
Encoding.UTF8;
HttpContext.Current.Response.Write(responseContent);
HttpContext.Current.Response.End();
break;
}
}SendWelComeMsg(requestXML);//關(guān)注時返回的圖文消息
///
<summary>
///
發(fā)送關(guān)注時的圖文消息
///
</summary>
///
<param
name="requestXML"></param>
private
void
SendWelComeMsg(RequestXML
requestXML)
{
String
responseContent
=
String.Empty;
string
newdate
=
DateTime.Now.Subtract(new
DateTime(1970,
1,
1,
8,
0,
0)).TotalSeconds.ToString();
string
PUrlfileName
=
"/weixin/welcome.jpg";
responseContent
=
string.Format(Message_News_Main,
requestXML.FromUserName,
requestXML.ToUserName,
newdate,
"1",
string.Format(Message_News_Item,
"歡迎關(guān)注德橋員工服務(wù)中心",
"蘇州德橋人力資源創(chuàng)立于2002年...",
PUrlfileName,
"/weixin/WxGsjianjie.aspx"));
HttpContext.Current.Response.ContentType
=
"text/xml";
HttpContext.Current.Response.ContentEncoding
=
Encoding.UTF8;
HttpContext.Current.Response.Write(responseContent);
HttpContext.Current.Response.End();
}Message_News_Main和Message_News_Item是圖文消息格式化
///
<summary>
///
返回圖文消息主體
///
<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 掛靠免責(zé)協(xié)議書范本
- 《防治腦血管病》課件
- 2024年智能交通企業(yè)無抵押企業(yè)間借款合同范本3篇
- 2024年消防救援高空作業(yè)責(zé)任限定合同
- 2025年黑龍江貨運從業(yè)資格證模擬考試0題題庫答案
- 2025年福州道路運輸從業(yè)資格證考試內(nèi)容是什么
- 2025年西安考從業(yè)資格證貨運試題
- 2025年攀枝花貨運從業(yè)資格證試題庫及答案
- 2024年物業(yè)前期服務(wù)綜合合同
- 《萬象城商業(yè)模式》課件
- 冠心病雙聯(lián)抗血小板治療中國專家共識
- 大學(xué)體育與健康課件:體育鍛煉與安全衛(wèi)生保健
- 學(xué)校食堂色標(biāo)管理制度、食品切配工用具色標(biāo)管理操作指南
- 部編語文五年級上冊詞語表注音版
- 1神州謠 課件(共50張PPT)
- 國家開放大學(xué)思想道德與法治社會實踐作業(yè)集合6篇
- 小學(xué)侵害未成年人強制報告制度
- 2023年飛行員基礎(chǔ)知識考試題庫(500題版)
- 公租房運營管理服務(wù)投標(biāo)方案
- 能源管理系統(tǒng)EMS用戶需求說明書
- 人工智能對中學(xué)教學(xué)的影響與應(yīng)對策略
評論
0/150
提交評論