国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何基于OpenShift進行微信公眾號開發

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

最近寫了一個微信的翻譯機器人。用戶只要關注該微信號,發送英文的消息,就能收到中文翻譯的回復。后臺是用Node.js寫的,托管在 OpenShift的Paas平臺上。翻譯過程實際上是調用微軟的Bing translation API做的,代碼中用到了alexu84的bing-translate和JacksonTian的wechat這兩個npm模塊。下面把做的過程詳細說一下。

1. 微信公眾號開發

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

成為開發者后,微信會給你一個AppID和一個AppSecret,都是一長串的字符串。在開發我們這個應用時,只要用到AppID。

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

如何基于OpenShift進行微信公眾號開發

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

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

2. 利用OpenShift托管Node.js Web服務

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

  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服務后,我們需要一個擁有公有IP的服務器來運行這些代碼。在這方面,我們有很多選擇,本文使用OpenShift的應用托管服務。

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

下面是稍微詳細一點的步驟:

1)安裝OpenShift的客戶端工具 rhc ,我們需要利用這個工具創建、發布Node.js應用

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

3)修改server.js,運行:

$ git commit -am

$ git push

我們自己的web服務就在云端運行起來了!

3. 使用bing-translate 和wechat NPM module

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

還是直接上代碼吧,因為總共就不到40行代碼。其中第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. })); 

因為我不想在開源的代碼中明文寫上我的微信APPID等敏感信息,我又寫了一個util從Json文件中讀取這些信息。第8行是讀Bing translation app的ID和secret,第9行是讀微信的APPID等信息。這些信息都分別寫在一個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" 

另外,有人可能會注意到我沒有直接使用alexu84的bing-translate模塊,而是引用了一個本地的bing- translate.js文件。這是因為我對該模塊的源文件做了少量的改動,主要是在本地cache了一個Bing translation API的token,這樣就不用每次翻譯的時候都去調微軟的Web API重新拿token了,翻譯響應的速度會大大提高。有空的時候我會把這個改動push給alexu84試試看。

4. 關于Microsoft Bing Translation API

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

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

參考資源

1. Jose Annunziato 如何利用OpenShift 發布 Node.js應用的視頻: 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

責任編輯:Ophira 來源: cnblogs
相關推薦

2013-04-09 22:41:00

微信公眾平臺公眾賬號

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

微信企業號開發

2014-09-24 11:32:21

微信企業號開發

2014-09-24 11:11:08

微信企業號開發

2014-02-24 09:46:52

微信云微信公眾賬號

2014-09-24 13:11:34

信企業號

2013-04-15 16:56:48

微信公眾平臺Android開發

2013-04-10 18:45:52

微信公眾平臺接口開發

2013-04-10 17:52:15

微信公眾平臺接口開發

2013-05-22 10:58:09

微信公眾賬號微信

2021-03-05 06:25:19

fiddler微信公眾號小程序

2013-04-09 23:02:34

微信公眾平臺圖文消息

2013-04-08 16:57:21

微信微信公眾賬號認證

2021-05-28 19:51:54

微信公眾號移動應用

2017-08-01 17:02:19

代碼Python數據

2013-11-13 07:19:19

2013-10-14 15:25:45

微信公眾賬號微信公眾平臺
點贊
收藏

51CTO技術棧公眾號

欧美亚洲一区二区三区| 欧美亚洲一区| 欧美一级欧美三级在线观看| 亚洲熟妇av一区二区三区| 66国产精品| 九九九热精品免费视频观看网站| 在线观看黄av| 国产精品进线69影院| 亚洲电影一二三区| 四虎成人精品永久免费av九九| 最近2019年中文视频免费在线观看| 国产一级在线观看| 亚洲色图一区二区| 自拍日韩亚洲一区在线| 葵司免费一区二区三区四区五区| 国产精品视频网站| 亚洲精品高潮| 亚洲色图五月天| 国产在线1区| 黑人巨大精品欧美一区二区免费| 欧美精品性生活| 高清成人免费视频| 欧美极品日韩| 韩国久久久久| 成人免费淫片视频软件| 欧美性生活一级片| 麻豆国产精品va在线观看不卡| av资源在线看片| 日韩欧美一二区| 超碰免费在线| 欧美亚洲一区三区| 韩国三级在线观看久| 精品毛片三在线观看| 99热在线网站| 亚洲一区视频在线观看视频| 91人人网站| 亚洲色图视频网站| 夜色福利刺激| 亚洲成精国产精品女| 视频免费在线看| 午夜久久久久久电影| 亚洲综合色视频在线观看| 亚洲国产精品尤物yw在线观看| 欧美高清xxxxxkkkkk| 亚洲专区一二三| 深夜福利在线观看直播| 91成人免费在线| 亚洲视频tv| 精品国产乱码久久久久久久| 55av亚洲| 色婷婷av一区二区三区在线观看 | 狂野欧美性猛交xxxxx视频| 欧美日韩三级一区二区| 日本在线视频观看| 欧美成人在线直播| aaa在线观看| 精品久久久久久久久久久久包黑料 | 国产精品第一国产精品| 国产午夜精品一区理论片飘花 | 欧洲中文字幕国产精品| 国产探花在线精品一区二区| 国产一区二区视频在线观看| 成人在线国产| 国产成人精品免费视频大全最热 | 日本视频久久久| 日韩三级在线| 精品亚洲一区二区三区四区五区高| 久久久久中文| 99中文字幕在线观看| 久久久国产精品午夜一区ai换脸| 伦理电影国产精品| 在线成人av网站| 国产麻豆一区| 国产精自产拍久久久久久蜜| 国产欧美日韩一级| 人妻夜夜添夜夜无码av | 99ri日韩精品视频| 国产乱肥老妇国产一区二| 一本色道久久综合亚洲精品不卡| 一区二区日本伦理| 18涩涩午夜精品.www| 欧美a在线看| 久久国产精品网站| 欧美啪啪一区| 蜜臀av无码一区二区三区| 亚洲一级片在线观看| xxxx在线视频| 国产91网红主播在线观看| 最新日韩av| 免费在线激情视频| 欧美性受xxxx| 日韩三级av高清片| 国产精品香蕉视屏| 国产女人18毛片水真多成人如厕 | 国产免费观看久久黄| 免费国产亚洲视频| 成人羞羞视频免费看看| 精品国精品国产| 国产成人一区| 超碰10000| 日韩欧美精品在线观看| 国产资源一区| 久久久一本精品99久久精品| 欧美国产一区二区在线观看 | 婷婷夜色潮精品综合在线| 久久青青色综合| 国产精品自产拍在线观看| 成人午夜激情片| 欧美激情午夜| 日韩免费精品视频| 高清在线不卡av| av免费观看一区二区| 91精品国产高清| 国产高清成人在线| 二区三区在线观看| 国产精品亚洲激情| 久久久久久久综合狠狠综合| 免费看电影在线| 成人免费看片网址| 亚洲视频一二三| 国产毛片精品久久| 日韩欧美亚洲精品| 色爱区综合激月婷婷| 天天躁日日躁狠狠躁欧美巨大小说| japanese在线视频| 欧美日韩午夜在线视频| 波多野结衣在线播放一区| 日本精品免费在线观看| 日韩精品中文字幕有码专区| 亚洲美洲欧洲综合国产一区| 国产a国产a国产a| 欧美国产日韩精品| 成人v精品蜜桃久久一区| free性m.freesex欧美| 狠狠色伊人亚洲综合网站色| 亚洲成人精品一区| 国产亚洲一区二区三区啪| 亚洲成人av免费看| 久久影视免费观看| 成人高清免费观看| 成人h在线观看| 成人av在线播放观看| 日韩av中文在线| 葵司免费一区二区三区四区五区| 黄色片免费在线| 成人网址在线观看| 精品av在线播放| 欧美freesextv| 在线中文字幕av| 成人黄色在线观看| 欧美日韩美女在线观看| 日韩dvd碟片| 一区二区三区高清在线视频 | 91大神在线播放精品| 日本一区二区视频在线观看| 国产美女精品视频免费播放软件 | 成人黄色片视频| 麻豆国产精品va在线观看不卡| 国产成人一区在线| 欧美视频免费看| 丝袜老师办公室里做好紧好爽| 久久精品色欧美aⅴ一区二区| 91在线观看一区二区| 视频一区日韩精品| caoporn97免费视频公开| 国产成人小视频在线观看| 亚洲国产美国国产综合一区二区| 国产毛片一区二区三区| 国产香蕉视频在线观看| www.一区二区三区| 日韩一区二区麻豆国产| 国产精品一区二区在线看| 日本a人精品| av成人网在线| 成人av资源| 亚洲激情视频在线| 丰满少妇久久久久久久| 亚洲一区二区三区免费| 曰韩少妇与小伙激情| 国产一区二区三区四区五区在线| 精品免费视频.| 91在线精品一区二区三区| 免费视频亚洲| av网站在线免费播放| 国产麻豆电影在线观看| 久久成人综合视频| 性做久久久久久免费观看欧美| 伊人久久大香线蕉综合热线| aa国产成人| 亚洲男人天堂色| 亚洲一区亚洲二区亚洲三区| 日韩欧美色电影| 久久五月婷婷丁香社区| 视频在线不卡免费观看| 国产精品69xx| 国产免费黄视频在线观看| 久久久久一区二区| 国内自拍欧美激情| 在线播放亚洲一区| 欧美激情资源网|