公開日:2019-12-17
この記事は kintone Advent Calender 2019 の17日目です。
Amazon Echoとkintoneを連携し、音声でkintoneのデータを操作(取得や登録)する場合、以下の構成を採用する事が多いと思います。
![なんとなく手書き](https://www.r3it.com/wp-content/uploads/2023/08/5eb3a69af595237f6ce13f2c_1YrPsPWG-7gj51cOqLewg_w.png)
なんとなく手書き
Lambdaからkintoneへのアクセスは、kintoneのREST APIを使うので、認証情報をどこかに保持しておく必要があります。
管理者(Administrator)の権限でアクセスするのであれば、Lambdaの環境変数にでもkintoneのAPIトークンを持たせておけば良いのですが、kintoneの個々のユーザー権限で実行したい場合もあると思います。
(アプリにレコードのアクセス権を設定していて、自分のレコードだけを見えるようにしている場合とか)
そのような時に便利に使える、アカウントリンクという便利機能がAlexaにはあります。(Cookpadのスキルとかでも使われてるやつです)
アカウントリンクを有効にする
以下の手順でアカウントリンクの設定を行うと、Amazon Echo(Amazonアカウント)とkintoneのユーザーを紐付ける事ができます。
- スマホのAlexaアプリで、スキルを有効にする
![スキルを有効化する](https://www.r3it.com/wp-content/uploads/2023/08/5eb3a69a60483b497f7b8390_18asNIb0vEQuESsrH-Ft_VQ.png)
スキルを有効化する
2. kintoneのログイン画面が表示されるので、自分のログイン名・パスワードでログインする
3. 操作を許可する画面(認可画面)が表示されるので、許可を選択する
![認可画面](https://www.r3it.com/wp-content/uploads/2023/08/5eb3a69a8038fd3e4bee71de_1gKyze5wXimojJZYPmiy8jA.png)
認可画面
4. 正常にリンクされました、が表示されたら紐付けが完了
![設定完了](https://www.r3it.com/wp-content/uploads/2023/08/5eb3a69a8cf2c6a4fa11b687_1Hh3o7Orxbg77-F7XoWKGmQ.png)
設定完了
cybozu.com共通管理の設定
OAuth 2.0を使うには、「OAuthクライアントの使用」の手順で、cybozu.com共通管理の設定が必要です。
(この場合はAlexaがOAuthクライアントとなります)
設定例を貼っておきます。
![cybozu.com共通管理の設定](https://www.r3it.com/wp-content/uploads/2023/08/5eb3a69af59523c839e13f2d_1lg-ckxCEbycs2GlO7csvyw.png)
cybozu.com共通管理の設定
alexa developer consoleの設定
Alexaにも設定が必要となるので、alexa developer consoleのスキル設定の画面からアカウントリンクのメニューを選び、以下のように設定します。
![](https://www.r3it.com/wp-content/uploads/2023/08/5eb3a69aca30b30111561cb8_1_vbdxuQvNtyd47i7oYXLLA.png)
Lambdaからkintoneへのアクセス
ここまで設定すると、AlexaからLambdaに対して、kintoneのユーザーごとの認証情報(OAuth 2.0のアクセストークン)が送られてくるので、アクセストークンを使ってkintoneのREST APIを実行すれば、ユーザーの権限でAPIが実行されます。
Lambdaでログを出力してみたところ、アクセストークンが取得できている事が分かります。
![](https://www.r3it.com/wp-content/uploads/2023/08/5eb3a69aca30b3294d561cb7_1fIGNlCdPpNf2ivdyHYX6aQ.png)
Alexaのドキュメントに記載がある通り、context.System.user.accessToken でアクセストークンを取得する事ができます。
ここまで設定しておいて残念な事
ただ、非常に残念な事もあり、設定画面を見て分かるように、kintoneの認可エンドポイントとトークンエンドポイントは、サブドメインに依存したURIになっています。
そのURIをAlexaスキルに設定するので、Alexaスキルとkintoneのサブドメインが1:1で紐付いてしまう事になります。
というわけで、アカウントリンクを使ったAlexaスキルは、現時点ではスキルストアへの公開ができないと思われます。(汎用的に使えないので)
実はある取り組みで作成したスキルは、スキルストアへの公開ができないのでベータテスト機能を使っています。。。
日本でもAlexa for Businessが使えるようになるか、cybozu.com共通管理が強化される日まで待ちましょう。
投稿者プロフィール
![アバター画像](https://www.r3it.com/wp-content/uploads/2023/09/cropped-asaga-100x100.jpg)
- kintoneを活用したシステム開発(だけ)をやってます。kintoneエバンジェリストもやってます。祇園祭と仮面ライダーが好きです。
最新の投稿
gusuku2023年12月13日kintoneのレコードをExcelのピボットテーブルで集計したい(なるべく楽に)
kintone2022年6月29日カレンダーPlusの終日仕様をCustomineで何とかしようとした話し(後編)
kintone2020年12月10日カレンダーPlusの終日仕様をCustomineで何とかしようとした話し
kintone2020年9月2日カレンダーPlus愛を伝えるエバンジェリストとして…