国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) 微信小程序 微信開(kāi)發(fā) Force.com微信開(kāi)發(fā)系列申請(qǐng)測(cè)試賬號(hào)及回復(fù)圖文消息

Force.com微信開(kāi)發(fā)系列申請(qǐng)測(cè)試賬號(hào)及回復(fù)圖文消息

Feb 25, 2017 pm 04:51 PM
微信開(kāi)發(fā)

Force.com除了簡(jiǎn)單的文本消息回復(fù)外,還能回復(fù)圖文并茂的消息、能回復(fù)音樂(lè)或者視頻、能對(duì)用戶(hù)發(fā)來(lái)的語(yǔ)音進(jìn)行識(shí)別、能夠搜集用戶(hù)的地理位置信息并提供相應(yīng)的內(nèi)容或服務(wù)等,本文將對(duì)這些技能一一展開(kāi)說(shuō)明,在此之前首先要介紹如何申請(qǐng)一個(gè)具有所有服務(wù)號(hào)接口功能的測(cè)試賬號(hào)(盡管對(duì)于圖文消息回復(fù)這并不是必須的)。

?

申請(qǐng)測(cè)試賬號(hào)

作為開(kāi)發(fā)者個(gè)人能夠申請(qǐng)的是訂閱號(hào),訂閱號(hào)僅僅開(kāi)放了基礎(chǔ)接口,包含接收用戶(hù)消息、向用戶(hù)回復(fù)消息以及接受事件(事件推送有關(guān)注或取消關(guān)注、掃描帶參數(shù)二維碼(生成此類(lèi)二維碼需要高級(jí)接口)、上報(bào)地理位置(普通訂閱號(hào)不支持)、自定義菜單(普通訂閱號(hào)不支持)點(diǎn)擊)推送三種接口,但高級(jí)點(diǎn)的功能如自定義菜單、語(yǔ)音識(shí)別、客服接口、OAuth2.0網(wǎng)頁(yè)授權(quán)、獲取用戶(hù)地理位置信息等等均需要服務(wù)號(hào)才支持,其中認(rèn)證了的訂閱號(hào)支持自定義菜單。為了方便開(kāi)發(fā)人員了解和學(xué)習(xí)騰訊公司的這些接口,如任何平臺(tái)公司那樣,騰訊公司去年晚點(diǎn)的時(shí)候終于開(kāi)放了測(cè)試賬號(hào)的申請(qǐng)。只要有微信訂閱號(hào)的用戶(hù)都可以申請(qǐng)(服務(wù)號(hào)應(yīng)該也可以吧,不過(guò)沒(méi)見(jiàn)過(guò)服務(wù)號(hào)后臺(tái)長(zhǎng)啥樣,不做評(píng)論)。

申請(qǐng)方式簡(jiǎn)單、直接,進(jìn)入到微信后臺(tái)(https://mp.weixin.qq.com)后在最新版(截止2014年7月6日)的后臺(tái)左側(cè)最下面有一個(gè)“開(kāi)發(fā)者中心”的鏈接,點(diǎn)擊后能找到一個(gè)“接口測(cè)試申請(qǐng)系統(tǒng) 點(diǎn)擊進(jìn)入”的鏈接,點(diǎn)擊進(jìn)入后按照騰訊公司的想到申請(qǐng)即可,這里不做贅述。

?

Force.com微信開(kāi)發(fā)系列申請(qǐng)測(cè)試賬號(hào)及回復(fù)圖文消息

?

申請(qǐng)成功登陸后的樣子如下,這里你就能看到,滾動(dòng)頁(yè)面還能看到一個(gè)二維碼,通過(guò)微信掃描這個(gè)二維碼既可以關(guān)注這個(gè)測(cè)試賬號(hào),最多支持20個(gè)測(cè)試用戶(hù),關(guān)注成功后在微信“訂閱號(hào)”文件夾里會(huì)多出一個(gè)叫做“微信公眾平臺(tái)測(cè)試號(hào)”的賬號(hào),注意雖然是在“訂閱號(hào)”文件夾,但是具有所有服務(wù)號(hào)的功能:

Force.com微信開(kāi)發(fā)系列申請(qǐng)測(cè)試賬號(hào)及回復(fù)圖文消息????????? Force.com微信開(kāi)發(fā)系列申請(qǐng)測(cè)試賬號(hào)及回復(fù)圖文消息

?

基礎(chǔ)框架搭建

?

為了接下來(lái)的工作,這里我們先搭建幾個(gè)關(guān)鍵的類(lèi)以及相應(yīng)的處理框架,以方便后續(xù)添加更多功能支持。

IncomingMsg:用戶(hù)發(fā)送來(lái)的消息類(lèi),包含了各個(gè)關(guān)鍵字段信息;

WeChatNews: 回復(fù)圖文并茂新聞時(shí)的新聞?lì)悾?/p>

