###やりたいこと
docker、Ruby on Rails5.1を使用してwebアプリを作成しています。
Slackに用意されているイベント、 member_joined_channel
を使用し、
コントローラー側でSlackチャンネルに参加したユーザー情報を取得したい。
###現状
・開発中のためngrokでIPアドレスを作成。
・ユーザー情報を取得したいコントローラーとルーティングを作成。
・Slack apiのEvent Subscriptionsより、Request URLを画像のようにセット
→500エラーとなる
エラー文を読む限り、challengeパラメータを受けとる用意ができていないのが
原因かと思われるのですが、コントローラー側でどのように受け取ればいいのかが分かりません。
記事を探してもなかなか見つからないため、教えていただけると助かります。
###ソースなど
コントローラーはこちらの記事を参考に記述。
オウム返し slack bot をぱっとつくる
#受け取りたいコントローラー class MemberJoinedChannelController < ApplicationController protect_from_forgery :except => [:create] def create @body = JSON.parse(request.body.read) case @body['type'] when 'url_verification' render json: @body when 'event_callback' # .. end end end
#routes.rb post '/member_joined_channel' => 'member_joined_channel#create', as: :member_joined_channel
#show-routes member_joined_channel POST /member_joined_channel(.:format) member_joined_channel#create
#ngrok #Slackのrequest URLに入力後の状況 HTTP Requests ------------- POST /member_joined_channel 422 Unprocessable Entity
#URL入力後のログ Started POST "/member_joined_channel" for 54.224.250.46 at 2019-09-30 17:52:44 +0900 Cannot render console from 54.224.250.46! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 Processing by MemberJoinedChannelController#create as */* Parameters: {"token"=>"M00ZFOT6k7tO7Wyf476fFK5g", "challenge"=>"QFNbV2QeRdi0jNqhy3UXISopZrvhQCykvOuJijt6QBLz2Ds9OBuA", "type"=>"url_verification", "member_joined_channel"=>{"token"=>"M00ZFOT6k7tO7Wyf476fFK5g", "challenge"=>"QFNbV2QeRdi0jNqhy3UXISopZrvhQCykvOuJijt6QBLz2Ds9OBuA", "type"=>"url_verification"}} Completed 401 Unauthorized in 15ms (ActiveRecord: 0.0ms)
宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。