Windows10MobileのCortanaの機能を拡張するアプリ「俺の秘書育成計画」をリリースしました

はじめに

先のWindows10アップデートにより、PC版、モバイル版両方で日本語版Cortanaが使えるようになりました。

リマインダーや音楽再生などパーソナルな機能が備わっていて、そこそこ正確に音声認識をしてくれるCortanaですが、少し難しい発話をすると、すぐにBingに頼ってしまい(そこもまた可愛い)、やはりまだ実用するには難しいところがあります。

やはりパーソナルエージェントたるもの、自分の指定したルールにしたがって応答してほしいものです。

そこでそんな需要をかなえるアプリ「俺の秘書育成計画」をリリースしたのでアプリの紹介とCortanaのことについて書きたいと思います。

Cortanaのアプリ連携歴史

さて、アプリを紹介するまえにまずCortanaとアプリ連携の歴史についてお話しする必要があります。

CortanaはWindowsPhone8.1時代に英語ロケール(そのほかにもあったけど知らない)にすることで使うことができていました。

当時からアプリとの連携を想定した作りになっていて、VoiceCommandDefinitionというXMLファイルを記述することでCortanaに指定した言葉を言うとアプリをフォアグラウンド起動することができました。

詳しくはこちらの記事に書いています。

 

そしてWindows10アップグレードによって、同様にVoiceCommandDefinitionのXMLを記述することで新しくCortanaからアプリをバックグラウンド起動することができるようになりました。

Cortanaからアプリをバックグラウンド起動できるようになったおかげで、Cortanaから起動したアプリがウインドウを持たなくてもよくなっただけではなく、任意の言葉をCortanaに言わせることができるようになりました。

つまり、特定の言葉をCortanaが認識したとき、特定の言葉を返すようなルールをXMLとして記述してCortanaに登録してやれば、Cortanaとお話しができるようになるわけですね。

俺の秘書育成計画

というわけでそんなことをしてくれるアプリである「俺の秘書育成計画」をリリースしました。

アプリはコチラからダウンロードしてください。

 

アプリ名がアホみたいですが最初からこんなアホみたいな名前だったわけではなく、当初は「CortanaCommand」というアプリ名で審査に出したのですが見事に落ちたので「俺の秘書育成計画」にすると通りました。

使い方

詳しいことはヘルプページに書いてますがここでは基本的な使い方について解説したいと思います。

まず、アプリを立ち上げてもらったらこんな感じでCommandが1つ、その中にStateが1つあると思います。

このStateの中のListenForに認識したい言葉を書き、Utteranceに応答としてしゃべってほしい言葉を書きます。

そしてルールがかけたら右上のUpdateボタンを押すとCortanaにそのルールが登録されます。

あとはCortanaに向かってCommandPrefixとListenForに書いた言葉をしゃべると特定の応答が返ってきます。

CommnadPrefixは絶対に必要です。デフォルトは「コルタナ」なので「コルタナ」の後にListenForの言葉を発話しましょう。

発話例は発話例タブを見ることで確認することもできます。

Cortanaをオートマトン化する

Cortanaに任意の言葉をしゃべらせることができましたが「俺の秘書育成計画」はCortanaに状態遷移をつけることもできます。

たとえば「こんにちは」に対し「おはようございます」というルールを書いた場合、状態遷移なしでは何回「こんにちは」といっても「おはようございます」として返ってきません。

そこでCortanaが言葉を認識するたびに状態を遷移するようにしてやると、このようなツンデレシステムができあがります。

俺の秘書育成計画で状態遷移を行うには、Command内にStateを新しく追加します。

追加するStateは「正常応答」を選択します。

Cortanaのツンデレ化に成功しました。

任意のアプリを立ち上げる&連携する

UWPにはプロトコル起動というしくみがあり、http://のようなプロトコルをアプリに設定しておくことでUWPから別のUWPをパラメータ付きで起動することができます。

俺の秘書育成計画では特定の言葉をいったとき、特定のプロトコルを起動できるような仕組みがあります。

Command内のStateに、「UWP連携状態」を追加します。

Protocol部分の項目に任意のプロトコルを記述することでUWPを起動することができます。

 

PowerShellのコマンドを実行する

ここからはPC版のみの機能となります。

俺の秘書育成計画ではサーバープログラムと通信することでCortanaからPowerShellのコマンドを起動できます。

サーバープログラムはここからダウンロードしてください。

そしてアプリからスクリプト実行状態を追加し、PowerShellコマンドの欄に任意のPowerShellコマンドを書きます。

あとはサーバーを起動させて、PassCodeをサーバーにコピペします。

これでCortanaからPowerShellを起動することができます。

パスを指定すれば任意のファイルを表示できます。スライドだって見れます。

CortanaからPowerShellが起動できるならもうなんでもやりたいほうだいです。シャットダウンもできます。

 

おわりに

この記事はWindows Phone/Windows10Mobile AdventCalendarの21日目の記事です。

PCのスクショが多かったですが、10MobileでもPowerShell以外同様のことができます。

ぜひダウンロードしたり、自分でCortanaと連携するアプリを作ってみてください!

明日はnoy_shimotsukiさんです。




3 Comments

素晴らしいセンスと技術力。脱帽です。尊敬します。
ちなみに私はこんなことを考えています。
コルタナさんに「ヘルプデスク」と声をかけると、「ご用件をお話しください」と答えます。裏でアプリが起動します。
「無線LANの調子が悪いんです。」というと、裏アプリが解決策候補をウィンドウに表示します。メールでURLを送ることもできます(オプショナル)。
「ありがとう」と言われると、コルタナさんはセッションを切って、待機状態に戻ります。

コメントありがとうございます。
非常に良いアイデアですね!
ぜひアプリとして実装してみてください。きっと多くの方にダウンロードしていただけるアプリとなると思います!

Cortanaに興味をもち、拡張できないかと調べていたらこのサイトにたどりつきました。凄い!の一言です。自分はコードもかけないし全くの初心者のではありますが、音楽アプリとの連携などいろりろ試してみたいです。Alexa echo や Google home などアイアンみたくできる日も近いかもしれませんね。

Leave a Reply

Your email address will not be published. Required fields are marked *