IncomingMsg類(lèi)代碼如下,12個(gè)字段,包含了各種消息類(lèi)型的絕大部分字段信息:

public?class?IncomingMsg{
????public?String?toUserName;
????public?String?fromUserName;
????public?String?msgType;
????public?String?picURL;
????public?String?mediaID;
????public?String?locationX;
????public?String?locationY;
????public?String?URL;
????public?String?content;
????public?String?event;
????public?String?eventKey;
????public?String?recognition;
????
????public?IncomingMsg(){}
????
????public?IncomingMsg(String?tUN,?String?fUN,?String?mT,?String?pU,?String?mI,?String?lX,?String?lY,?String?u,?String?c,?String?e,?String?eK,?String?r){
????????this.toUserName?=?tUN;
????????this.fromUserName?=?fUN;
????????this.msgType?=?mT;
????????this.picURL?=?pU;
????????this.mediaID?=?mI;
????????this.locationX?=?lX;
????????this.locationY?=?lY;
????????this.URL?=?u;
????????this.content?=?c;
????????this.event?=?e;
????????this.eventKey?=?eK;
????????this.recognition?=?r;
????}
}

WeChatNews類(lèi)的定義代碼如下,包含了一條新聞的詳細(xì)定義信息:

public?class?WeChatNews{
????public?String?title;
????public?String?description;
????public?String?picUrl;
????public?String?url;
????
????public?WeChatNews(){}
????
????public?WeChatNews(String?t,?String?d,?String?p,?String?u){
????????this.title?=?t;
????????this.description?=?d;
????????this.picUrl?=?p;
????????this.url?=?u;
????}
}

接下來(lái),在doPost方法里,我們將晚上上篇博文里的XML解析代碼,使其能夠解析任何類(lèi)型的微信XML文,修改后的doPost方法如下:

