Raspberry Pi 2台でFAXをリレー送信できるようにしてみた。

安定運用が続けられているRasPBXですが…

最近Raspberry Pi1BからRaspberry Pi2にアップグレードしました!

※過去のRasPBX構築の記事はこちら。

今までのままでもCPUやメモリ容量は余裕だったんだけどMySQLサーバをちょっと使いたい用途ができたのでせっかくRaspberry Piで動いてるMySQLをそのまま使えるようにUSBメモリでRAIDを組んで保存先を変更したりしてテスト中。

 

そして、今まで使っていたRaspberry Piが余ったのでそれを使ってFAXのリレー機能を構築してみました。

と、いうのもPBX自体は自宅に設置して運用していて、基本的にFAXはペーパーレスで運用しているものの…

仕事の作業場には送信専用にアナログFAX機を設置してG711Uを使ったみなし音声通信で行っています。

作業場のネット回線は3G回線を使用しているのでG711Uの通信は不安定で送信失敗が多いのでVoIP用のT.38ゲートウェイを用意しようと考えて居たのですが…

如何せん回線が不安定すぎるのでT.38を使うよりも中継サーバを作るのがベストかと思った次第です。

基本的な機能は以前に作ったMail to Faxをそのまま使っています。

 

まずは、作業場のFAXをRaspberry Piで受け取るためにAsteriskとHylaFaxの環境を構築しますが…

今回も面倒くさいのでRasPBXをそのまま使用します。

今まで使ってたRasPBXは既にバージョンが古くなっていたので最新版にアップデートしてAUFSカーネルも構築しなおし。

ここらへんも過去の記事を参考にしてください!

 

新しく構築したRasPBXにまずはfax-installを実行してHylaFaxをインストール。

適当な内線番号でFaxを使えるようにしておきます。

続いてアナログFAX実機をATAで接続するためにFreePBXから適当な内線番号を作ります。

 

以上の設定ができたらSSHやコンソールからAsteriskのカスタムExtensionを編集します。

nano /etc/asterisk/extensions_custom.conf

[fax-context]

exten => _.,1,Set(CALLERID(num)=${EXTEN})

exten => _.,2,Dial(IAX2/HylaFax内線番号)

exten => _.,3,Hangup

こんな感じのコンテキストを追加します。

やっている内容は…

1:全ての発信先の場合にCallerID(発信者番号)を発信先に書き換え。

2:HylaFaxの内線番号に電話を転送

3:通話が終了したら電話を切る

これだけです!

そしてFreePBXに戻ってアナログFAX機用に用意した内線番号の設定でContextを今用意した「fax-context」に変更します!

 

ここまで出来たら試しにアナログFAXから適当にFAXを送って見ましょう。

どの番号にかけてもHylaFaxが対応して、設定してあるメールアドレスにメールが届くはずです。

 

このままではメールが自分のところに届くだけなので続いてHylaFaxの設定をいじります。

デフォルトの設定のままだとiaxmodemからHylaFaxにCallerIDが引き渡されて居ないのでここを編集します。

nano /etc/hylafax/config.ttyI内線番号

ModemResetCmds: AT+VCID=1 # enables CallID display
Class1AdaptRecvCmd: AT+FAR=1
Class1TMConnectDelay: 400 # counteract quick CONNECT response
CallIDPattern: “NMBR="
CallIDPattern: “NAME="
CallIDPattern: “ANID="
CallIDPattern: “NDID="

以上を設定ファイルに追記して保存します。

これでCallerIDを受け取れるようになったと思うんで、アナログFAX機から適当な番号に送信テストをしてみます。

届いたメールのCallID1のところにダイヤルした電話番号が表示されていれば設定OKです!

あとは、以前に作ったMail to Faxの設定に合わせてメールのテンプレートを編集します。

nano /etc/hylafax/templates/en/faxrcvd-notify-success.txt

From: HylaFAX Agent <$FROMADDR>
To: $TOADDR
Subject: $CALLID1
Content-type: text/plain; charset=us-ascii
Content-Transfer-Encoding: Quoted-Printable

$FILE (ftp://$HOSTNAME:$PORT/$FILE):
Sender: $SENDER
Pages: $PAGES
Quality: $QUALITY
Size: $PAGE
Received: $RECEIVED
Time To Receive: $TIMETORECV
Signal Rate: $SIGNALRATE
Data Format: $DATAFORMAT
Error Correct: $ERRCORRECT
CallID1: $CALLID1
CallID2: $CALLID2
Received On: $DEVICE
CommID: $COMMID (ftp://$HOSTNAME:$PORT/log/c$COMMID)

自分のMail to FaxはメールのタイトルからFaxの送付先を選択しているので「Subject:」のところをCALLID1に変更しています。

あとは/etc/hylafax/FaxDispatchに設定されているメールアドレスをMail to Faxに使用しているメールアドレスに書き換えれば完成です!

 

ここまで出来ればFaxのリレー送信は完了しているのでとりあえずはここまでで!

今のままだとタグラインがアナログFax機から印字されたのとHylaFaxで書き換えられたのの2回印字されるので汚く表示されてしまう事があったり、画質などの設定等が受け継がれないなどの問題もあるので、また次回にでもそこら辺の対策をします!