Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

IT技術 (Technology)

SlackのRequest URLで「Your URL didn’t respond with the value of the challenge parameter.」エラーが出た時の対処方法

投稿日:2022年7月26日 更新日:

 

<目次>

(1) SlackのRequest URLで「Your URL didn’t respond with the value of the challenge parameter.」エラーが出た時の対処方法
 (1-1) 事象
 (1-2) 原因
 (1-3) 対処方針
 (1-4) 対処手順

(1) SlackのRequest URLで「Your URL didn’t respond with the value of the challenge parameter.」エラーが出た時の対処方法

(1-1) 事象

Slackアプリ(https://api.slack.com/apps/)の「Event Subscription」⇒「Request URL」の設定で、イベントの連携先URLを入力した際に「Your URL didn’t respond with the value of the challenge parameter.」のエラーが出て、URLの登録が出来なかった。
 
(図111)

(1-2) 原因

Event Subscriptionでは入力したURLに対して、簡単なValidation(チェック)が入るのですが、そのチェックが通らなかったのが原因です。
 
(原文)
We’ll send HTTP POST requests to this URL when events occur. As soon as you enter a URL, we’ll send a request with a challenge parameter, and your endpoint must respond with the challenge value. Learn more.
 
URLを入力すると、そこに対して自動でPOSTリクエストを送りますが、この時「challenge」というパラメータを付与して送ってきます。レスポンス(応答)では、その値を取得して「そのまま返却」する事で、チェックを通過できます。
 
(図121①)

(1-3) 対処方針

POSTリクエスト(要求)に対するレスポンス(応答)では、リクエストに含まれる「challenge」キーの値を取得して、それを「そのまま返却」する事でチェックを通過できます。今回はPythonの例ですが、その手順をご紹介します。
 
全体像としては次のような感じで、Slackアプリがクライアント相当の位置づけで、指定のアドレス(例:http://a05f-106-131-76-39.ngrok.io)に対してPOSTリクエストを送ります。ngrokでこのリクエストを検知し、ローカルのアドレス(例:http://localhost:5000)に対してリクエストを転送します。その転送されたリクエストをFlaskで捌いて、レスポンス(応答)としてchallengeの値をそのまま返却します。
 
(図130①)

(1-4) 対処手順

・①必要なライブラリのインストール
上記プログラムを実行するためには、コマンドプロンプトを開きpipで「flask」をインストールします。
> pip install flask
(図131①)

・②チェック通過用のプログラムの作成
(サンプル)
from flask import Flask, request, jsonify
app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def respond_message():
    # Slackから送られてくるPOSTリクエストのBodyの内容を取得
    json =  request.json
    print(json)
    # レスポンス用のJSONデータを作成
    # 受け取ったchallengeのKey/Valueをそのまま返却する
    d = {'challenge' : json["challenge"]}
    # レスポンスとしてJSON化して返却
    return jsonify(d)

if __name__ == "__main__":
    app.run(debug=True)

if __name__ == "__main__":
    app.run(debug=True)
 
(図132①)
・③「ngrok」のインストール
「ngrok」は「パブリックなIPアドレスやドメイン」を「ローカルのWebサーバ」にルーティングできるツールです。これをインストールする事で、ご自身のローカル端末をWebサーバ代わりにする事が出来ます。
 
(図133②)サイトにアクセス
(図133③)ダウンロード

(図133④)任意の場所に配置

・④flask起動
下記はPythonのvenvを使用している場合の起動コマンドの例です(xxxxxx.pyはご自身のPythonモジュール名)
& .\.venv\Scripts\python.exe .\xxxxxx.py

(図134①)

・⑤ngrokの起動
ngrokコマンドでngrokを起動します。下記例の5000はポート番号で、flaskはデフォルトでポート5000を使うためです。
 
(例)
> ngrok http 5000
 
(図134②)
(図134③)

・⑥SlackのRequest URLの画面でグローバルアドレスのURLを入力
⇒エラーが解消されて「Verified」と表示された事を確認
 
(図135①)

Adsense審査用広告コード


Adsense審査用広告コード


-IT技術 (Technology)

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

プロセスとは? Linuxの例も交えてご紹介

  <目次> (1) プロセスとは? Linuxの例も交えてご紹介  (1-1) プロセスとは?  (1-2) プロセスの構成要素  (1-3) プロセスの状態遷移 (1) プロセスとは? …

システムの品質評価を実施する際の観点について

  <目次> (1) システムの品質評価を実施する際の観点について  (1-1) 品質評価の流れ  (1-2) 定量評価  (1-3) 定性評価 (1) システムの品質評価を実施する際の観点 …

Celonisとは?プロセスマイニングの概要やCelonisの特徴

  <目次> (1) Celonisとは?プロセスマイニングの概要やCelonisの特徴  (1-1) プロセスマイニングとは?  (1-2) Celonisとは?  (1-3) Celon …

Interstage Application ServerにJavaのWebアプリ(Servlet)をデプロイする流れ

  <目次> (1) Interstage Application ServerにJavaのWebアプリ(Servlet)をデプロイする流れ  (1-1) STEP1:EARファイル/WAR …

AWSの始め方(アカウントの作成からPythonでS3バケット操作まで)

  <目次> (1) AWSの始め方(アカウントの作成からPythonでS3バケット操作まで)  (1-0) やりたいこと  (1-1) STEP1:AWSアカウントを作成する  (1-2) …

  • English (United States)
  • 日本語
Top