📄 00000004.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: wxb1 (ben), 信区: Linux <BR>标 题: [5/8] 呼叫BBC暨主动传真服务 <BR>发信站: BBS 水木清华站 (Fri Jun 11 14:22:51 1999) <BR> <BR>以Linux实作 语音/传真/EMAIL/BBC 整合系统 <BR>5.呼叫BBC暨主动传真服务 <BR> <BR>呼叫BBC <BR> <BR> 目前许多ISP都有提供邮件来时,以BBC的方式通知客户的贴心服务(需 <BR>您BBC的厂商和该ISP有合作关系),此处呼叫BBC,事实上并非拨您BBC的号码, <BR>而是透过BBC厂商提供的网际网路传呼功能,进行呼叫动作,因此目前可传呼的对 <BR>象为中华电信、大众传呼等的客户,至於中华国际传呼虽也提供网上传呼,但我 <BR>并无密码,因此也呼叫无门!目前此系统可呼叫的号码及讯息如下: <BR> <BR>BBC 开头 有语音讯息 有传真 有Email to FAX <BR>0950 [您的代号] VOICE [您的代号] FAX [您的代号] EFAX <BR>0942 [您的代号] VOICE [您的代号] FAX [您的代号] EFAX <BR>0948 [您的代号] VOICE [您的代号] FAX [您的代号] EFAX <BR>095*(数字型不含0950) <BR> [您的代号] 55555 [您的代号] 333 [您的代号] 1333 <BR>060 [您的代号] 55555 [您的代号] 333 [您的代号] 1333 <BR>070 [您的代号] 55555 [您的代号] 333 [您的代号] 1333 <BR> <BR>注:中华电信需有HINET拨接密码,才可传呼,且可送简讯至大哥大手机,其BBC <BR>呼叫每次一元,大哥大为2.5元! <BR> <BR>呼叫BBC的bash script副程式如下: <BR> <BR>CallBBC() <BR>{ <BR> # 抓取BBC号码 <BR> read userReg < ${MAINPATH}conf/$1.reg <BR> bbc=`$ECHO $userReg | cut -d"," -f8,8 -s` <BR> if [ $bbc ]; then <BR> # 写入记录档 <BR> logstr=`$DATE "+%D %T,User:$1,$bbc"` <BR> $ECHO $logstr >> $BBCLOGFILE <BR> # 执行BBC呼叫(bbc.pl PERL语言) <BR> ${MAINPATH}bin/bbc.pl "$bbc" "$1+$2" <BR> fi <BR>} <BR> <BR>在前几篇中未填入的 ----------------- Call BBC-------------------- 段落 <BR>加入以下的呼叫: <BR> <BR>CallBBC $UserID "VOICE" // 语音段落 <BR> <BR>CallBBC $UserID "FAX" // 传真段落 <BR> <BR>CallBBC副程式中的bbc.pl 主要的工作是根据BBC号码分辨其是哪一家的BBC,是 <BR>文字形或数字形的BBC,再决定如何呼叫! <BR> <BR>#!/usr/bin/perl <BR># bbc.pl <BR> <BR>$PATH="/user/home/message/bin/"; <BR>#================================================ <BR>$number=$ARGV[0]; <BR>$message=$ARGV[1]; <BR>$ok=0; <BR>if ($number=~/^0948(.+)/) { <BR> # 大众 0948 <BR> system("${PATH}fitelbbc.pl $number $message"); <BR>}elsif ($number=~/^0950(.+)/) { <BR> # Hiair 中英文 <BR> system("${PATH}hinetbbc.pl $number $message"); <BR>}elsif ($number=~/^0942(.+)/) { <BR> # Hiair 中英文 <BR> system("${PATH}hinetbbc.pl $number $message"); <BR>}elsif ($number=~/^095(.+)/) { <BR> $ok=1; <BR>}elsif ($number=~/^060(.+)/) { <BR> $ok=1; <BR>}elsif ($number=~/^070(.+)/) { <BR> $ok=1; <BR>} <BR> <BR># ok=1 为数字形BBC,将讯息转为数字 <BR>if ($ok==1) { <BR> $message =~ s/VOICE/55555/g; <BR> $message =~ s/EFAX/1333/g; <BR> $message =~ s/FAX/333/g; <BR> # Hiair 数字 <BR> system("${PATH}hinetbbc.pl $number $message"); <BR>} <BR> <BR>fitelbbc.pl 与 hinetbbc.pl 都是先把要送过去的资料处理编排好後,再模拟浏 <BR>览器,利用HTTP POST Method的方式,将资料送出,若您不了解HTTP协定,可参 <BR>考相关资料,或是在Linux上架起 sniffit 软体,实际捕捉传送的DATA,再依样 <BR>画葫芦即可。以下为fitelbbc.pl原始码,hinetbbc.pl就省略了! <BR> <BR>#!/usr/bin/perl <BR># fitelbbc.pl <BR>$FILE="/tmp/fitelbbc.txt"; <BR>#================================================ <BR>$number=$ARGV[0]; <BR>$message=$ARGV[1]; <BR>($sec, $min, $hour, $day, $mon, $year) = localtime(time); <BR>$mon=$mon+1; <BR>$year=$year-11; <BR>if ($number=~/^0948(.+)/) { <BR> # 大众网上传呼时 "0948"不需敲入 <BR> $number=$1; <BR>} <BR># $query_str 是主要传过去的部分 <BR>$query_str="svc_no=$number&pwd_in=%ABP%BEP%B4%C1%B6%A1%A1A%A4%F0%BB%DD%BF%E9%A4J <BR>&i <BR>sp_code=1&s <BR>ender_name=+&reminder_option=OFF&year=$year&month=$mon&day=$day&hour=00&min=00&m <BR>essage=$messag <BR>e"; <BR>$query_len=length($query_str); <BR>#print "$query_len,$query_str\n"; <BR> <BR># 大众网站 <BR>$them='www.fitel.net.tw'; <BR>$port=80; <BR>$AF_INET=2; <BR>$SOCK_STREAM=1; <BR>$sockaddr='S n a4 x8'; <BR>($name,$aliases,$proto)=getprotobyname('tcp'); <BR>($name,$aliases,$port,$proto)=getservbyname($port,'tcp') unless $port=~/^\d+$/; <BR>($name,$aliases,$type,$len,$thataddr)=gethostbyname($them); <BR>$that=pack($sockaddr,$AF_INET,$port,$thataddr); <BR>if (socket(SOCK,$AF_INET,$SOCK_STREAM,$proto)) { <BR># print "socket OK!\n"; <BR>} <BR>else {die $!;} <BR>if (connect(SOCK,$that)) { <BR># print "connect OK!\n"; <BR>} <BR>else {dis $!;} <BR>select(SOCK); $|=1; select(STDOUT); <BR> <BR>print SOCK <<SEND_END; <BR>POST /cgi-bin/internetpage.exe HTTP/1.0 <BR>Referer: <A HREF="http://www.fitel.net.tw/html/svc03.htm">http://www.fitel.net.tw/html/svc03.htm</A> <BR>Connection: Keep-Alive <BR>User-Agent: Mozilla/4.03 [en] (WinNT; I) <BR>Host: www.fitel.net.tw <BR>Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* <BR>Accept-Language: en <BR>Accept-Charset: iso-8859-1,*,utf-8 <BR>Content-type: application/x-www-form-urlencoded <BR>Content-length: $query_len <BR> <BR>$query_str <BR>SEND_END <BR> <BR># 接收POST之後回传的DATA(并未利用) <BR>open (MYFILE,"> $FILE") || die "Can't open file:$!\n"; <BR>do { <BR> $recv=<SOCK>; <BR># print "$recv"; <BR> print MYFILE "$recv"; <BR>} while( length($recv)>0); <BR>close(SOCK); <BR>close (MYFILE); <BR> <BR>传真额外服务 <BR> <BR> 此系统所谓的传真额外服务,操作方式为:当输入[代号],听完"留言请 <BR>按「1」,送传真请按「2」……"後,尚可按「5」,仍後会听到"请输入服务代码 <BR>",目前可输入以下代码收取传真: <BR>10:统一发票号码 、 11:今日天气 、 12:明日天气 、 13:一周天气 、 14:卫星 <BR>云图 <BR> <BR> 其作法也是在网际网路上,定时抓取以上的相关资料(仍是用HTTP), <BR>转换成传真格式,等待客户拨接进来後传送出去。 <BR> 统一发票在网路上许多地方都有提供,比较讨厌的是其格式皆为HTML, <BR>需加以转换後(去除其中TAG),变为纯文字後,再转为传真格式;其余几项皆为 <BR>中央气象局的资料,其本身就有纯文字的档案,故不需再做处理;卫星云图是GIF <BR>的格式,仍须用到前篇所述的PBMPLUS工具软体做转换: <BR>GIF -(giftoppm)a PPM -(ppmtopgm)a PGM -(pgmtopbm)a PBM -(efix)aTIFFG3 <BR> <BR>giftoppm $GIFFILE | ppmtopgm | pgmtopbm | efix -i pbm -o tiffg3 -d 0.5,0.5 -s 2, <BR>1 -p 4,6 -n $FAXOUT4 <BR> <BR>以下为统一发票的抓取范例,天气部分因为颇为类似就省略了! <BR> <BR>#!/usr/bin/perl <BR>$FILE1='/tmp/ultra1.htm'; <BR>$FILE2='/tmp/ultra1.txt'; <BR>$FAXOUT='/user/home/message/fax/ultra/ultra1.%03d'; <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -