コストを抑えるために、IT技術を日々高めている、ユゲタです。
「FAX送信」とかけまして、
「男の人が少し強めの女性からもらったバレンタインチョコ」と、ときます。
そのココロは・・・
必ず受け取らなければいけないでしょう。
Faxの必要性
とあるリアル店舗に対して、FAXを送信するというシステム構築を頼まれて、これまで扱ったことのなかったFaxについて、徹底的に調査してみました。
基本的には、手元に電話回線とFAX機器があれば、店舗へのFAX番号にデータを送りつければいいだけなのですが、インターネットサーバーからそうしたデータを送る事になるととたんに難しくなる。
ネットでFaxを検索すると、かならず「eFax」というサービスがGoogle広告に引っかかりますが、このサービスを調べてみると、メールに添付したpdfや画像などを任意のFAX番号に送信することができるようだ。
また、KDDIが提供している、Twillioというサービスでは、APIが用意されていて便利にシステム連携ができるということを見かけた。
他にもインターネットFAXサービスというのが多数あり、どれも似たようなことはできる感じはあるのだが、当たり前のようにだいたい月額費が1500円ほどかかる。
せっかく事務所にAsteriskサーバーが設置されていて、VOIP環境が整っているので、それを使ってFAXの回線費(電話代)だけで行えないかと1週間ほど設定をしてみて、ようやくテスト送信することができたので、とりあえずFax送信の枚数が少ないのであれば、これで運用しようと行き追加のである。
Asteriskの設定ファイル
とりあえず、備忘録も兼ねて設定ファイルを下記に掲載しておきます。
下記設定にてひかり電話のルータでの設定は済ませてある状態としています。
[general]
maxexpiry=3600
defaultexpiry=3600
context=default
bindport=5060
bindaddr=0.0.0.0
srvlookup=yes
allowguest=no
disallow=all
allow=ulaw
allow=alaw
allow=gsm
language=ja
sendrpid=pai
qualify=2000
nat=force_rport,comedia
localnet=192.168.1.0/24
hikarihgw=%ひかりルーターのIP
tcpenable=yes
transport=udp,tcp
register => 4:pass:0004@mynt/200
[mynt]
type=friend
secret=pass
username=0004
defaultuser=0004
fromuser=4
host=%ひかり電話ルータのローカルIP
fromdomain=%ひかり電話ルータのローカルIP
context=default
insecure=invite,port
dtmfmode=inband
canreinvite=no
disallow=all
allowsubscribe=no
allow=ulaw
callgroup=1
picupgroup=1
faxdetect=yes
[201]; 内線201番の設定
type=friend
username=201
secret=pass
canreinvite=no
host=dynamic
callgroup=1
pickupgroup=1
[202]
type=friend
username=202
secret=pass
canreinvite=no
host=dynamic
callgroup=1
pickupgroup=1
[general]
writeprotect=no
priorityjumping=no
[globals]
MYNT=%会社電話
GROUP1=SIP/201&SIP/202
[default]
exten => _20Z,1,NoOp(内線呼出)
exten => _20Z,n,Dial(SIP/${EXTEN},60)
exten => _20Z,n,Hangup
exten => _0.,1,Set(CALLERID(num)=${MYNT})
exten => _0.,2,Set(CALLERID(name)=${MYNT})
exten => _0.,3,GotoIf($[${EXTEN:0:2} = 00]?international)
exten => _0.,n,Dial(SIP/${EXTEN}@mynt)
exten => _0.,n(international),Hangup()
[incoming]
exten => 200,1,NoOp(内線代表着信)
exten => 200,n,Dial(${GROUP1},60)
exten => 200,n,Hangup
[send-fax]
exten => send,1,NoOp(**** SENDING FAX ****)
same => n,SendFAX(${FAXFILE},d)
same => n,Wait(30)
same => n,Hangup()
Fax送信のポイントは画像変換にあり
Faxを送信する画像データを事前に作成しておきます。
今回はPDFファイルをtif画像に変換して、それを送信します。
$ gs -sDEVICE=tiffg3 -r204x196 -dNOPAUSE -dSAFER -dMaxStripSize=0 \ -sOutputFile=~/sample.tif PERSIZE=a4 ~/sample.pdf
> GPL Ghostscript 9.06 (2012-08-08)
> Copyright (C) 2012 Artifex Software, Inc. All rights reserved.
> This software comes with NO WARRANTY: see the file PUBLIC for details.
> Processing pages 1 through 1.
> Page 1
GS>exit;
次にFaxを送信するコールファイルを作成します。
Channel: SIP/%送信先の電話番号@mynt
CallerID: Asterisk
MaxRetries: 0
RetryTime: 60
WaitTime: 60
Context: send-fax
Extension: send
Set: FAXFILE=~/sample.tif
それを以下の階層にファイル移動をすると、自動的にFAX送信になります。
$ mv ~/fax.call /var/spool/asterisk/outgoing/
コールファイルは、/var/spool/asterisk/outgoing/に置くとすぐにfax送信処理が始まるので、必ず別フォルダで書き込んでから移動(またはコピー)するようにしましょう。
これで、無事にFax送信をすることが成功になりますが、画像変換で使ったGhostScriptコマンドが非常にややこしいツールだったので、ここの環境構築をしっかりしておく必要を感じました。
でも、これでAPIでも作成しておけば、インターネットFAXサービスがはじめられますね。
0 件のコメント:
コメントを投稿