Bot FrameworkとC#で作成したボットとSlackの連携に挑戦!
Azureへ公開
他のWebサービスと連携するためにAzureへデプロイします。Azureのアカウントはこんな感じで用意しました。まだの方はご参考までに♪
プロジェクトからコンテキストメニューで公開を選択します。
Microsoft Azure App Serviceを選択します。
App Serviceは新規作成しました。
適当な感じに設定を行い、作成を押下します。
接続の設定ができました。[次へ]で他の設定も念のため見ておきましょう。
構成はReleaseがデフォルトです。
問題がないようであれば[発行]!
正常に発行されました。
これでAzure上でボットが動作しましたヾ(*´-`*)ノ
ボットの登録
Slack、Skype、Facebook MessangerなどのWebサービスから作成したボットを呼び出すにはMicrosoft Bot Frameworkのポータルサイトにボットを登録してあげる必要があるようです。
まずはポータルサイトにサインインしましょう。
Bot Framework
ここで一瞬ひるみました。しっかり考えてからYes or Noを選択しましょう。
そして、NullReferenceExceptionでサインインできないっていう…。
サーバの問題かと思い、一晩寝かせてみましたがダメでした。
次にMicrosoftアカウントで必要な情報が足りなくてNullReferenceExceptionが出てるのかなと想像してみてアカウントの情報を見直してみたところ、電話番号が登録されてなかった*1のでこれを登録しました。
直後はダメでしたが一時間ほど時間を置いて再チャレンジしてサインインできました!結局どちらの問題かはわかりませんが。
サインインしたらボットの情報を登録していきます。
EndpointのURLはAzureに公開したURLではなくhttps接続にして/api/messagesを付与します。
こんな感じ。
https://your_bots_hostname/api/messages
Bot Privacy URLがなんだかわからなかったけど必須だったので、とりあえず適当に。
App IDはユニークにする必要があるようです。最後のチェックボックスにチェックを入れ[Register]を押下。
これでエンドポイント、App Id、App Secret(Primary app secret)と必要な情報がそろいました。
Web.configのAppIdとAppSecretにそれぞれの値を設定し、もう一度Azureへデプロイします。
<configuration> <appSettings> <!-- update these with your appid and one of your appsecret keys--> <add key="AppId" value="hogehoge" /> <add key="AppSecret" value="hugahuga" /> </appSettings> <!--省略--> </configuration>
エミュレータにURL、App Id、App Secretを入力して動作確認してみました。
ちゃんと動いてますね!
Slackへの連携
ようやくSlackとの連携です。
ポータルサイトのAdd another channelからSlackのAddを選択します。
あとはHow toを上から順番に実行していきます。
slack APIからアイコンとRedirect URIを設定して[Create App]。
左側のペインでBot Usersを選択し、[Add a bot to this app]。
usernameをつけます。今回は"bot"としました。わかりやすいですね。
左側のペインでApp Credentialsを選択し、OAuth InformationからClient IDとClient Secretを表示します。
これらをコピーして、ポータルサイト側に貼り付けて、[Submit Skack Credentials]を押下します。
そして、チャンネルを選択して[Authorize]。
お疲れ様です!これで設定完了です!