絖綛 N@i.jp  昨日:00022070
 今日:00007576
 総計:01781223
keywords
管理者専用
  Post   Add link   Control Panel 































新しいトピック
最新:11/14 16:41


新しいコメント
最新:07/28 16:47






管理人へMAIL

プライバシーポリシー

Alexaの緊急連絡スキルを作る(7)

スキルのテストって難しい


10. 緊急連絡スキルをテストする

 「ウチの緊急連絡」スキルとLambda(MyEmergency関数)の紐付けができたら、次はテストフェーズです。ここで、このスキルでは重大な設計ミスを犯していたということが判明しました。それは、インテントを呼び出す発話と、スロットに入る語彙に同じ言葉が使われるという事です。具体的には「メール」と「電話」です。
 例えば、以下のような呼び出し方があると言うことです

  1. ウチの緊急連絡で、メールしてとメール
  2. ウチの緊急連絡で、メールしてと電話
  3. ウチの緊急連絡で、電話してとメール
  4. ウチの緊急連絡で、電話してと電話

 人間であれば容易に意味を理解できるのですが、Alexaの人工知能はまだそのレベルに達してなく、どれをスロット{Message}に入れ、どれをインテントを呼び出す発話と解釈すれば良いのか混乱するようです。その結果、

  • 「すみません、私には分かりません」という返事をする
  • 全く無応答になる
  • インテントの呼び出し発話を優先するような動作をする
    例えば、「メール」、「電話」が出現すると本来はそれをスロット{Message}に入れるべきところを、スロット{Message}を問い合わせるダイアログモデルになる。具体的には、上記のケース2.では「メールを送る」インテントの呼び出しと、ケース3.では「電話をかける」インテントの呼び出しと解釈される。
  • 稀に想定どおりの動作をする

と言った不安定な応答をするようになります。これは対話モデルがうまく出来ていないという事なのだと思うのですが、対話モデルをデバッグする方法など全然分かりません。Lambdaのデバッグならば、ログを仕込んで動作を追いかけるといった方法がありますが、無応答や「すみません、私には分かりません」という返事の場合、Lambdaまで来ていないのですから手も足も出ません。結局のところ対話モデルについては試行錯誤して妥協点を探ることになります。
 実は、この辺りはまだ試行錯誤中でして、今は上記のような呼び出し方はせず、先ず「ウチの緊急連絡でメールして」、「ウチの緊急連絡で電話して」と言ってから、ダイアログモデルで送りたいメッセージを指示するという呼び出し方にしています。

 とにかくスキルのテストは難しいですね。設計した対話モデルに従って実際に一つ一つ話しかけて想定した動作をしてくれるか確認しなければならないので、時間も手間もかかります。

11. 公開情報を入力する

 個人で使うだけのスキルなので公開情報は必須ではないのですが、アイコンが無いのも寂しいので以下のように公開情報を入力しました。

 以上で、取り合えず「ウチの緊急連絡」スキルは何とか使えるかな?というレベルになってます。あとは対話モデルを試行錯誤で追い込んで行けば良いのですが、遅々として進まずです。

12. 「ウチの緊急連絡」スキルの使い方

 使用方法は、対話モデルやMyEmergency関数を見ていただければ大体のところは分かると思いますが、ざっと以下のような流れになります。

  1. Alexaアプリで緊急連絡スキルを有効化する
  2. Amazonのアカウントでサインインしてアカウントのリンクをする
  3. テストメール、テスト電話をかけてみて、携帯にメールが届くか、電話がかかってくるか試す
    テストメールを送信する場合:「アレクサ、ウチの緊急連絡でテストメールを送信」
    テスト電話をかける場合:「アレクサ、ウチの緊急連絡でテスト電話をかけて」
  4. ウチの緊急連絡の連絡先を確認する
    「アレクサ、ウチの緊急連絡で、連絡先を教えて」→アレクサアプリのカードに連絡先が表示されます
  5. 実際に緊急連絡を送る
    【メールの場合】
    • 「アレクサ、ウチの緊急連絡で連絡してとメール」
    • 「アレクサ、ウチの緊急連絡で帰宅してとメール」
    • 「アレクサ、ウチの緊急連絡で助けてとメール」
    • 「アレクサ、ウチの緊急連絡でメールして」→「メールする緊急メッセージを指示してください」→「電話して」
    • 「アレクサ、ウチの緊急連絡でメールして」→「メールする緊急メッセージを指示してください」→「メールして」
    【電話の場合】
    • 「アレクサ、ウチの緊急連絡で連絡してと電話」
    • 「アレクサ、ウチの緊急連絡で帰宅してと電話」
    • 「アレクサ、ウチの緊急連絡で助けてと電話」
    • 「アレクサ、ウチの緊急連絡で電話して」→「電話する緊急メッセージを指示してください」→「電話して」
    • 「アレクサ、ウチの緊急連絡で電話して」→「電話する緊急メッセージを指示してください」→「メールして」

