初めに
2018年にBot Framework v4がリリースされ、v3と書き方が全然違うので皆さん血反吐を吐く思いで勉強されていると思います。
私も勉強しているのですがASP.Net、何それ?という人なので良く分かっていません。
皆さんが公開しているサイトがなければすぐ挫折していたと思います。本当にありがとうございます。
まだまだ理解が追い付いていないので、お勧めの書籍なりサイトなりあれば教えてください。
と、話がそれました。。。
Bot Framework v4の記事を書ければよいなと思いながらQiitaを眺めていたのですがここに良い記事がありましたので、今回はまだ日本でサービスインされていないCortana SkillをBot Framework v4で作成した場合の問題点について記載しようと思います。
Cortana Skillとは
Cortanaから呼ぶことが出来るSkillです。
Amazon Echoで例えると、EchoがCortanaでAlexa SkillがCortana Skillとなります。
BotとCortana Skillの関係
Bot Framework(v3でもv4でも)で作成したBotは様々なChannelに接続可能なように設計されています。
そのため、Azure Portal上でCortana Channelと接続設定さえすればCortanaからBotが呼び出せるようになります。
同様にSlackやMicrosoft TeamsなどからもBotに接続可能です。
Bot Framework v4での問題点
さてさて、ようやく本題になります。
Bot Framework v4で作成したBotをCortanaに接続した場合、以下の問題があることがわかっています。
- ConfirmPromptの選択肢(Yes/Noボタン)が表示されない
- Typingを示す"..."が表示されない
1.のConfirmPromptの方はAdaptiveCardで対処しました。
AdaptiveCardではテキストのFontサイズも変更出来たりと便利なので、もうAdaptiveCardだけあれば良い気がしてきます。
(AdaptiveCardの詳細はここを参照ください。)
ただし、Cortana Skillはユーザーからのインプットとして以下3つを考慮する必要があります。
- 音声
- キーボード
- ボタンタッチ
ConfirmPromptはYes/Noボタンを表示するため、AdaptiveCardで代用した場合は上記3つのインプットに対応する必要があります。
ここでわざわざ対応と言った理由ですが、Cortana SkillでAdaptiveCardを使用すると、音声やキーボードでYes/Noと入力した場合とボタンタッチでYes/Noを選択した場合とで得られる文字列が異なるためです。
音声やキーボードの場合はそのものずばりの文字列が得られるのですが、ボタンタッチの場合は得られる文字列の前後にダブルコーテーションが付きます。
前後にゴミが付くだけなので対応としては以下の様にすれば大丈夫です。
if (yesNo.ToLower().Contains("yes"))
{
// Yesの時の処理
}
else if (yesNo.ToLower().Contains("no"))
{
// Noの時の処理
}
else
{
// それ以外
}
2.の対処策ですが現状不明です(少なくとも私は...)。
どなたかわかる人は教えていただけると助かります。
日本でサービスインされていないCortana Skillを使用するための設定
日本でサービスインされていないCortana Skillなので、どうやって使えるようになるのかを知らない人も多いと思います。
実は以下2つを設定するだけで使えるようになります。
- PCのCountry or Regionを米国する
- 言語設定を英語にする
最後に、現在解決策を知りたい事柄
以下をご存知の方、ぜひ教えてください。
Typingを示す"..."が表示されない
上に記載しているため、詳細は省きます。Cortana SkillがCortanaが動作している環境のタイムゾーンの取得方法
メールアドレスや緯度経度は取得できますが、タイムゾーンの取得方法が不明でして。Cortana SkillからCortana Canvasを閉じる方法
もうCortana Skillを使い終わってもCortana Canvasがずっと表示されています。
これって消せないのかな?
ちなみに
良いタイトルが思い浮かばなかったので、ちょうど聞いていた「部屋とYシャツと私」風にキーワードを列挙してみました。