#初めに
日々、メールが沢山来て、メールの管理が大変だったり、重要なメールを見落としてしまったり・・・ということはないでしょうか?
そんなメールの課題を解消すべく、今回はGmailに送信されてきたメールのうち、特定の条件を満たすメールを受信したタイミングで Webex Messaging Bot に通知を行う仕組みを作成していこうと思います。
プログラミングは一切行わず、iPaaS(webMethods.io)とコマンドプロンプトを使用して作成します。
#Google APIのアクセストークンを取得する
webMethods.ioのGmailの設定項目を確認してみます。
見てわかる通り、アクセストークン、リフレッシュトークンの設定が必要です。
webMethods.ioでフローを作成する前に、Google APIのアクセストークンを取得する作業を行います。
「Google Cloud Platform」から、GmailのAPIを有効にします。
※APIを有効にする手順は「Webex Messasingのスペース管理をAPIで行う②」参照
###認証情報を作成する
GmailのAPIはアクセストークンが必要であるため、引き続き認証情報の作成を行っていきます。
「APIとサービス」→「認証情報」の順に選択して、「認証情報」画面へ移動いします。
「認証情報を作成」→「OAuthクライアントID」を選択します。
画面に表示された「クライアントID」「クライアントシークレット」は後ほど使用するため、控えておきます。
(別画面で「クライアントID」「クライアントシークレット」は再確認可能です)
次に、認可を行うプロジェクトを作成します。
「OAuth同意画面」を選択すると、作成済みのプロジェクトが表示されます。
表示がない場合、「プロジェクトを作成」からプロジェクトを作成していきます。
新しいプロジェクトで「プロジェクト名」を入力し、「作成」で進みます。
APIを許可するユーザーを追加しておきます。
追加したら、「保存して次へ」で進みます。
###認可コードを取得する
アクセストークン、リフレッシュトークンを作成するために、認可コードを取得する必要があります。
※OAuth2の認可フローについては「Google Identity Platform
Google > OAuth2.0を使用してGoogleAPIにアクセスする」を参照
認可コードの取得については、「WebサーバーアプリケーションにOAuth2.0を使用する」に従って進めていきます。
認可コード取得のために設定する項目は以下の通りです。
パラメータ | 設定値 |
---|---|
client_id | 作成したOAuthクライアントの「クライアントID」 |
redirect_uri | 作成したOAuthクライアントに設定した「承認済みのリダイレクトURI」 |
scope | https://www.googleapis.com/auth/gmail.readonly( ※1) |
response_type | code |
access_type | offline( ※2) |
※1 scope
スコープには、許可する権限範囲を設定します。
今回はメールのタイトルで判定する予定なので読み取りのみ可能なスコープ「https://www.googleapis.com/auth/gmail.readonly
」を設定します。
スコープの一覧は「Choose Auth Scopes」参照。
※2 access_type
「offline」を設定しない場合、次工程で「リフレッシュトークン」が取得できなかったため設定
認可サーバーへリクエスト「https://accounts.google.com/o/oauth2/v2/auth
」を送信します。
作成したURIをブラウザに入力すると、認可コードが取得できます。
https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&response_type=code&client_id=【クライアント ID】&redirect_uri=【リダイレクトURL】&scope=https://www.googleapis.com/auth/gmail.readonly
返ってきたURIの「code」に格納されている情報が「認可コード」になります。
###アクセストークン、リフレッシュトークンを取得する
アクセストークン、リフレッシュトークンの取得については、「WebサーバーアプリケーションにOAuth2.0を使用する」に従って進めていきます。
アクセストークン、リフレッシュトークン取得のために設定する項目は以下の通りです。
パラメータ | 設定値 |
---|---|
client_id | 作成したOAuthクライアントの「クライアントID」 |
client_secret | 作成したOAuthクライアントの「クライアントシークレット」 |
redirect_uri | 作成したOAuthクライアントに設定した「承認済みのリダイレクトURI」 |
code | 取得した「認可コード」(※3) |
grant_type | authorization_code |
認可サーバーへリクエスト「https://accounts.google.com/o/oauth2/token
」を送信します。
コマンドラインに入力して、トークンを取得します。
curl --data-urlencode "code=【認可コード】" --data-urlencode "client_id=2【クライアントID】" --data-urlencode "client_secret=【クライアントシークレット】" --data-urlencode "redirect_uri=https://127.0.0.1" --data "grant_type=authorization_code" https://accounts.google.com/o/oauth2/token
アクセストークンとリフレッシュトークンが取得できたことが確認できました。
#メールの通知をWebex Messaging Botに通知させる
ここから、実際にフローを作成して、条件を満たすメールを受信したらWebex Messaging Botが通知するようにしていきます。
webMethods.ioへ移動して認可情報を設定していきます。
フローはかなり単純な構成になっています。
トリガーにGmailを取得して、該当するメールであった場合はメッセージを通知して終了です。
それでは、トリガーで「Gmail」を選択し、認可情報を入力します。
パラメータ | 設定値 |
---|---|
Client ID | 作成したOAuthクライアントの「クライアントID」 |
Client Secret | 作成したOAuthクライアントの「クライアントシークレット」 |
Access Token | 取得したアクセストークン |
Access Token | 取得したリフレッシュトークン |
Refresh Url | https://oauth2.googleapis.com/token |
Grant Type | refresh_token |
トリガーの設定内容は次の通りです。
新しいメール受信時に、件名に「【重要】」と含まれるメールであった場合、通知対象としています。
続いてBotの設定を行います。
Botは通知内容にGmailの「件名」を通知するように設定しています。
それでは、実際にBotを動かくして確認してみましょう。
2件のメールを受信しました。
片方は件名に「【重要】」が含まれています。
件名に「【重要】」が含まれたメールの受信のみ通知している事が確認できました。
#最後に
GoogleのAPIを活用した事で、Webex MessasingのBotをGamilを連携して活用することができました。
このようにWebex Messasing BotはWebex製品内だけなく他アプリケーションと連携した活用方法もできるので、通知、リマインダー、備忘録の作成など便利ツールとして使用する事ができます!