Post

NewRelic発生したアラートをAWS Connectを通して架電する方法

要件

NewRelicで監視しているシステムがダウンした際に、複数人にダウンした旨を架電したい。 架電内容は、どのシステムがダウンしたかメッセージが流れる。 また、システム毎に架電元の番号は違い固定であること。 架電先は、050-xxx。電話番号は国内、国外を問わない。

前提

AWS EventBridgeとの連携によるインシデント対応の効率化(架電編) - New Relic のAWS EventBridgeからAWS Lambdaを呼び出す箇所まで設定する。

Lambdaの作成

2つのシステム(hoge, hoge2)からコールを想定してます。 アラートが発生したシステムを特定できるように、AWS Connectにシステム名を通知します。 また、DESTINATION_PHONE_NUMBERS_JSONには複数の電話番号を設定することにより、複数人に架電を行えます。

require 'aws-sdk' require 'json' SYSTEM_NAMES = { 'hoge' => 'ホゲ', 'hoge2' => 'ホゲ2' } SOURCE_PHONE_NUMBERS = { 'hoge' => ENV['HOGE_SOURCE_PHONE_NUMBER'], 'hoge2' => ENV['HOGE2_SOURCE_PHONE_NUMBER'] } def lambda_handler(event:, context:) connect_call(event) end def connect_call(event) client = Aws::Connect::Client.new(region: 'ap-northeast-1') JSON.parse(ENV['DESTINATION_PHONE_NUMBERS_JSON']).each do |destination_phone_number| response = client.start_outbound_voice_contact( destination_phone_number: destination_phone_number, # required contact_flow_id: ENV['CONTACT_FLOW_ID'], # required instance_id: ENV['INSTANCE_ID'], # required source_phone_number: SOURCE_PHONE_NUMBERS[event['Type']], attributes: { "SystemName" => SYSTEM_NAMES[event['Type']] } ) end end

環境変数は下記のような設定です。

CONTACT_FLOW_ID caaxxx-xx-xx-xx-xxx DESTINATION_PHONE_NUMBERS_JSON ["+81123456789", "+81123456789"] INSTANCE_ID afxx-xx-xx-xx-xxx HOGE_SOURCE_PHONE_NUMBER +18123456789 HOGE2_SOURCE_PHONE_NUMBER +18223456789

INSTANCE_IDHOGE_SOURCE_PHONE_NUMBERHOGE2_SOURCE_PHONE_NUMBERはAWS Connectを設定して取得します。

AWS Connectの作成

Amazon Connectでインスタンスを作成する

Add an instanceを押下して、説明通りに必要情報を入力する。

Amazon Connect インスタンス ID/ARN の検索 - Amazon Connect にてARNをメモっておく。

電話番号を取得する

AWS Connectの管理画面にログインする。 https://xxx.my.connect.aws/numbers#/ にて番号を取得する。

Amazonサポートに問い合わせする

特に手続きが不要な米国の電話番号を利用することになった。

補足

Amazon Connect の電話番号をアジアパシフィック (東京) リージョンで取得する - Amazon Connect

日本国の電話番号は取得の難易度が上がる。

サポート経由で制限解除をリクエストをする

問い合わせ内容

制限緩和のリクエスト 1 リージョン: アジアパシフィック (東京) サービス: Amazon Connect 制限の名前: 日本 (東京) の電話番号 申請する上限数: 0 ------------ 申請理由の説明: 日本の電話番号への発信制限を解除したいです。 ・解除したい電話番号のプレフィックス 090, 080, 070 ・Connect インスタンスの ARN arn:aws:connect:ap-northeast-1:77xxx:instance/afxxx-xx-xx-xx-xxxx

返答

ご希望通り、該当Connect Instanceから日本の携帯番号への発信制限を解除いたしました。 なお、別のConnect Instanceでも同様に発信制限の解除が必要となりましたら、お手数ですがそのConnect InstanceのARNを添えて別途解除をお申しつけください。
Tips

問い合わせの項目

サポートに問い合わせする際に、「申請する上限数:」はデフォルトで表示されるフォーマットで、発信制限解除のご依頼の際には特段意味をなさない項目。 記入時は「0」など任意の数字を記載いただき、「申請理由の説明」に発信制限の解除をご希望する具体的な番号を記入する

デフォルトの解除番号

デフォルトで電話できる国 - Amazon Connect

+8150 への発信制限は、デフォルトで解除されている。

問い合わせしたが正しく解除できていない

解除を申請したが、問い合わせコントロールパネルにて電話の発信を試みると「発信先の電話番号は E.164 形式で入力できていると思います。(+8180XXXXXXXX)」が表示される。 再度問い合わせて解除の確認をしてもらうと、架電が行えた。(人間だもの)

フローを作成する

AWS Connectの管理画面にログインする。 https://xxx.my.connect.aws/contact-flows にてニーズに合いそうなフローを真似て、フローを作成する。

作成したフロー例

①コンタクト属性の設定 → ②音声の設定 → ③プロンプトの再生 → ④切断

  1. Lambdaで設定したSystemNameをフロー内で扱えるようにします。 音声の設定
  2. お好きな音声を選択
  3. 「$.Attributes.SystemName のログインチェックに失敗しました。」をテキストで解釈させる設定をする。
  4. 終了イベントを行います。
This post is licensed under CC BY 4.0 by the author.