公開日:
この記事は kintone Advent Calender 2019 の17日目です。
Amazon Echoとkintoneを連携し、音声でkintoneのデータを操作(取得や登録)する場合、以下の構成を採用する事が多いと思います。

なんとなく手書き
Lambdaからkintoneへのアクセスは、kintoneのREST APIを使うので、認証情報をどこかに保持しておく必要があります。
管理者(Administrator)の権限でアクセスするのであれば、Lambdaの環境変数にでもkintoneのAPIトークンを持たせておけば良いのですが、kintoneの個々のユーザー権限で実行したい場合もあると思います。
(アプリにレコードのアクセス権を設定していて、自分のレコードだけを見えるようにしている場合とか)
そのような時に便利に使える、アカウントリンクという便利機能がAlexaにはあります。(Cookpadのスキルとかでも使われてるやつです)
アカウントリンクを有効にする
以下の手順でアカウントリンクの設定を行うと、Amazon Echo(Amazonアカウント)とkintoneのユーザーを紐付ける事ができます。
- スマホのAlexaアプリで、スキルを有効にする

スキルを有効化する
2. kintoneのログイン画面が表示されるので、自分のログイン名・パスワードでログインする
3. 操作を許可する画面(認可画面)が表示されるので、許可を選択する

認可画面
4. 正常にリンクされました、が表示されたら紐付けが完了

設定完了
cybozu.com共通管理の設定
OAuth 2.0を使うには、「OAuthクライアントの使用」の手順で、cybozu.com共通管理の設定が必要です。
(この場合はAlexaがOAuthクライアントとなります)
設定例を貼っておきます。

cybozu.com共通管理の設定
alexa developer consoleの設定
Alexaにも設定が必要となるので、alexa developer consoleのスキル設定の画面からアカウントリンクのメニューを選び、以下のように設定します。

Lambdaからkintoneへのアクセス
ここまで設定すると、AlexaからLambdaに対して、kintoneのユーザーごとの認証情報(OAuth 2.0のアクセストークン)が送られてくるので、アクセストークンを使ってkintoneのREST APIを実行すれば、ユーザーの権限でAPIが実行されます。
Lambdaでログを出力してみたところ、アクセストークンが取得できている事が分かります。

Alexaのドキュメントに記載がある通り、context.System.user.accessToken でアクセストークンを取得する事ができます。
ここまで設定しておいて残念な事
ただ、非常に残念な事もあり、設定画面を見て分かるように、kintoneの認可エンドポイントとトークンエンドポイントは、サブドメインに依存したURIになっています。
そのURIをAlexaスキルに設定するので、Alexaスキルとkintoneのサブドメインが1:1で紐付いてしまう事になります。
というわけで、アカウントリンクを使ったAlexaスキルは、現時点ではスキルストアへの公開ができないと思われます。(汎用的に使えないので)
実はある取り組みで作成したスキルは、スキルストアへの公開ができないのでベータテスト機能を使っています。。。
日本でもAlexa for Businessが使えるようになるか、cybozu.com共通管理が強化される日まで待ちましょう。
投稿者プロフィール

- kintoneを活用したシステム開発(だけ)をやってます。kintone認定資格5冠。
最新の投稿
kintone2025年7月23日きみのまほろば〜を1年やってみて
kintone2025年4月17日kintone開発のプロが選ぶ、本当に役立つkintone SIGNPOST 3選
kintone2025年2月26日勢いで作ると後悔する!?kintoneアプリ開発前にやるべき準備
kintone2025年1月7日ワイドループの導入事例から学ぶ「kintoneで基幹システムのリプレースを成功する秘訣」