メンバー登録をした後、1年間無料の開発者向けライセンスを使えます。Echoを使ってkintoneで予定管理をスマートにしちゃいます。今回kintoneは、Alexaスキルから予定データを出し入れする先として使います。予定が2件までしか表示されない。予定確認のためだけにkintoneにアクセスするのが億劫。スマートじゃないと思っている部分もあるのではないでしょうか。Echoによる音声操作で、一日のスケジュールの把握、追加を実現します。Homeなどと同じ、スマートスピーカーの一種です。音声操作だけで、音楽の再生、天気を調べる、ニュースの読み上げなど様々なことをしてくれます。AlexaとはAmazonが開発した、音声認識技術の1つです。他サービスに組み込めるような音声認識サービスとなっています。詳しくはコチラをご覧ください。完成イメージ事前準備Amazon開発者コンソールにログインAlexaスキル開発のために、Amazon開発者コンソールにログインが必要です。※英語で使用したい方はAmazon開発者コンソールでアカウント取得。1で取得したアカウントでAmazon開発者コンソールにログインを行ってください。※Amazon開発者ポータルでアカウントを作成すると、Amazon.comのアカウントになります。Amazon.co.jpのアカウントで開発者ポータルにログインする必要があるかAlexaは、一般公開されているAlexaスキルを、スキルストアで追加することができます。(Amazon.co.jpでスキルストアで公開されているスキル)スキルストアに表示されるAlexaスキルは、Alexaにログインしているアカウントに依存します。そのため、Amazon.comアカウントでスキルストアにアクセスすると、米国で公開されているスキルが表示され、日本語のスキルが表示されません。日本語で一般公開されている他のAlexaスキルを利用したい方は、Amazon.co.jpアカウントでAlexaスキルを作成し、そのアカウントでEchoと連携する必要があります。詳しくは下記URLを参照してください。Lambda関数を呼び出すことが可能です。今回はLambda関数を用いて、kintoneのレコード取得、登録を行います。下記URLを参考にAWSアカウントを取得後、ログインしてください。「予定登録アプリ」を作成します。予定管理なので見やすいようにカレンダー形式の一覧を作成します。見やすくしたい人は下記のイベントカレンダープラグインを使うと、綺麗に予定を管理することができます。「アプリの設定>APIトークン」でAPIトークンを発行します。今回は、Alexaスキルで予定の確認と追加を実装したいので、閲覧と追加のアクセス権があるAPIトークンを生成します。Amazon開発者コンソールから、Alexaスキルを作成します。先ほど作成したアカウントで、Amazon開発者コンソールにログインしましょう。画像通りに画面を遷移して、Alexaスキルを作成します。言語は日本語に設定します。スキル名は任意に設定してください。モデルは、カスタムを選択し、スキルを作成します。LambdaのARN」を押下し、表示されるスキルIDをメモしておいてください。対話モデルの設定インテントスキーマAlexaが対応できる様々な会話パターンを設定できます。詳しくはコチラをご覧ください。今回はインテントスキーマを下記のJSONを使用して定義します。上記のJSONを対話モデルのJSONエディターにコピペし、モデルを保存してください。サンプル発話インテントとインテントを呼び出すためのフレーズをマッピングします。ビルトインインテントはサンプル発話をマッピングする必要はありません。(ビルトインインテントとは)※Alexaは、サンプル発話のパターンを網羅すればするほど、インテント判別の精度が上がり、スムーズに会話できるようになります。JSONエディターの14~23行目と、53~72行目の部分でサンプル発話を定義しています。上の画像のように、サンプル発話が定義されているか確認してください。カスタムスロットタイプスロットには標準スロットタイプとカスタムスロットタイプが存在します。カスタムスロットタイプは、ユーザー側で値を設定する必要があります。(標準スロットタイプについてはコチラをご覧ください。)今回は、予定管理アプリの「イベント名」に対応するスロットをカスタムスロットとして用意し、valueにあらかじめイベント名を入れておきます。先ほどのJSONの75~111行目で定義しているので、下記の画像を参考にカスタムスロットが設定されているか確認してください。ここまで来たら一度、Alexaの設定は終了です。次にLambda関数を設定します。Lambda関数の実行ファイル作成Node.jsをインストールした環境で作業します。以下のサンプルコードをファイル名「index.js」で保存します。上記コードの12~15行目を、ご自身の環境に合わせて設定してください。以下のコマンドを先ほど保存したコードと同じ階層で実行してpackage.jsonを生成します。上記のコマンド実行後にpackage.jsonの設定をしますが、"name"と"description"のみ任意に設定していただき、他はEnterで進んで問題ありません。次に以下のコマンドでパッケージをインストールします。以下のコマンドを実行してZipファイルを作成します。「index.js」と「node_modules」が同じ階層に存在しているか確認してください。OSをお使いの方windowsコマンドプロンプトを使用している方は、標準ではzipコマンドが入力できません。そのため、Cygwinなどのツールが必要です。下記の記事を参考にCygwinをインストールしてからzipコマンドを入力してください。https://developer.cybozu.io/hc/ja/articles/217937443また、Cygwinでファイルを作成すると、作成されたファイルに実行権限(パーミッション)が付与される場合があるので注意してください。Lamnbda関数設定画面から関数を作成します。(作成するリージョンは「アジアパシフィック(東京)」を選択してください。詳細はコチラをご覧ください。)「一から作成」を選択し、「名前」「ランタイム」「ロール」を設定します。8.10」、「ロール」は「カスタムロールの作成」を設定してください。「カスタムロールの作成」を選択すると画面が遷移します。「カスタムロールを作成」を選択すると、下図の画面に遷移します。ロールの作成」を選択し、「ロール名」は任意に設定してください。設定後、許可を選択すると一つ前の画面に戻ります。ロール作成を終えたら先ほどの画面に遷移するので、「既存のロールを選択」を選択し、先ほど作成したロールを設定してください。関数の作成をクリックするとLambda関数が作成できます。関数を作成し終えたら、画面右上に表示されるARNをメモしておきましょう。先ほど作成したZIPファイルの実行コードをアップロードします。「ハンドラ」が先ほど作成したJavascriptファイル「index.js」を指定する「index.handler」になっているか確認してください。KitをLambda関数のトリガーに設定します。トリガーの設定のスキルID欄に、Alexaスキルの作成(その1)でメモしたスキルIDを入力してください。これでLambda関数の設定は終了です。Alexaスキルの作成(その2)Lambda関数の設定が終了したら、もう一度Amazon開発者コンソールに戻ります。ARN(Amazonリソースネーム)」にチェックを入れます。デフォルトの地域に先ほどメモしたLambda関数のARNをペーストし、エンドポイントを保存してください。最後に、下記の画面から、モデルをビルドして頂くとAlexaスキルとLambda関数を連携することができます。先ほどの設定を終えると、作成したAlexaスキルのテストを行えます。予定の確認(Alexa開発者コンソール上)予定の追加(Alexa開発者コンソール上)Echoで音声操作して動作確認をテストしてみましょう。Alexa開発者コンソール上からテストを有効化してください。予定の確認テスト画面でAlexaに今日の予定を訪ねます。Alexaがkintoneの情報を取得できているのがわかります。隠れている2つ分の予定も確認できていますね。次に明日の予定を訪ねます。明日は何も予定が入っていません。明日は予定がないことがわかりました。そこで、予定を追加してみます。予定が追加することができました!Echoで動作確認をする場合Alexaスキルはテスト終了後の設定で作成したスキルの公開設定がありますが、Echoに紐づけたアカウントでスキルを開発し、テストを有効化することで、スキルを公開せず利用することができます。EchoとAmazon開発者アカウントの紐づけは以下のサイトを参考にしてください。https://www.amazon.co.jp/gp/help/customer/display.html?nodeId=202189140サンプルコード解説Lambdaに設定したサンプルコード「index.js」について少し解説します。