KR102527524B1 - 다중-에이전트 메시징을 위한 기술들 - Google Patents

다중-에이전트 메시징을 위한 기술들 Download PDF

Info

Publication number
KR102527524B1
KR102527524B1 KR1020207003490A KR20207003490A KR102527524B1 KR 102527524 B1 KR102527524 B1 KR 102527524B1 KR 1020207003490 A KR1020207003490 A KR 1020207003490A KR 20207003490 A KR20207003490 A KR 20207003490A KR 102527524 B1 KR102527524 B1 KR 102527524B1
Authority
KR
South Korea
Prior art keywords
agent
message
account
messaging
client device
Prior art date
Application number
KR1020207003490A
Other languages
English (en)
Other versions
KR20200020946A (ko
Inventor
브라이언 랑게 액턴
무바리크 에프. 이맘
다니엘 찰스 코쿠조
Original Assignee
왓츠앱, 엘엘씨.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 왓츠앱, 엘엘씨. filed Critical 왓츠앱, 엘엘씨.
Publication of KR20200020946A publication Critical patent/KR20200020946A/ko
Application granted granted Critical
Publication of KR102527524B1 publication Critical patent/KR102527524B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/56Unified messaging, e.g. interactions between e-mail, instant messaging or converged IP messaging [CPM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • H04L51/046Interoperability with other network applications or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/214Monitoring or handling of messages using selective forwarding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/216Handling conversation history, e.g. grouping of messages in sessions or threads
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/03Protecting confidentiality, e.g. by encryption
    • H04W12/033Protecting confidentiality, e.g. by encryption of the user plane, e.g. user's traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/30Security of mobile devices; Security of mobile applications
    • H04W12/37Managing security policies for mobile devices or for controlling mobile applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/60Context-dependent security
    • H04W12/69Identity-dependent
    • H04W12/72Subscriber identity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/48Message addressing, e.g. address format or anonymous messages, aliases
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/104Grouping of entities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

다중-에이전트 메시징 인가를 위한 기술들이 설명된다. 일 실시예에서, 장치는 사용자 계정과 연관된 사용자 클라이언트 디바이스로부터 다중-에이전트 엔티티에 대한 인입 메시지를 수신하고; 에이전트 계정과 연관된 에이전트 클라이언트 디바이스를 결정하고; 에이전트 계정과 연관된 에이전트 클라이언트 디바이스로 인입 메시지를 전송하도록 동작하는 메시지 프로세싱 구성요소; 및 인입 메시지를 수신하기 위해, 다중-에이전트 엔티티와 연관된 에이전트 계정을 결정하도록 동작하는 에이전트 관리 구성요소를 포함할 수 있다. 다른 실시예들이 설명되고 주장된다.

Description

다중-에이전트 메시징을 위한 기술들
관련 출원들
본 출원은 35 U.S.C.§119(e) 하에서, "다중-에이전트 메시징을 위한 기술들"이라는 제목의 2018년 4월 4일에 출원된, 미국 특허 출원 일련 번호 제15/945,306호(대리인 문서 번호 1360.0197호)에 대한 우선권의 이익을 주장하며 35 U.S.C.§119(e) 하에서, 2017년 7월 13일에 출원된 미국 가 특허 출원 번호 제62/532,305호에 대한 우선권의 이익을 주장한다. 앞서 언급한 출원들의 내용은 여기에서 참조로서 통합된다.
사용자들은 메시징 시스템에서 서로 상호작용하여, 둘 이상의 사용자들 간에 텍스트-기반 대화 시 서로에 대해 앞뒤로 메시지들을 전송할 수 있다. 사용자는 메시징 시스템에서 그들과 연관된 사용자 계정을 가질 수 있다. 사용자 계정은 사용자에 대한 온라인 아이덴티티이며 사용자로 향한 메시지들에 대한, 및 일반적으로 메시징 시스템으로의 사용자의 액세스 및 그것의 사용을 조정하기 위한 목적지로서 사용될 수 있다. 사용자는 이동 디바이스들(예컨대, 휴대 전화들), 데스크탑 컴퓨터들, 웹 브라우저들, 전문화 메시징 클라이언트들 등을 포함한, 다양한 엔드포인트들로부터 메시징 시스템을 액세스할 수 있다.
다중-에이전트 메시징 인가를 위한 기술들이 설명된다.
다음은 여기에서 설명된 몇몇 신규 실시예들에 대한 기본 이해를 제공하기 위해 단순화된 요약을 보여준다. 이러한 요약은 광범위한 개요가 아니며, 그것은 주요/중대한 요소들을 식별하거나 또는 그것의 범위를 상세히 기술하도록 의도되지 않는다. 몇몇 개념들은 나중에 제공되는 보다 상세한 설명에 대한 서곡으로서 단순화된 형태로 제공된다.
다양한 실시예들은 일반적으로 다중-에이전트 메시징 인가(multi-agent messaging authorization)를 위한 기술들에 관한 것이다. 몇몇 실시예들은 특히 단-대-단(end-to-end) 암호화 메시징 시스템에 대한 다중-에이전트 메시징 인가를 위한 기술들에 관한 것이다. 예를 들어, 장치는 사용자 계정과 연관된 사용자 클라이언트 디바이스로부터 다중-에이전트 엔티티에 대한 인입 메시지를 수신하고; 상기 에이전트 계정과 연관된 에이전트 클라이언트 디바이스를 결정하며; 상기 에이전트 계정과 연관된 에이전트 클라이언트 디바이스로 상기 인입 메시지를 전송하는 메시지 프로세싱 구성요소를 포함한다. 에이전트 관리 구성요소는 상기 인입 메시지를 수신하기 위해, 상기 다중-에이전트 엔티티와 연관된 에이전트 계정을 결정한다. 다른 실시예들이 설명되고 주장된다.
앞서 말하고 관련된 목적들의 성취를 위해, 특정한 예시적인 양상들이 여기에서 다음의 설명 및 부속 도면들과 관련되어 설명된다. 이들 양상들은 여기에서 개시된 원리들이 실시될 수 있고 그것의 모든 양상들 및 등가물들이 청구된 주제의 범위 내에 있도록 의도되는 다양한 방식들을 나타낸다. 다른 이점들 및 신규 특징들은 도면들과 함께 고려될 때 다음의 상세한 설명으로부터 명백해질 것이다.
본 발명은 비즈니스들 및 소비자들 양쪽 모두에 대한 메시징 시스템의 기능을 개선할 수 있다.
도 1은 다중-에이전트 메시징 시스템의 실시예를 예시한다.
도 2는 메시징 시스템의 실시예를 예시한다.
도 3a는 메시징 인박스에 대한 사용자 인터페이스의 실시예를 예시한다.
도 3b는 메시지 스레드에 대한 사용자 인터페이스의 실시예를 예시한다.
도 4는 관리자 등록을 수행하는 다중-에이전트 메시징 시스템의 실시예를 예시한다.
도 5는 에이전트 등록을 수행하는 다중-에이전트 메시징 시스템의 실시예를 예시한다.
도 6은 메시지 패키지를 포워딩하는 다중-에이전트 메시징 시스템의 실시예를 예시한다.
도 7은 단-대-단 암호화 통신 시스템의 실시예를 예시한다.
도 8은 그룹 브로드캐스트를 인스턴스화하는 전송자 디바이스의 실시예를 예시한다.
도 9는 그룹 브로드캐스트를 보조하는 메시징 시스템의 실시예를 예시한다.
도 10은 그룹 브로드캐스트를 수신하는 수신자 디바이스의 실시예를 예시한다.
도 11a는 메시지 스레드에 대한 다중-에이전트 라벨링을 가진 포워딩-기반 논리 흐름의 실시예를 예시한다.
도 11b는 메시지 스레드에 대한 개개의-에이전트 라벨링을 가진 포워딩-기반 논리 흐름의 실시예를 예시한다.
도 11c는 메시지 스레드에 대한 전역적-뷰-기반 논리 흐름의 실시예를 예시한다.
도 12는 도 1의 시스템에 대한 논리 흐름의 실시예를 예시한다.
도 13은 도 1의 시스템에 대한 집중화 시스템의 실시예를 예시한다.
도 14는 도 1의 시스템에 대한 분산형 시스템의 실시예를 예시한다.
도 15는 컴퓨팅 아키텍처의 실시예를 예시한다.
도 16은 통신 아키텍처의 실시예를 예시한다.
도 17은 라디오 디바이스 아키텍처의 실시예를 예시한다.
소비자들 및 비즈니스들은 메시징 시스템을 통해 각각과 연결할 수 있다. 메시징 시스템은 비즈니스들로 메시지를 보내는 방식을 사용자들에게 제공할 수 있다. 사용자들은 지원을 받거나, 주문 발행을 수행하거나, 질문들을 하거나, 또는 그 외 비즈니스와 상호작용하기 위해 비즈니스들로 메시지를 보낼 수 있다.
비즈니스에 대한 관리자는 메시징 시스템에 가입하기 위한 단순한 프로세스를 제공받을 수 있다. 별개의 비즈니스 애플리케이션은 에이전트들이 개인 및 전문가 대화들을 분리하도록 허용하며, 개인 대화들은 소비자 애플리케이션에서 제공되고 전문가 대화들은 비즈니스 애플리케이션에서 제공된다.
비즈니스 애플리케이션은 부가적인 메시징 기능으로 액세스할 권한을 줄 수 있다. 예를 들어, 단-대-단 암호화의 수행과 관련되어, 메시징 시스템의 사용자는 특정한 디바이스에 결부될 수 있다. 그러나, 비즈니스 애플리케이션은 특정한 비즈니스를 위한 메시징 통신을 액세스할 권한을 다수의 디바이스들에게 줄 수 있다. 이와 같이, 비즈니스의 통신을 메시징 시스템으로 이동시키는 프로세스는 용이해진다. 그 결과, 실시예들은 비즈니스들 및 소비자들 양쪽 모두에 대한 메시징 시스템의 기능을 개선할 수 있다.
참조가 이제 도면들에 대해 이루어지며, 여기에서 유사한 참조 번호들은 전체에 걸쳐 유사한 요소들을 나타내기 위해 사용된다. 다음의 설명에서, 설명의 목적들을 위해, 다수의 특정 세부사항들은 그것의 철저한 이해를 제공하기 위해 제시된다. 그러나, 신규 실시예들은 이들 특정 세부사항들 없이 실시될 수 있다는 것이 분명할 수 있다. 다른 인스턴스들에서, 잘 알려진 구조들 및 디바이스들은 그것의 설명을 가능하게 하기 위해 블록도 형태로 도시된다. 의도는 주장된 주제와 일치하는 모든 수정들, 등가물들, 및 대안들을 커버하는 것이다.
여기에서 사용된 바와 같이 "a" 및 "b" 및 "c" 및 유사한 지정자들은 임의의 양의 정수를 나타내는 변수들이도록 의도된다는 것이 주목할 만하다. 따라서, 예를 들어, 구현예가 a=5에 대한 값을 설정하면, 구성요소들(122-1 내지 122-a)로서 예시된 구성요소들의 완전한 세트(122)는 구성요소들(122-1, 122-2, 122-3, 122-4 및 122-5)을 포함할 수 있다. 실시예들은 이러한 맥락으로 제한되지 않는다.
도 1은 다중-에이전트 메시징 시스템(100)에 대한 블록도를 예시한다. 일 실시예에서, 다중-에이전트 메시징 시스템(100)은 하나 이상의 구성요소들을 포함한 소프트웨어 애플리케이션을 가진 컴퓨터-구현 시스템을 포함할 수 있다. 도 1에 예시된 다중-에이전트 메시징 시스템(100)은 특정한 토폴로지에서 제한된 수의 요소들을 갖지만, 다중-에이전트 메시징 시스템(100)은 주어진 구현에 대해 요구된 대로 대안적인 토폴로지들에서 더 많거나 또는 더 적은 요소들을 포함할 수 있다는 것이 이해될 수 있다.
메시징 서버들(110)은 메시징 시스템의 부분으로서 메시징 플랫폼에 의해 동작된 하나 이상의 메시징 서버들을 포함할 수 있다. 메시징 서버는, 적어도 부분적으로, 인터넷을 포함한 메시징 시스템의 다양한 디바이스들을 연결하는 네트워크(120)를 가진, 인터넷-액세스 가능 서버를 포함할 수 있다. 메시징 시스템은 다양한 사용자 클라이언트 디바이스들에 대한 메시징을 지원하기 위해 메시징 서버들(110)을 사용할 수 있다.
사용자는 스마트폰 디바이스(150)를 소유하고 동작시킬 수 있다. 스마트폰 디바이스(150)는 iPhone® 디바이스, Android® 디바이스, Blackberry® 디바이스, 또는 스마트폰 형태를 따르는 임의의 다른 이동 컴퓨팅 디바이스를 포함할 수 있다. 스마트폰 디바이스(150)는 셀룰러 신호들(135)을 사용하여 셀 시스템(130)을 통해 네트워크(120)에 연결하는 것이 가능한 셀룰러 디바이스일 수 있다. 몇몇 실시예들에서 및 몇몇 경우들에서, 스마트폰 디바이스(150)는 부가적으로 또는 대안적으로 네트워크(120)에 연결하기 위해 Wi-Fi 또는 다른 네트워킹 기술들을 사용할 수 있다. 스마트폰 디바이스(150)는 메시징 서버들(110)을 액세스하기 위해 메시징 클라이언트, 웹 브라우저, 또는 다른 로컬 애플리케이션을 실행할 수 있다.
동일한 사용자가 태블릿 디바이스(160)를 소유하고 동작시킬 수 있다. 태블릿 디바이스(150)는 iPad® 디바이스, Android® 태블릿 디바이스, Kindle Fire® 디바이스, 또는 태블릿 형태를 따르는 임의의 다른 이동 컴퓨팅 디바이스를 포함할 수 있다. 태블릿 디바이스(160)는 Wi-Fi 신호들(145)을 사용하여 Wi-Fi 액세스 포인트(140)를 통해 네트워크(120)에 연결하는 것이 가능한 Wi-Fi 디바이스일 수 있다. 몇몇 실시예들에서 및 몇몇 경우들에서, 태블릿 디바이스(160)는 부가적으로 또는 대안적으로 네트워크(120)에 연결하기 위해 셀룰러 또는 다른 네트워킹 기술들을 사용할 수 있다. 태블릿 디바이스(160)는 메시징 서버들(110)을 액세스하기 위해 메시징 클라이언트, 웹 브라우저, 또는 다른 로컬 애플리케이션을 실행할 수 있다.
동일한 사용자가 개인용 컴퓨터 디바이스(180)를 소유하고 동작시킬 수 있다. 개인용 컴퓨터 디바이스(180)는 Mac OS® 디바이스, Windows® 디바이스, Linux® 디바이스, 또는 또 다른 운영 시스템을 구동하는 다른 컴퓨터 디바이스를 포함할 수 있다. 개인용 컴퓨터 디바이스(180)는 이더넷 연결을 통해 네트워크(120)에 연결하는 것이 가능한 이더넷 디바이스일 수 있다. 몇몇 실시예들에서 및 몇몇 경우들에서, 개인용 컴퓨터 디바이스(180)는 부가적으로 또는 대안적으로 네트워크(120) 대해 셀룰러, Wi-Fi, 또는 다른 네트워킹 기술들을 사용할 수 있다. 개인용 컴퓨터 디바이스(180)는 메시징 서버들(110)을 액세스하기 위해 메시징 클라이언트, 웹 브라우저(170), 또는 다른 로컬 애플리케이션을 실행할 수 있다.
메시징 클라이언트는 전용 메시징 클라이언트일 수 있다. 전용 메시징 클라이언트는 구체적으로 메시징 서버들(110)을 포함한 메시징 플랫폼을 관리하는 메시징 제공자와 연관될 수 있다. 전용 메시징 클라이언트는 메시징 서버들(110)을 포함한 메시징 플랫폼을 관리하는 메시징 제공자를 포함한 복수의 상이한 메시징 제공자들과 함께 작동하도록 동작하는 일반 클라이언트일 수 있다.
메시징 클라이언트는 부가적인 기능을 제공하는 애플리케이션의 구성요소일 수 있다. 예를 들어, 소셜 네트워킹 서비스는 소셜 네트워킹 서비스를 액세스하고 사용하기 위해 이동 디바이스 상에서의 사용을 위한 소셜 네트워킹 애플리케이션을 제공할 수 있다. 소셜 네트워킹 서비스는 메시징 서버들(110)에 의해 제공될 수 있는 바와 같은 메시징 기능을 포함할 수 있다. 메시징 서버들(110)은 소셜 네트워킹 서비스를 위한 컴퓨팅 디바이스의 일 구성요소일 수 있다는 것이 이해될 것이며, 상기 컴퓨팅 디바이스는 소셜 네트워킹 서비스의 부가적인 기능을 제공한다. 유사하게, 소셜 네트워킹 애플리케이션은 메시징 기능 및 부가적인 소셜 네트워킹 기능 양쪽 모두를 제공할 수 있다.
몇몇 경우들에서, 메시징 엔드포인트는 사용자 세션들 간의 상태를 유지할 수 있으며 몇몇 경우들에서 메시징 엔드포인트는 사용자 세션 간의 상태를 철회할 수 있다. 메시징 엔드포인트는 메시징 인박스의 현재 상태를 유지하기 위해 로컬 저장소를 사용할 수 있다. 이러한 로컬 저장소는, 예를 들어, 로컬 애플리케이션이 중지되거나 또는 그 외 메모리로부터 제거되거나 또는 디바이스가 전원 차단되고 다시 인가되는 상황들을 포함하여, 상태가 하나의 세션과 다음 사이에서 검색될 수 있도록 영구 저장 장치에 저장될 수 있다. 대안적으로, 메시징 엔드포인트는 메시징 인박스의 현재 상태를 유지하기 위해 메모리 캐시를 사용할 수 있지만 메시지 인박스의 상태를 영구 저장 장치에 맡기는 것을 삼갈 수 있다.
메시지 인박스의 상태를 유지하는 메시징 엔드포인트는 소셜 네트워킹 애플리케이션과 같은, 또 다른 로컬 애플리케이션으로 통합된 전용 메시징 애플리케이션 또는 메시징 유틸리티를 포함할 수 있다. 메시지 인박스의 상태를 포기하는 메시징 엔드포인트는 웹 브라우저 내에 구현된 메시징 액세스를 포함할 수 있다. 일 실시예에서, 개인용 컴퓨터 디바이스(180) 상에서 실행하는 웹 브라우저(170)와 같은, 웹 브라우저는 사용자에게 메시징 기능을 제공하기 위해 메시징 서버와 상호 작용하는 HTML5 코드를 실행할 수 있다.
사용자는, 스마트폰 디바이스(150), 태블릿 디바이스(160), 및 개인용 컴퓨터 디바이스(180)를 포함한, 복수의 디바이스들로부터 메시지들을 전송하고 수신할 수 있다. 사용자는 스마트폰 디바이스(150) 상에서의 제 1 메시징 애플리케이션, 태블릿 디바이스(160) 상에서의 제 2 메시징 애플리케이션, 및 개인용 컴퓨터 디바이스(180) 상에서의 웹 브라우저(170)를 사용할 수 있다. 제 1 및 제 2 메시징 애플리케이션들은 양쪽 디바이스들 모두에서 동일한 애플리케이션의 설치들을 포함할 수 있다. 제 1 및 제 2 메시징 애플리케이션들은 공통 애플리케이션의 스마트폰-특정 및 태블릿-특정 버전을 포함할 수 있다. 제 1 및 제 2 메시징 애플리케이션은 별개의 애플리케이션들을 포함할 수 있다.
사용자는 그들의 메시지 인박스가 그것들의 디바이스들 사이에서 일관되게 유지되는 것으로부터 이익을 얻을 수 있다. 사용자는 그들의 집에서 멀어지는 동안 셀 시스템(130) 상에서 그들의 스마트폰 디바이스(150)를 사용하여, 셀 시스템(130)을 통해 메시지들을 전송하고 수신할 수 있다. 사용자는 커피숍, 또는 Wi-Fi를 제공하는 다른 위치에 들러서, 그들의 태블릿 디바이스(160)를 Wi-Fi 액세스 포인트(140)에 연결할 수 있다. 태블릿 디바이스(160)는 메시지 인박스에 대한 기존의 알려진 상태를 검색하며 스마트폰 디바이스(150)에 의해 전송되고 스마트폰 디바이스(150)를 동작시키는 동안 사용자에 의해 검색된 임의의 메시지들을 포함하여, 태블릿 디바이스(160)가 네트워크로 액세스한 마지막 상황 이래 발생한 업데이트들을 수신할 수 있다. 사용자는 그 후 집으로 돌아가서 개인용 컴퓨터 디바이스(180) 상에서의 웹 브라우저(170)를 사용하여 그들의 메시지 인박스를 액세스할 수 있다. 웹 브라우저(170)는 그것이 메시지 인박스에 대한 기존의 상태를 유지하지 않거나 또는 그 외 그것으로 액세스하지 않은 것으로 인한 메시징 서버들(110)로부터 메시지 인박스의 현재 상태의 스냅샷을 수신할 수 있다. 웹 브라우저(170)는 그 후 그것이 메시징 서버들(110)과 사용자 세션을 유지하는 한 메시지 인박스의 상태에 대한 임의의 새로운 변화들에 대한 증가 업데이트들을 검색할 수 있어서, 웹 브라우저(170)가 사용자에 의해 닫힐 때와 같은, 세션의 종료 시 메시지 인박스에 대한 그것의 알려진 상태를 폐기할 수 있다. 제한 없이, 업데이트는 메일박스로의 메시지의 부가, 메일박스로부터의 메시지의 삭제, 및 판독 수신에 대응할 수 있다.
메시징 시스템은 복수의 메시지들을 포함하는 것으로서 메시징 인박스를 정의함으로써 동작할 수 있으며, 여기에서 각각의 메시지는 둘 이상의 참여자들 간의 통신의 개개의 트랜잭션이다. 메일 서버는 메시징 인박스에 대한 메시지 인덱스를 유지함으로써 동작할 수 있다. 메일 서버들은 메시지들을 수신하며 메시지들이 메시지 인덱스에 대한 참조를 통해 검색될 수 있는 메일 아카이브들에 메시지들을 저장할 수 있다. 메일 클라이언트들은 메일 서버들에 연결하며 그것들의 마지막 업데이트 이래 메일 아카이브에 부가된 메시지들을 검색할 수 있다. 메일 클라이언트들은 메시지들이 메일 아카이브에 저장될 때를 나타내는 메일 인덱스를 메일 아카이브로부터 수신할 수 있다. 메일 클라이언트들은 그것들이 어떤 메시지들을 잃었는지를 결정하기 위해 그들의 현재 인박스에 메일 아카이브를 비교할 수 있으며, 그들은 그 후 메일 아카이브로부터 요청할 수 있다. 메일 클라이언트들은 그들의 인박스에 대해 변경할 수 있으며, 이것은 수정 시 메일 아카이브들 상에서 그들의 메일 박스의 표현에 대해 이루어지도록 메일 아카이브들에 지시하는 메일 인박스 지시들이 송신되게 한다.
메시징 시스템에 의해 가능하게 된 메시징 상호작용들은 메시지 스레드들(message threads)로서 알려진 공유된 공간들로 조직될 수 있다. 메시지 스레드는 특정한 그룹의 사용자들 사이에 공유된 메시지들을 함께 수집할 수 있다. 사용자들의 쌍 사이에서 개별적으로 전송된 메시지들은 사용자들의 쌍 사이에서 개인 메시징과 고유하게 연관된 일-대-일 메시지 스레드로 수집될 수 있다. 3 이상의 사용자들의 그룹 사이에서 전송된 메시지들은 그들의 멤버십에 의해 고유하게 정의되지 않을 수 있으며, 대신에 몇몇 실시예들에서, 그룹 스레드를 고유하게 식별하는 식별자에 의해 고유하게 정의될 수 있다. 그룹 스레드에서의 멤버십은, 몇몇 실시예들에서, 시간에 걸쳐 달라져서, 멤버들을 부가하고 및/또는 잃을 수 있다.
메시징 상호작용들은 클라이언트 디바이스들 간의 단-대-단 암호화된 통신을 사용할 수 있다. 전송 클라이언트 디바이스는 단지 수신 디바이스가 송출 메시지를 복호화할 수 있거나(예컨대, 공개-키 암호법을 사용함으로써) 또는 단지 전송 및 수신 디바이스들이 송출 메시지를 복호화할 수 있는 것(예컨대, 공유-키 암호법을 사용함으로써) 중 하나를 수립하는 보안 기술들을 사용하여 송출 메시지를 암호화할 수 있다. 이들 실시예들에서, 메시징 시스템의 서버들은 복호화 메시지들이 클라이언트들 사이에서 전송되는 것을 방지할 수 있다. 몇몇 실시예들에서, 사용자들은 특정한 메시지 스레드가 단-대-단 암호화를 사용하는지(및 그에 의해 메시지들의 콘텐트들을 액세스하는 것이 방지된 메시징 서버들의 부가적인 프라이버시를 수신하며) 또는 사용하지 않는지(및 그에 의해 사용자들에게 관련 서비스들을 제공할 목적으로 메시지들을 프로그램적으로 액세스할 수 있는 메시징 시스템의 이익을 수신한다)를 선택할 수 있다.
메시징 시스템은 사용자들 사이에서의 상호작용들로부터 생성된 지식을 사용할 수 있다. 메시징 시스템은 소셜-네트워킹 시스템의 구성요소를 포함할 수 있으며 소셜-네트워킹 시스템의 보다 넓은 상호작용들로부터 생성된 지식을 사용할 수 있다. 이와 같이, 메시징 시스템 및 보다 큰 소셜-네트워킹 시스템의 사용자들의 프라이버시를 보호하기 위해, 메시징 시스템은, 예를 들어, 적절한 프라이버시 세팅들을 설정함으로써, 사용자들로 하여금 그들의 동작들이 메시징 시스템에 의해 로그하거나 또는 다른 시스템들(예컨대, 제 3 자 시스템들)과 공유한 그들의 동작들에 참여하거나 또는 탈퇴하도록 허용하는 인가 서버(또는 다른 적절한 구성요소(들))를 포함할 수 있다. 사용자의 프라이버시 세팅은 사용자와 연관된 어떤 정보가 로그될 수 있는지, 사용자와 연관된 정보가 어떻게 로그될 수 있는지, 사용자와 연관된 정보가 로그될 수 있을 때, 누가 사용자와 연관된 정보를 로그할 수 있는지, 사용자와 연관된 정보가 누구와 공유될 수 있는지, 및 어떤 목적들을 위해 사용자와 연관된 정보가 로그되거나 또는 공유될 수 있는지를 결정할 수 있다. 인가 서버들 또는 다른 인가 구성요소들은 적절하다면 차단, 데이터 해싱, 익명화, 또는 다른 적절한 기술들을 통해 메시징 시스템 및 소셜-네트워킹 시스템의 다른 요소들의 사용자들에 대한 하나 이상의 프라이버시 세팅들을 시행하기 위해 사용될 수 있다.
도 2는 메시징 시스템(200)의 다양한 기능들을 구현한 복수의 서버들의 실시예를 예시한다. 작업 및 기능들의 상이한 분포들이 메시징 시스템(200)의 다양한 실시예들에서 사용될 수 있다는 것이 이해될 것이다. 메시징 시스템(200)은 메시징 시스템(200)의 전체 동작들의 일 부분을 포함한 다중-에이전트 메시징 시스템(100)의 동작들을 가진 다중-에이전트 메시징 시스템(100)을 포함할 수 있다. 메시징 시스템(200)의 예시된 실시예는 특히 메시징 서비스들을 메시징 시스템(200)의 사용자에게 제공하는 하나 이상의 서버 디바이스들을 포함한 도 1을 참조하여 설명된 메시징 서버들(110)의 일 부분에 대응할 수 있다.
메시징 시스템(200)의 다양한 서버들은 네트워크 버스(220)를 통해 연결된다. 네트워크 버스(220)는 도메인 이름 프론트 엔드(210), 메시징 시스템(220)의 서버들, 및 클라이언트 디바이스들과 같은 다양한 외부 디바이스들 사이에서 네트워크 연결성을 제공한다. 서버들의 각각은 그것들이 네트워크 버스(220)를 통해 서로 및/또는 사용자 디바이스들과 독립적으로 통신할 수 있도록 네트워크 버스(220)에 독립적으로 연결된다.
메시징 시스템(200)은 도메인 이름 프론트 엔드(210)를 포함할 수 있다. 도메인 이름 프론트 엔드(210)는 도메인 이름 시스템(DNS)에서 메시징 시스템(200)과 연관된 하나 이상의 도메인 이름들을 할당받을 수 있다. 도메인 이름 프론트 엔드(210)는 인입 연결들을 수신하며 다양한 메시징 서비스들을 제공하는 서버들로의 연결들을 분배할 수 있다.
메시징 시스템(200)은 하나 이상의 챗(chat) 서버들(215)을 포함할 수 있다. 챗 서버들(215)은 챗 메시지들과 같은 사용자-대-사용자 메시징 업데이트들을 수신하고 송신하기 위한 프론트-엔드 서버들을 포함할 수 있다. 인입 연결들은 작업부하 밸런싱에 기초하여 도메인 이름 프론트 엔드(210)에 의해 챗 서버들(215)에 할당될 수 있다.
메시징 시스템(200)은 백엔드 서버들(230)을 포함할 수 있다. 백엔드 서버들(230)은 프론트-엔드 챗 서버들(215)의 챗 동작들을 지원하는 전문화 태스크들을 수행할 수 있다. 복수의 상이한 유형들의 백엔드 서버들(230)이 사용될 수 있다. 상이한 백엔드 서버들(230)로의 태스크들의 유형들의 할당은 상이한 실시예들에서 달라질 수 있다는 것이 이해될 것이다. 몇몇 실시예들에서 전용 서버들에 의해 제공된 백-엔드 서비스들 중 몇몇은 단일 서버 또는 각각이 여기에서 설명된 실시예에서 상이한 서버들 간에 분할된 다수의 태스크들을 수행하는 서버들의 세트로 조합될 수 있다. 유사하게, 몇몇 실시예들에서, 여기에서 설명된 전용 백-엔드 서버들 중 몇몇의 태스크들은 상이한 서버 그룹들의 상이한 서버들 사이에서 분배될 수 있다.
메시징 시스템(200)은 하나 이상의 오프라인 저장 서버들(231)을 포함할 수 있다. 하나 이상의 오프라인 저장 서버들(231)은 메시징 엔드포인트들이 재연결할 때 유지 중인 현재-오프라인 메시징 엔드포인트들에 대한 메시징 콘텐트를 저장할 수 있다.
메시징 시스템(200)은 하나 이상의 세션 서버들(232)을 포함할 수 있다. 하나 이상의 세션 서버들(232)은 연결된 메시징 엔드포인트들의 세션 상태를 유지할 수 있다.
메시징 시스템(200)은 하나 이상의 존재 서버들(233)을 포함할 수 있다. 하나 이상의 존재 서버들(233)은 메시징 시스템(200)에 대한 존재 정보를 유지할 수 있다. 존재 정보는 주어진 사용자가 온라인 메시징 엔드포인트를 갖고 채팅을 위해 이용 가능한지, 온라인 메시징 엔드포인트를 갖지만 현재 그로부터 떨어져 있는지, 온라인 메시징 엔드포인트를 갖고 있지 않은지 여부, 및 임의의 다른 존재 상태를 나타내는 사용자-특정 정보에 대응할 수 있다.
메시징 시스템(200)은 하나 이상의 푸시 저장 서버들(234)을 포함할 수 있다. 하나 이상의 푸시 저장 서버들(234)은 푸시 요청들을 캐싱하며 푸싱 요청들을 메시징 엔드포인트들로 송신할 수 있다. 푸시 요청들은 메시징 엔드포인트들을 각성시키기 위해, 메시징 업데이트가 이용 가능함을 메시징 엔드포인트들에 통지하기 위해, 및 그 외 메시징 엔드포인트들과의 서버-측-구동 상호작용들을 수행하기 위해 사용될 수 있다.
메시징 시스템(200)은 하나 이상의 챗 활동 모니터링 서버들(235)을 포함할 수 있다. 하나 이상의 챗 활동 모니터링 서버들(235)은 메시징 시스템(200)의 사용자들에 의해 인가되지 않은 또는 좌절된 거동을 결정하기 위해 사용자들의 챗들을 모니터링할 수 있다. 하나 이상의 챗 활동 모니터링 서버들(235)은 스팸 로깅 서버들(239) 및 차단 리스트 서버들(236)과 협력하여 작동할 수 있으며, 상기 하나 이상의 챗 활동 모니터링 서버들(235)은 스팸 또는 다른 좌절된 거동을 식별하고 스팸 로깅 서버들(239)로 스팸 정보를, 및 적절하다면 차단 정보를 차단 리스트 서버들(236)로 제공한다.
메시징 시스템(200)은 하나 이상의 차단 리스트 서버들(236)을 포함할 수 있다. 하나 이상의 차단 리스트 서버들(236)은 사용자-특정 차단 리스트들을 유지할 수 있으며, 사용자-특정 인입-차단 리스트들은 상기 사용자로 메시지들을 송신하는 것이 금지되는 하나 이상의 다른 사용자들을 각각의 사용자를 위해 나타낸다. 대안적으로 또는 부가적으로, 하나 이상의 차단 리스트 서버들(236)은 상기 사용자가 메시지들을 그것에 송신하는 것이 금지되는 하나 이상의 다른 사용자들을 각각의 사용자를 위해 나타내는 사용자-특정 송출-차단 리스트들을 유지할 수 있다. 인입-차단 리스트들 및 송출-차단 리스트들은 예를 들어, 데이터베이스에 조합하여 저장될 수 있으며, 상기 인입-차단 리스트들 및 송출-차단 리스트들은 차단 정보의 동일한 리포지터리의 상이한 뷰들을 나타낸다는 것이 이해될 것이다.
메시징 시스템(200)은 하나 이상의 마지막으로 본 정보 서버들(237)을 포함할 수 있다. 하나 이상의 마지막으로 본 정보 서버들(237)은 마지막으로 본 위치, 상황, 메시징 엔드포인트, 및 메시징 시스템(200)으로의 사용자의 마지막으로 본 연결의 다른 요소들을 나타내는 정보를 수신하고, 저장하며, 유지할 수 있다.
메시징 시스템(200)은 하나 이상의 프로필 사진 서버들(238)을 포함할 수 있다. 하나 이상의 프로필 사진 서버들(238)은 메시징 시스템(200)의 복수의 사용자들을 위한 검색 프로필 사진들을 저장하고 그것에 대해 이용 가능하게 만들 수 있다.
메시징 시스템(200)은 하나 이상의 스팸 로깅 서버들(239)을 포함할 수 있다. 하나 이상의 스팸 로깅 서버들(239)은 알려진 및 의심되는 스팸(예컨대, 원치 않는 메시지들, 특히 홍보 특징의 것들)을 로그할 수 있다. 하나 이상의 스팸 로깅 서버들(239)은 그것들이 스팸인지를 결정하기 위해서, 및 몇몇 실시예들에서, 의심된 스팸 전송업자들(스팸 메시지들을 전송하는 사용자들)에 대해, 응징을 수행하기 위해 메시지들을 분석하도록 동작할 수 있다.
메시징 시스템(200)은 하나 이상의 통계 서버들(240)을 포함할 수 있다. 하나 이상의 통계 서버들은 메시징 시스템(200)의 동작 및 메시징 시스템(200)의 사용자들의 거동에 관련된 통계 정보를 컴파일링하고 저장할 수 있다.
메시징 시스템(200)은 하나 이상의 동기 서버들(241)을 포함할 수 있다. 하나 이상의 동기 서버들(241)은 메시징 시스템(200)에서 사용자에 대한 접촉들을 결정하기 위해, 이동 전화상에서의 어드레스 북과 같은, 메시징 엔드포인트로부터의 연락처 정보와 메시징 시스템(240)을 동기시킬 수 있다.
메시징 시스템(200)은 하나 이상의 웹 서버들(242)을 포함할 수 있다. 하나 이상의 웹 서버들(242)은 웹 브라우저들과의 하이퍼텍스트 수송 프로토콜(HTTP) 및 하이퍼텍스트 수송 프로토콜 보안(HTTPS) 연결에 참여할 수 있다. 하나 이상의 웹 서버들(242)은, 몇몇 실시예들에서, 다중-에이전트 메시징 시스템(100)의 동작의 부분으로서 원격 웹 서버(350)를 호스팅할 수 있다.
메시징 시스템(200)은 하나 이상의 키 서버들(243)을 포함할 수 있다. 하나 이상의 키 서버들(243)은 공개/개인 키 암호화된 통신을 위한 공개 키들을 호스팅할 수 있다.
메시징 시스템(200)은 하나 이상의 그룹 서버들(244)을 포함할 수 있다. 하나 이상의 그룹 서버들(244)은 그룹들의 리스트들을 유지하고, 그룹들에 사용자들을 부가하고, 그룹들로부터 사용자들을 제거하며, 그룹 챗 메시지들의 수신, 캐싱, 및 포워딩을 수행할 수 있다.
메시징 시스템(200)은 하나 이상의 멀티미디어 데이터베이스(MMD) 서버들(245)을 포함할 수 있다. MMD 서버들(245)은 메시징 시스템(200)에 알려진 미디어 오브젝트들의, 분산형 데이터베이스일 수 있는, 데이터베이스를 저장할 수 있다. 몇몇 실시예들에서, 현재 저장되거나 또는 그 외 메시징 시스템(200) 내에서 수송 중인 미디어 오브젝트들만이 MMD 서버들(245)에 의해 추적될 수 있다. 다른 실시예들에서, MMD 서버들(245)은 인기 또는 다른 데이터-수집 목적들을 추적하기 위한 것일 수 있는 바와 같은, 더 이상 수송 중이지 않은 미디어 오브젝트들의 레코드를 유지할 수 있다.
MMD 서버들(245)은 그것들이 멀티미디어 서버들(246) 상에서와 같은, 메시징 시스템(200)에 의해 저장될 때 미디어 오브젝트들의 저장 위치를 결정할 수 있다. MMD 서버들(245)은 그것들이, 복수의 멀티미디어 서버들(236) 중에서 특정한 미디어 오브젝트를 저장하는 것과 같은, 메시징 시스템(200)에 의해 송신될 때 미디어 오브젝트들의 기존의 저장 위치를 결정할 수 있다. MMD 서버들(245)은 미디어 오브젝트들을 요청하고 검색하기 위해 메시징 클라이언트들에 의한 사용을 위해 고유 리소스 로케이터들(URL들)을 생성할 수 있다. MMD 서버들(245)은 미디어 오브젝트가 손상되거나 또는 그 외 손실되며 다시 획득되어야 할 때 추적할 수 있다.
메시징 시스템(200)은 하나 이상의 멀티미디어 서버들(246)을 포함할 수 있다. 하나 이상의 멀티미디어 서버들은 메시징 엔드포인트들 사이에서 수송 중인 멀티미디어(예컨대, 이미지, 비디오, 오디오), 오프라인 엔드포인트들을 위해 캐싱된 멀티미디어를 저장할 수 있으며, 멀티미디어의 트랜스코딩을 수행할 수 있다.
메시징 시스템(200)은 하나 이상의 지불 서버들(247)을 포함할 수 있다. 하나 이상의 지불 서버들(247)은 사용자들로부터의 지불들을 프로세싱할 수 있다. 하나 이상의 지불 서버들(247)은 지불들의 수행을 위해 외부 제 3 자 서버들에 연결할 수 있다.
메시징 시스템(200)은 하나 이상의 등록 서버들(248)을 포함할 수 있다. 하나 이상의 등록 서버들(248)은 메시징 시스템(200)의 새로운 사용자들을 등록할 수 있다.
메시징 시스템(200)은 하나 이상의 음성 전달 서버들(249)을 포함할 수 있다. 하나 이상의 음성 전달 서버들(249)은 VoIP 호출들의 수행을 위해 메시징 엔드포인트들 사이에서의 VoIP(voice-over-internet-protocol) 음성 통신을 전달할 수 있다.
도 3a는 메시지 인박스를 위한 사용자 인터페이스(300)의 실시예를 예시한다.
클라이언트 디바이스(305)는 다중-에이전트 메시징 시스템(100)을 액세스하기 위해 사용된 임의의 디바이스에 대응할 수 있다. 도 3a의 예시된 실시예에서, 클라이언트 디바이스(305)는 스마트폰 디바이스를 닮았지만, 여기에서 설명된 기술들은 임의의 유형의 디바이스와 함께 사용될 수 있다는 것이 이해될 것이다. 사용자 인터페이스(300)는 일반적으로 메시징 시스템에 대한 사용자 인박스의 디스플레이에 대응할 수 있다.
사용자 인터페이스(300)는 사용자 계정에 대한 인박스에서 복수의 메시지 스레드들(320)의 디스플레이를 포함할 수 있다. 디스플레이된 메시지 스레드들(320)의 일 부분은 판독되지 않은 메시지들을 가진 메시지 스레드들일 수 있다. 디스플레이된 스레드들의 일 부분은 판독되지 않은 메시지들이 없는 스레드들일 수 있다. 도 3a의 예시된 실시예에서, 사용자 인터페이스(300)는 더 많은 스레드들을 드러내기 위해 아래쪽으로 스크롤될 수 있다.
인박스에서 메시지 스레드들(320)의 디스플레이는, 각각의 메시지 스레드에 대해, 스레드의 이름, 스레드에서 마지막-수신된 또는 마지막-교환된 메시지들, 스레드의 콘텐트들의 프리뷰, 및 스레드에서 하나 이상의 사용자들에 대한 아바타의 디스플레이를 포함할 수 있다. 스레드의 이름은 인박스에 대한 사용자 계정에 대한 이름이 아닌 스레드에서 하나 이상의 참여자들의 이름(들)에 대응할 수 있다.
비즈니스 엔티티를 가진 메시지 스레드에 대한 메시지 스레드 엔트리(330)는 비즈니스의 이름, 메시지 스레드에서 마지막-수신된 메시지 또는 마지막-교환된 메시지, 메시지 스레드에서 마지막-수신된 메시지 또는 마지막-교환된 메시지에 대한 마지막-수신된 시간 또는 마지막-교환된 시간, 및/또는 메시지 스레드에 관한 다른 정보를 포함할 수 있다. 비즈니스 엔티티를 가진 메시지 스레드에 대한 메시지 스레드 엔트리(330)는 검증된 엔티티 표시자(335)를 포함할 수 있다. 검증된 엔티티 표시자(335)는 비즈니스 엔티티의 나열된 이름이, 그것의 에이전트들에 의해 표현된 바와 같이, 메시지 스레드에서 함께 통신되는 실제 엔티티에 대한 것임을 나타낸다.
메시징 파트너들은 그것들을 고유하게 식별하기 위해 사용된 전화번호들과 연관될 수 있다. 메시징 파트너가 비즈니스 엔티티인 경우, 그것은 비즈니스에 대한 연락처 번호와 연관될 수 있다. 일반적인 사용자 접촉들을 위해, 사용자에 대한 이름은 클라이언트 디바이스(305) 상에서 사용자에 대한 어드레스 북에 기초하여 할당받을 수 있다. 그러나, 비즈니스에 대해, 검증된 이름이 사용될 수 있으며, 검증된 이름은 메시징 시스템에 의해 제공된다. 이러한 검증된 이름의 사용은 검증된 엔티티 표시자(335)에 의해 표시된다.
사용자 인터페이스(300)는 인박스 헤더 제어부들(310)을 포함할 수 있다. 인박스 헤더 제어부들(310)은 다양한 메시징-관련 동작들에 권한을 부여할 수 있다. 인박스 헤더 제어부들(310)은 편집 제어부를 포함할 수 있으며, 상기 편집 제어부는 메시징 인박스의 구성에 권한을 부여한다. 인박스 헤더 제어부들(310)은 새로운 메시지 스레드의 생성에 권한을 부여하는 구성 제어부를 포함할 수 있다.
도 3b는 메시지 스레드에 대한 사용자 인터페이스(350)의 실시예를 예시한다.
사용자 인터페이스(350)는 클라이언트 디바이스(305) 상에 디스플레이된 메시지 스레드에 대한 사용자 인터페이스를 포함할 수 있다. 메시지 스레드에 대한 메시지 교환의 적어도 일 부분은 메시지 스레드 상호작용 디스플레이(370)에서 디스플레이될 수 있다. 메시지 스레드 상호작용 디스플레이(370)는 메시지 스레드의 사용자들에 의해 교환된 하나 이상의 메시지들의 디스플레이를 포함할 수 있다. 메시지 스레드에 관하여 논의된 특징들은 일-대-일 메시지 스레드들 또는 그룹 메시지 스레드들에 적용될 수 있다. 메시지 스레드에 관하여 논의된 특징들은 사용자가 비즈니스 엔티티와 관계를 맺은 메시지 스레드에 적용될 수 있다.
사용자 인터페이스(350)는 스레드 정보(360)의 디스플레이를 포함할 수 있다. 스레드 정보(360)는 스레드에 수반된 하나 이상의 다른 사용자들의 목록을 포함할 수 있다. 하나 이상의 다른 사용자들의 디스플레이는, 메시징 및/또는 소셜-네트워킹 상호작용들을 위해 특정 사용자와의 사용을 위한 이름으로서 등록된 전체 이름, 약식 이름, 또는 다른 이름과 같은, 사용자의 이름을 사용할 수 있다. 하나 이상의 다른 사용자들의 디스플레이는 하나 이상의 다른 사용자들의 아바타, 프로필 사진, 또는 다른 시각적 표현을 사용할 수 있다.
몇몇 인스턴스들에서, 사용자에 대한 디스플레이된 이름은 비즈니스 엔티티에 대한 검증된 이름을 포함할 수 있다. 검증된 이름은 엔티티에 대응하기 위해, 메시징 시스템의 유지자와 같은, 관리 당국에 의해 검증된 이름이다. 검증된 이름이 비즈니스 엔티티와 같은 사용자에 대해 알려진 경우, 검증된 이름은 스레드 정보(360)의 부분으로서 디스플레이될 수 있다. 그러나, 몇몇 실시예들에서, 사용자 이름의 디스플레이는 보통 클라이언트 디바이스(305) 상에서의 어드레스 북으로부터 사용자의 이름을 빼내는 것이 가진 사용자 인터페이스 특징으로서 연관될 수 있다. 이와 같이, 검증된 이름은 사용자에 대해 디스플레이된 이름이 시청 사용자의 어드레스 북으로부터 인출된 국소-정의된 이름이 아닌, 관리 당국에 따른 검증된 이름임을 나타내는 시각적 기표와 함께 디스플레이될 수 있다. 몇몇 실시예들에서, 상이한 표시자, 검증되지 않은 비즈니스 표시자는 비즈니스가 검증되지 않은 경우 디스플레이될 수 있다.
메시지 스레드에 대한 사용자 인터페이스(350)는 메시지 스레드의 디스플레이 동안 영구적으로 가시적인 구성 제어부들(365)을 포함할 수 있다. 많은, 대부분의, 또는 거의 모든 구성 제어부들(365)은 텍스트 입력, 미디어 선택, 이모지(emoji) 선택, 카메라 사용, 소셜 승인 아이콘 등과 같은, 다양한 태스크들의 수행을 위해 추가 사용자 인터페이스 제어부들로의 액세스에 대한 권한을 부여할 수 있다.
하나 이상의 메시지들의 각각은 메시지 버블(375)과 같은, 특정한 메시지 버블에 의해 표현될 수 있다. 메시지 버블은 원자 메시징 상호작용을 나타낼 수 있다. 메시지 버블은 일반적으로 정의된 기하학적 영역에 대응할 수 있으며 여기에서 특정한 메시징 교환의 콘텐트들(예컨대, 텍스트, 미디어)은 정의된 기하학적 영역 내에 포함된다. 메시지 버블은 메시지 스레드 상호작용 디스플레이의 배경으로부터 이를 구별하는 별개의 컬러 또는 복수의 컬러들(예컨대, 하나 이상의 변화도들)을 가질 수 있다. 메시지 버블은 묘사된 대로, 검은색 윤곽과 같은, 개별적으로-컬러링된 경계를 가질 수 있거나, 또는 메시지 버블 및 배경의 상이한 컬러들 간의 계면에 의해 정의된 보더를 가질 수 있다. 몇몇 실시예들에서, 메시지 버블들 및 배경 중 하나 또는 양쪽 모두의 컬러 또는 컬러들은 메시징 시스템의 사용자들에 의해 맞춤화되고 구성될 수 있다.
비즈니스 엔티티를 가진 메시지 스레드에 대한 메시지 스레드 상호작용 디스플레이(370)는 거래 접촉 제어부들(380)을 포함할 수 있다. 거래 접촉 제어부들(380)은 소비자와 비즈니스 사이에서의 메시지 스레드의 초기 부분 동안, 소비자가 비즈니스와 메시징 관계를 수립하기 전에 두드러지게 디스플레이될 수 있다. 그러나, 거래 접촉 제어부들(380)은 여전히 관계가 수립된 후 액세스 가능할 것이다.
거래 접촉 제어부들(380)은 차단 제어부, 스팸 보고 제어부, 및/또는 연락처 추가 제어부들을 포함할 수 있다. 차단 제어부는 비즈니스가 소비자에게 메시지를 보내는 것을 차단할 수 있다. 스팸 보고 제어부는 비즈니스를 스팸에 참여한 것으로 보고할 수 있다. 연락처 추가 제어부는, 클라이언트 디바이스(305) 상에서의 사용자에 대한 어드레스 북에 비즈니스 및 비즈니스를 위한 전화번호를 부가하는 것을 포함할 수 있는 바와 같은, 사용자의 연락처들에 비즈니스를 부가할 수 있다.
메시지 스레드에 대한 사용자 인터페이스(350)는 사용자에게 다양한 다른 태스크들을 수행할 권한을 줄 수 있다. 예를 들어, 사용자는 메시지 스레드와 연관된 비즈니스에 대한 프로필을 볼 권한을 부여받을 수 있다. 프로필은 검증된 정보를 포함한 검증된 프로필을 포함할 수 있다. 예를 들어, 검증된 프로필은 검증된 어드레스, 검증된 위치, 검증된 전화번호, 검증된 이름, 검증된 로고, 및/또는 다른 검증된 정보를 나타낼 수 있다. 프로필은 어드레스, 위치, 전화번호, 이름, 로고, 운영 시간들, 및/또는 다른 정보와 같은, 검증되지 않은 정보를 포함할 수 있다.
관리자 등록
도 4는 관리자 등록을 수행하는 다중-에이전트 메시징 시스템(100)의 실시예를 예시한다.
다중-에이전트 메시징 시스템(100)은 다수의 에이전트들을 가진 다중-에이전트 엔티티(예컨대, 비즈니스 엔티티)를 위한 통일된 메시징 플랫폼을 지원한다. 다중-에이전트 엔티티는 고유 엔티티 아이덴티티에 기초하여 다중-에이전트 메시징 시스템(100)에서 식별될 수 있다. 엔티티 식별자는 비즈니스 엔티티들에 대한 식별자 네임스페이스와 같은, 다중-에이전트 엔티티들에 대한 식별자 네임스페이스에서 고유할 수 있다. 엔티티 식별자는 상이한 종류들의 엔티티들에 대한 식별자 네임스페이스에서 메시징 시스템에 걸쳐 고유할 수 있다. 엔티티 식별자는 무작위 수 발생 기술들(예컨대, 진짜 무작위성, 의사-무작위성)을 사용한 무작위 수 발생에 기초하여 할당받을 수 있다. 엔티티 식별자는 비즈니스 엔티티에 대한 연락처 전화번호와 같은, 다른 정보로부터 도출될 수 있다.
다중-에이전트 엔티티는 하나 이상의 에이전트들과 연관된다. 하나 이상의 에이전트들은 하나 이상의 에이전트 클라이언트 디바이스들과 연관된다. 이와 같이, 다중-에이전트 엔티티는 하나 이상의 에이전트 클라이언트 디바이스들과 연관될 수 있다. 다중-에이전트 엔티티에 대한 복수의 에이전트들 중 하나 이상의 에이전트들은 다중-에이전트 엔티티에 대한 관리자들을 포함할 수 있다. 하나 이상의 관리자들은 하나 이상의 관리자 클라이언트 디바이스들과 연관된다. 에이전트 클라이언트 디바이스들 중 하나 이상은 하나 이상의 관리자 클라이언트 디바이스들을 포함할 수 있다. 이와 같이, 다중-에이전트 엔티티는 하나 이상의 관리자 클라이언트 디바이스들과 연관될 수 있다.
임의의 관리자들을 포함한, 다중-에이전트 엔티티에 대한 각각의 에이전트는 디바이스-특정 에이전트 식별자에 따라 식별될 수 있다. 디바이스-특정 에이전트 식별자는 에이전트를 위한 에이전트 클라이언트 디바이스에 대한 전화번호를 포함할 수 있다. 에이전트가 다수의 클라이언트 디바이스들과 연관되는 경우에, 디바이스-특정 에이전트 식별자는 에이전트에 대한 1차 스마트폰 디바이스와 같은, 1차 클라이언트 디바이스에 대한 전화번호를 포함할 수 있다. 에이전트는 전화 클라이언트 디바이스 또는 전화가 아닌 클라이언트 디바이스(즉, 전화 연결성이 없는 클라이언트 디바이스)를 사용하여 메시징 시스템을 액세스하기 위한 권한을 부여받을 수 있다.
관리자 클라이언트 디바이스(405)는 메시징 시스템을 사용하여 통신하며 다중-에이전트 메시징 시스템(100)을 구현한 복수의 클라이언트 디바이스들 중 하나일 수 있다. 관리자 클라이언트 디바이스(405)는 메시징 클라이언트(420)를 실행한다. 관리자 클라이언트 디바이스(405) 상에서 메시징 클라이언트(420)는 복수의 구성요소들을 포함한다. 복수의 구성요소들은 소프트웨어 구성요소들을 포함할 수 있다. 메시징 클라이언트(420)의 구성요소들은 여기에서 설명된 것들에 대한 부가적인 구성요소들을 포함할 수 있으며 메시징 클라이언트(420)의 동작들은 상이한 실시예들에서 상이한 구성들로 구성요소들 간에 분배될 수 있다. 관리자 클라이언트 디바이스(405)는 비즈니스 메시징 클라이언트를 실행할 수 있다. 비즈니스 메시징 클라이언트는 비즈니스 사용자들에 의한 사용을 위해 설계된 인터페이스 특징들을 사용하여 메시징 클라이언트(420)의 메시징 특징들을 구현할 수 있다.
메시징 클라이언트(420)는 메시징 구성요소(440)를 포함할 수 있다. 메시징 구성요소(440)는 일반적으로 메시징 클라이언트(420)와 메시징 시스템 사이에서 상호작용들을 수행하도록 배열될 수 있다. 메시징 구성요소(440)는 메시징 시스템을 위해 메시징 서버(410)로 네트워크 통신을 전송하며 그로부터 네트워크 통신을 수신할 수 있다.
메시징 클라이언트(420)는 사용자 인터페이스 구성요소(430)를 포함할 수 있다. 사용자 인터페이스 구성요소(430)는 일반적으로 클라이언트 디바이스의 사용자에게 정보를 제공하며 클라이언트 디바이스의 사용자로부터 사용자 명령들을 수신하도록 배열될 수 있다. 사용자 인터페이스 구성요소(430)는 시각적 정보를 디스플레이하고, 오디오 정보를 출력하며, 그 외 정보를 사용자에게 제공할 수 있다. 사용자 인터페이스 구성요소(430)는 메시징 클라이언트(420)의 동작에 대한 터치 명령들, 텍스트 명령들, 음성 명령들, 및 임의의 다른 종류의 명령을 수신할 수 있다.
다중-에이전트 메시징 시스템(100)은 메시징 서버(410)를 포함한다. 메시징 서버(410)는 메시징 서버 디바이스 상에서 실행할 수 있다. 메시징 서버(410)는 일반적으로 클라이언트 디바이스들에 대한 메시징 서비스들을 수행하도록 배열된다. 메시징 서버(410)는 하나 이상의 소프트웨어 또는 하드웨어 구성요소들을 포함할 수 있다. 메시징 서버(410)는 에이전트 관리 구성요소(470)를 포함할 수 있다. 에이전트 관리 구성요소(470)는 일반적으로 다중-에이전트 엔티티들에 대한 에이전트들의 권한 및 등록을 유지하도록 배열된다. 메시지 프로세싱 구성요소(480)는 일반적으로 메시징 시스템의 사용자들 사이에서 메시지들을 수신하고, 저장하며, 포워딩하도록 배열된다.
비즈니스, 비즈니스 엔티티, 또는 다른 다중-에이전트 엔티티를 위한 관리자는 메시지 클라이언트(420)의 사용자 인터페이스 구성요소(430)를 사용하여 관리자 계정 등록 명령(410)을 수행할 수 있다. 메시징 구성요소(440)는 관리자 계정 등록 명령(410)을 수신하고 다중-에이전트 엔티티에 대한 관리자 계정을 등록하기 위해 메시징 서버(410)로의 관리자 계정 등록(450)을 수행한다. 메시징 구성요소(440)는 관리자 계정 등록(450)을 에이전트 관리 구성요소(470)로 전송한다.
에이전트 관리 구성요소(470)는 다중-에이전트 엔티티에 대한 관리자 계정을 위한 관리자 계정 등록(450)을 수신한다. 관리자 계정 등록(450)은 다중-에이전트 엔티티에 대한 관리자 계정을 수립한다. 에이전트 관리 구성요소(470)는 다중-에이전트 엔티티와 연관된 것으로 관리자 계정을 등록한다. 관리자 계정 등록(450)은 메시징 시스템에서의 다중-에이전트 엔티티 대신에 합법적인 관리자가 관리할 권한을 부여받는다는 것을 보장하기 위해 다중-에이전트 엔티티의 검증과 관련되어 수행될 수 있다.
에이전트 관리 구성요소(470)는 에이전트 매핑 리포지터리(415)로의 관리자 등록(460)을 수행한다. 에이전트 매핑 리포지터리(415)는 다중-에이전트 엔티티들과 다중-에이전트 엔티티와 연관된 관리자들 및 에이전트들 사이에서의 매핑을 저장한다. 에이전트 매핑 리포지터리(415)는 하나 이상의 메시징 서버들에 다중-에이전트 엔티티들과 다중-에이전트 엔티티들의 관리자들 및 에이전트들 사이에서의 관계들을 저장 및 검색할 권한을 부여한다.
에이전트 매핑 리포지터리(415)는 다중-에이전트 엔티티에 대한 에이전트 규칙들을 저장할 수 있다. 다중-에이전트 엔티티에 대한 관리자는 비즈니스 애플리케이션 메시징 클라이언트(420)에 대한 사용자 인터페이스 구성요소(430)를 사용하여 다중-에이전트 엔티티에 대한 에이전트 규칙들을 특정할 수 있다. 에이전트 규칙들은 다중-에이전트 엔티티에 대한 메시지들의 핸들링을 구성한다. 메시지의 수신 시, 메시지 프로세싱 구성요소(480)는 다중-에이전트 엔티티에 대한 에이전트 규칙들에 적어도 부분적으로 기초하여 메시지를 프로세싱한다. 에이전트 규칙들은 다중-에이전트 엔티티에 대한 에이전트들의 디폴트 세트를 특정할 수 있으며, 여기에서 메시지 프로세싱 구성요소(480)는 임의의 생성된 메시지 스레드에서 디폴트 에이전트들의 모두를 자동으로 포함한다. 에이전트 규칙들은 다중-에이전트 엔티티에 대한 하나 이상의 관리자들을 특정할 수 있다.
에이전트 규칙들은 스레드 잠금 규칙을 특정할 수 있으며, 여기에서 메시지 스레드로부터 메시지를 판독하는 것이 아닌, 그것에 메시지들을 게시하는 것은 메시지 스레드에서 응답하는 제 1 에이전트가 아닌 에이전트들에 대해 방지된다. 스레드 잠금 규칙은 관리자들이 게시하는 것으로부터 방지되는 것이 면제됨을 특정할 수 있다.
에이전트 규칙들은 다중-에이전트 엔티티에 대해 각각의 에이전트에 대한 허가들을 특정할 수 있다. 에이전트 규칙들은 상기 에이전트가 디폴트 에이전트인지를 각각의 에이전트에 대해 특정할 수 있다. 에이전트 규칙들은 상기 에이전트가 관리자인지를 각각의 에이전트에 대해 특정할 수 있다. 에이전트 규칙들은 지불 활동에 참여하기 위한 허가를 갖는지를 각각의 에이전트에 대해 특정할 수 있다. 에이전트 규칙들은 상기 에이전트가, 반품들을 승인하는 것, 환불들을 승인하는 것, 할인들을 제공하는 것, 또는 다른 재량적 지불 동작들과 같은, 특정한 지불 활동들에 참여하기 위한 허가를 갖는지를 각각의 에이전트에 대해 특정할 수 있다. 에이전트 규칙들은 상기 에이전트가, 단지 사용자들에 의해 개시된 메시지 스레드들에 응답하기보다는, 사용자들(예컨대, 고객들)과의 메시지 스레드를 개시하기 위한 허가를 갖는지를 각각의 에이전트에 대해 특정할 수 있다.
메시징 시스템은 등록 프로세스의 부분으로서 비즈니스 엔티티의 검증을 수행할 수 있다. 일반적으로, 이러한 검증은 특정한 알려진 메시징 엔티티가 특정한 알려진 비즈니스 엔티티에 대응함을 나타낼 것이다. 이것은 사용자가 비즈니스 엔티티와 관계를 맺을 때 그들의 메시징 경험에서 사용자 신뢰를 제공할 수 있다. 등록 프로세스는 전화번호 검증 프로세스를 포함할 수 있으며, 여기에서 단문 메시지 서비스(SMS) 메시지 또는 음성 확인 코드는 관리자 클라이언트 디바이스(405)로 전송되며 등록을 완료하기 위해 관리자 클라이언트 디바이스(405) 상에서 메시징 클라이언트(420)로 입력되어야 한다.
관리자들은 다수의 엔드포인트들로부터 메시징 시스템을 액세스할 권한을 부여받을 수 있다. 예를 들어, 관리자는 데스크탑 또는 랩탑 컴퓨터로부터 및 스마트폰과 같은 터치-스크린 디바이스로부터 메시징 시스템을 액세스할 권한을 부여받을 수 있다. 다수의 디바이스들로부터 메시징 시스템을 액세스하는 것은, 예를 들어, 단-대-단 암호화를 관리하는 1차 디바이스를 가짐으로써 권한을 부여받을 수 있으며, 2차 디바이스는 1차 디바이스를 통해 메시징 시스템을 액세스한다.
에이전트 등록
도 5는 에이전트 클라이언트 디바이스(505)를 사용하여 에이전트에 대한 에이전트 등록을 수행하는 다중-에이전트 메시징 시스템(100)의 실시예를 예시한다.
에이전트 등록은 에이전트 클라이언트 디바이스(505) 상에서 에이전트에 의한 동작들을 포함할 수 있다. 사용자 인터페이스 구성요소(430)는 에이전트로부터 에이전트 계정 등록 명령(510)을 수신하고 에이전트 계정 등록 명령(510)을 메시징 구성요소(440)로 전달할 수 있다. 메시징 구성요소(440)는 그 후 메시징 서버(410)로 에이전트 계정 등록(550)을 수행한다.
에이전트 관리 구성요소(470)는 에이전트 클라이언트 디바이스(505)로부터 다중-에이전트 엔티티에 대해 에이전트 계정에 대한 에이전트 계정 등록(550)을 수신한다. 에이전트 관리 구성요소(470)는 에이전트 매핑 리포지터리(415)로 에이전트 계정에 대한 에이전트 등록(560)을 수행한다. 에이전트 등록(560)은 에이전트 계정이 특정된 다중-에이전트 엔티티에 대한 에이전트임을 나타낸다.
일반적으로, 다중-에이전트 메시징 시스템(100)은 다중-에이전트 엔티티에 대한 에이전트 등록(560)의 관리자 승인을 가능하게 한다. 일 실시예에서, 관리자 클라이언트 디바이스(405) 상에서 사용자 인터페이스 구성요소(430)는 관리자로부터 에이전트 계정 승인 명령(515)을 수신하며 에이전트 계정 승인 명령(515)을 메시징 구성요소(440)로 전달할 수 있다. 메시징 구성요소(440)는 그 후 메시징 서버(410)로 에이전트 계정 승인(555)을 수행한다.
대안적으로, 관리자는 그들이 승인되었음을 나타내기 위해 그들이 에이전트 등록(560)에서 사용할 수 있는 정보를 에이전트로 제공함으로써 에이전트 등록(560)을 승인할 수 있다. 예를 들어, 관리자는, 관리자 클라이언트 디바이스(405)가 에이전트 계정 승인(555)을 네트워크를 통해 에이전트 관리 구성요소(470)로 전송하지 않고, 에이전트 등록(560)이 관리자의 승인을 갖는다는 것을 나타내기 위해 에이전트 클라이언트 디바이스(505)와 함께 사용할 수 있는 코드를 에이전트로 제공할 수 있다. 에이전트 관리 구성요소(470)는 에이전트 계정 등록(550)에서 관리자 코드를 수신하며 관리자 코드에 기초하여 에이전트 계정 등록을 승인할 수 있다. 관리자 코드는 에이전트 관리 구성요소(470)에 의해 관리자 클라이언트 디바이스(405)로 제공된 1회용 코드일 수 있다. 1회용 코드는 숫자 또는 영숫자 코드를 포함할 수 있다. 1회용 코드는 무작위로 생성될 수 있다. 1회용 코드는 메시징 시스템 밖에 있는 에이전트 클라이언트 디바이스(505)로 제공될 수 있다.
몇몇 실시예들에서, 숫자 코드는 빠른 응답(QR) 코드를 통해 제공될 수 있다. QR 코드, 또는 QR 코드로 인코딩된 숫자 코드는 에이전트 관리 구성요소(470)에 의해 관리자 클라이언트 디바이스(405)로 제공될 수 있다. 관리자 클라이언트 디바이스(405)는 그 후 QR 코드를 디스플레이할 수 있으며, 에이전트 클라이언트 디바이스(505)는 카메라 구성요소를 갖고 QR 코드를 캡처할 수 있다. 에이전트 클라이언트 디바이스(505)는 그 후 QR 코드로부터 1회용 코드를 추출하며 1회용 코드를 에이전트 계정 등록(550)에서 에이전트 관리 구성요소(470)로 제공한다.
에이전트 관리 구성요소(470)는 다중-에이전트 엔티티에 대한 관리자 계정으로부터 다중-에이전트 엔티티에 대한 에이전트 계정을 위한 에이전트 계정 승인(555)을 수신한다. 에이전트 관리 구성요소(470)는 에이전트 계정 등록 및 에이전트 계정 승인(555)에 기초하여 에이전트 매핑 리포지터리(415)로 에이전트 계정에 대한 에이전트 등록(560)을 수행한다. 에이전트 등록(560)은 에이전트 계정이 특정된 다중-에이전트 엔티티에 대한 엔티티임을 나타낸다.
에이전트 계정 등록(550), 에이전트 계정 승인(555), 및/또는 에이전트 등록(560)은 다중-에이전트 엔티티에 대한 후속 메시지 스레드들의 메시지 공유 인가를 위한 에이전트 계정을 등록할 수 있다. 에이전트 계정은 다중-에이전트 엔티티로 및 그로부터 전송된 모든 메시지들을 액세스하도록 인가될 수 있다. 대안적으로, 에이전트 계정은 다중-에이전트 엔티티에 대한 에이전트로서 에이전트 계정의 등록에 이어 시작된 메시지 스레드들을 액세스하도록 인가될 수 있다. 대안적으로, 에이전트 계정은 다중-에이전트 엔티티에 대한 관리자에 의해 특정 메시지 스레드들을 액세스하도록 개별적으로 인가될 수 있다. 다중-에이전트 엔티티와의 에이전트 계정의 연관 및 메시지 스레드들을 액세스하기 위한 에이전트 계정의 인가는 에이전트 매핑 리포지터리(415)에 저장된다.
다중-에이전트 엔티티의 에이전트로서 에이전트 계정의 등록은 에이전트 계정과 연관된 에이전트 클라이언트 디바이스(505)와 관리자 계정과 연관된 관리자 클라이언트 디바이스(405) 사이에서의 단-대-단 암호화 통신 관계의 생성을 촉구할 수 있다. 클라이언트 디바이스들(405, 505) 상에서 메시징 구성요소들(440)은 클라이언트 디바이스들(405, 505) 사이에서 통신을 암호화하고 복호화하는데 사용하기 위한 암호화 키들을 수립하기 위해 보안 정보를 교환할 수 있다. 이러한 단-대-단 암호화 통신 관계는 에이전트 클라이언트 디바이스(505)와 관리자 클라이언트 디바이스(405) 사이에서 정보를 안전하게 전달하기 위해 사용될 수 있다. 단-대-단 암호화 통신 관계는 메시징 시스템에 대한 디바이스들 사이에서 단-대-단 암호화 메시징을 위한 동일한 기술들을 사용한 단-대-단 암호화 통신 관계일 수 있다.
몇몇 실시예들에서, 에이전트 계정 등록(550)은 다중-에이전트 엔티티에 의해 전송되고 수신된 메시지들을 액세스하기 위한 메시지 공유 인가를 포함할 수 있다. 그러나, 에이전트에 의한 에이전트 계정 등록(550) 외에, 에이전트 관리 구성요소(470)는 그것이 다중-에이전트 엔티티에 대한 관리자로부터 에이전트 계정 승인(555)을 가질 때까지 다중-에이전트 엔티티의 에이전트로서 계정을 등록하는 것으로부터 지속될 수 있다.
메시지 포워딩
도 6은 메시지 패키지(650)를 포워딩하는 다중-에이전트 메시징 시스템(100)의 실시예를 예시한다.
사용자는 메시지(510)를 다중-에이전트 엔티티로 전송하기 위해 사용자 클라이언트 디바이스(605)를 사용할 수 있다. 사용자는 사용자 클라이언트 디바이스(605)의 사용자 인터페이스 구성요소(430)를 사용하여 메시지(610)를 구성한다. 사용자 인터페이스 구성요소(430)는 메시지(610)를 메시징 구성요소(440)로 전달한다. 메시징 구성요소(440)는 그 후 메시지 패키지(650)를 생성하며 그것을 메시징 서버(410)로 제출한다. 메시지 패키지(650)는 다중-에이전트 엔티티에 대한 어드레스 또는 식별자로서 어드레싱된다.
메시지 프로세싱 구성요소(480)는 사용자 계정과 연관된 사용자 클라이언트 디바이스(605)로부터 다중-에이전트 엔티티에 대한 메시지 패키지(650)에서 인입 메시지(610)를 수신한다. 메시지 프로세싱 구성요소(480)는 그 후 관리자 계정에 의한 에이전트 계정에 대한 메시지 공유 인가에 기초하여 그것의 인입 메시지(610)와 함께 메시지 패키지(650)를 등록된 에이전트 계정과 연관된 에이전트 클라이언트 디바이스(505)로 전송한다. 몇몇 실시예들에서, 메시지 공유 인가는 에이전트의 등록에 기초하여 제공될 수 있다. 다른 실시예들에서, 메시지 공유 인가는 메시지 스레드들을 판독하고 그것에 참여하도록 에이전트들을 개별적으로 인가하는 관리자들을 갖고 특정 메시지-스레드들에 대해 개별적으로 제공받을 수 있다.
몇몇 실시예들에서, 에이전트는 다중-에이전트 엔티티에 대한 모든 메시지 스레드들, 또는 그것들이 다중-에이전트 엔티티에 대한 에이전트로서 등록된 다음에 생성된 모든 메시지 스레드들을 액세스할 권한을 부여받는다. 다른 실시예들에서, 에이전트는 관리자에 의해 특정 메시지 스레드들을 액세스할 권한을 부여받으며 그것들이 구체적으로 액세스하도록 인가되지 않은 메시지 스레드들을 액세스하는 것이 방지된다. 몇몇 실시예들에서, 에이전트들은 임의의 메시지 스레드를 판독할 수 있지만, 단지 메시지들을 그것들이 관리자에 의해 써넣도록 인가되는 메시지 스레드들로 제출할 수 있다. 몇몇 실시예들에서, 메시지 스레드는 특정한 에이전트에 대해 잠길 수 있어서, 일단 에이전트가 메시지 스레드에 게시되면, 다른 에이전트들이 그것에 게시하는 것을 방지한다. 이러한 록은 비즈니스 애플리케이션에서 에이전트 인터페이스에 표시될 수 있다.
몇몇 실시예들에서, 인입 메시지 스레드들은 다중-에이전트 엔티티에 대한 하나 이상의 디폴트 계정들로 향해질 수 있다. 에이전트 계정은 그러므로 모든 인입 메시지 스레드가 처음에 디폴트로 향해지는 디폴트 계정을 포함할 수 있다. 디폴트 계정 또는 디폴트 계정들은 다중-에이전트 엔티티가 등록되거나 또는 나중에 구성되거나 또는 재구성될 때 특정될 수 있다. 몇몇 실시예들에서, 디폴트 에이전트는 관리자일 수 있으며, 그에 의해 인입 메시지 스레드들 중 일부에 응답하고 핸들링을 위해 나머지를 다양한 에이전트들에 분배할 권한을 관리자에게 부여한다. 관리자는 메시징 서버(410)를 통해 관리자 클라이언트 디바이스(405)로부터 에이전트 클라이언트 디바이스(505)로 메시지 스레드를 포워딩하기 위해 관리자 클라이언트 디바이스(405)를 사용할 수 있다.
에이전트 매핑 리포지터리(415)는 각각의 다중-에이전트 엔티티에 대한 에이전트들의 리스트를 포함한다. 에이전트 매핑 리포지터리(415)는 다중-에이전트 엔티티에 대한 디폴트 에이전트들의 리스트를 추가로 포함할 수 있으며, 여기에서 디폴트 에이전트들은 사용자 클라이언트 디바이스로부터 인입 메시징 통신의 디폴트 수신자들일 수 있다. 하나 이상의 디폴트 에이전트들의 리스트는 다중-에이전트 엔티티에 대한 관리자에 의해 특정될 수 있다. 에이전트 매핑 리포지터리(415)는 다중-에이전트 엔티티에 대한 하나 이상의 관리자들의 리스트를 추가로 저장할 수 있다. 관리자들은 제한 없이, 에이전트들을 부가하고, 에이전트들을 제거하고, 및/또는 에이전트들에 메시지 스레드들을 할당할 권한을 부여받는 것과 같은, 부가적인 파워들을 가진 에이전트들의 서브세트이다.
에이전트 관리 구성요소(470)는 사용자 계정과 관리자 계정 사이에서 메시지 스레드에 대한 메시지-스레드 포워드를 수신한다. 메시지 스레드 포워드는 관리자 클라이언트 디바이스(405)로부터와 같은, 관리자 계정으로부터 수신된다. 메시지-스레드 포워드는 메시지 스레드를 포워딩받은 에이전트 계정으로 어드레싱된다. 메시지-스레드 포워드는 에이전트 계정들이 다중-에이전트 엔티티에 대한 모든 메시지 스레드들을 액세스하도록 인가되지 않은 실시예들에서 메시지 스레드를 액세스하기 위해 에이전트 계정에 대한 메시지 공유 인가를 포함하거나 또는 그것과 관련하여 전송될 수 있다. 에이전트는 그들이 에이전트 클라이언트 디바이스(505)를 통해 메시지 스레드를 할당받았음을 에이전트 관리 구성요소(570)에 의해 통지받을 수 있다.
에이전트 관리 구성요소(470)는 에이전트 매핑 리포지터리(415)에서 에이전트 계정에 메시지 스레드를 등록한다. 이것은 메시지 스레드에 대한 인입 메시지들을 적절한 클라이언트 디바이스, 이 경우에 메시지 스레드를 할당받은 에이전트 계정에 대한 에이전트 클라이언트 디바이스(505)로 포워딩할 권한을 메시지 프로세싱 구성요소(480)에 부여한다. 메시지 프로세싱 구성요소(480)가 그 후 메시징 서버 디바이스 상에서의 메시징 서버(410)에서 사용자 클라이언트 디바이스(605)로부터 다중-에이전트 엔티티에 대한 인입 메시지 패키지(650)에서 인입 메시지(610)를 수신할 때, 그것은 에이전트 매핑 리포지터리(415)에서의 에이전트 계정으로의 메시지 스레드의 등록에 기초하여 메시지 패키지(650)에서의 메시지(610)를 에이전트 클라이언트 디바이스(505)로 전송한다. 인입 메시지(610)에 대한 메시지 스레드는 메시지(610)에 의해 어드레싱된 다중-에이전트 엔티티에 기초하여 결정되며 적절한 에이전트 클라이언트 디바이스(505)를 나타내는 에이전트 등록(560)은 메시지(610)가 에이전트 클라이언트 디바이스(505)에 할당된 메시지 스레드와 연관됨에 기초하여 에이전트 매핑 리포지터리(415)로부터 검색된다.
인입 메시지 패키지(650)가 수신될 때, 메시지 패키지(650)는 의도된 수신인을 식별하기 위해 검사된다. 의도된 수신인은 수신인 식별자에 기초하여 식별된다. 의도된 수신인이 다중-에이전트 엔티티인 경우에, 수신인 식별자는 다중-에이전트 엔티티를 식별한다. 수신인 식별자는 그 후 메시지 패키지(650)를 수신해야 하는 에이전트를 검색하기 위해 에이전트 매핑 리포지터리(415)와 함께 사용될 수 있으며, 상기 에이전트는 에이전트 등록(560)에 기초하여 다중-에이전트 엔티티로 등록되었다. 몇몇 경우들에서, 에이전트는 그들의 에이전트 계정이 메시지 패키지(650)에 대해 메시지 스레드에 대한 핸들링 에이전트로서 등록된다는 것에 기초하여 식별된다. 메시지 패키지(650)에 대한 메시지 스레드는 전송자에 기초하여 식별될 수 있으며, 상기 메시지 스레드는 전송자의 사용자 클라이언트 디바이스(605)에 대한 사용자 계정과 수신인 다중-에이전트 엔티티 사이에서의 고유 메시지 스레드이다. 다른 경우들에서, 에이전트는 에이전트 계정이 디폴트 에이전트임에 기초하여 식별되며, 상기 디폴트 에이전트는 어떤 에이전트도 메시지 스레드에 구체적으로 할당되지 않는 것 때문에 사용된다. 어느 경우든, 메시지 패키지(650)는 그 후 결정된 에이전트를 위한 에이전트 클라이언트 디바이스(505)로 전송된다.
사용자 클라이언트 디바이스(605)와 에이전트 클라이언트 디바이스(505) 사이에서의 메시지 스레드의 초기 생성은 디폴트 에이전트가 모든 인입 사용자 통신의 초기 메시지 스레드 생성을 수신하는 경우 수행될 수 있다. 사용자 클라이언트 디바이스(605) 및 에이전트 클라이언트 디바이스(505)는 단-대-단 암호화 메시징 관계를 생성할 수 있으며, 각각의 클라이언트 디바이스(404, 505)는 메시징 관계를 위한 보안 정보를 저장한다. 보안 정보는 하나 이상의 암호화 키들을 포함할 수 있으며, 인입 메시지(610)는 하나 이상의 암호화 키들의 암호화 키에 기초하여 암호화된다.
하나 이상의 에이전트 클라이언트 디바이스가 사용자 클라이언트 디바이스(605)를 갖고 메시지 스레드를 액세스하도록 인가되는 경우에, 메시지 스레드는 보안 그룹 메시지 스레드로서 안전해질 수 있다. 보안 그룹 스레드는 단-대-단 암호화를 사용하여 3개 이상의 클라이언트 디바이스들 사이에서 암호화된 통신을 지원한다. 인입 메시지(610)가 그룹 메시지 스레드로 전송되는 경우에, 인입 메시지(610)는, 둘 이상의 에이전트 클라이언트 디바이스들에 대해서와 같은, 각각의 수신인 클라이언트 디바이스에 대해 개별적으로 암호화된다.
몇몇 실시예들에서, 하나의 에이전트 디바이스(다중-에이전트 엔티티에 대한 관리자에 의해 사용된 디폴트 에이전트 클라이언트 디바이스와 같은)로부터의 메시지 스레드의 할당은 일-대-일 메시지 스레드로부터 그룹 메시지 스레드로 메시지 스레드의 전이를 촉구할 수 있다. 다른 실시예들에서, 메시지 스레드는 처음에 그룹 메시지 스레드로서 생성될 수 있다. 특히, 다수의 에이전트들이 메시지 스레드를 액세스하도록 자동으로 인가되는 경우에, 메시지 스레드는 처음에 그룹 메시지 스레드로서 생성될 수 있으며, 에이전트에 대한 각각의 에이전트 클라이언트 디바이스는 그룹 메시지 스레드에 참여한 모든 메시지 스레드를 액세스하도록 인가된다. 대안적으로, 에이전트 클라이언트 디바이스들은 에이전트 클라이언트 디바이스가 액세스하는 데 대해 인가된 메시지 스레드를 액세스하도록 요청하는 것에 응답하여 그룹 메시지 스레드에 부가될 수 있다. 이들 실시예들에서, 메시지 스레드는 제 2 에이전트 클라이언트 디바이스가 사용자와 메시지 스레드로 액세스하도록 요청하는 것에 응답하여 그룹 메시지 스레드로 전이될 수 있다.
제 1 에이전트 클라이언트 디바이스로부터 제 2 에이전트 클라이언트 디바이스로의 메시지-스레드 포워드는 메시지 스레드에 대한 이력 번들의 포워드를 포함할 수 있다. 디폴트 에이전트에 대한 클라이언트 디바이스와 같은, 제 1 에이전트 클라이언트 디바이스는 이력 번들로서 기존의 대화를 암호화하며 사용자와의 상호작용을 계속하기 위한 콘텍스트를 제 2 에이전트에 제공하기 위해 암호화된 이력 번들을 제 2 에이전트 클라이언트 디바이스로 전송할 수 있다.
전역적 뷰
모든 에이전트 클라이언트 디바이스들과 같은, 다수의 클라이언트 디바이스들이 다중-에이전트 엔티티에 대한 모든 메시지 스레드들을 수신하는 실시예들에서, 메시지 프로세싱 구성요소(480)는 다중-에이전트 엔티티에 대한 모든 메시지 스레드들에 대한 모든 메시지 패키지들을 다중-에이전트 엔티티에 대한 모든 에이전트 클라이언트 디바이스들로 자동으로 포워딩할 수 있다. 각각의 인입 메시지 패키지(650)에 대해, 메시지 프로세싱 구성요소(480)는 에이전트 매핑 리포지터리(415)로부터, 에이전트 레지스트리를 포함한, 에이전트 등록들의 리스트를 검색하며 메시지 패키지(650)를 에이전트 클라이언트 디바이스들의 각각으로 포워딩한다. 이러한 메시지 패키지(650)는 그 후 암호화된 그룹 메시지 스레드 기술들에 따라 사용자 클라이언트 디바이스들로부터 메시지 패키지들을 복호화하기 위해 수립된 암호화 키들에 기초하여 에이전트 클라이언트 디바이스들의 각각에 의해 복호화될 수 있다.
메시지 스레드는 메시지 스레드 인터페이스에서 사용자 클라이언트 디바이스(605) 상에서 디스플레이될 수 있다. 사용자가 그것들이 부합하는 다중-에이전트 엔티티를 식별하도록 돕기 위해, 다중-에이전트 메시징 시스템(100)은 다중-에이전트 엔티티를 나타내기 위해 사용자 클라이언트 디바이스(605) 상에서 메시지 스레드 인터페이스를 라벨링할 수 있다. 예를 들어, 사용자 클라이언트 디바이스(605) 상에서 메시지 스레드 인터페이스는 비즈니스의 이름과 같은, 다중-에이전트 엔티티에 대한 검증된 이름으로 라벨링된다.
몇몇 실시예들에서, 메시지 스레드들은 사용자들이 부합하는 개개의 에이전트에 기초하여 사용자들에 대해 라벨링된다. 이와 같이, 에이전트 관리 구성요소(470)는 메시지-스레드 포워드 명령이 사용자 계정에 대한 관리자 계정을 형성하는 것에 응답하여 관리자 계정 대신에 에이전트 계정을 나타내기 위해 사용자 클라이언트 디바이스(605) 상에서 메시지 스레드에 대한 메시지 스레드 인터페이스를 재-라벨링할 수 있다. 이와 같이, 초기 기간에, 메시지 스레드 인터페이스는 관리자 계정에 대한 사용자 정보를 디스플레이하며 그 후 뒤이은 기간에 에이전트 계정에 대한 사용자 정보를 디스플레이할 수 있다. 몇몇 실시예들에서, 통신되는 관리자 또는 에이전트에 대한 라벨은, 통신 사용자를 혼동하는 것을 피하도록, 관리자 또는 에이전트가 메시지를 메시지 스레드로 제출할 때까지 밝혀지지 않을 수 있다. 이와 같이, 초기 기간에 다중-에이전트 엔티티의 이름이 사용될 수 있으며 그 후 뒤이은 기간에 에이전트의 특정 이름이, 에이전트가 관리자에 의해 메시지 스레드를 할당받은 후와 같이, 에이전트가 메시지 스레드 내에서 메시지를 전송한다면 사용된다.
메시징 클라이언트(420)는 접촉들에 대한 마지막으로-본 시간들을 디스플레이할 수 있다. 이들 마지막으로-본 시간들은 각각의 메시지 스레드에 대한 메시징 인박스 뷰에서 디스플레이될 수 있다. 이들 마지막으로-본 시간들은 접촉을 가진 메시지 스레드에 대한 메시지 스레드 인터페이스에서 디스플레이될 수 있다. 다중-에이전트 엔티티에 대해, 사용된 마지막으로-본 시간은 메시지 스레드를 액세스하기 위해 인가를 가진 임의의 에이전트에 대한 최근(즉, 가장 최근의) 마지막으로-본 시간일 수 있다. 에이전트 관리 구성요소(470)는 다중-에이전트 엔티티에 대한 복수의 에이전트 계정들에 대한 복수의 마지막으로-본 시간들을 결정하고, 복수의 마지막으로-본 시간들의 가장-최근 마지막으로-본 시간을 선택하며, 다중-에이전트 엔티티에 대한 마지막으로-본 시간을 나타내기 위해 사용자 클라이언트 디바이스(605) 상에서 메시지 스레드에 대한 메시지 스레드 인터페이스로 가장-최근의 마지막으로-본 시간을 제공할 수 있다.
몇몇 실시예들에서, 다중-에이전트 엔티티에 대한 관리자 및/또는 엔티티들, 비즈니스 엔티티, 또는 다른 권한을 부여받은 엔티티는 브로드캐스트 메시지들을 다수의 사용자 계정들로 전송할 권한을 부여받을 수 있다. 예를 들어, 다중-에이전트 엔티티는 다중-에이전트 엔티티가 활성 또는 최근-활성 메시지 스레드를 가진 모든 사용자 계정으로 특정된 메시지를 전송할 수 있을 것이다. 메시징 시스템은 전송될 수 있는 브로드캐스트 메시지들의 수에 대한, 매일의 제한과 같은, 한계를 둘 수 있다. 사용자들은 임의의 특정 또는 모든 비즈니스들에 대한 브로드캐스트 메시지들을 수신하는 것에서 탈퇴할 권한을 부여받을 수 있다. 사용자들은 임의의 브로드캐스트 메시지들의 수신 또는 특정한 비즈니스에 대한 브로드캐스트 메시지들에 참여하도록 허용될 수 있다.
메시지들을 태그하는 것
몇몇 실시예들에서, 관리자들 및/또는 에이전트들은 주석들, 라벨들, 또는 다른 조각들의 정보를 갖고 사용자들을 태그할 권한을 부여받을 수 있다. 관리자들은 그 후 특정한 태그를 가진 이들 사용자들에게만 브로드캐스트 메시지들을 전송할 수 있다. 이들 태그들은 다수의 에이전트들 및/또는 관리자들에 가시적일 수 있어서, 정보의 공유의 권한을 부여한다. 예를 들어, 에이전트들은 다양한 태스크들의 수행을 돕기 위해 다른 에이전트들에 가시적인 주석들을 메시지 스레드에 부가할 수 있다. 에이전트들 및 관리자들은 태그들에 기초하여 메시지 스레드들을 분류하고 선택할 권한을 부여받을 수 있다. 에이전트들 및 관리자들은 태그들의 적어도 일부에 기초하여 계층 구조를 제공받을 수 있다.
사용자들과의 메시지 스레드들은 사용자가 어떻게 메시지 스레드를 개시하였는지에 대한 콘텍스트를 제공하는 태그로 자동으로 태깅될 수 있다. 예를 들어, 메시징-콘텍스트 태그는 사용자가 웹 페이지 상에서 또는 메시징 클라이언트(420)에서 다중-에이전트 엔티티로 깊게 연계된 애플리케이션에서 딥-링크 고유 리소스 표시자(URI)를 선택하였음을 나타낼 수 있다. 메시징-콘텍스트 태그는 사용자가 딥-링크 URI를 포함한 광고를 선택하였음을 나타낼 수 있다.
몇몇 실시예들에서, 메시지 스레드들을 태그하는 것은 이미지들 또는 비디오들과 같은, 미디어 콘텐트로 메시지 스레드들을 태그하는 것을 포함할 수 있다. 이들 실시예들에서, 메시징 시스템은 메시지 스레드들이 태그된 미디어 콘텐트를 저장하기 위해 사용될 수 있는 미디어 리포지터리를 제공할 수 있다. 이러한 미디어 리포지터리는 단지 다중-에이전트 엔티티의 에이전트들 및 관리자들만이 다중-에이전트 엔티티와 연관된 미디어 콘텐트를 액세스할 수 있도록 암호화될 수 있다. 몇몇 실시예들에서, 단지 관리자 또는 다른 에이전트에 의해 선택된 에이전트들만이 미디어 콘텐트를 액세스하도록 인가될 수 있다.
자동화된 응답들
몇몇 실시예들에서, 메시징 시스템은 자동화된 응답들을 지원할 수 있다. 예를 들어, 자동화된 응답은 사용자가 사용자를 환영하기 위해 다중-에이전트 엔티티와의 메시지 스레드를 생성할 때 전송될 수 있으며, 상기 자동화된 응답은 다중-에이전트 엔티티에 대한 관리자에 의해 정의된다. 자동화된 응답들은 빈번하게-묻는 질문들에 대답하기 위해 관리자에 의해 셋 업될 수 있다. 이들 자동화된 응답들은, 명시적인 키워드 태깅, 키워드 분석, 기계-기반 자연어 학습, 또는 임의의 다른 자연어 프로세싱(NLP) 기술을 포함한, 다양한 NLP 기술들에 기초하여 사용자 메시지들에 응답하여 제공될 수 있다. 메시징 시스템은 또한 메시지 스레드를 보는 에이전트들로 자동화된 응답 숏컷들을 제공할 수 있다. 자동화된 응답을 자동으로 전송하는 대신에, 메시징 시스템은 하나 이상의 제안된 응답들을 에이전트로 제공할 수 있다. 이들 제안된 응답들은 메시지 스레드의 NLP 분석을 포함할 수 있는 바와 같이, 메시지 스레드의 세부사항들에 대한 콘텍스트 없이 제공된 일반적인 제안된 응답들일 수 있거나, 또는 메시지 스레드의 접촉에 기초할 수 있다.
분석들
다중-에이전트 메시징 시스템(100)은 분석들을 다중-에이전트 엔티티의 관리자들 및/또는 에이전트들로 제공할 수 있다. 분석들은 메시징 시스템 상에서 다중-에이전트 엔티티의 수행에 대한 정보를 제공하는 다양한 메트릭들에 대한 다양한 측정치들을 제공할 수 있다. 분석들은, 제한 없이, 응답 시간 측정치들 및 만족 측정치들을 포함할 수 있다. 분석들은 브로드캐스트 메시지들에 대한 판독 및 응답 레이트들을 포함할 수 있다. 분석들은 일반적으로 다중-에이전트 엔티티를 위해 및/또는 다양한 관리자들 및/또는 에이전트들의 수행에 대해 제공될 수 있다.
관리자들은 관리자-관련 정보를 보여주는 대시보드를 제공받을 수 있다. 관리자-관련 정보는 경보들을 포함할 수 있다. 예를 들어, 사용자 메시지가 정의된 시간 기간보다 큰 동안 응답 없이 간다면. 경보를 생성하기 위해 사용된 시간 기간은, 고-우선순위 태그를 갖고 태깅된 보다 높은-우선순위 메시지는 더 낮은-우선순위 메시지보다 적은 응답이 없는 시간을 갖고 경보를 야기한다는 것과 같은, 메시지가 어떻게 태깅되는지에 의존하여 달라질 수 있다. 몇몇 실시예들에서, 관리자는 응답되지 않은 메시지들과의 고-우선순위 메시지 스레드들의 리스트를 제공받을 수 있다.
지불 프로세싱
다중-에이전트 메시징 시스템(100)은 소비자들 및 비즈니스들 대신에 지불 프로세싱을 지원할 수 있으며, 상기 다중-에이전트 메시징 시스템(100)은 지불 프로세스에서 중재자로서 동작한다.
인가-해제
관리자들 및 에이전트들은 또한 다중-에이전트 엔티티에 대한 메시지 스레드들 및 다른 정보를 액세스하는 것으로부터 인가-해제(de-authorized)될 수 있다. 관리자들은 인가해제 명령을 에이전트 관리 구성요소(470)로 전송함으로써 에이전트들을 인가 해제할 수 있다. 다수의 관리자 계정들이 다중-에이전트 엔티티를 위해 사용되는 경우에, 1차 관리자 계정은 다른 관리자 계정들의 인가 및 인가 해제를 제어할 수 있다. 1차 관리자의 인가 해제는 다중-에이전트 엔티티와의 통신에 기초하여 메시징 시스템의 관리자들에 의해 수동으로 수행될 수 있다.
보안 정보 공유
대안적인 실시예에서, 단-대-단 암호화된 메시지 스레드로의 액세스는 디바이스들 간에 보안 정보를 공유함으로써 제공될 수 있다. 사용자 클라이언트 디바이스(605)와 관리자 클라이언트 디바이스(405) 사이에서의 메시지 스레드의 초기 생성은 관리자가 모든 인입 사용자 통신의 초기 메시지 스레드 생성을 수신하는 경우 수행될 수 있다. 사용자 클라이언트 디바이스(605) 및 관리자 클라이언트 디바이스(405)는 단-대-단 암호화된 메시징 관계를 생성할 수 있으며, 각각의 클라이언트 디바이스(405, 605)는 메시징 관계에 대한 보안 정보를 저장한다. 보안 정보는 하나 이상의 암ㅎ화 키들을 포함할 수 있으며, 인입 메시지(610)는 하나 이상의 암호화 키들의 암호화 키에 기초하여 암호화된다.
이러한 보안 정보는 사용자 클라이언트 디바이스(605)에 의해 다중-에이전트 엔티티와의 메시지 스레드로 전송된 메시지들을 복호화할 권한을 에이전트 클라이언트 디바이스(505)에 부여하기 위해 및 에이전트 클라이언트 디바이스(505)로부터 사용자 클라이언트 디바이스(605)로 전송된 메시지들을 복호화할 권한을 에이전트 클라이언트 디바이스(505)에 부여하기 위해 관리자 클라이언트 디바이스(405)로부터 에이전트 클라이언트 디바이스(505)로 전송될 수 있다. 메시지 프로세싱 구성요소(470)는 메시지 스레드 포워드 명령에 기초하여 스레드 포워딩 페이로드를 관리자 계정으로부터 에이전트 계정으로 포워딩한다. 스레드 포워딩 페이로드는, 암호화 키들과 같은, 보안 정보를 포함하여, 메시지 스레드를 액세스할 권한을 에이전트 클라이언트 디바이스(505)에 부여한다.
관리자 클라이언트 디바이스(405) 상에서 메시징 구성요소(440)는, 관리자 클라이언트 디바이스(405) 상에서 보안 정보 리포지터리로부터, 암호화 키들과 같은, 보안 정보를 수집한다. 관리자 클라이언트 디바이스(405)는 그 후 보안 정보를 에이전트 클라이언트 디바이스(505)로 전송한다. 관리자 클라이언트 디바이스(405)에 의한 보안 정보의 에이전트 클라이언트 디바이스(505)로의 전송은 메시지 스레드가 관리자에 의해 에이전트에 할당되는 것에 응답하여 수행될 수 있다. 에이전트 클라이언트 디바이스(505)는 보안 정보를 수신하며 그것을 그 자신의 보안 정보 리포지터리에 저장한다. 에이전트 클라이언트 디바이스는 그 후 관리자 클라이언트 디바이스(405)에 의해 제공된 보안 정보를 사용하여 사용자 클라이언트 디바이스(605)와의 통신을 암호화하고 복호화할 권한을 부여받는다. 관리자 클라이언트 디바이스(405)로부터 에이전트 클라이언트 디바이스(505)로의 보안 정보의 전송은 클라이언트 디바이스(405, 505) 사이에서의 단-대-단 암호화된 통신을 사용하여 수행될 수 있다.
교환된 보안 정보 및 에이전트 매핑 리포지터리(415)에서 사용자 클라이언트 디바이스(605)와의 메시지 스레드에 대한 대체 수신인으로서 등록된 에이전트 클라이언트 디바이스(505)를 갖고, 에이전트 클라이언트 디바이스(505)는 그러므로 메시지 프로세싱 구성요소(480)로부터 메시지 패키지(650)를 수신하며 보안 정보를 사용하여 안에 저장된 메시지(610)를 복호화할 준비가 된다. 유사하게, 에이전트 클라이언트 디바이스(505)는 보안 정보 및 메시징 서버(410)의 메시지 포워딩 기능을 사용하여 메시지 스레드와 관련한 메시지들을 사용자 클라이언트 디바이스(605)로 전송할 준비가 된다.
다중-에이전트 엔티티에 대한 에이전트가 다중-에이전트 엔티티에 대한 메시지 스레드들, 즉 모든 스레드들 또는 뒤이은 스레드들을 액세스하도록 자동으로 인가되는 실시예들에서, 메시지 스레드들에 대한 보안 정보는 메시지 스레드가 생성되는 것에 응답하여 에이전트 클라이언트 디바이스(505)로 자동으로 제공될 수 있다. 메시지 스레드가 사용자와 다중-에이전트 엔티티 사이에서 생성될 때, 암호화 키들과 같은, 보안 정보는 사용자 클라이언트 디바이스 및 다중-에이전트 엔티티에 대한 클라이언트 디바이스 상에서 수립된다. 다중-에이전트 엔티티에 대해 등록된 1차 관리자 클라이언트 디바이스는 단-대-단 암호화된 메시지 스레드를 생성하기 위한 요청을 수신하기 위해 선택된다. 관리자 클라이언트 디바이스(405) 및 사용자 클라이언트 디바이스(605)는 각각의 클라이언트 디바이스(405, 605)가 클라이언트 디바이스들(405, 605) 사이에 전송된 메시지들을 암호화하고 복호화할 때 사용하기 위한 암호화 키들을 갖는 경우 단-대-단 암호화 관계를 수립한다. 메시지 스레드를 액세스할 때 에이전트 클라이언트 디바이스들에 권한을 부여하기 위해, 1차 관리자 클라이언트 디바이스(405)에 대한 보안 정보는 에이전트 매핑 리포지터리(415)에 등록된 에이전트들에 대한 에이전트 클라이언트 디바이스들 모두로 포워딩된다. 관리자 클라이언트 디바이스(405)는, 보안 정보가 수립되면, 메시지 스레드에 대한 보안 정보를 포함한 스레드 액세스 페이로드로서 그것을 에이전트 클라이언트 디바이스들로 전송한다. 스레드 액세스 페이로드는 에이전트 클라이언트 디바이스들의 각각으로 분배되며, 그에 의해 메시지 스레드에서 메시지들을 복호화하고 판독할 권한을 에이전트 클라이언트 디바이스들의 각각 상에서의 메시징 클라이언트들에 부여한다. 스레드 액세스 페이로드는 관리자 클라이언트 디바이스(405)와 에이전트 클라이언트 디바이스들 사이에서 단-대-단 암호화 기술들에 따라 암호화된다.
그룹 메시지 스레드 암호화
도 7은 단-대-단 암호화 통신 시스템(700)에 대한 블록도를 예시한다. 단-대-단 암호화 통신 시스템(700)은 다중-에이전트 메시징 시스템(100)을 포함할 수 있다. 단-대-단 암호화 통신 시스템(700)은, 사용자 클라이언트 디바이스와의 메시지 스레드를 액세스할 권한을 다수의 에이전트들에 부여하기 위해 사용될 수 있는 바와 같이, 단-대-단 암호화된 그룹 메시지들을 지원할 수 있다.
복수의 클라이언트 디바이스들(720)은 단-대-단 암호화 통신 시스템(700)의 부분으로서 동작하여, 메시징 시스템(750)을 통해 서로 메시지들을 송신할 수 있다. 클라이언트 디바이스들(720)은 하나 이상의 이동 디바이스들, 개인용 컴퓨터 디바이스들, 휴대용 컴퓨터 디바이스들, 데스크탑 컴퓨터 디바이스들, 태블릿 디바이스들, 스마트폰 디바이스들, 및/또는 임의의 다른 형태의 컴퓨터 디바이스들을 포함할 수 있다. 클라이언트 디바이스(720)의 각각은, 제한 없이, 소비자들, 에이전트, 및 관리자들을 포함할 수 있는 바와 같이, 메시징 시스템(750)의 특정한 사용자와 연관될 수 있다.
제 1 클라이언트 디바이스(720-1)는 메시징 시스템(750)을 통해 일-대-일 메시지(760)를 송신할 수 있다. 일-대-일 메시지(760)는 단일 전송자 클라이언트 디바이스로부터 단일 수신인 클라이언트 디바이스로 전송된 메시지를 포함할 수 있다. 단지 단일 수신인만이 특정되기 때문에 메시징 시스템(750)은 다수의 수신인들에 대한 일-대-일 메시지(760)의 팬-아웃(fan-out) 또는 복제를 수행하지 않을 수 있지만 대신에 수신인 클라이언트 디바이스(720-4)가 이용 가능할 때 일-대-일 메시지(760)를 그것의 수신인 클라이언트 디바이스(720-4)로 포워딩할 수 있다.
일-대-일 메시지(760)는 전송자 클라이언트 디바이스(720-1)와 수신인 클라이언트 디바이스(720-4) 사이에서의 송신을 위해 암호화될 수 있다. 일-대-일 메시지(760)는 공개/개인 키 관계를 사용하여 비대칭 암호화 키에 따라 암호화될 수 있다. 메시징 시스템(750)은 수신인 클라이언트 디바이스들에 대한 하나 이상의 공개 키들을 저장하며 그것을 수신인 클라이언트 디바이스들을 전송할 메시지들을 가진 하나 이상의 클라이언트 디바이스들로 분배하도록 동작할 수 있다. 수신인 클라이언트 디바이스(720-4)는 메시징 시스템(750)과의 공개 키를 저장할 수 있다. 메시징 시스템(750)은 일-대-일 메시지(760) 및 수신인 클라이언트 디바이스(720-4)를 위한 다른 메시지들을 암호화하는데 사용하기 위해 공개 키를 전송자 클라이언트 디바이스(720-1)로 제공할 수 있다. 수신인 클라이언트 디바이스(720-4)는 수신인 클라이언트 디바이스(720-4) 상에서 비밀로서, 분배된 공개 키에 대한 개인 키 상대물(private key counterpart)을 유지할 수 있다. 일-대-일 메시지(760)는 공개 키를 사용하여 암호화되며 그에 의해 일-대-일 메시지(760)를 복호화할 수 있는 메시징 시스템(750) 없이 메시징 시스템(750)을 통해 수신인 디바이스(720-4)로 송신될 수 있다.
복수의 전송자-구동 그룹 메시지들(770)은 메시징 시스템(750)을 사용하여 그룹 메시지들 - 하나 이상의 수신인으로 향해진 메시지들 - 을 전송하는 것에 대한 하나의 솔루션에 대응할 수 있다. 전송자 클라이언트 디바이스(720-2)는 수신인 클라이언트 디바이스들(720-4, 720-5, 및 720-6)의 각각에 대한 메시징 시스템(750)으로의 전송자-구동 그룹 메시지들(770)의 각각의 개개의 제출을 통해 전송자-구동 그룹 메시지를 수신인 클라이언트 디바이스들(720-4, 720-5, 및 720-6)의 각각으로 송신할 수 있다. 3개 이상의 수신인 클라이언트 디바이스들이 특정될 수 있다는 것이 이해될 것이다. 전송자-구동 그룹 메시지들(770)의 각각은, 복수의 수신인 클라이언트 디바이스들의 각각에 특정적인, 암호화 키를 사용하여 암호화될 수 있으며, 하나의 암호화 키는 복수의 수신인 클라이언트 디바이스들에 대응하는 복수의 암호화 키들로부터의 각각에 대한 것이다. 이것은 메시징 시스템(750)이 전송자-구동 그룹 메시지들(770) 중 임의의 것의 콘텐트들을 판독하는 것을 방지할 수 있다. 전송자-구동 그룹 메시지들(770)의 각각이 개별적으로 특정한 수신인 클라이언트 디바이스로 및 그것으로의 전달을 위해 어드레싱되기 때문에, 수신인 클라이언트 디바이스들(720-4, 720-5, 및 720-6)의 각각에 대한 공개 키는 메시징 시스템(750)에 의해 수신인 클라이언트 디바이스들(720-4, 720-5, 및 720-6)로부터 전송자 클라이언트 디바이스(720-2)로 포워딩될 수 있으며, 수신인 클라이언트 디바이스들(720-4, 720-5, 및 720-6)의 각각은 비밀로서 그것의 공유된 공개 키에 대응하는 개인 키를 유지하는 것에 의해 그것으로 송신된 특정한 전송자-구동 그룹 메시지를 복호화하는 것이 가능한 유일한 디바이스인 채로 있다.
그러나, 클라이언트 디바이스(720-2)에 의한 개개의 전송자-구동 그룹 메시지들(770)의 전송은, 결과로서, 수신인 클라이언트 디바이스들의 수의 배수로서 위로 스케일링한 전송자 클라이언트 디바이스(720-2)에 대한 데이터 연결을 통해 송신된 데이터의 양을 사용할 수 있다. 이것은 사용될 것을 초과하는 전송자 클라이언트 디바이스(720-2)에 대한 업로드 대역폭 및 메시징 시스템(750)에 대한 다운로드 대역폭의 상당한 낭비가 전송자 클라이언트 디바이스(720-2)에 의해 메시징 시스템(750)으로 송신될 그룹 메시지의 유일한 하나의 사본이었음을 수반할 수 있다.
재송신-구동 그룹 메시지(780)는 메시징 시스템(750)을 사용하여 그룹-메시지들을 전송하는 것에 대한 또 다른 해법에 대응할 수 있다. 전송자 클라이언트 디바이스(720-3)는 메시징 시스템(750)으로의 재송신-구동 그룹 메시지(780)의 단일 제출을 통해 재송신-구동 그룹 메시지(780)를 수신인 클라이언트 디바이스들(720-4, 720-5, 및 720-6)의 각각으로 송신할 수 있으며, 상기 메시징 시스템(750)은 수신인 클라이언트 디바이스들(720-4, 720-5, 및 720-6)의 각각으로의 재송신-구동 그룹 메시지(780)의 사본을 분배할 책임이 있다. 단일 재송신-구동 그룹 메시지(780)가 메시징 시스템(750)으로 제출되기 때문에, 재송신-구동 그룹 메시지(780)에 적용된 임의의 암호화는 각각의 수신인에 대해 동일할 것이다. 이와 같이, 수신인 클라이언트 디바이스들(720-4, 720-5, 및 720-6)의 각각은 수신인 클라이언트 디바이스들(720-4, 720-5, 및 720-6)의 모두로 알려진 공유된 암호화 키를 갖고 구성되어야 한다.
그러나, 일-대-일 메시지(760) 또는 전송자-구동 그룹 메시지들(770)과 달리, 전송자 클라이언트 디바이스(720-3)에 의한 개인 비대칭 키의 사용은 수신인 클라이언트 디바이스들(720-4, 720-5, 및 720-6)의 각각이 대응하는 개인 키를 가질 필요가 있다는 문제를 보인다. 대칭 또는 비대칭 암호화가 사용되는지에 관계없이, 수신인 클라이언트 디바이스들(720-4, 720-5, 및 720-6)의 각각은 동일한 재송신-구동 그룹 메시지(780)가 그것들 모두에 의해 복호화된다면 동일한 암호화 키를 가져야 한다. 그러나, 메시징 시스템(750)은 수신인 클라이언트 디바이스들(720-4, 720-5, 및 720-6)에 의해 공유된 암호화 키로의 액세스를 갖는 것이 방지되어야 한다. 이와 같이, 재송신-구동 그룹 메시지(780)를 복호화하기 위해 수신인 클라이언트 디바이스들(720-4, 720-5, 및 720-6) 사이에서 공유된 암호화 키는 그 자체가 수신인 클라이언트 디바이스들(720-4, 720-5, 및 720-6) 사이에서 공유될 때 암호화되어야 한다.
전송자 클라이언트 디바이스(720-3)는 그러므로 공유된 암호화 키를 수신인 클라이언트 디바이스들(720-4, 720-5, 및 720-6)로 송신하기 위해 일-대-일 암호화를 사용할 수 있다. 공유된 암호화 키는 클라이언트 디바이스(720-2)를 참조하여 논의된 바와 같이 전송자-구동 그룹 메시지들(770)과 유사한 복수의 전송자-구동 그룹 메시지로서 전송된 메시지에서 인코딩될 수 있다. 공유된 암호화 키는 그에 의해 공유된 암호화 키를 액세스할 수 있는 메시징 시스템(750) 없이 전송자 클라이언트 디바이스(720-3)로부터 수신인 클라이언트 디바이스들(720-4, 720-5, 및 720-6)로 송신될 수 있다. 전송자 클라이언트 디바이스(720-3)로부터 - 또는 공유된 암호화 키로 액세스하는 임의의 클라이언트 디바이스로부터 - 전송된, 재송신-구동 그룹 메시지(780)와 같은 메시지들은 그 후 공유된 암호화 키를 사용하여 암호화될 수 있으며, 전송자 클라이언트 디바이스들(720-3) 및 수신인 클라이언트 디바이스들(720-4, 720-5, 및 720-6) 중 임의의 것은 메시지들을 복호화할 수 있지만, 메시징 시스템(750)은 메시지들을 복호화할 수 없는 채로 있다. 대칭 암호화 키는 비대칭 개인/공개 키 쌍의 이익이 공유된 키가 단지 그것을 사용하여 암호화된 임의의 메시지들을 복호화하도록 인가된 디바이스들 간에 분배되는 경우 적절하지 않을 수 있으므로 공유된 암호화 키로서 사용될 수 있지만, 비대칭 암호화는 대칭 암호화보다 암호화하고 복호화하기 위해 보다 계산적인 리소스들을 사용할 수 있다.
도 8은 그룹 브로드캐스트를 인스턴스화하는 전송자 디바이스(820)의 실시예를 예시한다. 전송자 디바이스(820)는 메시징 애플리케이션(830)을 포함할 수 있다. 메시징 애플리케이션(830)은 메시징 구성요소(840), 보안 구성요소(850), 및 메시징 저장소(860)를 포함할 수 있다. 전송자 디바이스(820)는 다중-에이전트 엔티티와의 상호작용을 위해 사용자 클라이언트 디바이스(605)를 포함할 수 있다.
메시징 구성요소(840)는 전송자 디바이스에서 브로드캐스트 그룹 정의(870)를 수신하도록 동작할 수 있으며, 상기 브로드캐스트 그룹 정의(870)는 복수의 수신인 디바이스들(825)을 포함한 브로드캐스트 그룹을 정의한다. 몇몇 경우들에서, 브로드캐스트 그룹 정의(870)는 전송자 디바이스(820) 상에서 사용자 메시징 인터페이스로부터 수신될 수 있다. 메시징 애플리케이션(830)은 사용자 메시징 인터페이스를 전송자 디바이스(820)의 사용자로 제공할 수 있다. 사용자 메시징 인터페이스는 메시지의 수신인 또는 수신인들을 특정하며 개개의 또는 그룹 메시징 상호작용을 개시하거나 또는 그것에 응답할 권한을 전송자 디바이스(820)의 사용자에게 부여할 수 있다. 전송자 디바이스(820)의 사용자는 복수의 접촉들 또는 수신인 디바이스들(825)에 대응하는 다른 수신인 식별자들을 선택함으로써 브로드캐스트 그룹을 특정할 수 있다.
브로드캐스트 그룹 정의(870)는 다중-에이전트 엔티티에 대한 디폴트 에이전트들의 리스트일 수 있다. 다중-에이전트 엔티티에 대한 에이저트 클라이언트 디바이스들은 수신인 디바이스들(825)에 대응한다. 전송자 디바이스(820)의 사용자가 다중-에이전트 엔티티와 통신하기 위해 요청하는 경우, 전송자 디바이스(820)는 다중-에이전트 엔티티에 대한 디폴트 에이전트들을 위한 디폴트 에이전트 클라이언트 디바이스들의 리스트를 제공받을 수 있다. 다중-에이전트 엔티티에 대한 디폴트 에이전트 클라이언트 디바이스들의 리스트는 그 후 다중-에이전트 엔티티의 디폴트 에이전트들을 갖고 암호화된 그룹 메시징을 개시하기 위해 브로드캐스트 그룹 정의(870)로서 사용된다. 디폴트 에이전트 클라이언트 디바이스들의 각각은 유사하게 다른 디폴트 에이전트 클라이언트 디바이스들 및 사용자 클라이언트 디바이스를 포함한 브로드캐스트 그룹 정의를 제공받는다.
브로드캐스트 그룹 정의(870)는 부가적으로 또는 대안적으로 디폴트가 아닌 에이전트들에 대한 비-디폴트 에이전트 클라이언트 디바이스들을 포함할 수 있다. 그룹 메시지 스레드가 사용자와 다중-에이전트 엔티티 사이에서의 메시징의 개시 시 생성되는 경우에, 브로드캐스트 그룹 정의(870)는 단지 디폴트 에이전트들만을 포함할 수 있다. 그러나, 메시징 개시가 단일 디폴트 에이전트를 갖는 경우, 일-대-일 메시지 스레드가 처음에 생성될 수 있으며, 상기 그룹 메시지 스레드는 비-디폴트 에이전트가 메시지 스레드에 할당되는 것에 응답하여 생성된다. 일단 비-디폴트 에이전트가 할당되면, 그룹 메시지 스레드 생성이 개시되며, 그러므로 단일 디폴트 에이전트 및 하나 이상의 할당된 비-디폴트 에이전트들을 포함한다.
대안적인 경우에, 브로드캐스트 그룹은 수신인 디바이스들(825) 중 하나와 같은, 또 다른 클라이언트 디바이스의 사용자에 의해 정의될 수 있다. 전송자 디바이스(820)는 수신인 디바이스들(825) 중 하나와 같은, 또 다른 클라이언트 디바이스로부터 그룹 메시지들을 수신하였다. 전송자 디바이스(820)는 전송자 디바이스(820)의 사용자로 그룹 메시지를 제공하고 그룹으로의 송신을 위해 사용자로부터 그룹 메시지에 대한 응답을 수신하였다. 이와 같이, 몇몇 경우들에서, 브로드캐스트 그룹 정의(870)는 그것들이 포함되었거나 또는 그 외 또 다른 클라이언트 디바이스의 사용자에 의해 처음에 결정될 수 있는 그룹 메시지에 응답하는 사용자에 의해 특정될 수 있다.
일 실시예에서, 브로드캐스트 그룹은 메시징 시스템(750)에 의해 사용자 클라이언트 디바이스(605) 및 사용자 클라이언트 디바이스(605)와의 메시지 스레드를 액세스하도록 인가된 하나 이상의 에이전트 클라이언트 디바이스들을 포함하는 것으로 정의될 수 있다. 몇몇 경우들에서, 이것은 다중-에이전트 엔티티에 대한 모든 에이전트 클라이언트 디바이스를 포함할 수 있다. 메시징 시스템(750)은 에이전트 클라이언트 디바이스들의 리스트를 전송자 디바이스(820)로 제공할 수 있으며, 상기 전송자 디바이스(820)는 그 후 에이전트 클라이언트 디바이스들의 리스트에 기초하여 브로드캐스트 그룹 정의(870)를 인스턴스화한다. 브로드캐스트 그룹에서의 멤버십은 업데이트될 수 있으며, 상기 전송자 디바이스(820)는 그렇게 하도록 요청될 때 부가된 에이전트 클라이언트 디바이스들로 암호화 키들을 제공한다. 예를 들어, 수신인 디바이스는 비-디폴트 에이전트가 할당되거나 또는 그 외 사용자와의 메시지 스레드를 액세스하도록 인가되는 것에 응답하여 비-디폴트 에이전트 클라이언트 디바이스가 부가될 때 부가될 수 있다.
보안 구성요소(850)는 전송자 디바이스(820)에서 전송자 브로드캐스트 암호화 키(875)를 생성하도록 동작할 수 있다. 전송자 브로드캐스트 암호화 키(875)는 단-대-단 암호화 시스템(700)을 위한 미리 정의된 파라미터들 내에서 무작위로 생성될 수 있다. 예를 들어, 32바이트 키가 사용되는 경우에, 무작위의 32바이트 수가 생성된다. 몇몇 실시예들에서, 무작위로-생성된 키들은 전송자 브로드캐스트 암호화 키(875)로서의 사용 이전에 알려진 기술들에 따라 기준들 또는 테스팅의 대상이 될 수 있다. 전송자 브로드캐스트 암호화 키(875)는 대칭 암호화 키를 포함할 수 있다. 전송자 브로드캐스트 암호화 키(875)는 도 7을 참조하여 논의된 공유된 암호화 키에 대응할 수 있다. 보안 구성요소(850)는 브로드캐스트 그룹과의 미래 통신을 위한 검색을 위해 브로드캐스트 그룹과 관련하여 메시징 저장소(860)에 전송자 브로드캐스트 암호화 키(875)를 저장할 수 있다.
메시징 구성요소(840)는 브로드캐스트 개시 패키지를 생성하도록 동작할 수 있다. 브로드캐스트 개시 패키지는 전송자 브로드캐스트 암호화 키(875)를 포함할 수 있다. 몇몇 실시예들에서, 브로드캐스트 개시 패키지는 그룹 브로드캐스트 메시지를 포함할 수 있다. 메시지 구성요소(840)는 사용자 메시징 인터페이스를 통해 그룹 브로드캐스트 메시지를 수신할 수 있다. 그룹 브로드캐스트 메시지는 텍스트 세그먼트 또는 미디어 아이템 중 적어도 하나를 포함할 수 있다. 그룹 브로드캐스트 메시지는 브로드캐스트 그룹 정의(870)에 대응하는 브로드캐스트 그룹으로 어드레싱될 수 있다. 메시징 구성요소(840)는 사용자 메시징 인터페이스를 통해 그룹 브로드캐스트 메시지를 수신하는 것에 응답하여 브로드캐스트 개시 패키지를 생성할 수 있으며, 상기 브로드캐스트 개시 패키지는 그룹 브로드캐스트 메시지의 전달 및 미래 그룹 메시지들의 암호화 시 사용하기 위한 전송자 브로드캐스트 암호화 키(875)의 전달 양쪽 모두를 수행하기 위한 것이다.
메시징 구성요소(840)는 브로드캐스트 개시 패키지를 복수의 수신인 디바이스들(825)로 송신하도록 동작할 수 있으며, 여기에서 복수의 수신인 디바이스들(825)의 각각은 수신인-디바이스-특정 암호화 키에 따라 암호화된 브로드캐스트 개시 패키지를 송신받는다. 수신인 디바이스들(825)의 각각은 상이한 수신인-디바이스-특정 암호화 키와 연관될 수 있으며, 수신인-디바이스-특정 암호화 키들의 각각은 - 각각에 대해 하나씩 - 브로드캐스트 개시 패키지들(880)로서 수신인 디바이스들(825)의 각각으로의 전달을 위해 브로드캐스트 개시 패키지의 사본을 암호화하기 위해 사용된다. 복수의 수신인 디바이스들(825)의 각각에 대한 수신인-디바이스-특정 암호화 키들은 비대칭 암호화 키들을 포함할 수 있다. 브로드캐스트 개시 패키지는 메시징 시스템(750)을 통해 수신인 디바이스들(825)로 송신될 수 있다. 대안적으로, 복수의 수신인 디바이스들(825)의 각각에 대한 수신인-디바이스-특정 암호화 키들은 수신인-디바이스-특정 비대칭 암호화 키들을 포함할 수 있으며, 여기에서 수신인-디바이스-특정 대칭 암호화 키들은 수신인-디바이스-특정 비대칭 암호화 키들을 사용하여 수립된다.
메시징 구성요소(840)는 브로드캐스트 패키지(890)를 메시징 시스템(750)으로 송신하도록 동작할 수 있으며, 상기 브로드캐스트 패키지(890)는 브로드캐스트 그룹으로 어드레싱되고, 상기 브로드캐스트 패키지(890)는 전송자 브로드캐스트 암호화 키(875)에 따라 암호화된다. 전송자 디바이스(820)에 의해 송신되는 브로드캐스트 개시 패키지의 복수의 사본들에 비교하여 - 수신인 디바이스들(825)의 각각에 대해 하나씩 - 단지 단일 브로드캐스트 패키지(890)만이 송신될 수 있으며, 상기 메시징 시스템(750)은 수신인 디바이스들(825)로의 송신을 위해 브로드캐스트 패키지(890)를 복제한다.
전송자 브로드캐스트 암호화 키(875)는 브로드캐스트 그룹의 멤버들 사이에서 미래 그룹 브로드캐스트들을 위해 사용될 수 있으며, 이것은 전송자 디바이스(820) 및 수신인 디바이스들(825)을 포함한다. 몇몇 실시예들에서, 일단 특정한 사용자 및 클라이언트 디바이스가 특정한 메시징 그룹과의 그룹 메시징 대화를 개시하면, 브로드캐스트 그룹의 멤버들 모두는 공유된 브로드캐스트 암호화 키(875)를 사용할 수 있다. 다른 실시예들에서, 브로드캐스트 그룹의 각각의 멤버는 그것이 여기에서 설명된 기술들을 사용하여 브로드캐스트 그룹의 다른 멤버들로 분배하는 그 자신의 브로드캐스트 암호화 키를 사용할 수 있다.
몇몇 실시예들에서, 보안 구성요소(850)는 암호화 키 진행 함수에 따라 전송자 브로드캐스트 암호화 키(875)를 진행시킬 수 있다. 암호화 키 진행 함수는 브로드캐스트 패키지의 각각의 송신 후 암호화 키 진행 해시의 점진적인 적용을 포함할 수 있다. 해시 함수는 함수로의 입력이, 해시 함수로의 출력으로부터 도출될 수 없는 - 또는, 적어도 비현실적인 계산 전력 및 시간 없이 도출될 수 없는 - 1-방향 수학 변환을 정의할 수 있다. 해시 함수는 다음 브로드캐스트 패키지에 대한 전송자 브로드캐스트 암호화 키(875)를 결정하기 위해 하나의 브로드캐스트 패키지에 대한 현재 전송자 브로드캐스트 암호화 키(875)에 적용될 수 있다. 그 결과, 전송자 브로드캐스트 암호화 키(875)의 반복이 특정한 때에 밝혀진다면, 상기 시간을 넘어 전송된 브로드캐스트 패키지들만이 복호화될 수 있으며, 이전 브로드캐스트 패키지들은 밝혀진 키로부터 도출될 수 없는 전송자 브로드캐스트 암호화 키의 반복들을 사용한다. 이와 같이, 그것의 개시 후 그룹 메시지 스레드에 부가된 에이전트 클라이언트 디바이스들은 그것의 전체에 대해 그룹 메시지 스레드에 있었던 에이전트 클라이언트 디바이스에 의해 메시지 스레드에 대한 이력을 제공받을 수 있다.
메시징 시스템(750)은 메시징 브로드캐스트 그룹들의 레지스트리를 유지할 수 있다. 메시징 구성요소(840)는 그러므로 메시징 시스템(750)을 가진 수신인 디바이스들(825)로 브로드캐스트 패키지(790)를 어드레싱할 수 있도록 브로드캐스트 패키지(890)의 송신 이전에 메시징 시스템(750)에 브로드캐스트 그룹을 등록할 수 있다. 메시징 구성요소(840)는 브로드캐스트 그룹 등록 요청을 메시징 시스템(750)으로 송신하며 이에 응답하여 메시징 시스템(750)으로부터 그룹 식별자를 수신할 수 있고, 상기 그룹 식별자는 메시징 시스템(750)을 가진 브로드캐스트 그룹을 식별한다. 수신인 디바이스들(825) 및/또는 수신인 디바이스들(825)의 사용자들의 각각은 식별자와 연관될 수 있으며, 상기 브로드캐스트 그룹 등록 요청은 그룹에서의 포함을 위해 수신인 디바이스들(825)을 식별하기 위해 수신인 디바이스들(825)에 대한 식별자들을 나열한다. 이러한 그룹 식별자는, 브로드캐스트 그룹의 다른 멤버들로 메시지들을 어드레싱하기 위해, 전송자 디바이스(820) 및 수신인 디바이스들(825) 모두를 포함한, 브로드캐스트 그룹에서의 디바이스들 중 임의의 것에 의한 사용을 위해 이용 가능할 수 있다. 메시징 구성요소(840)는 수신된 그룹 식별자를 사용하여 브로드캐스트 그룹으로 브로드캐스트 패키지(890)를 어드레싱할 수 있다. 메시징 구성요소(840)는 브로드캐스트 그룹과의 통신을 위해 수신인 디바이스들(825)을 구성하도록 브로드캐스트 개시 패키지에 그룹 식별자를 포함할 수 있다. 브로드캐스트 그룹이 처음에 브로드캐스트 그룹에서의 또 다른 디바이스에 의해 생성된 경우, 그룹 식별자는 대신에 수신인 디바이스들(825) 중 하나와 같은, 브로드캐스트 그룹에서의 또 다른 클라이언트 디바이스에 의해 전송된 브로드캐스트 개시 패키지에서의 전송자 디바이스(820)에 의해 수신될 수 있다.
메시징 구성요소(840)는 사용자 메시징 인터페이스로부터 그룹 멤버 추가 요청을 수신하도록 동작할 수 있다. 대안적으로, 메시징 구성요소(840)는 메시징 시스템(750)으로부터 그룹 멤버 추가 통지를 수신할 수 있다. 그룹 멤버 추가 요청 또는 그룹 멤버 추가 통지는 브로드캐스트 그룹에 부가될 부가적인 수신인 디바이스에 대응할 수 있다. 사용자 메시징 인터페이스로부터 수신된 바와 같이, 그룹 멤버 추가 요청은 브로드캐스트 그룹에 또 다른 사용자의 디바이스를 포함하기 위해 전송자 디바이스(820)의 사용자로부터의 요청을 포함할 수 있다. 메시징 시스템(750)으로부터 수신된 바와 같이, 그룹 멤버 추가 통지는 브로드캐스트 그룹에 또 다른 사용자의 디바이스를 포함하기 위해 브로드캐스트 그룹에서 또 다른 디바이스의 사용자로부터의 요청을 포함할 수 있다.
메시징 구성요소(840)는, 브로드캐스트 개시 패키지와 유사할 수 있는, 부가적인 멤버 브로드캐스트 개시 패키지를 생성하도록 동작할 수 있다. 부가적인 멤버 브로드캐스트 개시 패키지는 전송자 브로드캐스트 암호화 키(875)를 포함할 수 있다. 암호화 키 진행이 사용되는 경우에, 전송자 브로드캐스트 암호화 키(875)는 암호화 키 진행에서의 상기 포인트에 도달한 전송자 브로드캐스트 암호화 키(875)의 반복을 포함함으로써 포함될 수 있다. 이와 같이, 브로드캐스트 그룹의 부가적인 멤버는 부가적인 멤버 브로드캐스트 개시 패키지에 포함된 임의의 메시지 및 브로드캐스트 그룹으로 전송된 임의의 미래 메시지를 판독할 수 있도록 할 것이지만, 브로드캐스트 그룹으로 전송되고 전송자 브로드캐스트 암호화 키(875)의 이전 반복들로 암호화된 이전 메시지들을 소급하여 복호화할 수 없을 것이다.
메시징 구성요소(840)는 부가적인 멤버 브로드캐스트 개시 패키지를 부가적인 수신인 디바이스로 송신하도록 동작할 수 있으며, 여기에서 부가적인 멤버 브로드캐스트 개시 패키지는 부가적인-멤버-수신인-디바이스-특정 암호화 키에 따라 수신인 디바이스로의 송신을 위해 암호화된다. 부가적인-멤버-수신인-디바이스-특정 암호화 키는 구체적으로, 수신인 디바이스들(825)을 위해 사용된 수신인-디바이스-특정 암호화 키와 유사한, 부가적인 수신인 디바이스와 연관될 수 있다. 부가적인-멤버-수신인-디바이스-특정 암호화 키는 메시징 시스템(750)으로부터 전송자 디바이스(820)에 의해 수신될 수 있다. 부가적인-멤버-수신인-디바이스-특정 암호화 키는 비대칭 암호화 키 또는 대칭 암호화 키를 포함할 수 있다.
메시징 구성요소(840)는 사용자 메시징 인터페이스를 통해 부가적인 그룹 브로드캐스트 메시지를 수신할 수 있다. 전송자 디바이스(820)는 전송자 디바이스(820)의 사용자가 사실상 메시지를 브로드캐스트 그룹으로 전송할 때까지 전송자 브로드캐스트 암호화 키(875)를 부가적인 수신인 디바이스로 제공하는 것을 억제할 수 있다. 부가적인 그룹 브로드캐스트 메시지는 그러므로 부가적인 수신인 디바이스를 포함한 브로드캐스트 그룹으로 어드레싱된 텍스트 세그먼트 또는 미디어 아이템 중 적어도 하나를 포함할 수 있으며, 상기 부가적인 멤버 브로드캐스트 개시 패키지는 부가적인 그룹 브로드캐스트 메시지를 포함하고, 상기 부가적인 멤버 브로드캐스트 개시 패키지는 사용자 메시징 인터페이스를 통해 부가적인 그룹 브로드캐스트 메시지를 수신하는 것에 응답하여 생성된다.
메시징 구성요소(840)는, 전송자 디바이스(820)로부터 이러한 브로드캐스트 그룹에 대한 브로드캐스트 메시지를 복호화하도록 부가적인 수신인 디바이스를 구성하는 부가적인 멤버 브로드캐스트 개시 패키지를 사용하여, 부가적인 수신인 디바이스의 부가 이래, 이러한 부가적인 그룹 브로드캐스트 메시지, 즉 전송자 디바이스(820)에 의한 제 1 메시지 브로드캐스트를 브로드캐스트 그룹으로 송신할 수 있다. 메시징 구성요소(840)는 그에 의해 부가적인 그룹 브로드캐스트 메시지를 전달하는 것과 동일한 패키지를 사용하여 전송자 디바이스(820)로부터 미래 브로드캐스트 패키지들을 수신하도록 부가적인 수신인 디바이스를 구성할 수 있다. 브로드캐스트 그룹의 다른 멤버들은 그것들이 이미 전송자 브로드캐스트 암호화 키(875)를 사용하여 이를 복호화하도록 구성되므로 브로드캐스트 패키지를 통해 부가적인 그룹 브로드캐스트 메시지를 수신할 수 있다. 다수의 부가적인 멤버들이 브로드캐스트 그룹에 부가되는 경우에 상기 다수의 부가적인 멤버 브로드캐스트 개시 패키지들은 다수의 부가적인 멤버들과 연관된 다수의 부가적인 수신인 디바이스들로 전송될 수 있으며, 다수의 부가적인 멤버 브로드캐스트 개시 패키지들의 각각은 다수의 부가적인 수신인 디바이스들의 각각에 특정적인 암호화 키들에 따라 암호화된다는 것이 이해될 것이다.
멤버들은 브로드캐스트 그룹으로부터 제거될 뿐만 아니라 부가될 수 있다. 메시징 구성요소(840)는 사용자 메시징 인터페이스로부터 그룹 멤버 제거 요청을 수신할 수 있다. 대안적으로, 메시징 구성요소(840)는 메시징 시스템(750)으로부터 그룹 멤버 제거 통지를 수신할 수 있으며, 상기 그룹 멤버 제거 통지는 브로드캐스트 그룹의 하나 이상의 멤버들을 제거하는 브로드캐스트 그룹에서 또 다른 클라이언트 디바이스에서 비롯된다. 그룹 멤버 제거 요청은, 제한 없이, 관리자 클라이언트 디바이스(405)가 메시지 스레드를 액세스하는 것으로부터 에이전트 클라이언트 디바이스를 인가 해제하는 것에 의해 수행될 수 있다. 이것은, 예를 들어, 에이전트가 다중-에이전트 엔티티로부터 제거되는 경우 수행될 수 있다. 그러나, 그것은 또한 에이전트가 간단히 사용자와의 메시지 스레드로부터 할당 해제되는 경우에 수행될 수 있다.
불운하게도, 제거된 클라이언트 디바이스가 전송자 브로드캐스트 암호화 키(875)를 사용하여 암호화된 전송자 디바이스(820)에 의해 브로드캐스트 그룹으로 전송된 브로드캐스트 패키지로 액세스한다면, 그것은 브로드캐스트 패키지를 복호화할 수 있을 것이다. 암호화 진행이 사용되는 경우에도, 제거된 클라이언트 디바이스들은 계속해서 암호화 키를 진행시키고 브로드캐스트 패키지들을 복호화할 수 있다. 이와 같이, 전송자 디바이스(820)는 제거된 클라이언트 디바이스들이 임의의 미래 브로드캐스트 패키지들을 복호화하는 것을 방지하도록 전송자 브로드캐스트 암호화 키(875)와는 별개인 대체 전송자 브로드캐스트 암호화 키의 사용 및 전송자 브로드캐스트 암호화 키(875)의 임의의 진행을 통해 그것의 그룹 통신을 리셋할 수 있다. 이와 같이, 보안 구성요소(850)는 수신된 그룹 멤버 제거 요청 또는 수신된 그룹 멤버 제거 통지에 응답하여 대체 전송자 브로드캐스트 암호화 키로 전송자 브로드캐스트 암호화 키(875)를 대체할 수 있다.
브로드캐스트 개시 패키지는 암호화된 콘텐트 부분 및 암호화되지 않은 엔벨로프 부분을 포함할 수 있다. 암호화되지 않은 엔벨로프 부분은 브로드캐스트 개시 패키지의 수신인을 식별하는 어드레싱 정보를 포함할 수 있다. 수신인 디바이스에 대한 어드레싱 정보는 수신인 디바이스 및/또는 수신인 디바이스의 사용자와 연관된 사용자 식별자를 포함할 수 있다. 암호화되지 않은 엔벨로프 부분은 메시징 시스템(750)에 대한 전송자 디바이스(820) 및/또는 전송자 디바이스(820)의 사용자를 식별하는 정보를 포함할 수 있다. 암호화되지 않은 엔벨로프 부분은 메시징 시스템(750)을 사용하기 위해 전송자 디바이스(820)를 인가하는 정보를 포함할 수 있다. 몇몇 실시예들에서, 메시징 시스템(750)을 사용하도록 전송자 디바이스(820)를 인가하는 정보는 개인 키를 사용하여 브로드캐스트 개시 패키지의 적어도 몇몇 부분을 암호화함으로써, 전송자 디바이스(820)를 인증하기 위한 크리덴셜들에 따라 암호화될 수 있고, 상기 대응하는 공개 키는 전송자 디바이스(820)를 식별하기 위해 메시징 시스템(750)에 의해 저장된다. 암호화된 콘텐트 부분은 만약에 있다면, 전송자 브로드캐스트 암호화 키(875) 및 그룹 브로드캐스트 메시지를 포함할 수 있다. 암호화된 콘텐트 부분은 각각의 수신인 디바이스에 대한 수신인-디바이스-특정 암호화 키에 따라 암호화될 수 있다.
브로드캐스트 패키지(890)는 암호화된 콘텐트 부분 및 암호화되지 않은 엔벨로프 부분을 포함할 수 있다. 암호화되지 않은 엔벨로프 부분은 브로드캐스트 패키지(890)를 수신하기 위해 브로드캐스트 그룹을 식별하는 어드레싱 정보를 포함할 수 있다. 수신인 디바이스에 대한 어드레싱 정보는 브로드캐스트 그룹과 연관된 그룹 식별자를 포함할 수 있다. 암호화되지 않은 엔벨로프 부분은 메시징 시스템(750)에 대한 전송자 디바이스(820) 및/또는 전송자 디바이스(820)의 사용자를 식별하는 정보를 포함할 수 있다. 암호화되지 않은 엔벨로프 부분은 메시징 시스템(750)을 사용하도록 전송자 디바이스(820)를 인가하는 정보를 포함할 수 있다. 몇몇 실시예들에서, 메시징 시스템(750)을 사용하도록 전송자 디바이스(820)를 인가하는 정보는, 그것의 대응하는 공개 키가 전송자 디바이스(820)를 식별하기 위해 메시징 시스템(750)에 의해 저장되는, 개인 키를 사용하여 브로드캐스트 개시 패키지의 적어도 몇몇 부분을 암호화하는 것에 의해서와 같이, 전송자 디바이스(820)를 인증하기 위해 크리덴셜들에 따라 암호화될 수 있다. 암호화된 콘텐트 부분은 브로드캐스트 그룹으로 전송될 브로드캐스트 메시지를 포함할 수 있다.
브로드캐스트 개시 패키지 또는 브로드캐스트 패키지(890)의 암호화되지 않은 부분은 송신 동안 메시징 시스템(750)에 의해 수정될 수 있다는 것이 이해될 것이다. 정보는 단-대-단 암호화된 통신의 활동들을 개선하기 위해 브로드캐스트 개시 패키지 및 브로드캐스트 패키지(890)의 저장 및 송신 시 부가되고, 제거되거나, 또는 수정될 수 있다.
도 9는 그룹 브로드캐스트를 보조하는 메시징 시스템(750)의 실시예를 예시한다. 메시징 시스템(750)은 도 2를 참조하여 설명된 바와 같이, 키 서버들(243), 챗 서버들(215), 및 그룹 서버들(244)을 포함할 수 있다.
수신인 디바이스(825-1)는 수신인 공개 키 업로드(910)를 메시징 시스템(750)의 키 서버들(243)로 제출할 수 있다. 수신인 공개 키 업로드(910)는 다른 클라이언트로의 분배를 위해 공개 키들을 갖고 메시징 시스템(750)을 구성하기 위해 메시징 애플리케이션(830)의 초기 구성 동안 수행될 수 있다. 수신인 공개 키 업로드(910)는 수신인 디바이스(825-1)를 접촉하려고 고려하는 클라이언트 디바이스들로의 분배를 위해 메시징 시스템(750)에 이용 가능한 공개 키들의 풀을 리프레싱하기 위해 가끔 수행될 수 있다. 수신인 공개 키 업로드(910)는 수신인 디바이스(825-1)가 그것이 수신인 디바이스(825-1) 상에서의 리포지터리에 비밀을 유지하는 대응하는 개인 키를 갖는 복수의 공개 키들을 포함할 수 있다. 이것은 일반적으로 다른 클라이언트 디바이스들이 보안 통신에 참여하는 것을 돕도록 메시징 시스템(750)에 권한을 부여하기 위해 메시징 시스템(750)을 사용하여 모든 클라이언트 디바이스들에 의해 수행될 수 있다. 키 서버들(243)은 키 저장소에 수신인 공개 키 업로드(910)에서 수신된 복수의 공개 키들을 저장할 수 있다. 수신인 디바이스(825-1)는 공개 키들 중 어떤 것이 수신인 디바이스(825-1)로 전송된 메시지를 암호화하기 위해 전송자 디바이스에 의해 사용되었는지를 식별할 때 사용하기 위한 공개 키 식별자와 수신인 공개 키 업로드(910)에서의 복수의 공개 키들의 각각을 연관시킬 수 있다.
전송자 디바이스(820)는 공개 키 요청(910)을 키 서버들(243)로 송신할 수 있다. 공개 키 요청(910)은 공개 키가 요청되는 수신인 디바이스(825-1)를 식별할 수 있다. 키 서버들(243)은 공개 키 요청(910)에 응답하여 수신인 공개 키 업로드(910)로부터 전송자 디바이스(820)로 특정한 수신인 공개 키(920)를 반환할 수 있다. 키 서버들(243)로의 수신인 공개 키 업로드(910)의 제출 및 키 서버들(243)로부터의 수신인 공개 키(920)의 검색은 복수의 키 서버들(243)의 모두의 직접적인 수반보다는 복수의 키 서버들(243)의 특정한 하나 이상의 키 서버들과의 통신을 포함할 수 있다는 것이 이해될 것이다.
전송자 디바이스(820)는 전송자 브로드캐스트 암호화 키(875)를 포함한 브로드캐스트 개시 패키지(880-1)를 챗 서버들(215)로 송신할 수 있다. 챗 서버(215)는 구체적으로 일-대-일 메시징 통신들로 향해질 수 있으며 그룹 통신들의 팬-아웃을 수행하지 않을 수 있다. 브로드캐스트 개시 패키지(880-1)는 공개 키 요청(910)에 응답하여 키 서버들(243)로부터 수신된 수신인 공개 키(920)를 사용하여 암호화될 수 있다. 브로드캐스트 개시 패키지(880-1)가 수신될 때 수신인 디바이스(825-1)가 온라인이면, 메시징 시스템(750)은 즉시 브로드캐스트 개시 패키지(880-1)를 수신인 디바이스(825-1)로 포워딩할 수 있다. 몇몇 실시예들에서, 브로드캐스트 개시 패키지(880-1)는 챗 서버들(215)에 의해 차례로 프로세싱될 메시지 큐를 통해 여전히 이동할 수 있다. 브로드캐스트 개시 패키지(880-1)가 챗 서버들(215)에 의해 수신될 때 수신인 디바이스(825-1)가 오프라인이면, 챗 서버들(215)은 수신인 디바이스(825-1)가 이용 가능할 때까지 브로드캐스트 개시 패키지(880-1)를 저장하며 일단 그것이 이용 가능해지면 브로드캐스트 개시 패키지(880-1)를 수신인 디바이스(825-1)로 송신할 수 있다. 챗 서버들(215)은 브로드캐스트 개시 패키지들(880)이 포함된 전송자 브로드캐스트 암호화 키(275)의 팬-아웃을 수행하기 위해 메시징 시스템(750)을 사용하기보다는 일-대-일 통신들로서 전송되는 것으로 인해 브로드캐스트 개시 패키지들(880)의 송신을 위해 사용될 수 있다. 챗 서버들(215)로의 브로드캐스트 개시 패키지(880)의 제출 및 챗 서버들(215)로부터의 브로드캐스트 개시 패키지들(880)의 송신은 복수의 챗 서버들(215)의 모두의 직접적인 수반보다는 복수의 챗 서버들(215)의 특정한 하나 이상의 챗 서버들과의 통신을 포함할 수 있다는 것이 이해될 것이다.
그룹 서버들(244)은 전송자 디바이스(820)로부터 브로드캐스트 패키지(890)를 수신할 수 있다. 몇몇 경우들에서, 전송자 디바이스(820) 또는 또 다른 클라이언트 디바이스는, 수신인 디바이스들 또는 사용자 계정들에 대한 식별자들을 가진 수신인 디바이스들 또는 사용자 계정들의 리스트를 특정하는 것에 의해서와 같이, 브로드캐스트 패키지(890)의 송신 이전에 그룹 서버들(244)로 브로드캐스트 그룹을 등록할 수 있다. 몇몇 경우들에서, 전송자 디바이스(820)는 브로드캐스트 패키지(890)를 송신하기 위해 사용된 동일한 네트워크 송신에 브로드캐스트 그룹을 등록하기 위해 브로드캐스트 패키지(890)에서 수신인 디바이스들 또는 사용자 계정들의 리스트를 포함할 수 있다. 그룹 서버들(244)은 브로드캐스트 그룹에 그룹 식별자를 할당하며 할당된 그룹 식별자를 사용하여 브로드캐스트 그룹으로 메시지들을 어드레싱할 권한을 전송자 디바이스(820) 및 수신인 디바이스들(825)에 부여할 수 있다.
그룹 서버들(244)은, 브로드캐스트 패키지(890)의 수신을 위해, 수신인 디바이스(825-1)를 포함한, 수신인 디바이스들(825)을 결정할 수 있다. 그룹 서버들(244)은 현재 온라인인 - 잠재적으로 큐잉에 대한 지연을 가진 - 수신인 디바이스들(825) 중 임의의 것으로 브로드캐스트 패키지(890)를 송신할 수 있으며 오프라인인 수신인 디바이스들(825) 중 임의의 것으로의 송신을 위해 브로드캐스트 패키지(890)를 저장하여, 그것들이 온라인이 되면 브로드캐스트 패키지(890)를 오프라인 수신인 디바이스들로 송신할 수 있다. 그룹 서버들(244)로의 브로드캐스트 패키지(890)의 제출 및 그룹 서버들(244)로부터의 브로드캐스트 패키지(890)의 송신은 복수의 그룹 서버들(244)의 모두의 직접적인 수반보다는 복수의 그룹 서버들(244)의 특정한 하나 이상의 그룹 서버들과의 통신을 포함할 수 있다는 것이 이해될 것이다.
전송자 디바이스(820)로부터의 브로드캐스트 패키지(890)가 에이전트들의 리스트로 어드레싱되는 경우에, 그룹 서버들(244)은 에이전트 매핑 리포지터리(415)에서 다중-에이전트 엔티티에 대한 에이전트들의 리스트에 대하여 에이전트들의 리스트를 체크할 수 있다. 브로드캐스트 패키지(890)에서의 에이전트들의 리스트는 나열된 에이전트들이 여전히 다중-에이전트 엔티티와 연관되고 여전히 사용자와의 메시지 스레드에 할당되는지 양쪽 모두를 확인하기 위해 체크될 수 있다. 다중-에이전트 엔티티와 연관되지 않거나 또는 메시지 스레드에 할당되지 않은 임의의 나열된 에이전트는 브로드캐스트 패키지(890)를 연관되지 않은 또는 할당되지 않은 에이전트를 위한 에이전트 클라이언트 디바이스로 포워딩하는 것을 억제함으로써 브로드캐스트 패키지(890)를 수신하는 것이 방지된다. 이러한 에이전트 연관의 제거 또는 에이전트 할당 해제는 관리자 클라이언트 디바이스(405)에 의해 요청되며 에이전트 매핑 리포지터리(415)에 기록된다. 이러한 제거 또는 할당 해제가 수행될 때, 전송자 클라이언트 디바이스(820)는 그것이 다중-에이전트 엔티티와 통신할 때 어드레싱해야 하는 수신인들의 리스트를 업데이트하도록 통지받을 수 있다.
도 10은 그룹 브로드캐스트를 수신한 수신인 디바이스(825-1)의 실시예를 예시한다. 수신인 디바이스(825-1)는 복수의 수신인 디바이스들(825)의 모두의 구성 및 동작의 대표적인 예로서 작용할 수 있다.
수신인 디바이스(825-1)는 전송자 디바이스(820)에 의해 사용된 동일한 메시징 애플리케이션(830)의 인스턴스를 실행할 수 있다. 다른 실시예들에서, 메시징 시스템(750)이, 제 3 자 클라이언트들, 다중-플랫폼 메시징 클라이언트들, 및 대안적인 메시징 클라이언트들의 사용을 위한 다른 기술들과 같은, 다수의 메시징 클라이언트들의 사용을 지원하는 경우와 같은, 대안적인 메시징 애플리케이션이 사용될 수 있다. 수신인 디바이스들(825-1) 상에서의 메시징 클라이언트(830)는 메시징 구성요소(840) 및 보안 구성요소(850)를 포함할 수 있다.
메시징 구성요소(840)는 수신인 디바이스(825-1)에서 전송자 디바이스(820)로부터 브로드캐스트 개시 패키지(880-1)를 수신하도록 동작할 수 있다. 브로드캐스트 개시 패키지(880-1)는 수신인 디바이스(825-1)에 특정된 수신인-디바이스-특정 암호화 키에 따라 암호화될 수 있다. 전송자 디바이스(820)는 전송자 식별자와 연관될 수 있으며, 상기 전송자 식별자는 전송자 디바이스(820)를 식별하기 위해 브로드캐스트 개시 패키지(880-1)에서 수신된다.
메시징 구성요소(840)는 브로드캐스트 개시 패키지(880-1)로부터 전송자 브로드캐스트 암호화 키(875)를 추출하도록 동작할 수 있으며, 상기 전송자 브로드캐스트 암호화 키(875)는 메시징 시스템(750)을 갖고 브로드캐스트 그룹으로의 송신을 위해 메시지들을 암호화할 때 전송자 디바이스(820)에 의한 사용을 위한 것이다. 메시징 구성요소(840)는 브로드캐스트 개시 패키지(880-1)로부터 그룹 식별자를 추출할 수 있으며, 상기 그룹 식별자는 메시징 시스템(750)으로 브로드캐스트 그룹을 식별한다.
보안 구성요소(850)는 전송자 식별자 및 브로드캐스트 그룹 식별자와 관련하여 전송자 브로드캐스트 암호화 키(875)를 메시징 저장소(860)에 저장하도록 동작할 수 있다. 메시징 저장소(860)는 수신인 디바이스(825-1)에 대한 메시징 이력을 저장할 수 있다. 메시징 저장소(860)는 그러므로 브로드캐스트 그룹에 대한 그룹 대화를 위한 메시징 이력을 저장할 수 있다. 보안 구성요소(850)는 브로드캐스트 그룹을 위한 그룹 대화에 대한 메시징 이력과 관련하여 메시징 저장소(860)에 전송자 브로드캐스트 암호화 키(875)를 저장할 수 있다. 보안 구성요소(850)는 메시지를 브로드캐스트 그룹으로 송신한 브로드캐스트 그룹의 각각의 멤버에 대한 전송자 브로드캐스트 암호화 키를 저장할 수 있다. 보안 구성요소(850)는 단-대-단 암호화 통신 시스템(700)이 일단 멤버가 브로드캐스트 그룹으로 브로드캐스트하려고 시도한다면 전송자 브로드캐스트 암호화 키들을 교환하기 위해 네트워크 대역폭만을 사용할 수 있으므로 아직 메시지를 송신하지 않은 브로드캐스트 그룹의 이들 멤버들에 대한 전송자 브로드캐스트 암호화 키를 저장하지 않을 수 있다.
메시징 구성요소(840)는 재송신 서버로부터 브로드캐스트 패키지(890)를 수신하도록 동작할 수 있으며, 상기 브로드캐스트 패키지는 전송자 식별자 및 그룹 식별자와 연관된다. 수신인 디바이스(825-1) 상에서의 보안 구성요소(850)는 전송자 식별자 및 그룹 식별자에 기초하여 메시징 저장소(860)로부터 전송자 브로드캐스트 암호화 키(875)를 검색할 수 있다. 메시징 구성요소(840)는 메시징 저장소(860)로부터 검색된 전송자 브로드캐스트 암호화 키(875)를 사용하여 브로드캐스트 패키지(890)를 복호화할 수 있다.
도 11a는 메시지 스레드에 대한 다중-에이전트 라벨링을 가진 포워딩-기반 논리 흐름(1100)의 실시예를 예시한다.
사용자 클라이언트 디바이스(605)는 다중-에이전트 엔티티와의 메시징 개시(1101)를 수행할 수 있다. 메시징 개시(1101)는 다중-에이전트 엔티티와의 메시징에 참여하기 위한 요청을 포함한다. 사용자 클라이언트 디바이스(605)는, 다중-에이전트 엔티티에 대한 메시징 식별자를 특정하는 것에 의해서와 같이, 사용자가 관계를 맺고 싶어하는 다중-에이전트 엔티티를 메시징 서버(410)에 대해 식별한다. 사용자 클라이언트 디바이스(605)는 다중-에이전트 엔티티에 대해 디폴트 에이전트 클라이언트 디바이스(1105)에 대한 디폴트 클라이언트 디바이스 식별자를 수신할 수 있다. 사용자 클라이언트 디바이스(605)는 메시징 개시(110)의 부분으로서 다중-에이전트 엔티티에 대한 이름을 추가로 수신할 수 있으며, 상기 다중-에이저트 엔티티에 대한 이름은 디폴트 에이전트 클라이언트 디바이스(1105)와의 메시지 스레드를 라벨링하기 위해 사용된다. 다중-에이전트 엔티티에 대한 이름은 또한 다중-에이전트 엔티티에 대한 에이전트로부터 사용자 클라이언트 디바이스(605)에서 수신된 개개의 메시지들을 라벨링하기 위해 사용될 수 있다.
대안적인 시나리오에서, 메시징 개시(1101)는, 디폴트 에이전트 클라이언트 디바이스(1105)와 같은, 에이전트 클라이언트 디바이스에 의해 수행될 수 있다. 메시징 개시(1101)는, 설명된 바와 같이, 그러나 일-대-일 암호화의 수립 시 디폴트 에이전트 클라이언트 디바이스(1105)로서 요청 에이전트 클라이언트 디바이스를 갖고, 수행될 수 있다. 몇몇 실시예들에서, 단지 관리자 클라이언트 디바이스들만이 사용자와의 메시징을 개시할 수 있다.
사용자 클라이언트 디바이스(605)는 그 후 디폴트 에이전트 클라이언트 디바이스(1105)와 메시징 서버(410)를 통해 암호화 개시(1103)를 수행한다. 암호화 개시(1103)는 암호화 키들의 교환을 통해 디폴트 에이전트 클라이언트 디바이스(1105)와 일-대-일 단-대-단 암호화 통신 채널을 수립한다.
사용자 클라이언트 디바이스(605) 및 디폴트 에이전트 클라이언트 디바이스(1105)는 그 후 암호화 개시(1103)에서 암호화 키 교환에 의해 수립된 일-대-일 단-대-단 암호화 통신 채널을 통해 초기 메시지 교환(1104)에 참여할 수 있다.
디폴트 에이전트 클라이언트 디바이스(1105)는 그 후 에이전트 재할당(1106)을 수행할 수 있다. 에이전트 재할당(1106)은 또 다른 에이전트 클라이언트 디바이스(505)가 메시지 교환에 포함되어야 함을 메시징 서버(410)에 지시한다. 에이전트 재할당(1106)은 사용자 클라이언트 디바이스(1107)와의 그룹 암호화 개시(1107)를 개시한다.
사용자 클라이언트 디바이스(605), 디폴트 에이전트 클라이언트 디바이스(1105), 및 다른 에이전트 클라이언트 디바이스(505)는 에이전트 재할당(1106)에 응답하여 그룹 암호화 개시(1107)를 수행한다. 이러한 그룹 암호화 개시(1107)는 사용자 클라이언트 디바이스(605), 디폴트 에이전트 클라이언트 디바이스(1105), 및 다른 에이전트 클라이언트 디바이스(505) 사이에서 그룹 메시지 스레드에서의 메시지들의 포워딩을 위해 제공한다.
에이전트 클라이언트 디바이스(505)는 에이전트 재할당(1106)에 대해 알고 있다. 이것은 에이전트가 이제 사용자 클라이언트 디바이스(605)의 사용자를 제공할 책임이 있음을 에이전트 클라이언트 디바이스(505)를 사용하여 에이전트로 메시지, 통지, 또는 다른 통신을 전송하는 것을 포함할 수 있다.
사용자 및 에이전트는 그 후 사용자 클라이언트 디바이스(605) 및 에이전트 클라이언트 디바이스(505)를 통해 후속 메시지 교환(1108)에 참여할 수 있다. 후속 메시지 교환(1108)은 여기에서 설명된 단-대-단 암호화 그룹 메시지 스레드 기술들을 사용한 단-대-단 암호화 그룹 메시지 스레드이다. 디폴트 에이전트 클라이언트 디바이스(1105)는, 그것들이 그렇게 원한다면 후속 메시지 교환(1108)을 모니터링하고 그것에 참여할 권한을 디폴트 에이전트 클라이언트 디바이스(1105)의 사용자에게 부여하기 위해서와 같은, 후속 메시지 교환(1108)을 계속해서 수신한다.
사용자 클라이언트 디바이스(605) 상에서의 메시지 스레드 디스플레이는 그룹 메시지 스레드로의 전이 및 할당된 에이전트 클라이언트 디바이스(505)를 포함한 후속 메시지 교환(1108)을 통해 다중-에이전트 엔티티의 이름으로 계속해서 라벨링될 수 있다.
도 11b는 메시지 스레드에 대한 개인-에이전트 라벨링을 가진 포워딩-기반 논리 흐름(1125)의 실시예를 예시한다.
메시지 스레드에 대한 개인-에이전트 라벨링을 가진 포워딩-기반 논리 흐름(1125)을 위한 많은 단계들은 메시지 스레드에 대한 다중-에이전트 라벨링을 가진 포워딩-기반 논리 흐름(1100)에 대한 단계들과 동일할 수 있다. 동일한 기술들은 상이한 기술들이 여기에서 설명되는 경우를 제외할 수 있다는 것이 이해될 것이다. 구체적으로, 메시징 개시(1101), 암호화 개시(1103), 초기 메시지 교환(1104), 에이전트 재할당(1106), 그룹 암호화 개시(1107), 및 후속 메시지 교환(1108)은 주지된 바를 제외하고 도 11a를 참조하여 설명된 바와 같이 수행될 수 있다.
일 실시예에서, 메시지 개시(1101)에서, 사용자 클라이언트 디바이스(605)는 다중-에이전트 엔티티에 대한 이름 대신에 디폴트 에이전트 클라이언트 디바이스(1105)를 사용하여 디폴트 에이전트에 대한 이름을 제공받을 수 있다. 디폴트 에이전트에 대한 이러한 이름은 다중-에이전트 엔티티와의 메시지 스레드 및 디폴트 에이전트로부터 수신된 개개의 메시지들 모두를 라벨링하기 위해 사용될 수 있다. 메시지 스레드는 그 후 할당된 에이전트 클라이언트 디바이스(505)를 위한 할당된 에이전트에 대한 이름을 사용하기 위해 메시지 스레드 재라벨링(1126)에 따라 재라벨링(relabeling)될 수 있다.
대안적으로, 또 다른 실시예에서, 다중-에이전트 엔티티에 대한 이름은, 다중-에이전트 엔티티와의 메시지 스레드를 라벨링하기 위해 사용될 수 있지만, 개개의 메시지들은 그것들을 사용자 클라이언트 디바이스(605)로 전송한 개개의 에이전트에 따라 라벨링된다. 이와 같이, 메시지 스레드에 대한 전체 라벨을 위한 메시지 스레드 재라벨링(1126) 대신에, 메시지 스레드 재라벨링(1126)은 그룹 메시지 스레드를 라벨링하는데 사용하기 위한 다중-에이전트 엔티티 이름 및 할당된 에이전트로부터 수신된 개개의 메시지들을 라벨링하는데 사용하기 위한 할당된 에이전트의 개개의 이름을 제공할 수 있다.
도 11c는 메시지 스레드에 대한 전역적-뷰-기반 논리 흐름(1150)의 실시예를 예시한다.
다중-에이전트 메시징 시스템(100)을 위한 메시징은, 몇몇 실시예들에서, 다중-에이전트 엔티티에 대한 모든 에이전트가 모든 메시지 스레드를 액세스하도록 권한을 부여받은 전역적 뷰를 사용할 수 있다. 이들 실시예들에서, 그룹 암호화 개시(1152)는 다중-에이전트 엔티티와의 메)에 응답하여 직접 수행된다.
메시징 서버(410)는 사용자 클라이언트 디바이스(605)로부터 메시징 개시(1151)를 수신한다. 메시징 개시(101)는 다중-에이전트 엔티티와의 메시징에 참여하기 위한 요청을 포함한다. 사용자 클라이언트 디바이스(605)는, 다중-에이전트 엔티티에 대한 메시징 식별자를 특정하는 것에 의해서와 같은, 사용자가 관계를 맺고 싶어하는 다중-에이전트 엔티티를 메시징 서버(410)에 대해 식별한다.
대안적인 시나리오에서, 메시징 개시(1151)는 에이전트 클라이언트 디바이스(1155)에 의해 수행될 수 있다. 메시징 개시(1101)는 설명된 바와 같이, 그러나 요청 에이전트 클라이언트 디바이스(1155)가 디폴트 에이전트 클라이언트 디바이스인지 여부에 관계없이 그룹 메시지 스레드에 포함된 초기 에이전트들의 리스트에 포함된 요청 에이전트 클라이언트 디바이스(1155)를 갖고 수행될 수 있다. 몇몇 실시예들에서, 단지 관리자 클라이언트 디바이스들만이 사용자와의 메시징을 개시할 수 있다.
사용자 클라이언트 디바이스(605), 제 1 에이전트 클라이언트 디바이스(1155), 다른 에이전트 클라이언트 디바이스(505), 및 가능하게는 부가적인 에이전트 클라이언트 디바이스들은 메시징 개시(1151)에 응답하여 그룹 암호화 개시(1152)를 수행한다. 그룹 암호화 개시(1152)는 다중-에이전트 엔티티에 대한 모든 에이전트 클라이언트 디바이스 및 사용자 클라이언트 디바이스(605)와 함께 수행될 수 있다. 대안적으로, 그룹 암호화 개시(1152)는 다중-에이전트 엔티티에 대한 모든 디폴트 에이전트 클라이언트 디바이스 및 사용자 클라이언트 디바이스(605)와 함께 수행될 수 있다. 이러한 그룹 암호화 개시(1152)는 사용자 클라이언트 디바이스(605), 에이전트 클라이언트 디바이스(1155), 다른 에이전트 클라이언트 디바이스(505), 및 다중-에이전트 엔티티에 대한 임의의 다른 에이전트 클라이언트 디바이스들 사이에서 그룹 메시지 스레드에서의 메시지들의 포워딩을 위해 제공한다. 다중-에이전트 엔티티에 대한 에이전트 클라이언트 디바이스들은 그 후 사용자 클라이언트 디바이스(605)와의 메시지 교환(1153)에 참여할 수 있다.
다중-에이전트 엔티티와의 메시지 스레드는 그것에 참여하는 개개의 에이전트들에 따라 또는 전체로서 다중-에이전트 엔티티에 따라 라벨링될 수 있다. 유사하게, 메시지 스레드에서의 개개의 메시지들은 그것에 참여하는 개개의 에이전트들에 따라 또는 전체로서 다중-에이전트 엔티티에 따라 라벨링될 수 있다.
개시된 아키텍처의 신규 양상들을 수행하기 위한 대표적인 방법론들을 나타내는 플로우차트들의 세트가 여기에 포함된다. 설명의 단순함의 목적들을 위해, 예를 들어, 플로우 차트 또는 흐름도의 형태로, 여기에 도시된 하나 이상의 방법들은 일련의 동작들로서 도시되고 설명되지만, 방법들은, 몇몇 동작들이, 그것에 따라, 여기에 도시되고 설명된 것과 상이한 순서로 및/또는 그로부터의 다른 동작들과 동시에 발생할 수 있으므로, 동작들의 순서에 의해 제한되지 않는다는 것이 이해되고 인식된다. 예를 들어, 이 기술분야의 숙련자들은 방법이 대안적으로, 상태도에서와 같은, 일련의 서로 관계가 있는 상태들 또는 이벤트들로서 표현될 수 있다는 것을 이해하고 인식할 것이다. 게다가, 방법에 예시된 모든 동작들이 신규 구현예를 위해 요구되는 것은 아닐 수 있다.
도 12는 논리 흐름(1200)의 일 실시예를 예시한다. 논리 흐름(1200)은 여기에서 설명된 하나 이상의 실시예들에 의해 실행된 동작들 중 일부 또는 모두를 나타낼 수 있다.
도 12에 도시된 예시된 실시예에서, 논리 흐름(1200)은 사용자 계정 블록(1202)과 연관된 사용자 클라이언트 디바이스로부터 다중-에이전트 엔티티에 대한 인입 메시지를 수신할 수 있다.
논리 흐름(1200)은 블록(1204)에서 인입 메시지를 수신하기 위해, 다중-에이전트 엔티티와 연관된 에이전트 계정을 결정할 수 있다.
논리 흐름(1200)은 블록(1206)에서 에이전트 계정과 연관된 에이전트 클라이언트 디바이스를 결정할 수 있다.
논리 흐름(1200)은 블록(1208)에서 에이전트 계정과 연관된 에이전트 클라이언트 디바이스로 인입 메시지를 전송할 수 있다.
실시예들은 이 예에 제한되지 않는다.
도 13은 집중화 시스템(1300)의 블록도를 예시한다. 집중화 시스템(1300)은 전부 단일 집중화 서버 디바이스(1320) 내에서와 같은, 단일 컴퓨팅 엔티티에서 다중-에이전트 메시징 시스템(100)을 위한 구조 및/또는 동작들 중 일부 또는 모두를 구현할 수 있다.
집중화 서버 디바이스(1320)는 다중-에이전트 메시징 시스템(100)에 대한 정보를 수신하고, 프로세싱하며, 전송할 수 있는 전자 디바이스를 포함할 수 있다. 전자 디바이스의 예들은 제한 없이, 울트라-모바일 디바이스, 이동 디바이스, 개인용 디지털 보조기(PDA), 이동 컴퓨팅 디바이스, 스마트폰, 전화, 디지털 전화, 휴대 전화, 전자 서적(ebook) 판독기들, 핸드셋, 1-방향 페이저, 2-방향 페이저, 메시징 디바이스, 컴퓨터, 개인용 컴퓨터(PC), 데스크탑 컴퓨터, 랩탑 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 핸드헬드 컴퓨터, 태블릿 컴퓨터, 서버, 서버 어레이, 또는 서버 팜, 웹 서버, 네트워크 서버, 인터넷 서버, 워크 스테이션, 미니-컴퓨터, 메인 프레임 컴퓨터, 슈퍼컴퓨터, 네트워크 기기, 웹 기기, 분산형 컴퓨팅 시스템, 다중프로세서 시스템들, 프로세서-기반 시스템들, 소비자 전자 장치들, 프로그램 가능한 소비자 전자 장치들, 게임 디바이스들, 텔레비전, 디지털 텔레비전, 셋 탑 박스, 무선 액세스 포인트, 기지국, 가입자 스테이션, 이동 가입자 센터, 라디오 네트워크 제어기, 라우터, 허브, 게이트웨이, 브리지, 스위치, 기계, 또는 그것의 조합을 포함할 수 있다. 실시예들은 이 맥락에서 제한되지 않는다.
집중화 서버 디바이스(1320)는 프로세싱 구성요소(1330)를 사용하여 다중-에이전트 메시징 시스템(100)에 대한 프로세싱 동작들 또는 로직을 실행할 수 있다. 프로세싱 구성요소(1330)는 다양한 하드웨어 요소들, 소프트웨어 요소들, 또는 양쪽 모두의 조합을 포함할 수 있다. 하드웨어 요소들의 예들은 디바이스들, 논리 디바이스들, 구성요소들, 프로세서들, 마이크로프로세서들, 회로들, 프로세서 회로들, 회로 요소들(예컨대, 트랜지스터들, 저항기들, 커패시터들, 인덕터들 등), 집적 회로들, 애플리케이션 특정 집적 회로들(ASIC), 프로그램 가능한 논리 디바이스들(PLD), 디지털 신호 프로세서들(DSP), 필드 프로그램 가능한 게이트 어레이(FPGA), 메모리 유닛들, 논리 게이트들, 레지스터들, 반도체 디바이스, 칩들, 마이크로칩들, 칩 셋들 등을 포함할 수 있다. 소프트웨어 요소들의 예들은 소프트웨어 구성요소들, 프로그램들, 애플리케이션들, 컴퓨터 프로그램들, 애플리케이션 프로그램들, 시스템 프로그램들, 소프트웨어 개발 프로그램들, 기계 프로그램들, 운영 시스템 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈들, 루틴들, 서브루틴들, 함수들, 방법들, 프로시저들, 소프트웨어 인터페이스들, 애플리케이션 프로그램 인터페이스들(API), 지시 세트들, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트들, 컴퓨터 코드 세그먼트들, 워드들, 값들, 심볼들, 또는 그것의 임의의 조합을 포함할 수 있다. 실시예가 하드웨어 요소들 및/또는 소프트웨어 요소들을 사용하여 구현되는지를 결정하는 것은, 주어진 구현에 대해 요구된 대로, 원하는 계산 레이트, 전력 레벨들, 열 허용 오차들, 프로세싱 사이클 버짓, 입력 데이터 레이트들, 출력 데이터 레이트들, 메모리 리소스들, 데이터 버스 속도들 및 다른 설계 또는 성능 제한들과 같은, 임의의 수의 인자들에 따라 달라질 수 있다.
집중화 서버 디바이스(1320)는 통신 구성요소(1340)를 사용하여 다중-에이전트 메시징 시스템(100)에 대한 통신 동작들 또는 로직을 실행할 수 있다. 통신 구성요소(1340)는, 패킷-스위칭 네트워크들(예컨대, 인터넷과 같은 공중 네트워크들, 기업 인트라넷과 같은 사설 네트워크들 등), 회로-스위칭 네트워크들(예컨대, 공중 스위칭 전화 네트워크), 또는 패킷-스위칭 네트워크들 및 회로-스위칭 네트워크들의 조합(적절한 게이트웨이들 및 변환기들과 함께)과 함께 사용하기에 적합한 기술들과 같은, 임의의 잘 알려진 통신 기술들 및 프로토콜들을 구현할 수 있다. 통신 구성요소(1340)는, 하나 이상의 통신 인터페이스들, 네트워크 인터페이스들, 네트워크 인터페이스 카드들(NIC), 라디오들, 무선 송신기들/수신기들(트랜시버들), 유선 및/또는 무선 통신 미디어, 물리적 커넥터들 등과 같은, 다양한 유형들의 표준 통신 요소들을 포함할 수 있다. 제한이 아닌, 예로서, 통신 미디어(1312)는 유선 통신 미디어 및 무선 통신 미디어를 포함한다. 유선 통신 미디어의 예들은 와이어, 케이블, 금속 리드들, 인쇄 회로 보드들(PCB), 백플레인들, 스위치 패브릭들, 반도체 재료, 꼬임 쌍선, 동축 케이블, 파이버 옵틱스, 전파 신호 등을 포함할 수 있다. 무선 통신 미디어의 예들은 음향, 라디오-주파수(RF) 스펙트럼, 적외선 및 다른 무선 미디어를 포함할 수 있다.
집중화 서버 디바이스(1320)는 통신 구성요소(1340)를 경유하여 통신 신호들(1314)을 사용하여 통신 미디어(1312)를 통해 다른 미디어들과 통신할 수 있다. 디바이스들은 주어진 구현예에 대해 요구된 대로 집중화 서버 디바이스(1320)의 내부에 있거나 또는 외부에 있을 수 있다.
집중화 서버 디바이스(1320)는 메시징 서버(1350)를 실행할 수 있다. 메시징 서버(1350)는 메시징 시스템(110)을 위한 메시징 서버를 포함할 수 있다. 메시징 서버(1350)는 복수의 클라이언트 디바이스들(1310)에 대한 메시징 동작들을 제공하여, 클라이언트 디바이스들(1310) 사이에서 메시지들을 수신하고 전송할 수 있다. 클라이언트 디바이스들(1310)은 스마트폰 디바이스(150), 태블릿 디바이스(160), 개인용 컴퓨터 디바이스(170), 및/또는 임의의 다른 클라이언트 디바이스 중 하나 이상에 대응할 수 있다. 집중화 서버 디바이스(1320)는 로컬 데이터 저장소로서 에이전트 매핑 리포지터리(415)를 포함할 수 있다.
도 14는 분산형 시스템(1400)의 블록도를 예시한다. 분산형 시스템(1400)은 다수의 컴퓨팅 엔티티들에 걸쳐 다중-에이전트 메시징 시스템(100)에 대한 구조 및/또는 동작들의 부분들을 분산시킬 수 있다. 분산형 시스템(1400)의 예들은, 제한 없이, 클라이언트-서버 아키텍처, 3-티어 아키텍처, N-티어 아키텍처, 강-결합 또는 클러스터형 아키텍처, 피어-투-피어 아키텍처, 마스터-슬레이브 아키텍처, 공유형 데이터베이스 아키텍처, 및 다른 유형들의 분산형 시스템들을 포함할 수 있다. 실시예들은 이러한 맥락에서 제한되지 않는다.
분산형 시스템(1400)은 복수의 분산형 서버 디바이스들(1420)을 포함할 수 있다. 일반적으로, 분산형 서버 디바이스들(1420)은 도 13을 참조하여 설명된 바와 같이 집중화 서버 디바이스(1420)와 동일하거나 또는 유사할 수 있다. 예를 들어, 분산형 서버 디바이스들(1420)은 각각 도 13을 참조하여 설명된 바와 같이, 각각 프로세싱 구성요소(1330) 및 통신 구성요소(1340)와 동일하거나 또는 유사한 프로세싱 구성요소(1430) 및 통신 구성요소(1440)를 포함할 수 있다. 또 다른 예에서, 분산형 서버 디바이스들(1420)은 통신 구성요소들(1440)을 통해 통신 신호들(1414)을 사용하여 통신 미디어(1412)를 통해 통신할 수 있다.
분산형 서버 디바이스들(1420)은 설명된 실시예들에 따라 다양한 방법들을 수행하도록 동작하는 하나 이상의 서버 프로그램들을 포함하거나 또는 이를 이용할 수 있다. 일 실시예에서, 예를 들어, 분산형 서버 디바이스들(1420)은 각각 복수의 메시징 서버들(1450) 중 하나를 실행할 수 있다. 메시징 서버들(1450)은 메시징 시스템(110)을 위한 메시징 서버들을 포함할 수 있다. 메시징 서버들(1450)은 복수의 클라이언트 디바이스들(1410)에 대한 메시징 동작들을 제공하여, 클라이언트 디바이스들(1410) 사이에서 메시지들을 수신하고 전송할 수 있다. 클라이언트 디바이스들(1410)은 스마트폰 디바이스(150), 태블릿 디바이스(160), 개인용 컴퓨터 디바이스(180), 및/또는 임의의 다른 클라이언트 디바이스 중 하나 이상에 대응할 수 있다. 분산형 서버 디바이스들(1420)은 미디어(1412)를 통해 전송된 신호들(1414)을 사용하여 에이전트 매핑 리포지터리(415)와 통신할 수 있다. 에이전트 매핑 리포지터리(415)는 네트워크-액세스 가능한 데이터 저장소로서 호스팅될 수 있다.
도 15는 이전에 설명된 바와 같이 다양한 실시예들을 구현하는데 적합한 대표적인 컴퓨팅 아키텍처(1500)의 실시예를 예시한다. 일 실시예에서, 컴퓨팅 아키텍처(1500)는 전자 디바이스의 부분을 포함하거나 또는 그로서 구현될 수 있다. 전자 디바이스의 예들은 다른 것들 중에서, 도 13, 도 14를 참조하여 설명된 것들을 포함할 수 있다. 실시예들은 이러한 맥락에서 제한되지 않는다.
본 출원에서 사용된 바와 같이, 용어들("시스템" 및 "구성요소")은 그 예들이 대표적인 컴퓨팅 아키텍처(1500)에 의해 제공되는, 하드웨어, 하드웨어 및 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어인, 컴퓨터-관련 엔티티를 나타내도록 의도된다. 예를 들어, 구성요소는, 이에 제한되지 않지만, 프로세서 상에서 구동하는 프로세스, 프로세서, 하드 디스크 드라이브, 다수의 저장 드라이브들(광학 및/또는 자기 저장 매체의), 오브젝트, 실행 파일, 실행 스레드, 프로그램, 및/또는 컴퓨터일 수 있다. 예시로서 서버 상에서 구동하는 애플리케이션 및 서버는 구성요소일 수 있다. 하나 이상의 구성요소들은 프로세스 및/또는 실행 스레드 내에 있을 수 있으며, 구성요소는 하나의 컴퓨터 상에서 국소화되고 및/또는 둘 이상의 컴퓨터들 사이에서 분산될 수 있다. 뿐만 아니라, 구성요소들은 동작들을 조정하기 위해 다양한 유형들의 통신 미디어에 의해 서로 통신적으로 결합될 수 있다. 조정은 정보의 단-방향 또는 양-방향 교환을 수반할 수 있다. 예를 들어, 구성요소들은 통신 미디어를 통해 전달된 신호들의 형태로 정보를 전달할 수 있다. 정보는 다양한 신호 라인들에 할당된 신호들로서 구현될 수 있다. 이러한 할당들에서, 각각의 메시지는 신호이다. 그러나, 추가 실시예들은 대안적으로 데이터 메시지들을 이용할 수 있다. 이러한 데이터 메시지들은 다양한 연결들에 걸쳐 전송될 수 있다. 대표적인 연결들은 병렬 인터페이스들, 직렬 인터페이스들, 및 버스 인터페이스들을 포함한다.
컴퓨팅 아키텍처(1500)은 하나 이상의 프로세서들, 다중-코어 프로세서들, 코-프로세서들, 메모리 유닛들, 칩셋들, 제어기들, 주변 장치들, 인터페이스들, 발진기들, 타이밍 디바이스들, 비디오 카드들, 오디오 카드들, 멀티미디어 입력/출력(I/O) 구성요소들, 전원 공급 장치들 등과 같은, 다양한 일반적인 컴퓨팅 요소들을 포함한다. 그러나, 실시예들은 컴퓨팅 아키텍처(1500)에 의한 구현예에 제한되지 않는다.
도 15에 도시된 바와 같이, 컴퓨팅 아키텍처(1500)는 프로세싱 유닛(1504), 시스템 메모리(1506) 및 시스템 버스(1508)를 포함한다. 프로세싱 유닛(1504)은 제한 없이, AMD® Athlon®, Duron® 및 Opteron® 프로세서들; ARM® 애플리케이션, 내장 및 보안 프로세서들; IBM® 및 Motorola® DragonBall® 및 PowerPC® 프로세서들; IBM 및 Sony® Cell 프로세서들; Intel® Celeron®, Core (2) Duo®, Itanium®, Pentium®, Xeon®, 및 XScale® 프로세서들; 및 유사한 프로세서들을 포함한, 다양한 상업적으로 이용 가능한 프로세서들 중 임의의 것일 수 있다. 듀얼 마이크로프로세서들, 다중-코어 프로세서들, 및 다른 다중-프로세서 아키텍처들은 또한 프로세싱 유닛(1504)으로서 이용될 수 있다.
시스템 버스(1508)는, 이에 제한되지 않지만, 시스템 메모리(1506)를 포함한 시스템 구성요소들을 위한 인터페이스를 프로세싱 유닛(1504)으로 제공한다. 시스템 버스(1508)는, 다양한 상업적으로 이용 가능한 버스 아키텍처들 중 임의의 것을 사용하여 메모리 버스(메모리 제어기를 갖거나 또는 그것 없이), 주변 버스, 및 로컬 버스에 추가로 상호 연결할 수 있는 여러 유형들의 버스 구조 중 임의의 것일 수 있다. 인터페이스 어댑터들은 슬롯 아키텍처를 통해 시스템 버스(1508)에 연결할 수 있다. 예시적인 슬롯 아키텍처들은 제한 없이 가속화 그래픽스 포트(AGP), 카드 버스, (확장형) 산업 표준 아키텍처((E)ISA), 마이크로 채널 아키텍처(MCA), NuBus, 주변 구성요소 상호 연결(확장형)(PCI(X)), PCI 익스프레스, 개인용 컴퓨터 메모리 카드 국제 협회(PCMCIA) 등을 포함할 수 있다.
컴퓨팅 아키텍처(1500)는 다양한 제조 물품을 포함하거나 또는 이를 구현할 수 있다. 제조 물품은 로직을 저장하기 위해 컴퓨터-판독 가능한 저장 매체를 포함할 수 있다. 컴퓨터-판독 가능한 저장 매체의 예들은, 휘발성 메모리 또는 비-휘발성 메모리, 착탈 가능한 및 착탈 가능하지 않은 메모리, 삭제 가능한 또는 삭제 가능하지 않은 메모리, 기록 가능한 또는 재-기록 가능한 메모리 등을 포함한, 전자 데이터를 저장하는 것이 가능한 임의의 유형의 미디어를 포함할 수 있다. 논리의 예들은 소스 코드, 컴파일링 코드, 해석 코드, 실행 가능 코드, 정적 코드, 동적 코드, 오브젝트-지향 코드, 시각적 코드 등과 같은, 임의의 적절한 유형의 코드를 사용하여 구현된 실행 가능한 컴퓨터 프로그램 지시들을 포함할 수 있다. 실시예들은 또한 비-일시적 컴퓨터-판독 가능한 매체에 또는 그것 상에 포함된 지시들로서 적어도 부분적으로 구현될 수 있으며, 이것은 여기에서 설명된 동작들의 수행을 가능하게 하기 위해 하나 이상의 프로세서들에 의해 판독되고 실행될 수 있다.
시스템 메모리(1506)는 판독-전용 메모리(ROM), 랜덤-액세스 메모리(RAM), 동작 RAM(DRAM), 이중-데이터-레이트 DRAM(DDRAM), 동기식 DRAM(SDRAM), 정적 RAM(SRAM), 프로그램 가능한 ROM(PROM), 삭제 가능한 프로그램 가능한 ROM(EPROM), 전기적으로 삭제 가능한 프로그램 가능 ROM(EEPROM), 플래시 메모리, 강유전성 폴리머 메모리와 같은 폴리머 메모리, 오보닉 메모리, 상 변화 또는 강유전성 메모리, 실리콘-산화물-질화물 실리콘(SONOS) 메모리, 자기 또는 광학 카드들, 독립 디스크들의 이중 어레이(RAID) 드라이브들, 고체 상태 메모리 디바이스들(예컨대, USB 메모리, 고체 상태 드라이브들(SSD)) 및 정보를 저장하는데 적합한 임의의 다른 유형의 저장 미디어와 같은, 하나 이상의 보다 높은 속도 메모리 유닛들의 형태로 다양한 유형들의 컴퓨터-판독 가능한 저장 미디어를 포함할 수 있다. 도 15에 도시된 예시된 실시예에서, 시스템 메모리(1506)는 비-휘발성 메모리(1510) 및/또는 휘발성 메모리(1512)를 포함할 수 있다. 기본 입력/출력 시스템(BIOS)은 비-휘발성 메모리(1510)에 저장될 수 있다.
컴퓨터(1502)는 내부(또는 외부) 하드 디스크 드라이브(HDD)(1514), 착탈 가능한 자기 디스크(1518)로부터 판독하거나 그것에 기록하기 위한 자기 플로피 디스크 드라이브(FDD)(1516), 및 착탈 가능한 광 디스크(1522)(예컨대, CD-ROM 또는 DVD)로부터 판독하거나 또는 그것으로 기록하기 위한 광학 디스크 드라이브(1520)를 포함한, 하나 이상의 저속 메모리 유닛들의 형태로 다양한 유형들의 컴퓨터-판독 가능한 저장 미디어를 포함할 수 있다. HDD(1514), FDD(1516) 및 광학 디스크 드라이브(1520)는 각각 HDD 인터페이스(1524), FDD 인터페이스(1526) 및 광학 드라이브 인터페이스(1528)에 의해 시스템 버스(1508)에 연결될 수 있다. 외부 드라이브 구현들을 위한 HDD 인터페이스(1524)는 범용 직렬 버스(USB) 및 IEEE 1394 인터페이스 기술들 중 적어도 하나 또는 양쪽 모두를 포함할 수 있다.
드라이브들 및 연관된 컴퓨터-판독 가능한 미디어는 데이터, 데이터 구조들, 컴퓨터-실행 가능한 지시들 등의 휘발성 및/또는 비휘발성 저장을 제공한다. 예를 들어, 다수의 프로그램 모듈들은, 운영 시스템(1530), 하나 이상의 애플리케이션 프로그램들(1532), 다른 프로그램 모듈들(1534), 및 프로그램 데이터(1536)를 포함한, 드라이브들 및 메모리 유닛들(1510, 1512)에 저장될 수 있다. 일 실시예에서, 하나 이상의 애플리케이션 프로그램들(1532), 다른 프로그램 모듈들(1534), 및 프로그램 데이터(1536)는, 예를 들어, 다중-에이전트 메시징 시스템(150)의 다양한 애플리케이션들 및/또는 구성요소들을 포함할 수 있다.
사용자는 하나 이상의 유선/무선 입력 디바이스들, 예를 들어, 키보드(1538) 및 마우스(1540)와 같은, 포인팅 디바이스를 통해 컴퓨터(1502)로 명령들 및 정보를 입력할 수 있다. 다른 입력 디바이스들은 마이크로폰들, 적외선(IR) 원격 제어들, 라디오-주파수(RF) 원격 제어들, 게임 패드들, 스타일러스 펜들, 카드 판독기들, 동글들, 지문 판독기들, 장갑들, 그래픽 태블릿들, 조이스틱들, 키보드들, 망막 판독기들, 터치 스크린들(예컨대, 정전식, 저항성 등), 트랙볼들, 트랙패드들, 센서들, 스타일러스들 등을 포함할 수 있다. 이들 및 다른 입력 디바이스들은 종종 시스템 버스(1508)에 결합되는 입력 디바이스 인터페이스(1542)를 통해 프로세싱 유닛(1504)에 연결되지만 병렬 포트, IEEE 1394 직렬 포트, 게임 포트, USB 포트, IR 인터페이스 등과 같은 다른 인터페이스들에 의해 연결될 수 있다.
모니터(1544) 또는 다른 유형의 디스플레이 디바이스는 또한, 비디오 어댑터(1546)와 같은, 인터페이스를 통해 시스템 버스(1508)에 연결된다. 모니터(1544)는 컴퓨터(1502)의 내부에 있거나 또는 외부에 있을 수 있다. 모니터(1544) 외에, 컴퓨터는 통상적으로 스피커들, 프린터들 등과 같은, 다른 주변 출력 디바이스들을 포함한다.
컴퓨터(1502)는 원격 컴퓨터(1548)와 같은, 하나 이상의 원격 컴퓨터들로의 유선 및/또는 무선 통신을 통한 논리적 연결들을 사용하여 네트워킹 환경에서 동작할 수 있다. 원격 컴퓨터(1548)는 워크스테이션, 서버 컴퓨터, 라우터, 개인용 컴퓨터, 휴대용 컴퓨터, 마이크로프로세서-기반 엔터테인먼트 기기, 피어 디바이스 또는 다른 일반 네트워크 노드일 수 있으며, 통상적으로 컴퓨터(1502)에 대해 설명된 많은 또는 모든 요소들을 포함하지만, 간결성의 목적들을 위해, 단지 메모리/저장 디바이스(1550)만이 예시된다. 묘사된 논리적 연결들은 근거리 네트워크(LAN)(1552) 및/또는 보다 큰 네트워크들, 예를 들어, 광역 네트워크(WAN)(1554)로의 유선/무선 연결성을 포함한다. 이러한 LAN 및 WAN 네트워킹 환경들은 사무실들 및 회사들에서 아주 흔하며, 인트라넷들과 같은 기업에 걸친 컴퓨터 네트워크들을 가능하게 하고, 그 모두는 전역적 통신 네트워크, 예를 들어 인터넷에 연결할 수 있다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(1502)는 유선 및/또는 무선 통신 네트워크 인터페이스 또는 어댑터(1556)를 통해 LAN(1552)에 연결된다. 어댑터(1556)는 LAN(1552)으로의 유선 및/또는 무선 연결들을 가능하게 할 수 있으며, 이것은 또한 어댑터(1556)의 무선 기능과 통신하기 위해 그것 상에 배치된 무선 액세스 포인트를 포함할 수 있다.
WAN 네트워킹 환경에서 사용될 때, 컴퓨터(1502)는 모뎀(1558)을 포함할 수 있거나, 또는 WAN(1554) 상에서의 통신 서버에 연결되거나, 또는 인터넷에 의해서와 같은, WAN(1554)을 통해 통신들을 수립하기 위한 다른 수단들을 갖는다. 내부 또는 외부의 및 유선 및/또는 무선 디바이스일 수 있는, 모뎀(1558)은 입력 디바이스 인터페이스(1542)를 통해 시스템 버스(1508)에 연결한다. 네트워킹 환경에서, 컴퓨터(1502)에 대해 묘사된 프로그램 모듈들, 또는 그것의 부분들은 원격 메모리/저장 디바이스(1550)에 저장될 수 있다. 도시된 네트워크 연결들은 대표적이며 컴퓨터들 사이에 통신 링크를 수립하는 다른 수단들이 사용될 수 있다는 것이 이해될 것이다.
컴퓨터(1502)는 무선 통신에 동작 가능하게 배치된 무선 디바이스들과 같은 IEEE 802 표준 군들(예컨대, IEEE 802.11 오버-디-에어 변조 기술들)을 사용하여 유선 및 무선 디바이스들 또는 엔티티들과 통신하도록 동작 가능하다. 이것은 다른 것들 중에서, 적어도 Wi-Fi(또는 무선 충실도), WiMax, 및 Bluetooth™ 무선 기술들을 포함한다. 따라서, 통신은 종래의 네트워크 또는 간단히 적어도 두 개의 디바이스들 간의 애드 혹 통신과 마찬가지로 미리 정의된 구조일 수 있다. Wi-Fi 네트워크들은 안전하고, 신뢰 가능하며, 빠른 무선 연결성을 제공하기 위해 IEEE 802.11x(a, b, g, n 등)으로 불리우는 라디오 기술들을 사용한다. Wi-Fi 네트워크는 서로, 인터넷에, 및 유선 네트워크들(IEEE 802.3-관련 미디어 및 기능들을 사용하는)에 컴퓨터들을 연결하기 위해 사용될 수 있다.
도 16은 이전에 설명된 바와 같이 다양한 실시예들을 구현하는데 적합한 대표적인 통신 아키텍처(1600)의 블록도를 예시한다. 통신 아키텍처(1600)는, 송신기, 수신기, 트랜시버, 라디오, 네트워크 인터페이스, 기저대역 프로세서, 안테나, 증폭기들, 필터들, 전원 공급 장치들 등과 같은, 다양한 공통 통신 요소들을 포함한다. 그러나, 실시예들은 통신 아키텍처(1600)에 의한 구현에 제한되지 않는다.
도 16에 도시된 바와 같이, 통신 아키텍처(1600)는 하나 이상의 클라이언트들(1602) 및 서버들(1604)을 포함한다. 클라이언트들(1602)은 메시징 클라이언트들을 구현할 수 있다. 서버들(1604)은 메시징 서버들을 구현할 수 있다. 클라이언트들(1602) 및 서버들(1604)은 쿠키들 및/또는 연관된 맥락 정보와 같은, 각각의 클라이언트들(1602) 및 서버들(1604)에 국소적인 정보를 저장하기 위해 이용될 수 있는 하나 이상의 각각의 클라이언트 데이터 저장소들(1608) 및 서버 데이터 저장소들(1610)에 동작 가능하게 연결된다.
클라이언트들(1602) 및 서버들(1604)은 통신 프레임워크(1606)를 사용하여 서로 정보를 통신할 수 있다. 통신 프레임워크(1606)는 임의의 잘 알려진 통신 기술들 및 프로토콜들을 구현할 수 있다. 통신 프레임워크(1606)는 패킷-스위칭 네트워크(예컨대, 인터넷과 같은 공중 네트워크들, 기업 인트라넷과 같은 사설 네트워크들 등), 회로-스위칭 네트워크(예컨대, 공중 스위칭 전화 네트워크), 또는 패킷-스위칭 네트워크 및 회로-스위칭 네트워크의 조합(적절한 게이트웨이들 및 변환기들과 함께)으로서 구현될 수 있다.
통신 프레임워크(1606)는 통신 네트워크를 수용하고, 전달하며, 그것에 연결하도록 배열된 다양한 네트워크 인터페이스들을 구현할 수 있다. 네트워크 인터페이스는 특수화된 형태의 입력 출력 인터페이스로서 간주될 수 있다. 네트워크 인터페이스들은 제한 없이 직접 연결, 이더넷(예컨대, 두꺼운, 얇은, 꼬임 쌍 10/100/1000 Base T 등), 토큰 링, 무선 네트워크 인터페이스들, 셀룰러 네트워크 인터페이스들, IEEE 802.11a-x 네트워크 인터페이스들, IEEE 802.16 네트워크 인터페이스들, IEEE 802.20 네트워크 인터페이스들 등을 포함한 연결 프로토콜들을 이용할 수 있다. 뿐만 아니라, 다수의 네트워크 인터페이스들은 다양한 통신 네트워크 유형들과 관계를 맺기 위해 사용될 수 있다. 예를 들어, 다수의 네트워크 인터페이스들은 브로드캐스트, 멀티캐스트, 및 유니캐스트 네트워크들을 통한 통신을 허용하기 위해 이용될 수 있다. 프로세싱 요건들은 보다 많은 양의 속도 및 용량을 서술해야 하지만, 분산형 네트워크 제어기 아키텍처들은 유사하게 클라이언트들(1602) 및 서버들(1604)에 의해 요구된 통신 대역폭을 풀링하고, 로드 밸런싱하며, 그 외 증가시키기 위해 이용될 수 있다. 통신 네트워크는 제한 없이, 직접 상호 연결, 보안 맞춤 연결, 사설 네트워크(예컨대, 기업 인트라넷), 공중 네트워크(예컨대, 인터넷), 개인 영역 네트워크(PAN), 근거리 네트워크(LAN), 대도시 영역 네트워크(MAN), 인터넷 상에서의 노드들로서 동작 미션들(OMNI), 광역 네트워크(WAN), 무선 네트워크, 셀룰러 네트워크, 및 다른 통신 네트워크들을 포함한 유선 및/또는 무선 네트워크들 중 임의의 하나 및 그것의 조합일 수 있다.
도 17는 다중-에이전트 메시징 시스템(100)과 같은, 다중캐리어 OFDM 시스템에서의 사용을 위한 디바이스(1700)의 실시예를 예시한다. 디바이스(1700)는, 예를 들어, 다중-에이전트 메시징 시스템(100) 및/또는 논리 회로(1735)를 참조하여 설명된 바와 같이, 소프트웨어 구성요소들(1760)을 구현할 수 있다. 논리 회로(1735)는 다중-에이전트 메시징 시스템(100)에 대해 설명된 동작들을 수행하기 위해 물리 회로들을 포함할 수 있다. 도 17에 도시된 바와 같이, 디바이스(1700)는 라디오 인터페이스(1710), 기저대역 회로(1720), 및 컴퓨팅 플랫폼(1730)을 포함할 수 있지만, 실시예들은 이러한 구성에 제한되지 않는다.
디바이스(1700)는 전부 단일 디바이스 내에서와 같은, 단일 컴퓨팅 엔티티에서 다중-에이전트 메시징 시스템(100) 및/또는 논리 회로(1735)를 위한 구조 및/또는 동작들 중 일부 또는 모두를 구현할 수 있다. 대안적으로, 디바이스(1700)는 클라이언트-서버 아키텍처, 3-티어 아키텍처, N-티어 아키텍처, 강결합 또는 클러스터형 아키텍처, 피어-투-피어 아키텍처, 마스터-슬레이브 아키텍처, 공유형 데이터베이스 아키텍처, 및 다른 유형들의 분산형 시스템들과 같은, 분산형 시스템 아키텍처를 사용하여 다수의 컴퓨팅 엔티티들에 걸쳐 다중-에이전트 메시징 시스템(100) 및/또는 논리 회로(1735)를 위한 구조 및/또는 동작들의 부분들을 분산시킬 수 있다. 실시예들은 이러한 맥락으로 제한되지 않는다.
일 실시예에서, 라디오 인터페이스(1710)는 단일 캐리어 또는 다중-캐리어 변조 신호들(예컨대, 상보형 코드 키잉(CCK) 및/또는 직교 주파수 분할 다중화(OFDM) 심볼들을 포함한)을 송신 및/또는 수신하기 위해 적응된 구성요소 또는 구성요소들의 조합을 포함할 수 있지만 실시예들은 임의의 특정 오버-디-에어 인터페이스 또는 변조 기법에 제한되지 않는다. 라디오 인터페이스(1710)는, 예를 들어, 수신기(1712), 송신기(1716) 및/또는 주파수 합성기(1714)를 포함할 수 있다. 라디오 인터페이스(1710)는 바이어스 제어들, 수정 발진기 및/또는 하나 이상의 안테나들(1718)을 포함할 수 있다. 또 다른 실시예에서, 라디오 인터페이스(1710)는 외부 전압-제어 발진기들(VCO들), 표면 음향파 필터들, 중간 주파수(IF) 필터들 및/또는 RF 필터들을, 요구에 따라 사용할 수 있다. 다양한 잠재적인 RF 인터페이스 설계들로 인해, 그것에 대한 확장적 설명은 생락된다.
기저대역 회로(1720)는 수신 및/또는 송신 신호들을 프로세싱하기 위해 라디오 인터페이스(1710)와 통신할 수 있으며, 예를 들어, 수신된 신호들을 하향 변환하기 위한 아날로그-디지털 변환기(1722), 송신을 위해 신호들을 상향 변환하기 위한 디지털-아날로그 변환기(1724)를 포함할 수 있다. 뿐만 아니라, 기저대역 회로(1720)는 각각의 수신/송신 신호들의 PHY 링크 계층 프로세싱을 위해 기저대역 또는 물리 계층(PHY) 프로세싱 회로(1756)를 포함할 수 있다. 기저대역 회로(1720)는, 예를 들어, 매체 액세스 제어(MAC)/데이터 링크 계층 프로세싱을 위한 프로세싱 회로(1728)를 포함할 수 있다. 기저대역 회로(1720)는 예를 들어, 하나 이상의 인터페이스들(1734)을 통해, 프로세싱 회로(1728) 및/또는 컴퓨팅 플랫폼(1730)과 통신하기 위한 메모리 제어기(1732)를 포함할 수 있다.
몇몇 실시예들에서, PHY 프로세싱 회로(1726)는, 라디오 프레임들과 같은, 통신 프레임들을 구성하고 및/또는 파괴하기 위해, 버퍼 메모리와 같은 부가적인 회로와 조합하여, 프레임 구성 및/또는 검출 회로를 포함할 수 있다. 대안적으로 또는 또한, MAC 프로세싱 회로(1728)는 이들 기능들 중 특정한 것에 대한 프로세싱을 공유하거나 또는 PHY 프로세싱 회로(1726)에 독립적으로 이들 프로세스들을 수행할 수 있다. 몇몇 실시예들에서, MAC 및 PHY 프로세싱은 단일 회로로 통합될 수 있다.
컴퓨팅 플랫폼(1730)은 디바이스(1700)에 대한 컴퓨팅 기능을 제공할 수 있다. 도시된 바와 같이, 컴퓨팅 플랫폼(1730)은 프로세싱 구성요소(1740)를 포함할 수 있다. 기저대역 회로(1720) 외에, 또는 그것에 대안적으로, 디바이스(1700)는 프로세싱 구성요소(1740)를 사용하여 다중-에이전트 메시징 시스템(100) 및 논리 회로(1735)를 위한 프로세싱 동작들 또는 로직을 실행할 수 있다. 프로세싱 구성요소(1740)(및/또는 PHY(1726) 및/또는 MAC(1728))는 다양한 하드웨어 요소들, 소프트웨어 요소들, 또는 양쪽 모두의 조합을 포함할 수 있다. 하드웨어 요소들의 예들은 디바이스들, 논리 디바이스들, 구성요소들, 프로세서들, 마이크로프로세서들, 회로들, 프로세서 회로들, 회로 요소들(예컨대, 트랜지스터들, 저항기들, 커패시터들, 인덕터들 등), 집적 회로들, 애플리케이션 특정 집적 회로들(ASIC), 프로그램 가능한 논리 디바이스들(PLD), 디지털 신호 프로세서들(DSP), 필드 프로그램 가능한 게이트 어레이(FPGA), 메모리 유닛들, 논리 게이트들, 레지스터들, 반도체 디바이스, 칩들, 마이크로칩들, 칩 셋들 등을 포함할 수 있다. 소프트웨어 요소들의 예들은 소프트웨어 구성요소들, 프로그램들, 애플리케이션들, 컴퓨터 프로그램들, 애플리케이션 프로그램들, 시스템 프로그램들, 소프트웨어 개발 프로그램들, 기계 프로그램들, 운영 시스템 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모둘들, 루틴들, 서브루틴들, 함수들, 방법들, 프로시저들, 소프트웨어 인터페이스들, 애플리케이션 프로그램 인터페이스들(API), 지시 세트들, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트들, 컴퓨터 코드 세그먼트들, 워드들, 값들, 심볼들, 또는 그것의 임의의 조합을 포함할 수 있다. 실시예들이 하드웨어 요소들 및/또는 소프트웨어 요소들을 사용하여 구현되는지를 결정하는 것은, 주어진 구현에 대해 요구된 대로, 원하는 계산 레이트, 전력 레벨들, 열 허용 오차들, 프로세싱 사이클 버짓, 입력 데이터 레이트들, 출력 데이터 레이트들, 메모리 리소스들, 데이터 버스 속도들 및 다른 설계 또는 성능 제한들과 같은, 임의의 수의 인자들에 따라 달라질 수 있다.
컴퓨팅 플랫폼(1730)은 다른 플랫폼 구성요소들(1750)을 추가로 포함할 수 있다. 다른 플랫폼 구성요소들(1750)은, 하나 이상의 프로세서들, 다중-코어 프로세서들, 코-프로세서들, 메모리 유닛들, 칩셋들, 제어기들, 주변 장치들, 인터페이스들, 발진기들, 타이밍 디바이스들, 비디오 카드들, 오디오 카드들, 멀티미디어 입력/출력(I/O) 구성요소들(예컨대, 디지털 디스플레이들), 전원 공급 장치들 등과 같은, 일반적인 컴퓨팅 요소들을 포함한다. 메모리 유닛들의 예들은 제한 없이, 판독-전용 메모리(ROM), 랜덤-액세스 메모리(RAM), 동적 RAM(DRAM), 이중-데이터-레이트 DRAM(DDRAM), 동기식 DRAM(SDRAM), 정적 RAM(SRAM), 프로그램 가능한 ROM(PROM), 삭제 가능한 프로그램 가능 ROM(EPROM), 전기적으로 삭제 가능한 프로그램 가능 ROM(EEPROM), 플래시 메모리, 강유전성 폴리머 메모리와 같은 폴리머 메모리, 오보닉 메모리, 상 변화 또는 강유전성 메모리, 실리콘-산화물-질화물-산화물-실리콘(SONOS) 메모리, 자기 또는 광학 카드들, 독립 디스크들의 중복 어레이(RAID) 드라이브들, 고체 상태 메모리 디바이스들(예컨대, USB 메모리, 고체 상태 드라이브들(SSD)) 및 정보를 저장하는데 적합한 임의의 다른 유형의 저장 미디어와 같은, 하나 이상의 고속 메모리 유닛들의 형태로 다양한 유형들의 컴퓨터 판독 가능한 및 기계 판독 가능한 저장 미디어를 포함할 수 있다.
디바이스(1700)는, 예를 들어, 울트라-모바일 디바이스, 이동 디바이스, 고정 디바이스, 기계-대-기계(M2M) 디바이스, 개인용 디지털 보조기(PDA), 이동 컴퓨팅 디바이스, 스마트폰, 전화, 디지털 전화, 휴대 전화, 전자 서적(ebook) 판독기들, 핸드셋, 1-방향 페이저, 2-방향 페이저, 메시징 디바이스, 컴퓨터, 개인용 컴퓨터(PC), 데스크탑 컴퓨터, 랩탑 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 핸드헬드 컴퓨터, 태블릿 컴퓨터, 서버, 서버 어레이, 또는 서버 팜, 웹 서버, 네트워크 서버, 인터넷 서버, 워크 스테이션, 미니-컴퓨터, 메인 프레임 컴퓨터, 슈퍼컴퓨터, 네트워크 기기, 웹 기기, 분산형 컴퓨팅 시스템, 다중프로세서 시스템들, 프로세서-기반 시스템들, 소비자 전자 장치들, 프로그램 가능한 소비자 전자 장치들, 게임 디바이스들, 텔레비전, 디지털 텔레비전, 셋 탑 박스, 무선 액세스 포인트, 기지국, 노드 B, 진화된 노드 B(eNB), 가입자 스테이션, 이동 가입자 센터, 라디오 네트워크 제어기, 라우터, 허브, 게이트웨이, 브리지, 스위치, 기계, 또는 그것의 조합일 수 있다. 따라서, 여기에서 설명된 디바이스(1700)의 기능들 및/또는 특정 구성들은 적절하게 요구된 대로, 디바이스(1700)의 다양한 실시예들에 포함되거나 또는 생략될 수 있다. 몇몇 실시예들에서, 디바이스(1700)는 여기에서 인용된 3GPP LTE 규격들 및/또는 WMAN들에 대한 IEEE 1702.16 표준들 중 하나 이상, 및/또는 다른 광대역 무선 네트워크들과 연관된 프로토콜들 및 주파수들과 호환 가능하도록 구성될 수 있지만, 실시예들은 이 점에 대해서 제한되지 않는다.
디바이스(1700)의 실시예들은 단일 입력 단일 출력(SISO) 아키텍처들을 사용하여 구현될 수 있다. 그러나, 특정한 구현예들은 빔성형 또는 공간 분할 다중 애겟스(SDMA)에 대한 적응형 안테나 기술들을 사용하여 및/또는 MIMO 통신 기술들을 사용하여 송신 및/또는 수신을 위한 다수의 안테나들(예컨대, 안테나들(1718))을 포함할 수 있다.
디바이스(1700)의 구성요소들 및 특징들은 이산 회로, 애플리케이션 특정 집적 회로들(ASIC들), 논리 게이트들 및/또는 단일 칩 아키텍처들의 임의의 조합을 사용하여 구현될 수 있다. 뿐만 아니라, 디바이스(1700)의 특징들은 마이크로제어기들, 프로그램 가능한 논리 어레이들 및/또는 마이크로프로세서들 또는 적당하게 적절한 경우 앞서 말한 것의 임의의 조합을 사용하여 구현될 수 있다. 하드웨어, 펌웨어 및/또는 소프트웨어 요소들은 여기에서 "논리" 또는 "회로"로서 총괄하여 또는 개별적으로 참조될 수 있다는 것이 주의된다.
도 17의 블록도에서 도시된 대표적인 디바이스(1700)는 많은 잠재적인 구현들에 대한 하나의 기능적으로 기술적인 예를 나타낼 수 있다는 것이 이해되어야 한다. 따라서, 수반된 도면들에서 묘사된 블록 기능들의 분할, 생략 또는 포함은 이들 기능들을 구현하기 위한 하드웨어 구성요소들, 회로들, 소프트웨어 및/또는 요소들이 반드시 실시예들에서 분할되고, 생략되거나, 또는 포함될 것임을 의미하지 않는다.
컴퓨터-구현 방법은 사용자 계정과 연관된 사용자 클라이언트 디바이스로부터 다중-에이전트 엔티티에 대한 인입 메시지를 수신하는 것; 상기 인입 메시지를 수신하기 위해, 다중-에이전트 엔티티와 연관된 에이전트 계정을 결정하는 것; 에이전트 계정과 연관된 에이전트 클라이언트 디바이스를 결정하는 것; 및 에이전트 계정과 연관된 에이전트 클라이언트 디바이스로 인입 메시지를 전송하는 것을 포함할 수 있다.
컴퓨터-구현된 방법은 다중-에이전트 엔티티에 대해 관리자 계정에 대한 관리자 계정 등록을 수신하는 것; 다중-에이전트 엔티티와 연관되는 것으로 관리자 계정을 등록하는 것; 다중-에이전트 엔티티에 대해 에이전트 계정에 대한 에이전트 계정 등록을 수신하는 것; 사용자 계정과 연관된 사용자 클라이언트 디바이스로부터 다중-에이전트 엔티티에 대한 인입 메시지를 수신하는 것; 및 관리자 계정에 의한 에이전트 계정에 대한 메시지 공유 인가에 기초하여 에이전트 계정과 연관된 에이전트 클라이언트 디바이스로 인입 메시지를 전송하는 것을 포함할 수 있다.
컴퓨터-구현 방법은 관리자 계정으로부터 사용자 계정과 관리자 계정 사이에서의 메시지 스레드에 대한 메시지-스레드 포워드를 수신하는 것으로서, 상기 메시지-스레드 포워드는 에이전트 계정을 특정하는, 상기 메시지-스레드 포워드 수신하는 것; 메시징 서버 디바이스 상에서 에이전트 계정에 메시지 스레드를 등록하는 것; 메시징 서버 디바이스에서 사용자 클라이언트 디바이스로부터 다중-에이전트 엔티티에 대한 인입 메시지를 수신하는 것; 및 에이전트 계정으로의 메시지 스레드의 등록에 기초하여 인입 메시지를 에이전트 클라이언트 디바이스로 전송하는 것을 추가로 포함할 수 있다.
컴퓨터-구현 방법은 메시지 스레드와 연관된 인입 메시지를 추가로 포함할 수 있다.
컴퓨터-구현 방법은 관리자 계정으로부터 에이전트 계정으로 스레드 포워딩 페이로드를 포워딩하는 것을 추가로 포함할 수 있으며, 상기 스레드 포워딩 페이로드는 메시지 스레드를 액세스할 권한을 에이전트 클라이언트 디바이스에 부여하는 보안 정보를 포함한다.
컴퓨터-구현 방법은 하나 이상의 암호화 키들을 포함한 보안 정보를 추가로 포함할 수 있으며, 상기 메시지는 하나 이상의 암호화 키들의 암호화 키에 기초하여 암호화된다.
컴퓨터-구현 방법은 메시지-스레드 포워드에 응답하여 관리자 계정 대신에 에이전트 계정을 나타내기 위해 사용자 클라이언트 디바이스 상에서 메시지 스레드에 대한 메시지 스레드 인터페이스를 재라벨링하는 것을 추가로 포함할 수 있다.
컴퓨터-구현 방법은 다중-에이전트 엔티티를 나타내기 위해 사용자 클라이언트 디바이스 상에서 메시지 스레드 인터페이스를 라벨링하는 것을 추가로 포함할 수 있다.
컴퓨터-구현 방법은 다중-에이전트 엔티티에 대해 에이전트 계정에 대한 에이전트 계정 등록을 포함한 메시지 공유 인가를 추가로 포함할 수 있다.
컴퓨터-구현 방법은 에이전트 계정 등록에 응답하여 다중-에이전트 엔티티에 대해 후속 메시지 스레드들의 메시지 공유 인가를 위한 에이전트 계정을 등록하는 것을 추가로 포함할 수 있다.
컴퓨터-구현 방법은 다중-에이전트 엔티티에 대해 복수의 에이전트 계정들에 대한 복수의 마지막으로-본 시간들을 결정하는 것; 복수의 마지막으로-본 시간들의 가장-최근 마지막으로-본 시간을 선택하는 것; 및 다중-에이전트 엔티티에 대한 마지막으로-본 시간을 나타내기 위해 사용자 클라이언트 디바이스 상에서 메시지 스레드에 대한 메시지 스레드 인터페이스로 가장-최근 마지막으로-본 시간을 제공하는 것을 추가로 포함할 수 있다.
장치는 동작 가능한 에이전트 관리 구성요소 및 메시지 프로세싱 구성요소를 포함할 수 있다. 장치는 여기에서 설명된 컴퓨터-구현 방법들 중 임의의 것을 구현하도록 동작할 수 있다.
적어도 하나의 컴퓨터-판독 가능한 저장 매체는 실행될 때, 시스템으로 하여금 여기에서 설명된 컴퓨터-구현 방법들 중 임의의 것을 수행하게 하는 지시들을 포함할 수 있다.
몇몇 실시예들은 그것들의 파생어들과 함께 표현("일 실시예" 또는 "실시예")을 사용하여 설명될 수 있다. 이들 용어들은 실시예와 관련되어 설명된 특정한 특징, 구조, 또는 특성이 적어도 하나의 실시예에 포함된다는 것을 의미한다. 명세서의 다양한 곳들에서의 구절("일 실시예에서")의 출현은 반드시 모두가 동일한 실시예를 나타내는 것은 아니다. 뿐만 아니라, 몇몇 실시예들은 그것들의 파생어들과 함께 표현("결합된" 및 "연결된")을 사용하여 설명될 수 있다. 이들 용어들은 반드시 서로에 대해 동의어로서 의도되는 것은 아니다. 예를 들어, 몇몇 실시예들으 둘 이상의 요소들이 서로 직접적인 물리적 또는 전기적 접촉에 있음을 나타내기 위해 용어들("연결된" 및/또는 "결합된")을 사용하여 설명될 수 있다. 그러나, 용어("결합된")는 둘 이상의 요소들이 서로 직접적인 접촉에 있지 않으며, 서로 여전히 협력하거나 또는 상호작용한다는 것을 또한 의미할 수 있다.
여기에서 사용된 표기법들 및 명명법을 일반적으로 참조하면, 여기에서의 상세한 설명은 컴퓨터 또는 컴퓨터들의 네트워크상에서 실행된 프로그램 프로시저들에 대하여 제공될 수 있다. 이들 절차적 설명들 및 표현들은 이 기술분야의 숙련자들에 의해 그것들 작업의 본질이 이 기술분야의 다른 숙련자들에게 가장 효과적으로 전달하기 위해 사용된다.
프로시저는 여기에서, 및 일반적으로, 원하는 결과를 이끄는 동작들의 일관성 있는 시퀀스인 것으로 인지된다. 이들 동작들은 물리적 양들의 물리적 조작들을 요구하는 것들이다. 보통, 반드시는 아니지만, 이들 양들은 저장되고, 전달되고, 조합되고, 비교되며, 그 외 조작되는 것이 가능한 전기적, 자기, 또는 광학 신호들의 형태를 취한다. 주로 일반적인 사용의 이유들로, 신호들을 비트들, 값들, 요소들, 심볼들, 문자들, 용어들, 숫자들 등으로 나타내는 것이 때로는 편리하다는 것이 입증되었다. 그러나, 이들 및 유사한 용어들 모두는 적절한 물리적 양들과 연관될 것이며 단지 이들 양들에 적용된 편리한 라벨들이라는 것이 주의되어야 한다.
뿐만 아니라, 수행된 조작들은, 종종 부가 또는 비교와 같은, 용어들로 참조되며, 이것은 일반적으로 인간 조작자에 의해 수행된 정신적 동작들과 연관된다. 어떤 이러한 인간 조작자의 능력도, 하나 이상의 실시예들의 부분을 형성하는 여기에서 설명된 동작들 중 임의의 것에서, 대부분의 경우들에서 필요하지 않거나, 또는 바람직하지 않다. 오히려, 동작들은 기계 동작들이다. 다양한 실시예들의 동작들을 수행하기 위한 유용한 기계들은 범용 디지털 컴퓨터들 또는 유사한 디바이스들을 포함한다.
다양한 실시예들은 또한 이들 동작들을 수행하기 위한 장치 또는 시스템들에 관한 것이다. 이러한 장치는 요구된 목적을 위해 특수하게 구성될 수 있거나 또는 그것은 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 또는 재구성된 것으로서 범용 컴퓨터를 포함할 수 있다. 여기에서 제공된 프로시저들은 본질적으로 특정한 컴퓨터 또는 다른 장치에 관련되지 않는다. 다양한 범용 기계들은 여기에서의 교시들에 따라 기록된 프로그램들과 함께 사용될 수 있거나, 또는 그것은 요구된 방법 단계들을 수행하기 위해 보다 특수화된 장치를 구성하는 것이 편리하다는 것을 입증해 보일 수 있다. 다양한 이들 기계들에 대한 요구된 구조는 주어진 설명으로부터 보일 것이다.
개시의 요약은 판독자가 기술적 개시의 특징을 빨리 알아내도록 허용하기 위해 제공된다는 것이 강조된다. 그것이 청구항들의 범위 또는 의미를 해석하거나 또는 제한하기 위해 사용되지 않을 것이라는 점을 포함해서 제안된다. 또한, 앞서 말한 상세한 설명에서, 다양한 특징들은 개시를 간소화할 목적으로 단일 실시예에서 함께 그룹핑된다는 것이 이해될 수 있다. 개시의 이러한 방법은 청구된 실시예들이 각각의 청구항에서 명확하게 나열된 것보다 많은 특징들을 요구한다는 의도를 반영한 것으로서 해석되지 않을 것이다. 오히려, 다음의 청구항들이 반영하는 바와 같이, 발명의 주제는 단일의 개시된 실시예의 모두보다 적은 특징들이 있다. 따라서, 다음의 청구항들은 상세한 설명으로 통합되며, 각각의 청구항은 별개의 실시예로서 그 자체로 성립한다. 첨부된 청구항들에서, 용어들("포함하는" 및 "여기에서")은 각각 각각의 용어들("포함한" 및 "여기서")의 평이한 영어 등가물들로서 사용된다. 게다가, 용어들("제 1", "제 2", "제 3" 등)은 단지 라벨들로서 사용되며, 그것들의 오브젝트들에 대한 수치적 요건들을 부여하도록 의도되지 않는다.
상기 설명된 것은 개시된 아키텍처의 예들을 포함한다. 물론, 구성요소들 및 방법들의 모든 인지 가능한 조합을 설명하는 것은 가능하지 않지만, 이 기술분야의 통상의 기술자는 많은 추가 조합들 및 순열들이 가능하다는 것을 인식할 수 있다. 따라서, 신규 아키텍처는 첨부된 청구항들의 사상 및 범위 내에 있는 모든 이러한 변경들, 수정들 및 변화들을 포괄하도록 의도된다.
100: 다중-에이전트 메시징 시스템 110: 메시징 서버
120: 네트워크 130: 셀 시스템
150: 스마트폰 디바이스 160: 태블릿 디바이스
170: 웹 브라우저 180: 개인용 컴퓨터 디바이스
200: 메시징 시스템 210: 도메인 이름 프론트 엔드
215: 챗 서버 220: 네트워크 버스
230: 백엔드 서버 231: 오프라인 저장 서버
232: 세션 서버 233: 존재 서버
234: 푸시 저장 서버 235: 챗 활동 모니터링 서버
236: 차단 리스트 서버 237: 정보 서버
238: 프로필 사진 서버 239: 스팸 로깅 서버
240: 통계 서버 241: 동기 서버
242: 웹 서버 243: 키 서버
244: 그룹 서버 245: MMD 서버
246: 멀티미디어 서버 247: 지불 서버
248: 등록 서버 249: 음성 전달 서버
300: 사용자 인터페이스 305: 클라이언트 디바이스
310: 인박스 헤더 제어부 320: 메시지 스레드
330: 메시지 스레드 엔트리 335: 검증된 엔티티 표시자
350: 사용자 인터페이스 365: 구성 제어부
370: 메시지 스레드 상호작용 디스플레이 375: 메시지 버블
380: 거래 접촉 제어부 405: 관리자 클라이언트 디바이스
410: 메시징 서버 415: 에이전트 매핑 리포지터리
420: 메시징 클라이언트 430: 사용자 인터페이스 구성요소
440: 메시징 구성요소 450: 관리자 계정 등록
470: 에이전트 관리 구성요소 480: 메시지 프로세싱 구성요소
505: 에이전트 클라이언트 디바이스 510: 에이전트 계정 등록 명령
550: 에이전트 계정 등록 555: 에이전트 계정 승인
560: 에이전트 등록 605: 사용자 클라이언트 디바이스
650: 메시지 패키지 700: 단-대-단 암호화 통신 시스템
720: 클라이언트 디바이스 750: 메시징 시스템
770: 전송자-구동 그룹 메시지 780: 재송신-구동 그룹 메시지
820: 전송자 디바이스 825: 수신인 디바이스
830: 메시징 애플리케이션 840: 메시징 구성요소
850: 보안 구성요소 860: 메시징 저장소
870: 브로드캐스트 그룹 정의 875: 전송자 브로드캐스트 암호화 키
890: 브로드캐스트 패키지 910: 수신인 공개 키 업로드
1101: 메시징 개시 1103: 암호화 개시
1104: 초기 메시지 교환 1105: 디폴트 에이전트 클라이언트 디바이스
1106: 에이전트 재할당 1107: 사용자 클라이언트 디바이스
1108: 후속 메시지 교환 1126: 메시지 스레드 재라벨링
1151: 메시징 개시 1152: 그룹 암호화 개시
1153: 메시지 교환 1155: 에이전트 클라이언트 디바이스
1300: 집중화 시스템 1310: 클라이언트 디바이스
1312: 통신 미디어 1314: 통신 신호
1320: 집중화 서버 디바이스 1330: 프로세싱 구성요소
1340: 통신 구성요소 1350: 메시징 서버
1400: 분산형 시스템 1420: 분산형 서버 디바이스
1430: 프로세싱 구성요소 1440: 통신 구성요소
1450: 메시징 서버 1500: 컴퓨팅 아키텍처
1504: 프로세싱 유닛 1506: 시스템 메모리
1508: 시스템 버스 1510: 비-휘발성 메모리
1512: 휘발성 메모리 1520: 광학 디스크 드라이브
1524: HDD 인터페이스 1530: 운영 시스템
1532: 애플리케이션 프로그램 1534: 프로그램 모듈
1536: 프로그램 데이터 1538: 키보드
1540: 마우스 1542: 입력 디바이스 인터페이스
1544: 모니터 1546: 비디어 어댑터
1548: 원격 컴퓨터 1550: 메모리/저장 디바이스
1556: 어댑터 1558: 모뎀
1600: 통신 아키텍처 1602: 클라이언트
1604: 서버 1606: 통신 프레임워크
1608: 클라이언트 데이터 저장소 1610: 서버 데이터 저장소
1700: 다중-에이전트 메시징 시스템 1710: 라디오 인터페이스
1712: 수신기 1714: 주파수 합성기
1716: 송신기 1718: 안테나
1720: 기저대역 회로 1730: 컴퓨팅 플랫폼
1735: 논리 회로 1740: 프로세싱 구성요소
1760: 소프트웨어 구성요소

Claims (20)

  1. 컴퓨터-구현 방법에 있어서,
    사용자 계정과 연관된 사용자 클라이언트 디바이스로부터 다중-에이전트 엔티티에 대한 인입 메시지를 수신하는 단계;
    상기 다중-에이전트 엔티티의 관리자 계정에 의한 에이전트 계정에 대한 메시지 공유 인가에 기초하여 상기 인입 메시지를 수신하기 위해, 상기 다중-에이전트 엔티티와 연관된 에이전트 계정을 결정하는 단계 - 상기 메시지 공유 인가는 에이전트 매핑 리포지터리에 저장됨 - ;
    상기 에이전트 계정과 연관된 에이전트 클라이언트 디바이스를 결정하는 단계; 및
    상기 에이전트 계정과 연관된 에이전트 클라이언트 디바이스로 상기 인입 메시지를 전송하는 단계를 포함하는, 컴퓨터-구현 방법.
  2. 제 1 항에 있어서,
    상기 다중-에이전트 엔티티에 대해 관리자 계정에 대한 관리자 계정 등록을 수신하는 단계;
    상기 다중-에이전트 엔티티와 연관된 것으로 상기 관리자 계정을 등록하는 단계; 및
    상기 다중-에이전트 엔티티에 대해 상기 에이전트 계정에 대한 에이전트 계정 등록을 수신하는 단계를 더 포함하는, 컴퓨터-구현 방법.
  3. 제 2 항에 있어서,
    상기 메시지 공유 인가는 상기 다중-에이전트 엔티티에 대해 상기 에이전트 계정에 대한 에이전트 계정 등록을 포함하는, 컴퓨터-구현 방법.
  4. 제 3 항에 있어서,
    상기 에이전트 계정 등록에 응답하여 상기 다중-에이전트 엔티티에 대한 후속 메시지 스레드들(subsequent message threads)의 메시지 공유 인가를 위한 에이전트 계정을 등록하는 단계를 더 포함하는, 컴퓨터-구현 방법.
  5. 제 1 항에 있어서,
    상기 관리자 계정으로부터 상기 사용자 계정과 상기 관리자 계정 사이에서의 메시지 스레드에 대한 메시지-스레드 포워드를 수신하는 단계 - 상기 메시지-스레드 포워드는 상기 에이전트 계정을 특정함 - ;
    메시징 서버 디바이스 상에서 상기 에이전트 계정으로 상기 메시지 스레드를 등록하는 단계;
    상기 메시징 서버 디바이스에서 상기 사용자 클라이언트 디바이스로부터 상기 다중-에이전트 엔티티에 대한 인입 메시지를 수신하는 단계; 및
    상기 에이전트 계정으로 상기 메시지 스레드를 등록하는 것에 기초하여 상기 인입 메시지를 상기 에이전트 클라이언트 디바이스로 전송하는 단계를 더 포함하는, 컴퓨터-구현 방법.
  6. 제 5 항에 있어서,
    상기 메시지-스레드 포워드에 응답하여 상기 관리자 계정 대신에 상기 에이전트 계정을 나타내기 위해 상기 사용자 클라이언트 디바이스 상에서 상기 메시지 스레드에 대한 메시지 스레드 인터페이스를 재라벨링하는(relabeling) 단계를 더 포함하는, 컴퓨터-구현 방법.
  7. 제 1 항에 있어서,
    상기 다중-에이전트 엔티티를 나타내기 위해 상기 사용자 클라이언트 디바이스 상에서 메시지 스레드 인터페이스를 라벨링하는 단계를 더 포함하는, 컴퓨터-구현 방법.
  8. 장치에 있어서,
    사용자 계정과 연관된 사용자 클라이언트 디바이스로부터 다중-에이전트 엔티티에 대한 인입 메시지를 수신하고; 에이전트 계정과 연관된 에이전트 클라이언트 디바이스를 결정하고; 상기 에이전트 계정과 연관된 에이전트 클라이언트 디바이스로 상기 인입 메시지를 전송하도록 동작하는 메시징 프로세싱 구성요소; 및
    상기 다중-에이전트 엔티티의 관리자 계정에 의한 상기 에이전트 계정에 대한 메시지 공유 인가에 기초하여 상기 인입 메시지를 수신하기 위해, 상기 다중-에이전트 엔티티와 연관된 에이전트 계정을 결정하도록 동작하는 에이전트 관리 구성요소를 포함하고,
    상기 메시지 공유 인가는 에이전트 매핑 리포지터리에 저장된, 장치.
  9. 제 8 항에 있어서, 상기 에이전트 관리 구성요소는 추가적으로,
    상기 다중-에이전트 엔티티에 대해 관리자 계정에 대한 관리자 계정 등록을 수신하고;
    상기 다중-에이전트 엔티티와 연관된 것으로 상기 관리자 계정을 등록하고;
    상기 다중-에이전트 엔티티에 대해 상기 에이전트 계정에 대한 에이전트 계정 등록을 수신하도록 동작하는, 장치.
  10. 제 9 항에 있어서,
    상기 메시지 공유 인가는 상기 다중-에이전트 엔티티에 대해 상기 에이전트 계정에 대한 에이전트 계정 등록을 포함하는, 장치.
  11. 제 10 항에 있어서, 상기 에이전트 관리 구성요소는 추가적으로,
    상기 에이전트 계정 등록에 응답하여 상기 다중-에이전트 엔티티에 대한 후속 메시지 스레드들의 메시지 공유 인가를 위한 상기 에이전트 계정을 등록하도록 동작하는, 장치.
  12. 제 8 항에 있어서, 상기 메시징 프로세싱 구성요소는 추가적으로,
    상기 관리자 계정으로부터 상기 사용자 계정과 상기 관리자 계정 사이에서의 메시지 스레드에 대한 메시지-스레드 포워드를 수신하고, - 상기 메시지-스레드 포워드는 상기 에이전트 계정을 특정함 - ;
    메시징 서버 디바이스 상에서 상기 에이전트 계정으로 상기 메시지 스레드를 등록하고;
    상기 메시징 서버 디바이스에서 상기 사용자 클라이언트 디바이스로부터 상기 다중-에이전트 엔티티에 대한 인입 메시지를 수신하고;
    상기 에이전트 계정으로 상기 메시지 스레드를 등록하는 것에 기초하여 상기 인입 메시지를 상기 에이전트 클라이언트 디바이스로 전송하도록 동작하는, 장치.
  13. 제 12 항에 있어서, 상기 메시징 프로세싱 구성요소는 추가적으로,
    상기 메시지-스레드 포워드에 응답하여 상기 관리자 계정 대신에 상기 에이전트 계정을 나타내기 위해 상기 사용자 클라이언트 디바이스 상에서 상기 메시지 스레드에 대한 메시지 스레드 인터페이스를 재라벨링하도록 동작하는, 장치.
  14. 제 8 항에 있어서, 상기 메시징 프로세싱 구성요소는 추가적으로,
    상기 다중-에이전트 엔티티를 나타내기 위해 상기 사용자 클라이언트 디바이스 상에서 메시지 스레드 인터페이스를 라벨링하도록 동작하는, 장치.
  15. 지시들을 포함한 적어도 하나의 비-일시적 컴퓨터-판독 가능한 저장 매체에 있어서,
    상기 지시들은 실행될 때, 시스템으로 하여금:
    사용자 계정과 연관된 사용자 클라이언트 디바이스로부터 다중-에이전트 엔티티에 대한 인입 메시지를 수신하게 하고;
    상기 인입 메시지를 수신하기 위해, 상기 다중-에이전트 엔티티와 연관된 에이전트 계정을 결정하게 하고;
    상기 다중-에이전트 엔티티의 관리자 계정에 의한 상기 에이전트 계정에 대한 메시지 공유 인가에 기초하여 상기 에이전트 계정과 연관된 에이전트 클라이언트 디바이스를 결정하게 하고 - 상기 메시지 공유 인가는 에이전트 매핑 리포지터리에 저장됨 - ;
    상기 에이전트 계정과 연관된 에이전트 클라이언트 디바이스로 상기 인입 메시지를 전송하게 하는, 적어도 하나의 비-일시적 컴퓨터-판독 가능한 저장 매체.
  16. 제 15 항에 있어서,
    실행될 때, 시스템으로 하여금:
    상기 다중-에이전트 엔티티에 대해 관리자 계정에 대한 관리자 계정 등록을 수신하게 하고;
    상기 다중-에이전트 엔티티와 연관된 것으로 상기 관리자 계정을 등록하게 하고;
    상기 다중-에이전트 엔티티에 대해 상기 에이전트 계정에 대한 에이전트 계정 등록을 수신하게 하는 추가 지시들을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독 가능한 저장 매체.
  17. 제 16 항에 있어서,
    상기 메시지 공유 인가는 상기 다중-에이전트 엔티티에 대해 상기 에이전트 계정에 대한 에이전트 계정 등록을 포함하며, 실행될 때, 시스템으로 하여금:
    상기 에이전트 계정 등록에 응답하여 상기 다중-에이전트 엔티티에 대한 후속 메시지 스레드들의 메시지 공유 인가를 위한 에이전트 계정을 등록하게 하는 추가 지시들을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독 가능한 저장 매체.
  18. 제 15 항에 있어서,
    실행될 때, 시스템으로 하여금:
    상기 관리자 계정으로부터 상기 사용자 계정과 상기 관리자 계정 사이에서의 메시지 스레드에 대한 메시지-스레드 포워드를 수신하게 하고, - 상기 메시지-스레드 포워드는 상기 에이전트 계정을 특정함 - ;
    메시징 서버 디바이스 상에서 상기 에이전트 계정으로 상기 메시지 스레드를 등록하게 하고;
    상기 메시징 서버 디바이스에서 상기 사용자 클라이언트 디바이스로부터 상기 다중-에이전트 엔티티에 대한 인입 메시지를 수신하게 하며;
    상기 에이전트 계정으로 상기 메시지 스레드를 등록하는 것에 기초하여 상기 인입 메시지를 상기 에이전트 클라이언트 디바이스로 전송하게 하는 추가 지시들을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독 가능한 저장 매체.
  19. 제 18 항에 있어서,
    실행될 때, 시스템으로 하여금:
    상기 메시지-스레드 포워드에 응답하여 상기 관리자 계정 대신에 상기 에이전트 계정을 나타내기 위해 상기 사용자 클라이언트 디바이스 상에서 상기 메시지 스레드에 대한 메시지 스레드 인터페이스를 재라벨링하게 하는 추가 지시들을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독 가능한 저장 매체.
  20. 제 15 항에 있어서,
    실행될 때, 시스템으로 하여금:
    상기 다중-에이전트 엔티티를 나타내기 위해 상기 사용자 클라이언트 디바이스 상에서 메시지 스레드 인터페이스를 라벨링하게 하는 추가 지시들을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독 가능한 저장 매체.
KR1020207003490A 2017-07-13 2018-04-13 다중-에이전트 메시징을 위한 기술들 KR102527524B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762532305P 2017-07-13 2017-07-13
US62/532,305 2017-07-13
US15/945,306 2018-04-04
US15/945,306 US10587551B1 (en) 2017-07-13 2018-04-04 Techniques for multi-agent messaging
PCT/US2018/027434 WO2019013847A1 (en) 2017-07-13 2018-04-13 MULTI-AGENT MESSAGING TECHNIQUES

Publications (2)

Publication Number Publication Date
KR20200020946A KR20200020946A (ko) 2020-02-26
KR102527524B1 true KR102527524B1 (ko) 2023-05-02

Family

ID=65001744

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207003490A KR102527524B1 (ko) 2017-07-13 2018-04-13 다중-에이전트 메시징을 위한 기술들

Country Status (6)

Country Link
US (3) US10587551B1 (ko)
EP (1) EP3652901A4 (ko)
JP (1) JP2020526991A (ko)
KR (1) KR102527524B1 (ko)
CN (2) CN115767523A (ko)
WO (1) WO2019013847A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5983785B2 (ja) * 2012-06-29 2016-09-06 日本電気株式会社 M2mにおけるグループ・ベースド・フィーチャのためのセキュリティアップデート
DE102019116705A1 (de) * 2019-06-19 2020-12-24 adviqo GmbH Verfahren zur Kommunikation mittels Messenger-Nachrichten und System zur Durchführung des Verfahrens
CN113536170A (zh) * 2021-06-29 2021-10-22 深圳市明源云科技有限公司 一种打印浏览器内容的方法和装置
EP4336797A1 (en) * 2022-07-28 2024-03-13 WhatsApp LLC Device verification using key transparency
KR102553672B1 (ko) * 2022-10-13 2023-07-10 주식회사 마이링크 분산 메시징 서버를 통한 데이터 처리 방법, 및 이를 포함하는 분산 메시징 시스템
WO2024048858A1 (ko) * 2022-09-02 2024-03-07 주식회사 마이링크 분산 메시징 서버를 통한 데이터 처리 방법, 및 이를 포함하는 분산 메시징 시스템

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120124147A1 (en) * 2010-11-12 2012-05-17 Hamlin Drew W Organizing Messages Into Conversation Threads
US20170104863A1 (en) * 2015-10-08 2017-04-13 Signal Vine, Llc Systems and methods for providing a two-way, intelligent text messaging platform

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9514459B1 (en) * 2000-03-24 2016-12-06 Emc Corporation Identity broker tools and techniques for use with forward proxy computers
JP3989194B2 (ja) * 2000-06-12 2007-10-10 株式会社Qript 通信システム
US7409428B1 (en) * 2003-04-22 2008-08-05 Cooper Technologies Company Systems and methods for messaging to multiple gateways
US20050232175A1 (en) * 2004-04-16 2005-10-20 Vadim Draluk System and method for provisioning device management tree parameters over a client provisioning protocol
US8676954B2 (en) * 2011-12-06 2014-03-18 Kaseya International Limited Method and apparatus of performing simultaneous multi-agent access for command execution through a single client
US9806963B2 (en) 2013-10-18 2017-10-31 Cellco Partnership Feature activation on device
US9036807B1 (en) * 2013-10-25 2015-05-19 Teletech Holdings, Inc. Method and system for routing messages and connecting users associated with live-connected content
US9444775B2 (en) 2013-12-06 2016-09-13 Cellco Partnership Multipurpose internet mail extensions (“MIME”) metadata for group messaging
US10257151B2 (en) * 2014-10-27 2019-04-09 Phanto, Llc Systems and methods for enabling dialog amongst different participant groups with variable and association-based privacy
WO2016106279A1 (en) * 2014-12-22 2016-06-30 Entefy, Inc. System and method of personalized message threading for a multi-format, multi-protocol communication system
US10581771B2 (en) * 2016-04-11 2020-03-03 Facebook, Inc. Techniques for a messaging agent platform
US20180083896A1 (en) * 2016-09-21 2018-03-22 Facebook, Inc. Modular inbox surface for content delivery

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120124147A1 (en) * 2010-11-12 2012-05-17 Hamlin Drew W Organizing Messages Into Conversation Threads
US20170104863A1 (en) * 2015-10-08 2017-04-13 Signal Vine, Llc Systems and methods for providing a two-way, intelligent text messaging platform

Also Published As

Publication number Publication date
EP3652901A4 (en) 2020-06-03
EP3652901A1 (en) 2020-05-20
CN111052685A (zh) 2020-04-21
US11146519B1 (en) 2021-10-12
WO2019013847A1 (en) 2019-01-17
US11616747B1 (en) 2023-03-28
JP2020526991A (ja) 2020-08-31
US10587551B1 (en) 2020-03-10
CN111052685B (zh) 2022-11-29
CN115767523A (zh) 2023-03-07
KR20200020946A (ko) 2020-02-26

Similar Documents

Publication Publication Date Title
KR102480096B1 (ko) 임시 컨텐츠 메시지를 처리하기 위한 방법들 및 시스템들
KR102527524B1 (ko) 다중-에이전트 메시징을 위한 기술들
US10917374B2 (en) Techniques to visualize messaging flow
KR102276159B1 (ko) 모바일 장치 상의 애플리케이션에서 원격 웹 클라이언트를 관리하는 기술
US11637795B1 (en) Techniques for templated messages
US11165899B1 (en) Techniques to manage contact records
US20190207873A1 (en) Techniques for batched bulk processing
US10735384B2 (en) Techniques for key ratcheting with multiple step sizes
US10157102B2 (en) Techniques to scan and reorganize media files to remove gaps
EP4027257A1 (en) Methods and systems for end-to-end encrypted message history exchange
US10313503B2 (en) Techniques to reconfigure messaging clients during contact information changes
EP3382624A1 (en) Techniques for templated messages
US20190147101A1 (en) Techniques for time intersection
US11722443B1 (en) Techniques for media item display configuration
US11171900B1 (en) Techniques for media endpoint configuration
KR102478805B1 (ko) 다중 스텝 크기들을 갖는 키 래칫팅에 대한 기술들
EP3364597A1 (en) Techniques for key ratcheting with multiple step sizes

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant