AlexaにLine経由でリマインドして貰うSkillを作った(Python, Line Notify API)

概要

Alexaアプリ第二弾。
今度はAlexaに話しかけることで、Lineに通知・リマインドしてくれるアプリを作った。
Echoに対して、
「アレクサ、リマインダーで⚪︎⚪︎とリマインドして」
と話しかけると、Lineに⚪︎⚪︎の部分を通知してくれる。

[第一弾はこちら]
【Alexa Skill開発】Alexaに最寄り駅の次発電車の発車時刻を教えてもらう(AmazonEcho) - 技術メモ集

動作デモ

www.youtube.com


作成方法

今回は三つのフェーズで作成していく
1. line Notifyトークンの作成
2. Lambdaアプリケーションの作成
3. Alexaの会話フローの作成

1. line Notifyトークンの作成

以下にログインし、右上のユーザー名からマイページを選択
すると、「トークンを作成する」ボタンがあるのでここを選択する。
トークを選択するとトークンが表示されるので、どこかにメモをしておく。
(ここでメモをしておかないと再表示はできないので注意)
LINE Notify


2. Lambdaアプリケーションの作成

Lambda側のアプリケーションを作成する。

今回はLambdaアプリのソースをGithubに公開してみたので、ソースはここを参考のこと。
github.com

アプリケーションを作成

WebブラウザでAWSマネジメントコンソール( https://console.aws.amazon.com/ )にアクセス、ログインし、画面左上の「AWSサービス」のテキストボックスに「lambda」と入力し、表示される候補から「Lambda」をクリックする。
AWS Lambdaの初期画面が表示されたら、「関数の作成」を押し、
関数の作成:1から作成
名前:myLine
ランタイム:python3.6
ロール:既存のロールを選択
既存のロール:service-role/FactRall
として作成を押す。

ソースコードのアップデート

するとmyLineの画面が出るので、まずはmyLineを選択し、下にスクロール。
コードエントリタイプを押し、zipファイルをアップデートを選択し、先のgithubにあるarc.zipを選択しアップデートする。
ソースコード編集画面で、先に保存したトークンをソースに記述する。

左上のARN - arn////
とある部分のarn///をメモしておく。

Alexaとの連接

HPの一番上に戻り、グラフ表示のmyLine2の左側にAlexa Skills Kitを追加する。
スキルID検証はとりあえず無効にして追加ボタンを押す。
(後でスキルID検証はしておく方が望ましい)

とりあえずLambda側の設定はこれでおしまい。
次はAlexaの会話フローの作成を行う。

3. Alexaの会話フローの作成

以下の開発者コンソールからログインし、Alexa Skills Kitを選択する。
https://developer.amazon.com/edw/home.html#/

新しいスキルを選択し

スキル情報

スキルの種類:カスタム対話モデル
言語:日本語
スキル名:リマインダ
呼び出し名:リマインダ
#保存すると出てくるアプリケーションIDをLambda側に登録しておくことが望ましい

対話モデル

インテントスキーマ

{
  "intents": [
    {
      "slots": [
        {
          "name": "MessageType",
          "type": "LIST_OF_MESSAGE_TYPE"
        }
      ],
      "intent": "GetNewFactIntent"
    }
  ]
}


カスタムタイプ

LIST_OF_MESSAGE_TYPE
柔軟剤を買う | 洗剤を買う | ホテルを予約する 


サンプル発話

GetNewFactIntent {MessageType} とリマインドして
GetNewFactIntent {MessageType}
GetNewFactIntent {MessageType} と通知して
GetNewFactIntent {MessageType} とメモして
GetNewFactIntent {MessageType} と伝えて
設定

エンドポイント:AWS LambdaのARN
デフォルト:先ほどメモしたLambdaのarn.///の部分

とここまで作成して、後はテストで
「洗剤を買ってくるとリマインドして」
等と打ち込むと、Lineに通知がくるようであれば成功。
お疲れさまでした!!

感想

比較的長いけれど、やってみれば30分くらいで運用まで持っていけるはず。
Alexa-Lambdaの連携は本当に開発しやすいなぁ、としみじみ。