成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何基于OpenShift進(jìn)行微信公眾號開發(fā)

云計(jì)算
OpenShift是紅帽的云開發(fā)平臺(tái)即服務(wù)(PaaS)。本文介紹了一個(gè)利用OpenShift托管Node.js Web服務(wù)進(jìn)行微信公眾號開發(fā)的過程。用戶只要關(guān)注該微信號,發(fā)送英文的消息,就能收到中文翻譯的回復(fù)。下面讓我們看一下詳細(xì)內(nèi)容。

最近寫了一個(gè)微信的翻譯機(jī)器人。用戶只要關(guān)注該微信號,發(fā)送英文的消息,就能收到中文翻譯的回復(fù)。后臺(tái)是用Node.js寫的,托管在 OpenShift的Paas平臺(tái)上。翻譯過程實(shí)際上是調(diào)用微軟的Bing translation API做的,代碼中用到了alexu84的bing-translate和JacksonTian的wechat這兩個(gè)npm模塊。下面把做的過程詳細(xì)說一下。

1. 微信公眾號開發(fā)

首先是要到 https://mp.weixin.qq.com 申請一個(gè)公眾號,并申請成為開發(fā)者。目前個(gè)人只能申請訂閱號,不過訂閱號也可以和用戶進(jìn)行消息的交互,這對我們的應(yīng)用來說足夠了。

成為開發(fā)者后,微信會(huì)給你一個(gè)AppID和一個(gè)AppSecret,都是一長串的字符串。在開發(fā)我們這個(gè)應(yīng)用時(shí),只要用到AppID。

微信客戶端會(huì)接受用戶輸入的消息,并把它們轉(zhuǎn)給我們的Web服務(wù)。所以微信會(huì)要求我們填寫我們Web服務(wù)的URL地址,Token(令牌),EncodingAESKey(消息加解密密鑰)。頁面如下圖所示:

如何基于OpenShift進(jìn)行微信公眾號開發(fā)

大致上,填寫好信息并提交后,微信服務(wù)器會(huì)發(fā)送一個(gè)GET請求到我們的Web服務(wù),攜帶上Token和一個(gè)隨機(jī)字符串。我們的Web服務(wù)必須按照微信開發(fā)者文檔規(guī)定的方式處理這個(gè)請求,原樣返回這個(gè)隨機(jī)字符串,這樣微信服務(wù)器才認(rèn)為我們的Web服務(wù)是符合它的接入要求的。微信服務(wù)器轉(zhuǎn)發(fā)消息給我們自己的Web服務(wù)時(shí),是以一個(gè)POST消息攜帶上一個(gè)XML數(shù)據(jù)包,我們的web服務(wù)必須解析這個(gè)XML數(shù)據(jù)包才能取得用戶發(fā)的消息。同樣,當(dāng)我們回復(fù)消息給微信服務(wù)器時(shí),也要滿足其規(guī)定的要求。所有這些,在微信的開發(fā)者文檔中都有詳細(xì)的描述。

我們當(dāng)然可以仔細(xì)閱讀微信的 開發(fā)者文檔 ,并自己按要求一一實(shí)現(xiàn)對應(yīng)的接口,不過這樣太麻煩了:-)。更方便的方式是使用 JacksonTian的微信開發(fā)Node.js模塊 。使用這個(gè)模塊,我們只需要填入我們的Token,APPID以及EncodingAESKey,它自動(dòng)就幫我們處理好微信服務(wù)器的驗(yàn)證請求,并允許我們直接獲取/回復(fù)用戶的字符串消息,使我們不用處理XML數(shù)據(jù)解析等細(xì)節(jié)問題。在下文我會(huì)詳細(xì)介紹如何使用這個(gè)模塊。

2. 利用OpenShift托管Node.js Web服務(wù)

