Help us understand the problem. What is going on with this article?

ボイスワープのON/OFFを自動化してみた

More than 1 year has passed since last update.

JX通信社 Advent Calendar 2018、8日目担当のkain_jyです。

社内の業務改善で取り組んだ小ネタを。

背景

弊社では抱えている顧客の業務上、深夜や休日でも会社の代表電話宛に電話がかかることがあります。

そういった顧客に対応するため、業務時間外に会社の代表電話宛への架電を、会社以外からも受けられる別の電話番号へ、電話転送(ボイスワープ)するようにしています。ボイスワープのON/OFFの設定は担当者を決め、業務開始・終了時に設定するようにしていました。

ですが、担当者がボイスワープをON/OFFするのを忘れてしまったり、風邪で休んだりしたときに別の人がいちいち設定方法を調べたりと、無駄な業務が増えてしまいました。

方針

そこで、ボイスワープの設定を自動化できないか、試みてみました。

ボイスワープ(NTT東日本・ひかり電話)の設定方法は3通りあります。

  1. 転送元の電話からの操作
  2. 外出先など別の電話からの操作(リモートコントロール)
  3. インターネットを利用した設定操作

仕事でTwilioを少し触ってて楽しかったため、2を試してみることにしました。

ちなみに、1は社内の電話設備的に難しいため断念。3はサイトが意外に複雑で、ブラウザの自動操作させるのが面倒なため、一旦保留。

実装

まずは、転送元の電話から、リモートコントロールする際に使う暗証番号を登録してメモっておきます。

次に、Twilioで音声が有効な国内の電話番号を取得して、電話番号とアカウントSID、AUTHTOKENをメモっておきます。

これで事前準備は完了。

弊社ではPythonを業務で使うことが多いため、今回はAWS Lambda(Python)で実装してみます。

main.py
import os
from twilio.rest import Client as TwilioClient

SECRET = os.environ['SECRET']  # 転送元の電話で設定した暗証番号4桁

TWILIO_ACCOUNT_SID = os.environ['TWILIO_ACCOUNT_SID']  # TwilioのアカウントSID
TWILIO_AUTHTOKEN = os.environ['TWILIO_AUTHTOKEN']  # TwilioのAUTHTOKEN

TWILIO_CALLER = os.environ['TWILIO_CALLER']  # Twilioで取得した電話番号

TWILIO_EMPTY_MESSAGE = "https://twimlets.com/message"  # 空メッセージを返すTwiML
NTTEAST_VOICEWARP_TEL = "+81363044141"  # ボイスワープのリモートコントロール用アクセス番号(NTT東・ひかり電話)

twilio = TwlioClient(TWILIO_ACCOUNT_SID, TWILIO_AUTHTOKEN)

def handle(event, context):
    target = event['target']  # 転送元の電話番号
    status = event['status']  # 1:開始、0:停止

    # NTT東日本のひかり電話のボイスワープリモートコントロールでは、自動応答のあと、
    # 転送元電話番号 + 暗証番号 + 1 or 0(転送開始・停止) + 1(確認)とダイヤルします。
    # 'w'はTwilioの仕様で、'w'一文字につき0.5秒待ってから次のダイヤルを送るという意味です。
    # https://jp.twilio.com/docs/voice/twiml/number#examples-1

    send_digits = "wwwwww{}#wwwwww{}#wwwwwwwwwwwwwwwwwwww{}wwww1".format(target, SECRET, status)

    twilio.calls.create(
        url="https://twimlets.com/message",
        from_=TWILIO_CALLER,
        to=NTTEAST_VOICEWARP_TEL,
        send_digits=send_digits
    )

このスクリプトとtwilioのpythonライブラリをパッケージングし、AWSのコンソール画面からアップロードして関数を作成します。

ボイスワープを開始する場合は、イベントから

{
  "target": "転送元の電話番号",
  "status": 1 or 0   # 開始 or 停止
}

を渡してください。

さらに、この関数に要件に応じたトリガーを設定してあげれば、自動化完了です。

まとめ

Twilio + AWS Lambdaを使って、ボイスワープ設定を自動的にON/OFFするようにした取り組みについて紹介しました。ほんのちょっとしたことですが、こういった雑務がなくなることは気持ちよく仕事するために大事なことだと思っています。

いずれGoogle Duplexのような音声チャットボットが進化して、電話の受付自体が自動化するような、そんな未来を期待したいですね。

kain-jy
bio.
jxpress
技術力で「ニュースの産業革命」を起こす。言語処理・データ解析分野の専門家が集まる、News Techベンチャー。
https://jxpress.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away