内容
以下の手順で、メール受信時にAmazon Connectを通じて電話通知を行う仕組みを構築します。
- Outlook でメールを受信する。
- Outlook VBA マクロで受信トレイを常駐監視し、件名に「障害通知」が含まれるメールを検出。
- 該当メールを検知すると、ローカルのバッチファイルを起動。
- バッチファイルから AWS CLI を使って Amazon Connect の API を呼び出す。
- Amazon Connect のフローが起動し、指定の電話番号へ発信。
前提条件
- Amazon Connect のインスタンスおよび通話フローが作成済みであること。
- ローカル端末に AWS CLI がインストールされていること。
- IAM ユーザーに
AmazonConnect_FullAccess
ポリシーが付与されていること。 -
aws configure
により認証情報(アクセスキー等)が設定済みであること。
手順
バッチファイルの作成
以下のようなバッチファイルを作成します。instance-id
、contact-flow-id
、通知元・通知先の電話番号を環境にあわせて置き換えてください。
@echo off
aws connect start-outbound-voice-contact ^
--region ap-northeast-1 ^
--instance-id "***********" ^
--contact-flow-id "***********" ^
--destination-phone-number "+81***********" ^
--source-phone-number "+81***********" ^
--attributes "{\"Reason\":\"障害通知\"}"
Outlook VBA マクロの設定
Outlook を起動し、Alt + F11
で VBA エディタを開き、ThisOutlookSession
に以下のコードを貼り付けます。ns.Folders("*****@***.co.jp").Folders("受信トレイ")
の部分は、Outlook 上のアカウント表示名およびフォルダ名に合わせて修正してください。また、Shell で指定するバッチファイルのパスも環境に応じて変更します。
Private WithEvents inboxItems As Outlook.Items
Private Sub Application_Startup()
Dim ns As Outlook.NameSpace
Dim myFolder As Outlook.Folder
Set ns = Application.GetNamespace("MAPI")
Set myFolder = ns.Folders("*****@***.co.jp").Folders("受信トレイ")
Set inboxItems = myFolder.Items
MsgBox "Startup OK - フォルダ監視開始"
End Sub
Private Sub inboxItems_ItemAdd(ByVal Item As Object)
On Error Resume Next
If TypeOf Item Is Outlook.MailItem Then
Dim mail As Outlook.MailItem
Set mail = Item
If InStr(mail.Subject, "障害通知") > 0 Then
Call Shell("C:\****\****.bat", vbHide)
End If
End If
End Sub
マクロの有効化
Outlook 上で以下の手順に従ってマクロを有効にします
- [ファイル] → [オプション] → [トラストセンター] → [トラストセンターの設定] をクリック
- [マクロの設定] → 「すべてのマクロを有効にする」を選択
- Outlook を再起動
専用端末や専用アカウントでの運用等セキュリティリスクに注意します。
起動確認
Outlook 起動後、以下のメッセージが表示されると、受信トレイの監視が正常に開始されています。
テスト
件名に「障害通知」を含むメールを送信して、指定された電話番号に Amazon Connect 経由で発信されることを確認します。