首先,我們要知道如何用Node.js開發(fā)一個(gè)Web服務(wù)。本文不打算詳細(xì)介紹這部分內(nèi)容。基本上,利用express模塊,只需幾行代碼就可以搭起一個(gè)Web服務(wù),像這樣:

  1. var express = require('express'); 
  2.  
  3. var app = express(); 
  4. app.listen(80); 
  5.  
  6. app.get('/'function (req, res) { 
  7.     res.send("hello world'); 
  8. }); 

搭建好web服務(wù)后,我們需要一個(gè)擁有公有IP的服務(wù)器來運(yùn)行這些代碼。在這方面,我們有很多選擇,本文使用OpenShift的應(yīng)用托管服務(wù)。

Youtube上有一個(gè)很好的 視頻 介紹如何利用OpenShift建立和發(fā)布一個(gè)Node.js應(yīng)用,step by step級別的,非常的詳細(xì)。我們只需要看前30分鐘就行了。基本上,Openshift使用git來管理代碼開發(fā)以及發(fā)布的過程。你建立一個(gè)應(yīng)用,OpenShift就在云端為你創(chuàng)建了一個(gè)Git倉庫,包含一個(gè)示例的Node.js應(yīng)用,并把它在云端運(yùn)行起來了。我們只要把這個(gè)Git倉庫的代碼 Clone到本地,修改其中的server.js,并把修改好的代碼push到云端,Openshift就會(huì)自動(dòng)幫我們停掉當(dāng)前的示例服務(wù),重新編譯代碼,重新發(fā)布并把我們修改過后的服務(wù)運(yùn)行起來。超級的簡單,是不是?

下面是稍微詳細(xì)一點(diǎn)的步驟:

1)安裝OpenShift的客戶端工具 rhc ,我們需要利用這個(gè)工具創(chuàng)建、發(fā)布Node.js應(yīng)用

2)在command line窗口運(yùn)行 $ rhc app create nodejs-0.10。這個(gè)命令為我們在云端創(chuàng)建了一個(gè)Git倉庫,把內(nèi)含的示例應(yīng)用運(yùn)行起來,并把代碼幫我們clone到了本地。

3)修改server.js,運(yùn)行:

$ git commit -am

$ git push

我們自己的web服務(wù)就在云端運(yùn)行起來了!

3. 使用bing-translate 和wechat NPM module

這一部分稍微詳細(xì)介紹一下如何修改server.js,也就是如何使用bing-translate和wechat這兩個(gè)NPM模塊的。

還是直接上代碼吧,因?yàn)榭偣簿筒坏?0行代碼。其中第18行展示了如何使用wechat,第23行展示了如何使用bing-translate。

  1. var express = require('express'); 
  2. var kutil = require('./util/kutil.js'); 
  3. var wechat = require('wechat'); 
  4. var server_port = process.env.OPENSHIFT_NODEJS_PORT || 8080 
  5. var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1' 
  6. var client_id_secret = kutil.readJsonFromFile('./res/client_id_secret.json'); 
  7. var wechat_app_config = kutil.readJsonFromFile('./res/wechat_app_config.json'); 
  8. var bt = require('./util/bing-translate.js').init(client_id_secret); 
  9. var app = express(); 
  10. app.listen(server_port, server_ip_address); 
  11. // wechat API 
  12. app.use(express.query()); 
  13. app.use('/wechat', wechat(wechat_app_config, function (req, res, next) { 
  14.   var message = req.weixin; 
  15.   if (message.MsgType == 'text') { 
  16.     var input_word = message.Content; 
  17.     bt.translate(input_word, 'en''zh-CHS'function (translate_err, translate_res) { 
  18.       if (translate_err) { 
  19.         res.reply({ 
  20.           content: 'translation error'
  21.           type: 'text' 
  22.         }); 
  23.         return
  24.       } 
  25.       var translate_result = translate_res["translated_text"]; 
  26.       res.reply({ 
  27.         content: translate_result, 
  28.         type: 'text' 
  29.       }); 
  30.     }); 
  31.   } 
  32. })); 

因?yàn)槲也幌朐陂_源的代碼中明文寫上我的微信APPID等敏感信息,我又寫了一個(gè)util從Json文件中讀取這些信息。第8行是讀Bing translation app的ID和secret,第9行是讀微信的APPID等信息。這些信息都分別寫在一個(gè)Json文件中,格式如下:

  1.     "client_id""your-Bing-translator-app-client_id"
  2.     "client_secret""your-Bing-translator-app-client_secret" 
  3. }
  1.     "token""your_wechat_app_token"
  2.     "appid""your_wechat_app_appid"
  3.     "encodingAESKey""your_wechat_app_AESKey" 

另外,有人可能會(huì)注意到我沒有直接使用alexu84的bing-translate模塊,而是引用了一個(gè)本地的bing- translate.js文件。這是因?yàn)槲覍υ撃K的源文件做了少量的改動(dòng),主要是在本地cache了一個(gè)Bing translation API的token,這樣就不用每次翻譯的時(shí)候都去調(diào)微軟的Web API重新拿token了,翻譯響應(yīng)的速度會(huì)大大提高。有空的時(shí)候我會(huì)把這個(gè)改動(dòng)push給alexu84試試看。

4. 關(guān)于Microsoft Bing Translation API

大家都注意到在上一部分我們要填入Bing Translation的client ID和client secret。這是因?yàn)锽ing Translation API也是一個(gè)Web服務(wù),我們需要到這個(gè) 頁面 去申請一個(gè)Bing Translation的app,申請好后,就有了我們自己的client ID 和 secret。當(dāng)然這里可能涉及要注冊微軟的賬號什么的,這里就不贅述了。

***, 我的代碼都放到了 GitHub 上,除了把APPID和secret什么的替換成示例的字符串,其他的就和我在OpenShift上發(fā)布的代碼一模一樣了。

參考資源

1. Jose Annunziato 如何利用OpenShift 發(fā)布 Node.js應(yīng)用的視頻: https://www.youtube.com/watch?v=wnRtA7a0ST0

2. alexu84: Bing translation API 的Node.js wrapper https://github.com/alexu84/bing-translatehttps://github.com/alexu84/bing-translate

3. JacksonTian: 微信API的Node.js wrapper https://github.com/node-webot/wechat

4. Bing Translation API: http://blogs.msdn.com/b/translation/p/gettingstarted1.aspx

5. 我的代碼示例: https://github.com/kaige/KDict/tree/master/openshift_host_code/kdict

博文出處:http://www.cnblogs.com/kaige/p/4659989.html?utm_source=tuicool

責(zé)任編輯:Ophira 來源: cnblogs
相關(guān)推薦

2013-04-09 22:41:00

微信公眾平臺(tái)公眾賬號

2019-12-27 13:31:33

Talking DatAI人工智能

2013-04-08 15:56:49

2022-12-05 10:47:37

2014-09-24 09:59:23

微信企業(yè)號開發(fā)

2014-09-24 11:32:21

微信企業(yè)號開發(fā)

2014-09-24 11:11:08

微信企業(yè)號開發(fā)

2014-02-24 09:46:52

微信云微信公眾賬號

2013-04-15 16:56:48

微信公眾平臺(tái)Android開發(fā)

2013-04-10 18:45:52

微信公眾平臺(tái)接口開發(fā)

2014-09-24 13:11:34

信企業(yè)號

2013-04-10 17:52:15

微信公眾平臺(tái)接口開發(fā)

2013-05-22 10:58:09

微信公眾賬號微信

2021-05-28 19:51:54

微信公眾號移動(dòng)應(yīng)用

2017-08-01 17:02:19

代碼Python數(shù)據(jù)

2020-11-19 15:38:07

Android微信改版

2013-10-14 15:25:45

微信公眾賬號微信公眾平臺(tái)

2013-04-08 16:57:21

微信微信公眾賬號認(rèn)證

2013-04-09 23:02:34

微信公眾平臺(tái)圖文消息

2021-03-05 06:25:19

fiddler微信公眾號小程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 精品免费视频 | 日韩精品1区2区 | 夜夜爽99久久国产综合精品女不卡 | 久久婷婷麻豆国产91天堂 | 国产精品久久久久久久岛一牛影视 | 中文字幕在线观看www | 欧美国产日韩在线观看成人 | 婷婷桃色网 | 久草免费电影 | 一级黄色录像毛片 | 中文字幕在线观看视频一区 | 国产一区二区三区在线视频 | 黄色片在线看 | 成年无码av片在线 | 成人不卡视频 | 免费观看www7722午夜电影 | 国产一区2区| 中文字幕人成人 | 国产精品美女久久久av超清 | 国产精品欧美一区喷水 | 香蕉一区| 成人伊人网| 欧美xxxx性| 国产高清久久久 | 国产精品夜夜春夜夜爽久久电影 | 久久久久久久久久久蜜桃 | 国产一区二区三区四区五区加勒比 | 99久久精品一区二区毛片吞精 | 欧美黑人一级爽快片淫片高清 | 久在线观看 | 精品国产第一区二区三区 | 亚洲成人999 | 国产91在线 | 中日 | 国产精品国产精品国产专区不卡 | 色婷婷av99xx | 97久久精品午夜一区二区 | 精品久久免费 | 成人欧美一区二区三区黑人孕妇 | 91亚洲国产成人久久精品网站 | 天天操,夜夜爽 | 日韩精品视频在线播放 |