global?static?void?doPost(){
????????//Receive?message?from?user;
????????RestRequest?req?=?RestContext.request;
????????RestResponse?res?=?RestContext.response;
????????string?strMsg?=?req.requestBody.toString();??
????????System.debug('Request?Contents'?+?strMsg);
????????XmlStreamReader?reader?=?new?XmlStreamReader(strMsg);
????????String?toUserName?=?'';
????????String?fromUserName?=?'';
????????String?msgType?=?'';
????????String?picURL?=?'';
????????String?mediaID?=?'';
????????String?locationX?=?'';
????????String?locationY?=?'';
????????String?URL?=?'';
????????String?content?=?'';
????????String?msgID?=?'';
????????String?event?=?'';
????????String?eventKey?=?'';
????????String?recognition?=?'';
????????
????????while(reader.hasNext()){
????????????if(reader.getLocalName()?==?'ToUserName'){
????????????????reader.next();
????????????????if(String.isNotBlank(reader.getText())){
????????????????????toUserName?=?reader.getText();
????????????????}
????????????}
????????????else?if(reader.getLocalName()?==?'FromUserName'){
????????????????reader.next();
????????????????if(String.isNotBlank(reader.getText())){
????????????????????fromUserName?=?reader.getText();
????????????????}
????????????}
????????????else?if(reader.getLocalName()?==?'MsgType'){
????????????????reader.next();
????????????????if(String.isNotBlank(reader.getText())){
????????????????????msgType?=?reader.getText();
????????????????}
????????????}
????????????else?if(reader.getLocalName()?==?'PicURL'){
????????????????reader.next();
????????????????if(String.isNotBlank(reader.getText())){
????????????????????picURL?=?reader.getText();
????????????????}
????????????}
????????????else?if(reader.getLocalName()?==?'MediaId'){
????????????????reader.next();
????????????????if(String.isNotBlank(reader.getText())){
????????????????????mediaID?=?reader.getText();
????????????????}
????????????}
????????????else?if(reader.getLocalName()?==?'Location_X'){
????????????????reader.next();
????????????????if(String.isNotBlank(reader.getText())){
????????????????????locationX?=?reader.getText();
????????????????}
????????????}
????????????else?if(reader.getLocalName()?==?'Location_Y'){
????????????????reader.next();
????????????????if(String.isNotBlank(reader.getText())){
????????????????????locationY?=?reader.getText();
????????????????}
????????????}
????????????else?if(reader.getLocalName()?==?'Url'){
????????????????reader.next();
????????????????if(String.isNotBlank(reader.getText())){
????????????????????URL?=?reader.getText();
????????????????}
????????????}
????????????else?if(reader.getLocalName()?==?'MsgId'){
????????????????reader.next();
????????????????if(String.isNotBlank(reader.getText())){
????????????????????msgID?=?reader.getText();
????????????????}
????????????}
????????????else?if(reader.getLocalName()?==?'Content'){
????????????????reader.next();
????????????????if(String.isNotBlank(reader.getText())){
????????????????????content?=?reader.getText();
????????????????}
????????????}
????????????else?if(reader.getLocalName()?==?'Event'){
????????????????reader.next();
????????????????if(String.isNotBlank(reader.getText())){
????????????????????event?=?reader.getText();
????????????????}
????????????}
????????????else?if(reader.getLocalName()?==?'EventKey'){
????????????????reader.next();
????????????????if(String.isNotBlank(reader.getText())){
????????????????????eventKey?=?reader.getText();
????????????????}
????????????}
????????????else?if(reader.getLocalName()?==?'Recognition'){
????????????????reader.next();
????????????????if(String.isNotBlank(reader.getText())){
????????????????????recognition?=?reader.getText();
????????????????}
????????????}
????????????reader.next();
????????}
????????IncomingMsg?inMsg?=?new?IncomingMsg(toUserName,?fromUserName,?msgType,?picURL,?mediaID,?locationX,?locationY,?URL,?content,?event,?eventKey,?recognition?);
}

?該方法里,我們對(duì)所有類(lèi)型微信消息XML文里的字段進(jìn)行了解析,并通過(guò)解析回來(lái)的值初始化了IncomingMsg對(duì)象,接下來(lái),我們將通過(guò)傳遞這個(gè)對(duì)象調(diào)用不同的方法完成各種任務(wù)。接下來(lái)我們?cè)谏鲜鰀oPost方法的最后加上以下代碼:

String?rtnMsg?=?'';
//回復(fù)消息

if(msgType.equals('text')){
???rtnMsg?=?handleText(inMsg);
}
RestContext.response.addHeader('Content-Type',?'text/plain');????
RestContext.response.responseBody?=?Blob.valueOf(rtnMsg);


?

