mozikeru.com

和歌山在住。2児の父。IoTエンジニア。各種ご相談承ります。

Twilioで自前のサーバーを使用せずに電話転送の仕組みを構築する

Twilioで電話を転送させたい場合、通常はTwiML構文にてDial動詞を記述して実現します。

TwiML™ Voice: <Dial> - Twilio


しかし、単純な転送程度であればTwiMLをいちいち書かなくても実現できます。
今回はその方法をメモしておきます。

Twilio Labs Fowerd

https://www.twilio.com/labs/twimlets/forward


簡単に流れを説明すると、リンク先画面の下の方にある、「Twimlet Generator:forward」というフォーム群に必要事項を入力することで生成されるURLを転送を行いたいTwilio番号のA CALL COMES INのWebhook欄に記載するだけで実装が行えます。

f:id:mozikeru:20171004223611p:plain


それでは、各フォームの意味を見てみましょう。
・Phone Number:転送先電話番号(必須項目)
・Caller ID:転送先に通知する電話番号
・Allowed Caller 1(~5):発信を許可する電話番号
・FailUrl:mp3をアップしたURLを記載すると転送先が話し中だったり、電話を取らなかった場合に指定したmp3をかける

Phone Number欄、Caller ID欄、Allowed Caller欄は電話番号の入力欄ですが、それぞれハイフン無しの国番号形式(日本の場合電話番号の先頭の0を+81にした形式)で記載します。

Caller ID欄は、ここに書いた電話番号が転送先電話に通知(ナンバーディスプレイ)されます。同一アカウントで取得したTwilioの番号ならなんでも記述することができます。


例えば、A,Bという2つのTwilio電話番号を所有していたとして、その両方から別の番号に転送を行うような場合に、どちらからの転送であったとしてもAからの着信であるように通知する事が出来るので、着信先の電話にいくつもTwilio番号を電話帳登録しておかなくて済みます。


Caller ID欄を空欄にした場合や、無関係の電話を記載した場合は非通知として扱われます。(逆に言うと、大本の発信元の番号を転送先に通知するような事は出来ません)


Allowed Caller欄に電話番号を記載することで、この転送電話の仕組みに対して発信可能な電話を固定することが出来るようになります。Allowed Callerに記載の無い電話から転送電話に電話発信すると英語で、「ごめんな、自分の番号、許可されてないんやわ」的なアナウンスが流れます。


それぞれの項目を入力すると以下のようなURLがフォームの下部に赤字で生成されます。

http://twimlets.com/forward?PhoneNumber=%2B81XXXXXXXXXX&AllowedCallers%5B0%5D=%2B81XXXXXXXXXX&

GETのクエリー部分がそれぞれ指定した項目の内容かつ、URLエンコードされたものになっているかと思います。

このURLをそのままコピーして、自分のTwilioダッシュボードのPhone Numbers→該当番号のプロパティ画面にて、「A CALL COMES IN」欄に貼り付けて保存します。

f:id:mozikeru:20171004230640p:plain

↑こんな感じ

フォームに入力して出力されたURLを貼り付けて保存する、これだけで転送電話の仕組みが作れます。しかも、発信元を任意に変えたり、発信元制限も簡単につくれます。

使いこなせばとても便利だと思うので、活用してみてください。