1. 程式人生 > >實現微信公眾號聊天機器人,自動回覆——nodejs+圖靈機器人

實現微信公眾號聊天機器人,自動回覆——nodejs+圖靈機器人

登入微信測試號:https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

設定開發介面:


填寫url地址和token,url是在微信公眾號傳送訊息的時候呼叫的介面地址

步驟:

1、註冊圖靈機器人獲取apiKey,官網:http://www.tuling123.com/

2、使用nodejs框架express開發伺服器端介面

1)安裝nodejs

2)安裝express腳手架

npm install -g [email protected]

3)初始化專案

express myRobot

4)安裝依賴

cd myRobot && npm install

5)新增相關其他支援包

 npm install body-parser cookie-parser debug express jade morgan querystring serve-favicon sha1 xml2js --save

6)修改入口檔案(app.js)

var express = require('express');
var app = express();
var http = require('http');
var sha1 = require('sha1');
var xml2js = require('xml2js');
var querystring  = require('querystring');

process.env.PORT = '3001';
function checkSignature(req) {
  // 獲取校驗引數
  var signature = req.query.signature;
  var timestamp = req.query.timestamp;
  var nonce = req.query.nonce;

  // 此處為實驗分配了一個 token,也可以修改為自己的 token
  var token = 'FUWMsvAy';

  // 按照字典排序
  var params = [token, timestamp, nonce];
  params.sort();

  // 連線
  var str = sha1(params.join(""));

  // 返回簽名是否一致
  return str == signature;
}

// 接入驗證
app.get('/', function(req, res) {
  // 簽名成功
  if (checkSignature(req)) {
    res.send(200, req.query.echostr);
  } else {
    res.send(200, 'fail');
  }
});

function handler(req, res) {
  let  buf = '';
  // 獲取XML內容
  req.setEncoding('utf8');
  req.on('data', function(chunk) {
    buf += chunk;
  });
  // 內容接收完畢
  req.on('end', function() {
    xml2js.parseString(buf, function(err, json) {
      if (err) {
        err.status = 400;
      } else {
        req.body = json;
      }
    });

    let data = req.body.xml;
    var msg = {
      "toUserName" : data.FromUserName[0],
      "fromUserName" : data.ToUserName[0],
      "createTime" : data.CreateTime[0],
      "msgType" : data.MsgType[0],
      "content" : data.Content[0],
      "msgId" : data.MsgId[0]
    };
    request(msg, req, res)

  });
}

function request(data, req, res) { 
  var msg = {             
    "key":'64603a10addd410c871c002c3d4f23d6',   // 可以填入自己申請的機器人的apiKey            
    "info": data.content,             
    "userid": ~~(Math.random() * 99999)
  };  
  var text = querystring.stringify(msg);    
  var options = {  
      hostname: 'www.tuling123.com',  
      path: '/openapi/api',  
      method: 'POST',
      headers: {  
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'  
    }  
  };  

  var requestObj = http.request(options, function (response) {  
      var result = '';
      response.setEncoding('utf8');  
      response.on('data', function (chunk) {  
         result +=  chunk;
      });  
      response.on('end',function() {  
      try{
          var obj = JSON.parse(result);
        }
          catch(e){
              data.content = e.message;
          echo(data, res);
          return;
            }
        data.content = obj.text;
        echo(data, res);
      })
  });  

  requestObj.on('error', function (e) {
      console.log('problem with request: ' + e.message);  
      data.content = e.message;  
      echo(data, res);
  });  
  requestObj.write(text);
  requestObj.end();  
}
function echo(data, res) {
  var time = Math.round(new Date().getTime() / 1000);
  var output = "" +
              "<xml>" +
                 "<ToUserName><![CDATA[" + data.toUserName + "]]></ToUserName>" +
                 "<FromUserName><![CDATA[" + data.fromUserName + "]]></FromUserName>" +
                 "<CreateTime>" + time + "</CreateTime>" +
                 "<MsgType><![CDATA[" + data.msgType + "]]></MsgType>" +
                 "<Content><![CDATA[" + data.content + "]]></Content>" +
              "</xml>";

  res.type('xml');
  res.send(output);
}
// Start
app.post('/', function(req, res) {
  handler(req, res);
});