這段代碼里首先定義了一個(gè)存儲(chǔ)返回XML文的String字符串,接著判斷如果用戶(hù)發(fā)來(lái)的消息類(lèi)型是文本類(lèi)型,則調(diào)用一個(gè)handleText的方法來(lái)處理回復(fù)信息,這里傳遞給handleText方法的對(duì)象正是我們前面定義的IncomingMsg對(duì)象,關(guān)于該方法的細(xì)節(jié)我們下一小節(jié)再介紹,這里成功拿到該方法的返回字符串后,通過(guò)RestContext即可將XML文消息返回給騰訊微信,進(jìn)一步返回給發(fā)送消息的用戶(hù)。

?

發(fā)送圖文方法handleText詳解

?

接下來(lái)我們將介紹如何回復(fù)圖文消息。留意,圖文消息回復(fù)并不需要申請(qǐng)測(cè)試賬號(hào),普通訂閱號(hào)即可。下面是該方法的全部代碼:

private?static?String?handleText(IncomingMsg?msg){
????????String?keyword?=?msg.content;
????????String?strReply;
????????String?strResult;
????????if(keyword.equals('文本')){
????????????strReply?=?'這是個(gè)文本消息';
????????????strResult?=?composeTextReply(msg,?strReply);
????????}
????????else?if(keyword.equals('圖文')?||?keyword.equals('單圖文')){
????????????WeChatNews?news?=?new?WeChatNews('蘋(píng)果WWDC2014召開(kāi)在即',?'2014?年似乎將成為又一個(gè)“蘋(píng)果之年”,熱愛(ài)和不那么熱愛(ài)蘋(píng)果的人都對(duì)它的一舉一動(dòng)保持著關(guān)注和揣測(cè)——以下是蘋(píng)果?WWDC?2014?的13大看點(diǎn):',?'http://a.36krcnd.com/photo/2014/4e3ae0dac4884bb91934a689b72f8f8b.png',?'http://www.36kr.com/p/212479.html');
????????????List<WeChatNews>?newsList?=?new?List<WeChatNews>();
????????????newsList.add(news);
????????????strResult?=?composeNewsReply(msg,?newsList);
????????}
????????else?if(keyword.equals('多圖文')){
????????????WeChatNews?news1?=?new?WeChatNews('蘋(píng)果WWDC2014召開(kāi)在即',?'2014年似乎將成為又一個(gè)蘋(píng)果之年,熱愛(ài)和不那么熱愛(ài)蘋(píng)果的人都對(duì)它的一舉一動(dòng)保持著關(guān)注和揣測(cè)——以下是蘋(píng)果?WWDC?2014?的13大看點(diǎn):',?'http://a.36krcnd.com/photo/2014/4e3ae0dac4884bb91934a689b72f8f8b.png',?'http://www.36kr.com/p/212479.html');
????????????WeChatNews?news2?=?new?WeChatNews('Facebook?CEO?馬克·扎克伯格再做慈善,為灣區(qū)學(xué)校捐贈(zèng)?1.2?億美元',?'據(jù)?re/code消息,F(xiàn)acebook?CEO?馬克·扎克伯格與妻子Priscilla?Cha?(中文名陳慧嫻)?計(jì)劃向?yàn)硡^(qū)學(xué)校捐贈(zèng)?1.2?億美元。',?'http://a.36krcnd.com/photo/2014/e64d647389bfda39131e12fa9d606bb6.jpg',?'http://www.36kr.com/p/212476.html');
????????????WeChatNews?news3?=?new?WeChatNews('Nokia收購(gòu)Siri的同門(mén)師弟Desti,為自家地圖業(yè)務(wù)HERE融入更多人工智能',?'Nokia最近收購(gòu)了一家地圖公司Desti,來(lái)補(bǔ)強(qiáng)自家的地圖業(yè)務(wù)HERE。',?'http://a.36krcnd.com/photo/2014/25490e2b8e63ced9586f0a432eebb972.jpg',?'http://www.36kr.com/p/212484.html');
????????????List<WeChatNews>?newsList?=?new?List<WeChatNews>();
????????????newsList.add(news1);
????????????newsList.add(news2);
????????????newsList.add(news3);
????????????strResult?=?composeNewsReply(msg,?newsList);
????????}
????????else?if(keyword.equals('音樂(lè)')){
????????????Map<String, String>?music?=?new?Map<String, String>();
????????????music.put('title',?'愛(ài)你的宿命');
????????????music.put('description',?'張信哲');
????????????music.put('musicUrl',?'http://zhangmenshiting.baidu.com/data2/music/119826740/1197655931401552061128.mp3?xcode=80587c819993d49621a8dce05e5bb8c9e36664380262dc7e&song_id=119765593');
????????????music.put('musicHQUrl',?'http://zhangmenshiting.baidu.com/data2/music/119826740/1197655931401552061128.mp3?xcode=80587c819993d49621a8dce05e5bb8c9e36664380262dc7e&song_id=119765593');
????????????strResult?=?composeMusicReply(msg,?music);????????????
????????}
????????return?strResult;
????}

