Nodejs微信開發

因為使用了Bot Framework開發了一個小功能,它目前支持了Skype\Teams\Slack等,但在國內來講,微信還是一個比較流行的軟件,所以需要接上微信

原來開發Bot的時候使用的是.Net開發的,這次我決定使用Nodejs開發一個簡單的后臺程序。

說真的,剛開始的時候沒有任何經驗,剛開始的時候,還是很辛苦的。

一.注冊一個微信公眾號(我開始的時候注冊了一個個人訂閱帳號,才發現似乎接口不支持),推薦使用官方的測試平臺(http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login),是一個功能完整的測試帳號

?

二.使用Nodejs開發后臺,前提是你的機器已經安裝了Nodejs開發環境

如果你本機還未全局安裝express,那先使用npm全局安裝express

npm install express -g

?

2.1 選中一個目錄,使用express創建一個項目

express WeChat-Bot

這時,在該目錄就會產生一個WeChat-Bot的文件夾

2.2在命令行中進入至WeChat-Bot文件夾,安裝依賴包(express生成的項目會包含某部分依賴包)并安裝wechat

cd WeChat-Bot
npm install
npm install wechat -save

2.3編輯control加入文件wechat.js,并加入代碼

var wechat = require('wechat');
var config = {token: 'weixin',//token是你申請測試公眾號時候填寫的tokenappid: 'wxf6d0ac7f84dc22fb',//appid是申請時,自動生成的,就在最頂部encodingAESKey: 'ZEtViedarf49EUOCDeu45pqhkZhKPFBjSHI2DynP4vq',checkSignature: true // 可選,默認為true。由于微信公眾平臺接口調試工具在明文模式下不發送簽名,所以如要使用該測試工具,請將其設置為false 
};//以下開始為獲取到微信服務器發送過來的消息,并在此處回復消息
//此處監控的是URL的wechat,那么在配置微信的URL時,也需要在主機URL地址后面加入wechat這樣才可以獲取到數據
app.use(express.query());
app.use('/wechat', wechat(config, function (req, res, next) {// 微信輸入信息都在req.weixin上 var message = req.weixin;

  console.log(message);
if(message.MsgType === 'text'){ res.reply('這是一個自動回復'); }else if(message.MsgType === 'voice'){ }else if(message.MsgType === 'image'){res.reply([{title: '文章提示',description: '返回的是文章',picurl: 'http://pic002.cnblogs.com/images/2011/159097/2011102917303125.jpg',url: 'http://doxmate.cool/node-webot/wechat/api.html'}]);} }));

2.4使用npm運行項目,運行命令后,Nodejs將在本機開發監聽3000端口的請求

npm start

三.使用ngrok將本機端口發布至公網

將生成的公網URL復制至公眾平臺中,為什么在地址后面加入wechat??這是因為Nodejs中,不是監聽根目錄,而是根目錄下的wechat路徑,如果監聽的是根目錄,則在公眾號中不需要加入wechat

?微信與公眾號后臺數據交互流程

?

?

參考:https://www.npmjs.com/package/wechat ? wechat包

http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index ?微信公眾號測試開發平臺

http://www.cnblogs.com/xuange306/p/4971702.html ? 微信后臺開發第一步:nodeJS+express接入微信后臺詳細教程

?

轉載于:https://www.cnblogs.com/weschen/p/6405436.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396739.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396739.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396739.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

性別有什么用_為啥不讓男孩玩布娃娃?別讓你的“性別偏見”,給孩子的人生設限...

在養育孩子的過程中,父母總是會犯許多錯誤,更是有一些錯誤會直接使孩子毀掉一生,而性別偏見正是很多家長都會去犯的錯誤,對男孩和女孩有著刻板印象,也正是因為這一點使孩子的潛力和天賦被壓制。前幾天我帶著孩子去逛商…

android的時間代碼怎么寫,Android 日期和時間的使用實例詳解

Android 日期和時間的使用日期和時間的使用;1:彈出框TimePickerDialog,DatePickerDialog2:組件TimePicker,DatePickerTimePickerDialog的使用:通過點擊button顯示圖一,然后用戶可以設置時間DatePickerDialog的使用只需…

andriod studio 查看項目依賴_Intellij IDEA 中如何查看maven項目中所有jar包的依賴關系圖...

Maven 組件界面介紹如上圖標注 1 所示,為常用的 Maven 工具欄,其中最常用的有:第一個按鈕:Reimport All Maven Projects 表示根據 pom.xml 重新載入項目。一般單我們在 pom.xml 添加了依賴包或是插件的時候,發現標注 4…

Springboot 2.0.0單元測試

1. 引入spring-boot-starter-test包 1 <?xml version"1.0" encoding"UTF-8"?>2 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"3 xsi:schemaLocation"…

SPRING IN ACTION 第4版筆記-第二章-002-@ComponentScan、@Autowired的用法

一、ComponentScan 1. Configuration //說明此類是配置文件 ComponentScan //開啟掃描&#xff0c;會掃描當前類的包及其子包 public class CDPlayerConfig { } 2. ComponentScan(basePackages{"soundsystem", "video"})//掃描多個包 public class CDP…

Kurento協議

2019獨角獸企業重金招聘Python工程師標準>>> Kurento媒體服務器可以被兩種外部Kurento客戶端控制&#xff0c;如Java或JavaScript。這些客戶端使用Kuernto協議來和KMS通信。Kurento 協議是基于WebSocket協議&#xff0c;并使用了JSON-RPC V2.0 消息來提交請求和發送…

升級php7_PhpStorm 2019.3 發布,全面支持 PHP 7.4

