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

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

関連記事

no image

プロセスマイニングの進め方や流れについてご紹介

  <目次> (1) プロセスマイニングの進め方や流れについてご紹介  (1-1) プロセスマイニングの流れ(Celonisの例)  (1-2) 参考 (1) プロセスマイニングの進め方や流 …

Zoomでライセンスユーザーの追加手順など(管理オペレーション全般の手順紹介)

  <目次> (1) Zoomでライセンスユーザーの追加手順など(管理オペレーション全般の手順紹介)  (1-1) Zoomの主な管理オペレーション  (1-2) ライセンス追加(購入数の追 …

ユーザーストーリーマッピングとは?

  <目次> (1) ユーザーストーリーマッピングとは?  (1-1) 「ユーザーストーリーマッピング」の概要  (1-2) 「ユーザーストーリーマッピング」の利点  (1-3) 「ユーザー …

コンテナとは?VMとの違いを交えてご紹介

  <目次> (1) コンテナとは?VMとの違いを交えてご紹介  (1-1) コンテナとは?   (1-1-1) コンテナの仕組み概要   (1-1-2) コンテナの利点は?   (1-1- …

バイナリエディタの使い方や見方(「アドレス」や「テキスト」とは?)

<目次> (1) バイナリエディタの使い方や見方(「アドレス」や「テキスト」とは?)  (1-1) バイナリデータ・バイナリエディタとは?  (1-2) バイナリエディタの見方  (1-3) バイナリ …

  • English (United States)
  • 日本語
Top