?

代碼的思路應(yīng)該來(lái)說(shuō)比較直接,從第4行的if開(kāi)始判斷用戶(hù)發(fā)送過(guò)來(lái)的文本是什么,根據(jù)不同的關(guān)鍵字來(lái)確定不同的返回內(nèi)容,第一個(gè)if里將返回給用戶(hù)單圖文信息,這里先構(gòu)造了一個(gè)WeChatNews數(shù)組,當(dāng)然數(shù)組里只有一個(gè)WeChatNews對(duì)象,將這個(gè)數(shù)組交給composeNewsReply來(lái)完成最終的XML文構(gòu)建;第一個(gè)else if也很類(lèi)似,只不過(guò)這里的WeChatNews數(shù)組里有三條新聞,關(guān)于composeNewsReply方法的細(xì)節(jié)我們稍后介紹;最后一個(gè)else if里展示了如何回復(fù)音樂(lè),這里我們構(gòu)建了一個(gè)Map對(duì)象存儲(chǔ)音樂(lè)的詳情,并調(diào)用composeMusicReply方法來(lái)完成最終的XML文構(gòu)建,同樣該方法的細(xì)節(jié)稍后就會(huì)介紹到。

上面的思路應(yīng)該來(lái)說(shuō)還是比較清楚的,接下來(lái)介紹composeNewsReply方法的全部代碼:

private?static?String?composeNewsReply(IncomingMsg?msg,?List<WeChatNews>?newsList){
????????String?strNews?=?'';
????????String?newsTpl?=?'<item><Title><![CDATA[{0}]]></Title><Description><![CDATA[{1}]]></Description><PicUrl><![CDATA[{2}]]></PicUrl><Url><![CDATA[{3}]]></Url></item>';
????????for(WeChatNews?news?:?newsList){
????????????String[]?arguments?=?new?String[]{news.title,?news.description,?news.picUrl,?news.url};
????????????strNews?+=?String.format(newsTpl,?arguments);
????????}
????????String?strTmp?=?'<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>1234567890</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount><![CDATA[{2}]]></ArticleCount><Articles>'?+?strNews?+?'</Articles></xml>';
????????String[]?arguments?=?new?String[]{msg.fromUserName,?msg.toUserName,?String.valueOf(newsList.size())};
????????String?results?=?String.format(strTmp,?arguments);
????????return?results;
}

?

了解該方法代碼前先要了解回復(fù)圖文信息的XML格式,關(guān)于此點(diǎn)可以參照騰訊公司鏈接:回復(fù)圖文消息 ,與前文介紹到的普通文本消息大同小異,可以留意到里面有個(gè)ArticleCount字段用來(lái)指定回復(fù)的消息里能有幾條圖文新聞,最大是10,超過(guò)10則會(huì)無(wú)法響應(yīng);另外Article節(jié)點(diǎn)下方每一個(gè)item均是一條圖文消息。為此,上述代碼的第3行先構(gòu)造一個(gè)每條新聞的模板,接著從第4行開(kāi)始輪詢(xún)新聞列表里的每一條新聞,并構(gòu)造相應(yīng)的XML文。從第8行開(kāi)始構(gòu)造整個(gè)圖文回復(fù)的字符串模板,并在第9、10行通過(guò)相應(yīng)參數(shù)將模板轉(zhuǎn)換為最終的XML字符串。

