前段時間忽然對微信裏的一些消息感到厭煩,若是能有微軟小冰這樣的智能機器人幫我自動回覆消息就行了。想到就開始動手。html
第一步:json
登陸微信網頁版,過程略。api
第二步:跨域
選擇一個好友,按下F12,找到console控制檯,輸入以下代碼。瀏覽器
var appElement = document.querySelector('[ng-controller=chatSenderController]'); var $scope = angular.element(appElement).scope(); $scope.editAreaCtn = "想說的話"; $scope.sendTextMessage();
按下回車後效果服務器
到此爲止,兩步已經結束。微信
若是要定時,將$scope.sendTextMessage();改造,加上setTimeout便可。app
setTimeout(function(){ $scope.sendTextMessage(); },1000);
重複發送同理,只是須要每次給輸入框給值工具
var appElement = document.querySelector('[ng-controller=chatSenderController]'); var $scope = angular.element(appElement).scope(); setInterval(function(){ $scope.editAreaCtn = "想說的話"; $scope.sendTextMessage(); },1000);
-------------------------------------------------------------分割線----------------------------------------------------------url
下面是高級攻略。咱們要完成的是引入機器人自動回覆,前面只是準備工做。機器人推薦圖靈機器人http://www.tuling123.com/
圖靈機器人API:http://www.tuling123.com/openapi/api?key=******&info=你好
其中key就是開發者key,註冊帳號能夠免費得到。info爲消息內容。
在瀏覽器地址欄輸入能夠看到結果,爲一個json串。
機器人準備好了,咱們開始吧。
第一步:獲取對方發送的消息,可以使用以下代碼:
function getChatInfo(){ var info = ''; var length = document.getElementsByClassName('left').length; if(length > 0){ info = document.getElementsByClassName('left')[length-1].getElementsByTagName("pre")[0].innerText; } return info; }
第二步:根據對方聊天內容,獲取圖靈機器人的返回值:
主要依靠XMLHttpRequest對象。
var appElement = document.querySelector('[ng-controller=chatSenderController]'); var $scope = angular.element(appElement).scope(); var xmlhttp = new XMLHttpRequest(); function callback(){ if (xmlhttp.readyState == 4 && xmlhttp.status == 200){ var responseText = xmlhttp.responseText; var str = eval("("+ responseText +")"); $scope.editAreaCtn = str.text; $scope.sendTextMessage(); } } xmlhttp.onreadystatechange = callback; var oldInfo = ''; function getChatInfo(){ var info = ''; var length = document.getElementsByClassName('left').length; if(length > 0){ info = document.getElementsByClassName('left')[length-1].getElementsByTagName("pre")[0].innerText; } return info; } setInterval(function(){ var info = getChatInfo(); if(info != '' && info != oldInfo){ xmlhttp.open("GET","http://www.tuling123.com/openapi/api?key=******&info=" + info, false); xmlhttp.send(); oldInfo = info; } }, 1000);
這時咱們會遇到第一個挑戰,跨域。若是是本身的服務器,天然好解決,設置下就OK。可是這是企鵝的,就不那麼容易了。好在,發現了IE瀏覽器的一個特性,能夠設置瀏覽器,容許跨域。放個連接好了http://jingyan.baidu.com/article/c33e3f48857933ea15cbb50a.html
跨域解決了,你覺得好了嗎,too young。 接下來遇到第二個挑戰。https協議下不容許進行http請求。兵來將擋,水來土掩。本身搭建一個https 的WEB應用,而後重定向到http請求,天然就能夠越過這個限制了。再放個連接:使用Java工具生成服務器證書和客戶端端證書,安裝而且設爲信任。而後使用Tomcat搭建Web應用 http://jingyan.baidu.com/article/a948d6515d3e850a2dcd2ee6.html 固然別的Web應用也能夠,拋磚引玉。搭建成功後再寫個servlet。
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String info = request.getParameter("info"); String url = "http://www.tuling123.com/openapi/api?key=******&info=" + info; response.sendRedirect(url); }
xmlhttp.open()中的連接天然要改爲這個:
xmlhttp.open("GET","https://localhost:8443/directServer/servlet/DirectServlet?info=" + info, false);
到這裏也差很少要結束了,感謝看到這塊的同窗。固然最終的結果是,沒成功。大家不要打我啊。雖然本身生成證書,但瀏覽器仍是不信任,最終沒能發出get請求。