Talend tHttpRequestを使ってSlackのIncoming WebhookにPOSTリクエストを送信
Talendの tHttpRequest コンポーネントを使うと GET や POST メソッドを実行することができます。ここでは、 Slack や mattermost に用意されている Incoming Webhook に対して tHttpRequest コンポーネントを使ってリクエストを投げてみます。作成するジョブは、特定のフォルダーに保存されたメッセージファイルを順に mattermost へ投稿することとします。
確認環境:
- Talend Open Studio 6.3
- mattermost 3.8.2
mattermost の設定
mattermost で Webhook が使えるようにメニューから「システムコンソール」を選択し、設定画面を表示します。
「カスタム統合機能」にある Webhook の設定を 有効 にします。
Webhookに関する設定
- 内向きのウェブフックを有効にする
- 外向きのウェブフックを有効にする
- カスタムスラッシュコマンドを有効にする
ウェブフックとスラッシュコマンドの権限に関する設定
- 統合機能の管理を管理者のみに制限する
デフォルトでは Webhook を使って投稿すると投稿者名が Webhookを設定したユーザになるのですが、投稿に使用されたユーザー名やプロフィール画像を変更することを許可するよう設定できます。
- 統合機能によるユーザー名の上書きを許可する
- 統合機能によるプロフィール画像アイコンの上書きを許可する
今回は、「統合機能によるユーザー名の上書きを許可する」と「統合機能によるプロフィール画像アイコンの上書きを許可する」は無効にしています。
内向きのウェブフック(Incoming WebHooks)を設定
次に内向きのウェブフック(Incoming WebHooks)の設定をしていきます。
メニューから「統合機能」を選択し、ウェブフックの設定画面を表示します。
表示された「内向きのウェブフック」を選択します。
「内向きのウェブフックを追加する」を選択します。
表示名にWebhookの名前と説明に、この Webhook の説明を入力します。また、 Webhook を使って投稿したいチャンネルを選択します。
保存ボタンをクリックすることで 内向きのウェブフック が作成されます。
次は、ここで発行されたURLを使って Talend から投稿できるように設定していきます。
tHttpRequest コンポーネントを使ったジョブの作成
Talend のジョブを作成し、tFileList,tHttpRequest,tLogRow の3つのコンポーネントを配置します。
tFileList コンポーネントのディレクトリ項目に対象とするディレクトリ(例:C:\info)を設定し、ファイルマスクに *.json と設定します。 ファイルマスクは、無くても良いのですが雰囲気で設定してみました。
次に tHttpRequest コンポーネントの設定をします。
URI 項目に mattermost で生成された内向きのウェブフック用 URL を設定します。 メソッドには、POSTを指定します。 次に「ファイルからパラメータを送信」項目で「Ctrlキー+スペースキー」(入力補完)を押し 表示されるリストの中から「tFileList_1_CURRENT_FILEPATH」を選択します。 「((String)globalMap.get(“tFileList_1_CURRENT_FILEPATH”))」と表示され、この関数により、パスを含むファイル名が取得されます。
以上で Talend のジョブができました。
例えば、tFileList コンポーネントで指定したフォルダーに server.json というファイルを次の内容で用意します。
payload={"text":"Hello, this is some text\nThis is more text. :tada:"}
ジョブを実行して、メッセージが投稿されれば成功です。
実際に使うには、メッセージファイルを削除したりエラー処理が必要となります。
ちなみに、tHttpRequest コンポーネントを実行すると成功した場合は、 ResponseContent カラムに「OK」がセットされ、失敗すると「400 Bad Request」がセットされます。