再接下來(lái)介紹composeMusicReply,該方法的全部代碼如下:

private?static?String?composeMusicReply(IncomingMsg?msg,?Map<String, String>?music){
????????String?strTitle?=?music.get('title');
????????String?strDesc?=?music.get('description');
????????String?strURL?=?music.get('musicUrl');
????????String?strHQURL?=?music.get('musicHQUrl');
????????String?musicTpl?=?'<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[music]]></MsgType><Music><Title><![CDATA[{2}]]></Title><Description><![CDATA[{3}]]></Description><MusicUrl><![CDATA[{4}]]></MusicUrl><HQMusicUrl><![CDATA[{5}]]></HQMusicUrl></Music></xml>';
????????String[]?arguments?=?new?String[]{msg.fromUserName,?msg.toUserName,?strTitle,?strDesc,?strURL,?strHQURL};
????????String?results?=?String.format(musicTpl,?arguments);
????????return?results;
}

同樣了解該方法要首先了解回復(fù)音樂(lè)信息的XML格式,可以參照騰訊公司鏈接:回復(fù)音樂(lè)消息,上面代碼與前面方法比較類(lèi)似,就不再贅述。(這里的Map對(duì)象也許有點(diǎn)多余,可以考慮是否可以和回復(fù)視頻的方法整合到一起,否則不需要額外的Map對(duì)象開(kāi)銷(xiāo),直接將標(biāo)題、描述、鏈接等信息傳給composeMusicReply方法即可)。

運(yùn)行效果

?

完成后直接保存代碼便可立即生效,回復(fù)圖文、多圖文、音樂(lè)的運(yùn)行效果分別如下:

Force.com微信開(kāi)發(fā)系列申請(qǐng)測(cè)試賬號(hào)及回復(fù)圖文消息????????? Force.com微信開(kāi)發(fā)系列申請(qǐng)測(cè)試賬號(hào)及回復(fù)圖文消息????????? Force.com微信開(kāi)發(fā)系列申請(qǐng)測(cè)試賬號(hào)及回復(fù)圖文消息

更多Force.com微信開(kāi)發(fā)系列申請(qǐng)測(cè)試賬號(hào)及回復(fù)圖文消息相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

?

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門(mén)話(huà)題

PHP微信開(kāi)發(fā):如何實(shí)現(xiàn)消息加密解密 PHP微信開(kāi)發(fā):如何實(shí)現(xiàn)消息加密解密 May 13, 2023 am 11:40 AM

PHP是一種開(kāi)源的腳本語(yǔ)言,廣泛應(yīng)用于Web開(kāi)發(fā)和服務(wù)器端編程,尤其在微信開(kāi)發(fā)中得到了廣泛的應(yīng)用。如今,越來(lái)越多的企業(yè)和開(kāi)發(fā)者開(kāi)始使用PHP進(jìn)行微信開(kāi)發(fā),因?yàn)樗蔀榱艘豢钫嬲囊讓W(xué)易用的開(kāi)發(fā)語(yǔ)言。在微信開(kāi)發(fā)中,消息的加密和解密是一個(gè)非常重要的問(wèn)題,因?yàn)樗鼈兩婕暗綌?shù)據(jù)的安全性。對(duì)于沒(méi)有加密和解密方式的消息,黑客可以輕松獲取到其中的數(shù)據(jù),對(duì)用戶(hù)造成威脅

PHP微信開(kāi)發(fā):如何實(shí)現(xiàn)投票功能 PHP微信開(kāi)發(fā):如何實(shí)現(xiàn)投票功能 May 14, 2023 am 11:21 AM

