在教學之前,希望大家好好看以下幾點說明,因為這跟你值不值得花時間把這篇文章看完有關
另外我不歡迎轉帖,除非你問過我,而且我有同意,不要留個言「借轉」然後就貼出去了
1. 這篇教學的目的不在於人人有功練,而是給「有能力」自行架設VPN及DNS伺服器的人使用 (*1)
2. 只適用在iPhone 4s,有沒有JB沒差 (*2)
3. 希望這篇討論中不會出現「請問iPhone 4能用嗎?」這樣的問題
答案我想是可以,但要怎麼做我不知道,請看第二點
4. 這個SiriServer完全不能跟鬧的project相比,差多了,這個教學只是個開始,希望能讓更多人對這個東西有興趣,就像我是因鬧的project才引起興趣一樣(*3)
5. 如果你期待看完教學就有個像鬧的版本的Siri,那很抱歉,您會很失望
6. 請再看一次第一到第五點,及註明,謝謝您。
*1: 我會列出我用的工具,但我不會有step by step的教學,但若有其他版友想要補充,那就麻煩您了
*2: 不是我不想搞,但我家的3支iPhone 4都已經升級到4s,舊的4也都轉讓了,實在沒有想要去弄一支來。
*3: 有什麼不同呢? 首先,我只有加入了查在地服務的功能,我想對於已經很習慣用Siri的人,只對這個服務會很想要吧?
那就開始來兌現我之前說要寫的教學囉!
Part I. VPN及DNS伺服器的安裝
先來簡單說一下網路環境
Server端: 有固定IP或是有利用no-ip.org來綁定你的浮動或固定IP來對外; 另外有一個IP為對內,這邊以192.168.10.1為例
簡單一點的話,這台Server,可以是DNS, VPN跟你的SiriServer。反正是自己在用的,不用太強,我是用出包版的mini server
1. 先安裝dnsmasq來做DNS server,這個server就是要讓Siri原本是要去找Apple官方源的時候,會走到你的SiriServer
請看這個教學(此教學不是我做的,是原本做SiriProxy的作者做的),這邊請把guzzoni.apple.com後面的IP填入你主機的內網的IP
2. 不是OS X server版的朋友,可以先下載EasyVPN來架設VPN server (http://www.squashedsoftware.com/products-easyvpn.php), Trail版就能用了。VPN就是產生一個虛擬內網,而這個內網是為了要讓你能用你的SiriServer
建議你VPN連入時自動派給的IP是跟主機在同一個網段,換句換說,如果你的主機是192.168.10.1,你分派可以是192.168.10.200~192.168.10.220這樣
3. 都架起來後,首先讓dnsmasq運行,並在terminal下指令
dig *192.168.10.1 guzzoni.apple.com (記得你要把內網ip改成你的!
成後的話 會看到
;; ANSWER SECTION:
guzzoni.apple.com. 0 IN A 192.168.10.1
4. 接著把你的iPhone用3g上網,在網路設定中的VPN設定好,連回你的主機試試。這邊很簡單,我就不寫怎麼設啦
Part II. SiriServer的安裝
成功做完前面的步驟後,就離成功一半啦!因為是好的開始XDD
這邊請連到以下網址下載或是用git clone他的程式碼: https://github.com/apexad/SiriServer
此網址並非是原始SiriServer作者的,而是apexad這人把google place的服務plugin加入後的一個分支
有在用github的人可以像我一樣,是fork到自己的github這樣(但我還沒更新.....)。
再來請詳細照著README走....真的照做就好了,少什麼就裝什麼,整個過程很無痛,若有版友真看不到,請提問,我再詳述好嗎?
因為我覺得我最多就英翻中....英文真看不懂,我不太建議再往下做了,因為未來遇到問題你大概就只能丟來這裡等人解答,沒能去找資料了
這邊我只提我認為會有遇到的問題:
1. Certification Generation過程中,請用 guzzino.apple.com來產生ca,把ca寄給自己後,在手機上安裝
2. 有一個檔案叫apiKeys-sample.conf,再來會需要自己去申請不同程式API的key來填入,有用到再去申請就好,像我只有用google,其他都沒用有,用不到的api就mark掉,把你申請到的key填入後,另存成apiKeys.conf。同樣的用不到的plugin,就在plugins.conf中把他mark掉,我本身有留startRequestHandler, smalltalk, whereAmI, serverinfo,當然還有googlePlaceSearch。
3. 請記得一定要在Google API console中把map和place都enable,不然你會什麼鬼都找不到
再來在有啟動server上的dnsmasq的情況下,啟動SiriServer (指令 sudo python siriServer.py -p443) ,同時讓你的iPhone 4s (要記得裝CA) 能用VPN連入,連入後siri 啟動,先說英文 where am I,此時你應該能看到你自己的現在位置了。
Part III. 教Siri學中文!
1. 再來是時候讓我們的Siri學中文啦!先按ctrl+c停掉SiriServer 再來把SiriServer目錄中的httpClient.py先備份起來,然後用附件覆蓋
2. 到plugins資料夾中,備份googlePlaceSearch.py,用附件覆蓋,另外我建議備份smalltalk.py,一樣用附件覆蓋
3. 啟動你的SiriServer吧!再來啟動Siri,對他說「你好」,會出現回應就對了,但這步你剛沒有用我的附件去蓋掉smalltalk.py就會error。不問好也沒關係,直接問「搜尋附近的XXX」XXX隨你說,我是讓他用keywords去找
4. 如果到這都沒問題,那恭喜囉! 未來希望你能將這個Server靈活運用
Part IV. 我想你應該要了解的事
1. 這整個SiriServer,是附合 Creative Commons Attribution-NonCommercial-ShareAlike 3.0 的,你不能拿來賣,若你要賣,就要跟原作者申請commercial license.
2. 原作者是誰呢? 請去此 https://github.com/Eichhoernchen/SiriServer
3. 想要讓你的Siri更厲害嗎?多看http://hack.silentspark.net/phpbb/index.php
4. 中文Siri最容易遇到的錯,是編碼問題,要小心
5. 請再次謝謝鬧,整個學習的動力都來自於看到了鬧的成功,希望看完此篇有能力架設的人,未來能幫上忙
測試影片







