專(zhuān)利名稱(chēng):用于通知遞送的可擴(kuò)展用戶(hù)環(huán)境系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算系統(tǒng)中的通知,尤其涉及一種用于控制來(lái)自多個(gè)來(lái)源并根據(jù)用戶(hù)環(huán)境的的通知遞送的系統(tǒng)。
背景技術(shù):
在計(jì)算機(jī)系統(tǒng)中,通知可以采用來(lái)自程序的信號(hào)的形式,它向用戶(hù)指出指定的事件已發(fā)生。這種通知可以包含文本、聲音和圖形的各種元素。其它屬性也可以被包括在該通知內(nèi),例如,優(yōu)先級(jí)、發(fā)送該通知的人(關(guān)于諸如電子郵件或即時(shí)消息通信等通道)、以及該通知何時(shí)到期。通知也可以包括某些代碼元素,以便該用戶(hù)可以與該通知交互并啟動(dòng)任意代碼(例如,點(diǎn)擊該通知內(nèi)的按鈕或文本,這些按鈕和文本可以致使啟動(dòng)新的程序或?qū)Ξ?dāng)前正在運(yùn)行的程序采取行動(dòng))。
操作系統(tǒng)可以創(chuàng)建通知,以讓用戶(hù)知道網(wǎng)絡(luò)連通性和更新。使用“聯(lián)系人列表”的即時(shí)消息通信程序可以在屏幕上繪制通知,以便讓用戶(hù)知道該聯(lián)系人列表有什么情況正發(fā)生或聯(lián)系人何時(shí)啟動(dòng)即時(shí)消息對(duì)話。其它程序可以提供繪制在顯示器的類(lèi)似區(qū)域內(nèi)的類(lèi)似通知。關(guān)于這些類(lèi)型的通知的一個(gè)問(wèn)題是它們通常不了解其它通知,從而有時(shí)會(huì)導(dǎo)致通知被繪制在其它通知之上。
關(guān)于現(xiàn)有通知系統(tǒng)的另一個(gè)問(wèn)題是它們可能會(huì)致使通知被不適當(dāng)?shù)剡f送或在不適當(dāng)?shù)臅r(shí)間被遞送。例如,對(duì)于提供全屏幕演示的用戶(hù),在該演示期間讓其它程序在屏幕上繪制通知可能是不適當(dāng)?shù)?。可能繪制這類(lèi)不適當(dāng)?shù)耐ㄖ某绦虻睦邮羌磿r(shí)消息通信程序,該即時(shí)消息通信程序在操作系統(tǒng)的后臺(tái)運(yùn)行,并且當(dāng)聯(lián)系人列表中的聯(lián)系人登錄或啟動(dòng)即時(shí)消息時(shí),繪制這類(lèi)通知。對(duì)于用戶(hù)而言,演示期間的這種類(lèi)型的“中斷”可能是不合需要的。
本發(fā)明針對(duì)提供一種克服前述和其它缺點(diǎn)的系統(tǒng)。更明確地說(shuō),本發(fā)明針對(duì)一種用于控制來(lái)自多個(gè)來(lái)源的通知的遞送的系統(tǒng),它在確定每個(gè)通知的適當(dāng)處理時(shí)考慮用戶(hù)環(huán)境。
發(fā)明概述提供一種用于控制通知遞送的系統(tǒng)。根據(jù)本發(fā)明的一個(gè)方面,該系統(tǒng)代理(broker)并串行化來(lái)自多個(gè)來(lái)源的通知的遞送。此外,提供用戶(hù)環(huán)境的共享概念,用于為這些通知中的每一個(gè)確定適當(dāng)?shù)奶幚?。根?jù)這些方面,由系統(tǒng)所遞送的通知可以被認(rèn)為更有價(jià)值,因?yàn)樗鼈兪窃谟脩?hù)更易于接收它們時(shí)被遞送的。這些方面也規(guī)定公用規(guī)則,這些公用規(guī)則幫助用戶(hù)排除不合需要的通知。
根據(jù)本發(fā)明的另一個(gè)方面,用戶(hù)環(huán)境由操作系統(tǒng)和任意程序來(lái)聲明。在一個(gè)實(shí)施例中,用戶(hù)環(huán)境包括可能是真或假的條件,以及如果條件為真則要遵循的指令。例如,條件可能是“當(dāng)用戶(hù)正在收聽(tīng)音樂(lè)時(shí)”,關(guān)于它的指令可能是“在屏幕上遞送通知,但無(wú)聲音”。一般而言,關(guān)于用戶(hù)環(huán)境的條件可以被認(rèn)為是系統(tǒng)假定的狀態(tài),該狀態(tài)按某種方法使用戶(hù)不可用于通知遞送,或者使應(yīng)該遞送該通知的方法不同于啟動(dòng)過(guò)它的程序發(fā)送它的方式。用戶(hù)可能處于被認(rèn)為是“不可用”的狀態(tài),在此情況中,通知既不被遞送,也不被保留,直到用戶(hù)變成“可用”。例如,如果用戶(hù)正在運(yùn)行全屏幕應(yīng)用程序,其中,該應(yīng)用程序正在使用或正被顯示在顯示屏幕的完全區(qū)域上,那么,該用戶(hù)可能被認(rèn)為是不可用的?;蛘撸脩?hù)可能是“可用的”,但處于這種狀態(tài)通知需要被修改以適合于該用戶(hù)。
根據(jù)本發(fā)明的另一個(gè)方面,除了聲明環(huán)境的操作系統(tǒng)以外,程序向該系統(tǒng)注冊(cè),并聲明它們所提供的環(huán)境以及它對(duì)通知的影響(按照繪制在屏幕上是否適當(dāng)、適合于繪制在屏幕上的侵入等級(jí)、以及聲音是否適當(dāng)或應(yīng)該按什么相對(duì)音量來(lái)播放聲音),然后告訴該系統(tǒng)環(huán)境是真還是假。在一個(gè)實(shí)施例中,在將要遞送通知的時(shí)候,環(huán)境也可以被評(píng)估為真或假。在一個(gè)實(shí)施例中,該系統(tǒng)也可以跟蹤調(diào)用程序的進(jìn)程;并且,如果該進(jìn)程不再存在,那么,環(huán)境可以被復(fù)位為假。通過(guò)跟蹤進(jìn)程,可以避免某些不合需要的情況,例如,應(yīng)用程序聲明用戶(hù)為正在忙碌,隨后崩潰,然后讓用戶(hù)陷入一種他們已被聲明為不可用于接收通知的狀態(tài)。
根據(jù)本發(fā)明的另一個(gè)方面,可以有為通知的繪制而指定的不同的侵入等級(jí)。換言之,根據(jù)用戶(hù)環(huán)境,可以有關(guān)于通知的繪制的梯度,以便可以有采取所繪制的通知的形式的不同的侵入等級(jí)。例如,標(biāo)準(zhǔn)通知可以自由地在客戶(hù)機(jī)區(qū)域內(nèi)加以繪制,并簡(jiǎn)要地遮掩窗口。如果用戶(hù)在稍微有限制的環(huán)境中,那么,通知可以自由地示出,但只按侵入性較小的方式,例如,它可能不被允許繪制在另一個(gè)窗口之上。作為另一個(gè)例子,如果用戶(hù)正在運(yùn)行最大化的應(yīng)用程序,那么,設(shè)置可以是用戶(hù)環(huán)境稍微受到限制,因?yàn)橛脩?hù)已清楚地作出陳述他們想要其當(dāng)前應(yīng)用程序獲得整個(gè)客戶(hù)機(jī)區(qū)域。在此情況下,通知可以仍然被允許繪制,但只可以使它們出現(xiàn)在工具條內(nèi)。通知繪制形式的這種類(lèi)型的降低的侵入性可減少通知的影響,并可減少認(rèn)知負(fù)載。
根據(jù)本發(fā)明的另一個(gè)方面,所提供的環(huán)境被展示給用戶(hù),并可以按照對(duì)遞送的影響而被關(guān)閉(例如,用戶(hù)不同意程序?qū)Νh(huán)境的評(píng)估)或被更改。
根據(jù)本發(fā)明的另一個(gè)方面,用戶(hù)可以定義規(guī)定應(yīng)該如何遞送包含指定元素的通知的規(guī)則。例如,用戶(hù)規(guī)則可以規(guī)定從“John Doe”那里接收的以及在主題行內(nèi)有“緊急”的任何通知應(yīng)該被立即遞送。在一個(gè)實(shí)施例中,這類(lèi)用戶(hù)規(guī)則被給予勝過(guò)用戶(hù)環(huán)境的優(yōu)先級(jí)。使用戶(hù)可以獲得這些用戶(hù)規(guī)則,以供根據(jù)用戶(hù)的偏好來(lái)加以修改。
附圖簡(jiǎn)述通過(guò)參考以下的詳細(xì)說(shuō)明并結(jié)合附圖,本發(fā)明的前述各個(gè)方面和許多附帶優(yōu)點(diǎn)中將變得更容易明白,同時(shí)能夠獲得更好的理解。在附圖中
圖1是適合用于實(shí)現(xiàn)本發(fā)明的通用計(jì)算機(jī)系統(tǒng)的框圖;圖2是流程圖,示出了用于根據(jù)本發(fā)明來(lái)處理通知的通用例程;圖3是流程圖,示出了用于聲明用戶(hù)環(huán)境的操作系統(tǒng)或任意程序的例程;圖4是流程圖,示出了用于在調(diào)用通知API時(shí)將用戶(hù)環(huán)境評(píng)估為真或假的例程;圖5是流程圖,示出了用于調(diào)整用戶(hù)環(huán)境和創(chuàng)建新的用戶(hù)規(guī)則的例程;圖6是流程圖,示出了用于根據(jù)用戶(hù)環(huán)境和用戶(hù)規(guī)則來(lái)處理通知的例程;圖7是流程圖,示出了用于實(shí)現(xiàn)基于通知的內(nèi)容和用戶(hù)環(huán)境的用戶(hù)規(guī)則的例程;圖8是流程圖,示出了用于推遲通知的遞送的例程;圖9是流程圖,示出了用于根據(jù)各種限制性設(shè)置來(lái)確定如何繪制通知的例程;以及圖10是流程圖,示出了用于根據(jù)各種限制性設(shè)置來(lái)確定通知的音量級(jí)別的例程。
較佳實(shí)施例的詳細(xì)描述本發(fā)明針對(duì)一種用于遞送通知的系統(tǒng)。在現(xiàn)有系統(tǒng)中,通常有想要將通知發(fā)送給用戶(hù)的眾多競(jìng)爭(zhēng)元素,其中每個(gè)競(jìng)爭(zhēng)元素設(shè)計(jì)其自己用于發(fā)送這些通知的方法。一般沒(méi)有一個(gè)競(jìng)爭(zhēng)元素了解其它通知并因此往往繪制在彼此之上和彼此的應(yīng)用程序之上,當(dāng)每個(gè)競(jìng)爭(zhēng)元素同時(shí)選擇呈現(xiàn)其各自的通知的指示時(shí),這會(huì)導(dǎo)致沖突。此外,沒(méi)有用戶(hù)環(huán)境的共享概念,從而導(dǎo)致一些通知被不適當(dāng)?shù)剡f送或在不適當(dāng)?shù)臅r(shí)間被遞送。本發(fā)明通過(guò)構(gòu)建通知作為操作系統(tǒng)的豐富的一部分,來(lái)解決這些問(wèn)題,使得本發(fā)明所提供的用于通知的用戶(hù)界面變得類(lèi)似,從而停止相互之間的沖突,因?yàn)橄到y(tǒng)適當(dāng)?shù)卮聿⒋谢淦聊簧系某尸F(xiàn)。此外,本發(fā)明所提供的通知可以被認(rèn)為更有價(jià)值,因?yàn)樗鼈兪窃谟脩?hù)更易于接收它們時(shí)被遞送的,此外,公用規(guī)則的運(yùn)用可幫助用戶(hù)排除不合需要的通知。
圖1和下文意在簡(jiǎn)要概括地描述可以在其中實(shí)現(xiàn)本發(fā)明的合適的計(jì)算環(huán)境。雖然未作要求,但是將在諸如程序模塊等由個(gè)人計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般環(huán)境中描述本發(fā)明。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類(lèi)型的例程、程序、特征、組件、數(shù)據(jù)結(jié)構(gòu)等。如本領(lǐng)域的技術(shù)人員將會(huì)理解的,可以利用其它計(jì)算機(jī)系統(tǒng)配置,包括手持設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程的消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)等,來(lái)實(shí)踐本發(fā)明。也可以在分布式計(jì)算環(huán)境中實(shí)踐本發(fā)明,其中,由通過(guò)通信網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程記憶存儲(chǔ)設(shè)備中。
參考圖1,用于實(shí)現(xiàn)本發(fā)明的示例性系統(tǒng)包括常規(guī)個(gè)人計(jì)算機(jī)20形式的通用計(jì)算設(shè)備,常規(guī)個(gè)人計(jì)算機(jī)20包括處理單元21、系統(tǒng)存儲(chǔ)器22、以及將包括系統(tǒng)存儲(chǔ)器22的各種系統(tǒng)組件耦合到處理單元21的系統(tǒng)總線23。系統(tǒng)總線23可以是幾種類(lèi)型的總線結(jié)構(gòu)中的任一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線、以及使用各種總線體系結(jié)構(gòu)中的任一種的局部總線。系統(tǒng)存儲(chǔ)器包括只讀存儲(chǔ)器(ROM)24和隨機(jī)存取存儲(chǔ)器(RAM)25?;据斎?輸出系統(tǒng)(BIOS)26被存儲(chǔ)在ROM 24中,它包含例如在啟動(dòng)期間有助于在個(gè)人計(jì)算機(jī)20內(nèi)的元件之間傳送信息的基本例程。個(gè)人計(jì)算機(jī)20還包括用于從硬盤(pán)39讀取或?qū)ζ鋵?xiě)入的硬盤(pán)驅(qū)動(dòng)器27、用于從可移動(dòng)磁盤(pán)29讀取或?qū)ζ鋵?xiě)入的磁盤(pán)驅(qū)動(dòng)器28、以及用于從可移動(dòng)光盤(pán)31(例如,CD-ROM或其它光學(xué)介質(zhì))讀取或?qū)ζ鋵?xiě)入的光盤(pán)驅(qū)動(dòng)器30。硬盤(pán)驅(qū)動(dòng)器27、磁盤(pán)驅(qū)動(dòng)器28和光盤(pán)驅(qū)動(dòng)器30分別通過(guò)硬盤(pán)驅(qū)動(dòng)器接口32、磁盤(pán)驅(qū)動(dòng)器接口33和光驅(qū)接口34而被連接到系統(tǒng)總線23。這些驅(qū)動(dòng)器及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)為個(gè)人計(jì)算機(jī)20提供計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的非易失性存儲(chǔ)。雖然這里所描述的示例性環(huán)境使用硬盤(pán)39、可移動(dòng)磁盤(pán)29和可移動(dòng)光盤(pán)31,但是,本領(lǐng)域的技術(shù)人員應(yīng)該理解,在示例性操作環(huán)境中,也可以使用可以存儲(chǔ)可由計(jì)算機(jī)訪問(wèn)的數(shù)據(jù)的其它類(lèi)型的計(jì)算機(jī)可讀介質(zhì),例如,盒式磁帶、閃存卡、數(shù)字視頻盤(pán)、Bernoulli磁帶匣、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)等。
多個(gè)程序模塊可以被存儲(chǔ)在硬盤(pán)39、磁盤(pán)29、光盤(pán)31、ROM 24或RAM 25上,包括操作系統(tǒng)35、一個(gè)或多個(gè)應(yīng)用程序36、其它程序模塊37和程序數(shù)據(jù)38。用戶(hù)可以通過(guò)輸入設(shè)備(例如,鍵盤(pán)40和定點(diǎn)設(shè)備42)來(lái)將命令和信息輸入個(gè)人計(jì)算機(jī)20。其它輸入設(shè)備(未示出)可以包括話筒、操縱桿、游戲墊、圓盤(pán)式衛(wèi)星天線、掃描儀等等。這些和其它輸入設(shè)備通常通過(guò)耦合到系統(tǒng)總線23的串行端口接口46連接到處理單元21,但也可以由其它接口,例如,并行端口、游戲端口、或通用串行總線(USB)來(lái)連接。監(jiān)視器47的形式的顯示器也經(jīng)由接口,例如,視頻卡或適配器48而被連接到系統(tǒng)總線23。一個(gè)或多個(gè)揚(yáng)聲器57也可以經(jīng)由接口,例如,音頻適配器56而被連接到系統(tǒng)總線23。除顯示器和揚(yáng)聲器以外,個(gè)人計(jì)算機(jī)通常還包括其它外圍輸出設(shè)備(未示出),例如,打印機(jī)。
個(gè)人計(jì)算機(jī)20可以使用與一臺(tái)或多臺(tái)個(gè)人計(jì)算機(jī)(例如,遠(yuǎn)程計(jì)算機(jī)49)的邏輯連接而在聯(lián)網(wǎng)環(huán)境中進(jìn)行操作。遠(yuǎn)程計(jì)算機(jī)49可以是另一臺(tái)個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它普通網(wǎng)絡(luò)節(jié)點(diǎn),它通常包括以上相對(duì)于個(gè)人計(jì)算機(jī)20而描述的許多或所有元件。圖1中所描繪的邏輯連接包括局域網(wǎng)(LAN)51和廣域網(wǎng)(WAN)52。這類(lèi)聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中很常見(jiàn)。
當(dāng)用于LAN聯(lián)網(wǎng)環(huán)境中時(shí),個(gè)人計(jì)算機(jī)20通過(guò)網(wǎng)絡(luò)接口或適配器53連接到局域網(wǎng)51。當(dāng)用于WAN聯(lián)網(wǎng)環(huán)境中時(shí),個(gè)人計(jì)算機(jī)20通常包括調(diào)制解調(diào)器54或用于通過(guò)廣域網(wǎng)52(例如,因特網(wǎng))建立通信的其它裝置。調(diào)制解調(diào)器54可以是內(nèi)置的,也可以是外置的,它經(jīng)由串行端口接口46而被連接到系統(tǒng)總線23。在聯(lián)網(wǎng)環(huán)境中,相對(duì)于個(gè)人計(jì)算機(jī)20或其各個(gè)部分而描繪的程序模塊可以被存儲(chǔ)在遠(yuǎn)程記憶存儲(chǔ)設(shè)備中。將會(huì)理解,所示的網(wǎng)絡(luò)連接起示例性作用,可以使用在計(jì)算機(jī)之間建立通信鏈路的其它手段。
在圖1所示的那種類(lèi)型的系統(tǒng)上實(shí)現(xiàn)的本發(fā)明提供了向用戶(hù)的通知遞送。更明確地說(shuō),如從以下描述中將會(huì)更好地理解的,本發(fā)明能夠控制來(lái)自多個(gè)來(lái)源并根據(jù)用戶(hù)環(huán)境的通知的遞送。
在一個(gè)實(shí)施例中,根據(jù)本發(fā)明的用戶(hù)環(huán)境系統(tǒng)可以包括三個(gè)元素,它們被加以比較,用于決定如何處理通知。第一個(gè)元素是用戶(hù)的環(huán)境(如可由操作系統(tǒng)和擴(kuò)展它的任意程序提供的)。第二個(gè)元素是用戶(hù)的規(guī)則和偏好。第三個(gè)元素是通知本身(它包含諸如可以與用戶(hù)的規(guī)則相匹配的數(shù)據(jù)和屬性等元素)。
如以下將更詳細(xì)地描述,本發(fā)明通過(guò)操作系統(tǒng)和其它程序聲明用戶(hù)環(huán)境,其后系統(tǒng)代理用戶(hù)環(huán)境和規(guī)則來(lái)進(jìn)行操作。通知由調(diào)入該系統(tǒng)的其它程序來(lái)引發(fā)。比較用戶(hù)的環(huán)境、規(guī)則、以及通知的元素,然后確定應(yīng)該對(duì)通知采取什么措施。關(guān)于可以對(duì)通知采取什么措施的各種選項(xiàng)的例子包括拒絕(如果該通知不被允許繪制或制造噪聲,并且該通知將永遠(yuǎn)不會(huì)被用戶(hù)看見(jiàn))、推遲(保留該通知,直到用戶(hù)環(huán)境改變或用戶(hù)的規(guī)則規(guī)定隨后適于遞送)、遞送(該通知被允許根據(jù)用戶(hù)的環(huán)境和規(guī)則來(lái)遞送)、以及路由(用戶(hù)規(guī)則指出該通知應(yīng)該被交給另一個(gè)系統(tǒng),而不管該通知是否也被允許在本系統(tǒng)中遞送)。
以下更詳細(xì)地描述用于遞送通知的各種例程。一般而言,用戶(hù)可以處于被認(rèn)為“不可用”的狀態(tài),在此情況下,通知既不被遞送,也不被保留,直到用戶(hù)變成“可用的”。例如,如果用戶(hù)正在運(yùn)行全屏幕應(yīng)用程序,那么該用戶(hù)可被認(rèn)為是“不可用”的?;蛘?,用戶(hù)可以是“可用的”,但處于這種狀態(tài)通知需要被修改,以適合于該用戶(hù)。例如,如果用戶(hù)正在收聽(tīng)音樂(lè)或在開(kāi)會(huì),那么,用戶(hù)可能已指出通知應(yīng)該被遞送到該用戶(hù)的屏幕,但它們制造的聲音應(yīng)該更輕或根本不制造聲音。
如上所述,用戶(hù)環(huán)境部分地確定是否在用戶(hù)的屏幕上顯示通知。當(dāng)顯示通知時(shí),可以基于用戶(hù)環(huán)境內(nèi)的某些梯度來(lái)顯示它。換言之,存在可以被指定的所繪制的通知的形式的不同的侵入等級(jí)。例如,標(biāo)準(zhǔn)通知自由地彈出到客戶(hù)機(jī)區(qū)域內(nèi),并簡(jiǎn)要地遮掩窗口。如果用戶(hù)在稍微有限制性的環(huán)境中,那么,通知可以自由地顯示,但只按侵入性較小的方式,例如,它可能不被允許繪制在另一個(gè)窗口之上。作為另一個(gè)例子。在用戶(hù)正在運(yùn)行最大化的應(yīng)用程序的一個(gè)實(shí)施例中,默認(rèn)設(shè)置可以是這意味著環(huán)境稍微受到限制,并且,用戶(hù)已清楚地陳述他們想要該應(yīng)用程序獲得整個(gè)客戶(hù)機(jī)區(qū)域。在這個(gè)設(shè)置中,通知可能仍然被允許繪制,但只可以使它出現(xiàn)在工具條內(nèi)。換言之,通知繪制形式的這種類(lèi)型的降低的侵入性可減少該通知的影響,并可總體上減少認(rèn)知負(fù)載。
圖2是流程圖,示出了用于根據(jù)本發(fā)明來(lái)處理通知的例程200。在框202處,操作系統(tǒng)或任意程序調(diào)用通知應(yīng)用程序編程接口(API)。在框204處,根據(jù)如操作系統(tǒng)和任意程序所設(shè)置的以及如用戶(hù)進(jìn)一步批準(zhǔn)或修改的用戶(hù)環(huán)境,并根據(jù)如用戶(hù)所設(shè)置的用戶(hù)規(guī)則,來(lái)評(píng)估通知的各個(gè)元素。在框206處,根據(jù)用戶(hù)環(huán)境和用戶(hù)規(guī)則,來(lái)遞送、推遲、拒絕、發(fā)送、或處理通知。
以下將更詳細(xì)地描述用戶(hù)環(huán)境和用戶(hù)規(guī)則。在一個(gè)實(shí)施例中,用戶(hù)環(huán)境包括可能是真或假的條件,以及當(dāng)條件為真時(shí)用于確定應(yīng)該如何處理通知的指令。一般而言,用戶(hù)環(huán)境的條件可以被認(rèn)為是系統(tǒng)假定的狀態(tài),該狀態(tài)按某種方法使用戶(hù)不可用于通知遞送,或者使遞送通知的方法不同于啟動(dòng)過(guò)它的程序發(fā)送它的方式。換言之,在一個(gè)實(shí)施例中,用戶(hù)環(huán)境可以被認(rèn)為是“當(dāng)條件X為真,則這是應(yīng)該對(duì)傳入的通知所采取的措施”的陳述。例子將會(huì)是“當(dāng)我的音樂(lè)播放器正在為我播放音樂(lè)時(shí),傳入的通知應(yīng)該在屏幕上顯示,但不播放聲音”。另一個(gè)例子將會(huì)是“當(dāng)任何應(yīng)用程序正在以全屏幕模式運(yùn)行時(shí),應(yīng)該將傳入的通知推遲到以后”。
對(duì)于這類(lèi)用戶(hù)環(huán)境,在一個(gè)實(shí)施例中,用戶(hù)也可以定義用于處理傳入通知的特殊規(guī)則,從而可以規(guī)定對(duì)于用戶(hù)環(huán)境的指令的特殊例外。作為例子,用戶(hù)規(guī)則可以規(guī)定“當(dāng)我從‘John Doe’那里接收新的電子郵件時(shí),并且該文本中有‘緊急’,并被標(biāo)記為‘高優(yōu)先級(jí)’,那么遞送該電子郵件,而不管其它用戶(hù)環(huán)境如何”。換言之,在這個(gè)例子中,該用戶(hù)規(guī)則為用戶(hù)環(huán)境提供例外,否則,用戶(hù)環(huán)境將會(huì)指出此時(shí)遞送對(duì)于傳入電子郵件的通知是不適當(dāng)?shù)?。?duì)于根據(jù)其來(lái)評(píng)估用戶(hù)規(guī)則的通知的各個(gè)元素,這些可以包括比如文本、聲音、圖形和其它屬性,例如,優(yōu)先級(jí)、發(fā)送該通知的人(關(guān)于諸如電子郵件或即時(shí)消息通信等通道)、該通知何時(shí)到期、以及某些代碼元素等事物,以便用戶(hù)可以與通知交互并啟動(dòng)任意代碼(例如,點(diǎn)擊該通知內(nèi)的按鈕或文本可以致使啟動(dòng)新的程序或?qū)Ξ?dāng)前正在運(yùn)行的程序采取行動(dòng)[例如,刪除電子郵件])。
圖3是流程圖,示出了用于聲明用戶(hù)環(huán)境(context)的操作系統(tǒng)或任意程序的例程220。在框222處,操作系統(tǒng)或程序聲明默認(rèn)環(huán)境及其對(duì)用戶(hù)的忙碌狀態(tài)的影響。換言之,程序向系統(tǒng)注冊(cè),并提供用戶(hù)環(huán)境,包括它們對(duì)通知的影響(例如,繪制在屏幕上是否適當(dāng)、聲音是否適當(dāng)、或應(yīng)該按什么相對(duì)的音量來(lái)播放聲音)。作為例子,音樂(lè)播放器程序可以聲明默認(rèn)環(huán)境,該默認(rèn)環(huán)境規(guī)定“當(dāng)音樂(lè)播放器正在為用戶(hù)播放音樂(lè)時(shí),傳入的通知應(yīng)該在屏幕上顯示,但不播放聲音”。作為另一個(gè)例子,操作系統(tǒng)可以聲明規(guī)定“當(dāng)任何應(yīng)用程序正在以全屏幕模式運(yùn)行時(shí),應(yīng)該將傳入的通知推遲到以后的某個(gè)時(shí)間”的環(huán)境。
返回到圖3,在框224處,操作系統(tǒng)或程序?qū)⒃摫宦暶鞯沫h(huán)境設(shè)置為真或假。例如,對(duì)于聲明“當(dāng)音樂(lè)播放器正在播放音樂(lè)時(shí),傳入的通知應(yīng)該在屏幕上顯示,但不播放聲音”的環(huán)境的音樂(lè)播放器,該音樂(lè)播放器程序也將這個(gè)所聲明的環(huán)境設(shè)置為當(dāng)前為真或假。換言之,該音樂(lè)播放器程序指出該音樂(lè)播放器當(dāng)前正在播放音樂(lè)是真還是假。如以下將會(huì)更詳細(xì)地描述,在一個(gè)實(shí)施例中,在調(diào)用通知API的時(shí)候,或在重新評(píng)估用戶(hù)規(guī)則和例外的時(shí)候,也可以評(píng)估對(duì)環(huán)境是真還是假的確定。作為另一特征,系統(tǒng)也可以跟蹤調(diào)用程序的進(jìn)程句柄,以便如果進(jìn)程終止,而沒(méi)有首先將環(huán)境值復(fù)位到其默認(rèn)的“假”值,那么,系統(tǒng)一檢測(cè)到初始進(jìn)程不再存在,就將復(fù)位該環(huán)境值(在一個(gè)實(shí)施例中,進(jìn)程句柄狀態(tài)被設(shè)置成用信號(hào)通知進(jìn)程何時(shí)終止,并且,該狀態(tài)變化由觀察該進(jìn)程句柄的系統(tǒng)獲得)。這確保如果進(jìn)程出乎意料地終止或忘記復(fù)位環(huán)境,則進(jìn)一步的通知遞送將不會(huì)受到過(guò)度的影響。例如,如果在以上的例子中,音樂(lè)播放器程序已被關(guān)閉,并且,該進(jìn)程不再存在,那么,該環(huán)境可以被自動(dòng)復(fù)位為假。作為另一個(gè)例子,如果程序最初聲明用戶(hù)為正在忙碌,但隨后程序崩潰,使得該進(jìn)程不再存在,那么,該環(huán)境可以被自動(dòng)設(shè)置為假,而不是讓用戶(hù)陷入將不會(huì)接收通知的狀態(tài)。在任一情況下,不管環(huán)境是被活動(dòng)地設(shè)置還是作功能來(lái)評(píng)估的,在一個(gè)實(shí)施例中,這些環(huán)境通常可以被解析為要么是真、要么是假。
返回到圖3,在框226處,環(huán)境信息被添加到系統(tǒng)中所存儲(chǔ)的用戶(hù)環(huán)境。這個(gè)過(guò)程由聲明環(huán)境的附加程序來(lái)重復(fù)。此外,如上所述,當(dāng)用戶(hù)打開(kāi)和關(guān)閉不同的程序并承擔(dān)不同的任務(wù)時(shí),已被聲明的環(huán)境是真還是假的狀態(tài)將會(huì)隨時(shí)間的推移而改變。
如上所述,在一個(gè)實(shí)施例中,注冊(cè)環(huán)境是聲明性過(guò)程。如以下將會(huì)更詳細(xì)地描述,根據(jù)本發(fā)明的一個(gè)方面,通過(guò)注冊(cè)用戶(hù)環(huán)境,可以為用戶(hù)呈現(xiàn)這些環(huán)境的列表,以便如果用戶(hù)不同意這些環(huán)境參數(shù),那么,用戶(hù)可以選擇不接受某些環(huán)境或更改它們的含義。如上所述,在一個(gè)實(shí)施例中,環(huán)境可以包括可以為真或假的條件,以及關(guān)于當(dāng)條件為真時(shí)要對(duì)通知采取什么措施的指令。在這方面,用戶(hù)環(huán)境可以包括特定的編程元素,例如人類(lèi)可讀字符串(供最終用戶(hù)知道含義);唯一標(biāo)識(shí)符(例如,全球唯一標(biāo)識(shí)符,稱(chēng)為GUID),以便程序可以告訴操作系統(tǒng)該環(huán)境是否為真;以及可以包括就繪制在屏幕上的通知而言該環(huán)境意味著什么(如可以包括侵入等級(jí)、聲音和音量)的陳述的指令。環(huán)境也可以是動(dòng)態(tài)的,以下將更詳細(xì)地描述這一點(diǎn)。
圖4是流程圖,示出了在調(diào)用通知API時(shí)供環(huán)境被評(píng)估為真或假的例程230。在判別框232處,確定當(dāng)調(diào)用通知API時(shí)是否將要評(píng)估用戶(hù)環(huán)境。如果將要評(píng)估用戶(hù)環(huán)境,那么,該例程前進(jìn)到框234。如果當(dāng)調(diào)用通知API時(shí)將不會(huì)評(píng)估用戶(hù)環(huán)境,那么該例程結(jié)束。在框234處,用戶(hù)環(huán)境被評(píng)估為真或假。
如圖3和圖4所示的,并且如上所述,環(huán)境可以被主動(dòng)設(shè)置,或者,它可以是在有關(guān)的時(shí)間被評(píng)估的功能。作為例子,程序可以主動(dòng)指出用戶(hù)正在收聽(tīng)音樂(lè)。作為另一個(gè)例子,當(dāng)評(píng)估通知時(shí),程序可能已注冊(cè)其回叫,以便在評(píng)估該通知的時(shí)候,系統(tǒng)詢(xún)問(wèn)該程序該環(huán)境是否為真。第二個(gè)過(guò)程會(huì)特別重要的情況的一個(gè)例子是當(dāng)用戶(hù)環(huán)境與用戶(hù)規(guī)則結(jié)合來(lái)形成動(dòng)態(tài)環(huán)境時(shí)。(以下將更詳細(xì)地描述用戶(hù)規(guī)則。)用戶(hù)環(huán)境與用戶(hù)規(guī)則結(jié)合的特定例子將會(huì)是當(dāng)用戶(hù)已設(shè)置規(guī)定“我此刻正在會(huì)見(jiàn)的人可以總是不管我的忙碌狀態(tài)而發(fā)送通知給我”的規(guī)則。在此情況下,必須按照用戶(hù)正在會(huì)見(jiàn)何人,來(lái)進(jìn)一步評(píng)估“用戶(hù)正在開(kāi)會(huì)”的用戶(hù)環(huán)境。在這個(gè)例子中,處理會(huì)議的程序可以將此注冊(cè)為動(dòng)態(tài)環(huán)境,并且,當(dāng)評(píng)估通知時(shí),依照該環(huán)境(否則,它不會(huì)被主動(dòng)地聲明為真或假,因?yàn)閰⒓訒?huì)議的人可以隨時(shí)間的推移而改變)來(lái)評(píng)估發(fā)送該通知的人。換言之,該特定的例子要求按照取決于其它人的環(huán)境的用戶(hù)規(guī)則來(lái)評(píng)估用戶(hù)的環(huán)境。
圖5是流程圖,示出了用戶(hù)可以用于調(diào)整環(huán)境并創(chuàng)建新規(guī)則的例程240。在框242處,確定用戶(hù)是否希望調(diào)整環(huán)境。如果用戶(hù)不希望調(diào)整環(huán)境,那么,該例程前進(jìn)到判定框246,以下將更詳細(xì)地描述這一點(diǎn)。如果用戶(hù)希望調(diào)整環(huán)境,那么,該例程前進(jìn)到框244,在那里,用戶(hù)修改環(huán)境。在一個(gè)實(shí)施例中,可以按允許用戶(hù)要么關(guān)閉環(huán)境(例如,用戶(hù)不同意程序?qū)Νh(huán)境的評(píng)估)、要么按照對(duì)通知遞送的影響來(lái)更改環(huán)境的方式,來(lái)向用戶(hù)展示所提供的環(huán)境。作為更具體的例子,用戶(hù)環(huán)境可以包括各種事物,比如“當(dāng)任何應(yīng)用程序正在以全屏幕模式運(yùn)行時(shí)”;“當(dāng)我正在播放音樂(lè)或視頻時(shí)”;“當(dāng)我的會(huì)議管理器顯示我正在開(kāi)會(huì)時(shí)”;或“當(dāng)打開(kāi)我的不在辦公室助理時(shí)”。對(duì)于這些中的每一項(xiàng),可以允許用戶(hù)作出指定指令的選擇,當(dāng)該給定的條件為真時(shí),傳入的通知應(yīng)該遵循所選擇的過(guò)程。這些指令可以指定各種事物,比如是否或如何在屏幕上繪制通知、以及通知將制造的聲音或音量。對(duì)于音量,用戶(hù)可以在給定的條件之下指定所需音量的百分比。對(duì)于用于在屏幕上繪制通知的選項(xiàng),可以向用戶(hù)提供各個(gè)選項(xiàng),例如,根本不繪制通知、或只在指定的外部顯示器上繪制通知、或在當(dāng)前屏幕上繪制通知。對(duì)于通知的繪制,可以指定不同的侵入等級(jí)。例如,如果用戶(hù)正在運(yùn)行最大化的應(yīng)用程序,使得環(huán)境稍微受到限制,則侵入性設(shè)置可以是通知仍然可以繪制,但只可以出現(xiàn)在工具條內(nèi)。
返回到圖5,在判定框246處,確定用戶(hù)是否希望創(chuàng)建新的用戶(hù)規(guī)則。如果用戶(hù)不希望創(chuàng)建新的用戶(hù)規(guī)則,則該例程前進(jìn)到判定框250,以下將更詳細(xì)地描述這一點(diǎn)。如果用戶(hù)希望創(chuàng)建新的用戶(hù)規(guī)則,則該例程前進(jìn)到框248,在那里創(chuàng)建新規(guī)則。一般而言,用戶(hù)規(guī)則規(guī)定應(yīng)該如何處理包含指定元素的通知。例如,規(guī)則可以規(guī)定來(lái)自指定的人的通知應(yīng)該總是被立即遞送;并且,該規(guī)則可以應(yīng)用于所有通知,而不管哪個(gè)程序啟動(dòng)過(guò)該通知,只要它來(lái)自該指定的人。作為更具體的例子,其它用戶(hù)規(guī)則可以針對(duì)各種事物,比如“關(guān)于華盛頓州布雷默頓市的MSN汽車(chē)的交通警報(bào)”和“來(lái)自John Doe的重要的電子郵件”。作為關(guān)于來(lái)自John Doe的重要的電子郵件的用戶(hù)規(guī)則的例子,該規(guī)則可以規(guī)定來(lái)自John Doe的、文本中有“緊急”的、并被標(biāo)記為“高優(yōu)先級(jí)”的任何電子郵件都應(yīng)該遵循指定的處理?xiàng)l件。這些處理?xiàng)l件可以指定該通知應(yīng)該被立即遞送,并且,應(yīng)該要求用戶(hù)確認(rèn)它。一般而言,要求用戶(hù)確認(rèn)通知意味著存在該通知的侵入性形式的稍微引發(fā)的升級(jí),這體現(xiàn)在該通知將保留在屏幕上,直到用戶(hù)明確地消除它為止。在一個(gè)實(shí)施例中,要求用戶(hù)確認(rèn)只可以經(jīng)由用戶(hù)規(guī)則來(lái)設(shè)置。作為另一個(gè)例子,規(guī)則也可以指定將要以指定音量為通知播放的自定義聲音,以便為該用戶(hù)提供特殊通知已到達(dá)的警報(bào)。也可以選擇關(guān)于在用戶(hù)的“正常”和“忙碌”條件期間應(yīng)該如何處理通知的不同設(shè)置,這一點(diǎn)可以由用戶(hù)的環(huán)境來(lái)確定。處理指令也可以包括比如用于該通知的路由選項(xiàng)等事物,例如,“將通知從John Doe遞送到我的尋呼機(jī)”。在一個(gè)實(shí)施例中,當(dāng)評(píng)估環(huán)境時(shí),最具限制性的、當(dāng)前真實(shí)的環(huán)境是所應(yīng)用的環(huán)境。當(dāng)評(píng)估用戶(hù)規(guī)則時(shí),它意味著特定的通知已與該用戶(hù)創(chuàng)建的規(guī)則相匹配,在此情況下,從已與該通知匹配的用戶(hù)規(guī)則中應(yīng)用最具侵入性的設(shè)置。換言之,在用戶(hù)規(guī)則中,用戶(hù)已指定某事具有重要性,并且,該過(guò)程意在遵循該用戶(hù)的偏好。如果兩個(gè)規(guī)則之間有沖突,那么,應(yīng)用最具侵入性的設(shè)置。
在一個(gè)實(shí)施例中,用戶(hù)規(guī)則也可以針對(duì)控制來(lái)自特殊通知服務(wù)的通知的遞送。例如,根據(jù)通知服務(wù)來(lái)提供通知的操作系統(tǒng)可以為用戶(hù)提供用來(lái)修改如何遞送通知的方法。例如,指定的通知服務(wù)可以提供“關(guān)于西雅圖的交通警報(bào)”,并且,用戶(hù)可以編輯該遞送,以便當(dāng)接收這類(lèi)通知時(shí),系統(tǒng)應(yīng)該“顯示該通知并播放聲音”。
返回到圖5,在判定框250處,確定用戶(hù)是否希望調(diào)整已現(xiàn)存的用戶(hù)規(guī)則中的任一個(gè)。如果用戶(hù)不希望調(diào)整這些規(guī)則中的任一個(gè),則該例程結(jié)束。如果用戶(hù)希望調(diào)整用戶(hù)規(guī)則,則該例程前進(jìn)到框252,在那里,用戶(hù)修改規(guī)則。
如以上根據(jù)圖3-5而描述的,用戶(hù)環(huán)境和用戶(hù)規(guī)則由操作系統(tǒng)、程序和用戶(hù)來(lái)設(shè)置。該系統(tǒng)根據(jù)用戶(hù)的偏好來(lái)適當(dāng)?shù)卮砗痛谢@些通知的遞送??梢韵蛴脩?hù)展現(xiàn)這些用戶(hù)環(huán)境和用戶(hù)規(guī)則,以便用戶(hù)可以修改或調(diào)整各種環(huán)境和規(guī)則,或創(chuàng)建新規(guī)則。這為用戶(hù)提供用來(lái)管理關(guān)于如何處理通知的偏好的集中方法。將會(huì)理解,這允許用戶(hù)有效地管理可能想要將通知發(fā)送給用戶(hù)的計(jì)算系統(tǒng)中的許多競(jìng)爭(zhēng)元素。
圖6是流程圖,示出了用于根據(jù)用戶(hù)環(huán)境和用戶(hù)規(guī)則來(lái)處理通知的例程300。在框302處,操作系統(tǒng)或任意程序調(diào)用通知API。在判定框304處,確定是否應(yīng)該將通知記入通知?dú)v史。如果要記入該通知,則該例程前進(jìn)到框306,在那里該通知被記入歷史。如果通知不被記入,則該例程前進(jìn)到判定框310。
在判定框310處,確定通知是否與任何用戶(hù)規(guī)則相匹配。如果通知與任何用戶(hù)規(guī)則相匹配,則該例程前進(jìn)到框312,在那里遵循這些用戶(hù)規(guī)則(根據(jù)該通知內(nèi)容加上用戶(hù)環(huán)境),并且該例程繼續(xù)到點(diǎn)A,點(diǎn)A在圖7中延續(xù)。如果在判定框310處,該通知不與任何用戶(hù)規(guī)則相匹配,則該例程繼續(xù)到判定框320。
在一個(gè)實(shí)施例中,用戶(hù)規(guī)則總是比當(dāng)前的用戶(hù)環(huán)境重要。如上所述,用戶(hù)規(guī)則可以基于通知的任何元素。例如,基于啟動(dòng)該通知的人的評(píng)估的規(guī)則可以被應(yīng)用于所有通知,而不管哪個(gè)程序啟動(dòng)該通知,只要它來(lái)自該規(guī)則所基于的人(例如,“John Doe”總是可以聯(lián)系到我)。此外,即使在將會(huì)導(dǎo)致無(wú)法繪制通知的環(huán)境中,通知也可以被繪制在屏幕上(例如,“與我會(huì)見(jiàn)的人總是可以發(fā)給我通知”,即使用戶(hù)環(huán)境一般規(guī)定用戶(hù)在會(huì)議期間將不會(huì)接收通知)。
返回到圖6,在判定框320處,確定通知目前是否可以繪制(只根據(jù)用戶(hù)環(huán)境)。如果通知目前可以繪制,則該行程前進(jìn)到框322,在那里繪制通知,并提供適當(dāng)?shù)穆曇艉鸵袅俊H绻壳袄L制通知是不適當(dāng)?shù)?,則該例程前進(jìn)到判定框330。
在判定框330處,確定通知是否已到期。如果通知已到期,則該例程前進(jìn)到框332,在那里銷(xiāo)毀該通知。如果通知還沒(méi)有到期,則該例程前進(jìn)到框334,在那里推遲該通知,并且,該例程繼續(xù)到點(diǎn)B,點(diǎn)B在圖7中延續(xù)。
圖7是流程圖,示出了用于根據(jù)指定的用戶(hù)規(guī)則來(lái)處理通知的例程350。如上所述,從來(lái)自圖6的點(diǎn)A繼續(xù)該例程。如圖7中所示的,在判定框352處,確定是否應(yīng)該路由通知。如果將不路由通知,則該例程繼續(xù)到判定框362,以下將更詳細(xì)地描述這一點(diǎn)。如果通知將要被路由,則該例程前進(jìn)到框354,在那里,按指定來(lái)路由該通知。當(dāng)路由通知時(shí),它指出該通知包含與要求該通知被交給另一個(gè)系統(tǒng)的用戶(hù)規(guī)則相匹配的元素。如果用戶(hù)忙碌,則可能會(huì)發(fā)生這種情況;或者,它可能會(huì)在與用戶(hù)規(guī)則中所指定的準(zhǔn)則相匹配的每個(gè)通知上發(fā)生,而不管用戶(hù)是否不可用。作為例子,具有詞“緊急”的通知可以總是被轉(zhuǎn)發(fā)到用戶(hù)的尋呼機(jī),然而,可以根據(jù)用戶(hù)規(guī)則和環(huán)境的組合來(lái)只路由其它通知。
路由指令的一些例子包括“將這個(gè)通知轉(zhuǎn)發(fā)到電子郵件地址”;“將這個(gè)通知轉(zhuǎn)發(fā)到另一臺(tái)PC”;“將這個(gè)通知轉(zhuǎn)發(fā)到尋呼機(jī)”;“將這個(gè)通知轉(zhuǎn)發(fā)到手機(jī)”;或“將這個(gè)通知轉(zhuǎn)發(fā)到電子郵件服務(wù)器”。如以下將更詳細(xì)地描述,如果通知被路由,它也可以被遞送并繪制在屏幕上。此外,向其轉(zhuǎn)發(fā)通知的設(shè)備可以事先這個(gè)相同的環(huán)境系統(tǒng);并且,在那個(gè)設(shè)備上,可以有關(guān)于該用戶(hù)的環(huán)境的另外的或不同的知識(shí);那個(gè)設(shè)備上的環(huán)境系統(tǒng)可以選擇對(duì)該通知執(zhí)行不同的動(dòng)作。
返回到圖7,在判定框362處,確定是否要拒絕通知。如果通知將不被拒絕,則該例程繼續(xù)到判定框366,以下將更詳細(xì)地描述這一點(diǎn)。如果通知將要被拒絕,則該例程前進(jìn)到框364,在那里銷(xiāo)毀該通知,并且不被該用戶(hù)看見(jiàn)。換言之,不允許被拒絕的通知繪制或制造噪聲。例如,根據(jù)規(guī)定應(yīng)該拒絕某個(gè)通知的用戶(hù)規(guī)則,或如以上參照?qǐng)D6中的框332而描述的,當(dāng)通知已到期時(shí),可能會(huì)發(fā)生這一情況。
返回到圖7,在判定框366處,確定是否應(yīng)該推遲通知。如果通知將不被推遲,則該例程前進(jìn)到判定框370,以下將更詳細(xì)地描述這一點(diǎn)。如果通知將被推遲,則該例程前進(jìn)到框368,在那里保留通知,直到用戶(hù)環(huán)境改變?yōu)橹?,并且,該例程繼續(xù)到點(diǎn)B,點(diǎn)B在圖8中延續(xù)。一般而言,推遲通知指出將允許該通知被遞送,但用戶(hù)的當(dāng)前環(huán)境或規(guī)則是此時(shí)遞送通知被認(rèn)為是不適當(dāng)?shù)摹H缫韵聦⒄請(qǐng)D8來(lái)更詳細(xì)地描述,一旦用戶(hù)的環(huán)境改變,或者當(dāng)用戶(hù)的規(guī)則指出它隨后是適當(dāng)?shù)臅r(shí),該通知將被遞送到用戶(hù)的屏幕,并被允許繪制和/或制造其聲音,如用戶(hù)規(guī)則和用戶(hù)環(huán)境所規(guī)定的。
返回到圖7,在判定框370處,確定是否應(yīng)該遞送通知。如果通知將不被遞送,則該例程結(jié)束。如果通知將被遞送,則該例程前進(jìn)到框372,在那里根據(jù)適當(dāng)?shù)那秩氲燃?jí)來(lái)繪制通知,并且提供適當(dāng)?shù)穆曇艉鸵袅?。換言之,允許通知被遞送,盡管是根據(jù)用戶(hù)的環(huán)境和規(guī)則來(lái)遞送它的(例如,可以允許通知被繪制,但要求它是無(wú)聲的)。
圖8是流程圖,示出了用于推遲通知的遞送的例程380。如上所述,從來(lái)自圖6或圖7的點(diǎn)B那里繼續(xù)該例程。如圖8中所示的,在框382處,保留該通知。在框384處,系統(tǒng)監(jiān)控對(duì)被聲明為真或假的環(huán)境的改變,或者監(jiān)控規(guī)定遞送通知現(xiàn)在適當(dāng)?shù)挠脩?hù)規(guī)則。在判定框386處,確定用戶(hù)環(huán)境是否已改變;或者,用戶(hù)規(guī)則規(guī)定遞送通知現(xiàn)在是適當(dāng)?shù)?。如果用?hù)環(huán)境還沒(méi)有改變,并且如果無(wú)用戶(hù)規(guī)則另外規(guī)定,則該例程返回到框382,在那里,繼續(xù)保留該通知。如果用戶(hù)環(huán)境已改變,或如果用戶(hù)規(guī)則規(guī)定遞送該通知現(xiàn)在可能是適當(dāng)?shù)?,則該例程前進(jìn)到點(diǎn)C,該點(diǎn)C在圖6中延續(xù)。圖6中的點(diǎn)C返回到判定框304,在那里,用于評(píng)估通知的過(guò)程重新開(kāi)始。
圖9是流程圖,示出了用于根據(jù)各種限制來(lái)確定通知的繪制的例程400。將會(huì)理解,該例程可以作為通知處理的一部分來(lái)實(shí)現(xiàn),例如,在圖6中的框322或圖7中的框372處。一般而言,當(dāng)通知進(jìn)入系統(tǒng)時(shí),對(duì)當(dāng)前為真的所有環(huán)境進(jìn)行評(píng)估,并且,根據(jù)用戶(hù)的當(dāng)前狀態(tài)來(lái)將最具限制性的設(shè)置應(yīng)用于該通知。如圖9中所示的,在判定框402處,確定是否根本不應(yīng)該繪制通知。如果通知將根本不被繪制,則該例程前進(jìn)到框404,在那里,將通知設(shè)置成不被繪制在任何顯示器上。如果通知將被繪制,則該例程前進(jìn)到判定框406。
在判定框406處,確定是否應(yīng)該但只在外部繪制通知。如果通知將只在外部被繪制,則該例程前進(jìn)到框408,在那里,繪制該通知,但只繪制在外部硬件顯示器上。如果通知將不被繪制在外部硬件顯示器上,則該例程前進(jìn)到判定框410。
在判定框410處,確定是否應(yīng)該在當(dāng)前顯示器上繪制通知。如果通知將要被繪制在當(dāng)前顯示器上,則該例程前進(jìn)到框412,在那里,根據(jù)適當(dāng)?shù)那秩氲燃?jí)在當(dāng)前顯示器上繪制通知。如果通知將不被繪制在當(dāng)前顯示器上,則該例程結(jié)束。
圖10是流程圖,示出了用于根據(jù)各種限制來(lái)確定將為通知的聲音而播放的音量的例程420。如以上根據(jù)圖9所描述的,將會(huì)理解,該例程可以作為通知處理的一部分來(lái)實(shí)現(xiàn),例如,在圖6的框322或圖7的框372處。當(dāng)通知進(jìn)入系統(tǒng)時(shí),對(duì)當(dāng)前為真的所有環(huán)境進(jìn)行評(píng)估,并且,根據(jù)用戶(hù)的當(dāng)前狀態(tài)來(lái)將最具限制性的設(shè)置應(yīng)用于通知。如圖10中所示的,在判定框422處,確定是否應(yīng)該將通知靜音。如果通知將要被靜音,則該例程前進(jìn)到框424,在那里,不為該通知提供音量。如果通知將不被靜音,則該例程前進(jìn)到判定框426。
在判定框426處,確定是否應(yīng)該為通知提供某個(gè)百分比的音量,但小于全音量。如果將要提供某個(gè)百分比音量,則該例程前進(jìn)到框428,在那里,按指定的百分比音量來(lái)播放通知。如果將不提供指定的百分比音量,則該例程前進(jìn)到判定框430。
在判定框430處,確定是否應(yīng)該為通知提供全音量。如果將要提供全音量,則該例程前進(jìn)到框432,在那里,按該全音量級(jí)來(lái)播放通知。如果將不提供全音量,則該例程結(jié)束。在一個(gè)實(shí)施例中,除了為通知規(guī)定不同的音量級(jí)以外,也可以根據(jù)用戶(hù)環(huán)境和規(guī)則來(lái)為通知選擇不同的聲音。
將會(huì)理解,如以上根據(jù)圖1-10而描述的本發(fā)明控制來(lái)自各種來(lái)源的通知的遞送,以便這些通知停止彼此之間的沖突,因?yàn)樵撓到y(tǒng)適當(dāng)?shù)卮聿⒋谢淦聊簧系某尸F(xiàn)。此外,本發(fā)明所提供的通知可以被認(rèn)為更有價(jià)值,因?yàn)樗鼈兪窃谟脩?hù)更易于接收它們時(shí)遞送的;此外,公用規(guī)則的運(yùn)用幫助用戶(hù)排除不合需要的通知。
已示出和描述本發(fā)明的較佳實(shí)施例,但將會(huì)理解,在不脫離本發(fā)明的精神和范圍的前提下,可以在其中進(jìn)行各種更改。
權(quán)利要求
1.在將通知遞送給用戶(hù)的計(jì)算機(jī)系統(tǒng)中,一種用于控制所述通知的遞送的方法,其特征在于,包括聲明可以處于至少第一或第二狀態(tài)的第一條件;提供第一遞送指令,當(dāng)所述第一條件被確定為處于其第一狀態(tài)時(shí),執(zhí)行所述第一遞送指令用于控制所述通知遞送;以及從多個(gè)來(lái)源接收通知,并在所述第一條件被確定為處于其第一狀態(tài)時(shí),根據(jù)所述第一遞送指令來(lái)控制所述通知的遞送。
2.如權(quán)利要求1所述的方法,其特征在于,所述第一條件是用戶(hù)環(huán)境的一部分,所述用戶(hù)環(huán)境意在至少部分地指示用戶(hù)對(duì)于接收通知的當(dāng)前可用性。
3.如權(quán)利要求1所述的方法,其特征在于,當(dāng)所述第一條件處于其第一狀態(tài)時(shí),它表示用戶(hù)可以至少部分地在視覺(jué)上被占用,并且,所述第一遞送指令按照其視覺(jué)顯示來(lái)限制通知。
4.如權(quán)利要求1所述的方法,其特征在于,當(dāng)所述第一條件處于其第一狀態(tài)時(shí),它表示用戶(hù)可以至少部分地被聲音占用,并且,所述第一遞送指令按照其音量來(lái)限制所述通知遞送。
5.如權(quán)利要求1所述的方法,其特征在于,當(dāng)所述第一條件處于其第一狀態(tài)時(shí),它表示用戶(hù)對(duì)于接收任何種類(lèi)的通知可以是不可用的,并且,所述第一遞送指令完全限制所述通知遞送。
6.如權(quán)利要求1所述的方法,其特征在于,使所述第一遞送指令對(duì)用戶(hù)可用,用于根據(jù)用戶(hù)的偏好來(lái)進(jìn)行修改。
7.如權(quán)利要求1所述的方法,其特征在于,使所述第一條件對(duì)用戶(hù)可用,以便可以關(guān)閉它,在此情況下,即使所述第一條件處于其第一狀態(tài),也不會(huì)遵循所述第一遞送指令。
8.如權(quán)利要求1所述的方法,其特征在于,對(duì)于所述第一條件,其第一狀態(tài)是當(dāng)它為真時(shí),其第二狀態(tài)是當(dāng)它為假時(shí)。
9.如權(quán)利要求1所述的方法,其特征在于,所述第一條件的狀態(tài)最初是在聲明所述第一條件的時(shí)候被確定的。
10.如權(quán)利要求1所述的方法,其特征在于,所述第一條件的狀態(tài)是在將要遞送通知的時(shí)候被確定的。
11.如權(quán)利要求1所述的方法,其特征在于,所述第一條件是由操作系統(tǒng)來(lái)聲明的。
12.如權(quán)利要求1所述的方法,其特征在于,所述第一條件是由除操作系統(tǒng)以外的來(lái)源來(lái)聲明的。
13.如權(quán)利要求12所述的方法,其特征在于,所述除操作系統(tǒng)以外的來(lái)源是程序。
14.如權(quán)利要求11所述的方法,其特征在于,聲明可以處于至少第一或第二狀態(tài)的第二條件,并且,提供第二遞送指令,當(dāng)所述第二條件處于其第一狀態(tài)時(shí),執(zhí)行所述第二遞送指令,用于控制所述通知遞送。
15.如權(quán)利要求14所述的方法,其特征在于,聲明附加條件,并向所述附加條件提供附加的對(duì)應(yīng)遞送指令。
16.如權(quán)利要求15所述的方法,其特征在于,所述條件是由操作系統(tǒng)和程序集來(lái)聲明的。
17.如權(quán)利要求1所述的方法,其特征在于,還包括定義第一規(guī)則,所述第一規(guī)則規(guī)定如何控制至少包含第一指定元素的通知的遞送。
18.如權(quán)利要求17所述的方法,其特征在于,定義附加規(guī)則,并且,當(dāng)兩個(gè)規(guī)則發(fā)生沖突時(shí),應(yīng)用更具侵入性的規(guī)則。
19.如權(quán)利要求17所述的方法,其特征在于,所述第一規(guī)則是由用戶(hù)來(lái)聲明的。
20.如權(quán)利要求19所述的方法,其特征在于,所述附加規(guī)則是由用戶(hù)來(lái)聲明的。
21.如權(quán)利要求20所述的方法,其特征在于,使所述規(guī)則對(duì)用戶(hù)可用,用于根據(jù)用戶(hù)的偏好來(lái)進(jìn)行修改。
22.如權(quán)利要求1所述的方法,其特征在于,所述第一遞送指令包括路由、拒絕、推遲、或遞送通知中的至少一項(xiàng)。
23.一種具有計(jì)算機(jī)可執(zhí)行組件的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可執(zhí)行組件用于實(shí)現(xiàn)一種用于控制通知遞送的方法,包括聲明可以處于至少第一或第二狀態(tài)的第一條件;提供第一遞送指令,當(dāng)所述第一條件被確定為處于其第一狀態(tài)時(shí),執(zhí)行所述第一遞送指令,用于控制所述通知遞送;以及從多個(gè)來(lái)源接收通知,并在所述第一條件被確定為處于其第一狀態(tài)時(shí),根據(jù)所述第一遞送指令來(lái)控制所述通知的遞送。
24.如權(quán)利要求23所述的方法,其特征在于,所述第一條件是用戶(hù)環(huán)境的一部分,所述用戶(hù)環(huán)境意在至少部分地指示用戶(hù)對(duì)于接收通知的當(dāng)前可用性。
25.如權(quán)利要求23所述的方法,其特征在于,所述第一個(gè)遞送指令包括路由、拒絕、推遲、或遞送通知中的至少一項(xiàng)。
26.如權(quán)利要求23所述的方法,其特征在于,所述第一遞送指令按照其視覺(jué)顯示來(lái)限制所述通知遞送。
27.如權(quán)利要求23所述的方法,其特征在于,所述第一遞送指令按照其音量來(lái)限制所述通知遞送。
28.如權(quán)利要求23所述的方法,其特征在于,使所述第一遞送指令對(duì)用戶(hù)可用,用于根據(jù)用戶(hù)的偏好來(lái)進(jìn)行修改。
29.如權(quán)利要求23所述的方法,其特征在于,對(duì)于所述第一條件,其第一狀態(tài)是當(dāng)它為真時(shí),其第二狀態(tài)是當(dāng)它為假時(shí)。
30.如權(quán)利要求23所述的方法,其特征在于,所述第一條件是由操作系統(tǒng)來(lái)聲明的。
31.如權(quán)利要求30所述的方法,其特征在于,可以處于至少第一或第二狀態(tài)的第二條件是由除操作系統(tǒng)以外的來(lái)源來(lái)聲明的,并且,提供第二遞送指令,當(dāng)所述第二條件處于其第一狀態(tài)時(shí),執(zhí)行所述第二遞送指令,用于所述通知的遞送。
32.如權(quán)利要求31所述的方法,其特征在于,聲明所述第二條件的來(lái)源是程序。
33.如權(quán)利要求23所述的方法,其特征在于,還包括定義第一規(guī)則,所述第一規(guī)則規(guī)定如何控制至少包含第一指定元素的通知的遞送。
34.如權(quán)利要求33所述的方法,其特征在于,定義附加規(guī)則,并且,當(dāng)兩個(gè)規(guī)則發(fā)生沖突時(shí),應(yīng)用更具侵入性的規(guī)則。
35.如權(quán)利要求33所述的方法,其特征在于,所述第一規(guī)則是由用戶(hù)來(lái)聲明的。
36.如權(quán)利要求35所述的方法,其特征在于,使所述第一規(guī)則和所述第一遞送指令對(duì)用戶(hù)可用,用于根據(jù)用戶(hù)的偏好來(lái)進(jìn)行修改。
37.在將通知遞送給用戶(hù)的計(jì)算機(jī)系統(tǒng)中,一種用于控制所述通知的遞送的方法,其特征在于,包括聲明多個(gè)用戶(hù)環(huán)境,每個(gè)用戶(hù)環(huán)境包括可以為真或假的條件,以及如果所述條件為真則要遵循的指令;從多個(gè)來(lái)源接收通知;以及當(dāng)用戶(hù)環(huán)境的所述條件為真時(shí),遵循對(duì)應(yīng)于所述用戶(hù)環(huán)境的指令,用于確定應(yīng)該對(duì)所述通知采取什么措施。
38.如權(quán)利要求37所述的方法,其特征在于,所述指令包括路由、拒絕、推遲、或遞送通知中的至少一項(xiàng)。
39.如權(quán)利要求37所述的方法,其特征在于,使所述指令對(duì)用戶(hù)可用,用于根據(jù)用戶(hù)的偏好來(lái)進(jìn)行修改。
40.如權(quán)利要求37所述的方法,其特征在于,所述多個(gè)用戶(hù)環(huán)境的至少一個(gè)是由操作系統(tǒng)來(lái)聲明的。
41.如權(quán)利要求37所述的方法,其特征在于,所述多個(gè)用戶(hù)環(huán)境的至少一個(gè)是由除操作系統(tǒng)以外的來(lái)源來(lái)聲明的。
42.如權(quán)利要求41所述的方法,其特征在于,所述除操作系統(tǒng)以外的來(lái)源是程序。
43.如權(quán)利要求37所述的方法,其特征在于,還包括定義多個(gè)用戶(hù)規(guī)則,所述多個(gè)用戶(hù)規(guī)則規(guī)定如何控制包含對(duì)應(yīng)于每個(gè)規(guī)則的指定元素的通知的遞送。
44.如權(quán)利要求43所述的方法,其特征在于,當(dāng)兩個(gè)用戶(hù)規(guī)則發(fā)生沖突時(shí),應(yīng)用更具侵入性的規(guī)則。
45.如權(quán)利要求44所述的方法,其特征在于,所述用戶(hù)規(guī)則是由用戶(hù)來(lái)聲明的。
46.如權(quán)利要求45所述的方法,其特征在于,使所述用戶(hù)環(huán)境和用戶(hù)規(guī)則對(duì)用戶(hù)可用,用于根據(jù)用戶(hù)的偏好來(lái)進(jìn)行修改。
47.一種具有計(jì)算機(jī)可執(zhí)行組件的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可執(zhí)行組件用于實(shí)現(xiàn)一種用于控制通知遞送的方法,包括聲明多個(gè)用戶(hù)環(huán)境,每個(gè)用戶(hù)環(huán)境包括可以為真或假的條件,以及如果所述條件為真則要遵循的指令;從多個(gè)來(lái)源接收通知;以及當(dāng)用戶(hù)環(huán)境的所述條件為真時(shí),遵循對(duì)應(yīng)于所述用戶(hù)環(huán)境的指令,用于確定應(yīng)該對(duì)所述通知采取什么措施。
48.如權(quán)利要求47所述的方法,其特征在于,所述指令包括路由、拒絕、推遲、或遞送通知中的至少一項(xiàng)。
49.如權(quán)利要求47所述的方法,其特征在于,使所述指令對(duì)用戶(hù)可用,用于根據(jù)用戶(hù)的偏好來(lái)進(jìn)行修改。
50.如權(quán)利要求47所述的方法,其特征在于,所述多個(gè)用戶(hù)環(huán)境的至少一個(gè)是由操作系統(tǒng)來(lái)聲明的。
51.如權(quán)利要求47所述的方法,其特征在于,所述多個(gè)用戶(hù)環(huán)境的至少一個(gè)是由除操作系統(tǒng)以外的來(lái)源來(lái)聲明的。
52.如權(quán)利要求51所述的方法,其特征在于,所述除操作系統(tǒng)以外的來(lái)源是程序。
53.如權(quán)利要求47所述的方法,其特征在于,還包括定義多個(gè)用戶(hù)規(guī)則,所述多個(gè)用戶(hù)規(guī)則規(guī)定如何控制包含對(duì)應(yīng)于每個(gè)規(guī)則的指定元素的通知的遞送。
54.如權(quán)利要求53所述的方法,其特征在于,當(dāng)兩個(gè)用戶(hù)規(guī)則發(fā)生沖突時(shí),應(yīng)用更具侵入性的規(guī)則。
55.如權(quán)利要求54所述的方法,其特征在于,所述用戶(hù)規(guī)則是由用戶(hù)來(lái)聲明的。
56.如權(quán)利要求55所述的方法,其特征在于,使所述用戶(hù)環(huán)境和用戶(hù)規(guī)則對(duì)用戶(hù)可用,用于根據(jù)用戶(hù)的偏好來(lái)進(jìn)行修改。
57.一種用于控制通知遞送的系統(tǒng),其特征在于,包括用于聲明可以處于至少第一或第二狀態(tài)的第一條件的裝置;用于提供第一遞送指令的裝置,當(dāng)所述第一條件被確定為處于其第一狀態(tài)時(shí),執(zhí)行所述第一遞送指令,用于控制所述通知遞送;以及用于從多個(gè)來(lái)源接收通知,并在所述第一條件被確定為處于其第一狀態(tài)時(shí)根據(jù)所述第一遞送指令來(lái)控制所述通知的遞送的裝置。
58.如權(quán)利要求57所述的系統(tǒng),其特征在于,還包括用于使所述第一遞送指令對(duì)用戶(hù)可用,以便根據(jù)用戶(hù)的偏好來(lái)進(jìn)行修改的裝置。
59.如權(quán)利要求57所述的系統(tǒng),其特征在于,還包括用于在聲明所述第一條件時(shí)確定所述第一條件的狀態(tài)的裝置。
60.如權(quán)利要求57所述的系統(tǒng),其特征在于,還包括用于在將要遞送所述通知時(shí)確定所述第一條件的狀態(tài)的裝置。
61.如權(quán)利要求57所述的系統(tǒng),其特征在于,還包括用于定義第一規(guī)則的裝置,所述第一規(guī)則規(guī)定如何控制至少包含第一指定元素的通知的遞送。
62.如權(quán)利要求57所述的系統(tǒng),其特征在于,還包括用于執(zhí)行所述遞送指令的裝置,所述遞送指令包括路由、拒絕、推遲、或遞送通知中的至少一項(xiàng)。
63.一種用于控制通知遞送的系統(tǒng),其特征在于,包括用于聲明多個(gè)用戶(hù)環(huán)境的裝置,每個(gè)用戶(hù)環(huán)境包括可以為真或假的條件,以及如果所述條件為真則要遵循的指令;用于從多個(gè)來(lái)源接收通知的裝置;以及當(dāng)用戶(hù)環(huán)境的所述條件為真時(shí),遵循對(duì)應(yīng)于所述用戶(hù)環(huán)境的指令,用于確定應(yīng)該對(duì)所述通知采取什么措施。
64.如權(quán)利要求63所述的系統(tǒng),其特征在于,還包括用于執(zhí)行指令的裝置,所述指令包括路由、拒絕、推遲、或遞送通知中的至少一項(xiàng)。
65.如權(quán)利要求63所述的系統(tǒng),其特征在于,還包括用于使所示指令對(duì)用戶(hù)可用,以便根據(jù)用戶(hù)的偏好來(lái)進(jìn)行修改的裝置。
66.如權(quán)利要求63所述的系統(tǒng),其特征在于,還包括用于定義多個(gè)用戶(hù)規(guī)則的裝置,所述多個(gè)用戶(hù)規(guī)則規(guī)定如何控制包含對(duì)應(yīng)于每個(gè)規(guī)則的指定元素的通知的遞送。
67.如權(quán)利要求63所述的系統(tǒng),其特征在于,還包括用于使所述用戶(hù)規(guī)則對(duì)用戶(hù)可用,以便根據(jù)該用戶(hù)的偏好來(lái)進(jìn)行修改的裝置。
全文摘要
一種用于控制通知的遞送的系統(tǒng)(200)。該系統(tǒng)代理并串行化來(lái)自多個(gè)來(lái)源的通知的遞送(206)。此外,提供用戶(hù)環(huán)境的共享概念,用于為這些通知中的每一個(gè)確定適當(dāng)?shù)奶幚?。在一個(gè)實(shí)施例中,用戶(hù)環(huán)境包括可以為真或假的條件,以及如果條件為真則要遵循的指令。例如,如果用戶(hù)正在收聽(tīng)音樂(lè),則指令可以在屏幕上顯示通知,但不為該通知播放任何聲音。用戶(hù)環(huán)境由操作系統(tǒng)和任意程序來(lái)聲明(204)??梢韵蛴脩?hù)呈現(xiàn)用戶(hù)的環(huán)境,用于根據(jù)用戶(hù)的偏好來(lái)進(jìn)行修改(204)。用戶(hù)也可以定義規(guī)則,它們規(guī)定應(yīng)該如何處理包含指定元素的通知(204);并且可以為用戶(hù)環(huán)境的指令提供例外。
文檔編號(hào)G06Q10/00GK1759377SQ03826214
公開(kāi)日2006年4月12日 申請(qǐng)日期2003年5月15日 優(yōu)先權(quán)日2003年3月26日
發(fā)明者T·P·麥基, F·A·德布里, C·K·范多克, R·K·溫吉姆 申請(qǐng)人:微軟公司