在微信公眾號(hào)開(kāi)發(fā)中,投票功能經(jīng)常被運(yùn)用。投票功能是讓用戶(hù)快速參與互動(dòng)的好方式,也是舉辦活動(dòng)和調(diào)查意見(jiàn)的重要工具。本文將為您介紹如何使用PHP實(shí)現(xiàn)微信投票功能。獲取微信公眾號(hào)授權(quán)首先,你需要獲取微信公眾號(hào)的授權(quán)。在微信公眾平臺(tái)上,你需要配置微信公眾號(hào)的api地址、官方賬號(hào)和公眾號(hào)對(duì)應(yīng)的token。在我們使用PHP語(yǔ)言開(kāi)發(fā)的過(guò)程中,我們需要使用微信官方提供的PH

用PHP開(kāi)發(fā)微信群發(fā)工具 用PHP開(kāi)發(fā)微信群發(fā)工具 May 13, 2023 pm 05:00 PM

隨著微信的普及,越來(lái)越多的企業(yè)開(kāi)始將其作為營(yíng)銷(xiāo)工具。而微信群發(fā)功能,則是企業(yè)進(jìn)行微信營(yíng)銷(xiāo)的重要手段之一。但是,如果只依靠手動(dòng)發(fā)送,對(duì)于營(yíng)銷(xiāo)人員來(lái)說(shuō)是一件極為費(fèi)時(shí)費(fèi)力的工作。所以,開(kāi)發(fā)一款微信群發(fā)工具就顯得尤為重要。本文將介紹如何使用PHP開(kāi)發(fā)微信群發(fā)工具。一、準(zhǔn)備工作開(kāi)發(fā)微信群發(fā)工具,我們需要掌握以下幾個(gè)技術(shù)點(diǎn):PHP基礎(chǔ)知識(shí)微信公眾平臺(tái)開(kāi)發(fā)開(kāi)發(fā)工具:Sub

PHP微信開(kāi)發(fā):如何實(shí)現(xiàn)客服聊天窗口管理 PHP微信開(kāi)發(fā):如何實(shí)現(xiàn)客服聊天窗口管理 May 13, 2023 pm 05:51 PM

微信是目前全球用戶(hù)規(guī)模最大的社交平臺(tái)之一,隨著移動(dòng)互聯(lián)網(wǎng)的普及,越來(lái)越多的企業(yè)開(kāi)始意識(shí)到微信營(yíng)銷(xiāo)的重要性。在進(jìn)行微信營(yíng)銷(xiāo)時(shí),客服服務(wù)是至關(guān)重要的一環(huán)。為了更好地管理客服聊天窗口,我們可以借助PHP語(yǔ)言進(jìn)行微信開(kāi)發(fā)。一、PHP微信開(kāi)發(fā)簡(jiǎn)介PHP是一種開(kāi)源的服務(wù)器端腳本語(yǔ)言,廣泛運(yùn)用于Web開(kāi)發(fā)領(lǐng)域。結(jié)合微信公眾平臺(tái)提供的開(kāi)發(fā)接口,我們可以使用PHP語(yǔ)言進(jìn)行微信

PHP微信開(kāi)發(fā):如何實(shí)現(xiàn)用戶(hù)標(biāo)簽管理 PHP微信開(kāi)發(fā):如何實(shí)現(xiàn)用戶(hù)標(biāo)簽管理 May 13, 2023 pm 04:31 PM

在微信公眾號(hào)開(kāi)發(fā)中,用戶(hù)標(biāo)簽管理是一個(gè)非常重要的功能,可以讓開(kāi)發(fā)者更好地了解和管理自己的用戶(hù)。本篇文章將介紹如何使用PHP實(shí)現(xiàn)微信用戶(hù)標(biāo)簽管理功能。一、獲取微信用戶(hù)openid在使用微信用戶(hù)標(biāo)簽管理功能之前,我們首先需要獲取用戶(hù)的openid。在微信公眾號(hào)開(kāi)發(fā)中,通過(guò)用戶(hù)授權(quán)的方式獲取openid是比較常見(jiàn)的做法。在用戶(hù)授權(quán)完成后,我們可以通過(guò)以下代碼獲取用

