• 沒有找到結果。

SMS功能介紹

第五章 專題內容

5.1 SMS功能介紹

SMS 是"Short Message Service"的縮寫,也就是所謂的行動簡 訊服務。可運用行動電話的功能,透過簡短的訊息傳送文字、

圖形或聲音即時傳遞到他人的手機上。利用數位化文字可大量 傳播、精確說明、易於保存的種種特性,做到「即時」、「大 量」、「有效」的對目標群傳遞訊息

簡 訊 傳 輸 服務 的介 紹

(一 ) 手 機 簡 訊 的基 本架構

簡 單來說 ,手 機 簡 訊傳輸服 務就 是 利 用 手 機 來 傳 送 或 接 收 簡 短 的 文 字訊 息 ,就好像 替手 機 加 上 雙 向 呼 叫 器 的功 能, 使 用 者 可 以藉 由簡訊的 傳輸 技 術 達 到 簡 短 訊 息 的 接 與 收 。而 因為 簡 訊 服務不需 要額 外 附 加 其 它 的 數 據 終 端 設 備 ,可 說是 目 前 行動電話 系統 中 最 簡 單 和 方 便 的 數據 通信 方 式。 依 據 GSM 系統的 規範,簡 訊 服 務 是 在 系 統 建 構 之 初就 具備 有 的 行動數據 傳輸 服 務 。 以 技 術 面 而 言 , 簡 訊 是 透 過 GSM 的 信號通道 (Signaling Channel)來 傳送 ,而 信號 通 道 主要 是用來傳 遞網 路 與 手 機 之 間 所 需 的控 制信 號 相 關 訊 息, 所以在簡 訊傳 送 過 程 中 , 並 不 會 干擾 語音 通 話 的 傳 送(利 用訊 務通 道 Traffic Channel 來

完成 ),更 不 會 干 擾訊 息接收,但 卻也限 制 每 次 傳 送 簡 訊

過 GSM 網路 的 簡 訊 傳輸 技術,發 送 給某 個 指 定 收 訊 用 戶。

根據 Mobile Lifestreams 的統 計,目 前 全 球 簡 訊 的 發 送 量中 ,約 有 90%是來 自 於 用戶間 的點 對 點 簡 訊 服 務 。 (二 ) 手 機 簡 訊 的內 容 格式

手 機 傳 送 簡訊 的內 容可為 文 字、 圖 形 與 鈴 聲 等 三 種 形 式,其 中 傳 送 文 字 簡 訊是最普 遍 且 限 制 最 低,目 前 GSM 手機 都有支 援 文 字簡 訊 傳輸功能 。至 於 傳 送 鈴 聲 或 圖 形, 就受 到 手 機 支 援軟 體的 限制 。由於 圖 形 、 鈴 聲 在 傳 送過 程中會 先 被 轉 化成 文字格 式 ,等 到 手 機 接 收 後 , 再 透過 手機 內 建 軟 體還 原 成圖形或 鈴聲 , 所 以 並 非 每 隻 手 機都 有支 援, 目 前 只有 部 份新款 手機 才 有 支 援 圖 形 、 鈴 聲, 而大 部 份 的 手 機品 牌也都 只 能自 家 互 傳 而 已 , 無 法 像文 字簡 訊 一 樣 ,可以 傳遍天下 。

(三 ) 手機 簡訊 的傳 輸介面

一 般 而言 ,除 了 可 直接在手 機操 作 來 發 送 簡 訊 外,

系統 業者為 了 減 低 手 機 輸入的不 便性 , 以 及 擴 大 簡 訊 的 使 用 族 群 ,簡 訊的發 送 端也可透 過應用 軟 體 開 發 商 的 網 頁介 面,在 電 腦 輸 入簡 訊,再經 由 Internet 來 發 送。 換 言 之 , 電 腦使 用者 可 利 用行動電 話系 統 業 者 所 指 定 的 ISP, 以網 頁介 面 方 式 來 發送 簡訊 給手 機 用 戶。

SMS 架構圖

圖 4

Gnokii 是 Linux 上免費的工具,使我們可以在 Linux 上驅動 Nokia 的手機。Gnokii 可以讓我們用電腦透過這個程式來控制手機傳送和 接收簡訊。

支援的手機:

Nokia

6110|6130|6150|6190|5110|5130|5190|3210|3310|3330|8210

Nokia 7110|6210|6250

Nokia 6310|6510|8310

AT capable phones

如何將 Gnokii 及 mail server 就結合

首先我們在系統中用 Shell 寫了一個程式,利用此程式每固定一 段時間就來判斷 Mail Server 中是否有使用者的新信件,假如判斷的 結果是"true",就會統計信件數和寄件者,然後就會啟動"gnokii",

