LoginSignup
2
0

More than 3 years have passed since last update.

ポケットベルサービス終了記念📟 Amazon Connectでポケベル風メッセージ送信

Posted at

東京テレメッセージが2019/9/30をもってポケットベル(ページャー)のサービスを終了すると発表しました。
http://www.teleme.co.jp/service/magicmail/index.html
サービスの開始は1968年(日本電信電話公社(現NTT))。意外と昔からサービス開始していたんですね。自分の世代は高校生の時にポケベルが流行していました。公衆電話で高校生がベル打ちしてました。(昔話ですね)
終了するポケベルを惜しんで、今回はAmazon Connectでポケベル風メッセージ送信を実装しました。

概要

pager.png

いわゆるポケベルですね。

  • 送信者は電話を通じて送信したい文字のコード列を送信
  • Amazon Connectは送信者とのインターフェースとなり、文字のコード列を受け取りLambdaに投げる
  • Lambdaは文字のコード列を文字列に変換し、Slackに送信

文字のコード列を文字に変換するためのテーブルは以下のテーブルを参考にしました。

image.png
https://pc.watch.impress.co.jp/docs/column/musashino_proto/489609.html

高校生が公衆電話に向かってボタンを連打してるの、このテーブルを暗記してたのか。すごい...。

実装

pager_structure.png

以下の手順で実装していきます。

  1. SlackからIncoming Webhook URLを取得
  2. Serverless Frameworkを使用してLambdaをデプロイ
  3. Amazon Connect の設定

Lambda関数の管理にはServerless Framework を使用しています。依存するパッケージを含めたコードのzip化、デプロイや関連するAWSリソースの管理などを簡単なyamlに記述することで簡単にデプロイすることができます。SlackのIncoming Webhook URLの設定をここに行います。

Amazon Connectの設定はTerraformを眺めてもなさそうだったので手で作成します。フローはJSONからインポートします。

前提条件

以下を前提としています。
OSは多分なんでも動きますが、検証環境がないのでmacOSのみとなっています。また、node.js/AWS CLIのインストールや設定が終わっていなければ設定しましょう。

  • macOS Mojave 10.14.6
  • node.js がインストール済み
  • AWS アカウントが設定され、ログイン可能な状態
  • AWS CLIがインストールされ、適切な認証情報が設定済み

1. SlackからIncoming Webhook URLを取得

Slack でのIncoming Webhook の利用に作成します。

設定が完了すると https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX のようなURLが払い出されるのでメモしておきましょう。

2. Serverless Frameworkを使用してLambdaをデプロイ

Serverless Framework のインストール

serverless をインストールします。詳細なインストール手順はGetting Started with the Serverless Framework and AWS
を参考にしましょう。

$ npm install -g serverless

pythonのパッケージインストールに必要となるため、serverless-python-requirementsもインストールします。

$ npm install serverless-python-requirements

GitHubからソースを取得

GitHubから今回実行するLambda関数のソースを取得します。

$ git clone https://github.com/kangaechu/pager-serverless
$ cd pager-serverless

設定ファイルにSlackのWebhook URLを指定

サンプルファイルから設定ファイルを作成します。

$ cp config.dev.sample.json config.dev.json

設定ファイルを編集し、先ほど取得したSlackのWebhook URLを config.dev.json に指定します。

config.dev.json
{
  "SLACK_WEBHOOK_URL": "https://hooks.slack.com/services/123456789/123456789/012345678901234567890123"
}

Lambdaにデプロイ

Lambdaにソースをデプロイします。エラーメッセージが出ていないことを確認します。

$ serverless deploy

かんたん。

3. Amazon Connect の設定

Amazon Connectを設定していきます。

Amazon Connect インスタンス追加

Amazon Connectで、「インスタンスを追加する」を選択します。

image.png

1 ID管理画面です。複雑なID管理は行わないので、「Amazon Connect 内にユーザーを保存」を選択し、アクセスURLに適当な名前を指定します。

image.png

2 管理者の作成画面です。必要な項目を埋めます。
次回以降にAmazon Connectにログインする際に必要な情報となります。
image.png

3 テレフォニーオプションです。電話の発信は行わないため、チェックボックスを外します。
image.png

4 データストレージです。特に設定が必要な項目がないため、次に進みます。
image.png

5 確認画面です。内容を確認し、「インスタンスを作成」を選択します。
インスタンスの作成が完了したら「今すぐ始める」を選択します。

Amazon Connectの設定

日本語化

右上のEnglishを選択し、「日本語」を選択します。
image.png

電話番号を取得する

電話番号の取得では、以下の通り設定します。

  • 国/地域: 日本
  • タイプ: Direct Dial (通話料発信者負担)
  • 電話番号: お好きなものを

image.png

呼び出すでは、Amazon Connectに電話をかけることができます。試しにかけてみましょう。

image.png

問い合わせフローのインポート

pager.json(問い合わせフロー)をローカルに保存します。

Amazon Connectの左側から「ルーティング」→「問い合わせフロー」を選択します。

image.png

「問い合わせフローの作成」を選択します。

image.png

グレイアウトした保存の右にある▼を選択し、「フローのインポート」を選択します。

image.png

先ほどダウンロードした pager.json を選択し、インポートします。

image.png

こんなフローがインポートされれば成功です。
「プロンプトの再生」に表示されているワーニングは閉じておきましょう。

image.png

インポートしたフローを保存し、公開します。

image.png

Lambdaの設定

先ほど作成したLambdaをワークフローから呼び出せるようにしましょう。

AWS Connectのインスタンス一覧 から対象のインスタンスを選択します。

image.png

画面左側で「問い合わせフロー」を選択します。
画面右側の「AWS Lambda」で関数を追加します。pager関数を選択し、「Lambda関数の追加」を選択します。
下部の「Lambda 関数」に対象の関数が追加されたことを確認します。
image.png

再度Amazon Connectで「ポケベル」ワークフローを開きます。
「AWS Lambda関数を呼び出す」を開きます。
image.png
「関数を選択する」からpager-dev-encode を選択し、Saveを選択します。

上部から再度フローを保存し、公開します。

image.png

電話番号と問い合わせフローを関連づける

Amazon Connectの左側メニューから「ルーティング」→「電話番号」を選択します。
image.png

電話番号を選択します。

image.png

「問い合わせフロー/IVR」 に今回作成した「ポケベル」を選択します。

image.png

完成です!!!

電話をかけてみる

作成した電話番号に電話をかけて、ガイダンスの後に 64 04 93 12 94 44 79と入力してみましょう。
Slackに通知されましたか?

image.png

参考資料

作成後にいろいろ調べてたら先駆者がいました。ハードウェアも作ってて本格的で素晴らしいですね。
https://qiita.com/mobilebiz/items/8fd213700e670cd3b9cd

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0