PHP微信開(kāi)發(fā):如何實(shí)現(xiàn)群發(fā)消息發(fā)送記錄 PHP微信開(kāi)發(fā):如何實(shí)現(xiàn)群發(fā)消息發(fā)送記錄 May 13, 2023 pm 04:31 PM

隨著微信成為了人們生活中越來(lái)越重要的一個(gè)通訊工具,其敏捷的消息傳遞功能迅速受到廣大企業(yè)和個(gè)人的青睞。對(duì)于企業(yè)而言,將微信發(fā)展為一個(gè)營(yíng)銷(xiāo)平臺(tái)已經(jīng)成為趨勢(shì),而微信開(kāi)發(fā)的重要性也逐漸凸顯。在其中,群發(fā)功能更是被廣泛使用,那么,作為PHP程序員,如何實(shí)現(xiàn)群發(fā)消息發(fā)送記錄呢?下面將為大家簡(jiǎn)單介紹一下。1.了解微信公眾號(hào)相關(guān)開(kāi)發(fā)知識(shí)在了解如何實(shí)現(xiàn)群發(fā)消息發(fā)送記錄之前,我

使用PHP實(shí)現(xiàn)微信公眾號(hào)開(kāi)發(fā)的步驟 使用PHP實(shí)現(xiàn)微信公眾號(hào)開(kāi)發(fā)的步驟 Jun 27, 2023 pm 12:26 PM

如何使用PHP實(shí)現(xiàn)微信公眾號(hào)開(kāi)發(fā)微信公眾號(hào)已經(jīng)成為了很多企業(yè)推廣和互動(dòng)的重要渠道,而PHP作為一種常用的Web語(yǔ)言,也可以用來(lái)進(jìn)行微信公眾號(hào)的開(kāi)發(fā)。本文將介紹一下使用PHP實(shí)現(xiàn)微信公眾號(hào)開(kāi)發(fā)的具體步驟。第一步:獲取微信公眾號(hào)的開(kāi)發(fā)者賬號(hào)在開(kāi)始微信公眾號(hào)開(kāi)發(fā)之前,需要先去申請(qǐng)一個(gè)微信公眾號(hào)的開(kāi)發(fā)者賬號(hào)。具體的注冊(cè)流程可以參見(jiàn)微信公眾平臺(tái)的官方網(wǎng)

如何使用PHP進(jìn)行微信開(kāi)發(fā)? 如何使用PHP進(jìn)行微信開(kāi)發(fā)? May 21, 2023 am 08:37 AM

隨著互聯(lián)網(wǎng)和移動(dòng)智能設(shè)備的發(fā)展,微信成為了社交和營(yíng)銷(xiāo)領(lǐng)域不可或缺的一部分。在這個(gè)越來(lái)越數(shù)字化的時(shí)代,如何使用PHP進(jìn)行微信開(kāi)發(fā)已經(jīng)成為了很多開(kāi)發(fā)者的關(guān)注點(diǎn)。本文主要介紹如何使用PHP進(jìn)行微信開(kāi)發(fā)的相關(guān)知識(shí)點(diǎn),以及其中的一些技巧和注意事項(xiàng)。一、開(kāi)發(fā)環(huán)境準(zhǔn)備在進(jìn)行微信開(kāi)發(fā)之前,首先需要準(zhǔn)備好相應(yīng)的開(kāi)發(fā)環(huán)境。具體來(lái)說(shuō),需要安裝PHP的運(yùn)行環(huán)境,以及微信公眾平臺(tái)提

See all articles