「Fax for Asterisk」の版間の差分
(→インストール) |
|||
(2人の利用者による、間の9版が非表示) | |||
3行目: | 3行目: | ||
Digium純正のAsterisk用FAXチャネル。<br> | Digium純正のAsterisk用FAXチャネル。<br> | ||
:http://www.digium.com/en/products/software/faxforasterisk.php<br> | :http://www.digium.com/en/products/software/faxforasterisk.php<br> | ||
− | 価格: Digium オンラインショップで $39/チャネル。ただし1chは無料。 | + | 価格: Digium オンラインショップで $39/チャネル。ただし1chは無料。<br> |
+ | <br> | ||
+ | '''注意:サポートされるのはAsterisk 12まで。Asterisk 13以降はspandspとres_fax_spandspを使用するようにとのこと。'''<br> | ||
==要件== | ==要件== | ||
Asterisk 1.4<br> | Asterisk 1.4<br> | ||
Asterisk 1.6.(0,1,2)<br> | Asterisk 1.6.(0,1,2)<br> | ||
Asterisk 1.8<br> | Asterisk 1.8<br> | ||
+ | Asterisk 10<br> | ||
+ | Asterisk 11<br> | ||
+ | Asterisk 12<br> | ||
+ | :Asterisk 1.8.4以降はそれまでのモジュールは使えないので、1.8.4以降用のモジュールをインストールしてください。Asterisk本体を1.8.4以前のバージョンからアップグレードする場合には要注意です。 | ||
+ | |||
==購入== | ==購入== | ||
エンドユーザの場合には、Digiumのオンラインショップで購入します。<br> | エンドユーザの場合には、Digiumのオンラインショップで購入します。<br> | ||
25行目: | 32行目: | ||
インストールは基本的にこのモジュールを/usr/lib/asterisk/modulesへコピーするだけです。<br> | インストールは基本的にこのモジュールを/usr/lib/asterisk/modulesへコピーするだけです。<br> | ||
コピーしたならばAsteriskを再起動するか、module load res_fax.so(またはres_fax_digium.so)を実行することでFAXが使用可能になります。<br> | コピーしたならばAsteriskを再起動するか、module load res_fax.so(またはres_fax_digium.so)を実行することでFAXが使用可能になります。<br> | ||
+ | ====エラーが出る場合の対処==== | ||
+ | loader.c: Error loading module 'res_fax_digium.so': /usr/lib/asterisk/modules/res_fax_digium.so: undefined symbol: ast_fax_tech_register | ||
+ | このエラーが出て、FAXモジュールが起動できない場合には、モジュールをインストールした後に、make clean、make でコンパイルしなおすとなおります。 | ||
+ | |||
+ | ==使用例== | ||
+ | ===受信したFAXをメールで送る=== | ||
+ | Fax for Asteriskは基本的にSendFAX()とReceiveFAX()のアプリケーションが提供されるだけなので、あとはexten内で記述します。ここではAsteriskでFAXを受信し、そのFAXをメールで送る例を記述してみます。<br> | ||
+ | 受信したFAXはTIFFで保存されますので、これをPDF化してメールで送付するスクリプトを記述します。 | ||
+ | *受信処理 | ||
+ | ひかり電話ホーム(RT-200NEの場合)で、複数番号を契約しており、FAX番号を専用で持っている場合には着信番号別に処理を分岐します。 | ||
+ | [hikari-in] | ||
+ | |||
+ | exten => s,1,Set(DESTNUM=${SIP_HEADER(To)}) | ||
+ | exten => s,n,NoOp(${DESTNUM}) | ||
+ | exten => s,n,Set(DESTNUM=${DESTNUM:1:10}) | ||
+ | exten => s,n,NoOp(${DESTNUM}) | ||
+ | exten => s,n,Goto(${DESTNUM},1) | ||
+ | |||
+ | exten => _03xxxxyyya,1,Dial(SIP/201) <--音声の着信の場合普通にSIP端末を呼びます | ||
+ | |||
+ | exten => _03xxxxyyyb,1,Goto(faxrec,receive,1) <--FAXの着信の場合受信処理に飛びます | ||
+ | |||
+ | 受信処理は以下のようなコンテキストを記述します | ||
+ | |||
+ | [faxrec] | ||
+ | exten => receive,1,NoOp(**** SETTING FAXOPT ****) | ||
+ | exten => receive,n,Set(FAXOPT(ecm)=yes) | ||
+ | exten => receive,n,Set(FAXOPT(headerinfo)=NAME HERE) | ||
+ | exten => receive,n,Set(FAXOPT(localstationid)=813xxxxyyyb) | ||
+ | exten => receive,n,Set(FAXOPT(maxrate)=14400) | ||
+ | exten => receive,n,Set(FAXOPT(minrate)=2400) | ||
+ | exten => receive,n,Set(FAXFILE=${EPOCH}.tif) <--ファイル名はUNIXTIME | ||
+ | exten => receive,n,NoOp(**** RECEIVING FAX : ${FAXFILE} ****) | ||
+ | exten => receive,n,ReceiveFAX(/var/spool/asterisk/faxin/${FAXFILE}) <--受信処理 | ||
+ | |||
+ | exten => h,1,System(/var/lib/asterisk/fax2mail.sh ${FAXFILE}) <--FAXをメールにするスクリプト | ||
+ | exten => h,n,Hangup | ||
+ | |||
+ | シェルスクリプトは以下のように記述します | ||
+ | |||
+ | #!/bin/sh | ||
+ | |||
+ | SENDTO="someone@somedomain.tld" | ||
+ | FROMADDR="asterisk@somedomain.tld" | ||
+ | DATE=`date` | ||
+ | SUBJECT="Fax recieved at $DATE" | ||
+ | SENDMAIL="sendmail -t" | ||
+ | |||
+ | FAXDIR=/var/spool/asterisk/faxin | ||
+ | PDFDIR=/var/spool/asterisk/faxpdf | ||
+ | UUE=uuencode | ||
+ | TIF=$FAXDIR/$1 | ||
+ | PDF=`echo $1|sed s/\.tif/\.pdf/` | ||
+ | PDF=$PDFDIR/$PDF | ||
+ | TMP=`echo $1|sed s/\.tif/\.tmp/` | ||
+ | TMP=$FAXDIR/$TMP | ||
+ | |||
+ | if [ -f $TIF ] ; then | ||
+ | #Convert tif to pdf | ||
+ | tiff2pdf -o$PDF $TIF | ||
+ | |||
+ | #build envelop | ||
+ | echo "From: $FROMADDR" > $TMP | ||
+ | echo "To: $SENDTO" >> $TMP | ||
+ | echo "Subject: $SUBJECT" >> $TMP | ||
+ | echo "" >> $TMP | ||
+ | |||
+ | #Encode pdf and send it to recipent | ||
+ | uuencode $PDF < $PDF >> $TMP | ||
+ | cat $TMP | $SENDMAIL | ||
+ | |||
+ | rm -f $TMP | ||
+ | else | ||
+ | exit | ||
+ | fi | ||
+ | |||
+ | このような感じで処理すればFAX(TIFF)をPDF化してメールで送ることができます。 | ||
+ | |||
+ | ===FAXを送る=== | ||
+ | |||
+ | FAX送信はDigiumのPDFマニュアルに従って、extensions.confに[fax-tx]のコンテクストを作って、以下のようなコマンドをCLIで打てば予め作っておいたTIFFファイルを送信できます。 | ||
+ | |||
+ | CLI> originate DAHDI/4/03xxxxxxx extension send@fax-tx |
2016年3月13日 (日) 23:25時点における最新版
Fax for Asterisk
Digium純正のAsterisk用FAXチャネル。
価格: Digium オンラインショップで $39/チャネル。ただし1chは無料。
注意:サポートされるのはAsterisk 12まで。Asterisk 13以降はspandspとres_fax_spandspを使用するようにとのこと。
要件
Asterisk 1.4
Asterisk 1.6.(0,1,2)
Asterisk 1.8
Asterisk 10
Asterisk 11
Asterisk 12
- Asterisk 1.8.4以降はそれまでのモジュールは使えないので、1.8.4以降用のモジュールをインストールしてください。Asterisk本体を1.8.4以前のバージョンからアップグレードする場合には要注意です。
購入
エンドユーザの場合には、Digiumのオンラインショップで購入します。
購入すると、ダウンロードURLと登録キーが送られてきます。1chのみならば無料なので無料版を利用する場合には、無料版を「購入」します。価格は$0なので、そのままチェックアウトすればライセンスキーが送られてきますので、そのキーを使って登録します。
なお、Digiumの他のチャネル系プロダクトと同様に、このチャネル数は回線数ではなく同一のAsterisk内で同時に使用するチャネル数のことです。
インストール
プロダクトの登録
まず、登録用のソフトregisterをダウンロードします。登録は使用するマシンのNICに基づいて行われるため、使用するAsteriskをインストールしたマシン上で行います。Linuxの場合には、wgetなどで入手するかと思いますが、その際にはchmod +x registerして./registerを実行してください。この時に、購入時に送られてきたキーが必要となります。
Digiumの他のプロダクトもそうですが、ライセンスキーは /var/lib/asterisk/licenses/ に保存されます。このファイルは
- F4A-xxxxxxxxxxxx.lic
のようなファイル名で、F4Aがプロダクト(Fax4Asterisk)です。
このファイルは大切なライセンスファイルなので、バックアップしておくことをお勧めします。
インストール
まず最初にベンチマーク・ソフトをダウンロードし実行します。これにより、そのシステムに最適な選択肢が表示されますので、結果にしたがって本体のダウンロードを行います。
ドキュメントを注意深く読み、必要なモジュールをダウンロードします。32/64bit版の他、CPUのアーキテクチャによってもモジュールが異なるので注意してください。一般的にはres_fax.soかres_fax_digium.soのどちらかのファイル名になります。バイナリ配布ですので32/64bit版またはアーキテクチャを間違えると正しく動作しないので注意してください。
インストールは基本的にこのモジュールを/usr/lib/asterisk/modulesへコピーするだけです。
コピーしたならばAsteriskを再起動するか、module load res_fax.so(またはres_fax_digium.so)を実行することでFAXが使用可能になります。
エラーが出る場合の対処
loader.c: Error loading module 'res_fax_digium.so': /usr/lib/asterisk/modules/res_fax_digium.so: undefined symbol: ast_fax_tech_register
このエラーが出て、FAXモジュールが起動できない場合には、モジュールをインストールした後に、make clean、make でコンパイルしなおすとなおります。
使用例
受信したFAXをメールで送る
Fax for Asteriskは基本的にSendFAX()とReceiveFAX()のアプリケーションが提供されるだけなので、あとはexten内で記述します。ここではAsteriskでFAXを受信し、そのFAXをメールで送る例を記述してみます。
受信したFAXはTIFFで保存されますので、これをPDF化してメールで送付するスクリプトを記述します。
- 受信処理
ひかり電話ホーム(RT-200NEの場合)で、複数番号を契約しており、FAX番号を専用で持っている場合には着信番号別に処理を分岐します。
[hikari-in] exten => s,1,Set(DESTNUM=${SIP_HEADER(To)}) exten => s,n,NoOp(${DESTNUM}) exten => s,n,Set(DESTNUM=${DESTNUM:1:10}) exten => s,n,NoOp(${DESTNUM}) exten => s,n,Goto(${DESTNUM},1) exten => _03xxxxyyya,1,Dial(SIP/201) <--音声の着信の場合普通にSIP端末を呼びます exten => _03xxxxyyyb,1,Goto(faxrec,receive,1) <--FAXの着信の場合受信処理に飛びます
受信処理は以下のようなコンテキストを記述します
[faxrec] exten => receive,1,NoOp(**** SETTING FAXOPT ****) exten => receive,n,Set(FAXOPT(ecm)=yes) exten => receive,n,Set(FAXOPT(headerinfo)=NAME HERE) exten => receive,n,Set(FAXOPT(localstationid)=813xxxxyyyb) exten => receive,n,Set(FAXOPT(maxrate)=14400) exten => receive,n,Set(FAXOPT(minrate)=2400) exten => receive,n,Set(FAXFILE=${EPOCH}.tif) <--ファイル名はUNIXTIME exten => receive,n,NoOp(**** RECEIVING FAX : ${FAXFILE} ****) exten => receive,n,ReceiveFAX(/var/spool/asterisk/faxin/${FAXFILE}) <--受信処理 exten => h,1,System(/var/lib/asterisk/fax2mail.sh ${FAXFILE}) <--FAXをメールにするスクリプト exten => h,n,Hangup
シェルスクリプトは以下のように記述します
#!/bin/sh SENDTO="someone@somedomain.tld" FROMADDR="asterisk@somedomain.tld" DATE=`date` SUBJECT="Fax recieved at $DATE" SENDMAIL="sendmail -t" FAXDIR=/var/spool/asterisk/faxin PDFDIR=/var/spool/asterisk/faxpdf UUE=uuencode TIF=$FAXDIR/$1 PDF=`echo $1|sed s/\.tif/\.pdf/` PDF=$PDFDIR/$PDF TMP=`echo $1|sed s/\.tif/\.tmp/` TMP=$FAXDIR/$TMP if [ -f $TIF ] ; then #Convert tif to pdf tiff2pdf -o$PDF $TIF #build envelop echo "From: $FROMADDR" > $TMP echo "To: $SENDTO" >> $TMP echo "Subject: $SUBJECT" >> $TMP echo "" >> $TMP #Encode pdf and send it to recipent uuencode $PDF < $PDF >> $TMP cat $TMP | $SENDMAIL rm -f $TMP else exit fi
このような感じで処理すればFAX(TIFF)をPDF化してメールで送ることができます。
FAXを送る
FAX送信はDigiumのPDFマニュアルに従って、extensions.confに[fax-tx]のコンテクストを作って、以下のようなコマンドをCLIで打てば予め作っておいたTIFFファイルを送信できます。
CLI> originate DAHDI/4/03xxxxxxx extension send@fax-tx