Alexa×Slack連携! アカウントリンクを使うスキルをC#で実装特集:はじめてのAlexaスキル開発(2/3 ページ)

» 2018年04月03日 05時00分 公開
[かわさきしんじInsider.NET編集部]

アカウントリンクの設定

 このスキルのキモとなるのが、アカウントリンクの設定だ。これにはSlackとAlexaスキルの両方で設定が必要になる。まずはSlack側での設定を見てみよう。

Slack側の設定

 Slackでは「slack API」ページの右上にある[Create New App]ボタンをクリックする。すると、以下に示すダイアログが表示されるので、アプリ名とアプリを導入するワークスペースを指定する。

アプリ名とワークスペースを指定 アプリ名とワークスペースを指定

 ここではアプリ名を「FromAlexa2Slack」に、アプリをインストールするワークスペースに(筆者が仕事で使用している)「Editors」ワークスペースを指定した。なお、このアプリはサンプルであり、他のワークスペースやこのワークスペースの他のユーザーが使用することは想定していない。ここで[Create App]ボタンをクリックすると、「Basic Information」ページが表示されるので、[Add features and functionality]の下にある[Permissions]をクリックする。

[Permissions]をクリック [Permissions]をクリック

 次に表示されるページでは、アカウントリンクの設定時に、Slackでの認証が完了した際にリダイレクトされるAlexa側のURLと、認証されたユーザーにSlackが与える権限(スコープ)を指定する。リダイレクト先のURLは、Alexaコンソールの[ビルド]タブにある[アカウントリンク]をクリックすると表示される。

リダイレクト先のURL一覧(赤枠内) リダイレクト先のURL一覧(赤枠内)
[リダイレクト先のURL]に表示された全てのURLをコピーして、Slackの[Redirect URLs]欄に追加していく。

 ここには3つのURLがあるが、全てをコピーして、Slackの[Redirect URLs]欄に追加していこう(これらのURLはユーザーがデバイスを登録した場所を基に使い分けされるとのことだ)。

リダイレクト先のURLを設定したところ リダイレクト先のURLを設定したところ

 コピーが終わったら、[Save URLs]ボタンをクリックする。続いて、その下にある[Scopes]欄でアカウントリンクによって接続されるユーザーに与える権限を指定する。

「char:write:user」スコープを指定 「char:write:user」スコープを指定

 ここでは[Send message as user](chat:write:user)を選択する。今回作成したLambda関数は、「Slackにメッセージを投げる」だけのものなので、ここでは「char:write:user」スコープを指定して、権限を得たユーザーとしてこれを行うようにしている。なお、このスコープは先ほどリダイレクト先のURLを表示したAlexaコンソールでも設定することになる(上述の画像をよく見ると既に設定されているのが分かるが、後でもう一度見ることにしよう)。

 [Save changes]ボタンをしたら、このページの先頭にある[Install App to Workspace]ボタンをクリックして、ワークスペースに今作成したアプリをインストールする。

[Install App to Workspace]ボタンをクリック
[Install App to Workspace]ボタンをクリック
[Authorize]ボタンをクリックして、インストールを完了させる
[Authorize]ボタンをクリックして、インストールを完了させる

アプリをワークスペースにインストール


 インストールが完了したら、左側のペーンで[Basic Information]を選択して、「Basic Information」ページを表示して、その[App Credentials]領域を表示する。ここに、Alexaコンソールの[アカウントリンク]タブで必要になるクライアントIDとクライアントシークレットが表示されているので、コピーをするなどしておこう。

Alexaコンソールで入力が必要となる情報(クライアントIDとクライアントシークレット) Alexaコンソールで入力が必要となる情報(クライアントIDとクライアントシークレット)

Alexaコンソールでの設定

 Alexaコンソールでは、先ほど開いた[アカウントリンク]タブで、[ユーザーがアカウントや既存アカウントへのリンクを作成することを許可しますか?]スライダーをオンにしてから、必要な情報を入力していく。設定項目は次の通りだ。

  • [Authorization Grant種別]:[Auth Code Grant]を選択
  • [認証画面のURI]:「https://slack.com/oauth/authorize」固定
  • [アクセストークンのURI]:「https://slack.com/api/oauth.access」固定
  • [クライアントID]:「Basic Information」ページに表示されたクライアントID
  • [クライアントシークレット]:「Basic Information」ページに表示されたクライアントシークレット
  • [クライアントの認可方法]:[リクエスト本文の資格情報]を選択
  • [スコープ]:「char:write:user」を選択

 Slack側の「Basic Information」ページに表示されたクライアントID/クライアントシークレットに加えて、「スコープ」に既に触れた「char:write:user」を指定している。また、2つのURIはともに決め打ちの値だ。

 上の設定を行ったところを以下に示す。

Alexaコンソールの[アカウントリンク]タブで必要な情報を入力したところ Alexaコンソールの[アカウントリンク]タブで必要な情報を入力したところ

 最後に[保存]ボタンをクリックしたら、設定は終了だ。必要に応じて、スキルのモデルを保存して、モデルをビルドしよう。モデルをビルドして、Lambda関数をAWSに公開し、それらをつなぐ設定を行ったら(これらについては前回までに見ているので、ここではその手順は省略する)、実際の動作を確認してみよう。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。