16
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ぐるなびAdvent Calendar 2018

Day 7

twilioでIVRはどのように進化するか

Last updated at Posted at 2018-12-06

この記事は ぐるなび Advent Calendar 2018 7日目の記事です。
@colorful_cookie が担当します。

今回はtwilioというサービスを使って、IVR(自動応答電話)にどれだけ介入できるかチャレンジしてみました。また、それによってIVRというものがどのように発展していくかをお話ししたいと思います。

twilioとは

Twilio Mark - Blue.png
https://www.twilio.com/
先達の方々が既に各所わかりやすい説明をしてくださっていますので、料金等については割愛させていただきます。
twilioは、簡単に言いますと、音声通話・SMS・チャット・ビデオなどの様々なコミュニケーション手段を提供するクラウドAPIサービスです。
電話番号を購入し、その番号に対しWebhookを用い、TwiML(後述)を読み込ませることで様々な介入を行えます。

IVRと言えば荷物の再配達サービスなどでお馴染みですが、これを気軽に構築できるようになります。

TwiMLとは

https://jp.twilio.com/docs/voice/twiml
一言でいうとXMLです。さまざまな命令をXML形式で記載し、twilioに読み込ませることで、様々な通話の制御が行えます。

hello_world
<?xml version="1.0" encoding="UTF-8"?>
<Response>
     <Say>Hello World</Say>
</Response>

このTwiMLをtwilioに読み込ませると、発話開始時に自動音声で「Hello world」と喋るようになります。

やれること(の一部)

twilioは、電話に関連するほぼ全ての事柄に対して介入できます。また、Webhookを通じてサーバと連携することで、サービスの内容は更に拡充されます。よりユーザに合った会話を提供したり、必要な情報を記録してサーバへ送信することも出来るようになります。
以下では、その代表的な機能を抜粋して紹介いたします。

入電があれば自動応答音声を流す

図1.png
twilioから購入した電話番号に入電があった場合、あらかじめ設定しておいた音声を流すことができます。TwiML内の<Pause>タグでインターバルを秒単位で指定できます。

example_01
<Response>
    <Play>../voice/01.mp3</Play>
    <Pause length="1"/>
    <Play>../voice/02.mp3</Play>
    <Pause length="5"/>
</Response>

入電時にプッシュ通知を送る

図2.png
twilioから購入した電話番号に入電があった場合、リダイレクトや再ダイヤルを通じ各デバイスのサーバーを経由してプッシュ通知を送信できます。なんらか失敗した場合は自動的に次行の処理が行われます。

example_02
<Response>
    <Dial action="../api/push_notification" method="POST">415-123-4567</Dial>
    <Say>I am not reachable</Say>
</Response>

話者の入力に対して応答を切り替える

図3.png
話者の入力をサーバーに問い合わせ、問い合わせた先のプログラムからその後の処理や転送先を切り替えることができます。入力の終了をtwilioに通知するキーも別途指定することができます。

example_03
<Response>
    <Gather action="../api/call_action" finishOnKey="" method="POST">
        <Say>Please enter any key</Say>
    </Gather>
    <Say>We didn't receive any input</Say>
</Response>

発信者の電話番号を取得してSMSを送信する

図4.png
あらかじめ発信者の電話番号を取得しておくことで、twilio SDKからSMSを送信することができます。
SMSの到達率は購入した回線の国籍によって変わり、日本国外の番号ですと到達率が90%程度に低下します。日本国内であればほぼ欠落しませんが、1通ごとの利用料が高いというデメリットがあります。

話中に入力された内容をサーバに送信する

図5.png
話中にユーザの入力があればそれをサーバに送信することができます。送信する内容はtwilio SDK内でカスタマイズでき、他に必要な情報を付帯して送ることができます。

通話ステータスを取得する

図6.png
とあるユーザは話中、とあるユーザは通話終了...など、それぞれの通話がどの状況なのかを把握することができます。

ほかにも

  • ビデオ配信
  • LINEなどへの連携機能
  • FAX送信
  • SIPインフラそのものをインターネット経由で作成可能

など、外部のサービスとつなげることで、電話でやれることがグッと広がります。

最後に

これだけのポテンシャルを持っているtwilioですが、日本でのコミュニティはまだまだ小規模なものになっています。普段当たり前に使っている電話というツールに、こういった形で自由度高く切り込めるサービスはあまり見当たらないのではと思います。利用できる場は多く、参入障壁も比較的低いため、どんどん広まって欲しいですね。

16
5
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
16
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?