SiriProxyを使ってみた

参考サイト (というかそのまま)
SiriProxyのプラグインとしてSiriで家電を操作するSiriProxy-iRemocon

SiriProxyはSiriのProxyサーバーです。要は、Siriで話した内容の解析結果をPCに飛ばせるよってこと(細かいことは気にしない...) 詳しいことは、参考サイトを参照w

Rubyを入れる
rvm install 1.9.3
gem install bundler
DNSの設定

confファイルを雛形から作成して、address情報を追記する

brew install dnsmasq
cp /usr/local/opt/dnsmasq/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf
vi /usr/local/etc/dnsmasq.conf
# Add domains which you want to force to an IP address here.
# The example below send any host in double-click.net to a local
# web-server.
#address=/double-click.net/127.0.0.1
# 192.168.1.29はSiriProxyが可動するマシンのアドレス
address=/guzzoni.apple.com/192.168.1.29

アドレスはifconfigとかして調べる

ifconfig | grep inet 

保存してから下記のコマンドで稼働する

sudo /usr/local/sbin/dnsmasq

稼働させたら、{iPhone, iPad} のDNSアドレスを192.168.1.29で更新する

SiriProxyのSetup

ライブラリやプロファイルを作成する

git clone https://github.com/plamoni/SiriProxy.git
cd SiriProxy
mkdir ~/.siriproxy
cp ./config.example.yml ~/.siriproxy/config.yml
gem install /Users/sngymn/SiriProxy/pkg/siriproxy-0.4.4.gem
rake install
siriproxy gencerts

gemcertsで~/.siriproxy/ca.pemというプロファイルが生成される
これをメールか何かで {iPhone, iPad} に送りつけてインストールする

SiriProxyの起動
bundle install
siriproxy update
rvmsudo siriproxy server

sudo siriproxy serverでも起動できる

あとは、Siriに向かって喋るだけ!!

[Info - Plugin Manager] Plugins loaded: [#<SiriProxy::Plugin::Example:0x007fca5a370d58 @manager=#<SiriProxy::PluginManager:0x007fca5a371320 @plugins=[...]>>]
[Info - iPhone] Received Object: LoadAssistant
[Info - iPhone] Received Object: SetRestrictions
[Info - iPhone] Received Object: ClearContext
[Info - iPhone] Received Object: StartSpeechRequest
[Info - iPhone] Received Object: SetRequestOrigin
[Info - User Location] lat: 35.65755939007164, long: 139.5430340842567
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SetBackgroundContext
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - Guzzoni] Received Object: AssistantCreated
[Info - Guzzoni] Received Object: AssistantLoaded
[Info - Guzzoni] Received Object: SetConnectionHeader
[Info - iPhone] Received Object: FinishSpeech
[Info - Guzzoni] Received Object: AddViews
[Info - iPhone] Received Object: SetAssistantData
[Info - Guzzoni] Received Object: CommandFailed
[Info - iPhone] Received Object: Chunk
[Info - iPhone] Received Object: Finished
[Info - iPhone] Received Object: StartSpeechRequest
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - Guzzoni] Received Object: ChunkAccepted
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: FinishSpeech
[Info - Guzzoni] Received Object: SpeechRecognized
[Info - Plugin Manager] Processing 'テスト '
[Info - Plugin Manager] Processing plugin #<SiriProxy::Plugin::Example:0x007fca5a370d58>

何も処理をしないと、こんな感じでレスポンスが飛んできます
あれ...User Location?? 現在地が抜かれてるw さすが...