本發(fā)明涉及社交聊天或信息交互領(lǐng)域,尤其涉及一種實(shí)現(xiàn)用戶集合號(hào)的信息交互的方法及裝置。
背景技術(shù):
在聊天(或信息交互)場(chǎng)景中,通常是一個(gè)人和另一個(gè)人的聊天,或者一個(gè)人和一個(gè)組群的其他成員一起聊天。為方便,稱這兩種對(duì)象為個(gè)人和組群,在聊天系統(tǒng)中需要一個(gè)唯一身份標(biāo)識(shí)ID來(lái)代表個(gè)人和組群,稱為聊天號(hào)。個(gè)人的ID為個(gè)人號(hào),組群的ID為組群號(hào)。
在社交系統(tǒng)中通常需要一個(gè)以家庭或班級(jí)為單位的對(duì)象參與信息交互,這個(gè)對(duì)象不同于通常的個(gè)人對(duì)象,也不同于一個(gè)組群對(duì)象。為方便描述,可本文將家庭或班級(jí)為單位的聊天對(duì)象稱為用戶集合,對(duì)應(yīng)的ID叫用戶集合號(hào)。概括的說(shuō),用戶集合號(hào)對(duì)外就像一個(gè)個(gè)人號(hào),對(duì)內(nèi)則需要同步家庭或班級(jí)的所有成員的信息,讓所有家庭或班級(jí)的成員都具有消息的上下文,以便參與到聊天會(huì)話或信息交互場(chǎng)景交流中。
以用戶集合(例如家庭或班級(jí))為單位的聊天或信息交互行為不同于個(gè)人的地方顯而易見(jiàn),個(gè)人代表著一個(gè)單獨(dú)的自然人對(duì)象,而用戶集合則代表了一個(gè)用戶集合包含集合的所有成員對(duì)象。
以用戶集合為單位的聊天行為不同于組群聊天的行為在于用戶集合可同時(shí)參與到不同的聊天會(huì)話中并能標(biāo)識(shí)一個(gè)用戶集合以及成員,比如,以家庭為例,一個(gè)家庭和另一個(gè)個(gè)人、一個(gè)家庭和另一個(gè)家庭、一個(gè)家庭和多個(gè)聊天對(duì)象(家庭或個(gè)人均可)組成新聊天群,同時(shí)家庭成員發(fā)言時(shí)能標(biāo)識(shí)出該家庭以及成員信息。發(fā)往用戶集合號(hào)的信息都能到達(dá)該用戶集合的每個(gè)成員。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于提出一種實(shí)現(xiàn)用戶集合號(hào)的信息交互的方法及裝置,旨在實(shí)現(xiàn)以用戶集合為單位參與社交聊天。
為實(shí)現(xiàn)上述目的,本發(fā)明提供的一種實(shí)現(xiàn)用戶集合號(hào)參與信息交互的方法,包括:
為第一用戶集合形成第一用戶集合號(hào);
以所述第一用戶集合號(hào)作為第一參與方進(jìn)行信息交互;所述進(jìn)行信息交互包括:形成所述第一參與方與第二參與方之間的信息交互,和/或,所述第一用戶集合號(hào)參與多人信息交互;所述第二參與方包括以下一種或多種:
第二用戶集合所形成的第二用戶集合號(hào);
第二信息交互代理下的個(gè)人號(hào);
所述第二用戶集合中的一個(gè)成員號(hào)。
可選地,其中,當(dāng)?shù)诙⑴c方為第二用戶集合號(hào)時(shí),形成所述第一參與方與第二參與方之間的信息交互包括:
將所述第一用戶集合中的任一成員號(hào)發(fā)送給所述第二用戶集合中的任一成員號(hào)的消息,由第一信息交互代理轉(zhuǎn)發(fā)給所述第一用戶集合中的其它成員號(hào);所述消息由所述第二信息交互代理轉(zhuǎn)發(fā)給所述第二用戶集合中的所有成員號(hào);
當(dāng)所述第一用戶集合號(hào)收到所述第二用戶集合號(hào)發(fā)送的消息時(shí),該消息由所述第一信息交互代理轉(zhuǎn)發(fā)給所述第一用戶集合的所有成員號(hào)。
可選地,其中,當(dāng)?shù)诙⑴c方為第二用戶集合號(hào)時(shí),形成所述第一參與方與第二參與方之間的信息交互,還包括:
當(dāng)所述第一用戶集合中的成員號(hào)向所述第二用戶集合中的成員號(hào)發(fā)送消息時(shí),所述消息的會(huì)話由消息發(fā)送方的成員號(hào)和所述成員的會(huì)話資源標(biāo)識(shí),以及消息接收方的成員號(hào)和所述成員的會(huì)話資源標(biāo)識(shí)唯一標(biāo)定,所述消息中包含所述會(huì)話的上下文。
可選地,當(dāng)?shù)诙⑴c方為第二信息交互代理下的個(gè)人號(hào)時(shí),形成所述第一參與方與第二參與方之間的信息交互,包括:
當(dāng)所述第一用戶集合號(hào)的任一成員號(hào)發(fā)送給所述第二信息交互代理下的個(gè)人號(hào)的消息時(shí),由第一信息交互代理轉(zhuǎn)發(fā)給所述第一用戶集合中的其它成員號(hào);將所述消息以所述第一用戶集合號(hào)的名義發(fā)給所述第二信息交互代理下的個(gè)人號(hào)。
可選地,其中,所述當(dāng)?shù)诙⑴c方為第二聊天代理下的個(gè)人號(hào)時(shí),形成所述第一參與方與第二參與方之間的信息交互,還包括:
當(dāng)所述第一用戶集合中的成員號(hào)向所述第二信息交互代理下的個(gè)人號(hào)發(fā)送消息時(shí),所述消息的會(huì)話由消息發(fā)送方的成員號(hào)和所述成員的會(huì)話資源標(biāo)識(shí),以及消息接收方的個(gè)人號(hào)和會(huì)話資源標(biāo)識(shí)唯一標(biāo)定。
可選地,其中,所述第一用戶集合號(hào)參與多人信息交互,包括:
當(dāng)所述第一用戶集合號(hào)參與多人信息交互時(shí),所述第一用戶集合的成員號(hào)發(fā)送到多人信息交互的消息,以所述第一用戶集合號(hào)的名義發(fā)到所述多人信息交互,所述消息由第一信息交互代理轉(zhuǎn)發(fā)給所述第一用戶集合的其它成員號(hào);
所述多人信息交互發(fā)送到所述第一用戶集合號(hào)的消息,由所述第一信息交互代理轉(zhuǎn)發(fā)到所述第一用戶集合號(hào)的所有成員號(hào);
所述第一用戶集合的成員號(hào)以所述多人信息交互的標(biāo)識(shí)號(hào)、所述第一用戶集合號(hào)和所述成員號(hào)的會(huì)話資源作為唯一會(huì)話標(biāo)識(shí),所述消息中包含會(huì)話的上下文。
可選地,所述方法還包括:
當(dāng)?shù)谝恍畔⒔换ゴ硐碌膫€(gè)人號(hào)添加所述第二用戶集合號(hào)為好友時(shí),加好友邀請(qǐng)發(fā)送到所述第二用戶集合號(hào),好友添加結(jié)果發(fā)給所述第一信息交互代理下的個(gè)人號(hào)和所述第二用戶集合中的每個(gè)成員號(hào);其中,所述加好友邀請(qǐng)通過(guò)所述第二信息交互代理轉(zhuǎn)發(fā)到所述第二用戶集合中的每個(gè)成員號(hào),最先應(yīng)答的有效的肯定或否定消息有效,后續(xù)應(yīng)答消息無(wú)效;
當(dāng)所述第一用戶集合號(hào)添加所述第二用戶集合號(hào)為好友時(shí),成功的添加結(jié)果發(fā)給所述第一用戶集合中的每個(gè)成員號(hào)和所述第二用戶集合中的每個(gè)成員號(hào),不成功的添加結(jié)果發(fā)送給發(fā)起邀請(qǐng)的所述第一用戶集合中的成員號(hào);其中,所述加好友邀請(qǐng)由所述第二信息交互代理轉(zhuǎn)發(fā)到所述第二用戶集合中的每個(gè)成員號(hào),最先應(yīng)答的肯定或否定消息有效,后續(xù)應(yīng)答消息無(wú)效。
可選地,所述方法還包括:
所述最先應(yīng)答的肯定或否定消息中包含所述加好友邀請(qǐng)的上下文。
可選地,所述方法還包括:
當(dāng)所述第一用戶集合中的成員號(hào)上線時(shí),上線消息發(fā)送給所述第一用戶集合號(hào)的每個(gè)允許觀察在線的好友,以所述第一用戶集合號(hào)和所述成員號(hào)的信息標(biāo)識(shí)所述上線消息;
當(dāng)所述第一用戶集合號(hào)的好友上線時(shí),上線消息發(fā)送給所述第一用戶集合中的每個(gè)成員號(hào)。
可選地,所述方法還包括:
當(dāng)信息交互對(duì)方離線時(shí),所述第一用戶集合號(hào)可以發(fā)送離線消息給所述信息交互對(duì)方,所述離線消息由第一用戶集合中的成員號(hào)發(fā)送給所述信息交互對(duì)方;
當(dāng)所述第一用戶集合號(hào)離線時(shí),發(fā)送給第一用戶集合號(hào)的消息保存為離線消息,當(dāng)離線的第一用戶集合中的成員號(hào)上線后,將所述離線消息發(fā)送給所述第一用戶集合號(hào);
當(dāng)所述第一用戶集合中的部分成員號(hào)離線時(shí),所述離線的成員號(hào)上線后獲取離線時(shí)發(fā)送給所述第一用戶集合號(hào)的消息。
可選地,所述方法還包括:
接收所述第一用戶集合中的成員號(hào)和信息交互對(duì)方的查詢請(qǐng)求,并反饋信息交互記錄,對(duì)于所述成員號(hào),信息交互記錄標(biāo)識(shí)所述成員號(hào)所屬的第一用戶集合號(hào)和所述成員的信息。
本發(fā)明還提供了一種實(shí)現(xiàn)用戶集合號(hào)信息交互的裝置,包括:
用戶集合號(hào)生成模塊,用于為第一用戶集合形成第一用戶集合號(hào);
用戶集合號(hào)信息交互模塊,用于以所述第一用戶集合號(hào)作為第一參與方進(jìn)行信息交互;所述進(jìn)行信息交互包括:形成所述第一參與方與第二參與方之間的信息交互,和/或,所述第一用戶集合號(hào)參與多人信息交互;所述第二參與方包括以下一種或多種:
第二用戶集合所形成的第二用戶集合號(hào);
第二信息交互代理下的個(gè)人號(hào);
所述第二用戶集合中的一個(gè)成員號(hào)。
可選地,其中,
當(dāng)?shù)诙⑴c方為第二用戶集合號(hào)時(shí),形成所述第一參與方與第二參與方之間的,包括:
將所述第一用戶集合中的任一成員號(hào)發(fā)送給所述第二用戶集合中的任一成員號(hào)的消息,由第一信息交互代理轉(zhuǎn)發(fā)給所述第一用戶集合中的其它成員號(hào);所述消息由所述第二信息交互代理轉(zhuǎn)發(fā)給所述第二用戶集合中的所有成員號(hào);
所述第一用戶集合號(hào)收到所述第二用戶集合號(hào)發(fā)送的消息時(shí),該消息由所述第一信息交互代理轉(zhuǎn)發(fā)給所述第一用戶集合的所有成員號(hào)。
可選地,其中,所述當(dāng)?shù)诙⑴c方為第二用戶集合號(hào)時(shí),形成所述第一參與方與第二參與方之間的信息交互,還包括:
當(dāng)所述第一用戶集合中的成員號(hào)向所述第二用戶集合中的成員號(hào)發(fā)送消息時(shí),所述消息的會(huì)話由消息發(fā)送方的成員號(hào)和所述成員的會(huì)話資源標(biāo)識(shí),以及消息接收方的成員號(hào)和所述成員的會(huì)話資源標(biāo)識(shí)唯一標(biāo)定,所述消息中包含所述會(huì)話的上下文。
可選地,其中,
當(dāng)?shù)诙⑴c方為第二信息交互代理下的個(gè)人號(hào)時(shí),形成所述第一參與方與第二參與方之間的信息交互,包括:
當(dāng)所述第一用戶集合號(hào)的任一成員號(hào)發(fā)送給所述第二信息交互代理下的個(gè)人號(hào)的消息時(shí),由所述第一信息交互代理轉(zhuǎn)發(fā)給所述第一用戶集合中的其它成員號(hào);所述消息通過(guò)所述第一用戶集合號(hào)發(fā)給所述第二信息交互代理下的個(gè)人號(hào)。
可選地,其中,所述當(dāng)?shù)诙⑴c方為第二信息交互代理下的個(gè)人號(hào)時(shí),形成所述第一參與方與第二參與方之間的信息交互,還包括:
當(dāng)所述第一用戶集合中的成員號(hào)向所述第二信息交互代理下的個(gè)人號(hào)發(fā)送消息時(shí),所述消息的會(huì)話由消息發(fā)送方的成員號(hào)和所述成員的會(huì)話資源標(biāo)識(shí),以及消息接收方的個(gè)人號(hào)和會(huì)話資源標(biāo)識(shí)唯一標(biāo)定。
可選地,其中,所述第一用戶集合號(hào)參與多人信息交互,包括:
當(dāng)所述第一用戶集合號(hào)參與多人信息交互時(shí),所述第一用戶集合的成員號(hào)發(fā)送到所述多人信息交互的消息,以所述第一用戶集合號(hào)的名義發(fā)到所述多人信息交互,所述消息由第一信息交互代理同時(shí)轉(zhuǎn)發(fā)給所述第一用戶集合的其它成員號(hào);
所述多人信息交互發(fā)送到所述第一用戶集合號(hào)的消息,由所述第一信息交互代理轉(zhuǎn)發(fā)到所述第一用戶集合號(hào)的所有成員號(hào);
所述第一用戶集合的成員號(hào)以所述多人信息交互的標(biāo)識(shí)號(hào)、所述第一用戶集合號(hào)和所述成員號(hào)的會(huì)話資源作為唯一會(huì)話標(biāo)識(shí),所述消息中包含會(huì)話的上下文。
可選地,所述裝置還包括:
個(gè)人號(hào)好友添加模塊,用于所述第一信息交互代理下的個(gè)人號(hào)添加所述第二用戶集合號(hào)為好友時(shí),加好友邀請(qǐng)發(fā)送到所述第二用戶集合號(hào),好友添加結(jié)果發(fā)給所述第一信息交互代理下的個(gè)人號(hào)和所述第二用戶集合中的每個(gè)成員號(hào);其中,所述加好友邀請(qǐng)通過(guò)所述第二信息交互代理轉(zhuǎn)發(fā)到所述第二用戶集合中的每個(gè)成員號(hào),最先應(yīng)答的肯定或否定消息有效,后續(xù)應(yīng)答消息無(wú)效;
集合號(hào)好友添加模塊,用于當(dāng)所述第一用戶集合號(hào)添加所述第二用戶集合號(hào)為好友時(shí),成功的添加結(jié)果發(fā)給所述第一用戶集合中的每個(gè)成員號(hào)和所述第二用戶集合中的每個(gè)成員號(hào),不成功的添加結(jié)果發(fā)送給發(fā)起邀請(qǐng)的所述第一用戶集合中的成員號(hào);其中,所述加好友邀請(qǐng)由所述第二信息交互代理轉(zhuǎn)發(fā)到所述第二用戶集合中的每個(gè)成員號(hào),最先應(yīng)答的肯定或否定消息有效,后續(xù)應(yīng)答消息無(wú)效。
可選地,其中,
所述最先應(yīng)答的有效的肯定或否定消息中包含所述加好友邀請(qǐng)的上下文。
可選地,所述裝置還包括:
上線消息通知模塊,用于當(dāng)所述第一用戶集合中的成員號(hào)上線時(shí),上線消息發(fā)送給所述第一用戶集合號(hào)的每個(gè)允許觀察在線的好友,以所述第一用戶集合號(hào)和所述成員號(hào)的信息標(biāo)識(shí)所述上線消息;
當(dāng)所述第一用戶集合號(hào)的好友上線時(shí),上線消息發(fā)送給所述第一用戶集合中的每個(gè)成員號(hào)。
可選地,所述裝置還包括:
離線消息收發(fā)模塊,用于當(dāng)信息交互對(duì)方離線時(shí),所述第一用戶集合號(hào)發(fā)送離線消息給所述信息交互對(duì)方,所述離線消息由第一用戶集合中的成員號(hào)發(fā)送給所述信息交互對(duì)方;
當(dāng)所述第一用戶集合號(hào)離線時(shí),發(fā)送給第一用戶集合號(hào)的消息保存為離線消息,當(dāng)離線的第一用戶集合中的成員號(hào)上線后,將所述離線消息發(fā)送給所述第一用戶集合號(hào);
當(dāng)所述第一用戶集合中的部分成員號(hào)離線時(shí),所述離線的成員號(hào)上線后獲取離線時(shí)發(fā)送給所述第一用戶集合號(hào)的消息。
可選地,所述裝置還包括:
信息交互記錄查詢模塊,用于接收所述第一用戶集合中的成員號(hào)和信息交互對(duì)方的查詢請(qǐng)求,并反饋信息交互記錄;其中,對(duì)于所述成員號(hào),信息交互記錄標(biāo)識(shí)所述成員號(hào)所屬的第一用戶集合號(hào)和所述成員的信息。
相應(yīng)地,本發(fā)明還提供了一種包括上述裝置的信息交互代理。
本發(fā)明還提供了一種家庭網(wǎng)關(guān),包括所述信息交互代理,其中所述用戶集合號(hào)為家庭聊天號(hào)。
本發(fā)明實(shí)施例提供的方案,僅需要在信息交互服務(wù)器(或聊天服務(wù)器)和客戶端直接增加信息交互代理功能,對(duì)信息交互服務(wù)器和信息交互客戶端并無(wú)修改,即可實(shí)現(xiàn)以用戶集合為單元的信息交互功能,便于快速布設(shè)家庭、班級(jí)等行為的社交、信息交互(或聊天)系統(tǒng)。
附圖說(shuō)明
圖1為實(shí)現(xiàn)本發(fā)明實(shí)施例的框架結(jié)構(gòu)示意圖;
圖2為本發(fā)明第一實(shí)施例的一種實(shí)現(xiàn)用戶集合號(hào)參與信息交互的方法流程圖;
圖3為本發(fā)明第二實(shí)施例的一種實(shí)現(xiàn)用戶集合號(hào)參與信息交互的方法流程圖;
圖4為本發(fā)明第一實(shí)施例的一種實(shí)現(xiàn)用戶集合號(hào)參與信息交互的裝置框圖;
圖5為本發(fā)明第二實(shí)施例的一種實(shí)現(xiàn)用戶集合號(hào)參與信息交互的裝置框圖。
本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說(shuō)明。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行更詳細(xì)的說(shuō)明。
需要說(shuō)明的是,如果不沖突,本發(fā)明實(shí)施例以及實(shí)施例中的各個(gè)特征可以相互結(jié)合,均在本發(fā)明的保護(hù)范圍之內(nèi)。另外,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
現(xiàn)在將參考附圖描述實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例的移動(dòng)終端。在后續(xù)的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說(shuō)明,其本身并沒(méi)有特定的意義。因此,"模塊"與"部件"可以混合地使用。
在家庭或班級(jí)這樣的用戶集合環(huán)境下,通常設(shè)置有家庭網(wǎng)關(guān)或類似網(wǎng)關(guān)的其它網(wǎng)絡(luò)互連互通設(shè)備,如圖1所示,以兩個(gè)家庭為例,顯然,如果是兩個(gè)班級(jí)或其它用戶集合,情況也類似。
針對(duì)家庭或班級(jí)這樣的用戶集合可以設(shè)置聊天(或信息交互)代理Proxy,該P(yáng)roxy處于外部因特網(wǎng)聊天服務(wù)器和用戶集合成員之間,對(duì)外部因特網(wǎng)聊天服務(wù)器而言,Proxy相當(dāng)于一個(gè)普通聊天號(hào),對(duì)于用戶集合成員而言,Proxy提供代理聊天服務(wù)器的功能。
如圖1所示,Proxy可以設(shè)置在家庭網(wǎng)關(guān)或其它類似的網(wǎng)絡(luò)互連互通設(shè)備上,以家庭為用戶集合和家庭網(wǎng)關(guān)為例,A家庭的聊天代理可以設(shè)置在A家庭網(wǎng)關(guān),B家庭的聊天代理可以設(shè)置在B家庭網(wǎng)關(guān)。
通過(guò)家庭網(wǎng)關(guān)或其它類似的網(wǎng)絡(luò)互連互通設(shè)備將家庭內(nèi)網(wǎng)和外網(wǎng)(因特網(wǎng))分開(kāi)。Proxy面向因特網(wǎng)側(cè)是聊天客戶端,因此可以在因特網(wǎng)聊天服務(wù)器擁有唯一的聊天號(hào);Proxy面向家庭成員則是一個(gè)聊天代理。為方便描述,本發(fā)明中因特網(wǎng)聊天服務(wù)器地址以server.net表示,聊天代理地址以proxy表示,并采用以下約定:
稱家庭聊天代理為proxy,為家庭1服務(wù)的聊天代理為proxy1,同理為家庭2服務(wù)的聊天代理為proxy2。當(dāng)泛指家庭聊天代理時(shí)使用proxy,特指某個(gè)家庭時(shí)使用特定的proxy1或proxy2。
每個(gè)家庭分配一個(gè)聊天ID,為區(qū)別單獨(dú)的個(gè)人聊天功能號(hào),稱為家庭號(hào),實(shí)際上在聊天server上它和通常的個(gè)人聊天號(hào)沒(méi)什么區(qū)別。
家庭成員使用本地Proxy分配給他的本地聊天號(hào)登錄聊天服務(wù)器;當(dāng)家庭成員使用本地號(hào)(n)登錄時(shí),Proxy標(biāo)定該本地聊天會(huì)話為“本地聊天號(hào)(n)@Proxy/該資源標(biāo)識(shí)”,記為L(zhǎng)x(n);Proxy代理此家庭成員向服務(wù)器發(fā)起登錄;
Proxy1為家庭1所有成員在聊天服務(wù)器上用的聊天號(hào)ID為Ox=x@server.net,簡(jiǎn)稱外網(wǎng)號(hào)1;同理,Proxy2為家庭2用于家庭2所有成員在聊天服務(wù)器上登錄的聊天號(hào)ID為Oy=y(tǒng)@server.net,簡(jiǎn)稱外網(wǎng)號(hào)2;一個(gè)示例的個(gè)人聊天號(hào)ID為a1@server.net;
Proxy為家庭1建立的本地聊天群=LG1={Lx1,Lx2,…Lxi},同理Proxy2為家庭2建立的本地聊天群=LG2={Ly1,Ly2,…Lyj},
在XMPP協(xié)議中用下列符號(hào)表示:
x(n)表示XMPP的ID,n={1…i};例如x1、x2
Lx(n)表示全地址JID,n={1…i};例如x1@Proxy1/resource1、x2@Proxy1/resource2;
Ox表示x家庭的外網(wǎng)的JID,即:x@server.net;
Oy表示y家庭的外網(wǎng)的JID,即:y@server.net;
Proxy1給每個(gè)家庭1成員映射到外網(wǎng)resource用x(n)表示,例如對(duì)于家庭1的成員x(n),映射到外網(wǎng)的標(biāo)識(shí)為:x@server.net/x(n);相應(yīng)地,Proxy2給每個(gè)家庭2成員映射到外網(wǎng)resource用y(n)表示,例如對(duì)于家庭2的成員y(n),映射到外網(wǎng)的標(biāo)識(shí)為:y@server.net/y(n)。
假設(shè)A家庭有成員x1,x2,x3,各自的終端為resource1,resource2,resource3。A家庭作為用戶集合可以在因特網(wǎng)聊天服務(wù)器server.net上注冊(cè)家庭聊天賬號(hào)為x@server.net(本文稱之為A用戶集合聊天號(hào),簡(jiǎn)稱A用戶集合號(hào),A用戶集合中包含的是各個(gè)成員的成員號(hào)x(n)當(dāng)A家庭的成員使用本地號(hào)(n)登錄時(shí),Proxy分別標(biāo)定該本地聊天會(huì)話為:x1@proxy1/resource1,x2@proxy1/resource 2,x3@proxy1/resource 3;
A家庭的成員還可以在因特網(wǎng)聊天服務(wù)器server.net上注冊(cè)自己的獨(dú)立聊天賬號(hào)(本文稱之為外網(wǎng)個(gè)人號(hào)),例如,可以為x1@server.net,x2@server.net,x3@server.net;同時(shí),A家庭的成員也可以在聊天代理Proxy1上注冊(cè)自己的個(gè)人獨(dú)立聊天號(hào)(本文簡(jiǎn)稱個(gè)人號(hào)),如x1_P@proxy1/resource1,x2_P@proxy1/resource 2,a3_P@proxy1/resource 3.
類似地,B家庭作為用戶集合可以在因特網(wǎng)聊天服務(wù)器server.net上注冊(cè)聊天家庭賬號(hào)為y@server.net(簡(jiǎn)稱:B用戶集合號(hào),B用戶集合中包含的也是各個(gè)成員的成員號(hào)y(n)),當(dāng)B家庭的成員使用本地號(hào)(n)登錄時(shí),Proxy分別標(biāo)定該本地聊天會(huì)話為:y1@proxy2/resource1,y2@proxy2/resource2;
B家庭的成員可以在因特網(wǎng)聊天服務(wù)器server.net上注冊(cè)的自己獨(dú)立聊天賬號(hào)(外網(wǎng)個(gè)人號(hào)),例如,可以為y1@server.net,y2@server.net;同時(shí),B家庭的成員也可以在聊天代理Proxy2注冊(cè)自己的個(gè)人獨(dú)立聊天號(hào)(個(gè)人號(hào)),如y1_P@proxy2/resource1,y2_P@proxy2/resource2.
聊天代理,在外網(wǎng)(因特網(wǎng))和內(nèi)網(wǎng)(家庭網(wǎng)或班級(jí)網(wǎng))對(duì)聊天信息進(jìn)行路由和轉(zhuǎn)發(fā),完成內(nèi)網(wǎng)號(hào)和外網(wǎng)號(hào)之間的映射。
基于上述場(chǎng)景,本發(fā)明第一實(shí)施例提出一種利用聊天代理實(shí)現(xiàn)用戶集合號(hào)聊天的方法,如圖2所示,包括:
步驟10:為第一用戶集合形成第一用戶集合號(hào);
步驟12:以所述第一用戶集合號(hào)作為第一參與方進(jìn)行信息交互;所述進(jìn)行信息交互包括:形成所述第一參與方與第二參與方之間的信息交互,和/或,所述第一用戶集合號(hào)參與多人信息交互;所述第二參與方包括以下一種或多種:
第二用戶集合所形成的第二用戶集合號(hào);
第二信息交互代理下的個(gè)人號(hào);
所述第二用戶集合中的一個(gè)成員號(hào)。
本發(fā)明實(shí)施例基于這樣的信息交互或聊天場(chǎng)景,例如兩個(gè)家庭A、B之間進(jìn)行家庭號(hào)和個(gè)人號(hào)的一對(duì)一聊天或以家庭號(hào)參與多人群聊,(顯然對(duì)應(yīng)班級(jí)或其他用戶集合,情形類似),為描述方便,以A家庭為例,在進(jìn)行聊天前,A家庭的聊天代理Proxy1代理A家庭的家庭成員形成家庭號(hào),例如,x@server.net;B家庭的聊天代理Proxy2代理B家庭的家庭成員形成家庭號(hào),例如,y@server.net;
假設(shè),A家庭有成員x1,x2,x3,分別以x1@proxy1/resource1,x2@proxy1/resource2,x3@proxy1/resource3作為在proxy1登錄的全地址JID;類似地,B家庭有成員y1,y2,分別以y1@proxy2/resource1,y2@proxy2/resource2,作為在proxy2登錄的JID。
此時(shí),可以進(jìn)行:
1)A家庭的家庭號(hào)x@server.net與B家庭的家庭號(hào)y@server.net之間進(jìn)行信息交互或一對(duì)一聊天。
在A家庭和B家庭分別以各自的家庭號(hào)x@server.net和y@server.net進(jìn)行一對(duì)一聊天時(shí),從x1@proxy1/resource1,x2@proxy1/resource1,x3@proxy1/resource3發(fā)出的消息,都經(jīng)由Proxy1通過(guò)x@server.net賬號(hào)發(fā)出;
而發(fā)到x@server.net賬號(hào)的消息,則被Proxy1轉(zhuǎn)發(fā)到x1@proxy1/resource1,x2@proxy1/resource2,x3@proxy1/resource3。
類似地,從y1@proxy2/resource1,y2@proxy2/resource2發(fā)出的消息,都由Proxy2通過(guò)y@server.net賬號(hào)發(fā)出;而發(fā)到y(tǒng)@server.net賬號(hào)的消息,則被Proxy2轉(zhuǎn)發(fā)到y(tǒng)1@proxy2/resource1,y2@proxy2/resource2。
兩個(gè)家庭號(hào)x@server.net和y@server.net通過(guò)因特網(wǎng)聊天服務(wù)器形成一對(duì)一聊天,與一般聊天號(hào)的一對(duì)一聊天類似,只是家庭號(hào)內(nèi)部成員通過(guò)家庭聊天代理進(jìn)行收發(fā)消息同步。
2)A家庭的家庭號(hào)x@server.net與B家庭的Proxy2下的個(gè)人號(hào)進(jìn)行信息交互或一對(duì)一聊天;
此時(shí),A家庭的成員x1,x2,x3分別以各自的成員號(hào),例如x1@proxy1/resource1,x2@proxy1/resource2,x3@proxy1/resource3登錄到A家庭的聊天代理Proxy1;而B家庭的成員y1,y2分別以各自的個(gè)人號(hào),例如y1_P@proxy2/resource1和/或y2_P@proxy2/resource2登錄到B家庭的聊天代理Proxy2。由于y1_P@proxy2/resource1和y2_P@proxy2/resource2在因特網(wǎng)聊天服務(wù)器上分別有自己的獨(dú)立個(gè)人號(hào),例如y1@server.net,y2@server.net,發(fā)到y(tǒng)1@server.net的消息被Proxy2轉(zhuǎn)發(fā)到y(tǒng)1_P@proxy2/resource1;發(fā)到y(tǒng)2@server.net的消息被Proxy2轉(zhuǎn)發(fā)到y(tǒng)2_P@proxy2/resource2;
從y1_P@proxy2/resource1發(fā)出的消息則由Proxy2通過(guò)y1@server.net轉(zhuǎn)發(fā);從y2_P@proxy2/resource2發(fā)出的消息也由Proxy2通過(guò)y2@server.net轉(zhuǎn)發(fā);A家庭的用戶集合號(hào)x@server.net的收發(fā)消息的行為,參照上述1)。
3)A家庭的家庭號(hào)x@server.net參與多人信息交互或聊天群。
這里所述的多人聊天群,是指類似現(xiàn)有技術(shù)的組群聊天,但與現(xiàn)有技術(shù)的組群聊天不同的是,現(xiàn)有技術(shù)的組群聊天,參與者為個(gè)人用戶或個(gè)人號(hào),而本發(fā)明實(shí)施中的多人聊天群中的參與者包括用戶集合號(hào),例如,該多人聊天群可以包括A家庭的家庭號(hào)x@server.net,也可以包括B家庭的家庭號(hào)y@server.net等等。
可選地,上述方法的步驟12中,當(dāng)?shù)诙⑴c方為第二用戶集合號(hào)時(shí),形成所述第一參與方與第二參與方之間的信息交互包括:
將所述第一用戶集合中的任一成員號(hào)發(fā)送給所述第二用戶集合中的任一成員號(hào)的消息,由所述第一信息交互代理轉(zhuǎn)發(fā)給所述第一用戶集合中的其它成員號(hào);所述消息由所述第二信息交互代理轉(zhuǎn)發(fā)給所述第二用戶集合中的所有成員號(hào);
當(dāng)所述第一用戶集合號(hào)收到所述第二用戶集合號(hào)發(fā)送的消息時(shí),該消息由所述第一信息交互代理轉(zhuǎn)發(fā)給所述第一用戶集合的所有成員號(hào)。
本發(fā)明實(shí)施例中,例如,A家庭的成員x1的成員號(hào),如x1@proxy1/resource1,向B家庭的家庭號(hào),如y@server.net發(fā)送消息時(shí),所述消息由Proxy2轉(zhuǎn)發(fā)B家庭的家庭號(hào)的所有成員,例如,y1@proxy2/resource1,y2@proxy2/resource2,同時(shí),該消息還由Proxy1轉(zhuǎn)發(fā)到A家庭的家庭號(hào)的其它成員,例如x2@proxy1/resource2,x3@proxy1/resource3;
當(dāng)A家庭的家庭號(hào)x@server.net收到B家庭的家庭號(hào)y@server.net發(fā)送的消息時(shí),該消息由Proxy1下轉(zhuǎn)發(fā)A家庭的家庭號(hào)的所有成員號(hào)。
可選地,所述當(dāng)?shù)诙⑴c方為第二用戶集合號(hào)時(shí),形成所述第一參與方與第二參與方之間的信息交互,還包括:
當(dāng)所述第一用戶集合中的成員號(hào)向所述第二用戶集合中的成員號(hào)發(fā)送消息時(shí),所述消息的會(huì)話由消息發(fā)送方的成員號(hào)和所述成員的會(huì)話資源標(biāo)識(shí),以及消息接收方的成員號(hào)和所述成員的會(huì)話資源標(biāo)識(shí)唯一標(biāo)定,所述消息中包含所述會(huì)話的上下文。
本發(fā)明實(shí)施例中,第一用戶集合的成員號(hào)和第二用戶集合的成員號(hào)登錄各自的聊天代理,除了具有各自的成員號(hào),例如,A家庭的成員號(hào)x1,和B家庭的成員號(hào)y2外,還具有相應(yīng)的資源標(biāo)識(shí),例如PC機(jī)、手機(jī)、PDA等等的資源標(biāo)識(shí),因此第一用戶集合的成員號(hào)例如x1,向第二用戶集合的成員號(hào)例如y2發(fā)送消息的會(huì)話,在proxy1的作用域范圍內(nèi),可以由發(fā)送方的成員號(hào)x1@proxy1和會(huì)話資源標(biāo)識(shí)resource1,以及接收方的成員號(hào)y2@server.net和會(huì)話資源標(biāo)識(shí)y2唯一標(biāo)定。同樣,外部server作用域范圍內(nèi),對(duì)于proxy代理的登錄,同樣的會(huì)有資源標(biāo)識(shí),例如,家庭A的成員x1登錄Proxy1,x1使用資源標(biāo)識(shí)為resourc1,Proxy1根據(jù)規(guī)則轉(zhuǎn)換為外部登錄時(shí)的資源標(biāo)識(shí)x1(或x1相關(guān)唯一信息,例如x1昵稱,等等),向外部聊天服務(wù)器進(jìn)行登錄,例如x@server.net/x1。這樣Proxy1就擁有一個(gè)x1(或x1相關(guān)唯一信息),和resource1之間的映射關(guān)系,同理,對(duì)于外網(wǎng),最終會(huì)有x@server.net/x1到y(tǒng)@server.net/y1這樣的會(huì)話標(biāo)定,Proxy1和Proxy2能夠轉(zhuǎn)換和解釋一個(gè)會(huì)話標(biāo)定在內(nèi)外網(wǎng)之間的表示。
例如,以XMPP協(xié)議實(shí)現(xiàn)為例,所述消息的會(huì)話的標(biāo)識(shí),在Proxy1端可以由x1@proxy1/resource1和y@server.net/y2唯一標(biāo)定。在Proxy2端可以由x@server.net/x1和y2@proxy2/resource2唯一標(biāo)定。在server端則由x@server.net/x1和y@server.net/y2唯一標(biāo)定。
會(huì)話標(biāo)定與會(huì)話上下文:在普通的一對(duì)一聊天中,一個(gè)會(huì)話標(biāo)定能明確消息發(fā)送和接受的明確個(gè)體,但在家庭號(hào)環(huán)境下,對(duì)于家庭成員,這個(gè)標(biāo)定并不直接表明這個(gè)關(guān)系。例如,x1發(fā)給y1消息,在A家庭,proxy1將這個(gè)消息轉(zhuǎn)發(fā)給A家庭的其他成員,而此時(shí)使用的會(huì)話標(biāo)定是:家庭號(hào)x或x1(根據(jù)實(shí)現(xiàn)的不同可能還有別的會(huì)話標(biāo)定的形式)發(fā)給x2@Proxy1/resource2,總之,它不是x1到y(tǒng)1的原始會(huì)話標(biāo)定,即原始的會(huì)話上下文“軌跡””。要想保持原始的會(huì)話“軌跡”(即會(huì)話的上下文)讓其他的家庭成員了解會(huì)話上下文,需要在協(xié)議內(nèi)容中添加信息來(lái)增加這個(gè)會(huì)話的上下文。例如在消息的reason域增加會(huì)話“軌跡””內(nèi)容,或者,對(duì)于其它不兼容的客戶端,可由Proxy直接在消息開(kāi)頭插入會(huì)話“軌跡”內(nèi)容。
可選地,上述方法的步驟12中,當(dāng)?shù)诙⑴c方為第二信息交互代理下的個(gè)人號(hào)時(shí),形成所述第一參與方與第二參與方之間的信息交互,包括:
當(dāng)所述第一用戶集合號(hào)的任一成員號(hào)發(fā)送給所述第二信息交互代理下的個(gè)人號(hào)的消息時(shí),由第一信息交互代理轉(zhuǎn)發(fā)給所述第一用戶集合中的其它成員號(hào);將所述消息通過(guò)所述第一用戶集合的名義發(fā)給所述第二信息交互代理下的個(gè)人號(hào)。
本發(fā)明實(shí)施例中,以A家庭和B家庭為例,例如,A家庭的家庭號(hào)x@server.net下的任一成員,例如x2@proxy1/resurce2發(fā)送給B家庭的Proxy2下的個(gè)人號(hào),例如y1@server.net的消息,由B家庭的Proxy2轉(zhuǎn)發(fā)給proxy2下的個(gè)人號(hào)y1_P@proxy2/resource1,該消息同時(shí)由Proxy1轉(zhuǎn)發(fā)給A家庭的其它成員號(hào),例如x1@proxy1/resource1,x3@proxy1/resource3。
可選地,所述當(dāng)?shù)诙⑴c方為第二信息交互代理下的個(gè)人號(hào)時(shí),形成所述第一參與方與第二參與方之間的信息交互,還包括:
當(dāng)所述第一用戶集合中的成員號(hào)向所述第二信息交互代理下的個(gè)人號(hào)發(fā)送消息時(shí),所述消息的會(huì)話由消息發(fā)送方的成員號(hào)和所述成員號(hào)的會(huì)話資源標(biāo)識(shí),以及消息接收方的個(gè)人號(hào)和會(huì)話資源標(biāo)識(shí)唯一標(biāo)定。
本發(fā)明實(shí)施例中,以A家庭的家庭號(hào)x@server.net的成員號(hào)向B家庭的聊天代理下的個(gè)人號(hào)發(fā)送消息為例:
當(dāng)A家庭的成員號(hào),例如x1,向B家庭的聊天代理Proxy2下的個(gè)人號(hào),例如y2_P發(fā)送消息時(shí),該消息的會(huì)話可以由發(fā)送方的成員號(hào)x1@proxy1和所述成員號(hào)的會(huì)話資源標(biāo)識(shí),例如resource1以及消息接收方的個(gè)人號(hào)b2_P@server.net和所述個(gè)人號(hào)的會(huì)話資源標(biāo)識(shí)b2_p唯一標(biāo)定;
例如在Proxy1端,以XMPP協(xié)議實(shí)現(xiàn)為例,所述消息的會(huì)話的標(biāo)識(shí)可以由x1@proxy1/resource1和b2_P@server.net/b2_P唯一標(biāo)定。
可選地,所述方法的步驟12中,所述第一用戶集合號(hào)參與多人信息交互,包括:
當(dāng)所述第一用戶集合號(hào)參與多人信息交互時(shí),所述第一用戶集合的成員號(hào)發(fā)送到所述多人信息交互的消息,以所述第一用戶集合的名義發(fā)到所述多人信息交互,所述消息由第一信息交互代理同時(shí)轉(zhuǎn)發(fā)給所述第一用戶集合中的其它成員號(hào);
所述多人信息交互發(fā)送到所述第一用戶集合號(hào)的消息,由所述第一信息交互代理轉(zhuǎn)發(fā)到所述第一用戶集合中的所有成員號(hào);
所述第一用戶集合的成員號(hào)以所述多人信息交互的標(biāo)識(shí)號(hào)、所述第一用戶集合號(hào)和所述成員號(hào)的會(huì)話資源作為唯一的會(huì)話標(biāo)識(shí),所述消息中包含所述會(huì)話的上下文。
本發(fā)明實(shí)施例中,對(duì)于多人信息交互或聊天群,以第一用戶集合號(hào)參與多人聊天群為例,假定第一用戶集合號(hào)為A家庭的家庭號(hào)x@server.net,多人聊天群號(hào)為M@server.net,
當(dāng)x@server.net參與多人聊天群M@server.net時(shí),所述x@server.net的成員號(hào),例如x1@proxy1/resource1發(fā)送到所述多人聊天群M@server.net的消息,通過(guò)所述家庭號(hào)x@server.net發(fā)到所述多人聊天群M@server.net,同時(shí)該消息也有Proxy1轉(zhuǎn)發(fā)給所述A家庭的家庭號(hào)的其它成員號(hào),例如x2@proxy1/resource2,x3@proxy1/resource3;
所述多人聊天群M@server.net發(fā)送到A家庭的家庭號(hào),例如x@server.net的消息,由所述A家庭的聊天代理Proxy1轉(zhuǎn)發(fā)到所述A家庭的家庭號(hào)的所有成員號(hào)。
所述A家庭的家庭號(hào)的成員號(hào),例如x1@proxy1/resource1以所述多人聊天群的群號(hào)M@server.net、所述A家庭的用戶集合號(hào)x@server.net和所述成員號(hào)的會(huì)話資源,例如,x1作為唯一會(huì)話標(biāo)識(shí)。
例如,以XMPP為例,所述A家庭的用戶集合號(hào)x1@proxy1/resource1,可以M@server.net和和x@server.net/x1作為唯一會(huì)話標(biāo)定。
顯然,第一用戶集合號(hào)參與多人聊天群時(shí),實(shí)際上是代表了成員號(hào)參與多人聊天群;同樣地,第一用戶集合號(hào)的成員號(hào)也可以參與多人聊天群,實(shí)際上是通過(guò)第一用戶集合號(hào)參與多人聊天群的聊天。
可選地,如圖3所示,所述步驟12之后,還包括:
步驟13:當(dāng)?shù)谝恍畔⒔换ゴ硐碌膫€(gè)人號(hào)添加所述第二用戶集合號(hào)為好友時(shí),加好友邀請(qǐng)發(fā)送到所述第二用戶集合號(hào),好友添加結(jié)果發(fā)給所述第一信息交互代理下的個(gè)人號(hào)和所述第二用戶集合中的每個(gè)成員號(hào);其中,所述加好友邀請(qǐng)通過(guò)所述第二信息交互代理轉(zhuǎn)發(fā)到所述第二用戶集合中的每個(gè)成員號(hào),最先應(yīng)答的有效的肯定或否定消息有效,后續(xù)應(yīng)答消息無(wú)效;
當(dāng)所述第一用戶集合號(hào)添加所述第二用戶集合號(hào)為好友時(shí),成功的添加結(jié)果發(fā)給所述第一用戶集合中的每個(gè)成員號(hào)和所述第二用戶集合中的每個(gè)成員號(hào),不成功的添加結(jié)果發(fā)送給發(fā)起邀請(qǐng)的所述第一用戶集合中的成員號(hào);其中,所述加好友邀請(qǐng)由所述第二信息交互代理轉(zhuǎn)發(fā)到所述第二用戶集合中的每個(gè)成員號(hào),最先應(yīng)答的有效的肯定或否定消息有效,后續(xù)應(yīng)答消息無(wú)效。
可選地,所述最新應(yīng)答的有效的肯定或否定消息中包含所述加好友邀請(qǐng)的上下文。
本發(fā)明實(shí)施例中,仍以A家庭和B家庭為例,當(dāng)A家庭的聊天代理Proxy1下的個(gè)人號(hào),例如x1_P@proxy1/resource1添加B家庭的家庭號(hào)例如y@server.net為好友時(shí),B家庭的家庭號(hào)的每個(gè)成員號(hào)都會(huì)收到所述x1_P@proxy1/resource1的加好友邀請(qǐng),y1@proxy2/resource1,y2@proxy2/resource2中最先應(yīng)答的有效的肯定/否定應(yīng)答消息有效,后續(xù)應(yīng)答的消息無(wú)效,Proxy可采用消息抑制方式抑制該消息對(duì)應(yīng)的其他家庭成員后續(xù)報(bào)文的轉(zhuǎn)發(fā)給外部server。例如y1@proxy2/resource1先應(yīng)答同意后,則表示B家庭的家庭號(hào)同意x1_P@proxy1/resource1的加好友邀請(qǐng),無(wú)論y2@proxy2/resource2是否同意;反之亦然,例如如果y1@proxy2/resouce1先應(yīng)答拒絕后,則表示B家庭的家庭號(hào)拒絕x1_P@proxy1/resourc1的加好友邀請(qǐng),無(wú)論y2@proxy2/resoucre2是否同意。
添加結(jié)果發(fā)給所述B家庭的家庭號(hào)的每個(gè)成員號(hào),例如發(fā)送給y1@server.net/y1,y2@server.net/y2,由proxy2轉(zhuǎn)發(fā)給y1@proxy2/resource1,y2@proxy2/resouce2和所述A家庭的Proxy1下的個(gè)人號(hào),即x1_P@sever.net/x1_P,由proxy1轉(zhuǎn)發(fā)給x1_P@proxy1/resource1。
當(dāng)A家庭的家庭號(hào),例如x@server.net添加B家庭的家庭號(hào),例如y@server.net為好友時(shí),B家庭的家庭號(hào)的每個(gè)成員號(hào)都會(huì)收到x@server.net的加好友邀請(qǐng),最先應(yīng)答的有效的肯定或否定消息有效,后續(xù)應(yīng)答消息無(wú)效,成功的添加結(jié)果發(fā)給B家庭的家庭號(hào)的每個(gè)成員號(hào)和A家庭的家庭號(hào)的每個(gè)成員號(hào),不成功的添加結(jié)果發(fā)送給發(fā)起邀請(qǐng)的A家庭的家庭號(hào)的成員號(hào),例如假設(shè)A家庭的家庭號(hào),例如x@server.net,添加B家庭的家庭號(hào),例如y@server.net,為好友是由成員號(hào)x1@proxy1/resource1發(fā)起的,假設(shè)B家庭的家庭號(hào)的成員號(hào)y1@proxy2/resource1最先應(yīng)答且拒絕邀請(qǐng),則不成功的添加結(jié)果,發(fā)送給x1@server.net/x1,由proxy1轉(zhuǎn)發(fā)給x1@proxy1/resouce1。
作為一種可選的實(shí)施方案,可以在家庭號(hào)添加/刪除好友時(shí),Proxy可添加協(xié)議允許字段來(lái)標(biāo)識(shí)添加好友邀請(qǐng)的上下文(或“軌跡”)信息并記住這個(gè)消息的標(biāo)識(shí),從而使各個(gè)家庭成員了解家庭號(hào)添加/刪除好友的具體原因或加好友邀請(qǐng)的上下文,以便確定添加/刪除;相應(yīng)地,要求最終的終端軟件有能力解釋出加好友要求消息中攜帶的上下文信息的特定字段。
可選地,如圖3所示,所述方法步驟12之后,還包括:
步驟14:當(dāng)所述第一用戶集合中的成員號(hào)上線時(shí),上線消息發(fā)送給所述第一用戶集合號(hào)的每個(gè)允許觀察在線的好友,以所述第一用戶集合號(hào)和所述成員號(hào)的信息標(biāo)識(shí)所述上線消息;
當(dāng)所述第一用戶集合號(hào)的好友上線時(shí),上線消息發(fā)送給所述第一用戶集合中的每個(gè)成員號(hào)。
本發(fā)明實(shí)施例中,假設(shè)第一用戶集合號(hào)為A家庭的家庭號(hào),當(dāng)A家庭的家庭號(hào)的成員號(hào)上線時(shí),上線消息發(fā)送給所述A家庭的家庭號(hào)x@server.net的每個(gè)允許觀察在線的好友,以A家庭的家庭號(hào)和所述成員號(hào)的信息標(biāo)識(shí)所述上線消息。例如x1@proxy1/resource1上線時(shí),該成員x1@proxy1/resource1的上線消息,發(fā)送給x@server.net的每個(gè)允許觀察在線的好友,該消息能夠標(biāo)識(shí)用戶集合號(hào)x@server.net和相關(guān)成員號(hào)x1信息,例如可以以x@server.net/x1表示。
當(dāng)A家庭的家庭號(hào)x@server.net的好友上線時(shí),上線消息發(fā)送給A家庭的家庭號(hào)的每個(gè)成員號(hào)。
可選地,如圖3所示,所述方法步驟12之后,還包括:
步驟15:當(dāng)信息交互對(duì)方離線時(shí),所述第一用戶集合號(hào)可以發(fā)送離線消息給所述信息交互對(duì)方,所述離線消息由第一用戶集合中的成員號(hào)發(fā)送給所述信息交互對(duì)方;
當(dāng)所述第一用戶集合號(hào)離線時(shí),發(fā)送給第一用戶集合號(hào)的消息保存為離線消息,當(dāng)離線的第一用戶集合中的成員號(hào)上線后,將所述離線消息發(fā)送給所述第一用戶集合號(hào);
當(dāng)所述第一用戶集合中的部分成員號(hào)離線時(shí),所述離線的成員號(hào)上線后獲取離線時(shí)發(fā)送給所述第一用戶集合號(hào)的消息。
本發(fā)明實(shí)施例中,例如當(dāng)A家庭的家庭號(hào)的聊天對(duì)方(個(gè)人或家庭號(hào))離線時(shí),x@server.net可以發(fā)送離線消息給聊天對(duì)方,該離線消息是由A家庭的家庭號(hào)的成員號(hào),即某個(gè)成員號(hào)發(fā)送給對(duì)方的。
當(dāng)A家庭的家庭號(hào)的所有成員號(hào)離線時(shí),則A家庭的家庭號(hào)x@server.net離線,發(fā)給x@server.net的消息保存為離線消息,當(dāng)離線的x@server.net的成員號(hào)上線后,將所述離線消息發(fā)送x@server.net,由x@server.net轉(zhuǎn)發(fā)給x@proxy1;
當(dāng)A家庭的家庭號(hào)的部分成員號(hào)離線時(shí),例如x1@proxy1/resource1在線,而x2@proxy1/resource2和x3@proxy1/resource3離線,A家庭的家庭號(hào)x@server.net仍然在線,所述離線的成員號(hào),例如x2@proxy1/resource2和x3@proxy1/resource3上線后獲取離線時(shí)的消息。
可選地,如圖3所示,所述方法步驟12之后,還包括:
步驟16:接收所述第一用戶集合中的成員號(hào)和信息交互對(duì)方的查詢請(qǐng)求,并反饋信息交互記錄,對(duì)于所述成員號(hào),信息交互記錄標(biāo)識(shí)所述成員號(hào)所屬的第一用戶集合號(hào)和所述成員的信息。
本發(fā)明實(shí)施例中,假設(shè)第一用戶集合號(hào)為A家庭的用戶集合號(hào),A家庭的成員號(hào)x1@proxy1/resource1與聊天對(duì)方都可搜索聊天記錄,對(duì)于該成員號(hào),聊天記錄可以標(biāo)識(shí)A家庭號(hào)x@server.net和x1@proxy1/resource1信息,例如對(duì)于家庭A之外的聊天成員,可以搜索到標(biāo)識(shí)x@server.net/x1。
上述步驟13~16沒(méi)有先后關(guān)系,是并列選擇關(guān)系。
本發(fā)明實(shí)施例提供的一種實(shí)現(xiàn)用戶集合號(hào)信息交互的方法,僅需要在信息交互服務(wù)器(或聊天服務(wù)器)和客戶端直接增加信息交互代理功能,對(duì)信息交互服務(wù)器和信息交互客戶端并無(wú)修改,即可實(shí)現(xiàn)以用戶集合為單元的信息交互功能,便于快速布設(shè)家庭、班級(jí)等行為的社交、信息交互(或聊天)系統(tǒng)。
相應(yīng)地,本發(fā)明第三實(shí)施例還提供了一種用戶集合號(hào)信息交互的裝置,如圖4所示,包括:
用戶集合號(hào)生成模塊20,用于為第一用戶集合形成第一用戶集合號(hào);
集合號(hào)信息交互模塊21,用于以所述第一用戶集合號(hào)作為第一參與方進(jìn)行信息交互;所述進(jìn)行信息交互包括:形成所述第一參與方與第二參與方之間的信息交互,和/或,所述第一用戶集合號(hào)參與多人信息交互;所述第二參與方包括以下一種或多種:
第二用戶集合形成的第二用戶集合號(hào);
第二信息交互代理下的個(gè)人號(hào);
所述第二用戶集合中的一個(gè)成員號(hào)。
可選地,其中,當(dāng)?shù)诙⑴c方為第二用戶集合號(hào)時(shí),形成所述第一參與方與第二參與方之間的信息交互,包括:
將所述第一用戶集合中的任一成員號(hào)發(fā)送給所述第二用戶集合中的任一成員號(hào)的消息,由第一信息交互代理轉(zhuǎn)發(fā)給所述第一用戶集合中的其它成員號(hào);所述消息由所述第二信息交互代理轉(zhuǎn)發(fā)給所述第二用戶集合中的所有成員號(hào);
所述第一用戶集合號(hào)收到所述第二用戶集合號(hào)發(fā)送的消息時(shí),該消息由所述第一信息交互代理轉(zhuǎn)發(fā)給所述第一用戶集合的所有成員號(hào)。
可選地,所述當(dāng)?shù)诙⑴c方為第二用戶集合號(hào)時(shí),形成所述第一參與方與第二參與方之間的信息交互,還包括:
當(dāng)所述第一用戶集合中的成員號(hào)向所述第二用戶集合中的成員號(hào)發(fā)送消息時(shí),所述消息的會(huì)話由消息發(fā)送方的成員號(hào)和所述成員的會(huì)話資源標(biāo)識(shí),以及消息接收方的成員號(hào)和所述成員的會(huì)話資源標(biāo)識(shí)唯一標(biāo)定,所述消息中包含所述會(huì)話的上下文。
可選地,其中,當(dāng)?shù)诙⑴c方為第二信息交互代理下的個(gè)人號(hào)時(shí),形成所述第一參與方與第二參與方之間的信息交互,包括:
當(dāng)所述第一用戶集合中的任一成員號(hào)發(fā)送給所述第二信息交互代理下的個(gè)人號(hào)的消息時(shí),由第一信息交互代理轉(zhuǎn)發(fā)給所述第一用戶集合中的其它成員號(hào);將所述消息以所述第一用戶集合號(hào)的名義發(fā)給所述第二信息交互代理下的個(gè)人號(hào)。
可選地,所述當(dāng)?shù)诙⑴c方為第二信息交互代理下的個(gè)人號(hào)時(shí),形成所述第一參與方與第二參與方之間的信息交互,,還包括:
當(dāng)所述第一用戶集合中的成員號(hào)向所述第二信息交互代理下的個(gè)人號(hào)發(fā)送消息時(shí),所述消息的會(huì)話由消息發(fā)送方的成員號(hào)和所述成員的會(huì)話資源標(biāo)識(shí),以及消息接收方的個(gè)人號(hào)和會(huì)話資源標(biāo)識(shí)唯一標(biāo)定,所述消息中包含所述會(huì)話的上下文。
可選地,其中,所述第一用戶集合號(hào)參與多人信息交互,包括:
當(dāng)所述第一用戶集合號(hào)參與多人信息交互時(shí),所述第一用戶集合中的成員號(hào)發(fā)送到所述多人信息交互的消息,以所述第一用戶集合號(hào)的名義發(fā)到所述多人信息交互,所述消息由第一信息交互代理同時(shí)轉(zhuǎn)發(fā)給所述第一用戶集合的其它成員號(hào);
所述多人信息交互發(fā)送到所述第一用戶集合號(hào)的消息,由所述第一信息交互代理轉(zhuǎn)發(fā)到所述第一用戶集合號(hào)的所有成員號(hào);
所述第一用戶集合的成員號(hào)以所述多人信息交互的標(biāo)識(shí)號(hào)、所述第一用戶集合號(hào)和所述成員號(hào)的會(huì)話資源作為唯一會(huì)話標(biāo)識(shí),所述消息中包含所述會(huì)話的上下文。
可選地,如圖5所示,所述裝置還包括:
個(gè)人號(hào)好友添加模塊22,用于所述第一信息交互代理下的個(gè)人號(hào)添加所述第二用戶集合號(hào)為好友時(shí),加好友邀請(qǐng)發(fā)送到所述第二用戶集合號(hào),好友添加結(jié)果發(fā)給所述第一信息交互代理下的個(gè)人號(hào)和所述第二用戶集合中的每個(gè)成員號(hào);其中,所述加好友邀請(qǐng)通過(guò)所述第二信息交互代理轉(zhuǎn)發(fā)到所述第二用戶集合中的每個(gè)成員號(hào),最先應(yīng)答的有效肯定或否定消息有效,后續(xù)應(yīng)答消息無(wú)效;
集合號(hào)好友添加模塊23,用于當(dāng)所述第一用戶集合號(hào)添加所述第二用戶集合號(hào)為好友時(shí),成功的添加結(jié)果發(fā)給所述第一用戶集合中的每個(gè)成員號(hào)和所述第二用戶集合中的每個(gè)成員號(hào),不成功的添加結(jié)果發(fā)送給發(fā)起邀請(qǐng)的所述第一用戶集合中的成員號(hào);其中,所述加好友邀請(qǐng)由所述第二信息交互代理轉(zhuǎn)發(fā)到所述第二用戶集合中的每個(gè)成員號(hào),最先應(yīng)答的有效的肯定或否定消息有效,后續(xù)應(yīng)答消息無(wú)效。
可選地,所述最新應(yīng)答的有效的肯定或否定消息中包含所述加好友邀請(qǐng)的上下文。
可選地,如圖5所示,所述裝置還包括:
上線消息通知模塊24,用于當(dāng)所述第一用戶集合中的成員號(hào)上線時(shí),上線消息發(fā)送給所述第一用戶集合號(hào)的每個(gè)允許觀察在線的好友,以所述第一用戶集合號(hào)和所述成員號(hào)的信息標(biāo)識(shí)所述上線消息;
當(dāng)所述第一用戶集合號(hào)的好友上線時(shí),上線消息發(fā)送給所述第一用戶集合中的每個(gè)成員號(hào)。
可選地,如圖5所示,所述裝置還包括:
離線消息收發(fā)模塊25,用于當(dāng)信息交互對(duì)方離線時(shí),所述第一用戶集合號(hào)發(fā)送離線消息給信息交互對(duì)方,所述離線消息由第一用戶集合中的成員號(hào)發(fā)送給所述信息交互對(duì)方;
當(dāng)所述第一用戶集合號(hào)離線時(shí),發(fā)送給第一用戶集合號(hào)的消息保存為離線消息,當(dāng)離線的第一用戶集合中的成員號(hào)上線后,將所述離線消息發(fā)送給所述第一用戶集合號(hào);
當(dāng)所述第一用戶集合中的部分成員號(hào)離線時(shí),所述離線的成員號(hào)上線后獲取離線時(shí)發(fā)送給所述第一用戶集合號(hào)的消息。
可選地,如圖5所示,所述裝置還包括:
信息交互記錄查詢模塊26,用于接收所述第一用戶集合中的成員號(hào)和信息交互對(duì)方的查詢請(qǐng)求,并反饋信息交互記錄;其中,對(duì)于所述成員號(hào),信息交互記錄標(biāo)識(shí)所述成員號(hào)所屬的第一用戶集合號(hào)和所述成員的信息。
本發(fā)明實(shí)施例提供的一種實(shí)現(xiàn)用戶集合號(hào)信息交互的方法,僅需要在信息交互服務(wù)器(或聊天服務(wù)器)和客戶端直接增加信息交互代理功能,對(duì)信息交互服務(wù)器和信息交互客戶端并無(wú)修改,即可實(shí)現(xiàn)以用戶集合為單元的信息交互功能,便于快速布設(shè)家庭、班級(jí)等行為的社交、信息交互(或聊天)系統(tǒng)。
本發(fā)明還提供一種信息交互代理,包括上述任一項(xiàng)所述裝置,所述裝置采用XMPP協(xié)議實(shí)現(xiàn);
本發(fā)明還提供一種家庭網(wǎng)關(guān),包括上述信息交互代理,其中,所述用戶集合號(hào)為家庭聊天號(hào)。
下面以一個(gè)示范性實(shí)施例,對(duì)本發(fā)明的實(shí)施例進(jìn)一步詳細(xì)描述。例如,
在A家庭的家庭網(wǎng)關(guān)中設(shè)置了聊天代理Proxy1,在B家庭的家庭網(wǎng)關(guān)中設(shè)置了聊天代理Proxy2;Proxy1,Proxy2統(tǒng)稱為Proxy,即家庭聊天代理;假定XMPP的因特網(wǎng)聊天服務(wù)器為@server.net。
以A家庭為例:
當(dāng)A家庭的第一個(gè)家庭成員登錄到proxy1時(shí),proxy1從家庭成員登錄的resource中提取到x(n)和resource(n),proxy1采用“x(n)”作為選定的外網(wǎng)JID的resource部分登錄外網(wǎng)服務(wù)器,生成外網(wǎng)服務(wù)器上的會(huì)話標(biāo)定:“x@server.net/x(n)”。這樣外網(wǎng)服務(wù)器上的會(huì)話標(biāo)定和家庭成員之間可用resource(n):x(n)關(guān)聯(lián)起來(lái)。每個(gè)A家庭的家庭成員登錄本地proxy1時(shí)都會(huì)觸發(fā)proxy1用這種方法登錄外網(wǎng)聊天服務(wù)器,這樣在外網(wǎng)聊天服務(wù)器上會(huì)存在多條外網(wǎng)JID的會(huì)話標(biāo)定,當(dāng)需要單獨(dú)處理某個(gè)家庭成員的會(huì)話時(shí),可使用這個(gè)映射關(guān)系來(lái)對(duì)相應(yīng)信息進(jìn)行處理和操作。
例如,以XMPP協(xié)議參考實(shí)現(xiàn)為例:
一、Proxy使用外網(wǎng)號(hào)登錄聊天服務(wù)器:(以家庭1為例)
PROXY1使用外網(wǎng)號(hào)Ox,像正常的個(gè)人聊天ID一樣登錄聊天服務(wù)器,觸發(fā)登錄的規(guī)則可以采用以下任一種方式:
1.第一個(gè)家庭成員登錄到Ox時(shí)觸發(fā)向聊天服務(wù)器登錄;
2.PROXY服務(wù)開(kāi)啟時(shí)就登錄;
3.由命令觸發(fā)登錄;
家庭成員使用本地聊天ID登錄PROXY完成初始化,可選3種策略對(duì)內(nèi)網(wǎng)和外網(wǎng)號(hào)進(jìn)行關(guān)聯(lián)和初始化,3種方式各有特別的作用可針對(duì)擴(kuò)展的場(chǎng)景進(jìn)行選擇:(以下以家庭1為例說(shuō)明)
(一)、家庭號(hào)采用觸發(fā)登錄策略:當(dāng)?shù)谝粋€(gè)家庭成員登錄到proxy時(shí),proxy從家庭成員登錄的resource中提取到x(n)和resource(n),proxy采用“x(n)”作為選定的外網(wǎng)JID的resource部分登錄外網(wǎng)服務(wù)器,生成外網(wǎng)服務(wù)器上的會(huì)話標(biāo)定:“x@server.net/x(n)”。這樣外網(wǎng)服務(wù)器上的會(huì)話標(biāo)定和家庭成員之間可用resource(n):x(n)關(guān)聯(lián)起來(lái)。每個(gè)家庭成員登錄本地proxy時(shí)都會(huì)觸發(fā)proxy用這種方法登錄外網(wǎng)聊天服務(wù)器,這樣在外網(wǎng)聊天服務(wù)器上會(huì)存在多條外網(wǎng)JID的會(huì)話標(biāo)定,當(dāng)需要單獨(dú)處理某個(gè)家庭成員的會(huì)話時(shí),可使用這個(gè)映射關(guān)系來(lái)對(duì)比要的信息進(jìn)行處理和操作。
XMPP實(shí)現(xiàn)參考:
1、家庭1成員2使用本地賬號(hào)2登錄proxy1:
X2@proxy1/resource2->登錄->proxy1
2、觸發(fā)外網(wǎng)號(hào)Ox使用resource:“x2”登錄:
x@server.net/x2->登錄->server
3、proxy收到server返回結(jié)果:
x@server.net/x2<-登錄成功/失敗<-server
4、proxy處理后轉(zhuǎn)發(fā)返回結(jié)果給家庭成員:
X2@proxy1/resource2<-登錄成功<-proxy1
(二)家庭號(hào)采用開(kāi)機(jī)登錄策略:由于proxy、開(kāi)機(jī)要先于家庭成員登錄到proxy,因此,proxy無(wú)法從家庭成員登錄到proxy的消息中得到resource信息,此時(shí),可用proxy的ID作為resource信息向XMPP server登錄。后續(xù)各個(gè)家庭成員x(n)登錄時(shí)采用和觸發(fā)登錄相同的策略來(lái)組織resource(n):x(n)關(guān)聯(lián)關(guān)系。
XMPP實(shí)現(xiàn)示例:
1、Proxy1開(kāi)機(jī)自動(dòng)登錄:
x@server.net/proxy1->登錄->server
x@server.net/proxy1<-登錄成功<-server
2、家庭1成員1使用本地賬號(hào)1登錄:
x1@proxy1/resource1->登錄->proxy1
3、proxy1轉(zhuǎn)換后發(fā)給server:
x@server.net/x1->登錄->server
4、server返回登錄結(jié)果給Proxy:
x@server.net/x1<-登錄成功/失敗<-server
5、proxy處理后發(fā)給家庭成員:
x1@proxy1/resource1<-登錄成功/失敗<-proxy1
(三)家庭號(hào)采用命令登錄:proxy可接受登錄命令,命令可包含家庭成員本地ID,映射的外網(wǎng)resource內(nèi)容。這樣建立起本地家庭成員和經(jīng)過(guò)Proxy代理后的關(guān)系。
XMPP參考實(shí)現(xiàn)參見(jiàn)以上兩種登錄方式。
二、在proxy上的聊天群登錄
Proxy根據(jù)本地群算法,保持每個(gè)本地群和參與方的信息。當(dāng)家庭成員登錄proxy時(shí),proxy判斷該成員屬于哪些本地群,proxy為每個(gè)該成員參與的本地群發(fā)起加群邀請(qǐng)給這個(gè)家庭成員。
三、家庭成員登錄后獲取好友列表和離線消息:
1、家庭1成員x(n)使用本地號(hào)x(n)登錄時(shí),本地號(hào)x(n)和proxy1之間采用Lx(n)來(lái)標(biāo)定此家庭成員,Proxy1代理這個(gè)家庭成員修改From域?yàn)镺x/x(n)后登錄到服務(wù)器。
x(n)@proxy1/resource(n)->登錄->proxy
x@server.net/x(n)->登錄->server
2、服務(wù)器發(fā)送Ox的好友列表、離線好友申請(qǐng)等等消息給這個(gè)登錄的session,這些消息被Proxy1收到。
好友y的在線消息:
Presence from:y@server.net/resource(y)
To:x@server.net
3、Proxy1收到后修改to域?yàn)長(zhǎng)x(n)后發(fā)送這些消息給Lx(n)。
Presence from:y@server.net/resource(y)
To:x(n)@proxy1/resource(n)
4、Proxy1查看本地號(hào)x(n)是否屬于任何本地群并且proxy1還未發(fā)給該家庭成員加群消息或者一段時(shí)間內(nèi)還未對(duì)已發(fā)出的加群消息進(jìn)行響應(yīng),如果是,則分別針對(duì)這些命中的群發(fā)送加群消息給Lx(n),加群消息處理和流程見(jiàn)群創(chuàng)建和消亡章節(jié)
5、本地號(hào)進(jìn)群后(如果有的話),Proxy則根據(jù)歷史推送離線信息給這個(gè)家庭成員。
四、創(chuàng)建proxy本地聊天群:Proxy可選有3種觸發(fā)建立本地家庭聊天群。
(一)發(fā)送消息觸發(fā)創(chuàng)建家庭聊天群:(以家庭1成員1發(fā)起消息為例)
1、家庭1成員x1向?qū)Ψ絆y發(fā)送聊天信息Message1;
Message From:x 1@proxy1/resource1
To:y@server.net
Id:message1
Body:This is messsage1
2、PROXY1判斷(LG1,Oy)群是否存在,如果存在,則按照群收發(fā)消息處理;如果不存在則建立(LG1,Oy)本地群信息,并分配聊天群ID給該群,假設(shè)群ID=群ID1;
例如群ID1=“homechat/y”
3、PROXY1攜帶(聊天群ID1、Oy的信息、Message1關(guān)鍵信息等上下文)的群邀請(qǐng)消息給發(fā)消息的家庭成員Lx(n),指示Lx(n)從一對(duì)一聊天轉(zhuǎn)為群聊,Message1消息發(fā)送成功,Lx(n)如果不加入聊天群ID1,則清除聊天群,本次家庭聊天結(jié)束。如果Lx(n)加入聊天群ID1則繼續(xù)以下步驟;
首先發(fā)送給發(fā)起消息的成員,本例中的x1:
From:homechat/y@proxy1
To:x1@proxy1/resource1
Muc invite:from y@server.net(或from y@server.net/resource(y))
Reason:homechat x1@proxy1/resource1to y@server.net:send_message.
說(shuō)明:Reason表示群聊天的起因是家庭成員1發(fā)起對(duì)y的聊天,x1@proxy1/resource1是家庭成員x1在Proxy1上的全地址JID,。
采用協(xié)議的reason域來(lái)關(guān)聯(lián)這個(gè)邀請(qǐng)的“原因”,即聊天上下文的“軌跡”;homechat表明是一個(gè)家庭聊天,homechat/y明確了是本家庭和對(duì)方y(tǒng)的聊天,y@server.net是Proxy1收到x1發(fā)來(lái)消息里面的to域純JID。x1可以發(fā)y@server.net也可能發(fā)y@server.net/resource(y)這取決于當(dāng)時(shí)的聊天狀態(tài)。
成員1看到上下文軌跡,決定加入,可以發(fā)送:
Presence to:homechat/y@proxy1/nicke(1)
(Nicke(1)是x1在這個(gè)聊天群內(nèi)的昵稱,可以由成員x1自定)
Proxy1返回成員列表給成員x1:
Presence節(jié)中消息
from:homechat/y@proxy1/nicke(y)
To:x1@proxy1/resource1
Item:j id域=y(tǒng)@server.net/resource(y)
Nicke域=nicke(y)
(Nick(y):是proxy1添加的y在這個(gè)聊天群的nicke,其作用,可用于關(guān)聯(lián)外網(wǎng)的y和本地proxy1上聊天室里的y。另外,nicke(y)信息,可以采用y的全地址JID組成,例如,y@server.net/resouce(y)。實(shí)際上這個(gè)信息是來(lái)自于x1發(fā)送的消息的to域,當(dāng)沒(méi)有resource(y)信息時(shí),nicke(y)可取y@server.net。)
From:homechat/y@proxy1/nicke(1)
To:x1@proxy1/resource1
Item id:x1@proxy1/resource(1):nicke(1)
說(shuō)明:除y之外,有多少個(gè)已經(jīng)加入的成員就會(huì)發(fā)多少個(gè)這種消息。
如果成員x1拒絕加入該群,則proxy1取消該群,proxy1將返回錯(cuò)誤信息給家庭成員x1:
成員x1可發(fā)送:
Message to:homechat/y@proxy1
Muc decline to:homechat/y@proxy1
Proxy1發(fā)送給成員x1:
From:homechat/y@proxy1
To:x1@proxy1/nicke(1)
Error:could not use homechat service if not accepts to join this room.
4.PROXY1分別向LG1不在群內(nèi)的家庭成員發(fā)起進(jìn)群邀請(qǐng),攜帶群ID1、對(duì)方Oy的信息(比如昵稱、聊天ID等),并使用(群ID1,Oy信息)標(biāo)識(shí)家庭1和Oy之間的這個(gè)特定聊天會(huì)話;
例如:發(fā)送給成員x2
From:homechat/y@proxy1
To:x2@proxy/resource2
Muc invite:from y@server.net/resource(y)
Reason:homechat x1@proxy1/resource1to y@server.net:send_message
Reason域表示發(fā)起原因是家庭成員給y發(fā)消息而建的群。
5.已經(jīng)登錄的家庭成員收到進(jìn)群邀請(qǐng),終端可根據(jù)該邀請(qǐng)攜帶的會(huì)話軌跡提示群的上下文信息給家庭成員,家庭成員如果有意愿該群的則確認(rèn)進(jìn)入該群,否則拒絕。
此時(shí),進(jìn)入群ID1的家庭成員,包括Lx(n)本人通過(guò)上下文將了解到向聊天群內(nèi)的homechat/y@proxy1/nicke(y)發(fā)消息,就是用家庭聊天的方式向Oy發(fā)消息。
6.家庭成員如果進(jìn)入該群,PROXY1修改Message1的to域?yàn)槿篒D1,from域改為群ID1/nick(n),發(fā)給加入這個(gè)聊天群的所有家庭成員,以使家庭聊天的信息達(dá)到共享上下文的目的。(其他在該家庭成員未進(jìn)入群之前的群歷史消息也是類似處理,用于保持上下文)
例如:消息發(fā)送給成員2
Message From:homechat/y@proxy1/nicke(1)
Type:groupchat
To:x2@proxy1/resource2
Id:message1
Body:from nicke(1)to nicke(y):This is messsage1(即會(huì)話軌跡)
Delay:from='homechat/y@proxy1/成員1'stamp='2000-01-02T15:44:14Z'
7.PROXY1修改Message1的from域?yàn)镺x/resource,resource為發(fā)送消息的家庭成員對(duì)應(yīng)的ID,以此家庭成員x1為例,resource=x1。向Oy發(fā)送該消息。
Message From:x@server.net/x1
To:y@server.net//或To:y@server.net/y的resource
Id:message1
Body:This is messsage1
8.PROXY建立群后,在后續(xù)的消息轉(zhuǎn)發(fā)處理步驟見(jiàn)群發(fā)送和接收步驟。
9.家庭1成員退出群
例如成員2退出:
Presence to:homechat/y@proxy1
Type:unavailable
(二)、接收消息觸發(fā)建立proxy本地群:
1.對(duì)方Oy發(fā)送聊天信息Message2給家庭1;
Message From:y@server.net/resource(y)
To:x@server.net
Id:message2
Body:This is messsage2
2.Message2消息到達(dá)PROXY1;
3.PROXY1判斷(LG1,Oy)映射是否存在,如果存在,則按照群收
發(fā)消息處理;如果不存在則建立(LG1,Oy)本地聊天群。假設(shè)新建立的聊天群ID=ID2,(LG1,Oy)。
4.PROXY1分別向LG1不在群內(nèi)的家庭1成員發(fā)起進(jìn)群邀請(qǐng),攜帶
聊天群ID2、對(duì)方Oy的信息(比如昵稱、聊天ID等),用(聊天群ID2,Oy信息)標(biāo)識(shí)一個(gè)會(huì)話;
例如發(fā)送給成員x2:
From:homechat/y@proxy1
To:x2@proxy1/resource2
Muc invite:from y@server.net/resource(y)
Reason:homechat y@server.net/resource(y)to x@server.net:receive_message
說(shuō)明:reason表示發(fā)起群聊的原因是y向家庭號(hào)發(fā)送了消息;
采用協(xié)議的reason域來(lái)關(guān)聯(lián)這個(gè)邀請(qǐng)的原因或軌跡,homechat表明是一個(gè)家庭聊天,y@server.net/resource(y)是Proxy1收到y(tǒng)發(fā)來(lái)消息里面的y的全地址JID,x@server.net是Proxy1收到y(tǒng)發(fā)來(lái)消息里面的to域,receive_message表示收到消息而建的群。
5.家庭成員收到進(jìn)群邀請(qǐng),終端能提示相關(guān)的聊天群上下文和對(duì)方信息,如果有意愿該群的確認(rèn)進(jìn)入該群,否則拒絕,當(dāng)所有本地家庭成員都拒絕進(jìn)入該群時(shí),proxy代理Ox向Oy發(fā)送消息拒絕信息;
這里,需要設(shè)置超時(shí)時(shí)間,在設(shè)置的時(shí)間內(nèi)所有成員拒絕,或超時(shí)間,沒(méi)有成員意愿進(jìn)入,則拒絕消息。若沒(méi)有在線成員,即離線消息,從有成員上線開(kāi)始計(jì)時(shí)。
例如家庭成員x2發(fā)加入群消息給proxy1:
Presence to:homecha/y@proxy1/nicke(2)
Proxy1返回成員列表給成員2:
Presence from:homechat/y@proxy1
To:x2@proxy1/resource2
Item id:y@server.net/resource(y):nicke(y)
Presence from:homechat/y@proxy1
To:x2@proxy1/resource2
Item id:x1@proxy1/resource1:nicke(1)
Presence from:homechat/y@proxy1
To:x2@proxy1/resource2
Item id:x2@proxy1/resource2:nicke(2)
說(shuō)明:除了y外,有幾個(gè)已經(jīng)加入的成員,就發(fā)幾個(gè)這樣的消息。
6.PROXY1修改Message2的to域改為群ID2,from域改為群ID2/resource(y),發(fā)給加入這個(gè)聊天群的所有家庭成員。
例如家庭成員x1將收到proxy1發(fā)來(lái)的消息:
Message From:homechat/y@proxy1/nickey(y)
Type:groupchat
To:x1@proxy1/resource1
Id:message2
Body:from y@server.net to x@server.net:This is messsage2
家庭成員x2收到消息:
Message From:homechat/y@proxy1/nicke(y)
Type:groupchat
To:x2@proxy1/resource2
Id:message2
Body:from y@server.net to x@server.net:This is messsage2
7.家庭成員后續(xù)的收發(fā)消息見(jiàn)群發(fā)送和接收步驟。
(三)、命令創(chuàng)建家庭聊天群:(以家庭1為例)
由proxy管理員操作創(chuàng)建的聊天群,可以提供一種靈活的按需建立家庭聊天的方式。
1.命令范式CreateHomeChat(Oy)下達(dá)到Proxy1。
2.PROXY1判斷(LG1,Oy)映射是否存在,如果存在則不再建立聊天群,并返回(LG1,Oy)相關(guān)信息。如果不存在則建立(LG1,Oy)映射并分配唯一的聊天群ID1;
3.PROXY1分別向LG1不在群內(nèi)的家庭成員發(fā)起進(jìn)群邀請(qǐng)攜帶(聊天群ID3、Oy的信息);
例如發(fā)送給成員x2:
From:homechat/y@proxy1/resource(proxy1)
To:x2@proxy1/resource2
Muc invite:from homechat/y@proxy1/(proxy1)
Reason:homechat x@server.net to server.net/resource(y):proxy_creat
此處,Reason域表示發(fā)起群聊的原因是x家庭號(hào)需要向y發(fā)送消息。
4.家庭成員收到邀請(qǐng)進(jìn)群消息,終端可提示群ID3的上下文和對(duì)方Oy的信息,家庭成員有意愿該群的確認(rèn)進(jìn)入該群,否則拒絕,如果全部家庭成員拒絕的話,該命令失敗,由Proxy1返回調(diào)用方結(jié)果否則返回聊天群ID3詳細(xì)信息給調(diào)用方;
5.家庭成員將根據(jù)接收到的(聊天群ID3、Oy的信息)了解到此為家庭聊天群,向聊天群ID3發(fā)消息就是用家庭聊天的方式向Oy發(fā)消息。
6.后續(xù)的消息處理將群收發(fā)消息流程。
五、群收發(fā)消息:
a)、家庭成員發(fā)消息
1.LG1:Lx(n)要用家庭聊天的方式向Oy發(fā)送消息時(shí),根據(jù)(聊天群ID1、Oy的信息)向聊天群ID1發(fā)消息message4;
家庭成員x1發(fā)送消息:
Message From:x1@proxy1/resource1
Type:groupchat
To:homechat/y@proxy1/nicke(y))
Id:message4
Body:messsage4
2.Proxy收到消息后,針對(duì)家庭1其他家庭成員,修改Message4的to域?yàn)槿骸癐D1/nicke(n)”,消息體中加入From nicke(n),例如本例中為Fromnicke(1),發(fā)給加入這個(gè)聊天群的所有家庭成員。
例如消息轉(zhuǎn)發(fā)給成員2:
Message From:homechat/y@proxy1/nicke(1)
Type:groupchat
To:x2@proxy1/resource2
Id:message4
Body:from nicke(1)to nicke(y):messsage4
此處,Message4 body內(nèi)容中from昵稱表示原始發(fā)送者,to昵稱表示發(fā)送的目標(biāo),這個(gè)消息將作為聊天的軌跡信息。
3.對(duì)Oy,PROXY修改Message4的from域?yàn)镺x/x(n),在本例中為“Ox/x1”向Oy發(fā)送該消息。
Message From:x@server.net/x1
To:y@server.net/resource(y)
Id:message4
Body:This is messsage4
b)家庭成員收消息
1.Oy向Ox或Ox/x(n)發(fā)送消息Message5;(以發(fā)給x1為例)
Message From:y@server.net/resource(y)
To:x@server.net/x1//或者是To:x@server.net
Id:message5
Body:This is messsage5
2.Proxy1收到消息后,對(duì)家庭x1的所有成員,proxy1根據(jù)(聊天群ID1、Oy的信息)修改Message5的to域?yàn)榱奶烊篒D1,并發(fā)給加入這個(gè)聊天群的所有家庭成員。
例如家庭成員x1收到消息:
Message From:homechat/y@proxy1/nicke(y)
Type:groupchat
To:x1@proxy1/resource1
Id:message5
Body:from nicke(y)to nicke(1):This is messsage5//或Body:from nicke(y)toto x:This is messsage5當(dāng)Y發(fā)的消息to域是x@server.net時(shí)。
家庭成員2收到消息:
Message From:homechat/y@proxy1/nicke(y)
Type:groupchat
To:x2@proxy1/resource2
Id:message5
Body:from nicke(y)to nicke(1):This is messsage5//或Body:from nicke(y)to x:This is messsage5當(dāng)y發(fā)的消息to域是x@server.net時(shí)。
六、本地群消亡:(以下是消亡的幾種觸發(fā)情況)
a)本地群觸發(fā)建立不成功:發(fā)消息觸發(fā)建群時(shí),如果發(fā)送消息的家庭成員拒絕加入家庭群,那么該群消亡。收消息觸發(fā)建群時(shí),如果所有家庭成員都拒絕加入該新建群,則該群消亡,或者在事先設(shè)定的時(shí)間內(nèi)所有家庭成員對(duì)proxy發(fā)出的邀請(qǐng)加入該群既無(wú)應(yīng)答也無(wú)同意加入該群的消息,那么該群消亡。
b)PROXY可以根據(jù)以下策略任意組合來(lái)刪除群:
1.一段時(shí)間內(nèi)一個(gè)家庭和對(duì)方無(wú)消息交互;
2.一個(gè)家庭和對(duì)方以及家庭內(nèi)所有成員的所有離線消息都已取走;
3.使用命令強(qiáng)制刪除。
七、家庭號(hào)添加/刪除好友:
家庭成員既可以添加對(duì)方為好友也可以被添加為好友,以下是不同情景:
a)家庭成員添加對(duì)方(可以是家庭見(jiàn)以下家庭成員被添加為好友,可以是普通單獨(dú)聊天ID,操作為正常聊天好友添加操作)為好友。(以下以x1為例)
1.已登錄的家庭x1成員Lx(n)添加對(duì)方a為好友;
X1發(fā)送消息的例子:
Presence from:x1@proxy1/resource 1
To:a@server.net
Type:subscribe
2.此添加消息到達(dá)Proxy1,Proxy1使用Ox/x(n)這個(gè)resource標(biāo)定的session代替Lx(n)向聊天服務(wù)器發(fā)起申請(qǐng),服務(wù)器執(zhí)行正常的添加好友操作,向a發(fā)起好友添加消息。
Presence from:x@server.net/x1
To:a@server.net
Type:subscribe
3.a同意或拒絕添加后,發(fā)送添加好友的消息給Ox;
Presence from:a@server.net
To:x@server.net
Type:subscribed
此外,a可能還會(huì)發(fā)一條消息添加家庭1作為好友,見(jiàn)b)過(guò)程。
4.Proxy1收到此消息修改to域?yàn)長(zhǎng)x(j),(j=(1…i)后發(fā)送給Lx(j);
Presence from:a@server.net
To:x1@proxy/resource1
Type:subscribed
Presence from:a@server.net
To:x2@proxy1/resource2
Type:subscribed
(其他成員類推)
b)、家庭成員被添加為好友
1.已登錄的a添加家庭1為好友,對(duì)于a來(lái)說(shuō),家庭1和普通聊天號(hào)沒(méi)什么不同;
Presence from:a@server.net
To:x@server.net
Type:subscribe
2.服務(wù)器會(huì)把添加好友申請(qǐng)的消息會(huì)發(fā)給Ox所有已登錄到服務(wù)器的session上。Session的會(huì)話標(biāo)定Ox/x(n)。Proxy1收到此消息后修改to域?yàn)長(zhǎng)x(n)后向?qū)?yīng)家庭成員轉(zhuǎn)發(fā)申請(qǐng)消息。
Presence from:a@server.net
To:x1@proxy1
Type:subscribe
Presence from:a@server.net
To:x2@proxy1
Type:subscribe
(其他家庭成員消息以此類推)
3.家庭成員收到此消息后確認(rèn)添加或拒絕,添加或拒絕消息經(jīng)由Proxy1修改from域?yàn)閷?duì)應(yīng)的Ox/x(n)向服務(wù)器發(fā)送,服務(wù)器根據(jù)相應(yīng)的邏輯執(zhí)行后續(xù)操作,一般來(lái)說(shuō)最先返回的同意或拒絕為有效操作。
例如x1同意添加,發(fā)兩條消息,
第一條表示要添加對(duì)方:
Presence from:x1@proxy1
To:a@server.net
Type:subscribe
Proxy1修改后發(fā)給server:
Presence from:x@server.net
To:a@server.net
Type:subscribe
第二條表示同意對(duì)方添加自己:
Presence from:x1@proxy1
To:a@server.net
Type:subscribed
Proxy修改后發(fā)給server:
Presence from:x@server.net
To:a@server.net
Type:subscribed.
4.a收到以上兩條消息,對(duì)于subscribed消息,a了解家庭1同意添加。對(duì)于subscribe消息,a將應(yīng)答予以完成好友添加過(guò)程,經(jīng)由Proxy2、服務(wù)器發(fā)送家庭1的proxy1。
Presence from:a@server.net
To:x@server.net
Type:subscribed
5.經(jīng)過(guò)雙方肯定添加的好友,由server觸發(fā)更新roster等信息。
八、另一種可選的攜帶會(huì)話軌跡的家庭號(hào)添加/刪除好友方法:
家庭成員既可以添加對(duì)方為好友也可以被添加為好友,以下是不同情景:
a)家庭成員添加對(duì)方(可以是家庭見(jiàn)以下家庭成員被添加為好友,可以是普通單獨(dú)聊天ID,操作為正常聊天好友添加操作)為好友。(以下以x1為例)
1.已登錄的家庭x1成員Lx(n)添加對(duì)方a為好友;
X1發(fā)送消息例子:
To:a@server.net
Type:subscribe
2.此添加消息到達(dá)Proxy1,Proxy1使用Ox/x(n)這個(gè)resource標(biāo)定的session代替Lx(n)向聊天服務(wù)器發(fā)起申請(qǐng),服務(wù)器執(zhí)行正常的添加好友操作,此時(shí),Proxy1可添加協(xié)議允許的字段來(lái)表示添加的軌跡信息并記住這個(gè)消息的標(biāo)識(shí)。向a發(fā)起好友添加消息。
Presence from:x@server.net
To:a@server.net
Type:subscribe
Reason:x@server.net/x1subscribe to a@server.net
3.此消息經(jīng)由server轉(zhuǎn)發(fā)給Proxy2,proxy2記錄這個(gè)軌跡,修改并轉(zhuǎn)發(fā)消息給a(軌跡信息可轉(zhuǎn)可不轉(zhuǎn))。a同意或拒絕添加后發(fā)送添加好友的消息給Ox;該消息經(jīng)由proxy2添加記錄里的原軌跡信息后發(fā)給server;
To:x@server.net
Type:subscribed
Reason:x@server.net/x1subscribe to a@server.net
注:a可能還會(huì)發(fā)一條消息添加家庭1作為好友,見(jiàn)b)過(guò)程。
4.Proxy1收到此消息修改to域?yàn)長(zhǎng)x(j),(j=(1…i)后發(fā)送給Lx(j),匹配軌跡信息確保軌跡信息準(zhǔn)確后添加合適的字段在消息里發(fā)給家庭成員;
Presence from:a@server.net
To:x1@proxy1
Type:subscribed
Reason:x@server.net/x1subscribe to a@server.net
Presence from:a@server.net
To:x2@proxy1
Type:subscribed
Reason:x@server.net/x1subscribe to a@server.net
(其他成員類推)
5.后續(xù)server推送好友列表給雙方成員。
b)家庭成員被添加為好友
1.已登錄的a添加家庭1為好友,對(duì)于a來(lái)說(shuō),家庭1和普通聊天號(hào)沒(méi)什么不同;a的Proxy2添加了會(huì)話軌跡信息后發(fā)給server。
To:x@server.net
Type:subscribe
Reason:a@server.net subscribe to x@server.net
2.服務(wù)器會(huì)把添加好友申請(qǐng)的消息會(huì)發(fā)給Ox所有已登錄到服務(wù)器的session上。Session的會(huì)話標(biāo)定Ox/x(n)。Proxy1收到此消息后修改to域?yàn)長(zhǎng)x(n),記錄下該會(huì)話軌跡后向?qū)?yīng)家庭成員轉(zhuǎn)發(fā)申請(qǐng)消息。
(假設(shè)Proxy1轉(zhuǎn)發(fā)了會(huì)話標(biāo)定)
Presence from:a@server.net
To:x1@proxy1
Type:subscribe
Reason:a@server.net subscribe to x@server.net
Presence from:a@server.net
To:x2@proxy1
Type:subscribe
Reason:a@server.net subscribe to x@server.net
(其他家庭成員消息以此類推)
3.家庭成員收到此消息后確認(rèn)添加或拒絕,添加或拒絕消息經(jīng)由Proxy1比對(duì)會(huì)話軌跡信息和修改from域?yàn)閷?duì)應(yīng)的Ox/x(n)向服務(wù)器發(fā)送,服務(wù)器根據(jù)相應(yīng)的邏輯執(zhí)行后續(xù)操作,一般來(lái)說(shuō)最先返回的同意或拒絕為有效操作。
例如x1同意添加,發(fā)兩條消息為:
第一條表示要添加對(duì)方:
Presence from:x1@proxy1
To:a@server.net
Type:subscribe
Proxy修改后發(fā)給server:
Presence from:x@server.net
To:a@server.net
Type:subscribe
Reason:a@server.net subscribe to x@server.net
第二條表示同意對(duì)方添加自己:
Presence from:x1@proxy1
To:a@server.net
Type:subscribed
Proxy修改后發(fā)給server:
Presence from:x@server.net
To:a@server.net
Type:subscribed
Reason:a@server.net subscribe to x@server.net
4.a收到以上兩條消息,對(duì)于subscribed消息,a了解家庭1同意添加。對(duì)于subscribe消息,a將應(yīng)答予以應(yīng)答完成好友添加過(guò)程,經(jīng)由proxy2、服務(wù)器發(fā)送給家庭1的proxy1。
Presence from:a@server.net
To:x@server.net
Type:subscribed
Reason:a@server.net subscribe to x@server.net
5.經(jīng)過(guò)雙方肯定添加的好友,由server觸發(fā)更新roster等信息
需要說(shuō)明的是,在本文中,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者裝置不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者裝置所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過(guò)程、方法、物品或者裝置中還存在另外的相同要素。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如ROM/RAM、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是計(jì)算機(jī)或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說(shuō)明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。