Twilioで購入した電話番号を使って、ソフトフォン「AGEphone」から電話をかけます。Twilioから電話番号を購入する方法は、「Twilioで電話番号の購入してPHP言語で発着信を行う」に示します。ソフトフォン「AGEphone」については、「Raspberry Pi 3でAsteriskによるスマートフォンでの内線電話」で使用しました。
今回の方法では特にグローバルなサーバを必要としません。Twilioが提供しているVoice SIPドメインとFunctionsを使用します。ソフトフォン「AGEphone」から電話をかけるために、次の手順でTwilioとAGEphoneを設定します。手順の1から3はTwilioの管理コンソールで作成し、手順の4はソフトフォン「AGEphone」で設定します。
- クレデンシャルリストを作成します。Voice SIPドメインに登録します。
- Voice SIPドメインを作成します。AGEphoneからアクセスされると、作成したFunctionを呼び出します。
- Functionsを作成します。これによりAGEphoneからの発信時に行う処理を記述します。
- AGEphoneを設定します。ここでは、作成したVoice SIPドメインとクレデンシャルデータを設定します。
クレデンシャルリストの作成
Twilioの管理コンソールの左側メニューから「Programmable Voice」の「SIPドメイン」の「クレデンシャルリスト」をクリックすると次の画面が表示されます。
「わかりやすい名前」に示された「Credentialxxxx」をクリックして、登録を開始します。次のように「クレデンシャルユーザー名」に「05xxxx」と「パスワード」を設定します。「関連づけられたSIPドメイン」には、上記で設定された「Voice SIPドメイン」で作成した「SIPドメイン」を設定します。設定した画面を次に示します。
Voice SIPドメインの作成
Twilioの管理コンソールの左側メニューから「Programmable Voice」の「SIPドメイン」をクリックすると次の画面が表示されます。
「SIP URI」をクリックして登録を開始します。
- SIP URI:xxxxx
- (REQUEST URL:https://fulvous-kakapo-7176.twil.io/xxx
(FUNCTIONで作成したスクリプトのURL) - クレデンシャルリスト:Credentialxxxx
設定を完了した画面を次に示します。
Functionsの作成
Twilioの管理コンソールの左側メニューから「Runtime」の「Functions」をクリックすると次の画面が表示されます。
「NAME」をクリックして登録を開始します。作成したFUNCTIONのURLを、上記に示す「Voice SIPドメイン」の「REQUEST URL」に設定します。FUNCTIONの登録画面を次に示します。
「CODE」の内容を次に示します。この「CODE」はNode.jsで記述されています。14行目のsayメソッドにより、音声メッセージを出力して、15行目のdialメソッドで相手電話番号にダイアルします。
exports.handler = function(context, event, callback) { // 宛先 const to = event.To || ''; // 発信者番号 const from_ = event.From || ''; // 宛先/発信者番号から電話番号を抽出 'XXXXXXXXXXX@xxx.sip.us1.twilio.com' -> 'XXXXXXXXXXX' const toNumber = to.indexOf("@") > 0 ? to.substring(4, to.indexOf("@")) : ''; const fromNumber = from_.indexOf("@") > 0 ? from_.substring(4, from_.indexOf("@")) : ''; // 0AB〜Jを+81に変換 const number = (toNumber.substring(0, 1) === '+' ? toNumber : '+81' + toNumber.substring(1)); const callerId = (fromNumber.substring(0, 1) === '+' ? fromNumber : '+81' + fromNumber.substring(1)); const twiml = new Twilio.twiml.VoiceResponse(); twiml.say("お繋ぎします。少しお待ちください。", {voice: 'alice', language: 'ja-JP'}); twiml.dial({callerId: callerId}).number(number); console.log(twiml.toString()); callback(null, twiml); }
AGEphoneの設定
AGEphoneの設定ボタンをクリックして、今回作成したのSIPドメインとクレデンシャルデータを次のように設定します。
- ドメイン:Voice SIPドメインで作成したドメイン名(注:[SIPドメイン名].sip.us1.twilio.com とリージョン(us1)を指定)
- ユーザID:クレデンシャルユーザ名
- パスワード:クレデンシャルパスワード
設定が完了すると、AGEphoneはSIPドメインの接続を開始し、正常にSIPドメインに接続できると、次のように「ダイヤルできます」「デフォルト(05xxxx)」と画面に表示します。
電話をかけたい相手電話番号を入力すると、相手電話に発信します。