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

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

関連記事

アジャイル開発のスクラム手法の流れや進め方について

  <目次> (1) アジャイル開発のスクラム手法の流れや進め方について  (1-1) スクラムとは?  (1-2) スクラムの流れ  (1-3) スクラムにおける「バックログ」の単位につい …

システム開発における設計品質の分析の進め方(一例)について

  <目次> (1) システム開発における設計品質の分析の進め方(一例)について  (1-1) まえがき  (1-2) 前提事項  (1-3) 進め方  (1-4) 参考:分析の手法について …

ワークフローを簡単に作成できるツールとその手順をご紹介(Zapier導入)

  <目次> (1) ワークフローを簡単に作成できるツールとその手順をご紹介(Zapier導入)  (1-1) STEP1:Zapierのアカウント作成  (1-2) STEP2:Zapie …

Redmineのインストールを簡単に行う手順(Windows版、すぐに使える)

  <目次> (1) Redmineのインストールを簡単に行う手順(Windows版、すぐに使える)  (1-1) 概要  (1-2) STEP1:インストーラの入手  (1-3) STEP …

Azure App ServiceにVisual Studioからデプロイを行う方法

  <目次> (1) Azure App ServiceにVisual Studioからデプロイを行う方法  (1-0) STEP0:前提条件  (1-1) STEP1:Visual Stu …

  • English (United States)
  • 日本語
Top