モチベーション
togglでタイマーを開始させるときに入力がめんどくさいことがある.
Alexaを使ってタイマーを開始/終了できるようにする.
概要
- 「アレクサ,トグルで{プロジェクト}の{タイトル}を開始して」でtogglのタイマーを開始する.
- 「アレクサ,トグルで時間を止めて」でtogglのタイマーを停止する.
- 「アレクサ,トグルで{日付}を振り返って」でその日のプロジェクトごとの時間w
やること
- Amazon Developer でスキルの作成
- AWS lambda でlambda関数の作成
Amazon Developer でスキルの作成
注意点
- 公開しないときは使用中の Echoと同じアカウントを使用 する.
公開しなくても,スキルを使用することが可能になる.
開発中のスキルが勝手にAmazon Echoにスキルが反映される
作業
- スキルを作成する.(モデル: カスタム, ホスティング方法: Alexa-Hosted)
- 「スキル呼び出し名(Skill Invocation Name)」をトグルにする
- タイマー開始のインテントを作成する
- インテント名: startTimerIntent
- サンプル発話: 「{project} の {title} を開始して」
- スロットの追加: project, titleのスロットを追加する.スロットタイプは「AMAZON.Genre」 ※困ったこと1
- タイマー終了のインテントを作成する
- インテント名: stopTimerIntent
- サンプル発話: 「時間を止めて」 ※困ったこと2
- エンドポイントに「AWS LambdaのARN」を貼り付け
AWS Lambda でlambda関数の作成
参考→Build an Alexa City Guide Skill in ASK Python SDK
作業
- ロールの作成 参考→Python による Lambda 関数のビルド
- Lambda関数を作成する.
- 一から作成を選択
- python 3.6を選択
- 既存のロールを選択.作成したロールを選択
- 関数を作成
- トリガーを追加(Alexa Skills Kit)
スキルIDを貼り付けて追加(Alexa Developerのスキル一覧からスキルIDを取得) - lambda_function.py を実装して,zipにしてアップロード
参考→st34-satoshi/alexa-toggl
参考
- PythonでTogglのAPIをたたく
- Alexaスキル 開発チュートリアル
- Build an Alexa City Guide Skill in ASK Python SDK
- Python による Lambda 関数のビルド
- スロットタイプリファレンス
困ったこと
1. 自由な言葉に対応するスロットタイプがない
文字列にタイプを指定する必要があるが,いいタイプがなくて困る.
自由な言葉に対するおうむ返しはできない?
literalがなくなってしまった → ユーザーの自由発話に対応する Alexa Skill を作る
Migrate Slot Types that Used AMAZON.LITERAL
AMAZON.SearchQueryはなぜかうまく使えなかった.
2. 「タイマーを止めて」は使わない方がいい
タイマー という言葉を使うと,アレクサにある他の機能を呼び出してしまうことがあるみたい