テスト用のSIPサーバーとして「RasPBX – Asterisk for Raspberry Pi」を設定した別のラズパイを用意し、「Linphone」を導入したラズパイと、SIPアプリの「AGEphone」を導入したスマホの間で、通話できることを確認しました。
***.sip.twilio.com アドレスをLinphoneにSipサーバーの設定します。
- 通信方法
050 のSIP通信は通常グローバルIPアドレスが必要となりますが、今回はプライベートIPアドレスで通話可能とするために ngrok のサービスを利用し解決しました。
ラズパイ起動時に「USBモデムでソラコムに自動接続する」ように設定しておくと、SORACOMの回線経由で直接ラズパイをVCNでリモート可能になります。


## 過去の動画
[Twilioコンテスト応募時の動画](https://youtu.be/QMdDVPmwybA)
## 7. Wow
古き良きアナログ技術に触れ、 Twilio という素晴らしいサービスで大満足です!
### 1-5. 音声分離回路
電話機からの信号は基本2本線ですがその信号ラインには、スピーカーとマイクの信号が一緒に乗っています。それを分離するための回路です。こちらは自作しました。
- 受話器のマイクからの信号をラズパイに繋いだ USBオーディオのマイクジャックに接続。
- ラズパイに繋いだ USBオーディオのスピーカージャックからの信号を受話器のスピーカーへの信号に接続。
## 2. 処理の流れ
番号エラーや話し中を含め、途中で発呼をやめるパターン等、異常系を全て載せたら切りがないため、以下正常系の2パターンで説明します。
- 黒電話からかけて黒電話から切断
- 相手側スマホからかけてスマホから切断
### 2-1. 黒電話からかけて黒電話から切断
#### ①ダイヤル開始
(1)~(2) 受話器を持ち上げると、Arduino 側で検知して音声ラインからトーン音を出す
#### ②発呼番号確定
(3)~(5) ダイヤルパルスを数えて、発呼先の電話番号を確定させダイヤルコマンドを送る。
#### ③発呼
(5)~(7) ラズパイから Twilioを呼び出して発呼先電話を呼び出す。
#### ④呼び出し
(8)~(9) 相手が受話器を取ったらそれをTwilio経由でラズパイに通知する。
#### ⑤保留
(10)~(11) 相手に繋がったら転送をキューに入れて保留し、SIP電話に転送する。
#### ⑥応答
(12)~(13) SIP電話は自動応答にしているのでTwilioを通じてラズパイまで繋がったという応答が返る。
#### ⑦通話開始
(14)~(15) ラズパイから ATコマンド応答で接続を通知し、回路反転リレーと通話リレーを切り替えて通話状態になる
#### ⑧受話器を置く
(16)~(19) 受話器を置いたことをきっかけに切断の ATコマンドをラズパイに送り、回路反転リレーと通話リレーを切断状態にする。
#### ⑨切断指示
(20)~(21) Twilio から SIP電話へ切断を指示する。
#### ⑩切断応答
(22)~(24) 切断応答を返して通話を終了。
### 2-2. 相手側スマホからかけてスマホから切断
#### ①着信開始
(1)~(2) 相手側が電話の受話器を上げ Twilioで管理されている電話を呼び出す。
#### ②ベル鳴動
(3)~(5) Twilio からラズパイ経由して疑似交換機まで着信信号を伝えベルを鳴らす。
#### ③呼び出し側は保留
(6) Twilio にはいったん着信を指示してキューに入れ呼び出している間保留する。
#### ④応答
(7)~(8) 黒電話が応答の為に受話器を上げると、応答したことがラズパイに伝わる。
#### ⑤転送
(9),(11) 保留になっていた呼び出しを SIP電話に転送して呼び出す。
#### ⑥通話切替
(10),(12) ラズパイからの応答により回路反転リレーと通話リレーを切り替えて通話状態になる。
#### ⑦相手が応答
(13)~(14) SIP電話は自動応答にしているのでTwilioを通じてラズパイまで繋がったという応答が返り通話が開始される。
#### ⑧通話開始
(14)~(15) ラズパイから ATコマンド応答で接続を通知しリレーを切り替えて通話状態になる
#### ⑨相手が切断
(16)~(19) 相手側が受話器を置くとSIP電話に切断が指示されTwilio経由で通話終了が通知される。
#### ⑩終話
(20)ラズパイ側からATコマンド応答で疑似交換機まで切断が通知される。
#### ⑪終話音再生
(21) 受話器が上がっている間、ツーツーという終話音を再生します。
#### ⑫切断
(22)~(24) 受話器がおかれて 回路反転リレーと通話リレーを切断状態にして通話を終了する。
## 3. 構成写真
構成部品の写真は以下の通りです。