專利名稱:交互系統(tǒng)和過程的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體涉及向連接至網(wǎng)絡(luò)的移動(dòng)用戶設(shè)備遞送指令的方法。
背景技術(shù):
在當(dāng)今可用的各種類型的便攜式電子設(shè)備中,移動(dòng)電話已經(jīng)變 得尤其普及,其普及性高于因特網(wǎng)的兩倍。這些設(shè)備在功能方面發(fā)
展迅速,并且其功能可能遠(yuǎn)遠(yuǎn)不止語音和SMS。非常期望使用這些 功能來遞送并執(zhí)行應(yīng)用(其中這些應(yīng)用對移動(dòng)電話和其他設(shè)備提供 可定制交互),但是由于在市場上存在很大程度上不兼容的各種類 型的設(shè)備和平臺,這一直是一項(xiàng)挑戰(zhàn)性的工作。
移動(dòng)電話的最多交互應(yīng)用包括短消息服務(wù)(SMS)或者解決 特定業(yè)務(wù)需求的專用應(yīng)用開發(fā)。SMS交互性面臨貧乏的可用性(用 戶必須熟悉特殊命令)以及安全性問題(SMS源地址可能是偽造的), 由此將移動(dòng)電話的使用限制為簡單、不敏感的事務(wù)。此外,希望使 用SMS來與其客戶進(jìn)行交互的組織需要前往電信提供商的某些商業(yè) 設(shè)施以便建立計(jì)費(fèi)過程等。這對于組織來說可能是不方便的,并且 還可能非常昂貴,不但要建立而且還要在持續(xù)的基礎(chǔ)上進(jìn)行操作。
專用應(yīng)用通過開發(fā)由移動(dòng)設(shè)備執(zhí)行的程序代碼以執(zhí)行特定任 務(wù),來嘗試解決這些缺點(diǎn)。至少因?yàn)閬碜圆煌圃焐痰囊苿?dòng)電話通 常不是二進(jìn)制兼容的,并且不能執(zhí)行相同的可執(zhí)行應(yīng)用,進(jìn)行上述 開發(fā)需要大量時(shí)間。另外,這些應(yīng)用受限于在開發(fā)時(shí)所需的功能性, 并因此可能不支持對該功能性的添加或修改。應(yīng)該理解,對這些應(yīng) 用區(qū)分變化是類似于非??菰锏奶幚?,通常需要用戶手工下載并在 其電話上安裝更新版本的應(yīng)用。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的 一個(gè)方面,提供了 一種向連接到網(wǎng)絡(luò)的用戶設(shè)備 上安裝的應(yīng)用遞送指令的方法,所述方法包括以下步驟 接收交互工作 流;
將所述交互工作流轉(zhuǎn)換至由所述應(yīng)用可執(zhí)行形式的所述指令;
以及
向所述移動(dòng)用戶設(shè)備處的所述應(yīng)用發(fā)送包括所述指令的消息。 根據(jù)本發(fā)明的另 一方面,提供了 一種向連接到網(wǎng)絡(luò)的移動(dòng)用戶 設(shè)備遞送指令的方法,所述方法包括以下步驟 4妄收交互工作流;
將所述交互工作流轉(zhuǎn)換至由所述移動(dòng)用戶設(shè)備可執(zhí)行形式的所
述指令;以及
向所述移動(dòng)用戶設(shè)備發(fā)送包括所述指令的消息。
根據(jù)本發(fā)明的另 一 方面,提供了 一種包括用于向連接到網(wǎng)絡(luò)的
移動(dòng)用戶設(shè)備遞送指令的可執(zhí)行指示的計(jì)算機(jī)軟件,所述指示包括
以下步驟
才妄收交互工作流;
將所述交互工作流轉(zhuǎn)換至由所述移動(dòng)用戶設(shè)備可執(zhí)行形式的所
述指令;以及
向所述移動(dòng)用戶設(shè)備發(fā)送包括所述指令的消息。
優(yōu)選的是,接收所述交互工作流的步驟包括以下步驟接收以
高級編程或者腳本語言編碼的所述交互工作流。更優(yōu)選的是,接收
所述交互工作流的步驟包括以下步驟從外部或者第三方接收所述
交互工作流。
優(yōu)選的是,發(fā)送所述消息的步驟包括以下步驟發(fā)送用于在所 述移動(dòng)用戶設(shè)備上安裝的應(yīng)用執(zhí)行的指令集。更優(yōu)選的是,發(fā)送所 述指令集的步驟包括以下步驟發(fā)送用于所述設(shè)備的所述指令集, 以便與所述移動(dòng)用戶設(shè)備的用戶進(jìn)行交互。優(yōu)選的是,所述移動(dòng)用戶設(shè)備是多個(gè)移動(dòng)用戶設(shè)備中的 一 個(gè),
以及所述方法還包括以下步驟從包括用于所述多個(gè)用戶設(shè)備的各
自規(guī)格的數(shù)據(jù)庫中接收所述移動(dòng)用戶設(shè)備的規(guī)格。
優(yōu)選的是,轉(zhuǎn)換所述交互工作流的步驟包括使所述指令適應(yīng)
所述規(guī)格。
優(yōu)選的是,轉(zhuǎn)換所述交互工作流的步驟包括是所述指令適應(yīng) 設(shè)備操作系統(tǒng)。
優(yōu)選的是,發(fā)送所述消息的步驟包括以下步驟發(fā)送唯一消息 標(biāo)識符。更優(yōu)選的是,發(fā)送所述消息的步驟包括以下一個(gè)或者多個(gè) 預(yù)備步驟對所述指令進(jìn)行壓縮、編碼和加密。
優(yōu)選的是,發(fā)送所述消息的步驟包括以下步驟經(jīng)由蜂窩網(wǎng)絡(luò) 的短消息服務(wù)(SMS)發(fā)送所述消息。更優(yōu)選的是,經(jīng)由SMS發(fā)送 所述消息的步驟包括以下步驟將所述消息劃分成為多個(gè)消息以便 滿足SMS的一個(gè)或者多個(gè)標(biāo)準(zhǔn)。備選的是,發(fā)送所述消息的步驟包 括以下一個(gè)或者多個(gè)步驟經(jīng)由蜂窩網(wǎng)絡(luò)的小區(qū)廣播服務(wù)(CBS) 來發(fā)送所述消息,作為通過GPRS或者3G網(wǎng)絡(luò)的IP/TCP數(shù)據(jù)分組 來發(fā)送所述消息,以及作為通過藍(lán)牙連接的數(shù)據(jù)分組來發(fā)送所述消 息。
優(yōu)選的是,所述方法進(jìn)一步包括以下步驟所述移動(dòng)用戶設(shè)備 接收所述指令集以及所述唯一消息標(biāo)識符。更優(yōu)選的是,所述移動(dòng) 用戶設(shè)備接收所述指令集以及所述唯 一 消息標(biāo)識符的步驟包括以下 步驟接收所述指令集,用于由所述應(yīng)用的工作流執(zhí)行引擎組件轉(zhuǎn) 換至移動(dòng)用戶設(shè)備系統(tǒng)代碼。
優(yōu)選的是,所述方法進(jìn)一 步包括從所述移動(dòng)用戶設(shè)備接收對于 所述指令的響應(yīng)的步驟。更優(yōu)選的是,接收響應(yīng)的步驟包括以下步 驟從所述設(shè)備接收響應(yīng)標(biāo)識符。更加優(yōu)選的是,所述方法包括以 下步驟將所述唯一消息標(biāo)識符與所述響應(yīng)標(biāo)識符進(jìn)^于比4交,以確 認(rèn)接收到的消息的真實(shí)性。
優(yōu)選的是,所述方法包括以下步驟檢查所述移動(dòng)用戶設(shè)備是否希望從所述外部或者第三方接收從所述交互工作流獲取的所述指
令。更優(yōu)選的是,所述方法包括以下步驟向所述移動(dòng)用戶設(shè)備的
所述用戶發(fā)送所述請求,以便從所述外部或者第三方接受從所述交 互工作流獲取的所述指令。
優(yōu)選的是,接收所述交互工作流的步驟包括以下預(yù)備步驟從 所述外部或者第三方來接收針對應(yīng)用編程接口的請求。更優(yōu)選的是, 接收針對應(yīng)用編程接口的請求的步驟是從所述外部或者第三方接 收。更為優(yōu)選的是,接收所述交互工作流的步驟包括以下預(yù)備步驟 打開應(yīng)用編程4妄口 。
優(yōu)選的是,所述方法還包括以下步驟向所述設(shè)備發(fā)出命令以 便更新或者刪除保存在所述移動(dòng)用戶設(shè)備上的永久性數(shù)據(jù)存儲(chǔ)設(shè)備 的指令序列。
根據(jù)本發(fā)明,還提供了 一種由計(jì)算機(jī)系統(tǒng)或者設(shè)備執(zhí)行的交互 過程,所述過程包括
接收一個(gè)或者多個(gè)SMS消息,所述SMS消息包括表示用于在 所述系統(tǒng)或者設(shè)備上執(zhí)行的 一 個(gè)或者多個(gè)指令以便確定信息的指令
數(shù)據(jù);
執(zhí)行所述 一 個(gè)或者多個(gè)指令以便確定所述信息;以及 發(fā)送包括表示所述信息的響應(yīng)數(shù)據(jù)的一個(gè)或者多個(gè)SMS消息。 有利的是,所述信息可以包括從所述系統(tǒng)或者設(shè)備確定的系統(tǒng)
信息和/或從所述系統(tǒng)或者設(shè)備的用戶確定的用戶信息。
優(yōu)選的是,所述執(zhí)行導(dǎo)致在所述系統(tǒng)或者設(shè)備的顯示器上生成
交互用戶4妻口,以及所述過程包4舌響應(yīng)于所述交互顯示而乂人所述
系統(tǒng)或者設(shè)備的用戶接收表示所述信息的響應(yīng)數(shù)據(jù)。
優(yōu)選的是,所述一個(gè)或者多個(gè)指令由所述系統(tǒng)或者設(shè)備的虛擬
機(jī)執(zhí)行。
本發(fā)明還提供了 一種用于系統(tǒng)或者設(shè)備的應(yīng)用組件,所述應(yīng)用 組件包4舌
消息接收器,用于處理一個(gè)或者多個(gè)接收到的SMS消息以便生成一個(gè)或者多個(gè)指令用于在所述設(shè)備上執(zhí)行以確定信息;
執(zhí)行組件,用于執(zhí)行所述應(yīng)用數(shù)據(jù)的所述一個(gè)或者多個(gè)指令以
便確定所述信息;以及
消息發(fā)送器,用于生成包括表示所述信息的響應(yīng)數(shù)據(jù)的一個(gè)或 者多個(gè)SMS消息。
優(yōu)選的是,所述應(yīng)用組件進(jìn)一步包括數(shù)據(jù)管理組件,用于在 非易失性存儲(chǔ)裝置上存儲(chǔ)指令集,以及用于獲取所存儲(chǔ)的指令集中 選出的一個(gè)用于執(zhí)行。
優(yōu)選的是,所述執(zhí)行組件適用于生成用于所述系統(tǒng)或者設(shè)備的 用戶的交互顯示,以及適用于響應(yīng)于所述交互顯示而從所述系統(tǒng)或 者設(shè)備的用戶接收表示所述信息的響應(yīng)數(shù)據(jù)。
本發(fā)明還提供了 一種用于由系統(tǒng)或者設(shè)備執(zhí)行的交互過程,包
括
接收包括報(bào)頭數(shù)據(jù)以及已加密凈載荷數(shù)據(jù)的消息數(shù)據(jù); 基于所述報(bào)頭數(shù)據(jù)來選擇多個(gè)加密密鑰中的一個(gè);以及 使用所選擇的加密密鑰來解密所述凈載荷數(shù)據(jù)。 優(yōu)選的是,所述報(bào)頭數(shù)據(jù)包括表示所述多個(gè)加密密鑰的索引的
索引數(shù)據(jù)。
有利的是,所述凈載荷數(shù)據(jù)可以表示用于在所述系統(tǒng)或者設(shè)備 上執(zhí)行以確定信息的一個(gè)或者多個(gè)指令。
有利的是,所述凈載荷數(shù)據(jù)可以表示響應(yīng)于在遠(yuǎn)程系統(tǒng)或者設(shè) 備上執(zhí)行一個(gè)或者多個(gè)指令的信息。
本發(fā)明還提供了 一種用于由系統(tǒng)或者設(shè)備執(zhí)行的交互過程,包
括
生成用于發(fā)送至遠(yuǎn)程系統(tǒng)或者設(shè)備的凈載荷數(shù)據(jù);
選擇多個(gè)加密密鑰中的一個(gè);
使用所選擇的加密密鑰來加密所述凈載荷數(shù)據(jù); 生成用于發(fā)送至所述遠(yuǎn)程系統(tǒng)或者設(shè)備的消息數(shù)據(jù),所述消息 數(shù)據(jù)包括報(bào)頭數(shù)據(jù)以及已加密的凈載荷數(shù)據(jù),其中所述報(bào)頭數(shù)據(jù)包括表示針對所述多個(gè)加密密鑰的索引,以便允許所述遠(yuǎn)程系統(tǒng)或者 設(shè)備來確定所選擇的加密密鑰,以及由此解密所述凈載荷數(shù)據(jù)。
有利的是,所述凈載荷數(shù)據(jù)可以表示用于在所述遠(yuǎn)程系統(tǒng)或者 設(shè)備上執(zhí)行以便確定信息的 一 個(gè)或者多個(gè)指令。
有利的是,所述凈載荷數(shù)據(jù)可以表示響應(yīng)于執(zhí)行一個(gè)或者多個(gè) 指令的信息。
優(yōu)選的是,所述過程包括生成所述多個(gè)加密密鑰以及向所述遠(yuǎn) 程系統(tǒng)或者設(shè)備發(fā)送所述多個(gè)加密密鑰。
優(yōu)選的是,所述過程包括將所述多個(gè)加密密鑰與所述遠(yuǎn)程系統(tǒng)
或者設(shè)備的標(biāo)識符相關(guān)聯(lián)。
本發(fā)明還提供了一種交互過程,包括
接收用于在遠(yuǎn)程系統(tǒng)或者設(shè)備上生成交互顯示的編程指令;
編譯所述編程指令以便生成已編譯的指令數(shù)據(jù);
向所述遠(yuǎn)程系統(tǒng)或者設(shè)備發(fā)送所述已編譯指令數(shù)據(jù),以便在所
述第二遠(yuǎn)程系統(tǒng)或者設(shè)備上生成交互顯示;
接收表示對于所述交互顯示的至少一個(gè)用戶響應(yīng)的響應(yīng)數(shù)據(jù);
以及
發(fā)送表示所述至少一個(gè)用戶響應(yīng)的響應(yīng)數(shù)據(jù)。 本發(fā)明還提供了一種交互過程,包括 從多個(gè)實(shí)體接收工作流指令;
處理所述工作流指令以生成用于在多個(gè)用戶設(shè)備上執(zhí)行的交互 應(yīng)用;以及
向所述用戶設(shè)備發(fā)送所述交互應(yīng)用用于執(zhí)行。
優(yōu)選的是,使用短消息服務(wù)(SMS)向所述用戶設(shè)備發(fā)送所述
交互應(yīng)用。
優(yōu)選的是,所述用戶設(shè)備包括移動(dòng)電話。
本發(fā)明還提供了一種用于管理與遠(yuǎn)程系統(tǒng)和/或設(shè)備的用戶進(jìn)行 交互的交互系統(tǒng),所述交互系統(tǒng)適用于 從多個(gè)實(shí)體接收工作流指令;處理所述工作流指令以生成用于在多個(gè)用戶設(shè)備上執(zhí)行的交互
應(yīng)用;以及
向所述用戶設(shè)備發(fā)送所述交互應(yīng)用用于執(zhí)行。
本發(fā)明還提供了 一種具有執(zhí)行上述任一過程的組件的系統(tǒng)。
本發(fā)明還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有用于執(zhí)
行上述任一過程的程序指令。
本發(fā)明還提供了一種交互系統(tǒng),包括
網(wǎng)關(guān)組件,用于處理已接收的工作流數(shù)據(jù),以生成用于在用戶 設(shè)備上生成交互顯示的指令,所述網(wǎng)關(guān)組件適用于向所述用戶設(shè)備 發(fā)送所述指令用于執(zhí)行;以及
所述用戶設(shè)備的執(zhí)行組件,用于接收和執(zhí)行所述指令以生成所 述交互顯示,用于接收表示所述用戶對所述交互顯示的至少一個(gè)響 應(yīng)的響應(yīng)數(shù)據(jù);以及用于向所述網(wǎng)關(guān)組件發(fā)送所述響應(yīng)數(shù)據(jù)。
優(yōu)選的是,所述用戶設(shè)備是移動(dòng)電話。
有利的是,可以在一個(gè)或者多個(gè)SMS消息中將所述指令發(fā)送至
所述網(wǎng)關(guān)組件。
有利的是,可以在一個(gè)或者多個(gè)SMS消息中將所述用戶響應(yīng)數(shù) 據(jù)發(fā)送至所述用戶設(shè)備。
參考附圖,在下文中僅通過示例方式描述了本發(fā)明的優(yōu)選實(shí)施 方式,在附圖中
圖1是交互系統(tǒng)的優(yōu)選實(shí)施方式的示意圖; 圖2是交互系統(tǒng)的交互過程的高級過程和數(shù)據(jù)流的示意圖; 圖3是其上安裝了交互系統(tǒng)的客戶端應(yīng)用的移動(dòng)電話的框圖; 圖4是交互系統(tǒng)的客戶端應(yīng)用的框圖5是由交互過程和系統(tǒng)生成的交互應(yīng)用的生命周期的流程圖6是交互系統(tǒng)的應(yīng)用網(wǎng)關(guān)的框圖7是其上安裝了應(yīng)用網(wǎng)關(guān)的計(jì)算機(jī)系統(tǒng)的框圖;圖8是交互系統(tǒng)的選擇加入(opt-in)過程的過程以及數(shù)據(jù)流的 示意圖9是示出在客戶端應(yīng)用和應(yīng)用網(wǎng)關(guān)之間建立加密通信信道的 加密密鑰集使用的示意圖IO是在客戶端應(yīng)用和應(yīng)用網(wǎng)關(guān)之間執(zhí)行安全通信中所涉及過 程和數(shù)據(jù)流的示意圖11是示出交互系統(tǒng)和過程的默認(rèn)行為的示意圖,其中特定應(yīng) 用網(wǎng)關(guān)向特定客戶端應(yīng)用發(fā)送指令,以及向發(fā)送該指令的同一應(yīng)用 網(wǎng)關(guān)返回結(jié)果響應(yīng)數(shù)據(jù);
圖12是類似于圖11的示意圖,然而示出了從發(fā)送相應(yīng)指令的 應(yīng)用網(wǎng)關(guān)到不同應(yīng)用網(wǎng)關(guān)的響應(yīng)數(shù)據(jù)重定向;
圖13是示出在應(yīng)用網(wǎng)關(guān)和客戶端應(yīng)用之間交換的消息結(jié)構(gòu)的示 意圖14是示出圖13中所示消息的凈載荷數(shù)據(jù)的結(jié)構(gòu)的示意圖; 圖15是示出圖14的凈載荷數(shù)據(jù)的每個(gè)數(shù)據(jù)部分的結(jié)構(gòu)的示意
圖16是示出由交互系統(tǒng)和過程支持的十五種不同類型的指令的 示意圖17是示出由交互系統(tǒng)和過程生成的SMS消息的結(jié)構(gòu)的示意
圖18是示出交互系統(tǒng)如何使用多個(gè)SMS消息來發(fā)送指令的示
意圖,所述指令構(gòu)成長度大于133字節(jié)的應(yīng)用; 圖19是系統(tǒng)的SMS發(fā)送過程的流程圖; 圖20是系統(tǒng)的SMS接收過程的流程圖; 圖21是由系統(tǒng)執(zhí)行引擎執(zhí)行的應(yīng)用執(zhí)行過程的流程圖; 圖22是示出從客戶端應(yīng)用發(fā)送至應(yīng)用網(wǎng)關(guān)的響應(yīng)數(shù)據(jù)的結(jié)構(gòu)的
示意圖23是示出系統(tǒng)如何使用在指令中提供的參數(shù)名稱來標(biāo)記相應(yīng) 的響應(yīng)的示意圖;圖24是示出客戶端應(yīng)用中的執(zhí)行分支的示意圖25是示出使用分支域來標(biāo)記具有相同參數(shù)名稱的響應(yīng)的示意
圖26是示出使用分支名稱棧來確定控制流的示意圖; 圖27是示出從交互應(yīng)用選擇不同分支而導(dǎo)致的用戶界面組件的 示意圖28是示出在每個(gè)用戶界面顯示器上包括"返回"按鈕的示意
圖29是示出使用執(zhí)行指令棧來實(shí)現(xiàn)圖28的"返回"按鈕的示意
圖30是用于輸入腳本語言指令和用于向應(yīng)用網(wǎng)關(guān)的指令編譯器 發(fā)送這些指令的應(yīng)用網(wǎng)關(guān)的用戶界面的截屏;
圖31是可以如何4吏用系統(tǒng)API來向移動(dòng)電話發(fā)送預(yù)訂細(xì)節(jié)以向 用戶顯示以及接收用戶響應(yīng)的源代碼列表,其中所述用戶響應(yīng)指示 用戶接受或者拒絕該預(yù)訂;
圖32 了腳本語言應(yīng)用的一部分列表,其中示出了腳本語言中控 制流分支的使用;
圖33是示出從圖32的腳本語言示例生成的用戶界面組件的示 意圖34是由系統(tǒng)生成的內(nèi)嵌用戶界面顯示的使用的示意圖35和圖36是示出由系統(tǒng)生成的一般用戶界面顯示的外觀和 結(jié)構(gòu)的示意圖37是由系統(tǒng)生成的滑塊控制顯示的示意圖38是由系統(tǒng)生成的用戶界面顯示中的一個(gè)以及多個(gè)選項(xiàng)的使 用的示意圖;以及
圖39是示出如何使用內(nèi)嵌菜單的分支名稱來標(biāo)記參數(shù)數(shù)據(jù)的示 意圖。
具體實(shí)施方式
如圖1中所示,交互系統(tǒng)包^"至少一個(gè)客戶端應(yīng)用102以及至 少一個(gè)應(yīng)用網(wǎng)關(guān)104。每個(gè)客戶端應(yīng)用102是相應(yīng)用戶設(shè)備106的組 件,其可以經(jīng)由由設(shè)備106支持的各種通信手段中的一個(gè)或者多個(gè) 來與至少一個(gè)應(yīng)用網(wǎng)關(guān)104進(jìn)行通信,通信手段優(yōu)選地包括以下的 結(jié)合(i)基于IP的通信網(wǎng)絡(luò)108,諸如因特網(wǎng);(ii)無線廣域 通信網(wǎng)絡(luò),諸如全球移動(dòng)通信系統(tǒng)(GSM)電話網(wǎng)絡(luò);(iii)在設(shè) 備106和至少一個(gè)應(yīng)用網(wǎng)關(guān)104之間的本地?zé)o線網(wǎng)絡(luò)或鏈路,諸如 紅外鏈路、Wi-Fi或者藍(lán)牙網(wǎng)絡(luò)112;和/或(iv )使用標(biāo)準(zhǔn)通信協(xié)議 的直接線纜連接114,所述標(biāo)準(zhǔn)通信協(xié)議諸如RS-232、通用串行總 線(USB)或者火線(IEEE 1394 )。交互系統(tǒng)允許使用標(biāo)準(zhǔn)計(jì)算機(jī) 系統(tǒng)118的應(yīng)用開發(fā)者116來快速開發(fā)并且部署交互工作流或應(yīng)用, 以用于在一個(gè)或者多個(gè)用戶設(shè)備106上執(zhí)行,從而與設(shè)備106的用 戶120進(jìn)行交互,以及將表示每個(gè)用戶120的至少一個(gè)響應(yīng)的響應(yīng) 數(shù)據(jù)接收到交互應(yīng)用。
交互工作流或者應(yīng)用包括指令集,該指令集用于在交互顯示器 或者用戶界面中向每個(gè)移動(dòng)設(shè)備106的用戶120呈現(xiàn)信息,并且用 于獲取每個(gè)用戶對該信息的響應(yīng)。通常,向用戶120呈現(xiàn)的信息將 包括在用戶設(shè)備106的顯示屏上顯示的一個(gè)或者多個(gè)問題(以及還 可能包括在設(shè)備106的聲音轉(zhuǎn)換器上播放的音頻),并且通過用戶 與一個(gè)或者多個(gè)用戶界面(UI)組件或者交互顯示器的輸入控制進(jìn) 行交互,來提供每個(gè)用戶響應(yīng)。每個(gè)響應(yīng)可以是以輸入至文本框中 的自由文本形式、或者是用戶與其他類型輸入控制進(jìn)行交互的結(jié)果, 諸如單選按鈕、復(fù)選框、滑塊、簡單菜單、內(nèi)嵌菜單等。在某些程 度上,這些可能性由設(shè)備106的功能來確定。然而,因?yàn)橛上到y(tǒng)支 持的工作流還包括類似于由高級編程語言提供的控制流特征,由系 統(tǒng)生成的工作流指令還認(rèn)為構(gòu)成在用戶設(shè)備106上執(zhí)行的交互軟件 應(yīng)用。
在所述實(shí)施方式中,用戶設(shè)備106是移動(dòng)電話,然而備選的是, 用戶設(shè)備106可以是某些其他類型的便攜式或者手持式設(shè)備,諸如個(gè)人數(shù)字助理(PDA),并且由此在下文中可以將其稱為"移動(dòng)設(shè)備 106"。然而,即使將設(shè)備106描述為"移動(dòng)式"或者"便攜式",本領(lǐng)域 技術(shù)人員應(yīng)該理解,備選的是,在此描述的系統(tǒng)和過程可以與其他 類型的設(shè)備和系統(tǒng)相結(jié)合使用,即使這些設(shè)備和系統(tǒng)不需要是便攜 式的。例如,甚至可以將客戶端應(yīng)用102安裝在標(biāo)準(zhǔn)個(gè)人計(jì)算機(jī)系 統(tǒng)(而不是便攜設(shè)備106)上,以便例如將交互應(yīng)用快速開發(fā)和遞送 至標(biāo)準(zhǔn)個(gè)人計(jì)算機(jī)。
在所述實(shí)施方式中,客戶端應(yīng)用102是存儲(chǔ)在移動(dòng)設(shè)備106上 的軟件應(yīng)用,或者作為設(shè)備制造的一部分,或者作為銷售之前的配 置,或者按照需要在后續(xù)經(jīng)由GPRS、藍(lán)牙、紅外或者電話專用信道
(例如,數(shù)據(jù)線纜)來部署,允許將客戶端應(yīng)用102安裝在各種不 同類型的設(shè)備上。然而,本領(lǐng)域技術(shù)人員應(yīng)該理解,備選的是,例 如客戶端應(yīng)用102及其過程可以由一個(gè)或者多個(gè)專用硬件組件來以 部分或者全部形式實(shí)現(xiàn),所述專用硬件組件諸如專用集成電路
(ASIC)或者現(xiàn)場可編程門陣列(FPGA)。
類似地,應(yīng)用網(wǎng)關(guān)104是安裝在標(biāo)準(zhǔn)計(jì)算機(jī)系統(tǒng)122上并由其 執(zhí)行的軟件應(yīng)用,所述標(biāo)準(zhǔn)計(jì)算機(jī)系統(tǒng)122諸如執(zhí)行WindowsTM操 作系統(tǒng)的Intel 1A-32計(jì)算機(jī)服務(wù)器。計(jì)算機(jī)系統(tǒng)122包括標(biāo)準(zhǔn)硬 件組件702以及軟件組件704。硬件組件702包括至少一個(gè)處理器 706、通信接口 (例如,網(wǎng)絡(luò)接口卡)708、隨機(jī)存取存儲(chǔ)器710、非 易失性(例如,硬盤存儲(chǔ)設(shè)備)712、用戶輸入設(shè)備(例如,鍵盤、 鼠標(biāo)或者其他指示設(shè)備)714、以及顯示器適配器和設(shè)備716,所有 這些均由系統(tǒng)總線720來進(jìn)行互聯(lián)。軟件組件704包括應(yīng)用網(wǎng)關(guān)104 以及諸如Microsoft Windows的標(biāo)準(zhǔn)操作系統(tǒng)718。另夕卜,如所示出, 附加地或者備選地,如安裝在開發(fā)者計(jì)算機(jī)118上所示,第三方應(yīng) 用124可以安裝在應(yīng)用網(wǎng)關(guān)104其自身所定位的相同計(jì)算機(jī)系統(tǒng)122 上。然而,盡管應(yīng)用網(wǎng)關(guān)104描述為軟件應(yīng)用,本領(lǐng)域技術(shù)人員應(yīng) 該理解,備選的是,例如應(yīng)用網(wǎng)關(guān)104及其過程可以部分或者全部 地由一個(gè)或者多個(gè)專用硬件組件來實(shí)現(xiàn),所述專用硬件組件諸如專用集成電路(ASIC)或者現(xiàn)場可編程門陣列(FPGA)。 客戶端應(yīng)用102:
(i) 驗(yàn)證由應(yīng)用網(wǎng)關(guān)104發(fā)送的指令集;
(ii) 解譯這些指令;
(iii) 根據(jù)指令集來與用戶設(shè)備106和/或用戶120進(jìn)行交互;
以及
(iv) 向網(wǎng)關(guān)104或者其他計(jì)算機(jī)系統(tǒng)或者設(shè)備發(fā)回響應(yīng)。 應(yīng)用網(wǎng)管104有效地是后端組件
(i) 維護(hù)交互系統(tǒng)的用戶設(shè)備(即,其上已經(jīng)安裝有客戶端應(yīng) 用102的設(shè)備)的數(shù)據(jù)庫;
(ii) 經(jīng)由廣泛通信信道中的任何一種來生成并向移動(dòng)設(shè)備106 遞送交互應(yīng)用;
(iii )確保去往或來自移動(dòng)設(shè)備106的出站和入站消息的完整性 和真實(shí)性;以及
(iv)提供應(yīng)用編程接口 (API)以允許第三方應(yīng)用124對移動(dòng) 設(shè)備106部署交互應(yīng)用,以及接收由移動(dòng)設(shè)備106上的客戶端應(yīng)用 102生成的相應(yīng)響應(yīng)。
圖2是示出與圖1中所示各種組件相關(guān)的系統(tǒng)的交互過程的高 級操作的示意圖。在步驟202處,在開發(fā)者的計(jì)算機(jī)系統(tǒng)118上(或 者備選的是,在網(wǎng)關(guān)計(jì)算機(jī)系統(tǒng)122上)執(zhí)行的外部或者第三方應(yīng) 用204調(diào)用應(yīng)用網(wǎng)關(guān)104的API 616來描述設(shè)備106的開發(fā)者希望 部署的工作流。通常,工作流包括向用戶顯示信息的步驟,以及然 后接收對該信息的至少一個(gè)響應(yīng)的步驟。例如,典型的工作流可以 是在移動(dòng)設(shè)備106上顯示消息,要求用戶輸入其年齡,繼而顯示另 一消息,以及將年齡發(fā)送回開發(fā)者。這些步驟或者指示構(gòu)成用于在 移動(dòng)設(shè)備106上執(zhí)行的交互應(yīng)用。
工作流定義
(i) 各用戶設(shè)備106的一個(gè)或者多個(gè)地址;
(ii) 將要在一個(gè)或者多個(gè)用戶設(shè)備106上執(zhí)行的步驟;(iii) 將要向其發(fā)送響應(yīng)的備選網(wǎng)關(guān)服務(wù)器104 (如果存在)的 地址;如果沒有給出地址,則將響應(yīng)發(fā)送至發(fā)送了應(yīng)用指令的相同 網(wǎng)關(guān)服務(wù)器104;
(iv) 應(yīng)該如何處理返回至應(yīng)用網(wǎng)關(guān)的響應(yīng)數(shù)據(jù)(例如,返回至 開發(fā)者的應(yīng)用124,通過電子郵件、存儲(chǔ)在文件中等來發(fā)送至開發(fā)者 116);以及
(v) 將要用于向用戶設(shè)備106發(fā)送指令以及接收相應(yīng)的響應(yīng)數(shù)
據(jù)的通信方法。
在步驟206處,應(yīng)用網(wǎng)關(guān)104將由開發(fā)者描述的工作流轉(zhuǎn)換成 為已壓縮、已編碼并且已加密的格式,用于發(fā)送至移動(dòng)設(shè)備106。應(yīng) 用網(wǎng)關(guān)104還向消息中插入唯一標(biāo)識符或者ID,并且存儲(chǔ)將該ID 與將要向其發(fā)送工作流的目的地(例如,電話號碼或者網(wǎng)絡(luò)地址)
相關(guān)聯(lián)的數(shù)據(jù)。
應(yīng)用網(wǎng)關(guān)104轉(zhuǎn)換消息,從而其可以經(jīng)由適當(dāng)?shù)耐ㄐ叛b置進(jìn)行 發(fā)送。例如,如果經(jīng)由SMS發(fā)送消息,則應(yīng)用網(wǎng)關(guān)106將大的消息 劃分成為較小的消息,以便符合GSM標(biāo)準(zhǔn)。所有這些對于開發(fā)者都 是隱藏的。在步驟208處,應(yīng)用網(wǎng)關(guān)104繼而將消息發(fā)送至由開發(fā) 者指定的設(shè)備106。
在步驟210處,客戶端應(yīng)用102接收、解壓并且解密消息,由 此驗(yàn)證其完整性。如果有效,則在步驟212處,客戶端應(yīng)用102將 中斷用戶,并且請求用戶完成該工作流。通過用戶協(xié)作,客戶端應(yīng) 用102中斷每個(gè)指令,并且執(zhí)行相應(yīng)的操作,例如,顯示消息、采 集用戶年齡等,在大多數(shù)情況下均涉及與設(shè)備106的用戶進(jìn)行交互。
在工作流結(jié)束處,客戶端應(yīng)用102經(jīng)由由應(yīng)用網(wǎng)關(guān)104在工作 流指令中指定的響應(yīng)信道,來向應(yīng)用網(wǎng)關(guān)104發(fā)送回所采集的全部 響應(yīng)數(shù)據(jù)。例如,如果將要經(jīng)由SMS來返回響應(yīng),則將響應(yīng)SMS 發(fā)送回在初始消息中提供的電話號碼。客戶端應(yīng)用102還加密響應(yīng) 消息,并且包括唯一消息ID以便確保響應(yīng)的真實(shí)性。
當(dāng)應(yīng)用網(wǎng)關(guān)104在步驟216處接收響應(yīng)消息時(shí),其解密消息并且使用先前存儲(chǔ)的目的地和ID關(guān)聯(lián)來確定消息的ID對于接收該消 息所來自的電話號碼是否有效。如果該消息有效,則將其按照由開 發(fā)者所指定的方式進(jìn)行處理,例如,將其傳送至第三方應(yīng)用、向開 發(fā)者發(fā)送電子郵件、將其存儲(chǔ)在文件中,等等。
除上文以外,交互系統(tǒng)還提供以下功能(i)存儲(chǔ)(以及隨后 更新)指令集作為存儲(chǔ)在用戶設(shè)備106的非易失性存儲(chǔ)設(shè)備上的永 久或者半永久應(yīng)用用于在任何時(shí)間執(zhí)行;即,應(yīng)用持續(xù)駐留在用戶 設(shè)備上;(ii)分發(fā)加密密鑰;以及(iii)選擇加入機(jī)制用以確保移 動(dòng)設(shè)備106不發(fā)送未經(jīng)請求的應(yīng)用,即,在應(yīng)用網(wǎng)關(guān)104被多個(gè)賣 方共享的情況下。
在下文中詳細(xì)描述交互系統(tǒng)以及由交互系統(tǒng)執(zhí)行的交互過程。 如圖3中所示,移動(dòng)設(shè)備106是標(biāo)準(zhǔn)移動(dòng)電話,包括硬件組件 302以及軟件組件304。硬件組件302包括處理器306、只讀存儲(chǔ) 器308、隨機(jī)存取存儲(chǔ)器310、閃存312、用戶接口組件以及一個(gè)或 者多個(gè)通信接口 318,其中用戶接口組件包括用戶輸入組件314(例 如,麥克風(fēng)、鍵盤以及在一些設(shè)備中的觸摸屏)、輸出組件316(例 如,顯示屏、揚(yáng)聲器),其中通信接口 318允許設(shè)備106與移動(dòng)電 話網(wǎng)絡(luò)110進(jìn)行通信,并且在某些設(shè)備中還包括藍(lán)牙和/或Wi-Fi 局域無線網(wǎng)絡(luò)或者紅外鏈路112。在移動(dòng)設(shè)備106是電話的優(yōu)選情況 下,設(shè)備106還包括SIM卡320。軟件組件包括操作系統(tǒng)322,諸如, 在例如Nokia和Motorola品牌旗下的移動(dòng)電話上安裝的封閉的、專 有的操作系統(tǒng)、Java平臺Micro版本(Java ME ) 324以及客戶端應(yīng) 用102。然而,如果操作系統(tǒng)322是更為復(fù)雜的操作系統(tǒng),諸如 Symbian、 Linux 、 Microsoft SmartPhone、 PocketPC、 Windows CE或 者Windows Mobile,其中這種更為復(fù)雜的操作系統(tǒng)提供充分強(qiáng)大的 應(yīng)用編程接口 (API),則可以省略J2ME組件324。如圖4中所示, 客戶端應(yīng)用102包括消息發(fā)送器組件402、消息接收器組件404、 用戶界面(UI)窗口 406、工作流執(zhí)行引擎408、即時(shí)數(shù)據(jù)存儲(chǔ)設(shè)備 410以及永久數(shù)據(jù)存儲(chǔ)設(shè)備412。客戶端應(yīng)用102是由移動(dòng)設(shè)備106執(zhí)行的本地應(yīng)用。可以以多種方式中的任何一種來安裝客戶端應(yīng)用
102,包括WAP推送、IP數(shù)據(jù)分組(GPRS或者3G網(wǎng)絡(luò))、藍(lán)牙、 紅外、或者諸如數(shù)據(jù)線纜的電話專用信道??蛻舳藨?yīng)用102可以作 為在購買時(shí)已經(jīng)安裝在移動(dòng)電話106上的預(yù)安裝應(yīng)用來提供。
消息發(fā)送器608以應(yīng)用網(wǎng)關(guān)104理解的格式來向應(yīng)用網(wǎng)關(guān)104 發(fā)送響應(yīng)消息。消息發(fā)送器608加密消息并且包括由初始應(yīng)用提供 的ID以確i人真實(shí)性。
消息接收器606將從應(yīng)用網(wǎng)關(guān)104接收的指令集進(jìn)行解密并且 解壓縮。該消息接收器606經(jīng)由以下多種信道來實(shí)現(xiàn)消息接收,包 括藍(lán)牙、紅外、IP網(wǎng)絡(luò)(GPRS或者3G)以及SMS。消息接收器 606還調(diào)用工作流執(zhí)行引擎408來處理指令集。
UI窗口 406是預(yù)建立的用戶接口組件,由應(yīng)用網(wǎng)關(guān)104發(fā)送的 指令可用其與用戶進(jìn)行交互。
工作流執(zhí)行引擎408負(fù)責(zé)運(yùn)行并維護(hù)當(dāng)前正在被處理的指令的 狀態(tài)。工作流執(zhí)行引擎408將指令與UI窗口相關(guān)聯(lián),以及存儲(chǔ)來自 設(shè)備106及其用戶的輸入。工作流執(zhí)行引擎408還負(fù)責(zé)在一旦工作 流完成時(shí)調(diào)用消息發(fā)送器402以發(fā)起向應(yīng)用網(wǎng)關(guān)104發(fā)送響應(yīng)。如 果要求在特定時(shí)間運(yùn)行指令,則還可以由定時(shí)器來調(diào)用工作流執(zhí)行。
客戶端應(yīng)用102可以在任何一個(gè)時(shí)間同時(shí)接收多個(gè)工作流應(yīng)用, 并且有效的是,即時(shí)數(shù)據(jù)存儲(chǔ)設(shè)備410是先入先出隊(duì)列,該隊(duì)列存 儲(chǔ)這些應(yīng)用,并且逐個(gè)處理這些應(yīng)用,直到即時(shí)數(shù)據(jù)存儲(chǔ)設(shè)備410 為空。
交互系統(tǒng)能夠?qū)⒁苿?dòng)設(shè)備106上持久駐留的指令序列作為應(yīng)用。 這些序列由唯一標(biāo)記來標(biāo)識,并且存儲(chǔ)在永久數(shù)據(jù)存儲(chǔ)設(shè)備412中, 在此實(shí)施方式中是非易失性閃存312。應(yīng)用網(wǎng)關(guān)104可以發(fā)出命令以 便更新或者刪除永久數(shù)據(jù)存儲(chǔ)設(shè)備412中的應(yīng)用。
圖5是示出了在從應(yīng)用網(wǎng)關(guān)104接收指令之后的客戶端應(yīng)用102 執(zhí)行實(shí)例的生命周期的流程圖。然而,可以通過新的數(shù)據(jù)事件或者 定時(shí)器事件來在步驟502處調(diào)用客戶端應(yīng)用102。當(dāng)接收到尋址至客戶端應(yīng)用102的新的凈載荷數(shù)據(jù)時(shí),由移動(dòng)設(shè)備106來激活客戶端 應(yīng)用102,此時(shí)發(fā)生新的數(shù)據(jù)事件。定時(shí)器事件由特定指令來設(shè)置, 該特定指令將指令執(zhí)行掛起至較晚的日期/時(shí)間。工作流引擎408負(fù) 責(zé)調(diào)度客戶端應(yīng)用102,以便在該日期/時(shí)間來開始和處理指令集。
一旦被調(diào)用,則在步驟504處通過以下方式獲取指令序列在 定時(shí)器事件的情況下,從即時(shí)數(shù)據(jù)存儲(chǔ)設(shè)備410中讀取數(shù)據(jù);或者 在新數(shù)據(jù)事件的情況下,從輸入信道獲取。如果從輸入信道獲取指 令數(shù)據(jù)并且將其加密,則在步驟506處,客戶端應(yīng)用102將其解密 并且按如下所述方式進(jìn)行驗(yàn)證。如果數(shù)據(jù)有效,則在步驟508處開 始工作流執(zhí)行。
工作流執(zhí)行508逐步處理指令。這可以包括用戶交互也可以不 包括用戶交互(如,可以在沒有用戶交互的情況下處理附錄中所述 的某些指令)。 一旦執(zhí)行指定將執(zhí)行延遲至較晚時(shí)間的定時(shí)器指令, 則工作流應(yīng)用的其他指令執(zhí)行將被掛起,并且將指令集存儲(chǔ)并放置 在即時(shí)數(shù)據(jù)存儲(chǔ)設(shè)備410中,掛起以便在指定時(shí)間繼續(xù)。
一旦工作流執(zhí)行508完成,則從即時(shí)數(shù)據(jù)存儲(chǔ)設(shè)備410中去除 工作流應(yīng)用。如果應(yīng)用被標(biāo)記為持久的,則將指令集保存至永久數(shù) 據(jù)存儲(chǔ)設(shè)備412 。用戶繼而可以在任何時(shí)間調(diào)用指令集。
在步驟510處,將由工作流執(zhí)行508采集的信息作為響應(yīng)數(shù)據(jù) 而發(fā)送回應(yīng)用網(wǎng)關(guān)104??蛻舳藨?yīng)用102加密響應(yīng)^:據(jù),并且另外包 括驗(yàn)證響應(yīng)數(shù)據(jù)真實(shí)性的唯一 消息ID。
如圖6中所示,應(yīng)用網(wǎng)關(guān)104包括指令編譯器602、密鑰管理 器604、消息接收器606、消息發(fā)送器608、選擇加入管理器610、 持久存儲(chǔ)設(shè)備612以及應(yīng)用編程接口 (API) 616。
指令編譯器602將從開發(fā)者116接收的工作流描述翻譯成為經(jīng) 優(yōu)化用于遞送至客戶端應(yīng)用102并由客戶端應(yīng)用102執(zhí)行的格式。 工作流描述以腳本語言的形式編寫,其由指令編譯器602來編譯。 開發(fā)者可以將工作流描述直接輸入至文本框,并且將其內(nèi)容發(fā)送至 編譯器602。通常,這是用以快速將工作流應(yīng)用的外觀和感覺原型化的方式。備選的是,可以通過以高級編程語言向編譯器602進(jìn)行API 呼叫來提交工作流描述,由此提供端對端的應(yīng)用集成,所述高級編 程語言諸如,C#、 Java或者TCL。
消息發(fā)送器608加密工作流指令集。加密依賴于請求密鑰管理 器604來提供隨機(jī)索引和加密密鑰,其對于將要在其上執(zhí)行指令的 特定用戶設(shè)備106是專用的。以明文方式向客戶端應(yīng)用102發(fā)送索 引,客戶端應(yīng)用102使用索引來查找適合于譯解消息的適當(dāng)加密密 鑰。消息發(fā)送器608還生成用于工作流應(yīng)用的唯一隨機(jī)標(biāo)識符。該 隨機(jī)標(biāo)識符是隨機(jī)標(biāo)識符以及發(fā)送了工作流描述的 一 方的標(biāo)識符的 組合。
消息發(fā)送器608使用傳輸適配器614來遞送包含工作流應(yīng)用的 實(shí)際消息。消息發(fā)送器608首先利用可選加入管理器610來進(jìn)行檢 查,以便確??蛻舳藨?yīng)用102沒有接收到其沒有選擇加入的未經(jīng)請 求的應(yīng)用,這如下文所述。
傳輸適配器614提取遞送指令集的各種方法到移動(dòng)設(shè)備106上 的客戶端應(yīng)用102。傳輸適配器614使用持久存儲(chǔ)設(shè)備612中存儲(chǔ)的 設(shè)備功能信息來確定設(shè)備106的功能,并且由此確定遞送消息的最 佳通信信道。
傳輸適配器614通過提供一組消息發(fā)送API、并且通過允許動(dòng)態(tài) 裝載實(shí)現(xiàn)新消息發(fā)送接口的已編譯代碼,來對新的信道類型動(dòng)態(tài)地 提供插件支持。如果需要,則傳輸適配器614將指令凈載荷重定格 式,從而其可以經(jīng)由特定信道來進(jìn)行遞送。尤其是,由于SMS消息 大小的限制,由SMS遞送的應(yīng)用可能必須被劃分成為兩個(gè)或者更多 的較小消息。
密鑰管理器604負(fù)責(zé)生成、分發(fā)和管理對便攜設(shè)備106發(fā)出的 加密密鑰,如下文詳述。密鑰管理器604還針對消息發(fā)送器608以 及消息接收器606來提供加密和解密便利d
選擇加入管理器610提供選擇加入、選擇退出過程,以便允許 客戶端應(yīng)用102選擇他們希望從其接收指令集的實(shí)體。這是理想的,因?yàn)閼?yīng)用網(wǎng)關(guān)104可以由多方共享,并且客戶端應(yīng)用102將另外執(zhí) 行所接收到的任何指令集,只要其是有效的。選擇加入管理器610 在持久數(shù)據(jù)存儲(chǔ)設(shè)備612中維護(hù)各方與他們允許向其發(fā)送應(yīng)用的電 話號碼(或者,在電話以外設(shè)備的情況下,是目的地設(shè)備的其他形 式的地址或者標(biāo)識符)之間的關(guān)聯(lián)。用于創(chuàng)建這些關(guān)聯(lián)的過程可以 是動(dòng)態(tài)的,以便允許用戶選擇性地阻止或者允許來自特定方的指令。 例如,圖8是出了選擇加入過程的消息流。
在步驟802處, 一方使用在計(jì)算機(jī)系統(tǒng)118上執(zhí)行的外部應(yīng)用 124,來向應(yīng)用網(wǎng)關(guān)104發(fā)送工作流描述,應(yīng)用網(wǎng)關(guān)104在步驟804 處對指令進(jìn)行編譯和格式化,以便準(zhǔn)備將其發(fā)送至還沒有選擇加入 的客戶端應(yīng)用102。在步驟806處,消息發(fā)送器608首先檢查客戶端 應(yīng)用102是否已經(jīng)選擇加入。如果沒有,則在步驟808處,消息發(fā) 送器608詢問選擇加入管理器610來確定用于這一方和這一用戶設(shè) 備的選擇加入狀態(tài)。在步驟810處,選擇加入管理器610向用戶發(fā) 送選擇加入請求消息,詢問其是否同意從這一方接收應(yīng)用。如果響 應(yīng)為"是",則在步驟812處,選擇加入管理器610將此信息存儲(chǔ)在 持久數(shù)據(jù)存儲(chǔ)設(shè)備612中,繼而在步驟814中,指示消息發(fā)送器608 來在步驟816處發(fā)送指令集。否則,如果響應(yīng)為"否",則消息發(fā)送 器608放棄,并且在步驟818處通知該方用戶沒有選擇加入。
備選的是,可以手工執(zhí)行選擇加入過程,例如通過使用支持用 戶直接向持久數(shù)據(jù)存儲(chǔ)設(shè)備612添加條目的形式。備選的是,可以 使用模擬過程來從特定方中選擇退出接收應(yīng)用。
消息接收器606從客戶端應(yīng)用102接收消息,并且與傳輸適配 器614進(jìn)行通信,以便經(jīng)由任何支持的傳輸信道和協(xié)議(包括G P R S 、 IP網(wǎng)絡(luò)、藍(lán)牙以及SMS)來接收響應(yīng)。例如,交互系統(tǒng)的指令集允 許通過一個(gè)物理信道/協(xié)議(例如,SMS)來接收指令,以及通過另 一物理信道/協(xié)i義(例如,藍(lán)牙)來遞送相應(yīng)的響應(yīng)。
當(dāng)接收到消息時(shí),消息接收器606首先為審計(jì)目的而將消息記 錄曰志。繼而,通過使用密鑰管理器604譯解消息來檢查消息的真實(shí)性,并且檢查唯一消息ID和該方的ID,以便確認(rèn)其匹配于發(fā)出的內(nèi)容。
一旦建立了消息真實(shí)性,則出于計(jì)費(fèi)和審計(jì)目的而將消息接收
記錄日志。最后,按照該方的需要來處理響應(yīng)消息。這可以包括 向該方發(fā)送電子郵件;記錄日志到文件中以備該方采集;和/或請求 第三方應(yīng)用處理該消息。當(dāng)調(diào)用API時(shí),可以指定用于處理響應(yīng)消 息的實(shí)際方法。如果API調(diào)用沒有指定處理方法,則使用在開發(fā)者 與交互系統(tǒng)的提供者建立賬戶時(shí)確定的、為相應(yīng)開發(fā)者配置的默認(rèn) 方法來處理響應(yīng)。
持久存儲(chǔ)設(shè)備612是由以下裝置使用的非易失性存儲(chǔ)組件
(i) 由密鑰管理器604使用,以便存儲(chǔ)用于各種移動(dòng)設(shè)備的加 密密鑰;
(ii) 由消息發(fā)送器608使用,以便存儲(chǔ)用戶設(shè)備106的地址(例 如,在設(shè)備106是電話的情況下,是電話號碼)以及每個(gè)用戶設(shè)備 106支持的遞送機(jī)制。出于確認(rèn)目的,其還存儲(chǔ)已經(jīng)發(fā)出的消息的標(biāo)
、rr "、-
識付;
(iii) 由消息接收器606使用,以便出于審計(jì)和計(jì)費(fèi)目的而存儲(chǔ) 所接收的消息;以及
(iv) 由選擇加入管理器610使用,以便存儲(chǔ)表示每個(gè)用戶設(shè)備 06的選擇加入數(shù)據(jù)以及被授權(quán)向每個(gè)用戶設(shè)備106發(fā)送指令的第
三方應(yīng)用。
加密密鑰
如上所述,通過唯一客戶端標(biāo)識符(在此還稱作客戶端ID號) 來標(biāo)識在用戶設(shè)備106上安裝的客戶端應(yīng)用102的每個(gè)實(shí)例,該唯 一客戶端標(biāo)識符與其電話號碼相關(guān)聯(lián)。當(dāng)首先在移動(dòng)設(shè)備106上安 裝客戶端應(yīng)用102時(shí),生成多個(gè)私有加密密鑰并且與客戶端ID相關(guān)聯(lián)。
如圖9中示意示出,繼而通過客戶端應(yīng)用102使用這些加密密鑰來認(rèn)證凈載荷數(shù)據(jù)并且加密響應(yīng)數(shù)據(jù)。對于每個(gè)凈載荷或者響應(yīng) 數(shù)據(jù)分組或者消息,在凈載荷報(bào)頭中指示適當(dāng)加密密鑰的索引。
圖10是示出用于在客戶端應(yīng)用102和應(yīng)用網(wǎng)關(guān)或者后端系統(tǒng)
104上生成和更新加密密鑰的消息和過程流的示意圖。由客戶端應(yīng)用 102發(fā)起過程,在步驟902處向應(yīng)用網(wǎng)關(guān)104發(fā)出安全通信激活請求。 作為響應(yīng),應(yīng)用網(wǎng)關(guān)104生成并且存儲(chǔ)一組私有加密密鑰,并且在 步驟904處將它們與客戶端ID相關(guān)聯(lián)。在步驟906處,應(yīng)用網(wǎng)關(guān)104 將這些新近生成的私鑰發(fā)送至客戶端應(yīng)用102。在步驟908處,客戶 端應(yīng)用102在持久存儲(chǔ)設(shè)備412上存儲(chǔ)接收的私鑰,并且在步驟910 處向應(yīng)用網(wǎng)關(guān)104返回應(yīng)答,確認(rèn)已經(jīng)存儲(chǔ)了私鑰(或者在先前已 經(jīng)存儲(chǔ)了密鑰的情況下,是已經(jīng)被更新)。這就完成了生成/更新步 驟,并且在步驟912處激活安全通信。這包括使用一個(gè)私有加密密 鑰來將消息凈載荷進(jìn)行加密,可以在步驟914處隨機(jī)或者基于任何 其他基礎(chǔ)而選擇該私有加密密鑰。在步驟916處,向客戶端應(yīng)用102 發(fā)送利用所選擇密鑰加密的安全凈載荷以及消息報(bào)頭,該消息報(bào)頭 指定所選擇加密密鑰的索引。在步驟918處,客戶端應(yīng)用使用在報(bào) 頭中指示的加密密鑰索引來選擇適當(dāng)?shù)乃借€,并且在步驟918處使 用該密鑰來解密凈載荷數(shù)據(jù)。在執(zhí)行由凈載荷指定的應(yīng)用指令時(shí), 繼而在步驟920處,客戶端應(yīng)用102對響應(yīng)進(jìn)4亍加密??梢匀鐖D10 中所示使用相同的密鑰來加密響應(yīng),或者使用任何其他存儲(chǔ)的密鑰 來進(jìn)行加密。在步驟922處,將安全響應(yīng)發(fā)送至應(yīng)用網(wǎng)關(guān)104,并且 在步驟924處使用適當(dāng)?shù)捻憫?yīng)密鑰來解密響應(yīng)。如本領(lǐng)域技術(shù)人員 應(yīng)該理解,使用私有加密密鑰極大地改進(jìn)了通信的安全性,并且使 用 一組加密密鑰而不是使用單個(gè)密鑰,進(jìn)一步提高了這種安全性。
當(dāng)發(fā)送響應(yīng)消息時(shí),客戶端應(yīng)用102使用默認(rèn)的相應(yīng)凈載荷數(shù) 據(jù)的源地址。這在后端104和客戶端應(yīng)用102之間有效地提供了多 個(gè)客戶端-服務(wù)器通信信道。例如,圖ll示出了一種布置,其中客戶 端應(yīng)用102的兩個(gè)實(shí)例(第一實(shí)例1002以及第二實(shí)例1004)經(jīng)由無 線通信網(wǎng)絡(luò)IIO來與應(yīng)用網(wǎng)關(guān)104的兩個(gè)實(shí)例1006、1008進(jìn)行通信。從第一后端系統(tǒng)1008向第二客戶端應(yīng)用1004發(fā)送的消息IOIO在該 消息1010的報(bào)頭中包括第一后端系統(tǒng)1008的地址1012,從而當(dāng)客 戶端應(yīng)用1004發(fā)送相應(yīng)的響應(yīng)1014時(shí),其被尋址至第一后端系統(tǒng) 1008。
與之相比,圖12示出了相同的布置,其中消息1102還包括第 一后端系統(tǒng)1008的地址1012。然而,包含在凈載荷數(shù)據(jù)中的工作流 指令可以通過將響應(yīng)重新定向至代替的另一后端服務(wù)器,來改變該 默認(rèn)行為。通過凈載荷數(shù)據(jù)中的DIVERT (轉(zhuǎn)向)命令來激活這一機(jī) 制,在附錄中進(jìn)一步進(jìn)行了描述。特別地,在此消息1102中,凈載 荷1104包括具有第二后端系統(tǒng)1006的地址的轉(zhuǎn)向指令。因此,在 第二客戶端應(yīng)用1004執(zhí)行此指令之后,響應(yīng)1106被尋址至第二后 端系統(tǒng)1006,而不是發(fā)起包含該指令的消息1102的第一后端系統(tǒng) 1008。因?yàn)榈诙蠖讼到y(tǒng)1006沒有直接訪問客戶端ID和消息ID對、 或者用于客戶端應(yīng)用102的加密密鑰,第二后端系統(tǒng)1006調(diào)用第一 后端系統(tǒng)1008的API,來檢查響應(yīng)數(shù)據(jù)的完整性和真實(shí)性。如果凈 載荷被加密,則第一后端系統(tǒng)1008解密凈載荷,并且通過安全的通 信信道來將其發(fā)送回第二后端系統(tǒng)1006 (例如使用SSL)。在備選 實(shí)施方式中,加密密鑰存儲(chǔ)在交互系統(tǒng)的中央組件中,并且以此方 式來執(zhí)行所有加密和解密。
通信數(shù)據(jù)凈載荷
在客戶端應(yīng)用102與后端系統(tǒng)104之間交換的凈載荷是二進(jìn)制 數(shù)據(jù),即字節(jié)序列。用于該凈載荷的通信信道可以包括SMS或者蜂 窩廣播服務(wù)(CBS)消息;IP/TCP數(shù)據(jù)分組(通過GPRS、 3G或者 其他類型的數(shù)據(jù)網(wǎng)絡(luò));和/或藍(lán)牙數(shù)據(jù)分組。
如圖13所示,每個(gè)數(shù)據(jù)凈載荷具有報(bào)頭1204為前綴,該報(bào)頭 1204指示是否利用加密密鑰來將凈載荷進(jìn)行加密。報(bào)頭數(shù)據(jù)包含存 儲(chǔ)在客戶端應(yīng)用密鑰存儲(chǔ)設(shè)備中的加密密鑰的索引,由此允許客戶 端應(yīng)用102來解密凈載荷數(shù)據(jù)。如圖14中所示,純的凈載荷數(shù)據(jù)(未加密的或者在被解密之后)
包含一系列長度可變的數(shù)據(jù)部分,其指示客戶端應(yīng)用102的動(dòng)態(tài)工 作流執(zhí)行引擎508來構(gòu)造用戶UI工作流。
如圖15中所示,每個(gè)數(shù)據(jù)部分包括類型1402和長度1404數(shù)據(jù) 字段,并跟隨有實(shí)際指令數(shù)據(jù)1406。類型字段是單個(gè)八位字節(jié)或者 字節(jié),定義其后的工作流指令的類型。長度指示指令數(shù)據(jù)1406的八 位字節(jié)或者字節(jié)的數(shù)量。
如上所述,交互系統(tǒng)能夠使用各種不同通信信道中的 一 個(gè)或者 多個(gè),來用于在應(yīng)用網(wǎng)關(guān)104和客戶端應(yīng)用102之間發(fā)送和接收消 息和響應(yīng)。對于這些不同通信信道中的大多數(shù),通信自身是直接的, 其使用對本領(lǐng)域技術(shù)人員可用和已知的標(biāo)準(zhǔn)方法和庫。然而,交互 系統(tǒng)經(jīng)由短消息服務(wù)或者SMS來支持消息和響應(yīng)遞送。在GSM 03.40規(guī)范中定義了 SMS,其定義了對于每個(gè)SMS消息大小的上限。 尤其是,每個(gè)SMS消息能夠包含上至140字節(jié)的數(shù)據(jù),如圖17中 所示,當(dāng)使用7位編碼時(shí),其等于160個(gè)ASCII字符。如GSM 03.40 規(guī)范中所述,交互系統(tǒng)發(fā)送SMS消息,該SMS消息包括8位(二 進(jìn)制)數(shù)據(jù)并且包括7字節(jié)用戶數(shù)據(jù)報(bào)頭或者UDH 1702。 UDH 1702 包括長度字段或者UDHL 1704 (如在GSM 03.40中所規(guī)定,其指定 了以字節(jié)為單位的用戶數(shù)據(jù)報(bào)頭的長度)、以及6字節(jié)用戶數(shù)據(jù)報(bào)
頭字段1706 (指定了凈載荷數(shù)據(jù)1708的目的地地址)。
UDH數(shù)據(jù)1702(指定二進(jìn)制消息的目的地)由移動(dòng)設(shè)備來解譯, 以便將凈載荷數(shù)據(jù)遞送至客戶端應(yīng)用102。除UDH數(shù)據(jù)1702以外, 每個(gè)SMS消息能夠承載133字節(jié)的凈載荷數(shù)據(jù)1708。
如果凈載荷數(shù)據(jù)超過該長度,則將凈載荷數(shù)據(jù)以兩個(gè)或者更多 SMS消息1804來發(fā)送,每個(gè)消息包含上至127字節(jié)的凈載荷數(shù)據(jù) 1806、 1808,如圖18中所示出。這些SMS消息1804具有用戶數(shù)據(jù) 報(bào)頭部分,該用戶數(shù)據(jù)沖艮頭指示它們均屬于連接的(concatenated) 消息,如在GSM 03.40規(guī)范中所描述。當(dāng)以多個(gè)SMS消息發(fā)送凈載 荷時(shí),由后端系統(tǒng)104和客戶端應(yīng)用102使用字節(jié)填充;t幾制。在此機(jī)制中,當(dāng)從后端系統(tǒng)104發(fā)出時(shí),在每個(gè)凈載荷數(shù)據(jù)段1806、 1808 的末端附加值為OxFF的填充或者終止比特1810??蛻舳藨?yīng)用102 去除這些填充比特1810,在將凈載荷數(shù)據(jù)1814傳送至工作流執(zhí)行引 擎408之前,所述填充比特1810表現(xiàn)為連接的凈載荷數(shù)據(jù)中的填塞 字節(jié)1812。使用字節(jié)填充機(jī)制來消除在多種移動(dòng)電話型號中出現(xiàn)的 問題,即,剝離每個(gè)連接的數(shù)據(jù)段最后的比特。
指令編譯器602從編譯器輸出創(chuàng)建凈載荷數(shù)據(jù),以便生成二進(jìn) 制SMS消息。二進(jìn)制消息的構(gòu)造包括如果數(shù)據(jù)的長度超過133字 節(jié)的單個(gè)消息容量,則將凈載荷數(shù)據(jù)1802劃分為多個(gè)SMS消息 1804。圖19示出了此過程包含的步驟的流程圖。
如圖19中所示,當(dāng)經(jīng)由SMS遞送消息或者響應(yīng)時(shí),在步驟1902 處執(zhí)行檢查以確定凈載荷數(shù)據(jù)的大小是否超過133字節(jié)。如果沒有 超過,則在步驟1904處添加用戶數(shù)據(jù)報(bào)頭,并且在步驟1906處壓 縮單個(gè)SMS消息并將其發(fā)送。備選的是,如果靜載荷長度的確超過 單個(gè)SMS消息中可以發(fā)送的最大大小,則在步驟1908處生成連接 的消息的標(biāo)識符,并且在步驟1910處,確定提供凈載荷數(shù)據(jù)所需的 連接的消息的數(shù)量。其后,過程循環(huán)包括步驟1912至1920,其構(gòu)造 適當(dāng)數(shù)量的SMS消息,如下文所示。在步驟1912處,選擇下一個(gè) 凈載荷部分并且將其復(fù)制至當(dāng)前SMS消息的凈載荷。在步驟1914 處,添加包括標(biāo)識符的用戶數(shù)據(jù)報(bào)頭,所述標(biāo)識符指示SMS消息是 此SMS消息集的一部分。在步驟1916處,如上文所述那樣將填充 或者終止字節(jié)附加至凈載荷數(shù)據(jù)。最后,在步驟1918處,發(fā)送結(jié)果 生成的SMS消息。將步驟1912至步驟1918進(jìn)行重復(fù),直到在步驟 1920處的測試確定已經(jīng)發(fā)送了最后一部分凈載荷數(shù)據(jù),并且該過程 繼而終止。
如圖20中所示,通過搜索特定的填塞字節(jié)八位字節(jié)值(在此實(shí) 施方式中是OxFF)并且從凈載荷數(shù)據(jù)中將其去除,來由客戶端應(yīng)用 102處理去除凈載荷數(shù)據(jù)中的填塞字節(jié)。
圖16是示出由交互系統(tǒng)支持的十五個(gè)不同指令的示意圖,其示出了標(biāo)識每個(gè)指令類型的各類型字節(jié)和相應(yīng)指令參數(shù)的結(jié)構(gòu)。在附 錄中提供了關(guān)于各種指令的進(jìn)一步細(xì)節(jié)。
動(dòng)態(tài)工作流執(zhí)行引擎
客戶端應(yīng)用102向用戶呈現(xiàn)多個(gè)用戶界面(UI)窗口 406以及 執(zhí)行用戶不可見的例程。這允許客戶端應(yīng)用102來顯示信息并且捕 獲設(shè)備信息和/或用戶輸入。
UI窗口 406典型地包括如下類型的用戶接口組件和控件
(i) 消息屏幕用以示出文本信息;
(ii) 選擇菜單用以詢問多個(gè)定義選項(xiàng)之一的用戶選擇(即,
單選按鈕);
(iii) 多個(gè)選項(xiàng)用以詢問用戶的一個(gè)或者多個(gè)選項(xiàng)(即,復(fù)選
框);
(iv) 文本輸入用以獲取來自用戶的自由形式文本輸入(文本
框);
(v) 數(shù)字或日期輸入用以獲取用戶輸入數(shù)據(jù),受到類型的限 制;以及
(vi) 當(dāng)在執(zhí)行步驟中出現(xiàn)分支或者跳躍時(shí)顯示的窗口 。
然而,UI窗口 406的這一列表及其實(shí)際屏幕布局可以根據(jù)安裝 有客戶端應(yīng)用102的平臺(即,基于設(shè)備硬件和操作系統(tǒng)軟件的每 個(gè)組合)而有所變化。
客戶端應(yīng)用102實(shí)現(xiàn)工作流執(zhí)行過程2100,如圖21中所示,基 于每個(gè)調(diào)用來執(zhí)行工作流應(yīng)用。在步驟2102處調(diào)用客戶端應(yīng)用102 之后,工作流執(zhí)行過程2100開始,并且在步驟2104處執(zhí)行測試, 以確定是否已經(jīng)因從應(yīng)用網(wǎng)關(guān)104接收到新的凈載荷數(shù)據(jù)而導(dǎo)致調(diào) 用。如果是,則在步驟2105處,獲取新的凈載荷指令,并且繼而在 步驟2110處進(jìn)行解析。否則,如果沒有因接收到新的凈載荷數(shù)據(jù)而 出現(xiàn)調(diào)用,則在步驟2106處執(zhí)行測試,以確定在即時(shí)數(shù)據(jù)存儲(chǔ)設(shè)備 410中是否包含指令。如果是,則在步驟2108處從即時(shí)數(shù)據(jù)存儲(chǔ)設(shè)備410獲取指令,并且繼而在步驟2110處進(jìn)行解析。否則,在步驟 2132處執(zhí)行另一測試,以確定是否已經(jīng)將任何指令集在永久數(shù)據(jù)存 儲(chǔ)設(shè)備412中保存為應(yīng)用。如果不是,則在步驟2134處向用戶顯示 信息消息,以指示在隊(duì)列中不存在應(yīng)用(即時(shí)的或者永久的)。一 旦用戶應(yīng)答此信息消息,或者當(dāng)相應(yīng)超時(shí)時(shí)段已經(jīng)超過時(shí),則終止 客戶端應(yīng)用102。備選的是,如果永久數(shù)據(jù)存儲(chǔ)設(shè)備412包含一個(gè)或 者多個(gè)永久存儲(chǔ)的指令集(即,應(yīng)用),則在步驟2136處,將其向 用戶顯示,并且在步驟2137處過程400暫停,等待用戶選擇其中之 一,或者選擇退出選項(xiàng)。如果在步驟2138處確定用戶已經(jīng)選擇退出 選項(xiàng),則客戶端應(yīng)用102終止。否則,用戶已選擇永久存儲(chǔ)的指令 集,并且在步驟2140處獲取所述指令集,并且繼而在步驟2110處 進(jìn)行解析。
在步驟2110處解析工作流指令之后,在步驟2112處讀取第一 工作流指令或者下一個(gè)工作流指令,并在在步驟2114處執(zhí)行。如果 在步驟2116處確定該指令是UI指令,則在步驟2118處過程等待接 收用戶輸入。 一旦已經(jīng)接收到用戶響應(yīng),則在步驟2120處去除在設(shè) 備106屏幕上顯示的UI窗口 ,并且在步驟2122處存儲(chǔ)任何用戶輸 入。在步驟2124處,執(zhí)行測試以確定該指令是否是工作流中的最后 一個(gè)。如果不是,則過程循環(huán)返回至步驟2112。否則, 一旦已經(jīng)執(zhí) 行了所有指令,則在步驟2126處構(gòu)造響應(yīng)消息,并在步驟2128處 發(fā)送。如果所執(zhí)行的工作流指令存儲(chǔ)在即時(shí)數(shù)據(jù)存儲(chǔ)設(shè)備410中, 則在步驟2130中將其刪除。這終止工作流執(zhí)行流程2100。
解析工作流指令和響應(yīng)數(shù)據(jù)
客戶端應(yīng)用102的工作流執(zhí)行引擎408解譯凈載荷數(shù)據(jù)部分并 由此生成動(dòng)態(tài)UI工作 流。
當(dāng)由工作流執(zhí)行引擎408讀取時(shí),將來自凈載荷數(shù)據(jù)的數(shù)據(jù)部 分進(jìn)行連續(xù)索引,并且這也是工作流執(zhí)行508的默認(rèn)順序。如圖22 中所示,響應(yīng)數(shù)據(jù)包括與接收和執(zhí)行相應(yīng)指令的順序相同的每個(gè)響應(yīng)。當(dāng)執(zhí)行工作流指令并將要獲取響應(yīng)數(shù)據(jù)時(shí),在指令數(shù)據(jù)中包括 參數(shù)名稱,并將用戶響應(yīng)或者系統(tǒng)響應(yīng)與響應(yīng)中的此參數(shù)相關(guān)聯(lián)。 如圖23中所示,當(dāng)工作流完成時(shí),在響應(yīng)數(shù)據(jù)中包括所有指令響應(yīng)。
工作流中的跳轉(zhuǎn)和分支
工作流執(zhí)行引擎408提供一種機(jī)制,以便允許在指令序列中進(jìn)
行分支和跳轉(zhuǎn)。
分支
在整個(gè)工作流中,因?yàn)橹噶羁梢园ㄔ诓煌种е?,因而工?流執(zhí)行引擎408使用分支域區(qū)分對于不同分支的指令響應(yīng)數(shù)據(jù)。分 支域在工作流樹中指定了工作流指令的地址。當(dāng)設(shè)置指令響應(yīng)數(shù)據(jù) 時(shí),響應(yīng)參數(shù)名稱具有相應(yīng)的分支域?yàn)榍熬Y,并且由句號字符分隔。 例如,可以從兩個(gè)不同分支菜單調(diào)用用于獲取具有參數(shù)名稱 "number"的數(shù)字值參數(shù)的用戶輸入的指令 一個(gè)名稱為"第一分支", 而另一個(gè)名稱為"第二分支"。在這兩種情況下,指令返回相同的參 數(shù)名稱"number,,,但是具有不同值。工作流執(zhí)行引擎408將分支域 與參數(shù)名稱相關(guān)聯(lián),以便區(qū)分兩個(gè)響應(yīng)值。由此,在此示例中,第 一值返回為"第一分支.number=xxx,,,而第二值返回為"第二分 支.number二yyy",其中"xxx"和"yyy"表示由用戶輸入的實(shí)際值。圖25 示出了一個(gè)更復(fù)雜的示例,其中菜單選擇是內(nèi)嵌的。
另外,分支域附加有關(guān)于分支菜單選擇的分支名稱。例如,在 具有如圖39中所示的兩個(gè)內(nèi)嵌分支菜單3902"服務(wù)請求"以及 3卯4"水服務(wù)"的應(yīng)用中,當(dāng)用戶選擇菜單3902中的項(xiàng)目3910"水"時(shí), 繼而在后續(xù)分支菜單3904"水服務(wù)"中選擇項(xiàng)目3912"水管破裂",并 且在文本輸入屏幕3906"你的姓名"中填入3914"John Doe",客戶端 應(yīng)用102將內(nèi)在地將響應(yīng)作為"水管破裂.name二JohnDoe"而發(fā)送。當(dāng) 執(zhí)行BRANCHJBACK (分支—返回)命令時(shí),去除先前的分支名稱。 工作流執(zhí)行引擎408使用分支名稱棧來維護(hù)選擇分支名稱的順序。出于可用性原因,當(dāng)使用多分支菜單工作時(shí),重要的是讓用戶
知道用戶是否已經(jīng)訪問了一個(gè)分支。就此,工作流執(zhí)行引擎408通
過在鄰近于該分支處顯示圖像來指示已訪問的分支菜單項(xiàng),以便指
示用戶已經(jīng)訪問了這些分支菜單項(xiàng)。例如,如圖27中所示。
當(dāng)用戶已經(jīng)訪問了用戶輸入屏幕2702來輸入數(shù)據(jù)1時(shí),在鄰近 于第一分支菜單項(xiàng)2704處顯示圖像圖標(biāo)2706,以便清晰標(biāo)記。這允 許用戶可視地將工作流的已經(jīng)被訪問的那些部分與尚未被訪問的那 些部分進(jìn)行區(qū)分。備選的是,可以以不同顏色顯示已訪問的分支, 如由web瀏覽器使用不同顏色來指示已經(jīng)訪問了超鏈接那樣。
回退導(dǎo)航
如圖28中所示,所有用戶界面屏幕包括"返回"導(dǎo)航按鈕2802, 以便允許用戶返回工作流內(nèi)的先前屏幕。這一返回按鈕的位置可以 根據(jù)執(zhí)行客戶端應(yīng)用102的特定移動(dòng)設(shè)備平臺而有所變化。如圖29 中所示,工作流執(zhí)行引擎408維護(hù)導(dǎo)致在屏幕或者顯示器中變化的 指令棧或者有序列表,并且選擇"返回"按鈕導(dǎo)致執(zhí)行返回先前的指
向指令編譯器發(fā)送工作流描述
如上所述,通過使用指令編譯器602的超文本傳輸協(xié)議(HTTP) 接口,開發(fā)者116可以通過提交由指令編譯器602支持的編程語言 編寫的編程指令,來向應(yīng)用網(wǎng)關(guān)104的指令編譯器602發(fā)送工作流 描述。例如,圖30是由應(yīng)用網(wǎng)關(guān)104生成的HTML web頁面的截屏。 wcb頁面包括可滾動(dòng)文本框3002,開發(fā)者118可以以腳本語言直 接向其中輸入命令;以及編譯按鈕3004,當(dāng)按下時(shí),將可滾動(dòng)文本 框3002中的文本提交至指令編譯器602用于編譯。
交互系統(tǒng)的腳本語言是用于描述交互應(yīng)用工作流的高級語言。 其結(jié)構(gòu)類似于BASIC并且可以由具有基礎(chǔ)編程知識的編程人員快速 學(xué)會(huì)。備選的是,可以通過調(diào)用對應(yīng)用網(wǎng)關(guān)API 616的API調(diào)用,來將 工作流描述發(fā)送至指令編譯器602。例如,圖31示出了源代碼列表, 其列出了用以生成并向移動(dòng)電話106發(fā)送工作流指令的J2ME函數(shù) SendWorkflowRequest。在此示例中,工作流指令用于向用戶120顯 示預(yù)訂細(xì)節(jié),并且繼而獲取指示用戶120是否接受或者拒絕該預(yù)訂 的用戶響應(yīng)、以及用戶的姓名和電話號碼。首先,通過創(chuàng)建(在步 驟3102)對象名稱為WorkflowCommand的新的J2ME命令()對象來 初始化工作流API。如下文所述,繼而在步驟3104處添加工作流才艮 頭。繼而,通過調(diào)用作為WorkflowCommand對象的方法而沖是供的 API,以期望的執(zhí)行順序添加工作流指令。通過以一組參數(shù)調(diào)用相應(yīng) API函數(shù)來添加每種類型的工作流指令。例如,(在步驟3106)使 用對象方法AddlnfoMessage來添加向用戶顯示信息屏幕的指令。此 方法的第一自變量提供屏幕的標(biāo)題,并且第二自變量提供被顯示的 實(shí)際文本信息。類似地,方法AddSingleMenu (在步驟3108)添加 向用戶顯示單級菜單(即,單選按鈕)的指令,允許用戶從作為方 法參數(shù)而提供的項(xiàng)目的列表中選擇一項(xiàng)。在此示例中,兩個(gè)項(xiàng)目顯 示為"接受,,和"拒絕,,,并且用戶的響應(yīng)指示用戶120接收或者拒絕預(yù) 訂。
(在步驟3110和步驟3112處)方法AddUserI叩utCmd向用戶
顯示文本串以及文本框,提示用戶來輸入適當(dāng)?shù)妮斎胫?。此函?shù)的 第一參數(shù)查找將與所返回輸入值相關(guān)聯(lián)的參數(shù)名稱。第二自變量提 供向用戶顯示的串,而第三自變量允許開發(fā)者約束輸入的類型;例 如,將輸入類型約束為電話號碼、電子郵件地址等。
最后,(在步驟3114處)AddRedirectHeader方法定義將響應(yīng)重 定向至的地址或者電話號碼,如上所述。在報(bào)頭中還指定將要使用 (例如,是否由SMS、 IP網(wǎng)絡(luò)、藍(lán)牙等使用)的通信信道。
一旦添加了工作流指令,則再次(在步驟3116處)調(diào)用工作流 API,以便編譯指令并且建立將要發(fā)送至客戶端應(yīng)用的凈載荷數(shù)據(jù)。 如果需要,則按需要而多次調(diào)用(在步驟3118處)工作流API以發(fā)送多個(gè)消息。
腳本語言概述
指令是逐行編寫的 .注釋行以〃開始 標(biāo)記行以#開始
通過雙引號字符""來界定字符串參數(shù) 工作流編程結(jié)構(gòu)
逐行按順序地處理命令。提供三個(gè)指令來創(chuàng)建工作流的樹狀結(jié)
構(gòu)BRANCH TO (分支至)、BRANCH BACK (分支返回)以及 GOTO (跳轉(zhuǎn)至)。BRANCH—TO和BRANCE—BACK相結(jié)合使用以 便創(chuàng)建已編譯程序的子程序。GOTO是跳轉(zhuǎn)指令,其允許程序執(zhí)行 跳轉(zhuǎn)至腳本中的指定行。注釋和空行被指令編譯器602忽略。
命令行語法
命令是腳本中的一行,其具有如下結(jié)構(gòu) <命令名稱〉 <字符串參數(shù)〉 <字符串參數(shù)> <標(biāo)記〉
其中
. <命令名稱>是命令。
.<字符串參數(shù)〉是有條件的字符串值,即,由雙引號字符來界定。 例如,"用戶名稱"是字符串參數(shù)。在每個(gè)命令中可以存在一個(gè)以 上的字符串參數(shù)。
-<標(biāo)記>是與該命令相關(guān)聯(lián)的標(biāo)記的名稱。當(dāng)與BRANCH—TO命 令結(jié)合使用時(shí),標(biāo)記可以僅由GOTO命令以及ITEM (項(xiàng)目)命
令使用。
注釋
在語言中不存在塊注釋。注釋行是以〃 (其后跟隨有空格字符的兩個(gè)正斜杠字符)開始的行。
示例
〃這是注釋行
才示記
標(biāo)記是 一 種標(biāo)識行號的方法,從而可以在GOTO中以及 BRANCH—TO的ITEM命令中引用該行。標(biāo)記行以跟隨有空格字符 的# (hash)字符開始。標(biāo)記名稱是從#字符開始的下一個(gè)字。
示例
對于標(biāo)記START, 4于如下所示 # START
將標(biāo)記名稱映射至緊跟標(biāo)記行的命令的索引(即,腳本中的相
對位置)。
腳本中的標(biāo)記必須是唯一的,如果檢測到重復(fù)標(biāo)記,則將出現(xiàn) 編譯錯(cuò)誤。在第一次通過編譯器時(shí)解析所有標(biāo)記,建立在第二次通 過時(shí)將要使用的標(biāo)記和命令索引的映射。
回退導(dǎo)4元
如上所述,默認(rèn)地將"返回,,導(dǎo)航按鈕附加至所有顯示的屏幕。此 按鈕允許在用戶設(shè)備106上執(zhí)行的工作流進(jìn)行回退導(dǎo)航。在大多數(shù) 移動(dòng)電話平臺上,將這一"返回"按鈕映射至右側(cè)動(dòng)作鍵。然而,這 可以根據(jù)電話類型而有所變化。
樹狀導(dǎo)4元
將BRANCH—TO命令、標(biāo)記以及BRANCH—BACK命令進(jìn)行結(jié) 合,這允許工作流支持樹狀執(zhí)行結(jié)構(gòu),如在圖32的源代碼列表以及 圖33的所得顯示屏幕中所示。在下文中將提供詳細(xì)描述。當(dāng)用戶在 工作流屏幕之間導(dǎo)航時(shí),不記憶每個(gè)屏幕的狀態(tài)(項(xiàng)目選擇和用戶
輸入)。示例
下文是用以生成在用戶設(shè)備(諸如,移動(dòng)電話106)上執(zhí)行的交 互應(yīng)用的源代碼列表。所述源代碼定義了一個(gè)工作流,其允許移動(dòng) 電話106的用戶120來生成對于水、電和/或煤氣服務(wù)的服務(wù)請求。 該列表設(shè)置為各自標(biāo)記之下的四組命令或者段落。第一段標(biāo)記為 START,其導(dǎo)致顯示如圖34中所示的主屏幕3402。 BRANCH—TO 命令具有兩個(gè)參數(shù)。第一參數(shù)"serv"定義此分支的分支名稱,而第二 參數(shù)"Service Request (服務(wù)請求)"定義在主屏幕3402頂部處顯示 的標(biāo)題。后續(xù)三個(gè)命令定義可以由用戶選擇以便調(diào)用相應(yīng)工作流分 支的項(xiàng)目。例如,第一 ITEM命令具有兩個(gè)參數(shù)。第一參數(shù)"水"定義 了在主屏幕3402上顯示的文本3404,可以對其進(jìn)行選擇以便調(diào)用相 應(yīng)的工作流分支。第二參數(shù)(在此情況下是"水")是相應(yīng)工作流分 支的標(biāo)記,在此情況下是指該標(biāo)記之下分組的命令的第二組或者段 落。由此,如果用戶導(dǎo)航主屏幕3402來選擇第一項(xiàng)目3404,則工作 流跳轉(zhuǎn)至SELECT ITEMS (選擇項(xiàng)目),導(dǎo)致顯示水服務(wù)選擇屏幕 3406。在此情況下,三個(gè)項(xiàng)目是簡單菜單選擇(而不是工作流分支), 并且由此選擇這些項(xiàng)目的任何一個(gè)導(dǎo)致適當(dāng)?shù)膮?shù),在此情況下, 命名的"水"將被賦予由相應(yīng)項(xiàng)目定義的值。例如,如果用戶選擇第 二項(xiàng)目"滲漏,,3408,則參數(shù)"水"將被賦予值"滲漏"。 一旦已經(jīng)選擇此 項(xiàng)目,則工作流前進(jìn)至如下命令,在此情況下是BRANCH—BACK命 令,其將控制返回主屏幕3402。
以此方式,用戶可以選擇"電,,項(xiàng)目3410,以便分支至 ELECTRICITY(電)工作流,這導(dǎo)致顯示電服務(wù)屏幕3412。類似地, 用戶可以選擇"煤氣,,請求項(xiàng)目3414來導(dǎo)致顯示煤氣服務(wù)屏幕3416。 一旦用戶滿意于由此定義的服務(wù)請求,則選擇"下一個(gè)"按鈕3418或 者"確定"按鈕3420將使執(zhí)行繼續(xù),以便在此示例中執(zhí)行命令"GOTO CONTACTS (跳轉(zhuǎn)至CONTACTS )", 這導(dǎo)致工作流跳轉(zhuǎn)至 CONTACTS (聯(lián)系人)標(biāo)記之后的命令,在此情況下,是顯示姓名輸入屏幕3422并且接著顯示聯(lián)系人號碼屏幕3424的INPUT(輸入) 命令。 一旦已經(jīng)選擇了聯(lián)系人號碼屏幕3424上的"確定"按鈕3426, 則MESSAGE(消息)命令導(dǎo)致顯示向用戶提供信息反饋的服務(wù)信息 屏幕3428,在此情況下,確認(rèn)服務(wù)請求將要或者已經(jīng)發(fā)送至用于處 理用戶請求的適當(dāng)方。
〃程序開始
# START
BRANCH TO
ITEM
ITEM
ITEM
GOTO
"serv""服務(wù)請求" "Water"水 "Electricity"電 "Gas"煤氣
CONTACTS (聯(lián)系人)
# WATER
SELECT
ITEM
ITEM
ITEM
BRANCH BACK
"water""水服務(wù)" "水管破裂" "滲漏" "新連接"
#ELECTRICITY
SELECT
ITEM
ITEM
ITEM
BRANCH BACK
'elect""電服務(wù)" '火"
'新連接" '斷開連接"
#GAS
SELECT ITEM
ITEM
ITEM
BRANCH BACK
""Vtf" nr 々 ,
:似子程序
貧
飛
沐,^
新火
a
g# CONTACTS
INPUT "姓名""你的姓名"任意
INPUT "電話""聯(lián)系人號碼"數(shù)字型 〃在此發(fā)送消息 〃 # END
MESSAGE "服務(wù)信息""將要將您的請求發(fā)送至XXXX"
腳本命令和語法 HEADER命令
HEADER命令用于當(dāng)已經(jīng)執(zhí)行工作流時(shí)在響應(yīng)消息的開始處包 括特定的文本。此命令對于用戶設(shè)備的用戶是不可見的。此命令用 作針對服務(wù)器-客戶端會(huì)話的內(nèi)容標(biāo)識符。
在腳本中可以存在多個(gè)頭部命令。當(dāng)使用HEADER命令來與 BRANCH—TO命令協(xié)作時(shí),基于用戶選擇可以設(shè)置不同響應(yīng)消息前 綴。
語法
HEADER <頭部>
. <頭部〉是預(yù)先考慮的響應(yīng)文本消息的字符串參數(shù)。
示例
HEADER"timesheet"
響應(yīng)
將<頭部〉附接至響應(yīng)消息開始處。如果在響應(yīng)消息中包括多個(gè) 頭部,則響應(yīng)頭部是基于其在工作流中的執(zhí)行順序來預(yù)先考慮的。
DIVERT (轉(zhuǎn)向)命令
DIVERT命令用于將響應(yīng)消息重新定向至與原始指令的源的電 話號碼或地址不同的電話號碼或地址。通常,將響應(yīng)消息發(fā)送回凈載荷的源地址,但是可以通過在工作流中包括DIVERT命令而將響 應(yīng)消息發(fā)送回另一號碼。此命令對用戶是不可見的。在腳本中可以 存在多個(gè)DIVERT命令,但是在工作流中執(zhí)行的最后一個(gè)DIVERT 命令起作用。當(dāng)將此命令與BRANCH—TO命令相結(jié)合時(shí),工作流可 以將響應(yīng)消息發(fā)送至由用戶選擇的源號碼。
語法
DIVERT <地址〉
<地址〉是表示重新定向地址的移動(dòng)號碼的字符串參數(shù)。
示例
DIVERT "+61418366896"
MESSAGE (消息)命令
MESSAGE命令向用戶示出了具有標(biāo)題和消息內(nèi)容的消息。
語法
MESSAGE <標(biāo)題> <消息內(nèi)容>
<標(biāo)題〉是將要顯示的消息的標(biāo)題的字符串參數(shù)。
<消息內(nèi)容〉是字符串參數(shù)。 最后結(jié)果是如圖35中所示的屏幕顯示。
示例
MESSAGE "Hello" "Hello world"
響應(yīng)
此GUI屏幕沒有采集任何用戶輸入以及沒有響應(yīng)數(shù)據(jù)與其相關(guān)聯(lián)。INPUT命令
此命令向用戶顯示具有文本輸入框3602的GUI屏幕以便獲取用 戶輸入,如圖36中所示。在命令中提供了參數(shù)名稱,以便當(dāng)在響應(yīng) 消息中包括用戶輸入數(shù)據(jù)時(shí)設(shè)置其名稱。默認(rèn)的輸入值可以提供為 輸入?yún)?shù)。如果期望,則可以將用戶輸入數(shù)據(jù)約束至特定類型,諸 如數(shù)字、小數(shù)或者電話號碼。然而,用戶輸入約束的實(shí)現(xiàn)依賴于執(zhí) 行客戶端應(yīng)用102的用戶設(shè)備的功能。
語法
INPUT <返回參數(shù)> <標(biāo)記> <類型> <默認(rèn)值〉 . <返回參數(shù)>是用于將要在返回消息中設(shè)置的已輸入值的名稱 的字符串參數(shù)。
<標(biāo)記〉是輸入文本框的標(biāo)題。
<類型〉是將要捕獲的輸入的類型,如下類型是可用的
oANY
oEMAILADDR
oNUMERIC
oPHONENUMBER
oURJL
oDECIMAL
. <默認(rèn)值〉是用于當(dāng)屏幕對用戶可見時(shí),被設(shè)置到輸入文本框 中的可選字符串參數(shù)。如果忽略,則輸入文本框的默認(rèn)值保持為空。
口向應(yīng)
在與相應(yīng)指令中指定的參數(shù)名稱相關(guān)聯(lián)的響應(yīng)消息中包括用戶 輸入數(shù)據(jù)。如果在分支例程(參見BRANCH—TO命令)中執(zhí)行INPUT 命令,則將任何可用域路徑作為參數(shù)名稱的前綴。
<返回參數(shù)> = <值> (不具有域路徑)
〈i或3各徑〉〈返回參凄t〉= <<直〉其中
<值>是用戶輸入的字符串值。該值可以是空值。
. <域路徑〉是在工作流中導(dǎo)致此INPUT命令的分支路徑。
GAUSS (高斯)命令
此命令導(dǎo)致顯示具有滑動(dòng)條或者"高斯,,控件3702的交互屏幕以 提示用戶提供相應(yīng)的響應(yīng)數(shù)據(jù),如圖37中所示。用戶可以將滑動(dòng)條 控件從在命令線上指定的最小值滑動(dòng)至最大值。在與給出參數(shù)名稱 相關(guān)聯(lián)的響應(yīng)消息中包括結(jié)果生成的數(shù)據(jù)。
語法
GAUSS <參數(shù)名稱> <最小值> <最大值〉 <默認(rèn)值>
- <參數(shù)名稱〉是針對將在返回消息中設(shè)置的高斯值的名稱的字 符串參數(shù)。
<最小值>是用戶可以選擇的最小值。
- <最大值>是用戶可以選擇的最大值。
. <默認(rèn)值>是如果用戶沒有選擇任何值時(shí)的默認(rèn)值。此參數(shù)是 可選的,如果不存在,則默認(rèn)值為空。
示例
GAUSS "temper" "1" "10" "5"
口向應(yīng)
如果在分支例程(參見BRANCH—TO命令)中執(zhí)行此命令,則 將任何可用域路徑作為參數(shù)名稱的前綴。 <參數(shù)名稱〉= <值> (不具有域路徑) <域路徑〉 <參數(shù)名稱〉= <值>
GOTO命令此命令允許工作流執(zhí)行引擎406來跳轉(zhuǎn)至特定工作流指令,而
不是按順序前進(jìn)至下一個(gè)指令。此命令的參數(shù)是用于將被定向的工 作流執(zhí)行的指令的標(biāo)記。不存在與此指令相關(guān)聯(lián)的用戶屏幕或者響
應(yīng)數(shù)據(jù)。
語法
GOTO <標(biāo)記〉
, <標(biāo)記〉是指示在執(zhí)行此命令之后工作流執(zhí)行跳轉(zhuǎn)至的命令的 索引的標(biāo)記名稱。
示例
GOTO Hello 〃在執(zhí)行此命令之后,程序跳轉(zhuǎn)至消息"Hello world"。
# Hello
MESSAGE "Hello" "Hello world
SELECT (選擇),SELECT—MULTI (選擇,多選)命令
如圖38中所示,這些命令顯示具有項(xiàng)目列表的屏幕以便從中進(jìn) 行選擇。SELECT命令允許單項(xiàng)選擇,而SELECT—MULTI命令允許 多項(xiàng)選擇屏幕。在由參數(shù)名稱標(biāo)識的響應(yīng)消息中包括用戶選擇。在 多選列表的情況下,在響應(yīng)值數(shù)據(jù)中由分界符字符來分隔所選擇的 值。
語法
SELECT或者SELECT MULTI命令跟隨有ITEM定義(每行一SELECT <參數(shù)名稱〉 <標(biāo)題> ITEM <項(xiàng)目名稱> ITEM <項(xiàng)目名稱> ITEM <項(xiàng)目名稱>
說明書第38/46頁
SELECT—MULTI <參數(shù)名稱〉 <標(biāo)題〉
ITEM <項(xiàng)目名稱>
ITEM <項(xiàng)目名稱〉
ITEM <項(xiàng)目名稱> 其中
. <參數(shù)名稱〉是針對SELECT屏幕而指定返回參數(shù)id的字符串
<標(biāo)題〉是指定屏幕標(biāo)題的字符串參數(shù)。
. <項(xiàng)目名稱〉是指定將在屏幕上顯示的項(xiàng)目的字符串參數(shù)。
示例
〃此示例允許移動(dòng)用戶來選擇所列出選項(xiàng)之一 SELECT "tsk""選擇任務(wù)" ITEM "管理" ITEM "服務(wù)臺" ITEM "客戶端會(huì)議"
〃此示例允許移動(dòng)用戶來選擇列表中的一個(gè)或者多個(gè)用戶名稱 SELECT—MULTI "name""選擇用戶" ITEM"用戶1" ITEM "用戶2" ITEM "用戶3"對于多選命令,顯示選擇列表中的每個(gè)項(xiàng)目,其鄰近指示用戶 是否已經(jīng)選擇該項(xiàng)目的圖標(biāo)。在大多數(shù)移動(dòng)設(shè)備上,顯示"打標(biāo)記" 按鈕以便允許用戶對選擇的高亮項(xiàng)目打標(biāo)記。"下一個(gè)"按鈕也附 加于該屏幕,以允許用戶導(dǎo)航到下一個(gè)工作流指令。在某些移動(dòng)設(shè) 備平臺上,將"下一個(gè)"按鈕直接映射至一個(gè)移動(dòng)電話按鈕。
響應(yīng)
SELECT命令
<參數(shù)名稱〉= <項(xiàng)目〉 SELECTMULTI命令
<參數(shù)名稱> = <項(xiàng)目 >; <項(xiàng)目 >; <項(xiàng)目>
其中
- <項(xiàng)目 >是所選擇的項(xiàng)目名稱。 多選響應(yīng)可以為空。
BRANCH—TO命令
此命令向用戶提供用于選擇的項(xiàng)目列表,并且當(dāng)選擇一個(gè)項(xiàng)目 時(shí),工作流執(zhí)行分支至指定的命令。此屏幕的行為類似于上文所述 的SELECT屏幕。 一旦工作流執(zhí)行開始從新的目標(biāo)指令執(zhí)行,則其 遵循默認(rèn)的連續(xù)順序。當(dāng)執(zhí)行BRANCH—BACK命令時(shí),工作流執(zhí)行 引擎返回至先前的BRANCH—TO命令來執(zhí)行。然而,BRANCH—TO 命令不需要BRANCH—BACK命令來操作。工作流可以接著分支至最 后的命令,而并不返回至分支菜單。
為了從BRANCH—TO命令前進(jìn)至下一屏幕,提供了"下一個(gè)"按 鈕。在某些電話上,將此按鈕映射至移動(dòng)設(shè)備上的一個(gè)電話按鍵。 然而在多數(shù)電話上,當(dāng)用戶選擇BRANCH—TO屏幕(類似于 SELECT—MULTI命令)上的選項(xiàng)時(shí),將此按鈕映射至名稱為"下一 個(gè)"的軟鍵。
在響應(yīng)消息中不存在附接至此屏幕的特定用戶值。然而,將所選擇的分支項(xiàng)目附加至分支域路徑。此域路徑繼而被附加至正在分 支目標(biāo)中執(zhí)行的任何輸入屏幕的參數(shù)名稱。
語法
BRANCH—TO命令跟隨有ITEM定義(每行一個(gè))。
BRANCH—TO <參數(shù)名稱> <標(biāo)題> ITEM <項(xiàng)目〉 <標(biāo)記> ITEM <項(xiàng)目 > <標(biāo)記> ITEM <項(xiàng)目〉 <標(biāo)記>
其中
.<參數(shù)名稱〉是針對BRANCH—TO屏幕而指定返回參數(shù)id的字
符串參數(shù)。
- <標(biāo)題〉是指定屏幕標(biāo)題的字符串參數(shù)。
<項(xiàng)目〉是指定在屏幕上顯示的項(xiàng)目的字符串參數(shù)。
- <標(biāo)記〉是利用"#"字符在工作流中指定的可用標(biāo)記名稱。
示例
# EnterBetAmount
INPUT "bet""輸入賭注總額"DECIMAL BRANCH BACK
#SelectBetAmount
SELECT "bet""選擇以美元為單位的賭注總額" ITEM "100" ITEM "200" ITEM "300"BRANCH BACK
BRANCH—TO "b""選擇下注的隊(duì)伍" ITEM "Melbourne" EnterBetAmount ITEM "Geelong" SelectBetAmmount GOTO END
#END
MESSAGE "Info""請選擇'是,以便允許發(fā)送響應(yīng)消息"
響應(yīng)
利用在分支菜單中選擇的<項(xiàng)目〉來附加至域路徑。
-繼而,將該域路徑附加至在分支目標(biāo)中不包括的任何輸入屏
幕的參數(shù)名稱。在示例腳本中,在響應(yīng)消息中出現(xiàn)時(shí)的"賭注"總額
考L婆t名稱是Melbourne.bet:〈i^注^f直〉。
BRANCH—BACK命令
此命令對用戶不可見,其提供從分支導(dǎo)航返回的功能。工作流 可以具有多個(gè)上繞(wired叩)的分支,并且結(jié)果是樹形結(jié)構(gòu)。 BRANCH—BACK命令允許在此樹形結(jié)構(gòu)中向上導(dǎo)4元。標(biāo)記以及 BRANCH—BACK命令的結(jié)合允許將一組工作流命令結(jié)合至一個(gè)例 程,在工作流執(zhí)行期間可以多次引用該例程。
語法
BRANCH BACK
STORE—PERMANENT命令
此命令指示工作流來將整個(gè)凈載荷數(shù)據(jù)存儲(chǔ)至持久性存儲(chǔ)設(shè)
備。在此命令參數(shù)中設(shè)置標(biāo)題,允許客戶端應(yīng)用來向用戶顯示所存儲(chǔ)的凈載荷數(shù)據(jù)。此命令并不導(dǎo)致在響應(yīng)消息中的任何用戶數(shù)據(jù)。 語法
STORE—PERMANENT <標(biāo)題> 其中
. <標(biāo)題>是指示將要在持久性列表中顯示的工作流凈載荷數(shù)據(jù) 標(biāo)題的字符串參數(shù)。當(dāng)由用戶手工開始客戶端應(yīng)用并且沒有等待執(zhí) 行即時(shí)凈載荷數(shù)據(jù)時(shí),向用戶顯示此持久性列表。
示例
STORE PERMANENT "消息一"
CLEAR—PERNAMENT命令
此命令清除先前由STORE—PERMANENT命令保存的所有持久 性工作流凈載荷數(shù)據(jù)。執(zhí)行此命令不導(dǎo)致響應(yīng)消息中的任何數(shù)據(jù)。
語法
CLEAR PERNAMENT
EXECUTE (執(zhí)行)命令
此命令對移動(dòng)設(shè)備操作系統(tǒng)進(jìn)行請求以便獲取URL地址。其結(jié) 果可以是,進(jìn)行電話呼叫或者啟動(dòng)電話上的互聯(lián)網(wǎng)瀏覽器連接至指 定URL地址。此命令的行為可能由于設(shè)備功能而在不同設(shè)備型號之
間有所變化。
語法
EXECUTE <url地址〉 其中
.<url地址>是描述將要發(fā)送至J2ME平臺的請求的URL地址的字符串參數(shù)。 示例
為了向+61418366896移動(dòng)號碼發(fā)起移動(dòng)電話呼叫 EXECUTE "tel:+61418366896"
為了啟動(dòng)移動(dòng)電話上的互聯(lián)網(wǎng)瀏覽器訪問A C M E移動(dòng)網(wǎng)站 EXECUTE "http:〃mobile.acme.com"
響應(yīng)
如果需要進(jìn)行移動(dòng)電話呼叫,則移動(dòng)設(shè)備將請求用戶是否可以 進(jìn)行移動(dòng)電話呼叫。如果需要啟動(dòng)互聯(lián)網(wǎng)瀏覽器,則應(yīng)用將請求用 戶許可,以便打開連接到指定URL的互聯(lián)網(wǎng)連接。
CONFIGURATION (配置)命令
從用戶Z系統(tǒng)數(shù)據(jù)構(gòu)建響應(yīng)消息。使用一定數(shù)量的默認(rèn)分界符字 符來將數(shù)據(jù)部分以及名稱-值分隔符來進(jìn)行分隔。當(dāng)命令包括在凈載 荷數(shù)據(jù)中時(shí),該命令可以改變響應(yīng)消息的分界符字符,以及指示名 稱部分是否包括在響應(yīng)消息中。
語法
CONFIGURATION <配置字符串〉 其中 <配置字符串>包括以下配置字符
.第一字符在響應(yīng)中包括參數(shù),如果將其設(shè)置為"0",則響應(yīng) 消息僅具有值;如果將其設(shè)置為'T,,則響應(yīng)消息具有名稱=值 -第二字符響應(yīng)部分分界符,默認(rèn)為"," .第三字符等于字符,默認(rèn)為"=" .第四字符多選選項(xiàng),默認(rèn)為";" .第五字符屏幕路徑分界符,默認(rèn)為""示例
CONFIGURATION "0尸;."
此配置命令指示工作流執(zhí)行來從響應(yīng)消息中排除參數(shù)名稱。
SYSTEM—PROPERTY命令
此命令指示工作流執(zhí)行來讀取系統(tǒng)屬性并且在響應(yīng)中返回結(jié) 果。如果忽略參數(shù)名稱,則與響應(yīng)數(shù)據(jù)相關(guān)聯(lián)的參數(shù)名稱是系統(tǒng)屬性。
語法
SYSTEM—PROPERTY <屬性名稱> <參數(shù)名稱> 其中
-<屬性名稱>是將被讀取的系統(tǒng)屬性。在J2ME平臺上,屬性示 例々口下
microedition.profiles
microedition.configuration
.<參數(shù)名稱〉是可選字符串參數(shù)。如果忽略,則代替的是,屬性 名稱用作響應(yīng)中的參數(shù)名稱。
示例
SYSTEM—PROPERTY "microedition.profiles" SYSTEM PROPERTY "microedition.profiles" "midp"
口向應(yīng)
在響應(yīng)消息中包括系統(tǒng)屬性值作為名稱=值的對。應(yīng)用對名稱-值的對所應(yīng)用的所有規(guī)則。這些規(guī)則包括改變分界符參數(shù)以及在 響應(yīng)消息中是否包括名稱部分。
<系統(tǒng)屬性> = <值〉(如果省略參數(shù)名稱)
<參數(shù)名稱〉= <值> (如果存在參數(shù)名稱)NOP命令
NOP是不操作命令。該命令在與標(biāo)記結(jié)合使用時(shí)是有用的。
語法
NOP
SET—KEYS命令
該命令設(shè)置由移動(dòng)設(shè)備上的按鍵的索引來指定的加密密鑰。
語法
SET—KEYS <按鍵索引〉 <按鍵>
其中<按鍵索引>是指示將要在客戶端應(yīng)用102上設(shè)置的按鍵索 引的字符串參數(shù)。 <按鍵>是包含將被更新的實(shí)際按鍵的字符串參數(shù)。
在不脫離在上文中參考附圖所述的本發(fā)明的范圍的情況下,各 種修改對于本領(lǐng)域技術(shù)人員是易見的。
從上文的說明書中易見的是,在此描述的交互系統(tǒng)和過程允許 開發(fā)者向一個(gè)或者多個(gè)用戶設(shè)備106(諸如,移動(dòng)電話)動(dòng)態(tài)地按需 發(fā)送可定制工作流指令。對于開發(fā)者來說,響應(yīng)數(shù)據(jù)的生成、安全 遞送、執(zhí)行和安全返回均由交互系統(tǒng)以透明方式處理,由此對于開 發(fā)者隱藏了這些方面的所有細(xì)節(jié),從而大大簡化了提供交互應(yīng)用以 及與一個(gè)或者多個(gè)用戶進(jìn)行的準(zhǔn)實(shí)時(shí)交互。經(jīng)由SMS的工作流指令 提供是特別有利的,這是由于可以假定其受到當(dāng)前可用的所有移動(dòng) 電話的支持。然而,由于SMS通信是全部由交互系統(tǒng)管理的,可以 由交互系統(tǒng)的運(yùn)營商來建立可能要求的任何額外SMS服務(wù),由此使 得開發(fā)者不需要建立其自身的獨(dú)立額外SMS服務(wù)。通過平衡從使用 交互系統(tǒng)的所有開發(fā)者或者SMS流量集合導(dǎo)致的SMS流量的真實(shí) 數(shù)量,這大大簡化了提供新的交互應(yīng)用,并且還允許交互系統(tǒng)的運(yùn) 營商在較低成本提供這些服務(wù)。本領(lǐng)域技術(shù)人員應(yīng)該理解,在不脫離廣泛描述的本發(fā)明的精神 或范圍的情況下,可以對在特定實(shí)施方式中示出的本發(fā)明進(jìn)行各種 變化和/或修改。由此,在所有方面中,認(rèn)為本實(shí)施方式僅是示意性 的而不是限制性的。
權(quán)利要求
1.一種向連接到網(wǎng)絡(luò)的移動(dòng)用戶設(shè)備遞送指令的方法,所述方法包括以下步驟接收交互工作流;將所述交互工作流轉(zhuǎn)換至由所述移動(dòng)用戶設(shè)備可執(zhí)行形式的所述指令;以及向所述移動(dòng)用戶設(shè)備發(fā)送包括所述指令的消息。
2. 根據(jù)權(quán)利要求1所述的方法,其中所述接收所述交互工作流 的步驟包括以下步驟接收以高級編程或者腳本語言編碼的所述交互工作流。
3. 根據(jù)權(quán)利要求1或者2所述的方法,其中所述接收所述交互 工作流的步驟包括以下步驟從外部或者第三方接收所述交互工作流。
4. 根據(jù)前述權(quán)利要求的任一項(xiàng)所述的方法,其中所述發(fā)送所述 消息的步驟包括以下步驟發(fā)送用于由在所述移動(dòng)用戶設(shè)備上安裝 的應(yīng)用執(zhí)行的指令集。
5. 根據(jù)權(quán)利要求4所述的方法,其中所述發(fā)送所述指令集的步 驟包括以下步驟發(fā)送用于所述設(shè)備的所述指令集,以便與所述移 動(dòng)用戶設(shè)備的用戶進(jìn)行交互。
6. 根據(jù)權(quán)利要求5所述的方法,其中所述發(fā)送所述消息的步驟 包括以下步驟發(fā)送唯一消息標(biāo)識符。
7. 根據(jù)權(quán)利要求6所述的方法,進(jìn)一步包括以下步驟所述移 動(dòng)用戶設(shè)備接收所述指令集以及所述唯一 消息標(biāo)識符。
8. 根據(jù)權(quán)利要求7所述的方法,其中所述移動(dòng)用戶設(shè)備接收所 述指令集以及所述唯 一 消息標(biāo)識符的所述步驟包括以下步驟接收 所述指令集,用于由所述應(yīng)用的工作流執(zhí)行引擎組件轉(zhuǎn)換至移動(dòng)用 戶設(shè)備系統(tǒng)代碼。
9. 根據(jù)權(quán)利要求7或者8所述的方法,進(jìn)一步包括以下步驟從所述移動(dòng)用戶設(shè)備接收對于所述指令的響應(yīng)。
10. 根據(jù)權(quán)利要求9所述的方法,其中所述接收響應(yīng)的步驟包括以下步驟從所述設(shè)備接收響應(yīng)標(biāo)識符。
11. 根據(jù)權(quán)利要求10所述的方法,其中所述方法包括以下步驟 將所述唯 一 >'肖,包、標(biāo)識符與所述響應(yīng)標(biāo)識符進(jìn)行比較,以確認(rèn)所接收 到的消息的真實(shí)性。
12. 根據(jù)前述權(quán)利要求中的任一項(xiàng)所述的方法,其中轉(zhuǎn)換所述 指令的所述步驟包括使所述指令適應(yīng)設(shè)備操作系統(tǒng)。
13. 根據(jù)前述權(quán)利要求中的任一項(xiàng)所述的方法,其中所述移動(dòng) 用戶設(shè)備是多個(gè)移動(dòng)用戶設(shè)備中的一個(gè),以及所述方法還包括以下 步驟從包括用于所述多個(gè)用戶設(shè)備的各自規(guī)格的數(shù)據(jù)庫中接收所 述移動(dòng)用戶設(shè)備的規(guī)格。
14. 根據(jù)權(quán)利要求13所述的方法,其中所述轉(zhuǎn)換所述交互工作 流的步驟包括使所述指令適應(yīng)所述規(guī)格。
15. 根據(jù)前述權(quán)利要求中的任一項(xiàng)所述的方法,其中所述發(fā)送 所述消息的步驟包括以下 一 個(gè)或者多個(gè)預(yù)備步驟對所述指令進(jìn)行 壓縮、編;馬和加密。
16. 根據(jù)前述權(quán)利要求中的任一項(xiàng)所述的方法,其中所述發(fā)送 所述消息的步驟包括以下步驟經(jīng)由蜂窩網(wǎng)絡(luò)的短消息服務(wù)(SMS) 發(fā)送所述消息。
17. 根據(jù)權(quán)利要求16所述的方法,其中所述經(jīng)由SMS發(fā)送所 述消息的步驟包括以下步驟將所述消息劃分成為多個(gè)消息以便滿 足SMS的一個(gè)或者多個(gè)標(biāo)準(zhǔn)。
18. 根據(jù)權(quán)利要求1至15中的任一項(xiàng)所述的方法,其中所述發(fā) 送所述消息的步驟包括以下 一 個(gè)或者多個(gè)步驟經(jīng)由蜂窩網(wǎng)絡(luò)的小 區(qū)廣播服務(wù)(CBS)來發(fā)送所述消息,作為通過GPRS或者3G網(wǎng)絡(luò) 的IP/TCP數(shù)據(jù)分組來發(fā)送所述消息,以及作為通過藍(lán)牙連接的數(shù)據(jù) 分組來發(fā)送所述消息。
19. 根據(jù)前述權(quán)利要求中的任一項(xiàng)所述的方法,還包括以下步驟檢查所述移動(dòng)用戶設(shè)備是否希望接收從所述交互工作流獲取的所述指令。
20. 根據(jù)權(quán)利要求19所述的方法,其中所述檢查步驟包括向 所述移動(dòng)用戶設(shè)備的所述用戶發(fā)送請求以便接受從所述交互工作流 獲取的所述指令。
21. 根據(jù)權(quán)利要求3所述的方法,其中接收所述交互工作流的 所述步驟包括以下預(yù)備步驟從所述外部或者第三方來接收針對應(yīng) 用編程接口 (API)的請求。
22. 根據(jù)權(quán)利要求21所述的方法,其中所述接收所述交互工作 流的步驟包括以下預(yù)備步驟打開應(yīng)用編程接口。
23. 根據(jù)前述權(quán)利要求中的任一項(xiàng)所述的方法,還包括以下步 驟向所述設(shè)備發(fā)出命令以便更新或者刪除保存于所述移動(dòng)用戶設(shè) 備上的永久性數(shù)據(jù)存儲(chǔ)設(shè)備的指令序列。
24. —種包括用于向連接到網(wǎng)絡(luò)的移動(dòng)用戶設(shè)備遞送指令的可 執(zhí)行指示的計(jì)算機(jī)軟件,所述指示包括以下步驟接收交互工作流;將所述交互工作流轉(zhuǎn)換至由所述移動(dòng)用戶設(shè)備可執(zhí)行形式的所 述指令;以及向所述移動(dòng)用戶設(shè)備發(fā)送包括所述指令的消息。
25. —種向連接到網(wǎng)絡(luò)的用戶設(shè)備上安裝的應(yīng)用遞送指令的方 法,所述方法包括以下步驟4妻收交互工作流;將所述交互工作流轉(zhuǎn)換至由所述應(yīng)用可執(zhí)行形式的所述指令;以及向所述用戶設(shè)備處的所述應(yīng)用發(fā)送包括所述指令的消息。
全文摘要
公開了一種向連接到網(wǎng)絡(luò)(110)的移動(dòng)用戶設(shè)備(106)遞送指令(206)的方法。所述方法包括以下步驟接收交互工作流(202),將所述交互工作流轉(zhuǎn)換至由所述移動(dòng)用戶設(shè)備(106)可執(zhí)行形式的所述指令(206);以及向所述移動(dòng)用戶設(shè)備(106)發(fā)送包括所述指令(206)的消息(208)。
文檔編號H04W8/24GK101606400SQ200780038721
公開日2009年12月16日 申請日期2007年10月19日 優(yōu)先權(quán)日2006年10月19日
發(fā)明者D·A·恩戈 申請人:豐碩技術(shù)有限公司