鉄道運行情報の通知
Author: Asao Nakamura
282 views
この記事では、特定のサイトが更新されていた場合に通知を送る方法を説明します。
【できるようになること】
- Webサイトから情報を取得
- Webサイトの情報をSlackに通知
- 条件分岐の設定
ワークフローの設定例
今回は、以下のケースを想定したワークフローを作成してみます。
交通系サイトで、ある鉄道路線の運行状況を確認し、平常運転ではなかったら、Slackに通知を送る。
まずは、ブラウザを開くアクションを利用して、Yahooの運行状況を開きます。
- OpenBrowser(ブラウザを開く)を設置します。
- 以下URLを入力します。
https://transit.yahoo.co.jp/traininfo/top
今回の例は、「検索した鉄道路線の運行情報が平常運転でない場合、Slackに通知する」となっています。
5.で取得した鉄道運行情報をもとに、「検索した鉄道路線の運行情報が平常運転かどうか」を判断する条件分岐を作成してみましょう。
- Compare(比較する)アクションを設置します。
- 比較基準に、GetTextのアウトプットを設定します。
- 比較対象に、以下を入力します。
[○]平常運転
- 比較方法に、「を含む」を指定します。
- ではない。(not) をTRUEにします。
- IF(条件分岐)を設置し、Compareのアウトプットを指定します。
[参考記事]
条件式の作成ができたため、最後にSlackにメッセージを送信するアクションを追加します。
※Slackとの連携方法は、こちらをご参照ください。
- SendSlackMessage(Slackにメッセージを送信)を設置します。
- 任意のプロバイダID,チャンネル,本文を設定します。
- ワークフローを保存/実行します。
[参考記事]
6. の条件分岐は、Compareアクションを使用しない形でも作成可能です。
この場合は、以下のような形で作成できます。
- GetTextの下に、StoreValue(変数に保存)を設置します。
- 任意の変数名を指定します。
- 値にGetTextのアウトプットを指定します。
- IF(条件分岐)を設置し、以下いずれかの条件文を直接入力します。
${!変数名.includes("[○]平常運転")} ${変数名 != "[○]平常運転" && 変数名 != "\n[○]平常運転"}
[参考記事]
このワークフローは、鉄道の運行情報を提供しているWebサイトの更新をトリガーとして自動実行されるものではありません。
ただ、スケジュール(定期実行)登録により、任意の時間帯に実行させることは可能です。
例えば、1時間おきや10分おき、金曜日の17時のみなど、特定のタイミングでこのワークフローを実行させることができます。
詳細な方法については、以下記事をご参照ください。
# ブラウザを開く +open_browser_1: action>: OpenBrowser url: 'https://transit.yahoo.co.jp/traininfo/top' lang: 'ja-JP' headless: true # 文字入力_鉄道路線名で検索 +type_text_1: action>: TypeText browser: +open_browser_1 selector: '#railSearchInputField' text: '都営浅草線' clearValue: false ignoreError: true # クリック_検索 +click_1: action>: Click browser: +type_text_1 selector: '.btnSearch > input' confirm: true ignoreError: true # クリック_検索結果の1番目 +click_2: action>: Click browser: +click_1 selector: '.elmSearchItem > li > a' confirm: true ignoreError: true # テキストを取得_運行状況 +get_text_1: action>: GetText browser: +click_2 selector: '#mdServiceStatus > dl > dt' ignoreError: true # 比較する +compare_1: action>: Compare subject: +get_text_1 compare_with: '[○]平常運転' method: CONTAINS not: true # 真のとき +if_1: if>: +compare_1 _do: # Slackでメッセージを送信する +send_slack_message_1: action>: SendSlackMessage provider: '' channel: '#random' text: '浅草線は平常運転ではないようです。ご注意ください。' send_select: false response_message: false
<Notification>通知