▼ この記事へのコメント ▼
たびたびご連絡致します。「ウチの緊急連絡」の件ですが、先日はAlexaアプリで有効化でき、スピーカで話しかけると、最初の返事が来たので、これは設定成功と思い、内容はゆっくり検討と思っていたのですが、その後その先へ全く進めない状態です。スピーカから、一度は呼びかけ方を言ってくれるのですが、その後はいろいろ試してみても「Skillからの応答に問題があります」という回答で、その先には進めないのですが、どの辺に問題があるのでしょうか?何度試してみても、一度返事があった後、「・・・・」だけの返事になります。ちなみに、コードは読めませんが、宜しければ解決方法をお教えください。スキル有効化の設定まではやっとうまくいったので、何とか、うまく動作させたいと思うのですが。宜しくお願い致します。

「Skillからの応答に問題があります」という応答が返って来ているのであれば、Lambdaは呼び出されています。が、何らかの原因でLambda(Java Script)が正常な応答を返していないという状態かと思われます。
そのため、ここからはLambda(Java Script)のデバッグ作業になります。Lambdaの中には要所要所にログ出力が埋め込まれています。具体的には console.log(); の部分です。このログ出力は、Lambdaのテストイベントを使って単体テストした際にはAWS Lambdaの画面上で見ることができますが、それ以外の場合はAWSのCloudWatch→ログで見ることができます。このログ出力を追いかけて、Lambda関数に対して、どのような入力があり、それに対してどのような処理をしようとして、何かのエラーが発生していたり、想定外の動作、異常な動きをしていないかを探ることになります。
ホームページで公開しているソースでは、ログ出力がコメントアウトされていたり、充分な情報を出力していなかったりしますので、何度か試行しつつ、ログ出力をコメントインしたりログ出力を追加しなければならないと思います。(面倒な作業ではありますが・・・)
先ずはAlexa開発者コンソールのテスト機能を使い、正常な反応が得られないフレーズを入力して、Lambdaの入力となるJSONを作らせ、それをLambdaのテストイベントにコピペしてLambdaの単体テストをしてみることをお勧めします。この単体テストで現象が再現(エラーやnullを返している)できればデバッグ作業は楽になります。テスト結果にログが出力されて、その中にエラーを返している箇所があれば、そこからエラー原因を探ってみてください。(メール送信でエラーなら、SMTPサーバのURLやアカウント情報に誤りは無いか?とか、電話(Twilio)でエラーなら、SIDやトークンに誤りはないか?など)

相当に壁は高そうですが、休みの際に何とか挑戦してみようと思います。有難うございました。又宜しくお願い致します。

初心者のためのNodeとか寄り道しましたが、何とか緊急の電話とメールはうまくいくようになりました。LambdaのTestは、失敗が表示されますが、目的の作業はできました。アメリカにMy buddyとかいうSkillがあって、日本でも公開されないかと待っていたのですが一向に出てこなかったので、挑戦してみました。最低限の希望は達成で来たので、今のところは満足です。有難うございました。

充分なサポートができず申し訳なかったですが、何とかなったようで良かったです。
まだAmazon Echo(Alexa)の日本でのサビースは立ち上がったばかりで、数年先を行っている米国のサービスやスキルの充実ぶりには及ぶべくもありません。そのため、自分達でスキルを充実させていかなければ、折角のスマートスピーカーも単なる玩具で終わってしまいます。とは言うものの、スキルの開発には情報と、プログラムを作ってやろうというモチベーションと、少しばかりプログラミング能力が必要ですね。
自分もまだ勉強中ですが、少しづつでも身に付いた知識を公開して行こうと思っていますので、よろしかったら覗きに来てみてください。


■ このコメントを 編集 / 削除 ■
キャンセル
※ HTMLタグは使えません
* 名前
* MAIL
* URL
本文
PASS ※ 半角英数8文字まで
認証 ※ 壱八壱参八を半角数字で入力して下さい
  * 印の項目をcookieに保存する

2018 calendar
2月
123
45678910
11121314151617
18192021222324
25262728


掲示板
最新:08/15 17:19


GsBlog was developed by GUSTAV, Copyright(C) 2003, Web Application Factory All Rights Reserved.