專利名稱:Pcs短消息系統(tǒng)發(fā)送短消息的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動通訊的短消息領(lǐng)域,尤其涉及PCS短消息系統(tǒng)對于超長短消息的發(fā)送。
背景技術(shù):
隨著PCS的廣泛應(yīng)用,PCS的短消息也得到越來越廣泛的應(yīng)用。PCS的短消息系統(tǒng)的組成如圖1所示,短信系統(tǒng)一般由短消息中心和外部短消息實體(ESME)兩大部分組成,短消息中心分為業(yè)務(wù)處理中心模塊、操作維護(hù)模塊(OMM)、計費模塊(BM)和代理模塊(SMPP)組成,負(fù)責(zé)短消息的存儲轉(zhuǎn)發(fā)工作。外部短消息實體ESME通過SMPP協(xié)議經(jīng)由SMPP Agent接入短信中心,提供各種擴(kuò)展業(yè)務(wù)。
隨著業(yè)務(wù)的擴(kuò)展和多樣化,運(yùn)營商會提供各種各樣的業(yè)務(wù)供用戶選擇使用,而這些業(yè)務(wù)均需通過外部短信實體ESME與PCS短信中心相連,以短信的形式向用戶提供。短信實體和短信中心通過SMPP協(xié)議進(jìn)行通訊,短信中心對這些外部消息實體提交的消息進(jìn)行存儲和轉(zhuǎn)發(fā),將這些消息發(fā)送到終端用戶。由于目前PCS網(wǎng)絡(luò)的空中接口的限制,一條短消息的內(nèi)容最長只能是116個字節(jié)也就是最多58個漢字或者116個英文字符,而實際的應(yīng)用中這些外部消息實體發(fā)送的消息往往超過這個限制,最多的時候可以達(dá)到254個字節(jié),短信中心對于這種超長的消息就不能簡單的進(jìn)行下發(fā),而需要進(jìn)行消息拆包后才能下發(fā),否則終端用戶收到的消息就會不完整。對于長消息的拆分,有幾個難點首先是拆分后的消息用戶終端能夠正確的進(jìn)行顯示,沒有亂碼的現(xiàn)象;二是拆分后的消息應(yīng)該按照先后順序被用戶接收;三是長消息拆分后只能按照一條普通短信的資費來進(jìn)行收費,并且要在用戶已經(jīng)成功接收到所有的消息后才能計費。由于這三個條件使得長消息的發(fā)送在實現(xiàn)上有一定的難度。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是針對現(xiàn)有技術(shù)存在的缺陷,提供一種新的PCS短消息系統(tǒng)中對于超長消息進(jìn)行發(fā)送的一種方法。
本發(fā)明的技術(shù)方案為短消息中心接收短消息實體發(fā)送的短消息后,給指定的用戶發(fā)送,其特征在于,在發(fā)送前對短消息是否是超長短消息進(jìn)行判斷;若否,直接發(fā)送;若是,將超長短消息整段存放在數(shù)據(jù)庫中,從起始位置拆分出一段發(fā)送;然后對剩下部分是否是超長短消息進(jìn)行判斷,若否,直接發(fā)送;若是,再拆出一段發(fā)送,直到發(fā)送完畢。
所述拆分,對于不同的編碼類型的消息體,按照不同方式拆分。如果短消息都是單字節(jié)編碼,可以直接拆分而不必進(jìn)行掃描,用掃描的方式也可。如果短消息的編碼是中文編碼,那么要用掃描的方式,在空中接口允許的短消息內(nèi)容的最大長度范圍內(nèi),記錄單字節(jié)編碼的字符(如英文、數(shù)字等)個數(shù),根據(jù)單字節(jié)字符數(shù)的奇偶性來決定本次發(fā)送的消息段的長度,如果是空中接口允許的最大長度-1還是就是空中接口允許的最大長度,從而保證不會出現(xiàn)亂碼。
在本發(fā)明中,將每次拆分下的短消息段的起始偏移量和長度記錄下來,后一段的起始偏移量等于上一段的起始偏移量加上前一段的長度,最后一段的起始偏移量加上長度等于整個短消息的長度。
本發(fā)明的技術(shù)方案可以是短消息中心接收短消息實體發(fā)送的短消息后,給指定的用戶發(fā)送,其特征在于,在發(fā)送前對短消息是否是超長短消息進(jìn)行判斷;若否,直接發(fā)送;若是,將超長短消息整段存放在數(shù)據(jù)庫中并用掃描的方式拆分;對拆分成的短消息段,用每一段的起始偏移量和長度來標(biāo)記,后一段的起始偏移量的值為前一段的起始偏移量加上前一段的長度;然后按拆分后的消息段逐段發(fā)送。
本發(fā)明技術(shù)方案中的計費,是在各消息段全部發(fā)送完畢后,才進(jìn)行計費等后續(xù)處理。
采用本發(fā)明技術(shù)方案,并沒有增加短消息中心數(shù)據(jù)庫方面存儲短消息的處理,對于短消息存儲而言還只是一條短消息,而且對長消息的掃描也最多只需要進(jìn)行3次掃描,提高了短信中心的處理效率,也保證了系統(tǒng)的可靠性和穩(wěn)定性。尤為關(guān)鍵的是,這種拆分方法對于網(wǎng)絡(luò)和手機(jī)終端沒有額外的要求,由短消息中心就完全能夠保證長短消息的正確拆分。
圖1示出了PCS短消息系統(tǒng)的組成;圖2示出了短信中心發(fā)送長消息的流程圖;圖3示出了長消息沒有拆分前數(shù)據(jù)庫中記錄的情況;圖4示出了長消息拆分后發(fā)送第一段消息時數(shù)據(jù)庫中記錄的情況;圖5示出了長消息的第一段發(fā)送成功后,進(jìn)行第二段消息拆分時數(shù)據(jù)庫中記錄的情況;圖6示出了發(fā)送長消息最后一段消息時數(shù)據(jù)庫中記錄的情況。
具體實施例方式
在短信中心原有的存儲短消息信息的基礎(chǔ)上增加長消息的兩個屬性項當(dāng)前發(fā)送的消息段的長度(cur_UDLen)和當(dāng)前發(fā)送消息的起始偏移量(cur_UDOffset),增加這兩個屬性項可以在短消息系統(tǒng)中將長消息整段存放在數(shù)據(jù)庫中,僅根據(jù)偏移量和當(dāng)前消息的長度就可以獲取當(dāng)前要發(fā)送的消息內(nèi)容,在消息發(fā)送失敗的情況下進(jìn)行重試時可以不必要對整個消息再次進(jìn)行掃描就可以獲取要發(fā)送的消息內(nèi)容和長度;拆分后的消息的發(fā)送順序也由這兩個屬性項來保證,只有當(dāng)前一段消息正確被用戶接收到之后,才會進(jìn)行下一段消息的發(fā)送;當(dāng)所有的消息段都被用戶成功接收后,短信中心才會進(jìn)行計費,并且只按照一條消息的費用來進(jìn)行收取。如果在發(fā)送的過程中,某一段消息發(fā)送永久失敗了,那么后續(xù)的消息段不再進(jìn)行發(fā)送,并且短信中心不會對這條長消息收取費用,因為用戶并沒有完整的收到所有的消息。
由于進(jìn)行拆分時的單段長度和實際的空中接口允許傳送的最大消息長度密切相關(guān),下面的描述以空中接口是116字節(jié)進(jìn)行。
本發(fā)明的一種實施方式是當(dāng)要發(fā)送的新的一段消息的長度超長時,從當(dāng)前的短消息偏移量開始往后掃描。由于消息體中存在單字節(jié)和雙字節(jié)編碼的字符,因此進(jìn)行掃描是為了保證發(fā)送的消息段中沒有亂碼存在。掃描的原則是在空中接口允許的短消息內(nèi)容的最大長度(目前是116個字節(jié))范圍內(nèi),記錄單字節(jié)編碼的字符的個數(shù),根據(jù)單字節(jié)編碼的字符數(shù)的奇偶性來決定本次發(fā)送的消息段的長度是空中接口允許的最大長度-1還是就是空中接口允許的最大長度。
當(dāng)前發(fā)送的消息段的長度(cur_UDLen)和當(dāng)前發(fā)送消息的起始偏移量(cur_UDOffset)這兩個屬性的值記錄在短信中心的數(shù)據(jù)庫中,當(dāng)短信中心收到終呼消息的響應(yīng)后,根據(jù)這兩個值就可以知道當(dāng)前發(fā)送的消息是哪一段的消息,并且根據(jù)終呼消息響應(yīng)中的尋呼結(jié)果來判斷這段消息是否已經(jīng)被用戶接受。如果用戶已經(jīng)收到這段消息,那么短信中心修改這兩個屬性值,然后從改后的當(dāng)前發(fā)送消息的起始偏移量(cur_UDOffset)開始新的一段消息的掃描和發(fā)送,同時記錄本次發(fā)送消息段的長度(ur_UDLen)。
本發(fā)明的另一種實施方式是用掃描的方式先將超長短消息拆分,然后逐段發(fā)送。給每一消息段的也用起始偏移量和長度記錄。
下面將結(jié)合附圖,舉例說明本發(fā)明第一種實施方式。第二種實施方式除上述區(qū)別外,其他部分與第一種實施方式相同,不再詳細(xì)描述。
目前的超長消息都是從外部消息實體發(fā)送到短信中心的,如圖2所示,短信中心收到外部消息實體提交的短消息,經(jīng)過鑒權(quán)等一系列的處理后,給消息中指定的用戶發(fā)送該條消息。在進(jìn)行終呼之前,判斷該消息是否是超長消息,如果是則短信中心要進(jìn)行拆分,按順序分段發(fā)送消息,如果不超長的話就直接發(fā)送。具體的拆分方案如下假設(shè)短信中心收到一條長度為254個bytes的超長消息(254個bytes是smpp3.4協(xié)議中所定義的SUBMIT_SM所允許的最大消息體),那么短信中心對該條短信進(jìn)行下發(fā)的步驟如下第一步在短消息的數(shù)據(jù)庫中保存好該條短消息,其中UDLen記錄短消息的長度,cur_UDOffset和cur_UDLen均為0,這是拆分前的初始狀態(tài),參見圖3;第二步進(jìn)行第一段消息的拆分,此時從當(dāng)前的短消息偏移量cur_UDOffset處開始對短消息進(jìn)行掃描,獲取此次下發(fā)的消息長度。在cur_UDLen中記錄此次下發(fā)的消息長度,如圖4所示,cur_Offset+cur_UDLen之間的消息就是本次下發(fā)的消息內(nèi)容,當(dāng)消息下發(fā)不成功需要進(jìn)行重試時,根據(jù)cur_offset和cur_UDLen就可以知道需要重試的消息是哪一段的消息第三步一段消息發(fā)送成功后,改變短消息的偏移量cur_UDOffset,當(dāng)前的cur_UDOffset為上次的偏移量往后挪上次發(fā)送的消息字節(jié)數(shù),即cur_UDOffset=cur_UDOffset+cur_UDLen,然后如果剩下的消息還需要進(jìn)行拆分的話,按照第二步的方法進(jìn)行消息掃描,確定本次下發(fā)的消息段,如圖5所示;第四步當(dāng)最后一段消息發(fā)送成功后,短消息表中的當(dāng)前偏移量cur_UDOffset和當(dāng)前消息長度cur_UDLen的情況如圖6所示,此時通過判斷cur_UDOffset和cur_UDLen之和是否等于短消息的長度UDLen就可以知道這條長消息是否所有的消息段都已經(jīng)發(fā)送成功,然后進(jìn)行計費等后續(xù)的處理;至此,一條長消息通發(fā)送已經(jīng)全部完畢,如果在發(fā)送消息段的過程中有任意一段消息發(fā)送永久失敗,那么后續(xù)的消息就不再進(jìn)行發(fā)送,也不進(jìn)行計費處理,所有長消息拆分發(fā)送時的順序保證和發(fā)送成功才計費的保證都依據(jù)(cur_UDOffset+cur_UDLen)==UDLen這個等式是否成立。
綜上所述,采用本發(fā)明技術(shù)方案,只在數(shù)據(jù)庫中增加了兩個字段就可以非常簡單的實現(xiàn)PCSSC中對于長消息的處理問題,而且保證了短信中心的系統(tǒng)處理能力和效率。在G網(wǎng)和C網(wǎng)的短信系統(tǒng)中,還沒有處理長消息發(fā)送的能力,只是通過和ESME的協(xié)議規(guī)定不能發(fā)送超長消息到短信中心,因此如果需要的話,這個方明也可以在G網(wǎng)和C網(wǎng)中得到應(yīng)用。
權(quán)利要求
1.一種PCS短消息系統(tǒng)發(fā)送短消息的方法,短消息中心接收短消息實體發(fā)送的短消息后,給指定的用戶發(fā)送,其特征在于,在發(fā)送前對短消息是否是超長短消息進(jìn)行判斷;若否,直接發(fā)送;若是,將超長短消息整段存放在數(shù)據(jù)庫中,從起始位置拆分出一段發(fā)送;然后對剩下部分是否是超長短消息進(jìn)行判斷,若否,直接發(fā)送;若是,再拆出一段發(fā)送,直到發(fā)送完畢。
2.權(quán)利要求1所述的PCS短消息系統(tǒng)發(fā)送短消息的方法,其特征在于,所述拆分,對單字節(jié)編碼的短消息,直接拆分;對非單字節(jié)編碼的短消息用掃描的方式,在空中接口允許的短消息內(nèi)容的最大長度范圍內(nèi),記錄單字節(jié)編碼的字符的個數(shù),根據(jù)單字節(jié)編碼的字符數(shù)的奇偶性來決定本次發(fā)送的消息段的長度是空中接口允許的最大長度—1還是就是空中接口允許的最大長度。
3.權(quán)利要求1所述的PCS短消息系統(tǒng)發(fā)送短消息的方法,其特征在于,將每次拆分下的短消息段的起始偏移量和長度記錄下來,后一段的起始偏移量等于上一段的起始偏移量加上前一段的長度,最后一段的起始偏移量加上長度等于整個短消息的長度。
4.權(quán)利要求1至3任一權(quán)利要求所述的PCS短消息系統(tǒng)發(fā)送短消息的方法,其特征在于,在短消息發(fā)送完畢后,才進(jìn)行計費等后續(xù)處理。
5.一種PCS短消息系統(tǒng)發(fā)送短消息的方法,短消息中心接收短消息實體發(fā)送的短消息后,給指定的用戶發(fā)送,其特征在于,在發(fā)送前對短消息是否是超長短消息進(jìn)行判斷;若否,直接發(fā)送;若是,將超長短消息整段存放在數(shù)據(jù)庫中并用掃描的方式拆分;對拆分成的短消息段,用每一段的起始偏移量和長度來標(biāo)記,后一段的起始偏移量的值為前一段的起始偏移量加上前一段的長度;然后按拆分后的消息段逐段發(fā)送。
6.權(quán)利要求5所述的PCS短消息系統(tǒng)發(fā)送短消息的方法,其特征在于,各消息段全部發(fā)送完畢后,才進(jìn)行計費等后續(xù)處理。
全文摘要
一種PCS短消息系統(tǒng)發(fā)送短消息的方法,短消息中心接收短消息實體發(fā)送的短消息后,給指定的用戶發(fā)送,其特征在于,在發(fā)送前對短消息是否是超長短消息進(jìn)行判斷;若否,直接發(fā)送;若是,將超長短消息整段存放在數(shù)據(jù)庫中,從起始位置拆分出一段發(fā)送;然后對剩下部分是否是超長短消息進(jìn)行判斷,若否,直接發(fā)送;若是,再拆出一段發(fā)送,直到發(fā)送完畢。也可以在拆分后逐段發(fā)送。在各消息段全部發(fā)送完畢后,才進(jìn)行計費等后續(xù)處理。提高了短信中心的處理效率,也保證了系統(tǒng)的可靠性和穩(wěn)定性。尤為關(guān)鍵的是,這種拆分方法對于網(wǎng)絡(luò)和手機(jī)終端沒有額外的要求,由短消息中心就完全能夠保證長短消息的正確拆分。
文檔編號H04W4/14GK1571541SQ20041002702
公開日2005年1月26日 申請日期2004年4月22日 優(yōu)先權(quán)日2004年4月22日
發(fā)明者方煒, 戈敏霞 申請人:中興通訊股份有限公司