PhpStorm 2019.3 發布了&#xff0c;這個版本主要集中在性能和質量上&#xff0c;旨在提供一個更穩定、更快的 IDE。PhpStorm 2019.3 全面支持 PHP 7.4&#xff0c;還帶來 PSR-12 代碼樣式&#xff0c;用于遠程解釋器的 WSL&#xff0c;MongoDB 支持&#xff0c;HTTP 客戶端更新…

ftp 客戶端 使用http代理 源碼_代理服務器連接HTTPS過程

說到HTTPS代理很多人瞬間就會聯想到HTTPS的各種證書和各種加密&#xff0c;覺得很高端很復雜的樣子。其實不然&#xff0c;代理服務器不需要配置證書、也不需要處理任何加密。因為HTTPS代理是通過Web隧道(Web tunnel)工作的。Web隧道允許用戶通過HTTP連接發送非HTTP流量(例如FT…

python解zuobiaoxi方程_Python還能解決數學相關問題?大學生:以后就靠他了,事半功倍...

問題背景高等數學應用非常廣&#xff0c;基本上涉及到函數的地方都要用到微積分&#xff0c;還有在幾何方面也是如此&#xff0c;計算機的應用讓我們能簡單快速處理各種高等數學中的計算&#xff0c;比如極限、導數、積分、微分方程等的計算。實驗目的使用 Python 通過計算與作…

Android版:驗證手機號碼的正則表達式 (轉)

/** * 驗證手機格式 */ public static boolean isMobileNO(String mobiles) { /* 移動&#xff1a;134、135、136、137、138、139、150、151、157(TD)、158、159、187、188 聯通&#xff1a;130、131、132、152、155、156、185、186 電信&#xff1a;133、…

基礎正則表達式介紹與練習

基礎正則表達式介紹與練習 一、什么是正則表達式 在做文字處理或編寫程序時&#xff0c;用到查找、替換等功能&#xff0c;使用正則表達式能夠簡單快捷的完成目標。簡單而言&#xff0c;正則表達式通過一些特殊符號的幫助&#xff0c;使用戶可以輕松快捷的完成查找、刪除、替換…

android canvas 網絡圖,【巨坑:toDataURL】canvas合成網絡圖片

不知有沒有小伙伴用過canvas合成圖片&#xff0c;然后爆炸報錯截圖尼瑪&#xff0c;然后各種搜索&#xff0c;不外乎以下幾種坑爹處理方案&#xff1a;后端處理&#xff0c;比如Access-Control-Allow-Origin "*"(要是請求到其他網站的圖片就不適用了&#xff0c;比如…

水晶報表如何查看sql_有了這個報表工具,一鍵生成自定義的各種報表,還可以導出Excel...

EasyReport是一個簡單易用的Web報表工具,它的主要功能是把SQL語句查詢出的數據轉換成報表頁面&#xff0c; 同時支持表格的跨行(RowSpan)與跨列(ColSpan)配置。 同時它還支持報表Excel導出、圖表顯示及固定表頭與左邊列的功能。功能介紹本工具從數據庫(MySQL,Oracle,SQLServer,…

python 三維向量 交互_Blender實現Nature of Code1.5單位向量[Nature of Node 004]

【Nature of Node #004】Blender創意編程進階應用&#xff1a;實現Nature of CodeNature of Code 1.5, Unit Vector (Normalize)背景介紹這個系列“Nature of Node”&#xff0c;是專門用Blender的Node&#xff08;節點&#xff09;方式來實現Nature of Code。用到一個Blender插…

Sitemesh3的使用及配置

1 . Sitemesh 3 簡介 Sitemesh 是一個網頁布局和修飾的框架&#xff0c;基于 Servlet 中的 Filter&#xff0c;類似于 ASP.NET 中的‘母版頁’技術。參考&#xff1a;百度百科&#xff0c;相關類似技術&#xff1a;Apache Tiles。 官網&#xff1a;http://wiki.sitemesh.org/wi…

等保項目流程

等級保護&#xff1a;直屬管理公安局 產品必須通過公安局安全許可證分級保護&#xff1a;直屬管理保密局 產品必須通過保密局銷售許可證等級保護&#xff1a;一般分為5級&#xff0c;目前最高用到是等保4級總概&#xff1a;定級——前期調研——總…

鴻蒙系統r如何升級,高歌猛進,鴻蒙系統升級機型再次確認,花粉:終等到!...

雖然華為手機現在的壓力非常大&#xff0c;但是在前進的道路上&#xff0c;真的充滿了樂觀精神&#xff0c;而且現在也算是一路高歌猛進了&#xff0c;發展路線開始加快了許多&#xff0c;無論是新機還是系統&#xff0c;都有著非常多的新消息。因為華為手機的實力很強&#xf…

Oracle快速備份表數據

Oracle數據庫中備份表數據。 例子&#xff1a; 1 create table table_name_bak as select * from table_name 1 create table table_name_bak as select * from table_name 2 where table_name.date between TO_DATE(2018-09-25,yyyy-MM-dd) and TO_DATE(2018-09-26,yyyy-MM-d…

git pull

今天在服務器上git pull是出現以下錯誤&#xff1a; error: Your local changes to the following files would be overwritten by merge: application/config/config.php application/controllers/home.php Please, commit your changes or stash them before you can merge. …

jq控制div是否展示_jQuery控制多個DIV的顯示和隱藏

問題補充&#xff1a;這是我寫的JSfunction Previous(){for(var i1;i<3;i){if(document.getElementById("d"i).style.display"block"){document.getElementById("d"(i-1)).style.display"block";}document.getElementById("d&…