發出一個 sms"簡訊"到使用者的手機上,通知使用者有新信件來了,

只要有新信再寄進來使用者的帳號,就會再發出一個新的 sms 簡訊。

5.1.1 如何把簡訊功能加入 Mail Server 手機與電腦的連結

用 RS232 的線將手機和電腦的 com port 作連接。

安裝控制手機的程式

先下載 mygnokii.tar.gz 這個套件,然後解壓縮和編譯

#tar xzvf mygnokii.tar.gz

#./configure

#make

編寫檢查新信件的程式

利用 Shell 寫一個檢查帳號的程式

下面的內容是檢查一個 tzj 的帳號的範例:

#!/bin/sh

cat /var/spool/mail/tzj | grep "Return-Path:" > /tmp/tzj.sms

//開啟在 var/spool/mail/tzj 的檔案,比對字串"Return-Path",並 將有此字串的那行輸出到 tmp/tzj.sms 檔案

num=`cat /tmp/tzj.sms | wc –l`

//計算/tmp/tzj.sms 檔案中字串的行數,並將值 assign 到 num num1=`cat /tmp/tzj.sms1 | wc -l`//計算 temp/tzj.sms 檔案中字 串的行數,並將值 assign 到 num

//初始化一個用來比較的檔案

if [ "$num" -eq 0 -o "$num" -lt "$num1" ] then

cat /tmp/tzj.sms > /tmp/tzj.sms1 //創出 temp/tzj.sms1 檔案 fi

echo You have $num new mail from $from > /tmp/tzj.sms.txt//

在/tmp/tzj.sms.txt 檔案中印出此行字

/usr/local/bin/gnokii --sendsms "+886936356462" <

/tmp/tzj.sms.txt//執行 gnokii 程式,送出簡訊

cat /tmp/tzj.sms > /tmp/tzj.sms1//將傳完簡訊的新信資料輸出到 tzj.sms1 檔案

fi

修改系統使它自動執行

1. 用 shell 寫一個程式計算某個帳號的新信件 2.再用 gnokii 來寄送 sms

3.利用 crontab 在一個固定時間來做以上二件事 在 crontab 中加入

*/5 * * * * root /etc/mail.sh>/dev/null 這一行是指每五分鐘跑一次程式

5.1.2 簡訊功能操作方法 手動傳 SMS

MyGnokii 程式的使用方法

gnokii --sendsms destination

[--smsc message_center_number | --smscno message_center_index]

[--long n] [-s] [-C n] [-8] [-v n] [-d]

[--enablevoice|--disablevoice|--enablefax|--disablefax|

--enableemail|--disableemail|--void] [--unicode] [--text SMS_text]

使用前最好先測試手機有沒有接上

#gnokii --monitor 這個指令來測試

例如:

#gnokii --sendsms "+886933397686" < file 其中 933397686 是目標電話去掉第一個數字 file 的內容是要傳送的息訊

自動執行

把 crontab 裡加入定時去執行我們自己寫的 shell 的程式

5.1.3 問題及解決辦法 手機的尋找

起初本來想要利用別人已架設好的 Server 來傳送簡訊,但是大部 份的 Server 不是在國外,不然就是要收費,所以決定自己架 Server 來傳送簡訊。一開始在找尋資料時,只知道”西門子”的手機比較容 易找到電腦與手機之間的傳輸線,但是”西門子”手機沒有提供在 LINUX 下的現成程式可以使用,只有提供 AT-COMMAND,於是老師就建 議我們既然都要自己利用 AT-COMMAND 來撰寫程式,可以考慮利用 MODEN 來傳送簡訊,這樣既省錢而且沒有手機電力不足的問題,但是 由於找不到利用 MODEN 傳送簡訊的相關資料,卻意外的到”NOKIA”

在 LINUX 下控制手機的原始碼,於是就決定採用這一套軟體和 NOKIA 的手機。

檢查程式的編寫

在/var/spool/mail 裡的帳號是建立過就會留下,只要有新的信

件寄到你的帳號會先存在/var/spool/mail 的帳號下只要你用任何一 個看信件的程式看完後,/var/spool/mail 裡的信會被存到你自已的 子目錄下的 mbox,這時這封信就是已讀過了,不會存在

/var/spool/mail 下,所以在/var/spool/mail 下的帳號是新信,

/home 下的帳號的 mbox 是舊信,maillog 是把所有資訊放在一起,

/var/spool/mail 是把 mail 的內容分別存在不同的帳號裡。所以我 們只要檢查/var/spool/mail 裡的帳號,然後再統計就可以當作簡訊 內容,後來看到到別人寫的檢查 CodeRed(紅色警戒病蟲)和 Nimda

(妠坦病蟲)的程式,就學習它用 shell 來寫檢查的程式。

相關文件