module.exports = app;

啟動服務

node ./bin/www
關注這個微信測試號——》點選輸入框——》輸入“ 深圳天氣 ”

相關推薦

實現公眾聊天機器人自動回覆——nodejs+機器人

登入微信測試號:https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index設定開發介面:填寫url地址和token,url是在微信公眾號傳送訊息的時候呼叫的介面地

公眾開發之——第三方自動回覆機器人接入

 開發微信訂閱號,服務號的朋友都知道,在微信公眾號開發中有一個自動回覆的訊息功能,一般來說,自動回覆的 內容需要我們自定義,而且每次返回的內容基本沒什麼特別的變化,如果要根據提問的內容返回不同的訊息

公眾如何設定關鍵詞自動回覆

微信公眾號選單等功能如何開通 自定義選單最大的優點是減少了使用者的認知門檻,可以將公眾賬號裡的重點資訊入口直觀的暴露給使用者。當用戶進入到公眾賬號時,可以一目瞭然的瞭解相關的服務,只需要點選,不需要再通過一系列的命令列互動(或者簡化了命令列互動的方式,提供了更低門檻的入口) ①:《微信公眾號自定義選單怎麼

公眾新增關注後自動回覆圖文資訊(素材)

公眾號在被新增關注後其實不僅可以回覆單純的文字,還有一個效果更好的方式是直接回復圖文,在圖文資訊中傳達你的感謝和說明一些公眾號的情況。那麼微信公眾號新增關注後怎麼自動回覆圖文資訊?下面小編就為大家介紹一下,一起來看看吧! 方法/步驟 1、登入到微信公眾號的後臺後,在左

Python-快速實現公眾自動回覆聊天機器人

原理:通過微信公眾號提供的開發者模式,利用Python搭建環境,實現自動回覆,回覆內容通過呼叫圖靈機器人的API 配置:伺服器(這裡是阿里雲主機,Ubuntu),公眾號,圖靈機器人 一,公眾平臺上進行開發配置 三種加密方式,按需選擇。第一種最簡單,最不安全(我這裡選擇的第

好用不需多說的公眾實用技巧一起來叨叨!

新媒體至此軍訓之際,太陽大大當空照,火熱的陽光真是好!小編的心情也是非常的好,想一想那麽多嗮黑了,餓瘦了的小學妹們,終於可以顯的我好白好白啦(不是白胖白胖)!白白瘦瘦的我現在比較容易緊張,一緊張我就...喜歡裝逼...裝逼我就想到了微信,想到了微信就忍不住和大家叨叨幾個超級牛逼的技巧(⊙o⊙) 牛逼的技巧一:

java實現公眾房卡牛牛六人平臺開發搭建文章采集接口程序

package ecs util 系統 public address 用戶id 狀態 get 日誌實體類,用戶記錄用戶登錄登出 LogRec.javapackage q.dms.test; import java.util.Date; /** 實體類 包含用戶登錄的id,

推薦一個公眾給大家娛樂資訊每天美性感美女福利發送

資訊 jpg mar nag water com cto 微信 col 推薦一個微信公眾號給大家,娛樂資訊,每天美圖,性感美女,福利發送,喜歡的朋友請關註推薦一個微信公眾號給大家,娛樂資訊,每天美圖,性感美女,福利發送

使用Django實現公眾用戶openid登錄認證

cor 先生 uri lse 文本消息 利用 AR tps elb 最近在用Django做一個小項目,需要將微信的用戶與網站的用戶進行關聯,由於是微信的訂閱號,沒有oauth網頁授權的權限,只能退而求其次,在響應中獲取用戶的openid,來唯一的標識用戶。 Django中用

odoo後臺實現公眾驗證

def not append 官網 github targe method sign code 在微信公眾號開發的其中一個步驟是微信服務器調用我們自己的網站驗證身份,這一步微信服務器會傳遞過來4個參數,可是按照官方的寫法,卻無法驗證通過,下面是官方的驗證方法: impor

實現公眾“一鍵關注”功能?

由於微信的限制,公眾號關注二維碼只能在一段時間內有效!這樣給開發者帶來了很多不便。在網上找了很多資料,大多方法已經失效,目前如下方法比較實用:1. 大家注意如下的連結,紅色*號為公眾號,只需將*替換為你的公眾號,下連線就可以實現類似一鍵關注功能  https://mp.weixin.qq.com/m

實現公眾頭像上傳

這次我們做的專案需要實現一個微信公眾號頭像上傳並且剪裁的功能,實在沒有頭緒,之後通過網上搜索和自己的修改實現了一個適合我們這個框架的方法。 首先本次專案我們的頁面用的事velocity框架,頁面程式碼是: <li> <span class="ti

JAVA帶你一步一步實現公眾開發(一)--接入微公眾平臺

(一)接入流程解析 在我們的開發過程中無論如何最好的參考工具當然是我們的官方文件了:http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html 通過上面我們可以看出其中接入微信公眾平臺開發,開發者需要按照如下

用localStorage實現公眾自動登入

實現微信公眾號自動登入功能,我之前是想用cookie去實現,畢竟cookie可以在java後臺進行操作,但是在微信公眾號一直測試失敗,查資料說是微信授權會進行一次跳轉,無法將cookie攜帶到頁面,暫時還沒想到什麼好的解決方案,所以換了另一種方式用localStorage去實現自動登入功能,

使用spring boot+thymeleaf實現公眾開發之js_sdk介面

1.使用微信的js-sdk介面首先要在自己的微信測試公眾號,或者是公眾號上面新增js安全域名。 2.在需要呼叫JS介面的頁面引入如下JS檔案,(支援https):http://res.wx.qq.com/open/js/jweixin-1.4.0.js。 3.通過config介面注入許

使用訂閱實現公眾歷史文章爬蟲

    微信公眾號已經成為生活的一部分了,雖然裡面有很多作者只是為了蹭熱點,撩讀者的 G 點,自己從中獲得一些收益;但是不乏好的訂閱號,像劉大的碼農翻身、曹大的caoz的夢囈等訂閱號非常值得閱讀。     平時有時候看到一些好的公眾號,也會不自覺去檢視該公眾號的

公眾開發時前端向後端傳送請求獲取signature和openID時出現跨域錯誤的解決辦法。

微信公眾平臺開發用了前端和後端兩個人,前期開發階段前端就很容易遇到跨域問題,今天在前端向後端傳送請求獲取signature,但是前段老是報錯跨域,接受後端的返回資料失敗怎麼辦呢? 其實很簡單,後端最後返回簽名的程式碼本來是這樣的: System.out.println("

Koa2 實現公眾前後端開發

123 課程目錄: 第1章 課程介紹 瞭解學習課程的必要性,所包含的知識點,課程安排,學習前提,課程收穫。 1-1 導學 第2章 第一天 - 準備工作 介紹微信公眾號的基本知識與需要關心的流程,以及常見微信開發問題的解決思路。 2-1 第一天課程內容安排 2-2 微信公眾號

Asp.net 如何實現公眾授權登入

第一個類:封裝好微信配置檔案 using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Web; using Newton

小程式一行程式碼實現公眾頁面程式碼複用

最近在弄微信小程式,剛開始看官方文件,BOSS想要註冊一個小程式,通過點選小程式分享出來的的連結直接進入微信公眾號的首頁,這樣省的再寫一套小程式的程式碼,省時省事(其實是BOSS覺得小程式分享出去的頁面比較好看)。一開始想到的是把分享的頁面做的像小程式的分享頁面一樣,不通過小