KR102361002B1 - System and method for third party application activity data collection - Google Patents

System and method for third party application activity data collection Download PDF

Info

Publication number
KR102361002B1
KR102361002B1 KR1020217013915A KR20217013915A KR102361002B1 KR 102361002 B1 KR102361002 B1 KR 102361002B1 KR 1020217013915 A KR1020217013915 A KR 1020217013915A KR 20217013915 A KR20217013915 A KR 20217013915A KR 102361002 B1 KR102361002 B1 KR 102361002B1
Authority
KR
South Korea
Prior art keywords
contact
user
party application
stream
website
Prior art date
Application number
KR1020217013915A
Other languages
Korean (ko)
Other versions
KR20210056451A (en
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 윅스.컴 리미티드
Priority to KR1020227003986A priority Critical patent/KR102433089B1/en
Publication of KR20210056451A publication Critical patent/KR20210056451A/en
Application granted granted Critical
Publication of KR102361002B1 publication Critical patent/KR102361002B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/021Services related to particular areas, e.g. point of interest [POI] services, venue services or geofences
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/80Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Strategic Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Accounting & Taxation (AREA)
  • Development Economics (AREA)
  • Finance (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Game Theory and Decision Science (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

시스템은 웹사이트 및 적어도 하나의 제 3 자 애플리케이션 사이에서 표준화된 포맷을 가지는 적어도 하나의 활동 메시지를 조정하는 적어도 하나의 허브, 그리고 적어도 하나의 활동 메시지를 청취하고 적어도 하나의 메시지로부터 추출되는 데이터를 식별된 컨택 및 익명의 컨택 중 적어도 하나와 연관되는 스트림에 적어도 추가하는 활동 조정기를 포함하고, 여기서 식별된 컨택 및 익명의 컨택 중 적어도 하나는 웹사이트의 사용자이다. 시스템은 또한 스트림으로부터 컨택 관련 정보를 검색하고 분석하고 그리고 컨택에 대한 이전에 보유된 정보를 강화하는 컨택 조정기 및 웹사이트에 의해 그리고 컨택에 의해 사용되도록 활동 스트림들 및 컨택 관련 정보를 저장하는 적어도 하나의 데이터베이스를 포함한다.The system comprises at least one hub for coordinating at least one activity message having a standardized format between the website and at least one third party application, and for listening to the at least one activity message and extracting data from the at least one message. an activity coordinator for at least adding to a stream associated with at least one of the identified contact and the anonymous contact, wherein at least one of the identified contact and the anonymous contact is a user of the website. The system also retrieves and analyzes contact-related information from the stream and at least one that stores activity streams and contact-related information for use by the contact and by the website and the contact coordinator that enhances previously held information about the contact. includes a database of

Description

제 3 자 애플리케이션 활동 데이터 수집을 위한 시스템 및 방법{SYSTEM AND METHOD FOR THIRD PARTY APPLICATION ACTIVITY DATA COLLECTION}SYSTEM AND METHOD FOR THIRD PARTY APPLICATION ACTIVITY DATA COLLECTION

본 발명은 온라인 애플리케이션들 및 특히 포함되어 있는 제 3 자 애플리케이션에 의해 온라인 애플리케이션들을 사용하는 것에 관한 것이다.The present invention relates to online applications and in particular the use of online applications by an embedded third party application.

관련 출원에 대한 교차 참조CROSS REFERENCE TO RELATED APPLICATIONS

본 출원은 2013년 12월 4일에 제출되고, 미국 예비 특허출원 번호 61/911,485로부터의 이점을 주장하고, 상기 출원은 이에 그 전체가 참조로서 통합되어 있다.This application was filed on December 4, 2013, and claims the benefit from US Provisional Patent Application No. 61/911,485, which application is hereby incorporated by reference in its entirety.

상업적으로 구입 가능하고 웹사이트들 및 다른 온라인 애플리케이션들을 생성하고 편집하는 데 사용될 수 있는 많은 웹사이트 구축 시스템들 및 다른 대화형 애플리케이션(interactive application) 구축 툴(tool)들이 있다. 최종 사용자들은 정규의 개인용 컴퓨터들, 스마트폰들, 태블릿들 및 다른 데스크탑 또는 모바일 디바이스들과 같은 다양한 여러 플랫폼(platform)들 상에 있는 클라이언트 소프트웨어(client software)를 사용하여 그와 같은 웹사이트들에 액세스할 수 있다.There are many website building systems and other interactive application building tools that are commercially available and that can be used to create and edit websites and other online applications. End users can access such websites using client software on a variety of different platforms, such as regular personal computers, smartphones, tablets and other desktop or mobile devices. can be accessed.

이 웹사이트 구축 시스템들은 인터넷에 접속되는 서버 또는 서버들 상에 호스팅(hosting)되고 하이퍼텍스트 전송 프로토콜(hypertext transfer protocol; HTTP)과 같은 인터넷 통신 프로토콜들을 사용하여 액세스되는 전 온라인(fully on-line) 웹사이트 구축 시스템들과 같이 상이한 구성들로 출시될 수 있다. 이 웹사이트 구축 시스템들의 생성, 편집 및 배치는 모두 서버들과 직접적으로 온-라인 작업으로 수행된다.These website building systems are hosted on a server or servers that are connected to the Internet and are fully on-line accessed using Internet communication protocols such as hypertext transfer protocol (HTTP). It can be released in different configurations, such as website building systems. The creation, editing and deployment of these website building systems are all performed on-line directly with the servers.

웹사이트 구축 시스템들은 또한 부분적으로 온라인이거나 때로는 심지어 전체가 오프라인(offline)일 수 있다. 부분 온라인 시스템의 경우, 웹사이트 편집은 사용자의 기계에서 국지적으로 수행되고 이후에 배치를 위해 중앙 서버 또는 서버들로 업로드된다. 일단 업로드되면, 이 웹사이트 구축 시스템들은 전 온라인 웹사이트 구축 시스템들과 동일한 방식으로 거동한다.Website building systems may also be partially online or sometimes even entirely offline. In the case of partial online systems, website editing is performed locally on the user's machine and later uploaded to a central server or servers for deployment. Once uploaded, these website building systems behave in the same way as all online website building systems.

웹사이트 구축 시스템들은 시스템 내에 데이터 및 요소들을 조직하기 위하여 내부 데이터 아키텍처(architecture)를 가진다. 이 아키텍처는 사용자가 보는 바에 따른 해당 사이트의 외부 뷰(external view)와 상이할 수 있고 또한 전형적인 하이퍼텍스트 마크업 언어(hypertext markup language; HTML) 페이지들이 브라우저에 전송되는 방식과 상이할 수 있다. 예를 들어, 내부 데이터 아키텍처는 페이지 상의 각 요소(생성기(creator), 생성 시간, 액세스 허가들, 템플릿(template)들로의 링크들 등) 별로 웹사이트 구축 시스템 내의 사이트를 편집하고 관리유지하는 데 필수적인 추가 특성들을 포함할 수 있지만, 최종 사용자(또는 심지어 일부 편집 사용자들)가 외부에서 볼 수 없다. 웹사이트 구축 시스템 기반 사이트에 대한 전형적인 아키텍처는 구성요소들(예를 들어, 형상 구성요소들, 영상 구성요소들, 텍스트 구성요소들, 미니 페이지들을 포함하는 단일 및 다 페이지 컨테이너(container)들 등)을 포함하는 페이지들로 구성될 수 있다.Website building systems have an internal data architecture for organizing data and elements within the system. This architecture may be different from the external view of the site as the user sees it, and may also differ from the way typical hypertext markup language (HTML) pages are sent to the browser. For example, the internal data architecture adds essential to editing and maintaining the site within the website building system for each element on the page (creator, creation time, access permissions, links to templates, etc.) It may contain properties, but not externally visible to the end user (or even some editing users). A typical architecture for a website building system-based site is composed of components (eg, single and multi-page containers containing shape components, image components, text components, mini-pages, etc.) It may be composed of pages including

구성요소들은 어떠한 내부 컨텐츠(internal content)도 가지지 않는 별 형상(비록 그것이 컬러, 크기, 위치 및 어떤 다른 속성들을 가질지라도)과 같이 내용이 없을 수 있거나, 또는 텍스트 문단 구성요소와 같이 내부 컨텐츠를 가질 수 있으며, 이 내부 컨텐츠는 디스플레이되는 텍스트뿐만 아니라 폰트, 포맷팅(formatting) 및 레이아웃 정보를 포함한다. 이 내용은 물론 텍스트 문단 구성요소의 하나하나 사례별로 다양할 수 있다.Elements may have no content, such as a star shape (although it may have color, size, position, and any other properties) that has no internal content, or may have internal content, such as a text paragraph element. This internal content includes not only the displayed text, but also font, formatting, and layout information. This content can of course vary from case to case of each element of a text paragraph.

그와 같은 웹사이트 구축 시스템을 사용하는 설계자는 스크레치(scratch)(빈 화면으로 시작하는)로부터 새로운 창작물을 설계할 수 있거나, 또는 설계자 자신에 의해, 시스템 생성기에 의해 또는 설계자 커뮤니티에 의해 생성되는 사전 규정된 애플리케이션 템플릿들에 의존할 수 있다. 웹사이트 구축 시스템은 단순한 구성요소 집합체들인 템플릿들을 지원하고, 페이지들(또는 미니 페이지들) 또는 심지어 페이지들의 세트들을 완성하고 웹 사이트들을 완성할 수 있다.Designers using such website building systems can design new creations from scratch (starting with a blank screen), or a dictionary created by the designers themselves, by the system generators, or by the designers community. It may depend on prescribed application templates. A website building system supports templates that are simple collections of components, complete pages (or mini pages) or even sets of pages, and complete websites.

애플리케이션 템플릿이 제공되면, 설계자는 이것을 자유로이 맞춤화(customize)할 수 있다- 자신의 템플릿의 버전을 생성하기 위해 템플릿의 모든 요소들을 추가, 제거 또는 수정하는 것 -. 그와 같은 맞춤화는 템플릿의 수정된 버전(템플릿과 구분되고 별개인)을 생성함으로써 구현될 수 있다. 대안으로, 웹사이트 구축 시스템은 원래의 템플릿과의 링크를 유지하고, 따라서 이후에 템플릿에 행해진 변경들을 반영할 상속 유형 메커니즘(inheritance-type mechanism)을 통해 맞춤화를 적용할 수 있다.Once an application template is provided, the designer is free to customize it - adding, removing or modifying all elements of the template to create his own version of the template. Such customization may be implemented by creating a modified version of the template (separate from and separate from the template). Alternatively, the website building system may maintain a link with the original template and thus apply customizations through an inheritance-type mechanism that will reflect changes made to the template later.

웹사이트 구축 시스템들은 또한 제 3 자 애플리케이션들 및 이들 내에 임베딩(embedding)되어 있는 구성요소들을 사용하여 확장될 수 있다. 그와 같은 제 3 자 애플리케이션들은 웹사이트 구축 시스템 설계 환경에 포함될 수 있거나 또는 다수의 배포 메커니즘들을 통해, 예를 들어, 웹사이트 구축 시스템 내에 통합되어 있는 애플리케이션 스토어(앱스토어(AppStore))로부터 또는 웹사이트 구축 시스템(website building system; WBS) 벤더(vendor)에 의해 또는 다른 실체에 의해 운용되는 별개의, 웹 기반 또는 독자형(standalone) 애플리케이션 리포지토리(application repository)(또는 앱스토어)로부터 별개로 구매(또는 다른 방식으로 획득)될 수 있다. 제 3 자 애플리케이션들은 또한 제 3 자 애플리케이션 벤더로부터 직접 획득될 수 있다(앱스토어를 통하거나 통하지 않고) - 이는 실제 설치 모듈을 제공하거나 또는 단지 활성화 코드(activation code) 또는 액세스 코드만을 제공할 것이다.Website building systems can also be extended using third party applications and components embedded therein. Such third party applications may be included in the website building system design environment or through a number of distribution mechanisms, for example, from an application store (AppStore) integrated within the website building system or from the web website building system (WBS) separately purchased from a separate, web-based or standalone application repository (or app store) operated by a vendor or by another entity ( or obtained in another way). 3rd party applications can also be obtained directly from 3rd party application vendors (either through the App Store or not) - which will provide the actual installation module or just an activation code or access code.

제 3 자 애플리케이션은 프론트 엔드(front-end)(디스플레이) 요소들 및 백 오피스(back-office) 요소들(비주얼 웹 사이트 디스플레이의 일부가 아닌)의 임의의 결합을 포함할 수 있다. 제 3 자 애플리케이션은 전적으로 백 오피스이거나(즉, 디스플레이 요소를 포함하지 않는다), 전적으로 프론트 엔드이거나(즉, 웹 사이트를 사용하는 상황 내에서만 활성화된다) 또는 이 둘의 결합일 수 있다.The third party application may include any combination of front-end (display) elements and back-office elements (not part of the visual website display). Third-party applications may be entirely back-office (ie, do not include display elements), entirely front-end (ie only activated within the context of using the website), or a combination of the two.

제 3 자 애플리케이션의 백 오피스 요소는 데이터베이스 통신, 외부 업데이트 선택사양 등과 같은 기능들을 포함할 수 있다. 예를 들어, 블로그 제 3 자 애플리케이션은 업데이트들이 비 인간 소스(non-human source)들(예를 들어, 주요 뉴스 서비스로부터의 RSS 뉴스 피드(feed))뿐만 아니라 웹사이트와 관련되지 않은 인간 소스들(예를 들어, 블로그 엔트리(blog entry)들의 제출이 가능한 독자형 스마트폰 애플리케이션)로부터 수신되는 것을 가능하게 하는 백 오피스 요소를 포함할 수 있다.The back office component of the third party application may include functions such as database communications, external update options, and the like. For example, a blog 3rd party application may provide updates from non-human sources (eg, RSS news feeds from major news services) as well as human sources not associated with the website. It may include a back office element that enables it to be received from (eg, a standalone smartphone application capable of submission of blog entries).

제 3 자 애플리케이션의 시각 요소를 포함하는 웹 사이트에 통합하는 것은 다수의 방식으로 행해질 수 있다. 위젯(widget) 형 제 3 자 애플리케이션들은 웹 사이트 페이지 내에 구성요소로서 임베딩될 수 있는데 반해 섹션(section) 형 제 3 자 애플리케이션들은 웹 사이트에 추가 페이지 또는 페이지들로서 추가될 수 있다.Incorporation into a web site that includes a visual element of a third party application can be done in a number of ways. Widget-type third-party applications may be embedded as components within a website page, whereas section-type third-party applications may be added as additional pages or pages to the website.

더욱이 제 3 자 애플리케이션들(위젯 및 섹션 모두)은 단일 페이지 제 3 자 애플리케이션들 또는 다 페이지 제 3 자 애플리케이션들(내부 URL 구조로서 표현되는 내부 미니 페이지들을 가지는)일 수 있다. 시스템은 네 개의 가능한 결합들(위젯 또는 섹션, 단일 페이지 또는 다 페이지) 중 임의의 결합 또는 모든 결합을 구현할 수 있다.Moreover, third party applications (both widgets and sections) may be single page third party applications or multi page third party applications (with internal mini pages represented as internal URL structures). The system may implement any or all of the four possible combinations (widget or section, single page or multiple pages).

다 페이지 제 3 자 애플리케이션들은 통상적으로 개시 페이지, 특정 내부 미니 페이지(예를 들어, 블로그 제 3 자 애플리케이션에서의 가장 최근의 블로그 엔트리), 미니 페이지 선택 스크린 또는 어떤 다른 미니 페이지일 수 있는 디폴트(default) "랜딩(landing)" 미니 페이지를 제공한다.Multi-page third-party applications typically have a default which may be a launch page, a specific internal mini-page (eg, the most recent blog entry in a blog third-party application), a mini-page selection screen, or some other mini-page. ) provides a "landing" mini-page.

웹사이트 구축 시스템 기반 웹 사이트들에서 제 3 자 애플리케이션들을 사용하는 것은 제 3 자 애플리케이션 인스턴스(application instance)들을 통하여 행해진다. 웹사이트 구축 시스템은 전체 웹 사이트에서 단일 제 3 자 애플리케이션 인스턴스를 가능하게 하고; 웹 사이트 내에서 다수의 제 3 자 애플리케이션들의 인스턴스들이 생성되는 것을 가능하게 하고(그러나 임의의 소정의 제 3 자 애플리케이션의 인스턴스가 하나보다 더 많지 않게) 그리고 다수의 제 3 자 애플리케이션들의 다수의 인스턴스들이 생성되지만 소정의 페이지당 하나보다 더 많은 인스턴스가 생성되지 않는 것을 가능하게 하는 것과 같이, 다수의 레벨들로 제 3 자 애플리케이션들에 대한 다수의 사용들을 지원할 수 있다. 이는 또한 구성요소 제 3 자 애플리케이션들의 페이지당 그러나 섹션 제 3 자 애플리케이션들의 페이지당이 아닌 다수의 인스턴스들을 가능하게 할 수 있고 또한 다수의 제 3 자 애플리케이션들의 다수의 인스턴스들이 제 3 자 애플리케이션 인스턴스들의 양, 다수성 또는 위치에 대한 어떠한 제한없이 생성되는 것을 가능하게 할 수 있다.The use of third party applications in website building system based web sites is done through third party application instances. The website building system enables a single third party application instance across the entire website; Enables multiple instances of third party applications to be created within a website (but no more than one instance of any given third party application) and multiple instances of multiple third party applications Multiple uses for 3rd party applications can be supported at multiple levels, such as enabling creation but no more than one instance per given page. This may also enable multiple instances per page of component third-party applications but not per page of section third-party applications and also that multiple instances of multiple third-party applications may contain an amount of third-party application instances. , can be created without any restrictions on multiplicity or location.

제 3 자 애플리케이션 인스턴스는 인스턴스에 특정한 컨텐츠를 가질 수 있다. 예를 들어, e-샵(e-Shop) 제 3 자 애플리케이션은 특정한 인스턴스와 연관되는 제품 데이터베이스를 가질 수 있는데, 이 제품 데이터베이스는 동일한 e-샵 제 3 자 애플리케이션(동일한 사이트 또는 다른 사이트들에 있는)의 다른 인스턴스들과 연관되는 제품 데이터베이스와 상이하다.A third party application instance may have content specific to the instance. For example, an e-Shop third-party application may have a product database associated with a particular instance, which may have a product database associated with the same e-Shop third-party application (either on the same site or at different sites). ) is different from the product database associated with other instances of

논의를 위해, 제 3 자 애플리케이션 및 이의 미니 페이지들 또는 요소들(즉, "랩퍼 페이지(wrapper page)")을 포함하는 웹 사이트 페이지(또는 미니 페이지)는 포함 웹 페이지(containing web page)로서 그리고 전체 웹 사이트에 주 사이트로서 공지될 것이다. 사용자에게 보여지는 통합 페이지- 주 페이지 및 임베딩된 제 3 자 애플리케이션(third party application; TPA) 미니 페이지/구성요소를 포함하는 -는 결합 페이지(combined page)로서 칭해질 것이다. 섹션 유형 제 3 자 애플리케이션들의 경우, 제 3 자 애플리케이션을 포함하는 "가상 페이지(virtual page)"는 포함 웹 페이지 역할을 할 것이다.For purposes of discussion, a website page (or mini-page) comprising a third-party application and its mini-pages or elements (ie, a “wrapper page”) is referred to as a containing web page and It will be advertised as the main site on the entire web site. The integrated page that is displayed to the user - including the main page and embedded third party application (TPA) mini pages/components - will be referred to as a combined page. For section type 3rd party applications, the "virtual page" containing the 3rd party application will act as the containing web page.

제 3 자 애플리케이션들은 통상적으로 웹사이트 구축 시스템 벤더 서버들에, 제 3 자 애플리케이션 벤더 서버에, 외부(제 4 자) 서버들에 또는 이들의 임의의 결합에 배치된다. 제 3 자 애플리케이션은 또한 정적 설치 브라우저 확장(browser extension)과 같이 실제로 최종 사용자 기계 상에서 가동되는 요소들을 포함하거나 이제 참조되는 도 1에 도시되는 바와 같이 웹사이트 구축 시스템 클라이언트 측 코드 내에서 가동되는 자바스크립트(JavaScript) 구성요소를 동적으로 가동할 수 있다.Third party applications are typically deployed on website building system vendor servers, on third party application vendor servers, on external (fourth party) servers, or any combination thereof. Third party applications may also contain elements that actually run on the end user machine, such as a statically installed browser extension, or JavaScript run within the website building system client-side code as shown in Figure 1 to which reference is now made. (JavaScript) components can be launched dynamically.

웹사이트 구축 시스템 벤더의 서버들은 최종 사용자에 대한 컨택 포인트(contact point) 역할을 하고 요청들에 응답한다(가능하면 필요한 정보를 수신하기 위해 제 3 자 애플리케이션 벤더의 서버들에 접속된다). 웹사이트 구축 시스템은 예를 들어 비디오 스트리밍(video streaming)이 요구될 때 클라이언트 컴퓨터 및 제 3 자 애플리케이션 벤더의 서버들 사이의 직접 접속들(필요에 따라)을 생성할 수 있다.The website building system vendor's servers act as contact points for end users and respond to requests (possibly connected to third party application vendor's servers to receive necessary information). The website building system may create direct connections (as needed) between the client computer and the third party application vendor's servers, for example when video streaming is required.

포함되어 있는 제 3 자 애플리케이션 인스턴스들은 정규 구성요소들이 내부 컨텐츠를 포함하는 방식과 유사하게 자기 자신의 내부 컨텐츠를 가질 수 있다. 제 3 자 애플리케이션은 이제 참조되는 도 2에 도시되는 바와 같이 웹사이트 구축 시스템 및 웹사이트 구축 시스템을 사용하여 생성되는 웹사이트와 관계없이 이 컨텐츠를 관리할 수 있다. 다수의 제 3 자 애플리케이션 인스턴스들(단일 또는 다수의 제 3 자 애플리케이션들의)은 공유되는 컨텐츠를 가질 수 있는데, 예를 들어, 2개의 별개의 웹 사이트 페이지들에 있는 2개의 e-샵 인스턴스들은 동일한 제품 데이터베이스를 참고할 수 있다.Included third party application instances may have their own internal content similar to the way regular components contain internal content. Third party applications can manage this content independent of the website building system and the website being created using the website building system as shown in FIG. 2 to which reference is now made. Multiple third party application instances (of a single or multiple third party applications) may have content shared, eg, two e-shop instances on two separate website pages are identical You can refer to the product database.

포함되는 제 3 자 애플리케이션들로부터의 출력은 포함 웹 페이지에 다음과 같은 다수의 방식들로 통합될 수 있다:Output from embedded third-party applications can be incorporated into the embedded web page in a number of ways, including:

서버 측 프로세싱: 이제 참조되는 도 3에 도시되는 바와 같은 이 대안에서, 제 3 자 애플리케이션 [a](설계 및 디스플레이 요소들을 포함하는) 및 사용자 특정 제 3 자 애플리케이션 데이터 [b]는 제 3 자 애플리케이션 벤더들의 서버 [d] 상에서 가동 중인 제 3 자 애플리케이션 서버 코드 [c]에 의해 병합된다. 이것들은 통신 매체 [e]를 통해 웹사이트 구축 시스템 서버 코드 [f]로 송신되고 이 서버 코드 [f]는 이것들을 포함 웹 페이지 정보 [g]와 병합하고 그 후에 이것들을 사용자 클라이언트 스테이션(station) [h] 상에 디스플레이하기 위하여 송신한다. Server-side processing : In this alternative as shown in Figure 3 to which reference is now made, the third-party application [a] (including design and display elements) and user-specific third-party application data [b] are It is merged by third party application server code [c] running on the vendors' servers [d]. These are transmitted to the website building system server code [f] via the communication medium [e], which server code [f] merges them with the containing web page information [g] and then converts them to the user client station [h] Transmit to display on.

클라이언트 측 프로세싱: 이제 참조되는 도 4에서 도시되는 바와 같은 이 대안에서, 제 3 자 애플리케이션 [a](설계 및 디스플레이 요소들을 포함하는) 및 사용자 특정 제 3 자 애플리케이션 데이터 [b]는 제 3 자 애플리케이션 벤더들의 서버 [d]에서 가동 중인 제 3 자 애플리케이션 서버 코드 [c]에 의해 병합된다. 이것들은 통신 매체 [e]를 통해 클라이언트 측 프로세싱 구성요소 [h]로 송신된다. 웹사이트 구축 시스템 서버 코드 [f]는 포함 웹 페이지 정보 [g]를 이 클라이언트 측 프로세싱 구성요소 [h]로 송신한다. 클라이언트 측 프로세싱 구성요소 [h]는 정보의 두 소스의 병합을 수행하고 통합된 애플리케이션을 브라우저(또는 다른 클라이언트 에이전트(client agent)) [i]에 제공한다. Client-Side Processing : In this alternative as shown in Fig. 4 to which reference is now made, the third-party application [a] (including design and display elements) and user-specific third-party application data [b] are It is merged by third-party application server code [c] running on the vendors' servers [d]. These are transmitted via the communication medium [e] to the client-side processing component [h]. The website building system server code [f] sends the embedded web page information [g] to this client-side processing component [h]. The client-side processing component [h] performs the merging of the two sources of information and provides the integrated application to the browser (or other client agent) [i].

아이프레임(iFrame) 내포(inclusion): 이제 참조되는 도 5에 도시되는 바와 같은 이 대안에서, 제 3 자 애플리케이션 [a](설계 및 디스플레이 요소들을 포함하는) 및 사용자 특정 제 3 자 애플리케이션 데이터 [b]는 제 3 자 애플리케이션 벤더들의 서버 [d] 상에서 가동 중인 제 3 자 애플리케이션 서버 코드 [c]에 의해 병합된다. 이것들은 통신 매체 [e]를 통해 사용자 에이전트(예를 들어, 웹 브라우저) [i] 내에서 가동 중인 브라우저 기반 애플리케이션 [h]로 송신된다. 웹사이트 구축 시스템 서버 코드 [f]는 포함 웹 페이지 정보 [g]를 이 브라우저 기반 애플리케이션 [h]로 송신한다. 포함 웹 페이지는 제 3 자 애플리케이션 서버 [d]로부터의 컨텐츠를 포함하는 하나 이상의 아이프레임 지시어(directive)들을 포함하는 웹 페이지로서 실현된다. 추가 및 대안의 방법들 또한 적용 가능할 수 있다.iFrame inclusion: in this alternative as shown in Figure 5 to which reference is now made, the third-party application [a] (including design and display elements) and user-specific third-party application data [b] ] is merged by third-party application server code [c] running on server [d] of third-party application vendors. These are transmitted via the communication medium [e] to the browser-based application [h] running within the user agent (eg web browser) [i]. The website building system server code [f] sends the embedded web page information [g] to this browser-based application [h]. The containing web page is realized as a web page containing one or more iframe directives containing content from a third party application server [d]. Additional and alternative methods may also be applicable.

본 발명의 목적은 온라인 애플리케이션들 및 특히 포함되어 있는 제 3 자 애플리케이션에 의해 온라인 애플리케이션들을 사용하는 것을 제공하는 것이다.It is an object of the present invention to provide online applications and in particular the use of online applications by means of an included third party application.

본 발명의 바람직한 실시예에 따라 적어도 하나의 프로세서를 가지는 클라이언트/서버 시스템을 통해 웹사이트 상에서 구현 가능한 시스템이 제공되고, 프로세서는 시스템을 규정하는 명령들을 프로세싱(processing)한다. 시스템은 웹 사이트 및 적어도 하나의 제 3 자 애플리케이션(third party application) 사이에서 적어도 하나의 활동 메시지를 조정하는 적어도 하나의 허브(hub)를 포함하고, 여기서 적어도 하나의 활동 메시지는 표준화된 포맷을 가진다. 시스템은 또한 적어도 하나의 활동 메시지를 청취하고 그리고 적어도 하나의 메시지로부터 추출되는 데이터를 식별된 컨택(contact) 및 익명의 컨택 중 적어도 하나와 연관되는 스트림(stream)에 적어도 추가하는 활동 조정기(activity coordinator)를 포함하고, 식별된 컨택 및 익명의 컨택 중 적어도 하나는 웹사이트의 사용자이다. 상기 시스템은 또한 스트림으로부터 컨택 관련 정보를 검색하고 분석하고 그리고 컨택에 대해 이전에 보유된 정보를 강화(enrich)하는 컨택 조정기 및 웹사이트에 의해 그리고 컨택에 의해 사용되기 위해 활동 스트림들 및 컨택 관련 정보를 저장하는 적어도 하나의 데이터베이스를 포함한다.According to a preferred embodiment of the present invention, there is provided a system implementable on a website through a client/server system having at least one processor, wherein the processor processes instructions defining the system. The system comprises at least one hub for coordinating at least one activity message between the website and at least one third party application, wherein the at least one activity message has a standardized format. . The system also includes an activity coordinator that listens for at least one activity message and at least adds data extracted from the at least one message to a stream associated with at least one of an identified contact and an anonymous contact. ), wherein at least one of the identified contact and the anonymous contact is a user of the website. The system also retrieves and analyzes contact-related information from the streams, and for use by contacts and by contact coordinators and websites that enrich information previously held about the contact and activity streams and contact-related information. at least one database for storing

더욱이, 본 발명의 바람직한 실시예에 따르면, 적어도 하나의 허브는: 적어도 하나의 활동 메시지를 웹사이트 및 적어도 하나의 제 3 자 애플리케이션 사이에서 라우팅하고 추적하는 라우터 및 트랙커(router and tracker), 웹사이트 및 적어도 하나의 제 3 자 애플리케이션 사이에서 개인정보 보호 정책(privacy policy)을 시행하는 개인 정책 시행기, 웹사이트 및 적어도 하나의 제 3 자 애플리케이션 사이에서 사전 명시되는 적어도 하나의 메시지 변환 및 컨텐츠 적응 규칙들을 적용하는 변환기 및 어댑터(adapter), 개인 데이터 프록시(proxy) 및 개인 데이터 대체 중 적어도 하나를 구현하고 웹 사이트 및 적어도 하나의 제 3 자 애플리케이션 사이에서 사용자 허가 필드 제한들을 시행하는 개인 데이터 프록시 및 적어도 하나의 제 3 자 애플리케이션의 인입 키(incoming key)를 사용하여 적어도 하나의 활동 메시지의 서명을 검증하고, 내부 웹사이트 ID를 구비하는 적어도 하나의 활동 메시지와 연관되는 외부 ID를 변환하고 그리고 적어도 하나의 제 3 자 애플리케이션의 인출 키(outgoing key)를 사용하여 인출되는 적어도 하나의 활동 메시지를 서명하는 검증기 및 서명기 중 적어도 하나를 포함한다.Furthermore, according to a preferred embodiment of the present invention, the at least one hub comprises: a router and tracker for routing and tracking at least one activity message between the website and at least one third party application, the website and a privacy policy enforcer for enforcing a privacy policy between the at least one third-party application, and at least one message transformation and content adaptation rule pre-specified between the website and the at least one third-party application. a personal data proxy that implements at least one of a converter and adapter, a personal data proxy and a personal data substitution, and enforces user permission field restrictions between the website and at least one third party application; and at least verify the signature of the at least one activity message using the incoming key of the one third-party application, convert an external ID associated with the at least one activity message comprising the internal website ID, and at least one and at least one of a verifier and a signer for signing at least one activity message that is retrieved using an outgoing key of a third-party application of

더욱이, 본 발명의 바람직한 실시예에 따르면 활동 조정기는: 적어도 하나의 활동 메시지와 연관되는 컨택을 식별하고 연관되는 컨택이 존재하지 않으면 데이터의 스트림을 생성하는 스트림 생성기, 적어도 하나의 활동 메시지로부터의 데이터를 기존의 스트림에 그리고 활동 스트림들 중 적어도 2개로부터의 데이터를 단일 스트림에 병합하는 스트림 병합기 및 활동 스트림으로부터의 활동 데이터를 적어도 하나의 데이터베이스 내로 로깅하는 로그 생성기(log creator) 중 적어도 하나를 포함한다.Moreover, according to a preferred embodiment of the present invention the activity coordinator comprises: a stream generator which identifies a contact associated with the at least one activity message and generates a stream of data if the associated contact does not exist, the data from the at least one activity message at least one of a stream merger that merges into an existing stream and data from at least two of the activity streams into a single stream and a log creator that logs activity data from the activity stream into at least one database. include

더더욱이, 본 발명의 바람직한 실시예에 따르면, 컨택 조정기는: 적어도 하나의 활동 메시지, 스트림, 다른 컨택들 및 외부 소스들 중 적어도 하나로부터 컨택 관련 정보를 추출하는 데이터 추출기, 적어도 2개의 컨택 정보 기록들을 병합하고- 기록들은 동일한 식별된 컨택과 연관성을 가진다- 그리고 미리 규정된 병합 규칙들에 따라 추출된 컨택 관련 정보를 기존의 컨택에 대한 정보와 병합하는 데이터 병합기, 식별 가능한 새로운 컨택 및 익명의 컨택 중 적어도 하나를 생성하고 웹사이트의 세션 동안 컨택 활동을 추적하는 컨택 처리기 및 추출된 컨택 관련 정보의 프라이버시 보호 및 허가들을 처리하는 데이터 및 허가 처리기 중 적어도 하나를 포함한다.Moreover, according to a preferred embodiment of the present invention, the contact coordinator comprises: a data extractor for extracting contact related information from at least one of at least one activity message, stream, other contacts and external sources, recording at least two contact information A data merger that merges the contacts - records have associations with the same identified contact - and merges the extracted contact-related information with information about the existing contacts according to predefined merging rules, identifiable new contacts and anonymous and at least one of a contact processor for generating at least one of the contacts and tracking contact activity during a session of the website, and a data and permission processor for handling privacy protection and permissions of the extracted contact-related information.

추가로, 본 발명의 바람직한 실시예에 따르면, 라우터 및 트랙커는 적어도 하나의 제 3 자 애플리케이션이 명시하는 청취 질의들을 사용하여 적어도 하나의 활동 메시지의 라우팅을 지원한다.Additionally, according to a preferred embodiment of the present invention, the router and tracker support routing of at least one activity message using listening queries specified by at least one third party application.

게다가, 본 발명의 바람직한 실시예에 따르면, 스트림 병합기는 데이터를 식별된 컨택과 연관되는 스트림에 병합하는 활동-대-스트림 병합기 및 적어도 2개의 별개의 스트림들을 단일 스트림에 병합하는 스트림-대-스트림 병합기를 포함한다.Furthermore, in accordance with a preferred embodiment of the present invention, the stream merger is an activity-to-stream merger that merges data into a stream associated with the identified contact and a stream-to-stream that merges at least two separate streams into a single stream. Includes a stream merger.

더욱이, 본 발명의 바람직한 실시예에 따르면, 스트림-대-스트림 병합기는 식별된 공통 컨택에 따라 적어도 2개의 별개의 스트림들을 병합하는 수평 스트림 병합기, 그리고 익명의 컨택에 대하여 생성되는 스트림 및 등록된 컨택 사용자와 연관되는 스트림을 연결시킬 수 있는 등록 또는 로그인 시에 익명의 컨택에 대하여 생성되는 스트림을 등록된 컨택 사용자와 연관되는 스트림과 병합하는 수직 스트림 병합기 중 적어도 하나를 포함한다.Moreover, according to a preferred embodiment of the present invention, the stream-to-stream merger is a horizontal stream merger that merges at least two separate streams according to an identified common contact, and a stream created for an anonymous contact and a registered and at least one of a vertical stream merger for merging a stream generated for an anonymous contact upon registration or login capable of concatenating a stream associated with the contact user with a stream associated with the registered contact user.

더더욱이, 본 발명의 바람직한 실시예에 따르면, 데이터 병합기는: 컨택 정보 기록들 중 적어도 2개에서 동일한 1차 ID 필드 값들의 위치를 찾고, 정규화될 때 동일한 컨택 정보 기록들 중 적어도 2개에서 1차 키 필드 값들의 위치를 찾고, 쿠키를 사용하여 사이트 사용자들을 식별하고, 등록된 사용자들에 대한 사이트 로그인을 사용하여 사이트 사용자를 식별하고 그리고 소셜 네트워크와 연관되는 계정을 가지는 사이트 사용자들에 대한 소셜 로그인을 통해 사이트 사용자를 식별하는 것 중 적어도 하나를 행하는 컨택 식별기 중 적어도 하나를 포함한다. 데이터 병합기는 또한 언어, 구문, 텍스트 분석 및 외부 데이터 소스들 및 서비스들에 대한 참고(consultation) 중 적어도 하나를 사용하여 컨택 정보를 통합하는 통합기, 컨택 기록들 사이의 불일치들을 미리 규정된 규칙들에 따라 해소하는 불일치 해소기(contradiction resolver); 컨택 기록들 사이의 명확한 우선순위를 규정하기 위한 목록 값 필드들을 생성하는 목록 값 생성기, 검출되는 공통 1차 ID로 인하여 2개의 관련되지 않은 컨택들을 병합하는 수평 컨택 병합기 및 익명의 컨택 및 등록된 사용자와 연관되는 컨택을 연결시킬 수 있는 등록 또는 로그인 시에 익명의 컨택을 등록된 사용자와 연관되는 컨택과 병합하는 수직 컨택 병합기를 포함한다.Furthermore, according to a preferred embodiment of the present invention, the data merger: locates identical primary ID field values in at least two of the contact information records, and when normalized to 1 in at least two of the same contact information records locating primary key field values, using cookies to identify site users, using site login for registered users to identify site users, and social for site users having accounts associated with social networks. and at least one of a contact identifier that at least one of identifying the site user through login. The data aggregator also uses at least one of language, syntax, text analysis, and consultation to external data sources and services to resolve inconsistencies between contact records, an aggregator that aggregates contact information using predefined rules. a contradiction resolver that resolves according to ; A list value generator that creates list value fields to define unambiguous priority between contact records, a horizontal contact merger that merges two unrelated contacts due to a common primary ID being detected, and an anonymous contact and registered and a vertical contact merger for merging anonymous contacts with contacts associated with the registered user upon registration or login capable of associating contacts associated with the user.

추가로, 본 발명에 따른 바람직한 실시예에 따르면, 수평 컨택 병합기는 적어도 2개의 컨택 기록들을 별개로 유지하고 적어도 2개의 컨택 기록들이 동일한 컨택을 표현하는 것으로 표기되도록 적어도 2개의 컨택 기록들을 서로 링크하는 가상 병합기를 포함한다.Further, according to a preferred embodiment according to the present invention, a horizontal contact merger maintains at least two contact records separately and links at least two contact records to each other such that the at least two contact records are marked as representing the same contact. Includes virtual mergers.

게다가, 본 발명의 바람직한 실시예에 따르면, 수직 컨택 병합기는 익명의 컨택 및 등록된 사용자와 연관되는 컨택을 별개로 유지하고 익명의 컨택 및 등록된 사용자와 연관되는 컨택이 동일한 컨택을 표현하는 것으로 표기되도록 익명의 컨택 및 등록된 사용자와 연관되는 컨택을 서로 링크하는 가상 병합기를 포함한다.Furthermore, in accordance with a preferred embodiment of the present invention, the vertical contact merger keeps the anonymous contact and the contact associated with the registered user separate, and marks the anonymous contact and the contact associated with the registered user as representing the same contact. Preferably, a virtual merger is included that links the anonymous contact and the contact associated with the registered user to each other.

더욱이, 본 발명의 바람직한 실시예에 따르면, 사용자 허가 필드는 결정된 웹사이트 및 결정된 웹사이트 소유자 중 적어도 하나이다.Moreover, according to a preferred embodiment of the present invention, the user permission field is at least one of the determined website and the determined website owner.

더더욱이, 본 발명의 바람직한 실시예에 따르면, 표준화된 포맷은 미리 규정된 스키마(schema), 상속(inheritance), 콜백(call back) 링크에 의해 규정되고, 적어도 하나의 제 3 자 애플리케이션에 의해 또는 외부 정규 산업상 또는 사실상 표준에 기초하여 규정되고 인코딩되는 것 중 적어도 하나이다.Moreover, according to a preferred embodiment of the present invention, the standardized format is defined by a predefined schema, inheritance, call back link, and by at least one third-party application or At least one of those defined and encoded based on an external regular industry or de facto standard.

본 발명의 바람직한 실시예에 따르면 적어도 하나의 프로세서를 가지는 클라이언트/서버 시스템을 통해 웹사이트 상에서 구현 가능한 방법이 제공되고, 프로세서는 방법을 규정하는 명령들을 프로세싱한다. 상기 방법은 웹사이트 및 적어도 하나의 제 3 자 애플리케이션 사이에서 적어도 하나의 활동 메시지를 조정하는 단계로서, 적어도 하나의 활동 메시지는 표준화된 포맷을 가지는, 조정하는 단계, 적어도 하나의 활동 메시지를 청취하고 적어도 하나의 메시지로부터 추출되는 데이터를 식별된 컨택 및 익명의 컨택 중 적어도 하나와 연관되는 스트림에 적어도 추가하는 단계로서, 식별된 컨택 및 익명의 컨택 중 적어도 하나는 웹사이트의 사용자인, 청취 및 적어도 추가하는 단계를 포함한다. 상기 방법은 또한 스트림으로부터 컨택 관련 정보를 검색하고 분석하고 그리고 컨택에 대해 이전에 보유된 정보를 강화하는 단계 및 웹사이트에 의해 그리고 컨택에 의해 사용되기 위해 활동 스트림들 및 컨택 관련 정보를 저장하는 단계를 포함한다.According to a preferred embodiment of the present invention, there is provided a method implementable on a website through a client/server system having at least one processor, wherein the processor processes instructions defining the method. The method comprises reconciling at least one activity message between the website and at least one third-party application, wherein the at least one activity message has a standardized format, reconciling, listening to the at least one activity message, and adding at least data extracted from the at least one message to a stream associated with at least one of the identified contact and the anonymous contact, wherein at least one of the identified contact and the anonymous contact is a user of the website. including adding. The method also includes the steps of retrieving and analyzing the contact-related information from the stream and enriching previously held information for the contact and storing the activity streams and the contact-related information for use by the website and by the contact. includes

게다가, 본 발명의 바람직한 실시예에 따르면, 조정하는 단계는: 적어도 하나의 활동 메시지를 웹사이트 및 적어도 하나의 제 3 자 애플리케이션 사이에서 라우팅하고 추적하는 단계, 웹사이트 및 적어도 하나의 제 3 자 애플리케이션 사이에서 개인정보 보호 정책을 시행하는 단계, 웹사이트 및 적어도 하나의 제 3 자 애플리케이션 사이에서 사전 명시되는 적어도 하나의 메시지 변환 및 컨텐츠 적응 규칙들을 적용하는 단계, 개인 데이터 프록시 및 개인 데이터 대체 중 적어도 하나를 구현하고 웹 사이트 및 적어도 하나의 제 3 자 애플리케이션 사이에서 사용자 허가 필드 제한들을 시행하는 단계 및 적어도 하나의 제 3 자 애플리케이션의 인입 키를 사용하여 적어도 하나의 활동 메시지의 서명을 검증하고, 내부 웹사이트 ID를 구비하는 적어도 하나의 활동 메시지와 연관되는 외부 ID를 변환하고 그리고 적어도 하나의 제 3 자 애플리케이션의 인출 키를 사용하여 인출되는 적어도 하나의 활동 메시지를 서명하는 단계 중 적어도 하나를 포함한다.Furthermore, according to a preferred embodiment of the present invention, coordinating comprises: routing and tracking at least one activity message between the website and the at least one third-party application, the website and the at least one third-party application at least one of enforcing a privacy policy between the website and the at least one third party application, applying at least one predefined message transformation and content adaptation rules between the website and the at least one third party application, a personal data proxy and a personal data substitution. implementing user permission field restrictions between the website and the at least one third-party application and verifying the signature of the at least one activity message using the entry key of the at least one third-party application; converting an external ID associated with the at least one activity message having the site ID and signing the at least one activity message to be retrieved using a retrieval key of the at least one third party application.

게다가, 본 발명의 바람직한 실시예에 따르면, 청취 및 적어도 추가하는 단계는: 적어도 하나의 활동 메시지와 연관되는 컨택을 식별하고 연관되는 컨택이 존재하지 않으면 데이터의 스트림을 생성하는 단계, 적어도 하나의 활동 메시지로부터의 데이터를 기존의 스트림에 그리고 활동 스트림들 중 적어도 2개로부터의 데이터를 단일 스트림에 병합하는 단계 및 활동 스트림으로부터의 활동 데이터를 적어도 하나의 데이터베이스 내로 로깅하는 단계 중 적어도 하나를 포함한다.Furthermore, according to a preferred embodiment of the present invention, listening and at least adding comprises: identifying a contact associated with the at least one activity message and creating a stream of data if the associated contact does not exist, the at least one activity merging data from the message into an existing stream and data from at least two of the activity streams into a single stream and logging activity data from the activity stream into at least one database.

더욱이, 본 발명의 바람직한 실시예에 따르면, 검색 및 분석하는 단계는: 적어도 하나의 활동 메시지, 스트림, 다른 컨택들 및 외부 소스들 중 적어도 하나로부터 컨택 관련 정보를 추출하는 단계; 적어도 2개의 컨택 정보 기록들을 병합하고- 기록들은 동일한 식별된 컨택과 연관성을 가진다- 그리고 미리 규정된 병합 규칙들에 따라 추출된 컨택 관련 정보를 기존의 컨택에 대한 정보와 병합하는 단계 중 적어도 하나를 포함한다. 검색 및 분석 단계는 또한 식별 가능한 새로운 컨택 및 익명의 컨택 중 적어도 하나를 생성하고 웹사이트의 세션 동안 컨택 활동을 추적하는 단계 및 추출된 컨택 관련 정보의 프라이버시 보호 및 허가들을 처리하는 단계를 포함한다.Moreover, according to a preferred embodiment of the present invention, the retrieving and analyzing comprises: extracting contact-related information from at least one of at least one activity message, stream, other contacts and external sources; at least one of merging at least two contact information records—the records have an association with the same identified contact—and merging the extracted contact-related information with information about an existing contact according to predefined merging rules. include The retrieving and analyzing step also includes creating at least one of a new identifiable contact and an anonymous contact, tracking contact activity during a session of the website, and processing privacy protections and permissions of the extracted contact-related information.

더더욱이, 본 발명의 바람직한 실시예에 따르면, 라우팅 및 추적하는 단계는 적어도 하나의 제 3 자 애플리케이션이 명시하는 청취 질의들을 사용하여 적어도 하나의 활동 메시지의 라우팅을 지원한다.Moreover, according to a preferred embodiment of the present invention, the routing and tracking steps support routing of at least one activity message using listening queries specified by at least one third party application.

추가로, 본 발명의 바람직한 실시예에 따르면, 병합하는 단계는 데이터를 식별된 컨택과 연관되는 스트림에 병합하는 단계 및 적어도 2개의 별개의 스트림들을 단일 스트림에 병합하는 단계를 포함한다.Further, in accordance with a preferred embodiment of the present invention, merging comprises merging data into a stream associated with the identified contact and merging at least two separate streams into a single stream.

게다가, 본 발명의 바람직한 실시예에 따르면, 데이터를 식별된 컨택과 연관되는 스트림에 병합하는 단계 및 적어도 2개의 별개의 스트림들을 단일 스트림에 병합하는 단계는 식별된 공통 컨택에 따라 적어도 2개의 별개의 스트림들을 수평으로 병합하는 단계 및 익명의 컨택에 대하여 생성되는 스트림 및 등록된 컨택 사용자와 연관되는 스트림을 연결시킬 수 있는 등록 또는 로그인 시에 익명의 컨택에 대하여 생성되는 스트림을 등록된 컨택 사용자와 연관되는 스트림과 수직으로 병합하는 단계 중 적어도 하나를 포함한다.Furthermore, according to a preferred embodiment of the present invention, the steps of merging data into a stream associated with the identified contact and merging the at least two separate streams into a single stream are performed according to at least two separate streams according to the identified common contact. merging the streams horizontally and associating the stream generated for the anonymous contact with the registered contact user upon registration or login, which can associate the stream generated for the anonymous contact and the stream associated with the registered contact user. and merging vertically with the stream being

게다가, 본 발명의 바람직한 실시예에 따르면, 적어도 2개의 컨택 정보 기록들을 병합하는 단계는: 컨택 정보 기록들 중 적어도 2개에서 동일한 1차 ID 필드 값들의 위치를 찾고, 정규화될 때 동일한 컨택 정보 기록들 중 적어도 2개에서 1차 키 필드 값들의 위치를 찾고, 쿠키를 사용하여 사이트 사용자들을 식별하고, 등록된 사용자들에 대한 사이트 로그인을 사용하여 사이트 사용자를 식별하고 그리고 소셜 네트워크와 연관되는 계정을 가지는 사이트 사용자들에 대한 소셜 로그인을 통해 사이트 사용자를 식별하는 단계 중 적어도 하나를 포함한다. 적어도 2개의 컨택 정보 기록들을 병합하는 단계는 또한 언어, 구문, 텍스트 분석 및 외부 데이터 소스들 및 서비스들에 대한 참고 중 적어도 하나를 사용하여 컨택 정보를 통합하는 단계, 컨택 기록들 사이의 불일치들을 미리 규정된 규칙들에 따라 해소하는 단계, 컨택 기록들 사이의 명확한 우선순위를 규정하기 위한 목록 값 필드들을 생성하는 단계, 검출되는 공통 1차 ID로 인하여 2개의 관련되지 않은 컨택들을 수평으로 병합하는 단계 및 익명의 컨택 및 등록된 사용자와 연관되는 컨택을 연결시킬 수 있는 등록 또는 로그인 시에 익명의 컨택을 등록된 사용자와 연관되는 컨택과 수직으로 병합하는 단계를 포함한다.Furthermore, according to a preferred embodiment of the present invention, the step of merging at least two contact information records comprises: locating identical primary ID field values in at least two of the contact information records and, when normalized, the same contact information record locating primary key field values in at least two of them; using cookies to identify site users; and at least one of identifying the site user via a social login for the site users. Merging the at least two contact information records also includes consolidating the contact information using at least one of language, syntax, text analysis and reference to external data sources and services; resolving according to prescribed rules, creating list value fields to define a clear priority between contact records, horizontally merging two unrelated contacts due to a common primary ID being detected. and vertically merging the anonymous contact with the contact associated with the registered user upon registration or login capable of associating the anonymous contact with the contact associated with the registered user.

더욱이, 본 발명의 바람직한 실시예에 따르면, 수평으로 병합하는 단계는 적어도 2개의 컨택 기록들을 별개로 유지하기 위해 가상 병합하고 적어도 2개의 컨택 기록들이 동일한 컨택을 표현하는 것으로 표기되도록 적어도 2개의 컨택 기록들을 서로 링크하는 단계를 포함한다.Moreover, according to a preferred embodiment of the present invention, the step of merging horizontally comprises a virtual merging to keep the at least two contact records separate and at least two contact records such that the at least two contact records are marked as representing the same contact. linking them to each other.

더더욱이, 본 발명의 바람직한 실시예에 따르면, 수직으로 병합하는 단계는 익명의 컨택 및 등록된 사용자와 연관되는 컨택을 별개로 유지하기 위해 가상 병합하고 익명의 컨택 및 등록된 사용자와 연관되는 컨택이 동일한 컨택을 표현하는 것으로 표기되도록 익명의 컨택 및 등록된 사용자와 연관되는 컨택을 서로 링크하는 단계를 포함한다.Moreover, in accordance with a preferred embodiment of the present invention, the step of merging vertically comprises a virtual merging in order to keep the anonymous contacts and the contacts associated with the registered user separate and the anonymous contacts and the contacts associated with the registered user are separated. and linking the anonymous contact and the contact associated with the registered user to each other so as to be marked as representing the same contact.

추가로, 본 발명의 바람직한 실시예에 따르면, 사용자 허가 필드는 결정된 웹사이트 및 결정된 웹사이트 소유자 중 적어도 하나이다.Further, according to a preferred embodiment of the present invention, the user permission field is at least one of the determined website and the determined website owner.

게다가, 본 발명의 바람직한 실시예에 따르면, 표준화된 포맷은 미리 규정된 스키마, 상속, 콜백 링크에 의해 규정되고, 적어도 하나의 제 3 자 애플리케이션에 의해 또는 외부 정규 산업상 또는 사실상 표준에 기초하여 규정되고 인코딩되는 것 중 적어도 하나이다.Furthermore, according to a preferred embodiment of the present invention, the standardized format is defined by predefined schemas, inheritance, callback links, and defined by at least one third-party application or on the basis of external regular industry or de facto standards. and at least one of which is encoded.

본 발명으로 간주되는 특허 대상이 특히 언급되고 명세서의 종결부분에 명확하게 청구된다. 그러나 본 발명은 조직 및 동작의 방법 모두 및 이에 더하여 본 발명의 대상들, 특징들 및 장점들에 관해서, 다음의 상세한 설명을 참조함으로써 첨부 도면들과 함께 판독될 때 가장 양호하게 이해될 수 있다:
도 1은 웹사이트 구축 시스템 및 제 3 자 애플리케이션 사이의 배치 구성들의 개략적인 도면;
도 2는 제 3 자 애플리케이션 내부 컨텐츠 관리에 대한 개략적인 도면;
도 3은 서버 측 프로세싱을 통한 포함 웹 페이지 내의 제 3 자 애플리케이션 내포에 대한 개략적인 도면;
도 4는 클라이언트 측 프로세싱을 통한 포함 웹 페이지 내의 제 3 자 애플리케이션 내포에 대한 개략적인 도면;
도 5는 아이프레임 내포를 통한 포함 웹 페이지 내의 제 3 자 애플리케이션 내포에 대한 개략적인 도면;
도 6은 페이지 레이아웃 변경 동안 기존의 그리고 비 최적인 제 3 자 애플리케이션 디스플레이들에 대한 개략적인 도면;
도 7a 및 도 7b는 본 발명에 따라 구성되고 동작하는 하나 이상의 제 3 자 애플리케이션들 및 웹사이트 구축 시스템을 통합하는 시스템에 대한 개략적인 도면들;
도 8은 구성요소 모델과 비교되는 문서 객체 모델에 대한 개략적인 도면;
도 9는 샘플 다 부분(multi-part) 블로그 제 3 자 애플리케이션에 대한 개략적인 도면;
도 10은 샘플 모듈식 판매 제 3 자 애플리케이션에 대한 개략적인 도면;
도 11a 및 도 11b는 본 발명에 따라 구성되고 동작하는 통신 허브의 상이한 구현들에 대한 개략적인 도면들;
도 11c는 본 발명에 따라 구성되고 동작하는 도 11a 및 도 11b의 통신 허브의 요소들에 대한 개략적인 도면;
도 12는 본 발명에 따라 구성되고 동작하는 도 11a 및 도 11b의 통신 허브에 의해 수행되는 통신 변환(communication translation) 시나리오에 대한 개략적인 도면;
도 13은 본 발명에 따라 구성되고 동작하는, 연관 템플릿을 가지는 제 3 자 애플리케이션을 처리하는 포함 웹 페이지에 대한 개략적인 도면; 및
도 14는 본 발명에 따라 구성되고 동작하는, 미니 페이지 내에 연관 템플릿을 가지는 제 3 자 애플리케이션을 포함하는 포함 웹 페이지에 대한 개략적인 도면.
도 15는 본 발명에 따라 구성되고 동작하는, 하나 이상의 임베딩된 제 3 자 애플리케이션들 및 웹사이트 구축 시스템 사이에서 교환되는 상이한 메시지들로부터 데이터를 조정하고 수집하는 시스템에 대한 개략적인 도면;
도 16a, 도 16b, 도 16c 및 도 16d는 본 발명에 따라 구성되고 동작하는, 도 15의 시스템의 요소들에 대한 개략적인 도면들;
도 17은 본 발명에 따라 구성되고 동작하는, 컨택과 연관되는 활동 스트림(activity stream)을 디스플레이하는 샘플 그래픽 사용자 인터페이스(graphical user interface)에 대한 개략적인 도면;
도 18은 클라이언트 측 및 서버 측 제 3 자 애플리케이션 활동 메시지 전달에 대한 개략적인 도면; 및
도 19는 사용자 웹사이트 세션(session) 동안 로그인/로그아웃을 처리하는 것에 대한 개략적인 도면.
설명의 간소화 및 명료화를 위해, 도면들에 도시되는 요소들은 반드시 축적대로 도시되지 않았음이 인정될 것이다. 예를 들어, 요소들 일부의 치수들은 명료성을 위해 다른 요소들에 대해 과장될 수 있다. 더욱이, 적절하다고 간주되면, 참조번호는 대응하거나 유사한 요소들을 표시하기 위해 도면들 사이에서 반복될 수 있다.
The patented subject matter regarded as the present invention is particularly pointed out and is explicitly claimed at the end of the specification. However, the present invention may best be understood when read in conjunction with the accompanying drawings, by reference to the following detailed description, both as to its organization and method of operation, and in addition to its objects, features and advantages:
1 is a schematic diagram of deployment configurations between a website building system and a third party application;
2 is a schematic diagram of a third-party application internal content management;
3 is a schematic diagram of third-party application nesting within an embedding web page via server-side processing;
4 is a schematic diagram of third-party application nesting within an embedding web page via client-side processing;
Figure 5 is a schematic diagram of third party application nesting within an embedding web page via iframe nesting;
6 is a schematic diagram of existing and non-optimal third party application displays during page layout change;
7A and 7B are schematic diagrams of a system incorporating a website building system and one or more third party applications constructed and operative in accordance with the present invention;
Fig. 8 is a schematic diagram of a document object model compared to a component model;
9 is a schematic diagram of a sample multi-part blog 3rd party application;
10 is a schematic diagram of a sample modular vending third party application;
11A and 11B are schematic diagrams of different implementations of a communication hub constructed and operative in accordance with the present invention;
11C is a schematic diagram of elements of the communication hub of FIGS. 11A and 11B constructed and operative in accordance with the present invention;
Fig. 12 is a schematic diagram of a communication translation scenario performed by the communication hub of Figs. 11A and 11B constructed and operative in accordance with the present invention;
Figure 13 is a schematic diagram of an embedded web page processing a third party application having an associated template, constructed and operative in accordance with the present invention; and
14 is a schematic diagram of an embedded web page comprising a third party application having an associated template within a mini page, constructed and operative in accordance with the present invention;
15 is a schematic diagram of a system for coordinating and collecting data from different messages exchanged between one or more embedded third-party applications and a website building system, constructed and operative in accordance with the present invention;
16A, 16B, 16C and 16D are schematic diagrams of elements of the system of FIG. 15, constructed and operative in accordance with the present invention;
17 is a schematic diagram of a sample graphical user interface for displaying an activity stream associated with a contact, constructed and operative in accordance with the present invention;
18 is a schematic diagram of client-side and server-side third-party application activity message delivery; and
Fig. 19 is a schematic diagram of handling login/logout during a user website session;
It will be appreciated that, for the sake of simplicity and clarity of description, elements shown in the drawings have not necessarily been drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity. Moreover, where deemed appropriate, reference numerals may be repeated between the figures to indicate corresponding or analogous elements.

다음의 상세한 설명에서, 본 발명에 대한 철저한 이해를 제공하기 위해 많은 특정한 세부사항들이 열거된다. 그러나, 당업자에 의해 본 발명이 이 특정한 세부사항들 없이 실시될 수 있음이 이해될 것이다. 다른 경우들에서, 널리 공지되어 있는 방법들, 절차들 및 구성요소들은 본 발명을 모호하게 하지 않도록 상세하게 기술되지 않았다.In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be understood by one of ordinary skill in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, and components have not been described in detail so as not to obscure the present invention.

출원인들은 제 3 자 애플리케이션들이 전형적으로 웹사이트 구축 시스템들에 통합되는 방식에서 그리고 통합된 제 3 자 애플리케이션들 및 웹사이트 구축 시스템들이 상호 작용하는 방식에서 현재의 방법들에 대한 많은 제한들이 있음을 인식하였다.Applicants recognize that there are many limitations to current methods in the manner in which third party applications are typically integrated into website building systems and in the way the integrated third party applications and website building systems interact. did

이 제한들은 제 3 자 애플리케이션 디스플레이가 포함 웹 페이지 내의 단일 직사각형의 에어리어(area)로 제한되고, 이 에어리어는 아이프레임 내에 포함되는 것을 포함한다. 이 제한들은 또한 제 3 자 애플리케이션이 자기 자신의 윈도우의 크기 및 위치뿐만 아니라 실제 제 3 자 애플리케이션 디스플레이 윈도우 외부에 있는 시각 요소들(예를 들어, 제 3 자 애플리케이션 윈도우 주위의 특화된 디스플레이 프레임들)을 제어할 능력을 포함한다.These restrictions include that third party application display is limited to a single rectangular area within the containing web page, which area is contained within an iframe. These restrictions also limit the third-party application's size and position of its own window, as well as visual elements outside the actual third-party application display window (eg, specialized display frames around the third-party application window). includes the ability to control.

제 3 자 애플리케이션은 자기 자신의 디스플레이 스타일들(컬러 배색들, 폰트들, 문자 크기들 등)을 가질 수 있다. 이 스타일들은 일부 포함 웹 페이지들에는 좋을 수 있으나 다른 포함 웹 페이지들에게는 시각적으로 문제가 되거나 부조화될 수 있다.The third party application may have its own display styles (color schemes, fonts, text sizes, etc.). These styles may be good for some embedding web pages, but can be visually problematic or inconsistent for other embedding web pages.

다른 제한은 포함하는 사이트의 관점에서 제 3 자 애플리케이션 디스플레이의 경직성(rigidity)이다. 이 사이트가 시각적으로 수정되어야 하면(예를 들어, 상이한 화면 크기를 가지는 플랫폼으로의 배치로 인해 또는 동적 레이아웃 이벤트로 인해), 포함 웹 페이지는 제 3 자 애플리케이션에 할당되는 윈도우의 크기를 변경할 필요가 있을 수 있다. 그와 같은 경우에, 제 3 자 애플리케이션 디스플레이는 클립(clip)될 수 있고 제 3 자 애플리케이션 내의 상이한 하위 에어리어들에 도달하기 위해 스크롤 바(scroll bar)들을 통해 스크롤링을 할 필요가 있을 것이다. 이제 포함 웹 페이지 [a]가 크기 조정되고, e-샵 제 3 자 애플리케이션 [b]에 할당되는 에어리어가 감소되고 "구매" 버튼 [c]이 쇼핑 카트 [d]의 컨텐츠와 함께 보여질 수 없을 때- 구매를 완료하는 데에 다수의 스크롤 행위들을 요구하므로 구매가 실제로 완료될 가능성을 아주 적게 만든다- 일어날 수 있는 것에 대한 하나의 예를 도시하는 도 6가 참조된다.Another limitation is the rigidity of the third party application display in terms of the containing site. If this site needs to be modified visually (for example, due to placement on platforms with different screen sizes or due to dynamic layout events), the embedding web page may need to change the size of the window assigned to the third-party application. there may be In such a case, the third party application display may be clipped and it will be necessary to scroll through the scroll bars to reach different sub-areas within the third party application. Now the containing web page [a] is resized, the area allocated to the e-shop 3rd party application [b] is reduced and the "buy" button [c] cannot be shown with the contents of the shopping cart [d]. Reference is made to FIG. 6 which shows one example of what can happen when - requiring multiple scrolling actions to complete the purchase, making the purchase actually less likely to be completed.

제 3 자 애플리케이션은 포함 웹 페이지 내의 다른 구성요소와 상호 작용할 수 없고 그와 같은 상호 작용은 때로는 복잡한 기능을 달성하는데 필요한 것임이 인정될 것이다. 특히, 제 3 자 애플리케이션이 포함 웹 페이지 내의 구성요소들의 유형 및 컨텐츠에 따라 상이하게 수행될 방법이 없다. 이의 하나의 예는 온라인 요리 강좌를 스트리밍하는 웹사이트일 수 있다. 사용자는 자신의 영화를 시청하는 배경에서, 자신의 화면의 작은 에어리어가 뉴스 피드에 전용되고 자신의 화면의 다른 에어리어에서 날씨가 업데이트되게(CNN으로부터의 라이브 스트림과 같은) 하고자 희망할 수 있다. 사용자는 자신의 거주 지역에 대한 날씨 리포트가 시작될 때 자신의 학습 섹션을 자동으로 일시정지하고자 희망할 수 있다.It will be appreciated that third party applications cannot interact with other components within the containing web page, and such interaction is sometimes necessary to achieve complex functionality. In particular, there is no way a third-party application will perform differently depending on the content and type of components within the containing web page. One example of this could be a website that streams online cooking classes. In the background watching his movie, a user may wish to have a small area of his screen dedicated to the news feed and weather updated (such as a live stream from CNN) in other areas of his screen. A user may wish to automatically pause his/her study section when a weather report for his/her area of residence is initiated.

특히 다수의 제 3 자 애플리케이션들이 상이한 벤더들에 의해 제공되는 경우, 이것들이 서로 협력하는 명확한 표준 방법 또한 존재하지 않는다. 그러므로, 설계자들은 상이한 벤더들로부터의 다수의 제 3 자 애플리케이션들을 결합하는 명확한 방법을 가지지 않는다. 이에 대한 하나의 예는 전자 상거래 웹사이트가 제 3 자 주문 시스템(ordering system)으로부터의 모듈을 운영하고 출하 시스템(shipping system)에 대한 상이한 모듈을 운영하는 경우이다. 출하 스케줄 등에 따라 공급물들을 주문하는 것이 바람직할 수 있다.There is also no clear standard way for them to cooperate with each other, especially when multiple 3rd party applications are provided by different vendors. Therefore, designers do not have a clear way to combine multiple 3rd party applications from different vendors. One example of this is where an e-commerce website operates a module from a third party ordering system and a different module to a shipping system. It may be desirable to order supplies according to a shipping schedule or the like.

출원인들은 웹사이트 구축 시스템 및 이것 내에 포함되는 제 3 자 애플리케이션 인스턴스들 사이에 그리고 동일한 포함 페이지 내에서 구현될 수 있는 상이한 제 3 자 애플리케이션 인스턴스들 사이에 구조화된 2-웨이 통신(two-way communication) 채널들을 사용함으로써 이 통합이 달성될 수 있음을 인식하였다. 이 채널들은 또한 레이아웃, 스타일 및 추가 정보에 관한 정보를 전송할 수 있다.Applicants claim structured two-way communication between a website building system and third party application instances contained therein and between different third party application instances that may be implemented within the same containment page. It was recognized that this consolidation could be achieved by using channels. These channels can also carry information about layout, style and additional information.

아래의 논의는 아이프레임 내포 방법에 초점을 맞추고, 이 방법이 아이프레임이 현대의 브라우저들 내에 구축되고 통합되어 특수한 통합 코드의 생성을 요구하지 않으므로 바람직한 방법임이 인식될 것이다. 아이프레임 내포는 또한 브라우저 지원 캡슐화(encapsulation) 및 샌드박싱(sandboxing)뿐만 아니라 악성의 제 3 자 애플리케이션들에 의해 사용될 수 있는 크로스 사이트 스크립팅(cross-site scripting) 공격과 같은 해킹 기술들에 대한 내재적 보호를 제공할 수 있다.The discussion below will focus on the iframe nesting method, and it will be recognized that this is the preferred method since iframes are built and integrated within modern browsers and do not require the generation of special integration code. iframe nesting also provides intrinsic protection against browser-assisted encapsulation and sandboxing, as well as hacking techniques such as cross-site scripting attacks that can be used by malicious third-party applications. can provide

이제 본 발명의 하나의 실시예에 따라, 하나 이상의 제 3 자 애플리케이션들 및 웹사이트 구축 시스템을 통합하는 시스템(100)을 도시하는 도 7a 및 도 7b가 참조된다. 도 7a는 설계 단계에서의 시스템(100)을 도시하고 도 7b는 런타임에서의 시스템(100)을 도시한다. 도 7a에서 확인될 수 있는 바와 같이, 시스템(100)은 클라이언트(10), 웹사이트 구축 시스템(website building system; WBS) 서버(20) 상에 설치되는 웹사이트 구축 시스템(30) 및 하나 이상의 제 3 자 애플리케이션 서버들(50) 상에 설치되는 하나 이상의 제 3 자 애플리케이션들(40)을 포함한다. 웹사이트 구축 시스템(30)은 WBS 조정기(coordinator)(21), 애플리케이션 리포지토리(22), WBS 측 TPA 특성 시트(23), 제 3 자 애플리케이션(third party application; TPA) 조정기(24) 및 앱스토어(25)(탐색기(26)를 포함할 수 있는)를 포함한다. 클라이언트(10)는 페이지 구성기(page composer)(12) 및 TPA 특성 시트(23)의 클라이언트 측 뷰를 포함한다. 일부 실시예들에서 클라이언트(10)는 또한 앱스토어(25)의 클라이언트 측 뷰를 포함할 수 있다. 페이지 구성기(12)는 본원 아래에서 더 상세하게 기술되는 링커(linker)(13)를 포함한다. 제 3 자 서버(50)는 제 3 자 애플리케이션(40), 외부 TPA 조정기(51) 및 사용을 위해 제 3 자 애플리케이션(40) 구성요소, 템플릿들 등을 저장하는 TPA 데이터베이스(52)를 포함한다. 시스템(100)은 다수의 제 3 자 애플리케이션(40) 벤더들에 속하는 다수의 제 3 자 서버들(50)을 포함할 수 있음이 주지된다.Reference is now made to FIGS. 7A and 7B , which illustrate a system 100 incorporating a website building system and one or more third party applications, in accordance with one embodiment of the present invention. 7A shows the system 100 in the design phase and FIG. 7B shows the system 100 in runtime. As can be seen in FIG. 7A , the system 100 includes a client 10 , a website building system 30 installed on a website building system (WBS) server 20 , and one or more products. one or more third party applications 40 installed on third party application servers 50 . The website building system 30 includes a WBS coordinator 21 , an application repository 22 , a WBS side TPA property sheet 23 , a third party application (TPA) coordinator 24 and an app store. (25) (which may include explorer 26). The client 10 includes a page composer 12 and a client side view of the TPA property sheet 23 . In some embodiments, the client 10 may also include a client-side view of the App Store 25 . The page builder 12 includes a linker 13, which is described in more detail herein below. The third-party server 50 includes a third-party application 40, an external TPA coordinator 51 and a TPA database 52 that stores third-party application 40 components, templates, etc. for use. . It is noted that system 100 may include multiple third party servers 50 belonging to multiple third party application 40 vendors.

속성들이 소정의 제 3 자 애플리케이션(40) 인스턴스에 대해 명시될 때 TPA 특성 시트(23)가 호출(invoking)될 수 있음이 인정될 것이다. 호출될 때, TPA 특성 시트(23)는 클라이언트(10) 상에 TPA 특성 시트(23)의 클라이언트 측 뷰로서 나타날 수 있음이 더 인정될 것이다. 또한 오프라인 실시예가 자신의 속성 시트를 설치된 클라이언트 소프트웨어의 일부로서 가질 수 있으므로 TPA 특성 시트(23) 또는 이의 리포지토리가 없을 수 있음이 더 인정될 것이다.It will be appreciated that the TPA properties sheet 23 may be invoked when attributes are specified for a given third party application 40 instance. It will be further appreciated that when invoked, the TPA properties sheet 23 may appear on the client 10 as a client-side view of the TPA properties sheet 23 . It will also be further appreciated that there may not be a TPA property sheet 23 or a repository thereof as offline embodiments may have their property sheets as part of the installed client software.

클라이언트(10) 측에 있는 설계자 또는 최종 사용자(5)는 웹사이트 페이지들 및 상호작용들(페이지 간(inter-page) 뿐만 아니라 페이지 내(intra-page))을 생성하기 위해 페이지 구성기(12)를 사용하여 자신의 웹페이지(또는 임의의 다른 온라인 애플리케이션)를 생성할 수 있음이 인정될 것이다. 설계자(5)는 WBS 조정기(21)를 통해 애플리케이션 리포지토리(22) 내에 저장되는 웹사이트 구축 시스템(30)의 일부인 구성요소들, 템플릿들 등을 선택할 수 있다. 설계자(5)는 또한 사전구입되었을 수 있고 자체의 템플릿들, 구성요소들 등이 애플리케이션 리포지토리(22)에 저장될 수 있는 제 3 자 애플리케이션들(40)로부터 제 3 자 애플리케이션(40) 인스턴스들을 임베딩하는 포함 웹 페이지(203)를 생성할 수 있다. 대안의 실시예에서, 구매되는 템플릿들, 구성요소들 등은 TPA 데이터베이스(52)에 저장되고 외부 TPA 조정기(51)를 통해 액세스될 수 있다. 또 다른 실시예에서, 제 3 자 애플리케이션(40) 템플릿들, 구성요소들 등은 필요에 따라 앱스토어(25)를 통해 구매될 수 있다. 특성 시트(23)는 설계자(5)에 의해 명시될 수 있고 본원 아래에서 더 상세하게 기술되는 바와 같이 허가들, 설치 명령들, 결제 등과 같이 구매되었던 제 3 자 애플리케이션(40) 인스턴스들에 관한 정보를 보유할 수 있다. 설계자(5)는 또한 포함되어 있는 제 3 자 애플리케이션들(40) 사이에 임의의 통신 채널들을 수동으로 지정하기 위하여(필요한 경우) 링커(23)를 사용할 수 있다. 링커(23)는 또한 설계자(5)가 구축되어 있는 포함 웹 페이지 그리고 본원에서 상술된 바와 같이 동시에 보이는 영화 및 CNN 뉴스 리포트와 같은 포함되어 있는 제 3 자 애플리케이션(40) 인스턴스들 사이의 임의의 특정한 통신 접속 및 규칙들을 명시하는 것을 가능하게 하는 것이 또한 인정될 것이다. 링커(23)에 의해 생성되는 링크는 웹 사이트 존속 기간을 통해 수정될 수 있음이 인정될 것이다.The designer or end user 5 on the client 10 side has a page builder 12 to create website pages and interactions (inter-page as well as intra-page). ) can be used to create your own web pages (or any other online application). Designer 5 may select components, templates, etc. that are part of website building system 30 stored in application repository 22 via WBS coordinator 21 . Designer 5 also embeds third party application 40 instances from third party applications 40 that may have been pre-purchased and whose templates, components, etc. may be stored in application repository 22 . It is possible to create an embedded web page 203 of In an alternative embodiment, purchased templates, components, etc. may be stored in the TPA database 52 and accessed via an external TPA coordinator 51 . In another embodiment, third party application 40 templates, components, etc. may be purchased through the App Store 25 as needed. The property sheet 23 may be specified by the designer 5 and as will be described in further detail herein below information regarding third party application 40 instances that have been purchased, such as licenses, installation instructions, payment, etc. can hold The designer 5 may also use the linker 23 to manually designate (if necessary) arbitrary communication channels between the included third party applications 40 . The linker 23 may also provide any specific links between the embedded web page on which the designer 5 is built and the embedded third-party application 40 instances, such as concurrently viewed movies and CNN news reports, as detailed herein. It will also be appreciated to enable specifying communication connections and rules. It will be appreciated that links generated by linker 23 may be modified through the lifetime of the web site.

설계자(5)는 제 3 자 애플리케이션(40) 벤더 또는 외부 당사자에 의해 운영되는 외부 앱스토어와 같은 앱스토어(25)의 외부의 채널들을 통해 제 3 자 애플리케이션(40)을 획득할 수 있음이 인정될 것이다. 그와 같은 경우에, 웹사이트 구축 시스템(30)은 제 3 자 애플리케이션(40) 및 이의 구성 데이터를 처음 등록하고 제 3 자 애플리케이션(40)은 웹사이트 구축 시스템(30)을 통해 설계자(5)에 의해 생성되는 웹 사이트에 설치된다.It is acknowledged that the designer 5 may obtain the third party application 40 through channels external to the app store 25, such as an external app store operated by a third party application 40 vendor or an external party. will be In such a case, the website building system 30 initially registers the third party application 40 and its configuration data and the third party application 40 communicates with the designer 5 via the website building system 30 . It is installed on the website created by

링커(23)가 잠재적인 통신 채널들을 셋업(setup)할 능력을 제공하기 위하여, 제 3 자 애플리케이션(40)은 포함 웹 페이지(203) 내의 구성요소들(제 3 자 애플리케이션이 통신하고자 하는)- 다른 제 3 자 애플리케이션(40) 인스턴스들을 포함하는-을 적절하게 인식하고 식별할 필요가 있음이 인정될 것이다. 연관되는 템플릿(본원 아래에서 더 상세하게 기술되는)에 기초하는 구성요소들에 대해서는, 제 3 자 애플리케이션(40) 벤더에 의해 식별이 미리 수행된다. 연관되는 템플릿들 내의 구성요소들은 특정한 참조 ID들을 제공받을 수 있고 이 ID들은 이 구성요소들과 통신할 때 제 3 자 애플리케이션(40)에 의해 사용될 수 있다.In order to provide the linker 23 with the ability to set up potential communication channels, the third-party application 40 includes components within the containing web page 203 (with which the third-party application wishes to communicate)- It will be appreciated that there is a need to properly recognize and identify other third party application 40 instances - including. For components based on the associated template (described in more detail herein below), identification is performed in advance by the third party application 40 vendor. Components in the associated templates may be provided with specific reference IDs which may be used by the third party application 40 when communicating with these components.

다 부분 제 3 자 애플리케이션(40)(본원에서 아래에서 더 상세하게 기술된다), 즉 다수의 아이프레임들에 걸쳐 펼쳐져 있는 단일 제 3 자 애플리케이션(40)의 경우, 다수의 부분들은 서로 통신하는 방법을 자동으로 인지할 수 있음이 더 인정될 것이다.In the case of a multi-part third-party application 40 (described in more detail herein below), i.e. a single third-party application 40 that spans multiple iframes, how the multiple parts communicate with each other It will be further appreciated that it is possible to automatically recognize

연관되는 템플릿에 포함되지 않는 포함 웹사이트 페이지 구성요소의 경우(본원 아래에서 더 상세하게 기술되는 바와 같이), 제 3 자 애플리케이션(40)은 자신이 기능할 수 있도록 존재해야만 하는 필요한 (강제적이고 선택적인) 포함 웹 페이지(203) 구성요소들의 목록을 포함할 수 있다. 이 목록은 특성 시트(23) 내에 저장되고 고유 ID들, 기술(description) 및 구성요소 세부사항들(예를 들어, 텍스트 구성요소이어야만 하는지, 블로그 토크백(talkback) 라벨로서 사용될 것인지)을 포함할 수 있다. 목록은 제 3 자 애플리케이션(40)이 앱스토어(25)에 진입한 것으로 세부화될 수 있고, 설계자(5)는 제 3 자 애플리케이션(40) 요건들에 부합하는 포함 웹 페이지(203)에 구성요소들(필드(field)들)을 명시하기 위하여 링커(23)를 사용할 수 있다. 웹사이트 구축 시스템(30)은 제 3 자 애플리케이션(40) 인스턴스가 생성될 때 빠진 포함 웹 페이지(203) 구성요소들을 동적으로 생성할 수 있고, 설계자(5)가 이후에 이것들을 이동하고, 크기 조정하고 그리고 충분히 명시하는 것을 가능하게 할 수 있음이 인정될 것이다.For embedded website page components that are not included in the associated template (as described in more detail herein below), the third party application 40 must be present in order for it to function (mandatory and optional). ) may include a list of included web page 203 components. This list is stored within the properties sheet 23 and may include unique IDs, description and component details (eg, should it be a text component, will be used as a blog talkback label). have. The list may be detailed as a third-party application 40 has entered the App Store 25 , and the designer 5 creates a component on an embedding web page 203 that meets the third-party application 40 requirements. A linker 23 may be used to specify fields (fields). The website building system 30 can dynamically create the included web page 203 components missing when the third party application 40 instance is created, and the designer 5 later moves them and resizes them. It will be appreciated that it may be possible to coordinate and fully specify.

대안으로, 웹사이트 구축 시스템(30)은 포함 웹 페이지(203)의 전체 또는 부분 구성요소 모델을 포함 웹 페이지(203)에 포함되는 제 3 자 애플리케이션(40)에 노출할 수 있다. 이는 구성요소 모델일 수 있고 포함 웹 페이지(203)의 문서 객체 모델(Document Object Model; DOM)이 아닐 수 있음이 인정될 것이다. 포함 웹 페이지(203) DOM은 구성요소 모델보다 훨씬 더 복잡하고 세분화되어 있을 수 있는데, 왜냐하면 실제 포함 웹 페이지(203)는 웹사이트 구축 시스템(30) 기반구조의 일부이거나 포함 웹 페이지(203) 구성요소들을 지원하는 수많은 HTML 요소들-숨겨져 있고 볼 수 있는 것 모두-을 포함할 수 있다. 구성요소 모델은 그러므로 아주 더 간단할 것이다.Alternatively, the website building system 30 may expose a full or partial component model of the embedding web page 203 to a third party application 40 included in the embedding web page 203 . It will be appreciated that this may be a component model and may not be the Document Object Model (DOM) of the containing web page 203 . The embedding web page 203 DOM can be much more complex and granular than the component model, because the actual embedding web page 203 is either part of the website building system 30 infrastructure or constitutes the embedding web page 203 . It can contain any number of HTML elements supporting elements - both hidden and visible. The component model would therefore be much simpler.

이제 텍스트 구성요소 [a]가 다수의 HTML 구성(construct)들(외함(enclosing) div 태그 [b], 내부 div 태그 [c], 프레임 "미니 위젯들" [d1]..[d5] 등과 같은)을 사용하여 어떻게 구현될 수 있는가를 도시하는 도 8이 참조된다. 포함 웹 페이지(203)에 대한 DOM 모델 [e]는 이 하위 요소들의 각각의 요소별로 별개의 DOM 트리 노드(tree node)들을 포함할 수 있다. 구성요소 모델 [f]은 훨씬 더 간단하여, 단지 단일 구성요소 노드 [g]만을 포함할 수 있다.Text component [a] now contains multiple HTML constructs (enclosing div tag [b], inner div tag [c], frame "mini widgets" [d1]..[d5] etc. Reference is made to FIG. 8 , which shows how it can be implemented using ). The DOM model [e] for the containing web page 203 may include separate DOM tree nodes for each element of these sub-elements. The component model [f] is much simpler, and can contain only a single component node [g].

시스템(100)이 또한 선택 구성요소 노출을 지원할 수 있음을- 설계자(5)가 링커(23)를 통해 어떤 구성요소들이 제 3 자 애플리케이션(40)에 노출되어야 하는지를 지정할 수 있고, 단지 이 구성요소들만이(가능하다면 이것들로 이어지는 "포함 경로(containment path)"를 포함하는) 제 3 자 애플리케이션(40)에 보일 수 있는 간소화된 구성요소 모델 내에 포함될 수 있음이 인정될 것이다. 이 상술한 바는 자신들의 유형 또는 임의의 다른 웹사이트 구축 시스템(30) 속성에 따라, 포함되는 구성요소들을 명시적으로 표기함으로써 수행될 수 있다. 제 3 자 애플리케이션(40)은 그 후에 포함 웹 페이지(203) 구성요소 모델을 검토하고 필요한 구성요소들의 위치를 찾아낼 수 있다.System 100 can also support exposing optional components - designer 5 can specify via linker 23 which components should be exposed to 3rd party application 40, only this component It will be appreciated that only elements (including possibly a “containment path” leading to them) may be included within the simplified component model visible to third party applications 40 . This above can be done by explicitly marking the components to be included, depending on their type or any other properties of the website building system 30 . The third party application 40 may then review the containing web page 203 component model and locate the necessary components.

포함 웹 페이지(203) 및 제 3 자 애플리케이션(40) 인스턴스들 사이의 링크들은 또한 특정한 이벤트를 기록하기 위해 런타임 동안 제 3 자 애플리케이션(40)이 통신을 송신할 수 있는 브로드캐스트 링킹(broadcast linking)과 같이 자동으로 생성될 수 있음이 또한 인정될 것이다. 이 통신은 선택적이거나 강제적일 수 있다(즉, 제 3 자 애플리케이션(40)은 그와 같은 메시지들을 수신하도록 링크되어 있는 정합하는 제 3 자 애플리케이션(40)이 있지 않으면 기능을 할 수 없거나 설치될 수 없다). 예를 들어, 제 3 자 애플리케이션(40)은 자신이 수행하는 활동들에 대한 정보 패킷들을 브로드캐스팅할 수 있고, 임의의 설치된 로깅(logging) 제 3 자 애플리케이션들(40)은 이 정보 패킷들을 수신할 수 있다.Links between the containing web page 203 and the third-party application 40 instances are also broadcast linking through which the third-party application 40 can send communications during runtime to record specific events. It will also be appreciated that it can be automatically generated as This communication may be optional or mandatory (i.e., the third-party application 40 may not function or may be installed without a matching third-party application 40 that is linked to receive such messages. none). For example, a third-party application 40 may broadcast information packets about the activities it performs, and any installed logging third-party applications 40 receive these information packets. can do.

이제 세팅들이 완비되어 있는 새로 생성되는 페이지들은 본원 아래에서 더 상세하게 기술되는 바와 같이 런타임에서 호출되도록 애플리케이션 리포지토리(22)에(WBS 조정기(21)를 통해) 저장될 수 있다.Newly created pages, now complete with settings, may be stored in the application repository 22 (via the WBS coordinator 21 ) to be called at runtime as described in more detail herein below.

이제 다시 도 7b가 참조된다. 이 실시예에서 요소들은 클라이언트(10)의 요소들을 제외하고 도 7a에서의 요소들과 동일하다. 런타임 중에, 클라이언트(10)는 포함 웹 페이지들(203)을 디스플레이하기 위하여 뷰어(201)를 포함한다. 뷰어(201)는 각각 제 3 자 애플리케이션(40)의 상이한 인스턴스(하나 이상의 제 3 자 애플리케이션(40)으로부터 도출되는 인스턴스들)을 디스플레이하기 위하여 다수의 뷰 포트(view port)들(202)을 포함할 수 있음이 인정될 것이다. 클라이언트(10)는 또한 통신 허브(205)를 포함하여 통신을 증진시키고 그리고 관련된 포함 웹 페이지(203)에 어떠한 접속도 없이 호스팅된 제 3 자 애플리케이션들(40) 사이에 필요한 임의의 통신과 함께 포함 웹 페이지(203) 및 이것이 호스팅하고 있는 임의의 제 3 자 애플리케이션들(40) 사이에 백 채널(back channel)을 제공한다. 허브(205)의 기능은 본원 아래에서 더 상세하게 기술될 것이다.Reference is now again made to FIG. 7B . The elements in this embodiment are the same as those in FIG. 7A except for the elements of the client 10 . During runtime, the client 10 includes a viewer 201 for displaying the containing web pages 203 . The viewer 201 includes a number of view ports 202 to each display a different instance of the third-party application 40 (instances derived from one or more third-party applications 40 ). It will be acknowledged that The client 10 also includes a communication hub 205 to facilitate communication and embedding with any communication necessary between the hosted third party applications 40 without any connection to the associated embedding web page 203 . It provides a back channel between the web page 203 and any third party applications 40 it is hosting. The function of hub 205 will be described in more detail herein below.

허브(205)는 포함 웹 페이지(203) 및 임의의 제 3 자 애플리케이션(40) 내포들 모두가 볼 수 있는 웹 사이트의 상호 작용 부분들이고 이들의 통신은 클라이언트-서버 왕복에 의해 지연되지 않아야 하므로 클라이언트(10)에서 구현될 수 있음이 인정될 것이다. 대안의 실시예에서, 허브(205)는 제 3 자 애플리케이션 서버들(40)이 많은 데이터를 교환할 필요가 있고 이것들을 클라이언트(10)를 통해 라우팅(routing)하지 않는 것이 더 바람직한 경우에 웹사이트 구축 시스템 서버(20)에서 구현될 수 있다.The hub 205 is the interactive part of a web site that can be viewed by both the containing web page 203 and any third party application 40 inclusions and their communication must not be delayed by client-server round trips, so the client It will be appreciated that it can be implemented in (10). In an alternative embodiment, the hub 205 is a website where the 3rd party application servers 40 need to exchange a lot of data and it is more desirable not to route them through the client 10 . It may be implemented in the building system server 20 .

통신 허브(205)는 웹사이트 구축 시스템(30) 및 하나 이상의 제 3 자 애플리케이션들(40) 사이뿐만 아니라 다수의 제 3 자 애플리케이션들(40) 사이에서의 통신의 상이한 결합들을 지원할 수 있음이 인정될 것이다. 예를 들어, 허브(205)는 제 3 자 애플리케이션(40)이 웹사이트 구축 시스템(30)에게 주 사이트 내의 다른 페이지로 전환할 것을 요청하는 것을 가능하게 할 수 있다. 통신 허브(205)는 또한 제 3 자 애플리케이션(40)이 가능하면 포함 페이지의 레이아웃에 영향을 미치는 자기 자신의 윈도우의 크기를 조정할 것을 요청하는 것을 가능하게 할 수 있다. 이는 본원 아래에서 더 상세하게 기술되는 동적 레이아웃 처리를 통해 행해질 수 있다. 대안으로, 포함 웹 페이지(203)는 (예를 들어) 디스플레이에서 변경을 수용하기 위하여 상이한 버전으로의 전환이 필요하면 제 3 자 애플리케이션(40)이 상이한 버전으로 전환할 것을 요청할 수 있다. 이 2-웨이 통신은 또한 본원에서 상술한 바와 같이 제 3 자 애플리케이션(40) 구성요소 및 추가 정보를 디스플레이하는 제 3 자 애플리케이션(40)과 관련되는 웹사이트 구축 시스템(30) 구성요소 사이의 통신뿐만 아니라 다 부분 제 3 자 애플리케이션들(40) 및 모듈식 제 3 자 애플리케이션들의 요소들 사이의 통신이 개시되도록 할 수 있음이 인정될 것이다.It is recognized that the communication hub 205 may support different combinations of communication between the website building system 30 and one or more third party applications 40 as well as between multiple third party applications 40 . will be For example, the hub 205 may enable a third party application 40 to request the website building system 30 to switch to another page within the main site. Communication hub 205 may also enable third party applications 40 to request resizing of their own windows, possibly affecting the layout of the containing page. This may be done through dynamic layout processing, which is described in more detail herein below. Alternatively, the containing web page 203 may request the third party application 40 to switch to a different version if (eg) a switch to a different version is required to accommodate changes in the display. This two-way communication also includes communication between a third party application 40 component and a website building system 30 component associated with the third party application 40 displaying additional information as described hereinabove. It will be appreciated that as well as allowing communication between elements of multi-part third party applications 40 and modular third party applications to be initiated.

시스템(100)은 또한 온라인 및 오프라인 웹사이트 구축 시스템(30) 모두를 사용하여 구현될 수 있고 이는 클라이언트 측 요소들, 웹사이트 구축 시스템(30) 벤더 서버들, 제 3 자 애플리케이션(40) 벤더 서버들 및 다른 제 4 자 서버들과 같이, 호스팅 방법들의 임의의 결합을 사용할 수 있음이 더 인정될 것이다. 오프라인 실시예의 경우 본원에서 상술한 바와 같이 서버는 여전히 시스템(100)을 구현할 필요가 있을 수 있음이 인정될 것이다.System 100 may also be implemented using both online and offline website building system 30 , which includes client-side components, website building system 30 vendor servers, third party application 40 vendor servers, and so on. It will further be appreciated that any combination of hosting methods may be used, such as servers and other third party servers. It will be appreciated that for an offline embodiment, a server may still need to implement system 100 as described hereinabove.

시스템(100)은 또한 큰 조직에 대한 사설 사이트 호스팅 배열과 같이 상이한 서버 세트(웹사이트 구축 시스템 벤더에 의해 운영되지 않는) 상에 호스팅될 수 있다.System 100 may also be hosted on a different set of servers (not operated by a website building system vendor), such as a private site hosting arrangement for a large organization.

시스템(100)은 또한 본원에서 상술한 바와 같이 제 3 자 애플리케이션(40)으로부터 제 3 자 애플리케이션(40) 인스턴스 포함 선택사양의 전체 색역(gamut)을 지원할 수 있다. 그러나, 시스템(100)은 또한 단지 이 선택사양들의 하위 세트를 지원할 수 있거나 또는 제 3 자 애플리케이션(40) 인스턴스 내포 가능성들에 대해 제한을 둘 수 있다.System 100 may also support the full gamut of optional including third party application 40 instances from third party applications 40 as described hereinabove. However, system 100 may also support only a subset of these options or may place restrictions on third party application 40 instance nesting possibilities.

시스템(100)은 또한 다 부분 제 3 자 애플리케이션들(40)을 구현할 수 있다. 다 부분 제 3 자 애플리케이션(40)은 다수의 디스플레이 영역들을 포함할 수 있고, 이 영역들의 각각은 별개의 아이프레임을 사용하여 처리된다. 이 영역들은 또한 본원에서 아래에 더 상세하게 기술되는 바와 같이 통신 허브(205)를 통해 협력할 수 있다(필요에 따라).System 100 may also implement multi-part third party applications 40 . The multi-part third party application 40 may include multiple display regions, each of which is processed using a separate iframe. These regions may also cooperate (as needed) via communication hub 205 as described in more detail herein below.

이제 다 부분 제 3 자 애플리케이션(40)의 하나의 예를 도시하는 도 9가 참조된다. 도시되는 바와 같이, 앱스토어 [b]로부터 획득되는 블로그 제 3 자 애플리케이션 [a]는 포함 웹 페이지(203) [c]에 배치된다. 블로그 제 3 자 애플리케이션 [a]은 다음과 같이 3개의 영역들을 포함한다: 블로그 엔트리 영역 [d]; 태그 클라우드 영역 [e]; 뉴스 업데이트 영역 [f]. 다 부분 제 3 자 애플리케이션은 자체의 다수의 영역들을, 단일 애플리케이션의 다수의 동시 상주 부분들로서와 같은-위의 블로그 예에서와 같이- 또는 단일 애플리케이션의 다수의 선택적 상주 부분들로서와 같은-항상 보이는 다수의 영역들 및 선택적이고 단지 필요에 따라 디스플레이되는 다수의 영역들을 가지는- 것을 포함하는 다수의 방식들로 사용할 수 있음이 인정될 것이다. 선택 영역들의 디스플레이는 제 3 자 애플리케이션(40)에 의해 또는 설계자(5)(제 3 자 애플리케이션을 포함하고 있을 때 이 제 3 자 애플리케이션을 구성하는 방법을 결정하는)에 의해 제어될 수 있다. 디스플레이는 또한 구성 또는 추가 대화 영역들과 같은 지원 기능 영역들로서; 다버전 제 3 자 애플리케이션에 대한 대안의 디스플레이로서(예를 들어, 제 3 자 애플리케이션의 작은 버전 및 큰 버전을 가지거나 제 3 자 애플리케이션의 세로(portrait) 및 가로(landscape) 버전을 가지는) 제어될 수 있다.Reference is now made to FIG. 9 , which shows one example of a multi-part third party application 40 . As shown, the blog third-party application [a] obtained from the app store [b] is placed on the containing web page 203 [c]. The blog third party application [a] includes three areas as follows: a blog entry area [d]; tag cloud area [e]; News update area [f]. A multi-part third-party application is a multi-part always visible multiple of its multiple areas, such as as multiple concurrently resident parts of a single application - as in the blog example above - or as multiple optional resident parts of a single application. It will be appreciated that it can be used in a number of ways, including having regions of The display of the selection areas may be controlled by the third party application 40 or by the designer 5 (which determines how to configure the third party application when containing it). The display may also be used as supporting functional areas, such as configuration or additional dialog areas; to be controlled as an alternative display to multi-version third-party applications (eg, having small and large versions of third-party applications or having portrait and landscape versions of third-party applications); can

상술한 기능은 제 3 자 애플리케이션(40) 요소 디스플레이에 대해 아이프레임들을 사용함으로써 구현되어 아이프레임 기반 아키텍처의 캡슐화 및 보안 장점들을 획득할 수 있음이 인정될 것이다.It will be appreciated that the functionality described above may be implemented by using iframes for third party application 40 element display to obtain the encapsulation and security advantages of an iframe based architecture.

다 부분 제 3 자 애플리케이션들(40)의 구현에는 제 3 자 애플리케이션들(40)(자체의 아이프레임들 내부의)이 다양한 아이프레임들의 디스플레이를 제어할(예를 들어, 이것들의 시인성(visibility), 크기 및 위치) 수 있을 필요가 있음이 더 추가될 것이다. 통신 허브(205)는 본원 아래에서 더 상세하게 기술되는 바와 같이 이 디스플레이를 가능하게 할 수 있음이 더 인정될 것이다.Implementation of multi-part third-party applications 40 includes third-party applications 40 (within their own iframes) to control the display (eg, their visibility) of the various iframes. , size and location) will be further added. It will be further appreciated that the communication hub 205 may enable this display as described in more detail herein below.

심지어 다 부분 제 3 자 애플리케이션(40)이 다수의 요소들 및 영역들로 구성(시각적으로)될 때에도, 이것은 여전히 구매(예를 들어, 앱스토어(25)에서), 설치, 구성 등의 측면에서 단일 제 3 자 애플리케이션(40)으로 간주되는 것 또한 인정될 것이다.Even when the multi-part third-party application 40 is (visually) composed of multiple elements and areas, it is still in terms of purchase (eg, in the App Store 25), installation, configuration, etc. It will also be appreciated what is considered a single third party application 40 .

기존의 시스템들에서, 각각의 제 3 자 애플리케이션(40)은 별개의 실체로 간주될 수 있고 2개의 제 3 자 애플리케이션들(40)(동일한 벤더로부터 또는 이와는 달리 협력하는 벤더들로부터의) 사이의 임의의 협력은 개별 케이스를 기반으로 하여 즉석으로 전개되어야 한다. 시스템(100)은 또한 개별적으로 구매 및 설치될 수 있는 다수의 협력 하위 모듈들로 구성되는 모듈식 제 3 자 애플리케이션들(40)을 지원할 수 있음이 인정될 것이다.In existing systems, each third-party application 40 can be considered a separate entity and can be used between two third-party applications 40 (from the same vendor or from otherwise cooperating vendors). Any collaboration should develop ad hoc on a case-by-case basis. It will be appreciated that system 100 may also support modular third party applications 40 comprising a number of cooperative sub-modules that may be purchased and installed individually.

이제 모듈식 판매 관리 제 3 자 애플리케이션 [a]이 다음의 하위 모듈들: CRM 모듈 [b]; 리드형 관리(lead management) 모듈 [c] 및 전자 상거래 모듈 [d]을 어떻게 포함할 수 있는지를 도시하는 도 10이 참조되고; 단일 제 3 자 애플리케이션 벤더는 모든 필요한 제 3 자 애플리케이션 모듈들을 제공할 수 있다. 대안으로, 제 3 자 애플리케이션 벤더는 제 3 자 애플리케이션(40) 모듈들의 하위 세트(및 기능)를 제공하고 설계자가 동일한 또는 추가 제 3 자 애플리케이션 벤더들로부터 상보의 제 3 자 애플리케이션 모듈들을 구매/설치하는 것을 가능하게 할 수 있다. 다 부분 제 3 자 애플리케이션이 단일 벤더로부터 단일 제 3 자 애플리케이션으로서 획득되고 설치되어도, 이것은 단지 다수의 스크린 영역들을 점유하기 위해 발생하는데 반해, 모듈식 제 3 자 애플리케이션은 별개로 획득 및 설치될 수 있는 다수의 모듈들을 포함하고 다수의 제 3 자 애플리케이션 벤더들로부터의 모듈들을 포함하는 것이 가능할 수 있음이 인정될 것이다. 다수의 벤더들로부터의 다수의 제 3 자 애플리케이션 모듈들을 통합하는 능력을 제공하기 위하여, 각각의 제 3 자 애플리케이션 모듈은 자신이 필요로 하는 인터페이스들/기능들의 목록 및 자신이 제공하는 인터페이스들/기능들의 목록을 제공해야만 한다. 이것은 예를 들어, 계층의 점 분리 명칭 관습(예를 들어, My_CRM_TPA.NewClient.GetInfo) 및 인터페이스 파라미터 사양에 기초하여 인터페이스 명칭들의 목록들을 사용함으로써 행해질 수 있다.The modular sales management third party application [a] now has the following sub-modules: CRM module [b]; Reference is made to FIG. 10 , which shows how it may include a lead management module [c] and an e-commerce module [d]; A single 3rd party application vendor may provide all necessary 3rd party application modules. Alternatively, a third party application vendor provides a subset (and functionality) of the third party application 40 modules and the designer purchases/installs complementary third party application modules from the same or additional third party application vendors. can make it possible to Although a multi-part third-party application is acquired and installed as a single third-party application from a single vendor, this only happens to occupy multiple screen areas, whereas a modular third-party application can be acquired and installed separately. It will be appreciated that it may be possible to include multiple modules and include modules from multiple third party application vendors. To provide the ability to integrate multiple third-party application modules from multiple vendors, each third-party application module includes a list of interfaces/functions it needs and the interfaces/functions it provides. You must provide a list of This may be done, for example, by using lists of interface names based on the layer's dot-separated name convention (eg My_CRM_TPA.NewClient.GetInfo) and the interface parameter specification.

제 3 자 애플리케이션(40) 모듈은 필요한 인터페이스를 강제적인 것으로(즉, 모듈은 이것들 없이 작업하지 않을 것이다) 또는 선택적인 것으로(즉, 모듈은 작업할 것이지만 감소하거나 수정된 기능을 제공할 수 있다) 지정할 수 있다. 그러므로, 각 인터페이스에 제공되는 파라미터들은: 인터페이스 고유 명칭; 인터페이스 기술(interface description) - 설계자(5)에게 보임으로써 이 설계자가 (예를 들어) 빠진 인터페이스들에 의해 처리되는 기능을 인지할 것이다; 강제/선택 상태; 인터페이스 파라미터 목록 및 유형이다. 각각의 제 3 자 애플리케이션 모듈은 여전히 별개의 아이프레임(또는 아이프레임들의 세트)에 상주하는 것이 인정될 것이다. 인터페이스의 동작은 본원 아래에서 더 상세하게 기술되는 통신 채널들에 기초한다.3rd party application 40 modules may implement the necessary interfaces either as mandatory (i.e. the module will not work without them) or optional (i.e. the module will work but may provide reduced or modified functionality). can be specified. Therefore, the parameters provided for each interface are: an interface unique name; interface description - visible to the designer 5 , who will (for example) be aware of the functionality handled by the missing interfaces; forced/selected status; Interface parameter list and type. It will be appreciated that each third party application module still resides in a separate iframe (or set of iframes). The operation of the interface is based on the communication channels described in more detail herein below.

제 3 자 애플리케이션(40) 모듈들은 웹사이트 설계 단계 동안 조립될 수 있음이 인정될 것이다. 웹사이트 구축 시스템(30)은 추가 제 3 자 애플리케이션(40) 모듈들이 추가될 때 인터페이스 참조변수(interface reference)들을 리졸빙(resolving)할 수 있고 - 여기서 새로운 제 3 자 애플리케이션(40) 모듈들은 기존의 필요한 인터페이스들을 리졸빙하고 가능하면 새로운 (리졸빙되지 않은) 필요한 인터페이스들을 추가한다.It will be appreciated that third party application 40 modules may be assembled during the website design phase. The website building system 30 may resolve interface references as additional third party application 40 modules are added - where new third party application 40 modules are Resolves the necessary interfaces of

설계자(5)는 강제적(및 선택적) 인터페이스들이 여전히 리졸빙되지 않은 동안에 완성된 웹 사이트를 편집 및 운영할 수 있음이 또한 인정될 것이다. 그러나, 설계자(5)는 모든 강제적 인터페이스들이 리졸빙될 때까지 생성되는 웹 사이트를 발행하지 않을 수 있고 그리고 이 설계자는 허브(205)가 여전히 리졸빙되지 않은 강제적 인터페이스들을 가지는 제 3 자 애플리케이션 모듈을 활성화하는데 필요할 수 있는 기능을 시도하면 이 설계자에게 프롬프트(prompt)가 행해질 것이다.It will also be appreciated that the designer 5 can edit and operate the finished web site while the mandatory (and optional) interfaces are still unresolved. However, the designer 5 may not publish the web site that is created until all the forcing interfaces have been resolved and the designer may have a third party application module where the hub 205 still has unresolved forcing interfaces. This designer will be prompted to try a function that may be required to activate it.

앱스토어(25)는 필요한 제 3 자 애플리케이션 모듈 인터페이스들을 리졸빙하는 제 3 자 애플리케이션 모듈들의 위치를 찾을 수 있는 탐색기(26)를 포함할 수 있음이 더 인정될 것이다. 탐색기(26)는 리졸빙되지 않은 인터페이스들에 기초하여 특정한 제 3 자 애플리케이션 모듈(들)을 탐색하거나 모든 제 3 자 애플리케이션 모듈들을 탐색할 수 있다. 탐색기(26)는 또한 현재 리졸빙되지 않은 인터페이스들에 대하여 또는 심지어 이미 리졸빙된 인터페이스들에 대하여 탐색할 뿐만 아니라 강제적, 선택적 또는 이 둘 모두의 유형들의 인터페이스들에 대하여 탐색할 수 있다. 탐색기(26)는 또한 특정한 제 3 자 애플리케이션이 리졸빙하지 않은 인터페이스들을 리졸빙하고 제한되고 특정한 제 3 자 애플리케이션 벤더들을 탐색하는 것으로 제한될 수 있음이 인정될 것이다. 탐색기(26)는 제 1 레벨 탐색을 수행하거나(즉, 모듈들은 현재 리졸빙되지 않은 인터페이스들을 만족시킨다) 또는 다중 레벨 탐색을(즉, 반복적인 탐색을 수행하여, 또한 이전 탐색 차례에 의해 발견된 제 3 자 애플리케이션 모듈들을 고려할 때 추가되는 리졸빙되지 않은 인터페이스들을 만족시키는 모듈들을 찾는) 수행할 수 있다.It will be further appreciated that the app store 25 may include a navigator 26 that may locate third party application modules resolving the necessary third party application module interfaces. The searcher 26 may search for a specific third-party application module(s) or search all third-party application modules based on unresolved interfaces. The searcher 26 may also search for interfaces that are currently unresolved, or even interfaces that have already been resolved, as well as types of interfaces that are mandatory, selective, or both. It will be appreciated that the explorer 26 may also be limited to resolving interfaces that a particular third-party application has not resolved and may be limited to discovering certain third-party application vendors. Searcher 26 performs a first-level search (ie, modules satisfy currently unresolved interfaces) or multi-level search (ie, performs an iterative search, and also finds (finding modules that satisfy unresolved interfaces to be added when considering third-party application modules) may be performed.

시스템(100)은 어떤 빠진 인터페이스들을 진행하는 것에 대한 중요성에 대하여 설계자(5)에게 정보를 제공하기 위하여 인터페이스 기술들을 사용할 수 있다. 허브(205)는 여전히 통신할 필요가 있는 비호환 제 3 자 애플리케이션들 사이의 인터페이스 변환을 제공할 수 있다. 이는 웹사이트 구축 시스템(30) 제공자에 의해 또는 소정의 필요한 인터페이스를 상이한 포맷으로 적응시키는 외부 당사자에 의해 추가되는 어댑터 모듈(adapter module)에 의해 행해질 수 있다.System 100 may use interface techniques to inform designer 5 about the importance of proceeding with any missing interfaces. Hub 205 may provide interface translation between incompatible third party applications that still need to communicate. This may be done by the website building system 30 provider or by an adapter module added by an external party that adapts any required interface to a different format.

시스템(100)은 또한 생성된 온라인 애플리케이션을 보기 위하여 인터넷(또는 임의의 다른 네트워크 접속)을 사용하고 비 브라우저 클라이언트 측 소프트웨어를 사용하는 온라인 애플리케이션 편집 시스템들에 적용될 수 있다. 그와 같은 시스템은 정규 웹 기반구조에 의해 사용될 때 특정한 기술들(예를 들어, IP 통신, HTTP, HTML 등)을 사용할 필요가 없다.System 100 is also applicable to online application editing systems that use the Internet (or any other network connection) to view the created online application and use non-browser client-side software. Such a system does not need to use specific technologies (eg, IP communication, HTTP, HTML, etc.) when used by a regular web infrastructure.

당업계에 공지되어 있는 표준 교차 도메인 통신 방법들이 교차 도메인 통신을 용이하게 하는 데 사용될 수 있음이 인정될 것이다. 이 방법들은 다음을 포함할 수 있다:It will be appreciated that standard cross-domain communication methods known in the art may be used to facilitate cross-domain communication. These methods may include:

HTML5 PostMessage : 이는 안전한 교차 도메인 메시지를 제공하는 데 사용될 수 있는 표준 HTML5 특징이다. HTML5 Windows.Postmessage를 사용하면, 메시지들은 심지어 상이한 도메인들에 속할 때조차도, 윈도우들, 아이프레임들 및 주 HTML 문서 사이에서 안전하게 송신될 수 있다. PostMessage는 메시지가 송신될 도메인을 명시하기 위하여 송신 아이프레임에 대한 툴을 그리고 메시지가 송신되었던 도메인을 검증하기 위해 수신 아이프레임에 대한 툴을 제공한다. HTML5 PostMessage : This is a standard HTML5 feature that can be used to provide secure cross-domain messages. Using HTML5 Windows.Postmessage, messages can be safely sent between windows, iframes and the main HTML document, even when they belong to different domains. PostMessage provides tools for sending iframes to specify the domain to which the message is sent, and tools for receiving iframes to verify the domain from which the message was sent.

메시지들에 대한 URL 부위 식별자(fragment identifier) : 이 방법은 하나의 종단점으로부터 다른 종단점으로 메시지 데이터를 송신하기 위하여 URL 부위 식별자를 사용하는 것에 의존한다. 데이터는 평이한 텍스트로 인코딩되고 목표 종단점 도메인 상에서 서비스를 또는 목표 종단점 아이프레임 내의 숨겨진 아이프레임을 호출하는 데 사용되는 URL에 추가된다(부위 식별자로서). 부위 식별자는 그 후에 목표 서비스 또는 아이프레임에서 코드에 의해 디코딩된다. URL fragment identifier for messages : This method relies on using a URL fragment identifier to transmit message data from one endpoint to another. The data is encoded in plain text and appended (as site identifier) to the URL used to invoke a service on the target endpoint domain or a hidden iframe within the target endpoint iframe. The site identifier is then decoded by the code in the target service or iframe.

특화된 통신 웹 서비스 : 웹사이트 구축 시스템(30)은 웹사이트 구축 시스템 서버(20) 상에 호스팅되는 특화된 웹을 제공한다. 다양한 통신 종단점들은 이 서버에 접속되어 - 메시지를 송신하거나 또는 대기하고 있는 메시지들을 체크한다. 이는 기술들의 사전-HTML5 코멧 세트(Comet set),HTML5-기반 웹소켓(WebSocket)들 또는 임의의 다른 큐잉(queuing), 폴링(polling), 서버 푸쉬(server push) 또는 유사한 기술과 같이 당업계에 공지되어 있는 방법들을 통해 행해질 수 있다. Specialized Communication Web Service : The website building system 30 provides a specialized web hosted on the website building system server 20 . Various communication endpoints connect to this server - sending messages or checking pending messages. This is a pre-HTML5 Comet set of techniques, HTML5-based WebSockets or any other queuing, polling, server push or similar technique known in the art. This can be done through known methods.

HTML5 로컬 스토리지(local storage) : HTML5는 큐잉된 메시지들을 저장하는 데 사용될 수 있는 구조화된 로컬 스토리지(local storage) 설비를 제공한다. 그러나, 로컬 스토리지는 단지 저장 아이프레임과 동일한 도메인에 속하는 웹 컨텐츠에 의해서만 액세스될 수 있다. 당업계에서는, 도메인-특정 로컬 스토리지가 외국 도메인에 기반하는 아이프레임들로부터 액세스되는 것이 가능하도록 하는 필요한 중간 아이프레임을 생성하기 위하여 작은 서버가 지원을 제공하는 Meebo XAuth 제품-현재 Google Inc.이 소유함-에 의해서 사용되는 기저의 기술과 같은 해법들이 개발되어 왔다. HTML5 local storage : HTML5 provides a structured local storage facility that can be used to store queued messages. However, local storage can only be accessed by web content belonging to the same domain as the storage iframe. In the art, a Meebo XAuth product—now owned by Google Inc.—that a small server provides support for creating the necessary intermediate iframes to enable domain-specific local storage to be accessed from iframes based on foreign domains. Solutions have been developed, such as the underlying technique used by Hamm.

HTML5 로컬 파일 시스템 액세스 애플리케이션 프로그래밍 인터페이스(Application Programming Interface; API)들 : 상술한 로컬 스토리지의 사용과 유사하게, 교차 아이프레임 통신 채널은 HTML5 파일 액세스 API들(File API, FileWirter API 및 FileReader API)을 통해 액세스되는 사용자 에이전트의 로컬 스토리지에 있는 로컬 파일들을 사용하여 구성될 수 있다. 그러나 HTML5 파일 시스템 액세스 API들에 의해 생성되는 샌드박싱된 로컬 파일 시스템은 여전히 개인-출처(origin-private)이므로 중간 아이프레임/서버 구성요소는 출처가 동일한 한계를 메우는 데 필요할 것임이 주지된다. HTML5 Local File System Access Application Programming Interfaces (APIs) : Similar to the use of local storage described above, the cross-iframe communication channel is via HTML5 file access APIs (File API, FileWirter API, and FileReader API). It can be configured using local files in the local storage of the user agent being accessed. However, it is noted that the sandboxed local file system created by the HTML5 file system access APIs is still origin-private, so an intermediate iframe/server component will be needed to fill the same-origin limit.

특화된 브라우저 플러그 인(Plug In) : 특화된 브라우저(또는 다른 사용자 에이전트) 플러그 인은 교차 아이프레임 메시지 큐를 관리하기 위해 생성될 수 있다. 그와 같은 플러그 인은 웹사이트 구축 시스템(30)의 사용자들에 의해 설치되어야 할 것이고(모든 레벨들로) 필요한 서비스들을 모든 아이프레임들 및 주 웹사이트 구축 시스템(30) 페이지들에 제공할 것이다. Specialized Browser Plug-ins : A specialized browser (or other user agent) plug-in can be created to manage cross-iframe message queues. Such a plug-in would have to be installed (at all levels) by users of the website building system 30 and would provide the necessary services to all iframes and the main website building system 30 pages. .

통신 허브(205)는 본원에서 위에 논의된 전송 방법들 중 임의의 방법을 사용하는 모든 아이프레임간 통신에 대한 브로커(broker) 역할을 하는 것이 인정될 것이다. 허브(205)는 제 3 자 애플리케이션(40) 벤더에 의해 제공되고 특성 시트(23)에 저장되는 바와 같은 제 3 자 애플리케이션(40) 세부사항 및 포함 웹 페이지(203) 구조를 완전히 인지할 수 있음이 더 인정될 것이다. 제 3 자 애플리케이션(40)은 또한 상이한 애플리케이션들 내에 포함될 때 그리고 동일한 애플리케이션 내의 상이한 내포의 인스턴스들에 대해(본원에서 상술한 바와 같이) 상이한 파라미터들을 가질 수 있다. 그와 같은 파라미터들은 스마트 어드레싱(smart addressing)(본원 아래에서 더 상세하게 기술되는)에 대해 사용될 수 있는 고유 인스턴스 명칭을 포함할 수 있다. 허브(205)는 또한 특성 시트(23) 내에 저장되지 않을 수 있는 추가 제 3 자 애플리케이션(40) 세부사항을 인지할 수 있음이 또한 인정될 것이다.It will be appreciated that communication hub 205 acts as a broker for all inter-iframe communications using any of the transmission methods discussed above herein. The hub 205 may be fully aware of the 3rd party application 40 details and the containing web page 203 structure as provided by the 3rd party application 40 vendor and stored in the property sheet 23 . This will be more appreciated. The third party application 40 may also have different parameters when included within different applications and for different instances of nesting within the same application (as described above herein). Such parameters may include a unique instance name that may be used for smart addressing (described in more detail herein below). It will also be appreciated that the hub 205 may also be aware of additional third party application 40 details that may not be stored within the properties sheet 23 .

허브(205)는 또한 스마트 어드레싱 및 식별을 용이하게 하고, 통신 출처들을 검증하고, 통신 정책을 실시하고, 제 3 자 애플리케이션(40) 비 호환성 문제들을 해소하고 또한 제 3 자 애플리케이션(40)으로부터 구성요소들로 재시향시킬 수 있음이 또한 인정될 것이다. 허브(205)는 또한 본원 아래에서 더 상세하게 기술되는 바와 같이 포함 웹 페이지(203)에 행해지는 변경들에 기초하여 제 3 자 애플리케이션(40) 내의 레이아웃의 동적 업데이트들을 가능하게 할 수 있다.The hub 205 also facilitates smart addressing and identification, verifies communication sources, enforces communication policies, resolves third-party application 40 incompatibility issues, and also configures configuration from third-party applications 40 . It will also be appreciated that elements can be redirected. The hub 205 may also enable dynamic updates of the layout within the third party application 40 based on changes made to the containing web page 203 as described in more detail herein below.

이제 허브(205)의 상이한 구현 실시예들을 도시하는 도 11a 및 도 11b 및 허브의 상이한 요소들의 기능을 도시하는 도 11c가 참조된다.Reference is now made to FIGS. 11A and 11B , which show different implementations of the hub 205 , and FIG. 11C , which shows the functionality of the different elements of the hub.

허브(205)는 스마트 식별기(smart identifer) 및 어드레서(addresser)(310), 발신자 검증기(320), 통신 정책 시행기(330), 프로토콜 변환기(340), 재지향기(350), 동적 레이아웃 업데이터(360), 구성 관리자(370), 일반 업데이터(380) 및 호스팅식 애플리케이션 프로그래밍 인터페이스(API) 랩퍼(390)를 포함할 수 있다. 이 요소들의 기능은 본원 아래에서 상세하게 기술될 것이다. 모든 기능들은 제 3 자 애플리케이션(40) 대 웹사이트 구축 시스템(30) 채널 및 제 3 자 애플리케이션(40) 대 다른 제 3 자 애플리케이션(40)과 같이 모든 교차 도메인 통신 채널들에 적용 가능한 것이 인정될 것이다.The hub 205 is a smart identifer and addresser 310 , a sender verifier 320 , a communication policy enforcer 330 , a protocol converter 340 , a redirector 350 , and a dynamic layout updater. 360 , a configuration manager 370 , a generic updater 380 , and a hosted application programming interface (API) wrapper 390 . The function of these elements will be described in detail herein below. It will be appreciated that all functions are applicable to all cross-domain communication channels, such as a third party application 40 to website building system 30 channel and a third party application 40 to another third party application 40 . will be.

이제 참조되는 도 11a는 웹사이트 구축 시스템(30)에 컨택하기 위하여 내부 통신 애플리케이션 프로그래밍 인터페이스(API)를 사용하는 중간 아이프레임 [a]을 통하는 허브(205)에 대한 전형적인 실시예를 도시한다. 이 방식에서 (예를 들어) TPA [d]로부터 TPA [e]로 송신되는 메시지들 [c](통신 API 모듈들 [f] 및 [g]를 각각 사용하여)은 애플리케이션 특정 정보를 적용하는 방식들로 분석, 검증 또는 수정될 수 있다.11A, now referenced, shows an exemplary embodiment for a hub 205 via an intermediate iframe [a] using an internal communications application programming interface (API) to contact the website building system 30 . In this way messages [c] (using communication API modules [f] and [g], respectively) sent from TPA [d] to TPA [e] (for example) apply application specific information may be analyzed, verified or modified.

이제 참조되는 도 11b에 도시되는 바와 같은 대안의 실시예는 중간 아이프레임을 사용하지 않지만 오히려 통신 API 모듈들 [a] 및 [b](제 3 자 애플리케이션들 [c] 및 [d] 내에 각각 임베딩되는) 중 하나 또는 이 둘 모두에서 교차 도메인 통신을 사용한다. 모듈들 [a] 및 [b]은 애플리케이션 특정 정보를 수신하기 위하여 웹사이트 구축 시스템(30)과 직접 상호 작용하고 통신 메시지 [f]를 처리할 때 이 정보를 사용한다. 이 실시예는 웹사이트 구축 시스템(30) 레벨 정보의 상당한 양이 제 3 자 애플리케이션 내에 포함되는 모듈 내부에서 프로세싱될 수 있고 이 정보가 악성의 제 3 자 애플리케이션에 의해 액세스(또는 심지어 수정)될 수 있으므로 단점을 가진다(도 11a에 도시된 실시예와 비교하여).An alternative embodiment as shown in Fig. 11B, to which reference is now made, does not use an intermediate iframe, but rather embeds it within communication API modules [a] and [b] (third party applications [c] and [d], respectively). ) or both use cross-domain communication. Modules [a] and [b] interact directly with website building system 30 to receive application-specific information and use this information when processing communication messages [f]. This embodiment indicates that a significant amount of website building system 30 level information may be processed within modules that are included within third party applications and this information may be accessed (or even modified) by malicious third party applications. Therefore, it has a disadvantage (compared to the embodiment shown in Fig. 11a).

본원에서 상술한 바와 같이, 본원에서 상술한 모든 교차 통신 방법들에서, 아이프레임 어드레싱은 아이프레임의 출처(소스 도메인, 프로토콜 및 포트를 포함하는, 즉 메시지(수신자를 명시하는)를 송신할 때뿐만 아니라 메시지(수신자에 제공되는 송신자의 명칭으로서)를 수신할 때 직접 제 3 자 애플리케이션(40) 어드레싱을 사용하는)에 기초한다. 게다가 메시지 송신은 송신자가 목표 아이프레임 윈도우를 명시할 것을 요구한다(JavaScript의 document.getElementById("...").contentWindow 호출 또는 임의의 다른 방법을 사용하여). 그러므로, 기존 시스템들에서, 각각의 제 3 자 애플리케이션(40)은 자신이 통신할 수 있는 임의의 다른 제 3 자 애플리케이션(40)의 완전하고 특정한 세부사항들(도메인, 프로토콜, 포트 및 아이프레임 ID를 포함하는)을 담고 있어야 한다.As described herein above, in all cross-communication methods described herein above, iframe addressing not only includes the origin of the iframe (including the source domain, protocol and port, i.e., when sending the message (specifying the recipient)) rather than directly based on the 3rd party application 40 addressing when receiving the message (as the sender's name provided to the recipient). In addition, sending a message requires the sender to specify a target iframe window (using JavaScript's call to document.getElementById("...").contentWindow or any other method). Thus, in existing systems, each third-party application 40 has complete and specific details (domain, protocol, port, and iframe ID) of any other third-party application 40 with which it can communicate. should contain).

이 유형의 직접 어드레싱은 시스템(100)의 환경에서 다루기 불편할 수 있음이 인정될 것이다. 설계자(5)가 다수의 비조정 제 3 자 애플리케이션(40) 벤더들로부터의 제 3 자 애플리케이션들(40)을 통합할지라도, 제 3 자 애플리케이션(40) 벤더들은 소정의 도메인에서 호스팅되지만 이후에 상이한 도메인 또는 하위 도메인으로 이동되는 제 3 자 애플리케이션들(40)을 공급할 수 있다. 제 3 자 애플리케이션(40) 벤더는 임의의 소정의 제 3 자 애플리케이션에 컨택하는 데 사용되는 프로토콜 또는 포트를 변경할 수 있다. 설계자(5)는 제 3 자 애플리케이션(40)을 포함하는 포함 웹 페이지(203)의 설계를 수정하는 데 필요할 수 있다. 이것들 모두는 가동 중이고 수많은 사용자들이 액세스하고 있는 웹 사이트에서 사용되는 제 3 자 애플리케이션들(40)에서 발생할 수 있다. 게다가, 단일 포함 웹 페이지(203)는 상이한 기능들에 소용될 수 있는 하나의 제 3 자 애플리케이션(40)의 다수의 인스턴스들을 포함할 수 있다. 예를 들어, 제품 지원 웹 사이트 내의 단일 페이지는 2개의 챗(chat) 제 3 자 애플리케이션(40) 인스턴스들-하나는 사용자 대 사용자 챗 및 포럼을 위한 것이고 하나는 구입 가능할 때 벤더의 지원부서 사람과 대화하는 데 사용되는 것-을 포함할 수 있다.It will be appreciated that this type of direct addressing can be inconvenient to handle in the environment of system 100 . Although the designer 5 integrates 3rd party applications 40 from multiple uncoordinated 3rd party application 40 vendors, the 3rd party application 40 vendors are hosted in a given domain but later It is possible to provide third party applications 40 that are moved to a different domain or sub-domain. The third party application 40 vendor may change the protocol or port used to contact any given third party application. The designer 5 may be required to modify the design of the containing web page 203 containing the third party application 40 . All of these can occur in third party applications 40 used on web sites that are running and accessed by numerous users. Moreover, a single containing web page 203 may contain multiple instances of one third party application 40 that may serve different functions. For example, a single page within a product support website may contain two chat 3rd party application 40 instances - one for user-to-user chats and forums and one with the vendor's support person when available for purchase. used to converse.

어드레서 및 식별기(310)는 포함 웹 페이지(203)의 구조 및 제 3 자 애플리케이션(40)의 세부사항들(제 3 자 애플리케이션(40) 벤더에 의해 웹사이트 구축 시스템(30)에 제공되는 바와 같은)을 완전히 인지할 수 있음이 인정될 것이다. 어드레서 및 식별기(310)는 소스 또는 목표 제 3 자 애플리케이션들(40)의 어드레싱을 다음 중 임의의 하나를 사용하여 서로 제공할 수 있다: 제 3 자 애플리케이션(40) 고유 명칭(앱스토어(25)에 등록된 바와 같은); 포함 웹 페이지(203) 내의 각각의 제 3 자 애플리케이션(40) 인스턴스에 추가됨으로써 동일한 제 3 자 애플리케이션(40)의 다수의 인스턴스들의 어드레싱을 가능하게 하는 제 3 자 애플리케이션(40) 인스턴스 기술 ID(descriptive ID); 필요한 제 3 자 애플리케이션 유형/클래스에 대한 일반 식별자(예를 들어, "저는 포함 웹 페이지(203)에 있는 임의의 이벤트 로깅 제 3 자 애플리케이션(40) 인스턴스에 메시지 <x>를 송신하고자 합니다"). 그와 같은 식별자는 또한 제 3 자 애플리케이션(40)에 의해 지원되어야 하는 특정한 서비스들을 기술할 수 있다. 어드레서 및 식별기(310)는 또한 버전 표시 예를 들어: "저는 트랜잭션(transaction) <x>을 회계 패키지(accounting package) <y>의 인스턴스에, 그러나 그것이 버전 <z>에 속하는 경우에만 송신하고자 합니다"를 사용할 수 있다.The address and identifier 310 includes the structure of the containing web page 203 and details of the third-party application 40 (as provided to the website building system 30 by the third-party application 40 vendor). It will be recognized that the same) is fully perceptible. Addresser and identifier 310 may provide addressing of source or target third party applications 40 to each other using any one of the following: Third party application 40 unique name (AppStore 25 ) ) as registered in ); A third party application 40 instance descriptive that enables addressing of multiple instances of the same third party application 40 by being added to each third party application 40 instance within the containing web page 203 . ID); Generic identifier for the required 3rd party application type/class (eg "I want to send message <x> to any event logging 3rd party application (40) instance on the containing web page (203)") . Such an identifier may also describe particular services that should be supported by the third party application 40 . Address and identifier 310 may also indicate version eg: "I want to send transaction <x> to an instance of accounting package <y>, but only if it belongs to version <z> You can use".

런타임 중에, 제 3 자 애플리케이션들(40)은 단지 허브(205)와만 통신하므로 단지 허브(205)의 직접 주소(direct address)를 알 필요가 있으며 어떤 다른 제 3 자 애플리케이션(40)의 직접 주소를 알 필요가 없음이 인정될 것이다. 이 하나의 직접 주소는 웹사이트 구축 시스템(30)에 의해 제 3 자 애플리케이션(40) 제공자에게 제공되는 통신 API 랩퍼(도 11a에 도시되는 바와 같이 통신 모듈들(f 및 g) 및 도 11b에 도시되는 바와 같이 통신 모듈들(a 및 b))에 의해 캡슐화될 수 있다. 호출하는 제 3 자 애플리케이션(40)은 애플리케이션 인지 제 3 자 애플리케이션(40) 기술 주소(descriptive address)들을 제공할 수 있고(상술한 바와 같이) 어드레서 및 식별기(310)는 이것들을 직접 제 3 자 애플리케이션(40) 주소들로 변환하고 라우팅을 수행할 수 있다. 이 방식에서, 제 3 자 애플리케이션(40)은 자신이 통신하는 모든 가능한 제 3 자 애플리케이션들(40)의 절대 주소들의 표를 유지할 필요가 없다.During runtime, the third party applications 40 only communicate with the hub 205 and thus only need to know the direct address of the hub 205 and the direct address of any other third party application 40 . It will be admitted that there is no need to know. This one direct address is provided by the website building system 30 to the third party application 40 provider in the communication API wrapper (communication modules f and g as shown in FIG. 11a and communication modules f and g as shown in FIG. 11b ). may be encapsulated by the communication modules (a and b)) as The calling third-party application 40 may provide application-aware third-party application 40 descriptive addresses (as described above) and the addresser and identifier 310 may direct these to the third-party The application 40 may translate into addresses and perform routing. In this way, the third-party application 40 does not need to maintain a table of absolute addresses of all possible third-party applications 40 with which it communicates.

메시지 발신자(originator) 검증은 매우 중요한데 그렇지 않으면 수신하는 제 3 자 애플리케이션(40)이 적대적인 제 3 자 애플리케이션(40)으로부터 메시지를 수신할 수 있음이 인정될 것이다. 모든 통신이 허브(205)를 통해 발생할 수 있으므로, 발신자 검증기(320)는 제 3 자 애플리케이션들로부터의 모든 인입하는 메시지들의 인증성(authenticity)을 체크할 수 있다. 발신자 검증기(320)는 또한 메시지에 추가될 수 있고 추가 검증에 사용될 수 있는 추가 정보를 제공할 수 있다. 웹사이트 구축 시스템(30)에는 앱스토어(25)에 포함되고 시스템(100)에 의해 사용되는 모든 제 3 자 애플리케이션(40)이 등록되므로, 허브(205)는 웹사이트 구축 시스템(30)에 의해 메시지에 포함될 수 있는 고유 발신자 ID가 메시지 출처(도메인, 포트 등)와 정합하는지를 검증할 수 있음이 인정될 것이다.Message originator verification is very important, otherwise it will be appreciated that a receiving third party application 40 may receive a message from a hostile third party application 40 . Since all communications may occur through the hub 205 , the sender verifier 320 may check the authenticity of all incoming messages from third party applications. The sender verifier 320 may also provide additional information that may be added to the message and used for further verification. Since the website building system 30 registers all third party applications 40 included in the app store 25 and used by the system 100 , the hub 205 is It will be appreciated that it is possible to verify that a unique sender ID that may be included in a message matches the origin of the message (domain, port, etc.).

제 3 자 애플리케이션(40)은 외부 정보, 포함 웹 페이지(203) 정보 등에 좌우될 수 있는 일반 통신 정책을 규정할 수 있다. 통신 시행기(330)는 해당 통신 정책이 비부합 통신을 처리할 필요 없이 시행되는 것을 보장할 수 있다. 예를 들어, 분류된 정보 처리 웹 사이트에서, 제 3 자 애플리케이션들은 자신들의 프로파일에 분류 레벨 필드로 태그(tag)될 수 있다. 분류 레벨 X로 인증되는 백-엔드(back-end) 이벤트 로깅 데이터베이스를 제공하는 제 3 자 애플리케이션(40)은 정책을 규정할 수 있고 이에 따라 제 3 자 애플리케이션(40)은 X보다 더 큰 분류 레벨을 가지는 로깅에 대한 이벤트들을 수용하지 않을 것이다. 통신 시행기(330)는 그와 같은 상황에서, 필요한 예비 필터링을 수행하고, 상위로 분류되는 메시지들이 심지어 더 낮은 분류 애플리케이션에 도달하는 것을 방지할 수 있다.Third party applications 40 may define general communication policies that may depend on external information, embedded web page 203 information, and the like. The communication enforcer 330 may ensure that the corresponding communication policy is enforced without the need to handle nonconforming communication. For example, in a classified information processing website, third party applications may be tagged with a classification level field in their profile. A third-party application 40 that provides a back-end event logging database that is authenticated with classification level X may define a policy so that the third-party application 40 provides a classification level greater than X. It will not accept events for logging with . Communication enforcer 330 may, in such a situation, perform the necessary preliminary filtering and prevent messages that are classified higher from reaching even lower classification applications.

가능하면 협력할 수 있으나 일부 프로토콜 호환 가능성 문제로 인해 실제로 그렇게 하지 않는 동일한 생성 웹사이트에 설계자(5)가 2개의(또는 그 이상의) 제 3 자 애플리케이션들을 포함하고자 희망할 수 있음이 더 인정될 것이다. 예를 들어, 이제 참조되는 도 12에서 도시되는 바와 같이, e-샵 제 3 자 애플리케이션 [a]은 구매 주문 메시지들을 제 3 자 애플리케이션 [b](상이한 벤더에 의해 제공되는)와 같은 과금 및 출하 제 3 자 애플리케이션에 포스팅(posting)하는 능력을 가질 수 있다. 그러나, 제 3 자 애플리케이션 [a]에 의해 제공되는 정보는 제 3 자 애플리케이션 [b]에 의해 요구되는 일부 필드들을 포함하지 않을 수 있다. 그와 같은 상황은 전형적으로 수반되는 제 3 자 애플리케이션들의 제 3 자 애플리케이션 벤더들에 의해 해소될 수 있지만 일부 경우들에서 그와 같은 해소가 가능하지 않다(예를 들어, 2개의 제 3 자 애플리케이션들 중 하나가 현재 어떤 이유로 업데이트되지 않는다). 프로토콜 변환기(340)는 관련 메시지들을 [a]에서 [b]로 변환할 수 있다(예를 들어, 추가로 필요한 필드들을 제공함으로써). 그와 같은 변환은 프로토콜 변환기(340)에 의해 수행될 수 있거나 또는 가능한 경우에 인베딩 웹 사이트 및 포함 웹 페이지(203)와의 어떤 상호작용을 수반할 수 있다(예를 들어, 추가 정보가 필요한 경우).It will be further appreciated that the designer 5 may wish to include two (or more) 3rd party applications on the same creation website where they can collaborate if possible but do not actually do so due to some protocol compatibility issues. . For example, as shown in FIG. 12 to which reference is now made, the e-shop third-party application [a] sends purchase order messages to the same billing and shipping third-party application [b] (provided by a different vendor). May have the ability to post to third party applications. However, the information provided by the third-party application [a] may not include some fields required by the third-party application [b]. Such a situation can typically be addressed by 3rd party application vendors of involved 3rd party applications but in some cases such remediation is not possible (eg two 3rd party applications One of them is currently not updated for some reason). Protocol converter 340 may convert the relevant messages from [a] to [b] (eg, by providing additional necessary fields). Such conversion may be performed by the protocol converter 340 or may involve some interaction with the embedding web site and containing web page 203 where possible (eg, if additional information is desired). ).

제 3 자 애플리케이션(40)이 메시지들을 송신하거나 다른 제 3 자 애플리케이션(40)(상술한 e-샵/과금 제 3 자 애플리케이션(40) 쌍)으로부터 메시지를 수신할 것을 요구하는 어떤 능력들을 가지는 것이 더 인정될 것이다. 그러나, 이 해법의 일부가 누락될 수 있는 일부 경우들에서, 상기 예에서, 정합하거나 적절한 주문 처리 제 3 자 애플리케이션(40)이 존재하지 않는 것이 발생할 수 있다. 그와 같은 경우에, 재지향기(350)는 설계자(5)가 소정의 메시지들이 포함 웹 페이지(203) 구성요소로 또는 포함 웹 페이지(203) 구성요소로부터 라우팅될 수 있고 그리고 정합 능력들이 포함 웹 페이지(203) 구성요소 및 구성요소들이 제공할 수 있는 기능에 의해 해소될 수 있음을 명시하는 것을 가능하게 할 수 있다. 이것은 특수목적의 제 3 자 애플리케이션(40)의 구성을 요구하지 않고 전체 웹 사이트를 구성하는 것을 가능하게 할 것이다. 그러므로, 트랜잭션(transaction)들은 트랜잭션을 데이터베이스로 로깅하는 것을 수행할 수 있는 웹사이트 구축 시스템(30) 구성요소에 포스팅될 수 있고, 데이터베이스는 이후에 오프라인 과금 및 출하를 수행하는 데 사용될 수 있다(별개의 프로그램에 의해).The third party application 40 has certain capabilities that require it to send messages or receive messages from another third party application 40 (e-shop/charging third party application 40 pair described above). more will be appreciated. However, in some cases where part of this solution may be missing, it may occur that, in the above example, a matching or appropriate order processing third party application 40 does not exist. In such a case, the redirector 350 allows the designer 5 to allow certain messages to be routed to or from the containing web page 203 component and match capabilities to the containing web page 203 component. It may be possible to specify that page 203 may be addressed by a component and the functionality that the components may provide. This will make it possible to configure the entire web site without requiring the construction of a special purpose third party application 40 . Thus, transactions may be posted to a website building system 30 component that may perform logging of the transaction to a database, which may then be used to perform offline billing and shipping (separately). by the program of).

제 3 자 애플리케이션들(40)은 동일한 코드 베이스를 사용하지만 상이한 가능한 기능으로, 상이한 능력들을 가지는 다수의 구성들을 제공할 수 있다. 예를 들어, 제 3 자 애플리케이션들(40)은 무료 버전을 통해 기본 기능을 제공하고 구매되는 프리미엄 버전, 다수의 유료 버전들 또는 추가 구매 제 3 자 애플리케이션들(40) 특징들을 통해 추가 기능을 제공할 수 있다.Third party applications 40 may provide multiple configurations using the same code base but with different capabilities, with different possible functions. For example, third party applications 40 provide basic functionality through a free version and provide additional functionality through a purchased premium version, multiple paid versions or additionally purchased third party applications 40 features. can do.

시스템(100)이 사용자당(또는 실제로는 설계자당) 제 3 자 애플리케이션(40) 구매 상태에 대한 웹사이트 구축 시스템(30) 기반 관리를 포함할 수 있음이 인정될 것이다. 설계자들은 모두 등록된 웹사이트 구축 시스템(30) 사용자들일 수 있고 웹사이트 구축 시스템(30)은 그러므로 각 설계자(5) 별로 제 3 자 애플리케이션(40) 구매들의 데이터베이스를 관리할 수 있음이 더 인정될 것이다. 이 정보는 설계 단계 동안 TPA 조정기(24)에 의해 그리고 런타임 동안 구성 관리자(370)에 의해 특성 시트(23)에 저장될 수 있다. 예를 들어, 제 3 자 애플리케이션(40)은 웹사이트 구축 시스템(30) 클라이언트 측 요소에 버전 질의 메시지를 송신할 수 있다. 웹사이트 구축 시스템(30) 클라이언트 측 요소는 리포지토리(22)를 또는 이의 국지적으로 은닉된 카피를 참고하고 제 3 자 애플리케이션(40)에게 자신이 제공해야 하는 능력들에 대한 정보를 담은 응답 메시지를 회신할 수 있다.It will be appreciated that system 100 may include website building system 30 based management of third party application 40 purchase status per user (or indeed per designer). It will be further appreciated that designers can all be registered website building system 30 users and website building system 30 can therefore maintain a database of third party application 40 purchases for each designer 5 . will be. This information may be stored in the property sheet 23 by the TPA coordinator 24 during the design phase and by the configuration manager 370 during runtime. For example, the third party application 40 may send a version query message to the website building system 30 client-side element. The website building system 30 client-side element consults the repository 22 or a locally stashed copy thereof and returns a response message to the third party application 40 containing information about the capabilities it should provide. can do.

대안의 구현에서, 웹사이트 구축 시스템(30)은 이전의 질의 메시지를 요구하지 않고, 암호화된 아이프레임 파라미터와 같은 대안의 채널을 통해, 제 3 자 애플리케이션(40)에 필요한 제 3 자 애플리케이션(40) 구성 정보를 제공할 수 있다.In an alternative implementation, the website building system 30 does not require a previous query message, but via an alternative channel such as an encrypted iframe parameter, the third-party application 40 required by the third-party application 40 . ) can provide configuration information.

본원에서 상술한 바와 같이, 제 3 자 애플리케이션(40)은 특정한 포함 웹 페이지(203) 구성요소들과 직접 통신할 수 있다. 제 3 자 애플리케이션(40)은 통신할 구성요소들을 다수의 방식들로: 연관되는 템플릿들에 기초하여 구성요소들에 대해 직접적으로(본원 아래에서 더 상세하게 기술됨); 설계자(5)에 의해 특정한 포함 웹 페이지(203) 구성요소들에 명시적으로 제공되는 액세스 ID를 통해; 포함 웹 페이지(203)에 의해 제 3 자 애플리케이션(40)에 제공되는 (가능하면 선택할 수 있는) 구성요소 모델을 고찰함으로써 식별할 수 있다.As discussed hereinabove, third party applications 40 may communicate directly with certain containing web page 203 components. The third party application 40 can communicate components with which to communicate in a number of ways: directly to components based on associated templates (described in more detail herein below); via an access ID explicitly provided to certain containing web page 203 components by the designer 5; This can be identified by examining the (possibly selectable) component model provided to the third party application 40 by the embedding web page 203 .

런타임 중에, 업데이터(380)는 포함 웹 페이지(203) 구성요소들 및 제 3 자 애플리케이션(40) 사이의 메시지들 및 응답들을 구현할 수 있음이 인정될 것이다. 예를 들어, 제 3 자 애플리케이션(40)은 포함 웹 페이지(203) 구성요소들의 시각 및 디스플레이 속성들(이것들의 위치, 크기, 컬러, 투명도 등)에 영향을 미치거나 이것들에 대해 질의할 수 있다. 업데이터(380)는 또한 제 3 자 애플리케이션(40)이 포함 웹 페이지(203) 구성요소들의 컨텐츠를 판독 또는 기록하는 것을 가능하게 할 수 있고 또한 제 3 자 애플리케이션(40)이 매체 기능들을 수행하는 구성요소에 지시, 예를 들어, 소정의 오디오 또는 비디오 세그먼트를 매체 재생기 구성요소로 포스팅하도록 지시하거나 또는 매체 재생기 구성요소가 소정의 기간동안 재생하는 것을 일시중지할 것을 요구하는 것을 가능하게 할 수 있다.It will be appreciated that during runtime, the updater 380 may implement messages and responses between the containing web page 203 components and the third party application 40 . For example, a third party application 40 may affect or query the visual and display properties of the containing web page 203 components (their location, size, color, transparency, etc.) . The updater 380 may also enable a third-party application 40 to read or write the content of the containing web page 203 components and also configure the third-party application 40 to perform media functions. It may enable an element to be instructed, for example, to post a given audio or video segment to the media player component, or to request the media player component to pause playback for a given period of time.

업데이터(380)는 또한 웹사이트 구축 시스템(30) 구성요소들이 행할 수 있는 액세스의 유형을 이 구성요소들이 명시하는 것을 용이하게 할 수 있다- 액세스 허가 비트들 또는 액세스 제어 목록(access control list; ACL)들이 현대의 운영 시스템들에서 파일의 보호를 위해 기능하는 방식과 유사하다. 그와 같은 허가들은 모든 제 3 자 애플리케이션들(40)에 대해, 특정한 벤더들로부터 또는 특정한 제 3 자 애플리케이션들(40)에 대해 적용하도록 각 구성요소 별로 규정될 수 있다. 예를 들어, 제 3 자 애플리케이션(40)은 제 3 자 애플리케이션(40) 외부의 포함 웹 페이지(203)의 일부인 텍스트 필드에 액세스하는 것이 허용될 수 있다. 이 텍스트 필드는 블로그 엔트리를 블로그 제 3 자 애플리케이션(40)에 대하여 편집하여 블로그 제 3 자 애플리케이션(40) 에어리어 자체 내에 제공될 수 있는 것보다 더 많은 스크린 실면적을 제공하는 데 사용될 수 있다. 다 페이지 컨테이너 내의 특정한 미니 페이지들로 임베딩되는 제 3 자 애플리케이션들(40)의 경우에는, 웹사이트 구축 시스템(30)이 제 3 자 애플리케이션(40)의 액세스를 특정한 미니 페이지에만 있는 구성요소들로 제한할 수 있음이 인정될 것이다. Updater 380 may also facilitate website building system 30 components specifying the types of access they can make—access permission bits or access control lists (ACLs). ) is similar to how they function for file protection in modern operating systems. Such permissions may be defined on a per component basis to apply to all third party applications 40 , from particular vendors or to particular third party applications 40 . For example, the third party application 40 may be allowed to access text fields that are part of the containing web page 203 external to the third party application 40 . This text field can be used to edit the blog entry against the blog 3rd party application 40 to provide more screen real estate than can be provided within the blog 3rd party application 40 area itself. In the case of third-party applications 40 that are embedded as specific mini-pages in a multi-page container, the website building system 30 directs the access of the third-party application 40 to components only on the specific mini-page. It will be appreciated that there may be limitations.

업데이터(380)는 제 3 자 애플리케이션(40)이 사이트 전역 요소들에 영향을 미치는 것이 가능하게 할 수 있음이 또한 인정될 것이다. 이것은 사이트 내의 현재의 페이지, 제 3 자 애플리케이션(40)을 포함하는 컨테이너 내의 현재의 미니 페이지 및 페이지 이력과 같은 속성들을 획득하고 세팅하는 것을 포함할 수 있다. 업데이터(380)는 또한 그와 같은 요청들을 필터링하거나 제한할 수 있다.It will also be appreciated that the updater 380 may enable a third party application 40 to affect site-wide elements. This may include obtaining and setting properties such as the current page in the site, the current mini page in the container containing the third party application 40 and the page history. Updater 380 may also filter or limit such requests.

업데이터(380)는 또한 웹사이트 구축 시스템(30)이 제 3 자 애플리케이션(40)의 스타일 및 디스플레이에 영향을 미치는 것을 가능하게 할 수 있다. 업데이터(380)는 웹사이트 구축 시스템(30)이 제 3 자 애플리케이션(40)에 포맷팅 및 스타일 가이드라인을 제공할 수 있는 호출들을 구현할 수 있다. 이것들은 컬러들 및 컬러 스킴(color scheme)들; 폰트들, 문자 크기들; 투명도; 애니메이션 및 특수 효과들(예를 들어, 블러링(blurring))과 같은 특성들을 포함할 수 있다. 컬러 스킴은 특히 일반 컬러 스킴(예를 들어 다음의 x 컬러들의 사용) 또는 고레벨 컬러(예를 들어, 텍스트에 대해 컬러 x를 사용하고 프레임들에 대해 컬러 y를 사용)를 포함할 수 있다.The updater 380 may also enable the website building system 30 to influence the style and display of the third party application 40 . The updater 380 may implement calls by which the website building system 30 may provide formatting and style guidelines to the third party application 40 . These include colors and color schemes; fonts, character sizes; transparency; It may include properties such as animations and special effects (eg, blurring). The color scheme may in particular include a normal color scheme (eg use of the following x colors) or high-level color (eg use color x for text and color y for frames).

복잡한 스타일 정보를 표현하는 하나의 바람직한 방법은 폰트들, 크기들, 컬러들 등을 포함하는 다수의 스타일 지시들의 결합을 표현할 수 있는 연속형 스타일 시트(Cascading Style Sheet; CSS)들을 사용하는 것임이 인정될 것이다. 업데이터(380)는 그와 같은 CSS-기반 메시지들을 제 3 자 애플리케이션(40)에 송신할 수 있다. 스타일 시트들은 사실상 포괄적일 수 있거나 또는 웹사이트 구축 시스템(30)이 제 3 자 애플리케이션(40)에 더 양호한 가이드라인들을 제공할 수 있도록(예를 들어, 스타일 시트가 특정한 제 3 자 애플리케이션(40) 요소들을 언급하고 이들에 대한 가이드라인들을 제공할 수 있도록) 제 3 자 애플리케이션(40)에 의해 규정되는 특정한 스타일 명칭들을 포함할 수 있다.It is recognized that one preferred way to express complex style information is to use Cascading Style Sheets (CSS), which can express a combination of multiple style instructions including fonts, sizes, colors, etc. will be The updater 380 may send such CSS-based messages to the third party application 40 . The style sheets may be generic in nature, or such that the website building system 30 may provide better guidelines to the third party application 40 (eg, the style sheet is specific to the third party application 40 ). specific style names defined by the third party application 40 (to be able to refer to elements and provide guidelines for them).

제 3 자 애플리케이션(40)은 그 후에 자기 자신의 룩 앤 필(look and feel)을 포함 웹 페이지(203)에 더 양호하게 적응되도록 만들기 위해 이 가이드라인들을 사용한다. 이는 동일한 사이트(위에서 언급된 바와 같이 다 포트 내포) 내에 있는 다수의 포함 웹 페이지들(203)로부터 볼 수 있거나 포함되는 제 3 자 애플리케이션들(40)에 대해 특히 중요하다. 다수의 포함 페이지들은 상이한 컬러 스킴 또는 일반 설계를 이용한다. 제 3 자 애플리케이션(40)은 이 스타일 메시지들을 통해 자신에게 제공되는 정보를 사용하고 자기 자신의 디스플레이 컬러들 및 스타일을 각 포함 페이지에 더 양호하게 맞도록 적응시키고 그리고 포함 페이지와 비교해서 부조화하는 컬러 스킴들 또는 룩 앤 필을 디스플레이하는 것을 방지할 수 있다.The third party application 40 then uses these guidelines to better adapt its own look and feel to the containing web page 203 . This is particularly important for third party applications 40 that are viewable or included from multiple embedded web pages 203 within the same site (multi-port nesting as noted above). Many of the containing pages use different color schemes or general designs. The third party application 40 uses the information provided to it through these style messages and adapts its own display colors and style to better fit each containing page and color dissonant compared to the containing page. It can prevent displaying schemes or look and feel.

동적 레이아웃 업데이터(360)은 동적 레이아웃 이벤트로부터 기인하는 디스플레이 변경들을 처리하는 데 웹사이트 구축 시스템(30)/제 3 자 애플리케이션(40) 또는 제 3 자 애플리케이션(40) 및 2차 제 3 자 애플리케이션을 협력하게 하는 것이 가능할 수 있음이 인정될 것이다. 웹사이트 구축 시스템(30)은 페이지 내의 구성요소들 중 일부를 변경하는 이벤트들 하에서 페이지 설계를 보존하기 위하여 페이지 내의 구성요소들의 크기 및 위치를 변경할 수 있다. 이 동적 레이아웃 이벤트들은 예를 들어: 상이한 크기들을 가지는 스크린들 상에서 웹사이트를 보고; 세로 및 가로 모드 사이에서 디스플레이 디바이스를 회전시키고; 구성요소들의 일부의 크기 또는 위치를 변경시키고 그리고 소정의 구성요소들의 컨텐츠를 변경시키는(구성요소들이 자신들의 크기를 변경할 필요가 있는 방식으로) 것을 포함할 수 있다. 동적 레이아웃 이벤트는 또한 서버 기반 컨텐츠 업데이트로부터 기인하거나 또는 동일한 웹사이트의 다른 동시 사용자들에 의한 컨텐츠 변경에 의한 구성요소 업데이트를 포함할 수 있다 - 예를 들어, 데이터 피드(data feed)로부터의 정보를 디스플레이하는 구성요소에서. 동적 레이아웃 이벤트들은 설계 환경뿐만 아니라 런타임 환경에서 발생할 수 있음이 또한 인정될 것이다. 특히 일부 구성요소들 및 제 3 자 애플리케이션들(40)은 런타임 동안 구성요소 컨텐츠 변경 또는 크기/위치 변경이 가능하다(최종 사용자에 의해, 그리고 단지 설계자들에 의해서만이 아닌).The dynamic layout updater 360 uses the website building system 30/third-party application 40 or third-party application 40 and a secondary third-party application to handle display changes resulting from a dynamic layout event. It will be appreciated that it may be possible to have them cooperate. The website building system 30 may change the size and position of components within the page to preserve the page design under events that change some of the components within the page. These dynamic layout events include, for example: viewing a website on screens having different sizes; rotate the display device between portrait and landscape modes; changing the size or position of some of the components and changing the content of certain components (in such a way that the components need to change their size). Dynamic layout events may also include component updates resulting from server-based content updates or content changes by other concurrent users of the same website - for example information from a data feed. In the component that displays it. It will also be appreciated that dynamic layout events can occur in the design environment as well as the runtime environment. In particular, some components and third party applications 40 are capable of component content change or size/position change during runtime (by the end user, and not just by the designers).

동적 레이아웃 이벤트는 또한 제 3 자 애플리케이션(40)에 의해 발생될 수 있음이 또한 인정될 것이다. 예를 들어, e-샵 제 3 자 애플리케이션(40)은 사용자가 제품 카탈로그 뷰로부터 쇼핑 카트 뷰(상이한 크기를 가지는)로 이동할 때 크기 변경을 요구할 수 있다. 다른 예로서, 제품 카탈로그 제 3 자 애플리케이션(40)은 제품을 강조하는 선택사양을 포함할 수 있고, 이것은 그것들로 하여금 더 많은 컨텐츠를 포함하는 더 큰 카탈로그 페이지를 디스플레이하도록 할 것이다. 제 3 예는 추가 영역들을 디스플레이하기 시작하거나 중단할 수 있는 다 영역 제 3 자 애플리케이션(40)이다.It will also be appreciated that dynamic layout events may also be generated by third party applications 40 . For example, the e-shop third party application 40 may request a size change when the user moves from the product catalog view to the shopping cart view (which has a different size). As another example, the product catalog third party application 40 may include an option to highlight products, which will cause them to display a larger catalog page containing more content. A third example is a multi-region third party application 40 that can start or stop displaying additional regions.

기존 시스템은 이제 다시 참조되는 도 6에 도시되는 바와 같이, 전형적으로 제 3 자 애플리케이션 디스플레이를 클립하거나, 스크롤 바들을 디스플레이에 추가하거나 또는 단지 디스플레이를 다른 페이지 구성요소들을 숨기는 팝업 창으로서 크기 조정함으로써 그와 같은 상황들을 처리한다(조금이라도). 동적 레이아웃 업데이터(360)는 웹사이트 구축 시스템(30) 및 제 3 자 애플리케이션들(40)이 동적 레이아웃을 수행하는 데 협력하고 포함 웹 페이지(203)의 기본 설계를 유지하는 협력 동적 레이아웃을 구현할 수 있다. 동적 레이아웃의 기능은 2013년 2월 20일에 제출되고 본 발명의 공동 양수인들에게 양도되어 있는 미국 특허출원 13/771,119에 더 기술되어 있다. 그러나, 협력 동적 레이아웃 지원 시스템에서조차도, 포함 웹 페이지(203)에서의 동적 레이아웃 메커니즘은 제 3 자 애플리케이션(40)의 내부 레이아웃 전체를 제어하지 않는다. 더욱이, 웹사이트 구축 시스템(30) 위젯(widget)들은 이것들이 어떤 임의의 크기(소정의 범위 내의)로 크기 조정될 수 있도록 설계될 수 있지만, 제 3 자 애플리케이션(40)은 임의의 크기조정을 지원하지 않을 수 있다. 제 3 자 애플리케이션(40)은 예를 들어, 다음의 임의의 결합을 제공할 수 있다: 상이한 크기들을 가지는 다수의 디스플레이 구성들(예를 들어, 더 많거나 더 적은 세부사항들을 디스플레이한다); 다수의 폰트 크기들을 사용하여 자체의 내부 요소들 중 일부를 크기 조정하는 능력 및 자체의 내부 텍스트 요소들의 일부를 디스플레이하는 능력.Existing systems typically do this by clipping a third-party application display, adding scroll bars to the display, or just resizing the display as a pop-up window that hides other page components, as shown in FIG. 6 , which is now referenced again. handle situations like (at least) The dynamic layout updater 360 may implement a cooperative dynamic layout that maintains the basic design of the containing web page 203 and cooperates with the website building system 30 and third party applications 40 to perform the dynamic layout. have. The functionality of dynamic layout is further described in US Patent Application Serial No. 13/771,119, filed on February 20, 2013 and assigned to the common assignees of the present invention. However, even in a cooperative dynamic layout support system, the dynamic layout mechanism in the containing web page 203 does not control the entire internal layout of the third party application 40 . Moreover, the website building system 30 widgets can be designed such that they can be resized to any arbitrary size (within a certain range), although third party applications 40 support arbitrary resizing. may not Third party application 40 may, for example, provide any combination of: multiple display configurations with different sizes (eg, display more or fewer details); The ability to resize some of its internal elements using multiple font sizes and the ability to display some of its internal text elements.

제 3 자 애플리케이션(40)은 여전히 제한된 수의 가능한 디스플레이 크기들을 제공할 수 있고 가능한 크기들의 전체 범위를 가질 수 있다. 그러므로, [포함 웹 페이지(203) → 제 3 자 애플리케이션(40)] 크기조정 요청은 제 3 자 애플리케이션(40)이 가장 가까운 가능한 크기로 전환됨으로써 또는 가능한 제 3 자 애플리케이션(40) 크기들의 목록을 제공함으로써(그리고 웹사이트 구축 시스템(30)이 사용하기에 맞는 크기를 선택하는 것을 가능하게 함으로써) 해소될 수 있다. The third party application 40 may still provide a limited number of possible display sizes and may have a full range of possible sizes. Therefore, [included web page 203 → 3rd party application 40] resizing request may result in 3rd party application 40 being converted to the closest possible size or list of possible 3rd party application 40 sizes. by providing (and allowing the website building system 30 to select a suitable size for use).

동적 레이아웃 업데이터(360)는 다음의 시퀀스들을 사용하여 [포함 웹 페이지(203) → 제 3 자 애플리케이션(40)] 협력 동적 레이아웃을 구현할 수 있다.The dynamic layout updater 360 may implement the [containing web page 203 → third party application 40] cooperative dynamic layout using the following sequences.

예를 들어, 포함 웹 페이지(203)에 임베딩되는 제 3 자 애플리케이션(40)은 소정의 원하는 크기(예를 들어, X1*Y1 픽셀들)로 크기 조정될 필요가 있을 수 있다. 동적 레이아웃 업데이터(360)는 제 3 자 애플리케이션(40)에, 제 3 자 애플리케이션(40)이 자체의 컨텐츠를 소정의 원하는 크기(X1*Y1)로 크기 조정할 것을 요청하는 메시지를 송신할 수 있다. 제 3 자 애플리케이션(40)은 상기 크기로 조정될 수 있다 - 대안의 디스플레이 구성, 내부 크기 조정, 내부 동적 레이아웃 프로세싱 또는 임의의 다른 수단을 사용함으로써. 포함 웹 페이지(203)가 제 3 자 애플리케이션(40)을 포함하는 외부 아이프레임 윈도우를 새로운 크기(X1*Y1)로 크기 조정할 수 있음이 더 인정될 것이다.For example, a third party application 40 that is embedded in an embedded web page 203 may need to be resized to some desired size (eg, X1*Y1 pixels). The dynamic layout updater 360 may send a message to the third-party application 40 requesting that the third-party application 40 resize its content to a predetermined desired size (X1*Y1). Third party applications 40 may be scaled to the above sizes - by using alternative display configurations, internal resizing, internal dynamic layout processing or any other means. It will be further appreciated that the containing web page 203 may resize the external iframe window containing the third party application 40 to a new size (X1*Y1).

제 3 자 애플리케이션(40)은 단지 크기 조정이 가능한 크기들의 제한된 세트만으로(예를 들어, 특정한 사용자 인터페이스 구성들) 가능할 수 있음이 또한 인정될 것이다. 그러므로, 동적 레이아웃 업데이터(360)는 제 3 자 애플리케이션(40)이 가능한 크기들의 세트를 제공하는 것이 가능한 다음의 대안의 알고리즘을 사용할 수 있다.It will also be appreciated that the third party application 40 may only be capable of a limited set of resizable sizes (eg, certain user interface configurations). Therefore, the dynamic layout updater 360 may use the following alternative algorithm capable of providing a set of possible sizes for the third party application 40 .

포함 웹 페이지(203)는 크기 조정되고 동적 레이아웃 업데이터(360)는 제 3 자 애플리케이션(40)에, 제 3 자 애플리케이션(40)이 자체의 컨텐츠를 소정의 원하는 크기(X1*Y1)로 크기 조정할 것을 요청하는 메시지를 송신한다. 제 3 자 애플리케이션(40)은 그 후에 가장 가까운 가능한 크기(예를 들어, X2*Y2 픽셀들)를 결정하고 이에 따라 대안의 디스플레이 구성, 내부 크기 조정, 내부 동적 레이아웃 프로세싱 또는 임의의 다른 수단을 사용함으로써 크기 조정할 수 있다. 업데이터(380)는 그 후에 포함 웹 페이지(203)에, 크기 조정을 확인하는 응답 메시지를 송신하고 실제 새로운 크기(X2*Y2)를 제공할 수 있다. 포함 웹 페이지(203)는 제 3 자 애플리케이션(40)을 포함하는 외부 아이프레임 윈도우를 실제 새로운 크기(X2*Y2)로 크기 조정할 수 있다. 포함 웹 페이지(203)는 실제 새로운 크기(X2*Y2)에 기초하여, 동적 레이아웃 프로세싱을 계속할 수 있다.The embedding web page 203 is resized and the dynamic layout updater 360 tells the third party application 40 to resize its content to some desired size (X1*Y1). Send a message requesting The third party application 40 then determines the nearest possible size (eg, X2*Y2 pixels) and uses an alternative display configuration, internal resizing, internal dynamic layout processing or any other means accordingly. by doing so can be resized. The updater 380 may then send to the containing web page 203 a response message confirming the resizing and provide the actual new size (X2*Y2). The containing web page 203 may resize the external iframe window containing the third party application 40 to the actual new size (X2*Y2). The containing web page 203 may continue dynamic layout processing based on the actual new size (X2*Y2).

포함 웹 페이지(203) 내에 다수의 제 3 자 애플리케이션들(40)(또는 다 영역 제 3 자 애플리케이션들(40))이 있으면 특히 다른 실시예가 또한 적용 가능하다는 것이 인정될 것이다. 이 실시예에서 포함 웹 페이지(203)는 임베딩된 제 3 자 애플리케이션들(40)이 다수의 제 3 자 애플리케이션들(40)에 대한 다수의 선택사양들을 고려하여 룩 앤 필을 최적화하는 시도를 행할 수 있도록 디스플레이 크기들의 목록을 얻기 위하여 이 임베딩된 제 3 자 애플리케이션들(40)을 질의할 수 있다. 이 실시예는 또한 제 3 자 애플리케이션들(40)이 다수의 영역들에 걸쳐 디스플레이되는 경우에 적절할 수 있다.It will be appreciated that other embodiments are also applicable, particularly if there are multiple third party applications 40 (or multi-domain third party applications 40 ) within the containing web page 203 . The embedding web page 203 in this embodiment will attempt to optimize the look and feel of the embedded third-party applications 40 taking into account a number of options for the number of third-party applications 40 . It is possible to query these embedded third party applications 40 to obtain a list of display sizes. This embodiment may also be suitable where third party applications 40 are displayed across multiple areas.

포함 웹 페이지(203)은 동적 레이아웃 프로세싱을 수행하여, 하나 이상의 제 3 자 애플리케이션(40)(TPA[1]에서 TPA[n])이 포함 웹 페이지(203)에 임베딩되고 다음의 알고리즘을 사용하여 크기 조정되어야 함을 발견할 수 있다:The embedding web page 203 performs dynamic layout processing so that one or more third-party applications 40 (TPA[1] to TPA[n]) are embedded in the embedding web page 203 using the following algorithm. You may find that it needs to be resized:

i에 대해 1부터 n까지 루프:Loop from 1 to n over i:

각 TPA[i] 별로 결정Determined for each TPA[i]

최소 크기 Xmin[i] * Ymin[i]; Minimum size Xmin[i] * Ymin[i];

최대 크기 Xmax[i] * Ymax[i]; max size Xmax[i] * Ymax[i];

최적 크기 Xopt [i] * Yopt [i]; Optimal size Xopt[i] * Yopt[i];

동적 레이아웃 업데이터(360)는 메시지를 TPA[i]에 송신할 수 있는데, 메시지는 위의 최소/최대/최적 크기들 및 가능한 제 3 자 애플리케이션(40) 크기들에 대한 요청 정보를 상세히 기재한다.The dynamic layout updater 360 may send a message to the TPA[i], detailing the request information for the above min/max/optimal sizes and possible 3rd party application 40 sizes.

제 3 자 애플리케이션(40)은 동적 업데이터(380)에 자신이 취할 수 있는 가능한 크기 선택사양들의 세트, Xposs[i][j]*Yposs[i][j]를 제공할 수 있다.The third party application 40 may provide the dynamic updater 380 with a set of possible size options it may take, Xposs[i][j]*Yposs[i][j].

위에서 수집되는 Xposs[][]/Yposs[][] 정보에 기초하여, 포함 웹 페이지(203)는 (예를 들어) 모든 가능한 제 3 자 애플리케이션 크기 결합의 전체 평가, 선형 프로그래밍 기술들 또는 동적 레이아웃 알고리즘에 의해 사용되는 임의의 다른 기술을 사용함으로써 동적 레이아웃 계산에 대한 해를 계산할 수 있다.Based on the Xposs[][]/Yposs[][] information gathered above, the containing web page 203 (eg) a full evaluation of all possible third-party application size combinations, linear programming techniques or dynamic layout Any other technique used by the algorithm may be used to compute a solution to the dynamic layout calculation.

모든 TPA들에 대하여 그 결과들을 Xfinal[i]/Yfinal[i]에 저장하고For all TPAs, we store the results in Xfinal[i]/Yfinal[i] and

i에 대해 1부터 n까지의 루프:Loop from 1 to n over i:

포함 웹 페이지(203)는 그 후에 Xfinal[i]/Yfinal[i]를 담고 있는 크기 조정 메시지를 TPA[i]에 송신할 수 있다.The containing web page 203 may then send a resizing message containing Xfinal[i]/Yfinal[i] to the TPA[i].

포함 웹 페이지(203)는 TPA[i]를 포함하는 외부 아이프레임 윈도우를 Xfinal[i]/Yfinal[i]로 크기 조정한다.The containing web page 203 resizes the external iframe window containing the TPA[i] to Xfinal[i]/Yfinal[i].

포함 웹 페이지(203)는 실제 새로운 크기들에 기초하여 동적 레이아웃 프로세싱을 계속한다.The containing web page 203 continues dynamic layout processing based on the actual new sizes.

동적 레이아웃 프로세싱은 전형적으로 제 3 자 애플리케이션들(40)을 이동시키는 것을 필요로 하고 단지 이것들을 크기 조정하는 것을 필요로 하지 않음이 인정될 것이다. 그러나, 제 3 자 애플리케이션(40)은 포함 웹 페이지(203) 내부의 자체의 프레임의 정확한 위치가 변하지 않아야만 한다.It will be appreciated that dynamic layout processing typically requires moving third party applications 40 and not merely resizing them. However, the third party application 40 must not change the exact position of its frame within the containing web page 203 .

본원에서 상술한 바와 같이, 제 3 자 애플리케이션(40)은 또한 자체의 디스플레이 윈도우 크기를 때때로 변경할 필요가 있을 수 있다. 아이프레임을 디스플레이하는 윈도우의 크기는 호스팅 페이지(즉, 포함 웹 페이지(203))에 의해 관리되므로, 제 3 자 애플리케이션(40) 윈도우 크기 변경은 포함 웹 페이지(203)에 의해 수행되어야 한다 - 여기서 제 3 자 애플리케이션(40)은 포함 웹 페이지(203)로부터 윈도우 크기를 변경하라고 요청한다(동적 레이아웃 업데이터(360)를 통해).As discussed hereinabove, third party applications 40 may also need to change their display window size from time to time. Since the size of the window displaying the iframe is managed by the hosting page (ie, the containing web page 203 ), third party application 40 window resizing must be performed by the containing web page 203 - where The third party application 40 requests to change the window size from the containing web page 203 (via the dynamic layout updater 360 ).

제 3 자 애플리케이션(40)은 또한 포함 웹 페이지(203) 내부에서의 자체의 위치를 변경할 것을 요청할 수 있음이(동적 레이아웃 업데이터(360)를 통해) 또한 인정될 것이다. 이것은 내부적으로 제 3 자 애플리케이션(40)에 영향을 미치지 않을 수 있으나(크기 변경이 영향을 미치는 바와 같이), 포함 웹 페이지(203) 내에서의 디스플레이 변경들을 필요로 한다. 동적 레이아웃 업데이터(360)는 이 요청을 동적 레이아웃과 통합할 수 있다. 포함 웹 페이지(203)는 제 3 자 애플리케이션(40) 윈도우 크기(및 가능하다면 이의 위치)를 변경하고 크기 및 위치 변경을 제 3 자 애플리케이션(40)에 역으로 확인시켜주기 위하여 동적 레이아웃 업데이터(360)를 활성화시킬 수 있다.It will also be appreciated that third party applications 40 may also request (via dynamic layout updater 360 ) to change their location within the containing web page 203 . This may not affect the third party application 40 internally (as resizing does), but requires display changes within the containing web page 203 . The dynamic layout updater 360 may incorporate this request with the dynamic layout. The embedding web page 203 changes the third party application 40 window size (and possibly its position) and uses the dynamic layout updater 360 to confirm the size and position change back to the third party application 40 . ) can be activated.

허브(205)는 또한 웹사이트 구축 시스템(30) 자체, 특정한 포함 웹 페이지(203) 또는 2차 제 3 자 애플리케이션(40)이 제 3 자 애플리케이션(40)에 영향을 미칠 수 있는 추가의 제 3 자 애플리케이션(40) 클래스 특정 또는 제 3 자 애플리케이션 특정 메시지들을 구현할 수 있음이 인정될 것이다. 예를 들어, 블로그 제 3 자 애플리케이션(40)은 새로운 블로그 엔트리 또는 새로운 토크-백을 현재의 블로그 엔트리에 포스팅할 수 있는 인입 메시지를 규정할 수 있다. 그와 같은 메시지는 포함 웹 페이지(203)에 의해 사용될 수 있다(예를 들어, 큰 편집 필드로부터의 블로그 엔트리들을 제 3 자 애플리케이션 에어리어의 외부에 포스팅하는 방식으로서). 이는 또한 더 상위 레벨의 애플리케이션 대 애플리케이션 링크에 사용되어, 예를 들어, 지원 제 3 자 애플리케이션이 블로그 엔트리들을 블로그 제 3 자 애플리케이션에 포스팅하는 것이 가능해질 수 있다.The hub 205 may also include the website building system 30 itself, certain containing web pages 203 , or additional third party applications 40 from which secondary third party applications 40 may affect third party applications 40 . It will be appreciated that the third party application 40 may implement class specific or third party application specific messages. For example, the blog third party application 40 may define an incoming message that may post a new blog entry or a new talk-back to the current blog entry. Such a message may be used by the containing web page 203 (eg, as a way of posting blog entries from a large edit field outside of a third party application area). It may also be used for higher-level application-to-application linking, enabling, for example, a supporting third-party application to post blog entries to a blog third-party application.

제 3 자 애플리케이션들(40)은 흔히 광범위한 복합 서비스들을 필요로 하는 것이 인정될 것이다 - 제 3 자 애플리케이션(40) 내부 사용을 위해 또는 자신들의 사이트들에서 제 3 자 애플리케이션(40)을 사용하는 설계자들에 의해 다운스트림에서의 사용을 위해. 그와 같은 서비스들은 사용자 관리, 과금 및 출하 관리를 포함할 수 있다. 웹사이트 구축 시스템(30) 벤더는 그와 같은 서비스들을 웹사이트 구축 시스템의 일부로서 제공하는 것이 가능하지 않을 수 있다(예를 들어, 기술적 또는 사업적인 고려사항들로 인해). 더욱이, 이 서비스들은 자신들만으로 제 3 자 애플리케이션(40)으로서 "패키지화"하는 데 적합하지 않을 수 있다. 게다가, 제 3 자 애플리케이션(40) 벤더는 제 3 자 애플리케이션(40)을 사용하는 설계자들에게 다수의 그와 같은 서비스들(예를 들어, 다수의 제 3 자 과금 API들)을 제공하고 - 그리고 설계자(5)가 자신이 사용하는 데 적합한 것을 선택하는 것을 가능하게 하는 선택사양을 필요로 할 수 있다.It will be appreciated that third party applications 40 often require a wide range of complex services - designers using third party applications 40 for internal use with third party applications 40 or at their sites. for use downstream by them. Such services may include user management, billing and shipping management. A website building system 30 vendor may not be able to provide such services as part of a website building system (eg, due to technical or business considerations). Moreover, these services on their own may not be suitable for “packaging” as a third party application 40 . In addition, the third-party application 40 vendor provides a number of such services (eg, a number of third-party charging APIs) to designers using the third-party application 40 - and Designers 5 may need options that allow them to choose the ones suitable for their use.

예를 들어, PaypalTM이 호스팅하는 API는 웹사이트 구축 시스템(30) 내에 제공될 수 있고 제 3 자 애플리케이션(40)에 의해 직접 사용될 수 있거나 이를 사용하여 제 3 자 애플리케이션(40)에 의해 설계자들(5)에게 제공될 수 있다. 제 3 자 애플리케이션(40)은 또한 자기 자신의 선택사양들의 세트를 제공하고(즉, 일시불, 반복 또는 세입 교부와 같은 특정한 과금 유형을 사용), 그리고 호스팅된 Paypal API를 호출함으로써 이 선택사양들을 구현할 수 있다.For example, an API hosted by Paypal may be provided within the website building system 30 and used directly by the third party application 40 or may be used by designers by the third party application 40 using it. (5) may be provided. The third party application 40 also provides its own set of options (ie, uses a specific charging type such as lump sum, recurring, or revenue transfer), and implements these options by calling the hosted Paypal API. can

그러므로, 웹사이트 구축 시스템(30)을 사용하는 설계자(5)는 진화된 과금을 사용하는 특정한 오퍼링(offering)(노래-판매 e-스토어와 같은)을 개발할 수 있다. 개발자(5)는 호스팅되는 과금 API를 사용함으로써 과금 API 제공자와 특정한 승인 또는 가맹점 계약을 협상해야 하는 것을 피할 수 있다- 직접적으로 또는 추가 추상 레벨(abstraction level)(또는 층(layer))을 제공하는 제 3 자 애플리케이션(40)을 통해. 이 의미에서, 웹사이트 구축 시스템(30)은 호스팅된 API 벤더들에 대한 배포자가 될 수 있다.Thus, a designer 5 using the website building system 30 may develop a specific offering (such as a song-selling e-store) that uses evolved billing. Developers 5 can avoid having to negotiate specific authorization or merchant agreements with the charging API provider by using a hosted charging API - either directly or by providing an additional level of abstraction (or layer). Through third party applications 40 . In this sense, the website building system 30 may be a distributor to hosted API vendors.

호스팅된 API 랩퍼(390)는 시스템의 상이한 부분들(예를 들어, 웹사이트 구축 시스템(30), 호스팅된 API 코드 및 포함되는 제 3 자 애플리케이션들(40)) 사이의 이 통신을 용이하게 할 수 있다. API 랩퍼 층 및 실제 API 구현은 웹사이트 구축 시스템(30) 자체 또는 다른 제 3 자 애플리케이션(40) 내에 상주할 수 있음이 인정될 것이다. 제 3 자 애플리케이션(40) 벤더(또는 설계자(5))는 실제 기저의 API가 구현되는 방식을 인지하지 않고 호스팅된 API 랩퍼(390)를 통해 호스팅된 API를 사용할 수 있다.Hosted API wrapper 390 may facilitate this communication between different parts of the system (eg, website building system 30, hosted API code, and included third party applications 40). can It will be appreciated that the API wrapper layer and the actual API implementation may reside within the website building system 30 itself or other third party applications 40 . A third party application 40 vendor (or designer 5) may use the hosted API via the hosted API wrapper 390 without being aware of how the actual underlying API is implemented.

본 발명의 대안 및 상보적인 실시예에서, 출원인들은 또한 웹사이트 구축 시스템(30) 및 하나 이상의 제 3 자 애플리케이션들(40) 사이에서의 스마트 통합이 또한 추가 웹사이트 구축 시스템 테블릿들 및 구성요소들이 앱스토어(25)의 레벨에 있는 제 3 자 애플리케이션들 뿐만 아니라 관련되는 제 3 자 애플리케이션 인스턴스들과 연관되는 통합 모델을 사용함으로써 달성될 수 있음을 인식하였다. 제 3 자 애플리케이션(40)은 또한 데이터 및 제어 메시지들을 교환하기 위하여 이 구성요소들(뿐만 아니라 비연관된 구성요소들)과 통신할 수 있다. 본원에서 상술한 바와 같이, 포함 웹 페이지(203) 내의 제 3 자 애플리케이션 영역들(40)은 자체의 컨텐츠가 별개의 도메인들(제 3 자 애플리케이션 벤더들 또는 기타)-주 사이트가 호스팅되는 도메인과 상이한-에 호스팅되는 별개의 아이프레임들이다. 그러므로, 상이한 아이프레임들 사이의 통신은 브라우저의 "동일한 원래의 정책"의 대상이 되고 본원에서 상술한 바와 같은 기술들을 사용할 것을 요구한다.In an alternative and complementary embodiment of the present invention, Applicants also note that smart integration between website building system 30 and one or more third-party applications 40 also provides additional website building system tablets and components. It has been recognized that this can be achieved by using an integration model that is associated with third party applications at the level of the App Store 25 as well as associated third party application instances. Third party applications 40 may also communicate with these components (as well as unassociated components) to exchange data and control messages. As discussed hereinabove, the third party application areas 40 within the containing web page 203 may have their content in separate domains (third party application vendors or otherwise)—the domain where the main site is hosted. They are separate iframes hosted in different-. Therefore, communication between different iframes is subject to the browser's "same origin policy" and requires the use of techniques as described above herein.

기존 시스템들은 제 3 자 애플리케이션들(40)을 포함 웹 페이지(203)에 포함되거나 그렇지 않으면 포함 웹 페이지(203) 자체의 룩 앤 필에 영향을 미치지 않은 강성 객체(rigid object)들인, 모노리식(monolithic)으로 구현한다. 제 3 자(40) 인스턴스는 (전형적으로 직사각형인) 에어리어 내에 배치되고 이 에어리어 내에서 자체의 활동들 모두를 수행한다.Existing systems are monolithic, which are rigid objects that do not include third party applications 40 in the containing web page 203 or otherwise affect the look and feel of the containing web page 203 itself. implemented as a monolithic). A third party 40 instance is placed within an area (typically rectangular) and performs all of its activities within this area.

출원인들은 이 개념이 본 발명의 하나의 실시예에 따르면 연관 템플릿으로 칭해지는, 제 3 자 애플리케이션(40)과 연관되는 (선택사양인) 추가 웹사이트 구축 시스템(30) 템플릿을 가짐으로써 확장될 수 있음을 또한 인식하였다. 이 연관은 제 3 자 애플리케이션(40)의 개발 및 발행 중에 수행될 수 있고 설계자(5)에게 제 3 자 애플리케이션(40) 선택/구매 프로세서(앱스토어(25)로부터의) 및 제 3 자 애플리케이션(40) 인스턴스 생성의 일부로서 제공될 수 있음이 인정될 것이다. TPA 조정기(24)는 제 3 자 애플리케이션(40)과 연관되는 템플릿을 검색할 수 있고(앱스토어(25)에 의해 관리되거나 그렇지 않으면 제 3 자 애플리케이션(40) 벤더에 의해 제공되는 애플리케이션 리포지토리의 일부로서) 템플릿을 본원에서 상술한 바와 같이 이후에 사용하기 위해 리포지토리(22)에 저장할 수 있다.Applicants believe that this concept can be extended by having an (optional) additional website building system 30 template associated with a third party application 40, referred to as an association template according to one embodiment of the present invention. It was also recognized that This association may be performed during the development and publication of third-party applications 40 and provides designers 5 with third-party applications 40 selection/purchase processors (from App Store 25) and third-party applications ( 40) It will be appreciated that may be provided as part of the instance creation. The TPA coordinator 24 may retrieve a template associated with the third party application 40 (part of the application repository managed by the app store 25 or otherwise provided by the third party application 40 vendor). as) the template may be stored in the repository 22 for later use as described hereinabove.

시스템(100)은 다수의 연관 템플릿들을 가지는 제 3 자 애플리케이션들(40)의 발행을 지원할 수 있음이 - 설계자(5)가 자신의 필요에 가장 적합한 템플릿을 선택하는 것을 가능하게 하여- 인정될 것이다.It will be appreciated that the system 100 can support the publication of third party applications 40 having multiple associated templates - enabling the designer 5 to select a template that best suits his or her needs. .

임의의 포함 웹 페이지(203)에 제 3 자 애플리케이션(40)의 인스턴스를 생성할 때, 연관 템플릿 내의 구성요소들은 포함 웹 페이지(203)과 병합될 수 있고 포함 웹 페이지(203) 내의 임의의 다른 구성요소들과 함께 디스플레이될 수 있음이 인정될 것이다.Upon creating an instance of the third party application 40 on any containing web page 203 , the components in the associated template may be merged with the containing web page 203 and any other within the containing web page 203 . It will be appreciated that the components may be displayed together.

이제 본 발명의 하나의 실시예에 따라 연관 템플릿의 사용의 하나의 예를 도시하는 도 13이 참조된다. 도시되는 바와 같이, 제 3 자 애플리케이션 [a]은 구성요소들 [d] 및 [e]를 포함하는 연관 템플릿 [c]와 함께 앱스토어 [b]에 배치된다. 제 3 자 애플리케이션 [a]이 포함 웹 페이지(203) [f]에 포함될 때, 제 3 자 애플리케이션 [a]는 페이지 [f] 내부의 자체의 지정된 에어리어 [g] 내에서 디스플레이되고 구성요소들 [d] 및 [e]의 인스턴스들 [d'] 및 [e']는 선재의 구성요소들 [h] 및 [i]과 함께 페이지 [f] 상에 디스플레이될 수 있음이 인정될 것이다. Reference is now made to FIG. 13 , which illustrates one example of the use of an association template in accordance with one embodiment of the present invention. As shown, the third-party application [a] is deployed in the app store [b] with an associated template [c] comprising components [d] and [e]. When the third-party application [a] is included in the embedding web page 203 [f], the third-party application [a] is displayed within its designated area [g] inside the page [f] and the components [ It will be appreciated that instances [d'] and [e'] of d] and [e] can be displayed on page [f] together with components [h] and [i] of the wire rod.

시스템(100)은 연관 템플릿 구성요소 인스턴스들(예를 들어, 위의 [d'] 및 [e'])이 포함 웹 페이지(203) [f]에 위치되는 다양한 방법들을 지원할 수 있음이 인정될 것이다. 이것들은 다음을 포함한다: 절대 배치(즉, 원래 [d] 및 [e]에 대하여 연관 템플릿 [c] 내에 명시되는 크기 및 위치를 사용하는); 타깃 관련 배치(즉, 포함 웹 페이지(203) [f]에 따라 새로운 인스턴스들 [d'] 및 [e']의 크기 및 위치를 조정하는); 및 제 3 자 애플리케이션(40) 관련 배치(즉, 새로운 인스턴스들 [d'] 및 [e']의 크기 및 위치를, 포함 웹 페이지(203) [f] 내의 제 3 자 애플리케이션 인스턴스 [g]에 대하여 명시되는 크기 및 위치에 관하여 조정하는). 특정 배치 방법의 결정은 연관 템플릿 [c]과 함께 동봉되는 세팅들에 기초하여 행해질 수 있어서, 가능한 경우에 설계자(5)가 이를 오버라이딩(overriding)할 수 있도록 한다.It will be appreciated that system 100 may support a variety of ways in which associative template component instances (eg, [d'] and [e'] above) are placed in containing web page 203 [f]. will be. These include: absolute positioning (ie using the size and position specified in the association template [c] for the original [d] and [e]); target relative placement (ie, resizing and positioning the new instances [d'] and [e'] according to the containing web page 203 [f]); and the third-party application 40-related deployment (ie, the size and location of new instances [d'] and [e'] in the third-party application instance [g] within the containing web page 203 [f]. Adjusted with respect to the size and position stated against). The determination of a specific placement method can be made on the basis of the settings enclosed with the associated template [c], allowing the designer 5 to override this if possible.

설계자(5)는 템플릿 [c]로부터 상속되는 구성요소들 [d] 및 [e]의 [f]의 인스턴스들을 수정할 수 있음이 더 인정될 것이다. 변경들은 단지 [f] (및 가능한 경우 페이지 간 상속을 지원하는 웹사이트 구축 시스템(30)으로부터 상속되는 페이지들) 내의 [d] 및 [e]의 사용에만 적용될 수 있으나 앱스토어 [b]에 있는 제 3 자 애플리케이션 [a]와 연관되는 "원" 템플릿 [c]에 영향을 미치지 않을 수 있다.It will be further appreciated that the designer 5 can modify instances of [f] of elements [d] and [e] that are inherited from template [c]. Changes can only be applied to the use of [d] and [e] in [f] (and pages inheriting from the website building system 30 supporting cross-page inheritance where possible), but not in the App Store [b]. It may not affect the "circle" template [c] associated with the 3rd party application [a].

위의 [d] 및 [e] 인스턴스들에 대한 변경들은: 특히 특정한 컨텐츠(텍스트, 이미지들 등)를 필드 인스턴스들에 할당하는 것을-이뿐만 아니라 정규 속성 변경들- 포함할 수 있음이 인정될 것이다. 제 3 자 애플리케이션(40)이 미니 페이지 내부에 포함되면, 연관 템플릿은 제 3 자 애플리케이션(40)이 이제 참조되는 도 14에 도시되는 바와 같이 포함되는 특정한 미니 페이지에 적용되는 것이 더 인정될 것이다. 도시되는 바와 같이, 제 3 자 애플리케이션(40)은 미니 페이지 [x] 내에 포함되므로 구성요소들 [c] 및 [d]은 [x]에 추가되지만 동일한 다 페이지 컨테이너 [g]의 추가 미니 페이지들 [y] 및 [z]에 추가되지 않는다.It will be appreciated that changes to instances [d] and [e] above may include: in particular assigning specific content (text, images, etc.) to field instances - as well as regular property changes - will be. It will be further appreciated that if a third party application 40 is contained within a mini-page, then the associated template is applied to the particular mini-page in which the third party application 40 is contained, as shown in FIG. 14 to which it is now referenced. As shown, the third-party application 40 is contained within the mini-page [x] so that the components [c] and [d] are added to [x] but additional mini-pages of the same multi-page container [g]. It is not added to [y] and [z].

섹션 형 미니 페이지들의 경우, 연관 템플릿(만일 있다면)이 제 3 자 애플리케이션(40)을 포함하도록 생성되는 가상(및 비어 있는(empty)) 포함 웹 페이지(203)에 적용되는 것이 더 인정될 것이다.In the case of sectioned mini-pages, it will be further appreciated that the associated template (if any) applies to a virtual (and empty) containing web page 203 that is created to contain the third-party application 40 .

대안의 실시에에서, 미리 생성되어 있는 연관 템플릿은 포함하고 있는 포함 웹 페이지(203)에 "병렬인" 새로 생성되는 페이지 또는 미니 페이지에 적용될 수 있다. 이 새로 생성되는 페이지 또는 미니 페이지는 템플릿으로 초기화될 수 있고, 이는 그 후에 원하는 바에 따라 수정될 수 있다.In an alternative embodiment, the pre-generated association template may be applied to a newly created page or mini-page that is “parallel” to the containing web page 203 it contains. This newly created page or mini-page can be initialized with a template, which can then be modified as desired.

웹사이트 구축 시스템(30)은 또한 다 포트 내포를 가능하게 할 수 있다 - 여기서 동일한 제 3 자 애플리케이션(40) 인스턴스는 주 사이트의 다수의 페이지들로부터 보일 수 있고 이 다수의 페이지들에 "상주한다". 이것은 주 사이트에서의 소정의 제 3 자 애플리케이션(40)의 다수의 내포-제 3 자 애플리케이션(40)의 다수의 인스턴스들을 생성하는-와 상이할 수 있다. 제 3 자 애플리케이션(40) 컨텐츠-인스턴스에 특정한-는 그러므로 동일한 다 포트 제 3 자 애플리케이션(40)의 다수의 뷰들 사이에서 공유된다.The website building system 30 may also enable multi-port nesting - where the same third party application 40 instance can be viewed from and "resides" on multiple pages of the main site. ". This may be different from the multiple nesting of a given third party application 40 at the main site, which creates multiple instances of the third party application 40 . The third party application 40 content - specific to the instance - is therefore shared among multiple views of the same multi-port third party application 40 .

그와 같은 다 포트 내포에서, 연관 템플릿은 제 3 자 애플리케이션(40) 인스턴스가 추가되는 페이지들 및 미니 페이지의 각각에 별개로 적용될 수 있다.In such multi-port nesting, the association template may be applied separately to each of the pages and mini-pages to which the third-party application 40 instance is added.

본원에서 상술한 바와 같이, 시스템(100)은 포함 웹 페이지(203) 내의 구성요소들과 제 3 자 애플리케이션(40) 사이에 2-웨이 통신 링크를 제공할 수 있다. 이것은 제 3 자 애플리케이션으로부터의 연관 템플릿의 병합으로부터 발생되는 포함 웹 페이지(203) 구성요소들뿐만 아니라 어떠한 그러한 연관 템플릿과도 관련없는 구성요소들을 포함하는 것이 인정될 것이다.As described hereinabove, system 100 may provide a two-way communication link between third party application 40 and components within containing web page 203 . It will be appreciated that this includes components not related to any such associative template, as well as containing web page 203 components resulting from the merging of associative templates from third party applications.

그러므로, 제 3 자 애플리케이션(40) 벤더가 전형적으로 벤더에 의해 제작되는 제 3 자 애플리케이션들(40)과 연관되는 다수의 템플릿들을 생성할 수 있음이 인정될 것이다. 이 템플릿들은 실제로 배포되고 있는(즉, 현재 배포되어 있는 제 3 자 애플리케이션 버전들과 연관되어 있는) 템플릿들 외에 테스트, 개발 및 다른 템플릿들을 포함할 수 있다.Therefore, it will be appreciated that a third party application 40 vendor may create a number of templates associated with third party applications 40 typically produced by the vendor. These templates may include test, development, and other templates in addition to the templates that are actually being distributed (ie associated with the currently distributed versions of third-party applications).

본원에서 상술한 바와 같이, 제 3 자 애플리케이션(40)은 앱스토어(25)를 통해 배포될 수 있고 또한 웹사이트 구축 시스템(30) 벤더와 관련되지 않거나 이 벤더에 의해 관리되는 대안의 채널들을 통해 배포될 수 있다. 그러나, 제 3 자 애플리케이션(40)으로 배포되는 연관 템플릿들은 애플리케이션 리포지토리(22)와 고도로 관련되거나 이 리포지토리와 결합될 수 있는데, 왜냐하면 그것들은 웹사이트 구축 시스템(30)에 의해 관리되는 구성요소들, 베이스 템플릿들 및 다른 요소들을 사용하여 구축되기 때문이다.As described hereinabove, third party applications 40 may be distributed through the App Store 25 and also through alternative channels not associated with or managed by the website building system 30 vendor. can be distributed. However, associative templates that are distributed to third party applications 40 may be highly associated with or associated with the application repository 22 , because they contain components managed by the website building system 30 , This is because it is built using base templates and other elements.

더욱이, 그와 같이 별개로 배포되는 연관 템플릿의 기저를 이루는 웹사이트 구축 시스템(30) 요소들은 수정 또는 삭제되어야만 할 수 있다 - 가능하다면, 연관 템플릿을 "깬다". 이 문제를 해소하기 위하여, 시스템(100)은 이 연관 템플릿들을 애플리케이션 리포지토리(22) 내부의 별개의 에어리어(가능하다면 제 3 자 애플리케이션(40) 벤더 당)에 구현할 수 있다. 웹사이트 구축 시스템(30)은 다른 웹사이트 구축 시스템(30) 템플릿들과 동일한 방식으로 이 템플릿들을 관리할 수 있다.Moreover, the website building system 30 elements underlying such separately distributed associative templates may have to be modified or deleted - possibly "breaking" the associative template. To address this problem, the system 100 may implement these associated templates in a separate area within the application repository 22 (possibly per 3rd party application 40 vendor). The website building system 30 may manage these templates in the same manner as other website building system 30 templates.

제 3 자 애플리케이션(40) 벤더에게는 생성되는 각 템플릿 별로 고유 ID(개발 ID)가 제공될 수 있고 이 제 3 자 애플리케이션(40)은 제 3 자 애플리케이션(40) 개발 및 테스트 프로세스 동안 이 ID를 사용할 수 있음이 또한 인정될 것이다. 일단 제 3 자 애플리케이션(40)이 발행/배포될 수 있으면, 제 3 자 애플리케이션(40) 벤더는 대안의 고유 ID(발행 ID)를 신청하고 수신할 필요가 있고 발행된 제 3 자 애플리케이션(40)에서 이를 참조할 수 있다. 일단 발행 ID가 제공되면, 별개의 잠긴 템플릿의 카피(locked copy)가 생성된다. 이것은 제 3 자 애플리케이션(40)에 의해 참조되고 제 3 자 애플리케이션(40)의 인스턴스들을 생성할 때 사용되는 카피이다. 이 방식에서, 제 3 자 애플리케이션(40) 벤더는 "기능을 하는(live)" 제 3 자 애플리케이션(40)(설계자들에 의해 포함되어 있는)과 연관되는 템플릿을 실수로 수정할 수 없고 참조 온정성(integrity)이 보전된다. 더욱이, 시스템(100)은 그와 같은 잠긴 템플릿들 및 기저의 구성요소들 및 베이스 템플릿들 사이의 관계를 상호 참조할 수 있다. 이 상호 참조는 예를 들어, 그와 같이 잠겨 있는 템플릿에 포함되는 베이스 템플릿 또는 웹사이트 구축 시스템(30) 구성요소가 수정되어야 하는 경우(그리고 그와 같은 수정이 어떤 방식으로 템플릿 또는 제 3 자 애플리케이션(40)을 깰 수 있는 경우) 웹사이트 구축 시스템(30) 스태프에 경고를 제공하는 데 사용될 수 있다.The third party application 40 vendor may be provided with a unique ID (development ID) for each template created and this third party application 40 will use this ID during the third party application 40 development and testing process. It will also be appreciated that Once the 3rd party application 40 can be published/distributed, the 3rd party application 40 vendor needs to apply for and receive an alternative unique ID (publish ID) and the published 3rd party application 40 You can refer to this in Once a publication ID is provided, a separate locked copy of the template is created. This is the copy referenced by the third party application 40 and used when creating instances of the third party application 40 . In this way, the third-party application 40 vendor cannot inadvertently modify the template associated with the “live” third-party application 40 (included by the designers) and maintain referential integrity. (integrity) is preserved. Moreover, system 100 may cross-reference such locked templates and relationships between underlying components and base templates. This cross-reference may refer to, for example, if any component of the website building system 30 or the base template included in such a locked template is to be modified (and such modification is in some way a template or a third party application). (40) can be used to provide a warning to the staff of the website building system (30).

그러므로 시스템(100)은 제 3 자 애플리케이션들(40), 포함 웹 페이지(203) 내의 구성요소들 및 웹사이트 구축 시스템(30) 사이에서 양방향 통신 채널들을 제공할 수 있다. 포함 웹 페이지(203) 구성요소들은 제 3 자 애플리케이션과 연관되는 템플릿(들)에 기초하거나, 다른 웹사이트 구축 시스템(30) 템플릿들에 기초하거나 또는 어떠한 템플릿과도 관련되지 않을 수 있다.The system 100 can therefore provide two-way communication channels between the third party applications 40 , components within the containing web page 203 , and the website building system 30 . The containing web page 203 components may be based on template(s) associated with a third party application, based on other website building system 30 templates, or not associated with any template.

본원에서 상술한 바와 같이, 통신 허브(205)는 통신을 증진시킬 수 있고 포함 웹 페이지 및 임의의 제 3 자 애플리케이션들(40) 사이의 백 채널(back channel)을 제공할 수 있다. 출원인들은 포함 웹 페이지 및 임의의 제 3 자 애플리케이션들(40) 사이에서 역방향으로 그리고 순방향으로 흐르고 있는 데이터가 일단 수집되고, 프로세싱되고 통합되면 유용할 수 있음을 더 인식하였다.As described hereinabove, the communication hub 205 may facilitate communication and provide a back channel between the containing web page and any third party applications 40 . Applicants have further recognized that data flowing backward and forward between the containing web page and any third party applications 40 can be useful once collected, processed and integrated.

예를 들어, 웹 사이트 소유자들은 관련 웹사이트 구축 시스템(30)의 등록된 사용자 베이스와 구분될 수 있는 자신들의 사이트당 사용자 집단(population) 또는 회원들을 관리할 필요가 있다. 웹 사이트 사용자들은 등록될 수 있거나 아닐 수 있고(익명) 웹사이트는 상이한 레벨들의 사용자들에 상이한 레벨들의 능력들을 제공할 수 있다. 더욱이, 사용자들은 흔히 자신들이 사이트 소유자와 컨택하기 위하여 인스턴트 메신저 소프트웨어를 활성화할 때 또는 자신들이 사이트와 협업하는 것의 일부로서 소셜 네트워크에 접속할 때 데이터와 같은 개인 또는 컨택 정보(심지어 익명의 사용자들과 같은)를 컨택 폼으로 제공할 수 있다. 이 정보는 생성되는 사이트 내로 직접 입력될 수 있거나 사이트 내에 임베딩되는 제 3 자 애플리케이션들(40)과의 상호 작용의 일부로서 이용 가능하게 만들어질 수 있음이 인정될 것이다.For example, web site owners need to manage a user population or members per their site that can be distinguished from the registered user base of the associated web site building system 30 . Web site users may or may not be registered (anonymous) and the website may provide different levels of capabilities to different levels of users. Moreover, users often receive personal or contact information (even anonymous users, ) can be provided as a contact form. It will be appreciated that this information may be entered directly into the site being created or made available as part of an interaction with third party applications 40 embedded within the site.

이 정보 부분들은 비조직화되고, 비상관되고, 잠재적으로 불일치되고 여러 번 전혀 저장되지 않을 수 있음이 더 인정될 것이다. 예를 들어, 단일의 소정의 사용자는 자신의 개인 이메일을 컨택 폼(contact form)(사이트에 의해 직접 운영되는)에 입력하고 자신의 업무용 이메일을 동일한 세션 내의 별개의 구독 폼(subscription form)(제 3 자 애플리케이션(40)에 의해 운영되는)에 입력할 수 있다.It will be further appreciated that these pieces of information may be disorganized, uncorrelated, potentially inconsistent and many times not stored at all. For example, a single given user may enter their personal email into a contact form (operated directly by the site) and submit their work email into a separate subscription form (administered directly by the site) within the same session. may be entered into a third party application (operated by 40).

더욱이, 상기 정보의 "유동적인" 부분들은 자체의 사용을 위하여 상이한 허가들을 포함할 수 있다. 예를 들어, 구독 폼(subscription form)에 자신들의 이메일 주소를 채우는 사용자들은 자신들이 구독했던 이메일 기반 구독 및 가능하다면 관련 이메일 뉴스레터들을 수신할 것을 전적으로 기대한다. 한편, 이메일 주소를 등록 ID로서 공급하는 사용자는 자신의 계정 처리, 보안 경보 등과 관련되는 이메일들을 제외하고 자신의 등록 주소에 어떠한 이메일들도 수신하는 것을 희망하지 않을 수 있다.Moreover, the “floating” portions of the information may include different permissions for their own use. For example, users who fill out a subscription form with their email address fully expect to receive email-based subscriptions to which they have subscribed and possibly related email newsletters. On the other hand, a user who supplies an e-mail address as a registration ID may not wish to receive any e-mails to his/her registration address except for e-mails related to his/her account processing, security alerts, and the like.

이제 웹사이트 구축 시스템(30) 및 하나 이상의 임베딩된 제 3 자 애플리케이션들(40) 사이에서 교환되는 상이한 메시지들로부터의 데이터를 조정하고 수집하는 시스템(200)을 도시하는 도 15가 참조된다. 시스템(200)은 클라이언트(220)에 설치되는 클라이언트 허브(210) 및 서버(260)에 설치되는 서버 허브(230), 컨택 조정기(240), 활동 조정기(250), 컨택 데이터베이스(245) 및 활동 스트림 데이터베이스(255)를 포함한다. 허브들(210 및 230)이 웹사이트 구축 시스템(30) 및 서버들(270)에 설치되는 다수의 제 3 자 애플리케이션들(40) 사이 그리고 허브(205)와 관련하여 본원에서 상술한 바와 같이 상이한 제 3 자 애플리케이션들(40) 사이의 통신을 용이하게 할 수 있음이 인정될 것이다. 컨택 데이터베이스(245) 및 활동 스트림 데이터베이스(255)는 본원 아래에서 더 상세하게 기술되는 바와 같이 메시지 스트림들로 추출되는 정보 및 컨택/활성 정보를 보유할 수 있다.Reference is now made to FIG. 15 , which illustrates a system 200 for coordinating and gathering data from different messages exchanged between a website building system 30 and one or more embedded third-party applications 40 . The system 200 includes a client hub 210 installed on a client 220 and a server hub 230 installed on a server 260 , a contact coordinator 240 , an activity coordinator 250 , a contact database 245 and an activity stream database 255 . The hubs 210 and 230 differ between the website building system 30 and a number of third party applications 40 installed on the servers 270 and as described above with respect to the hub 205 herein. It will be appreciated that it may facilitate communication between third party applications 40 . Contacts database 245 and activity stream database 255 may hold contact/activity information and information extracted into message streams as described in more detail herein below.

이제 클라이언트 허브(210)의 요소들을 도시하는 도 16a 및 서버 허브(230), 컨택 조정기(240) 및 활동 조정기(250)의 요소들을 도시하는 도 16b가 참조된다. 클라이언트 허브(210)는 라우터(211), 변환기 및 어댑터(212) 및 개인정보 보호 정책 시행기(213)를 포함한다. 서버 허브(230)는 라우터 및 트랙커(231), 변환기 및 어댑터(232), 개인정보 보호 정책 시행기(233), 개인 데이터 프록시(234) 및 검증기 및 서명기(235)를 포함한다. 컨택 조정기(240)는 데이터 추출기(241), 컨택 처리기(242), 데이터 병합기(243) 및 데이터 및 허가 처리기(244)를 포함한다. 활동 조정기(250)는 스트림 생성기(251), 스트림 병합기(252) 및 로그 생성기(253)를 포함한다. 이 요소들의 기능은 본원 아래에서 더 상세하게 기술된다.Reference is now made to FIG. 16A , which shows elements of a client hub 210 , and FIG. 16B , which shows elements of a server hub 230 , contact coordinator 240 and activity coordinator 250 . The client hub 210 includes a router 211 , a converter and adapter 212 , and a privacy policy enforcer 213 . The server hub 230 includes a router and tracker 231 , a converter and adapter 232 , a privacy policy enforcer 233 , a personal data proxy 234 and a verifier and signer 235 . The contact coordinator 240 includes a data extractor 241 , a contact processor 242 , a data merger 243 , and a data and permission processor 244 . Activity coordinator 250 includes a stream generator 251 , a stream merger 252 , and a log generator 253 . The function of these elements is described in more detail herein below.

이제 스트림 병합기(252)의 요소들을 도시하는 도 16c 및 데이터 병합기(243)의 요소들을 도시하는 도 16d가 참조된다. 스트림 병합기(252)는 활동-대-스트림 병합기(261) 및 스트림-대-스트림 병합기(262)를 포함한다. 스트림-대-스트림 병합기(262)는 수평 스트림 병합기(263) 및 수직 스트림 병합기(264)를 더 포함한다. 데이터 병합기(243)는 컨택 식별기(272), 통합기(273), 불일치 해소기(274), 목록 값 생성기(275), 수직 컨택 병합기(276) 및 수평 컨택 병합기(277)를 포함한다. 수평 컨택 병합기(277)는 가상 수평 병합기(278)를 더 포함한다. 수직 컨택 병합기(276)는 가상 수직 병합기(279)를 더 포함한다. 이 요소들의 기능은 본원 아래에서 더 상세하게 기술된다.Reference is now made to FIG. 16C , which shows elements of stream merger 252 , and FIG. 16D , which shows elements of data merger 243 . The stream merger 252 includes an activity-to-stream merger 261 and a stream-to-stream merger 262 . The stream-to-stream merger 262 further includes a horizontal stream merger 263 and a vertical stream merger 264 . The data merger 243 includes a contact identifier 272 , an aggregator 273 , a discrepancy resolver 274 , a list value generator 275 , a vertical contact merger 276 and a horizontal contact merger 277 . do. The horizontal contact merger 277 further includes a virtual horizontal merger 278 . The vertical contact merger 276 further includes a virtual vertical merger 279 . The function of these elements is described in more detail herein below.

시스템(200)은 본원 아래에서 상세하게 기술되는 바와 같이 스트림들에 의한 활동 메시지 조직, 활동 메시지 이력들의 저장, 다중레벨 활동 메시지 전달, 활동 메시지들에 대한 측 채널들의 사용, 활동 메시지 변환 및 컨텐츠 적응, 활동 메시지 검증 및 서명 및 청취자 질의들을 사용하는 동적 활동 메시지 라우팅을 포함하는 다양한 능력들을 제공하면서 시스템(200) 및 다수의 제 3 자 애플리케이션들(40) 사이에서 메시지를 전달하는 것이 가능할 수 있음이 인정될 것이다. System 200 is a system that organizes active messages by streams, stores active message histories, delivers multilevel active messages, uses side channels for active messages, converts active messages, and adapts content as described in detail herein below. , it may be possible to forward messages between the system 200 and a number of third-party applications 40 while providing a variety of capabilities including dynamic message routing using active message validation and signature and listener queries. will be acknowledged

더욱이, 시스템(200)은 사용자 관련 정보를 추출하고 이를 병합할 수 있다- 다수의 소스들로부터의 정보뿐만 아니라 시스템(200)에 이미 존재하고 있는 정보를 통합. 이는 이종의(disparate) 그리고 가능하면 불일치 정보를 조화(reconcile)시키는 병합 규칙들을 통해 행해질 수 있다. 통합된 정보는 컨택 데이터베이스(245)에 저장될 수 있다. 이 정보는 또한 본원 아래에서 더 상세하게 설명되는 바와 같이 수집된 정보의 허용된 사용을 제어하는 사용 허가 필드들을 포함할 수 있다.Moreover, the system 200 may extract and merge user-related information - incorporating information already present in the system 200 as well as information from multiple sources. This can be done through merging rules that disparate and possibly reconcile inconsistent information. The aggregated information may be stored in the contact database 245 . This information may also include permission fields that control the permitted use of the collected information as described in more detail herein below.

본 발명에 대한 대안의 실시예들에서, 클라이언트 허브(210) 및 서버 허브(230) 이 둘 모두만이 서버들(270)에 설치되는 다수의 제 3 자 애플리케이션들(40)과 통신하는 데 사용될 수 있다. 클라이언트 허브(210)만이 사용되는 상황에서, 컨택 조정기(240), 활동 조정기(250)는 데이터베이스들(245 및 255)과 함께 관련 클라이언트에 국지적으로 설치될 수 있음이 인정될 것이다.In alternative embodiments to the present invention, only the client hub 210 and the server hub 230 will be used to communicate with a number of third party applications 40 installed on the servers 270 . can It will be appreciated that in situations where only the client hub 210 is used, the contact coordinator 240, activity coordinator 250, along with databases 245 and 255, may be installed locally on the relevant client.

시스템(200)은 사용자들 자신에 의해 세팅되는 사용 제한들을 시행하면서 제 3 자 애플리케이션들(40)이 사용자가 컨택하는 활동들(예를 들어, 뉴스레터들의 대량 메일링(mailing))을 관리하는 것을 가능하게 하는 추가의 구성요소들을 포함할 수 있음이 더 인정될 것이다. 그와 같은 구성요소들은 심지어 사용자 개인 데이터를 제 3 자 애플리케이션들(40)로부터 격리할 수 있다 - 제 3 자 애플리케이션들(40)이 개인 사용자 데이터에 실제로 액세스하지 않고 자신들의 행동들을 수행할 수 있도록. 그와 같은 능력은 예를 들어, 본원 아래에서 더 상세하게 기술되는 바와 같이 개인 데이터 프록시(234)를 사용하여 구현될 수 있다.The system 200 allows third-party applications 40 to manage activities with which the user contacts (eg, mass mailing of newsletters) while enforcing usage restrictions set by the users themselves. It will be further appreciated that it may include additional components that enable it. Such components can even isolate user personal data from third party applications 40 - so that third party applications 40 can perform their actions without actually accessing personal user data. . Such capabilities may be implemented, for example, using personal data proxy 234 as described in more detail herein below.

컨택 데이터베이스(245)는 각각의 사이트에 특정될 수 있음이 또한 인정될 것이다. 그러나, 웹사이트 구축 시스템(30)은 웹 사이트들(동일한 사이트 소유자에 의해 소유되는)의 모음(collection)을 담고 있는 메타 사이트(meta site)/프로젝트(project) 레벨을 규정하고 단일 사이트 레벨보다는 오히려 메타 사이트 레벨에서 컨택들이 저장되고, 처리되고 병합되는 것을 명시하는 것이 가능할 수 있다. 다른 사이트 요소들(포함되어 있는 제 3 자 애플리케이션들(40)과 같은)은 또한 사이트 레벨보다는 오히려 메타 사이트에서 규정될 수 있다. 메타 사이트 지원 이외에, 시스템(200)은 전형적으로 컨택들을 공유하지 않거나(아래에서 기술되는 바를 예외로 하고) 또는 상이한 사이트들 또는 상이한 사이트 소유자들 사이의 컨택 정보를 통합하지 않을 수 있다(소정의 최종 사용자에 의해 하나의 사이트에 제공되는 데이터가 다른 사이트에 누출되지 않도록).It will also be appreciated that the contacts database 245 may be specific to each site. However, the website building system 30 defines a meta site/project level containing a collection of web sites (owned by the same site owner) and rather than a single site level. It may be possible to specify at the meta site level that contacts are stored, processed and merged. Other site elements (such as included third party applications 40) may also be defined at the meta site rather than the site level. Other than meta-site support, system 200 typically does not share contacts (except as described below) or may not aggregate contact information between different sites or different site owners (a certain final to ensure that data provided by users to one site is not leaked to another).

본원에서 상술되는 바와 같이, 시스템(200)은 웹사이트 구축 시스템(30) 및 하나 이상의 제 3 자 애플리케이션들(40) 사이의 다수의 상호 작용들을 지원할 수 있다. 그와 같은 상호 작용들은 구매를 행하고, 아이템을 쇼핑 카트에 추가하고, 컨택 정보를 채우는 것 등과 같은 미리 규정된 활동들일 수 있다. 제 3 자 애플리케이션(40)은 자신이 어떤 활동들을 지원할지를 명시할 수 있고 다른 제 3 자 애플리케이션들(40)은 특정한 활동들을 "청취"할 수 있고 수신된 활동들 및 이들과 연관되는 정보에 근거하여 행동할 수 있다. 소정의 제 3 자 애플리케이션(40)에 대해 청취되는 활동들의 목록들은 본원 아래에서 더 상세하게 기술되는 바와 같이 하나 이상의 활동들에 명시적으로 세팅될 수 있거나 활동 청취 질의에 의해 결정될 수 있음이 인정될 것이다.As detailed herein, system 200 may support a number of interactions between website building system 30 and one or more third party applications 40 . Such interactions may be predefined activities such as making a purchase, adding an item to a shopping cart, populating contact information, and the like. The third party application 40 may specify which activities it will support and other third party applications 40 may "listen" to certain activities and based on the received activities and information associated with them. so you can act It will be appreciated that the lists of activities that are listened to for a given third party application 40 may be explicitly set to one or more activities as described in more detail herein below or may be determined by an activity listening query. will be.

각각의 활동이 메시지로서 간주될 수 있고 각각의 메시지가 활동 데이터 구조를 포함할 수 있음이 인정될 것이다. 활동 데이터 구조들은 미리 규정되는 데이터 유형들이지만, 이것들 사이의 상속을 통해 그리고 필드들을 추가함으로써 이것들을 확장할 선택사양을 가질 수 있는 제 3 자 애플리케이션들(40)을 통해 규정될 수 있다. 이것들은 시스템에 특정할 수 있거나, 표준화된 데이터 구조들에 기초하거나 이 표준화된 데이터 구조들을 포함할 수 있다. 이것들은 또한 XML, JSON 데이터와 같은 일부 방식으로 또는 이진 객체 인코딩 방식을 사용하여 인코딩될 수 있다.It will be appreciated that each activity may be considered a message and each message may include an activity data structure. Activity data structures are predefined data types, but can be defined through inheritance between them and through third party applications 40 which may have the option to extend them by adding fields. These may be system specific, or may be based on or include standardized data structures. They can also be encoded in some way, such as XML, JSON data, or using a binary object encoding scheme.

활동 데이터 구조는 또한 "기술" 필드(description field)에 제공되는 제 3 자 애플리케이션(40)을 포함할 수 있다. 이는 활동의 제 3 자 애플리케이션(40) 기반 기술이다(웹사이트 구축 시스템(30)에 공지되어 있는 것보다 더 상세화될 수 있는). 예를 들어, VOIP 통신 제 3 자 애플리케이션(40)은 "999-555-1234로 John Smith에 호출 01:15"의 활동 기술 텍스트를 제공할 수 있다.The activity data structure may also include a third party application 40 provided in a “description” field. This is a third party application 40 based description of the activity (which may be further detailed than is known in the website building system 30 ). For example, the VOIP communication third party application 40 may provide the activity description text of "Call John Smith at 999-555-1234 01:15".

활동 데이터 구조는 활동 데이터 구조에 복귀되는 콜백 링크, 예를 들어, "더 많은 정보"를 더 포함할 수 있다. 이것은: 전자상거래 활동 구조에 대해: 전체 순서 추적 정보, 순서들의 이력 등; 챗 활동 데이터 구조에 대해: 전체 챗 트랜스크립트(transcript) 그리고 전화 활동 데이터 구조에 대해: 호출의 기록과 같은 추가의 실질 정보를 제공하는 데 사용될 수 있다. 그러므로, 샘플 완료 활동 데이터 구조는 다음의 필드들을 담고 있을 수 있다: 생성 타임스탬프; 활동 유형; 활동의 소스(제 3 자 애플리케이션(40)/구성요소 ID); 활동 스트림 ID; 활동 유형 특정 정보(활동 유형에 좌우되는); 생성 사이트 ID; 사이트 회원 데이터베이스 ID; 활동이 발생했던 사이트 페이지의 ID/URL; 제 3 자 애플리케이션(40)에 의해 제공되는 활동 기술; 제 3 자 애플리케이션(40)에 의해 사용되는 더 많은 정보 링크 및 캡처되는 사용자 세부사항들 등.The activity data structure may further include a callback link returned to the activity data structure, for example "more information". This is for: e-commerce activity structure: full order tracking information, history of orders, etc.; For the chat activity data structure: the full chat transcript and for the phone activity data structure: can be used to provide additional substantive information, such as the history of the call. Therefore, a sample complete activity data structure may contain the following fields: creation timestamp; activity type; source of activity (third party application 40/component ID); activity stream id; activity type specific information (depending on activity type); creation site ID; site member database ID; ID/URL of the site page where the activity occurred; activity descriptions provided by third party applications 40; Links to more information used by third party applications 40 and user details captured, etc.

활동 조정기(250)는 로깅 요소(logging element)로 간주될 수 있고 허브(230)로부터의 전달 메시지로부터 데이터를 수신할 수 있다. 스트림 생성기(251)는 로그 또는 체인 형 구조로 간주될 수 있는 초기 스트림을 생성할 수 있고 스트림 병합기(252)는 이 스트림에 임의의 추가의 인입 활동을 더할 수 있고, 여기서 각각의 스트림은 컨택에 고유하다. 스트림 생성기(251)는 상이한 메시지들에 포함되는 개별 활동 별로 새로운 스트림을 생성하지 않을 수 있음이 인정될 것이다. 스트림 내에 포함되는 활동들이 시퀀스를 벗어날 수 있음이(예를 들어, 제 3 자 애플리케이션(40)이 활동을 보고하는 데 지연될 수 있다) 더 인정될 것이다. 스트림 병합기(252)는 스트림들이 동일한 단일 컨택에 속하면 동작 중에 이 스트림들을 병합할 수 있고 로그 생성기(253)는 모든 이전에 생성된 활동 스트림들의 활동 스트림 데이터베이스(255)에 로그 파일을 저장할 수 있다.Activity coordinator 250 may be considered a logging element and may receive data from a forwarding message from hub 230 . Stream generator 251 may generate an initial stream, which may be considered a log or chain-like structure, and stream merger 252 may add any additional incoming activity to this stream, where each stream is a contact is unique to It will be appreciated that the stream generator 251 may not create a new stream for each individual activity included in different messages. It will be further appreciated that activities included within the stream may be out of sequence (eg, a third party application 40 may be delayed in reporting the activity). Stream merger 252 may merge these streams during operation if they belong to the same single contact and log generator 253 may store a log file in activity stream database 255 of all previously created activity streams. have.

도 16c와 관련하여 본원에서 상술한 바와 같이, 스트림 병합기(252)는 활동-대-스트림 병합기(261) 및 스트림-대-스트림 병합기(262)를 포함한다. 활동-대-스트림 병합기(261)는 활동을 식별되는 컨택와 연관되는 스트림 내로 연관시킬 수 있고 스트림-대-스트림 병합기(262)는 2개의 별개의 스트림들을 단일 스트림으로 변환할 수 있다. 수평 스트림 병합기(263)는 검출되는 공통 1차 ID로 인하여 2개의 관련되지 않은 스트림들을 병합할 수 있고 수직 스트림 병합기(264)는 익명의 컨택에 대하여 생성되는 스트림 및 등록된 사용자와 연관되는 스트림을 연결시킬 수 있는 등록 또는 로그인 시에 이 둘을 병합할 수 있다. 스트림 병합기(252)가 필요할 때 활동 스트림 데이터베이스(255)로부터 이전에 생성된 스트림들에 액세스할 수 있음이 인정될 것이다.As described herein above with respect to FIG. 16C , stream merger 252 includes an activity-to-stream merger 261 and stream-to-stream merger 262 . Activity-to-stream merger 261 may associate an activity into a stream associated with the identified contact and stream-to-stream merger 262 may convert the two separate streams into a single stream. Horizontal stream merger 263 can merge two unrelated streams due to the common primary ID being detected and vertical stream merger 264 can merge the stream created for anonymous contact and the one associated with registered user. You can merge the two at registration or login time to connect the streams. It will be appreciated that stream merger 252 can access previously created streams from activity streams database 255 when needed.

예를 들어, 익명의 사용자는 사이트에 컨택 폼을 채운다. 스트림 생성기(251)는 새로운 활동 스트림(ID "anon 1"을 가지는)을 생성하고 컨택 처리기(242)는 새 컨택(본원 아래에서 더 상세하게 기술되는 바와 같이 ID "anon 1"을 가지는)을 생성할 수 있다. 동일한 사용자는 그 후에 사이트 소유자와 채팅할 수 있다. 스트림 병합기(252)는 그 후에 이 활동을 "anon 1" 활동 스트림에 병합하고 컨택 "anon 1"이 업데이트된다(본원 아래에서 더 상세하게 기술되는 바와 같이). 사용자는 상이한 브라우저를 사용하여, 그 후에 스케줄 폼을 채운다. 원래의 사용자에 대하여 상관이 존재하지 않으므로, 스트림 생성기(251)는 ID "anon 2"를 가지는 새로운 활동 스트림을 생성할 수 있고 컨택 처리기(242)는 ID "anon 2"를 가지는 새로운 컨택을 생성할 수 있다.For example, an anonymous user fills out a contact form on the site. Stream generator 251 creates a new activity stream (with ID “anon 1”) and contact handler 242 creates a new contact (with ID “anon 1” as described in more detail herein below). can do. The same user can then chat with the site owner. Stream merger 252 then merges this activity into the “anon 1” activity stream and the contact “anon 1” is updated (as described in more detail herein below). The user uses a different browser and then fills out the schedule form. Since no correlation exists for the original user, stream generator 251 can create a new activity stream with ID “anon 2” and contact handler 242 creates a new contact with ID “anon 2”. can

사용자는 그 후에 사이트로부터 어떤 것을 구매한다. 스트림 병합기(252)는 새로운 활동을 "anon 2" 활동 스트림에 병합하고 컨택 "anon 2"는 업데이트될 수 있다(예를 들어, "고객" 태그로).The user then purchases something from the site. Stream merger 252 merges the new activity into the “anon 2” activity stream and the contact “anon 2” can be updated (eg, with a “customer” tag).

사용자는 또 다른 브라우저를 사용하여, 사이트에 등록한다. 등록될 때, 모든 사용자들은 사이트의 회원 처리기로부터 "user x" ID를 수신한다. 이 시점에서, 스트림 생성기(251)는 새로운 활동 스트림(ID "user x"를 가지는)을 생성할 수 있고 컨택 처리기(242)는 새로운 컨택(동일한 ID "user x"를 가지는)을 생성할 수 있다.The user registers with the site, using another browser. When registered, all users receive a "user x" ID from the site's membership processor. At this point, stream generator 251 may create a new activity stream (with ID "user x") and contact handler 242 may create a new contact (with same ID "user x"). .

이후에, 사용자는 다른 브라우저로 복귀하여 사이트 소유자와 채팅한다. 웹사이트가 쿠키를 가지지 않으므로, 스트림 생성기(251)는 또 다른 새로운 스트림 ID "anon 3"을 생성할 수 있고 컨택 처리기(242)는 새로운 컨택 "anon 3"을 생성할 수 있다.Afterwards, the user returns to another browser to chat with the site owner. Since the website does not have a cookie, stream generator 251 may create another new stream ID “anon 3” and contact handler 242 may create a new contact “anon 3”.

이제, 사용자는 웹사이트에 로그인한다. 이때, "anon 3" ID 및 "user x" ID에 의한 컨택이 있다. 데이터 병합기(243)는 "user x" 스트림에서의 로그인 활동 및 컨택 "user x"에 대한 로그인 활동 모두가 활동 스트림들 "user x" 및 "anon 3"를 가리키도록, 컨택들 "anon 3"을 "user x"에 병합할 수 있다. 스트림 병합기(252)는 이 세션에서 사용자에 의해 수행되는 임의의 추가 행위들을 "user x" 활동 스트림에 병합할 수 있다. 로그 생성기(253)는 스트림들로부터의 모든 활동 데이터를 로깅하고 로그의 카피를 활동 데이터베이스(255)에 저장할 수 있다.Now, the user logs into the website. At this time, there is a contact by ID "anon 3" and ID "user x". Data merger 243 is configured to point to activity streams “user x” and “anon 3” such that both the login activity in the “user x” stream and the login activity for the contact “user x” point to the contacts “anon 3”. " can be merged into "user x". Stream merger 252 may merge any additional actions performed by the user in this session into the “user x” activity stream. The log generator 253 may log all activity data from the streams and store a copy of the log in the activity database 255 .

사이트 소유자는 이제 참조되는 도 17에 도시되는 바와 같이 웹사이트 구축 시스템(30)에 의해 제공되는 관련 사용자 인터페이스를 통해 소정의 컨택에 대한 활동 스트림의 이력에 액세스할 수 있음이 인정될 것이다. 단일 컨택 "Dani Bronstein"의 경우, 이 사람의 웹사이트 사용 이력에 용이하게 액세스될 수 있다. 웹사이트 구축 시스템(30) 또는 제 3 자 애플리케이션(40)은 또한 로그 정보에 액세스하기 위하여 API를 제공할 수 있음이 또한 인정될 것이다. 활동 로그는 최적화, 사용자 인터페이스 개선, 광고 타깃팅 등을 위해 사용될 수 있음이 인정될 것이다.It will be appreciated that the site owner may access a history of the activity stream for a given contact via an associated user interface provided by the website building system 30 as shown in FIG. 17 to which reference is now made. In the case of a single contact "Dani Bronstein", this person's website usage history can be easily accessed. It will also be appreciated that the website building system 30 or third party application 40 may also provide an API to access log information. It will be appreciated that activity logs may be used for optimization, user interface improvement, advertisement targeting, and the like.

동시에, 컨택 조정기(240)는 해당 사용자의 컨택 프로파일을 증강시키기 위해 활동 스트림들(메시지들)에 의해 제공되는 데이터로부터 정보를 모을 수 있음이 더 인정될 것이다. 데이터 추출기(241)는 활동 메시지들 및 스트림들로부터 데이터를 추출할 수 있고, 데이터 병합기(243)는 관련 데이터를 자체의 세부사항들이 저장되고 컨택 데이터베이스(245)로부터 액세스될 수 있는 특정한 컨택에 병합할 수 있다. 컨택 처리기(242)는 새로운 컨택들을 생성하고, 사이트 사용자 신원, 익명의 사용자들 등을 처리할 수 있고 데이터 및 허가 처리기(244)는 관련 데이터의 프라이버시 보호 및 허가들을 처리할 수 있다. 본원에서 상술한 바와 같이, 데이터 병합기(243)는 수평 컨택 병합기(277) 및 수직 컨택 병합기(276)를 포함할 수 있다. 수평 컨택 병합기(277)는 검출되는 공통 1차 ID로 인하여 2개의 관련되지 않은 컨택들을 병합할 수 있고 수직 컨택 병합기(276)는 익명의 컨택 및 등록된 사용자와 연관되는 컨택을 연결시킬 수 있는 등록 또는 로그인 시에 이 둘을 병합할 수 있다. 수평 컨택 병합기(277)는 또한 2개의 컨택들을 별개로 유지하지만 이것들이 동일한 컨택을 표현하는 것으로 표기되도록 이것들을 서로 링크시키는 가상 수평 병합기(278)를 포함할 수 있다- 실제 컨택 정보를 병합하거나 병합하지 않고 -. 수직 컨택 병합기(276)는 또한 익명의 컨택 및 등록된 사용자와 연관되는 컨택을 별개로 유지하지만 이것들이 동일한 컨택을 표현하는 것으로 표기되도록 이것들을 서로 링크시킬 수 있도록 수직 가상 병합기(279)를 포함할 수 있다 - 실제 컨택 정보를 병합하거나 병합하지 않고 -. 데이터 병합기(243)는 또한 컨택 정보(전형적으로 데이터 추출기(241)에 의해 추출되는)를 기존의 컨택에 병합할 수 있다. 컨택 식별기(272)가 쿠키들을 사용하여 사용자 신원들을 추적할 수 있고 본원 아래에서 더 상세하게 논의되는 바와 같이 병합되어야 할 컨택들을 인식할 수 있음이 인정될 것이다.At the same time, it will be further appreciated that contact coordinator 240 may gather information from data provided by activity streams (messages) to augment the contact profile of that user. Data extractor 241 may extract data from activity messages and streams, and data merger 243 may store the relevant data into a specific contact whose details are stored and can be accessed from contact database 245 . can be merged Contacts handler 242 may create new contacts, handle site user identity, anonymous users, etc. and data and permissions handler 244 may handle privacy protections and permissions of related data. As described hereinabove, the data merger 243 may include a horizontal contact merger 277 and a vertical contact merger 276 . The horizontal contact merger 277 may merge two unrelated contacts due to the common primary ID being detected and the vertical contact merger 276 may combine the anonymous contact and the contact associated with the registered user. You can merge the two upon registration or login. Horizontal contact merger 277 may also include a virtual horizontal merger 278 that keeps two contacts separate but links them together such that they are marked as representing the same contact - merging real contact information With or without merging -. Vertical contact merger 276 also maintains anonymous contacts and contacts associated with registered users separately, but uses vertical virtual merger 279 to link them together so that they are marked as representing the same contact. MAY include - with or without merging actual contact information. Data merger 243 may also merge contact information (typically extracted by data extractor 241) into existing contacts. It will be appreciated that contact identifier 272 may use cookies to track user identities and recognize contacts to be merged, as discussed in more detail herein below.

다시 도 15, 16a 및 16b를 참조하면, 메시지 전달은 클라이언트(220), 서버(260) 또는 이 둘 모두에서 수행될 수 있다. 제 3 자 애플리케이션들(40)은 전형적으로 클라이언트 측 요소를 가질 뿐만 아니라 서버 측 요소를 가지거나 또는 적어도 제 3 자 애플리케이션(40) 제공자 서버(270)로의 서버 측 접속을 가질 수 있음이 인정될 것이다. 허브(210)는 클라이언트(220) 및 제 3 자 애플리케이션들(40) 사이의 임의의 메시지들 및 서버(260) 및 제 3 자 애플리케이션들(40) 사이의 허브(230)를 프로세싱할 수 있다. 허브(210)에 의해 수신되는 데이터는 프로세싱되고 본원 아래에서 더 상세하게 기술되는 바와 같이 추가 프로세싱을 위해 허브(230)로 전송될 수 있음이 인정될 것이다.Referring again to FIGS. 15 , 16A and 16B , message delivery may be performed at the client 220 , the server 260 , or both. It will be appreciated that third party applications 40 typically have a client side component as well as a server side component or at least have a server side connection to the third party application 40 provider server 270 . . Hub 210 can process any messages between client 220 and third party applications 40 and hub 230 between server 260 and third party applications 40 . It will be appreciated that data received by hub 210 may be processed and sent to hub 230 for further processing as described in more detail herein below.

이제 상이한 플랫폼들 사이의 메시지 전달 시나리오를 도시하는 도 18이 참조된다. 사용자 클라이언트 기계(X)는 서버(Y) 상의 웹사이트 구축 시스템(30)에 접속될 수 있다. 웹사이트 구축 시스템(30)은 웹사이트 구축 시스템(30) 클라이언트 구성요소(A') 및 웹사이트 구축 시스템(30) 서버 구성요소(A)를 사용하여 구현될 수 있다. 생성되는 사이트가 디스플레이되면, 이는 클라이언트 측 요소들(데이터/코드)(B') 및 서버 측 요소(B)를 포함할 수 있다. 생성되는 사이트는 또한 3개의 제 3 자 애플리케이션들(40)-TPA1, TPA2 및 ETPA3를 포함할 수 있다.Reference is now made to FIG. 18 , which illustrates a message passing scenario between different platforms. User client machine X may be connected to website building system 30 on server Y. The website building system 30 may be implemented using the website building system 30 client component A' and the website building system 30 server component A. When the site being created is displayed, it may include client-side elements (data/code) (B') and server-side elements (B). The created site may also include three third party applications 40 - TPA1, TPA2 and ETPA3.

TPA1은 클라이언트 측 구성요소(D') 및 TPA1 벤더 서버(H)와 접속되는 서버 측 구성요소(D)로 구현될 수 있다. TPA2는 클라이언트 측 구성요소(E') 및 TPA2 벤더 서버(I)와 접속되는 서버 측 구성요소(E)로 구현될 수 있다. 그러나, ETPA3는 웹사이트 구축 시스템(30) 제 3 자 애플리케이션(40) 지원 백엔드(F)에 접속되는 서버 측 구성요소(G)에 의해 구현되는 서버 측에 유일한 제 3 자 애플리케이션(40)일 수 있다. 이 2개는 제 3 자 애플리케이션(40) 벤더 서버(J)와 통신할 수 있다.TPA1 may be implemented as a client-side component (D') and a server-side component (D) connected to the TPA1 vendor server (H). TPA2 may be implemented as a client-side component (E') and a server-side component (E) connected to the TPA2 vendor server (I). However, ETPA3 may be the only 3rd party application 40 on the server side implemented by the server side component G connected to the website building system 30 3rd party application 40 support backend F have. These two may communicate with a third party application 40 vendor server J.

TPA1 및 TPA2는 클라이언트에(구성요소들(D' 및 E') 사이의), 서버에(구성요소들(D 및 E) 사이에) 또는 이 둘 모두에서 메시지들을 교환할 수 있음이 인정될 것이다. 그러나, ETPA3과의 어떠한 통신도 단지 서버에서 수행되어야만 한다. 어느 방법을 사용하든지 장점과 단점이 있음이 더 인정될 것이다. 클라이언트 측 활동 메시지 송신은 더 상호적일 수 있고 더 빠른 사용자 응답을 제공한다. 서버 측 활동 메시지 송신은 더 강하고, 더 신뢰성이 있고(예를 들어, 사용자는 프로세싱 도중에 브라우저 윈도우를 닫을 수 없다), 정확한 메시지 수신 순서를 더 양호하게 보장할 수 있고 또한 활동 메시지들이 백엔드 또는 애플리케이션 대시보드(dashboard)에 설치되어 있는 백엔드 제 3 자 애플리케이션들(40)에 송신되는 것을 가능하게 할 수 있다. 이 백엔드 제 3 자 애플리케이션들(40)이 클라이언트 측에 표시되지 않는 것이 인정될 것이다.It will be appreciated that TPA1 and TPA2 may exchange messages at the client (between components D' and E'), at the server (between components D and E), or both. . However, any communication with ETPA3 only has to be performed on the server. It will be further appreciated that there are advantages and disadvantages to either method. Sending client-side activity messages can be more interactive and provide faster user responses. Server-side active message sending is stronger, more reliable (eg, a user cannot close a browser window during processing), can better guarantee the correct order of receiving messages and also ensure that active messages are sent to the backend or application dash It may enable transmission to backend third party applications 40 installed on the dashboard. It will be appreciated that these backend third party applications 40 are not presented on the client side.

다수의 제 3 자 애플리케이션들(40)을 사용하는 경우의 하나의 예는 사용자가 제 3 자 애플리케이션(A)(활동 유형은 "카트 변경"이다)에서 제품을 쇼핑 카트에 추가하는 예이다. 제 3 자 애플리케이션(A)은 그 후에 추가된 제품이 있는 활동 메시지를 웹사이트 구축 시스템(30)에 송신할 수 있다. 웹사이트 구축 시스템(30)은 그 후에 이 활동을 카트 변경들에 등록된 모든 제 3 자 애플리케이션들(40)에 전송할 수 있다. 제 3 자 애플리케이션(B)이 등록되어 있으므로 이는 활동을 수신한다. 제 3 자 애플리케이션(B)은 그 후에 "당신이 또한 제품 X를 추가하면, 당신은 할인을 받을 것입니다" 또는 "할인 받으려면 이 사이트를 공유하세요"와 같은 메시지를 사용자에게 디스플레이할 수 있다.One example when using multiple third party applications 40 is that a user adds a product to a shopping cart in a third party application A (activity type is “change cart”). The third party application A may then send an activity message with the added product to the website building system 30 . The website building system 30 may then transmit this activity to all third party applications 40 registered for cart changes. A third-party application (B) is registered and therefore receives the activity. The third party application (B) may then display a message to the user such as "if you also add product X, you will get a discount" or "share this site to get a discount".

다른 예는 제 3 자 애플리케이션(A)에서 사용자 "좋아요"(예를 들어, Facebook을 통해)와 같은 것이다. 제 3 자 애플리케이션(A)은 그 후에 활동 유형 "Facebook 좋아요"가 있는 활동 메시지를 웹사이트 구축 시스템(30)에 송신할 수 있다. 웹사이트 구축 시스템(30)은 그 후에 활동을 "좋아요" 활동들에 등록되어 있는 모든 제 3 자 애플리케이션들(40)에 전송할 수 있다. 제 3 자 애플리케이션(B)이 등록되어 있으므로 이는 활동을 수신한다. 제 3 자 애플리케이션(B)은 사용자에게 재참여 위젯을 보여주고 "당신이 이 사이트를 좋아하면, 사이트 소유자에 연락하는 것은 어때요?" 또는 "당신은 할인 쿠폰을 원하나요?"와 같은 메시지를 디스플레이할 수 있다.Another example would be something like a user "Like" (eg via Facebook) in a 3rd party application (A). The third party application A may then send an activity message with the activity type “Facebook Likes” to the website building system 30 . The website building system 30 may then send the activity to all third party applications 40 that are registered for “like” activities. A third-party application (B) is registered and therefore receives the activity. The 3rd party application (B) shows the user a re-engagement widget and asks "If you like this site, how about contacting the site owner?" Or it may display a message such as "Do you want a discount coupon?"

본원에서 상술한 바와 같이, 모든 통신은 허브들(210 및 230)을 통해 발생할 수 있다.As discussed above herein, all communication may occur via hubs 210 and 230 .

라우터(211)는 클라이언트 측 메시지들을 웹사이트 및 임의의 제 3 자 애플리케이션들(40) 사이에서 라우팅할 수 있다. 라우터(211)는 또한 본원 아래에서 더 상세하게 기술되는 바와 같은 추가 프로세싱을 위해 메시지를 허브(210) 및 허브(230) 사이에서 라우팅할 수 있다.The router 211 may route client-side messages between the website and any third party applications 40 . Router 211 may also route messages between hub 210 and hub 230 for further processing as described in more detail herein below.

라우터 및 트랙커(231)는 메시지들을 웹사이트 및 임의의 제 3 자 애플리케이션들(40) 사이에서 라우팅할 수 있고 또한 메시지들을 추적할 수 있다. 제 3 자 애플리케이션들(40)은 또한 클라이언트 및 서버 모두에서 메시지들을 청취할 수 있음이 인정될 것이다. 제 3 자 애플리케이션(40)이 자신이 청취, 예를 들어, 모든 "쇼핑 카트 - 아이템 추가" 활동들을 청취하는 하는 하나 이상의 활동들을 분명히 명시할 수 있음이 더 인정될 것이다. 제 3 자 애플리케이션(40)은 또한 자신이 청취, 예를 들어, 모든 Facebook 관련 활동들을 청취하는 활동 클래스들을 명시할 수 있다. 더욱이, 제 3 자 애플리케이션은 활동이 제 3 자 애플리케이션에 송신되어야 하는지를 결정하는 데 사용되는 와일드카드(wild-card) 표현(활동 명칭들에 적용되는)을 포함할 수 있다.The router and tracker 231 may route messages between the website and any third party applications 40 and may also track messages. It will be appreciated that third party applications 40 may also listen for messages at both the client and server. It will further be appreciated that the third party application 40 may explicitly specify one or more activities for which it listens, eg, for all “shopping cart-add item” activities. The third party application 40 may also specify activity classes to which it listens, eg, all Facebook related activities. Moreover, the third-party application may include a wild-card expression (applied to activity names) that is used to determine if the activity should be sent to the third-party application.

제 3 자 애플리케이션(40)이 활동 청취자 질의를 사용할 수 있음이 또한 인정될 것이다. 그와 같은 질의는 사용자 속성들(예를 들어, 단지 등록된 사용자들, 단지 유럽 사용자들 등), 웹 사이트 속성들 또는 구조(예를 들어, 단지 소정의 페이지 템플릿으로부터 도출되는 페이지들 상에서의 소정의 활동만을 청취), 사용자 이력(예를 들어, 단지 사용자가 과거에 총액 X를 초과하여 구매했을 경우 카트 체크아웃 활동을 청취) 등과 같은 제 3 자 애플리케이션 자체가 정상적으로 이용 할 수 없는 정보를 포함하는 추가 시스템 정보를 언급할 수 있다. 그와 같은 질의는 제 3 자 애플리케이션(40)에 의해 명시될 수 있지만, 또한 설계자에 의해 편집 가능할 수 있다.It will also be appreciated that third party applications 40 may use activity listener queries. Such a query may include user attributes (eg, registered users only, European users only, etc.), web site attributes or structure (eg, only predefined pages on pages derived from predefined page templates). ), user history (e.g., just listen to cart checkout activity if the user has purchased in excess of X in the past) containing information not normally available to third-party applications themselves, such as Additional system information may be mentioned. Such queries may be specified by the third party application 40 , but may also be editable by the designer.

그러므로 라우터 및 트랙커(231)는 또한 제 3 자 애플리케이션(40)에 의해 청취되고 있는 메시지들을 추적할 수 있다. 그와 같은 활동 청취자 질의 아키텍처는 제 3 자 애플리케이션들(40)이 고도로 프로그램화되고 사용자 커스터마이징(customizing)될 것을 요구하지 않고 웹 사이트 설계자가 맞춤화 및 사용자 정의를 수행하는 것을 가능하게 할 수 있으므로, 활동 라우팅 레벨에서 가장 양호하게 구현될 수 있음(제 3 자 애플리케이션(40) 내부에서의 API 호출에 의해 수행되는 대신)이 인정될 것이다. 라우터 및 트랙커(231)는 또한 사용자 개인정보를 보존하는 것을 도울 수 있는 데, 왜냐하면 웹 사이트 설계자는 추가 정보(라우팅 결정에 필요한)를 수반되는 제 3 자 애플리케이션들(40)에 제공할 필요가 없기 때문이다. 이는 또한 흔히 개별 서버들에 호스팅되는 제 3 자 애플리케이션들(40)과 통신하는 불필요한 호출(invocation)들을 절약할 수 있다.The router and tracker 231 can therefore also keep track of messages being listened to by the third party application 40 . Such an activity listener query architecture may enable a website designer to perform customization and customization without requiring third party applications 40 to be highly programmed and user-customized, so the activity It will be appreciated that this may best be implemented at the routing level (instead of being done by API calls inside the 3rd party application 40). The router and tracker 231 can also help preserve user privacy, since the website designer does not need to provide additional information (necessary for routing decisions) to the accompanying third party applications 40 . Because. This may also save unnecessary invocations of communicating with third party applications 40 that are often hosted on separate servers.

웹사이트를 방문하고 등록하고 웹사이트에 정보를 제공하는 것은 사용자(웹사이트 방문자)임이 인정될 것이다. 사용자는 실제로 자신이 액세스하고 있는 웹사이트가 웹사이트 구축 시스템(30), 구성요소들, 구성되는 웹사이트들 및 제 3 자 애플리케이션들(40)의 결합을 사용하여 구축되는 것을 인지할 수 없다. 그러므로, 사용자 프라이버시에 대한 책임은 궁극적으로 웹사이트 소유자에 있다(또한 자신의 웹사이트에 포함되는 제 3 자 애플리케이션들(40)에 의해 착수되는 활동들을 책임지는).It will be appreciated that it is the user (website visitor) who visits the website, registers and provides information to the website. The user is unaware that the website he is actually accessing is being built using a combination of the website building system 30 , components, configured websites and third party applications 40 . Therefore, responsibility for user privacy ultimately rests with the website owner (and also responsible for activities undertaken by third party applications 40 included in their website).

사용자 프로파일 정보는 웹사이트 구축 시스템(30)에 의해 규정되는 프라이버시 규칙들에 기초하고 웹사이트 구축 시스템(30)에 의해 제공되는 API를 통해 제 3 자 애플리케이션들(40)(및 다른 웹사이트 구축 시스템(30) 구성요소들)에 의해 액세스될 수 있음이 더 인정될 것이다. 더욱이, 포함하는 사이트뿐만 아니라 그 안에 포함되는 제 3 자 애플리케이션들(40)은 사용자와 통신하기 위하여(이메일 또는 다른 방법을 통해) 컨택 정보를 사용할 수 있다.The user profile information is based on the privacy rules defined by the website building system 30 and is provided by third party applications 40 (and other website building systems) via APIs provided by the website building system 30 . (30) components) will be further appreciated. Moreover, the containing site, as well as third party applications 40 included therein, may use the contact information to communicate (via email or otherwise) with the user.

3개의 주요한 프라이버시 관련 문제들이 있을 수 있음이 인정될 것이다. 첫번째는 웹사이트 및 웹사이트 구축 시스템(30)의 제 3 자 애플리케이션(40) 제공자와의 상호 작용이다. 웹사이트(및 웹사이트 구축 시스템(30))는 제 3 자 애플리케이션(40)이 자신의 사용자 데이터를 사용하는 것을 완전히 신뢰하지 않을 수 있는데, 예를 들어, 제 3 자 애플리케이션(40)이 대용량 메일을 보지 않거나(사이트 제공 사용자 이메일들을 사용하여), 메일을 보내지 않을 것을 요청한 사용자들에게 스팸메일을 보내지 않거나 사용자 개인 정보를 제 4 자에게 전송하지 않을 것임을 완전히 신뢰하지 않을 수 있다. 그러나, 이것은 다음의 방식들로 해소될 수 있다:It will be appreciated that there may be three major privacy-related issues. The first is the interaction of the website and the website building system 30 with the third party application 40 provider. The website (and website building system 30) may not completely trust the third-party application 40 to use its user data, for example, the third-party application 40 You may not view (using site-provided user emails), send spam mail to users who have requested not to mail, or completely trust that you will not transmit your personal information to third parties. However, this can be addressed in the following ways:

웹사이트 구축 시스템(30) 벤더는 제 3 자 애플리케이션(40) 제공자들을 웹사이트 구축 시스템(30) 애플리케이션 시장에 추가할 때 이 제공자들이 사용 조건들(Terms of Use; ToU) 합의에 서명할 것을 요구할 수 있다. 그와 같은 합의는 제 3 자 애플리케이션(40)(및 제 3 자 애플리케이션(40) 벤더)이 사용자의 정보를 오용하거나 추가로 개시하지 않을 것임을 명시한다. 웹사이트 구축 시스템(30) 벤더는 그 후에 만일 제 3 자 애플리케이션이 정보를 오용하면 제 3 자 애플리케이션 제공자에게 벌칙을 가할 수 있다(예를 들어, 제 3 자 애플리케이션(40)의 불능화, 제 3 자 애플리케이션(40)을 웹사이트 구축 시스템(30) 애플리케이션 시장에서 퇴출 등). 개인 정책 시행기들(213 및 233) 및 개인 데이터 프록시(234)는 본원 아래에서 더 상세하게 기술되는 바와 같이 제 3 자 애플리케이션들(40)에서 개인정보 보호 정책을 시행할 수 있다.A website building system 30 vendor may require third party application 40 providers to sign a Terms of Use (ToU) agreement when adding them to the website building system 30 application marketplace. can Such agreements specify that third party applications 40 (and third party application 40 vendors) will not misuse or further disclose the user's information. The website building system 30 vendor may then penalize the third party application provider if the third party application misuses the information (eg, disabling the third party application 40 , the third party exiting the application 40 from the website building system 30 application market, etc.). Privacy policy enforcers 213 and 233 and personal data proxy 234 may enforce privacy policies in third party applications 40 as described in more detail herein below.

두번째 프라이버시 관련 문제는 웹사이트 및 웹사이트 구축 시스템(30)의 사용자(사이트 방문자)와의 상호 작용이다. 웹사이트는 사용자에게 사용자 자신의 개인 데이터가 어떻게 사용되는지에 대한 명확한 이해를 제공하고, 사용자로부터 합의를 수신하고, 사용자가 합의한 사용 조건들을 준수해야 한다. 웹사이트 구축 시스템(30)은 모든 발행되는 사이트들이 사용자에게 속하는 개인 정보의 허용되는 사용을 규정하는 ToU 문서를 사용자에게 제공할 것을 요구하고 사용자는 상기 문서에 전자 서명할 것을 요청받는다. 사이트는 그 후에 이 사용 조건들 및 허용되는 사용을 준수해야만 한다. 웹사이트 구축 시스템(30)은 또한 자신이 제공하는 각 웹사이트 템플릿에 샘플 ToU 페이지를 포함할 수 있다. 개인 정책 시행기들(213 및 233)은 ToU 문서의 사용의 조건들이 지켜지는 것을 보장할 수 있다. 개인 정책 시행기들(213 및 233)은 또한 관련 데이터를 삭제하거나 재배열함으로써 허용된 정보만이 TPA에 제공되는 것을 보장할 수 있다.A second privacy-related issue is the interaction with the website and the users (site visitors) of the website building system 30 . Websites must provide users with a clear understanding of how their personal data will be used, receive agreements from users and comply with the terms of use agreed by the users. The website building system 30 requires that all published sites provide the user with a ToU document stipulating the permitted use of personal information belonging to the user, and the user is asked to electronically sign the document. The Site must then comply with these Terms of Use and any permitted use. The website building system 30 may also include a sample ToU page in each website template it provides. Personal policy enforcers 213 and 233 may ensure that the conditions of use of the ToU document are observed. Personal policy enforcers 213 and 233 may also ensure that only permitted information is provided to the TPA by deleting or rearranging the relevant data.

세번째 프라이버시 관련 문제는 구독 취소 요청(unsubscribe request)들의 지원이다. 사이트는 사용자에게 임의의 마케팅 이메일들로부터 구독 취소할 선택사양을 제공해야만 한다. 이는 본원 아래에서 더 상세하게 기술되는 데이터 및 허가 처리기(244)에 의해 처리될 수 있다.A third privacy-related issue is the support of unsubscribe requests. The site must provide the user the option to unsubscribe from any marketing emails. This may be processed by data and permission processor 244 described in more detail herein below.

데이터 및 허가 처리기(244)는 또한 본원 아래에서 더 상세하게 기술되는 바와 같이 상이한 사용자들에 의해 세팅되는 상이한 사용자 허가들을 처리할 수 있다.Data and permissions processor 244 may also handle different user permissions set by different users, as described in more detail herein below.

개인 데이터 프록시(234)는 웹사이트 구축 시스템(30)(및 웹사이트 구축 시스템(30) 내에 구축되는 웹 사이트들)이 모든 또는 일부 개인 데이터를 웹사이트 구축 시스템(30)에 의해 관리되는 안전한 리포지토리에 보관하는 것을 가능하게 할 수 있고 감춰져 있는 개인 데이터를 검색하기 위해 웹사이트 구축 시스템(30)에 의해 사용될 수 있는 대안의 고유 ID들(개인 데이터 대신)을 제 3 자 애플리케이션에 제공할 수 있다. 예를 들어, 이메일 주소는, 제 3 자 애플리케이션(40)이 실제 이메일 주소에 액세스할 수 없도록 제 3 자 애플리케이션(40)에 제공되는 대안의 "이메일 주소 ID"로 대체된다.The personal data proxy 234 allows the website building system 30 (and websites built within the website building system 30) to store all or some of the personal data in a secure repository managed by the website building system 30 . may provide alternative unique IDs (instead of personal data) to a third party application that may be stored on the web site and used by the website building system 30 to retrieve hidden personal data. For example, the email address is replaced with an alternative “email address ID” provided to the third-party application 40 so that the third-party application 40 cannot access the actual email address.

개인 데이터 프록시(234)는 또한 제 3 자 애플리케이션(40)이 실제로 사용자와 연관되는 개인 데이터에 액세스하지 않고 메시지들을 사용자에게 컨택하고/송신하기 위하여 제 3 자 애플리케이션(40)에 의해 사용될 수 있는 다양한 통신 방법들(예를 들어, 이메일, 소셜 네트워크 메시징 등)에 대한 인터페이스들의 세트를 제공할 수 있다. 그와 같은 개인 데이터는 (예를 들어) 이름, 주소, 이메일, 전화(SMS/MMS를 포함하는), 통합 통신 ID(Skype 등) 및 소셜 네트워크 ID을 포함하여, 사용자가 컨택될 수 있는 모든 식별 세부사항들을 포함할 수 있다.Personal data proxy 234 may also provide a variety of functions that may be used by third party application 40 to contact/send messages to a user without the third party application 40 actually accessing personal data associated with the user. It may provide a set of interfaces for communication methods (eg, email, social network messaging, etc.). Such personal data includes (for example) any identification with which the user may be contacted, including name, address, email, telephone (including SMS/MMS), unified communications ID (Skype, etc.) and social network ID. It may include details.

개인 데이터 프록시(234)는 그러므로 사용자 허가 필드 제한들을 시행하고, 사용자 구독 취소 요청들을 시행하고 사용자 메시지 송신을 스로틀링(throttling)하는, 예를 들어, 소정의 사이트에 대하여 작동하는 소정의 제 3 자 애플리케이션(40)에 대해 하루당 단지 100개의 이메일들만을 허용할 수 있다. 개인 데이터 프록시(234)는 프록시 파라미터들을 규정하고 제 3 자 애플리케이션에 어떤 개인 데이터를 드러낼 수 있고 어떤 것을 감출 수 있는지를-제 3 자 애플리케이션(40) 별로 - 규정할 수 있고, 이것들을 필드 하나하나에 기초하여 세팅할 수 있다.The personal data proxy 234 can therefore enforce user permission field restrictions, enforce user unsubscribe requests and throttling user message transmission, e.g., any third party operating on a given site. You may only allow 100 emails per day for the application 40 . The personal data proxy 234 may define proxy parameters and define what personal data can be exposed and hidden to third-party applications - per third-party application 40-by specifying these in one field. It can be set based on one.

웹사이트 구축 시스템(30) 서버들에 호스팅되는 제 3 자 애플리케이션들(40)의 경우, 개인 데이터 프록시(234)는 원래의 개인 데이터와 형태가 유사한 대안의 고유 ID를 제공(예를 들어, 원래의 개인 사용자 이메일 대신에 대안의 더미(dummy) 이메일을 제공)하고 나서 이 정보를 사용하고 이메일을 정확한 주소로 전송하기 위해 (이 예에서) 호출을 "캡처(capture)"할 수 있다. 이것은 또한 자신의 허가된 특권들을 초과하는 임의의 제 3 자 애플리케이션들(40)을 검출하는 데 사용될 수 있다.For third party applications 40 hosted on website building system 30 servers, personal data proxy 234 provides an alternative unique ID that is similar in shape to the original personal data (eg, the original You can "capture" the call (in this example) to use this information and send the email to the correct address. It can also be used to detect any third party applications 40 that exceed their granted privileges.

웹사이트 소유자는 제한되거나 수정된 정보를 임의의 특정한 제 3 자 애플리케이션(40)에 제공하는 것을 희망할 수 있음이 인정될 것이다. 이것은 예를 들어, 일반적인 보안 관련 문제들, 사용자의 데이터의 임의의 요소들에 관한 특정한 프라이버시 위탁 또는 특정한 산업 또는 애플리케이션에 특유한 규제 요건에 의할 수 있다. 개인 정책 시행기들(213 및 233)은 웹사이트 소유자에 의해 행해지는 임의의 그와 같은 변경들을 구현하고 현재의 세팅들을 중복 쓰기(overwrite)할 수 있다.It will be appreciated that website owners may wish to provide limited or modified information to any particular third party application 40 . This may be due to, for example, general security-related issues, specific privacy entrustment with respect to certain elements of a user's data, or regulatory requirements specific to a specific industry or application. Personal policy enforcers 213 and 233 may implement any such changes made by the website owner and overwrite current settings.

하나의 예는 의료 정보를 처리하는 웹사이트일 것이고, 이 웹사이트는 의료 정보를 일반 지리적 사용자 분포 분석 제 3 자 애플리케이션(40)에 넘겨줄 때 컨택 정보로부터 일부 개인 세부사항들을 차단하는 데 관심이 있을 수 있다. 다른 예에서, 제 3 자 애플리케이션(40)은 특정한 유형들의 컨택 정보를 처리하는 데 문제가 있을 수 있다. 제 3 자 애플리케이션(40)을 사용하는 것을 계속하고자 하는(공지되어 있는 버그에도 불구하고) 웹사이트 소유자는 공지되어 있는 문제를 일으키는 컨택들을 걸러내거나 문제를 일으키지 않도록 데이터를 수정하고자 원할 수 있다.One example would be a website that processes medical information, which website is interested in blocking some personal details from contact information when passing it on to a general geographic user distribution analysis third party application 40 . there may be In another example, the third party application 40 may have problems processing certain types of contact information. A website owner wishing to continue using the third party application 40 (despite known bugs) may wish to filter out known problematic contacts or modify the data so that it does not cause problems.

변환기 및 어댑터들(212 및 232)은 사전 명시된 메시지 변환 및 컨텐츠 적응 규칙들을 적용할 수 있다. 각각의 그와 같은 규칙은 이 규칙이 어떤 제 3 자 애플리케이션(들)(40)에 적용되는지와 같은 조건들, 이 규칙이 어떤 메시지들에 적용되어야 하는지를 선택하는 필터링 기준, 변환 규칙(소정의 메시지를 폐기하는 것과 같은(관련 제 3 자 애플리케이션(40)에 관한 한)) 또는 활동 데이터 구조에서의 소정의 필드 또는 필드들에 적용될 변환을 포함할 수 있다.Converter and adapters 212 and 232 may apply pre-specified message transformation and content adaptation rules. Each such rule includes conditions such as which third party application(s) 40 this rule applies to, filtering criteria for selecting which messages this rule should apply to, transformation rules (predetermined messages) It may include transformations to be applied to certain fields or fields in the activity data structure, such as discarding (as far as the relevant third-party application 40 is concerned) or.

이 방식에서, 허브들(210 및 230)은 활동 데이터 구조들의 상이한 버전들을 상이한 제 3 자 애플리케이션들(40)에 전달할 수 있다(또는 전혀 전달하지 않을 수 있다) - 사이트 소유자에 의해 만들어진 사양들에 따라.In this way, hubs 210 and 230 may pass different versions of activity data structures to different third-party applications 40 (or not at all) - subject to specifications made by the site owner. according to.

관련된 웹사이트 구축 시스템(30)은 또한 메시지들의 검증 및 서명을 지원하여 고장 및 침입 시도들(제 3 자 애플리케이션(40) 메시지 페이로드 데이터를 수정하는 것을 목적으로 하는 중간자 공격(man-in-the-middle attack)과 같은)에 대하여 시스템을 강화할 수 있다. 그러므로, 웹사이트 구축 시스템(30)에 등록된 각각의 제 3 자 애플리케이션(40)은 개인/공개 키들의 2개의 세트들을 가질 수 있다: 하나는 제 3 자 애플리케이션(40)으로부터 웹사이트 구축 시스템(30)으로 송신되는 메시지들을 디코딩하는 데 사용되는 키(인입 키)이고 하나는 웹사이트 구축 시스템(30)으로부터 제 3 자 애플리케이션(40)으로 송신되는 메시지들을 인코딩하는 데 사용되는 키(인출 키)이다.The relevant website building system 30 also supports verification and signing of messages to attempt man-in-the You can harden your system against (such as -middle attack). Therefore, each third party application 40 registered with the website building system 30 may have two sets of private/public keys: one from the third party application 40 to the website building system ( 30) the key used to decode messages sent to (incoming key) and one key used to encode messages sent from the website building system 30 to the third party application 40 (exit key) to be.

예를 들어, 제 3 자 애플리케이션(A)은 웹사이트 구축 시스템(30)에 메시지를 송신할 수 있다. 메시지는 사이트에 대한 제 3 자 애플리케이션 ID-제 3 자 애플리케이션 외부 ID(제 3 자 애플리케이션 범위를 가지는)-를 가지고 송신될 수 있고 이는 제 3 자 애플리케이션에 의해 서명될 수 있다. 웹사이트 구축 시스템(30)은 메시지를 수신할 수 있다. 검증기 및 서명기(235)는 제 3 자 애플리케이션(A)의 인입 키를 사용하여 서명을 검증할 수 있다. 상기 검증이 실패하면, 검증기 및 서명기(235)는 인입 메시지를 무효인 것으로 보고할 수 있고 메시지는 더 전송되지 않는다.For example, the third party application A may send a message to the website building system 30 . The message may be sent with a 3rd party application ID for the site - a 3rd party application external ID (with 3rd party application scope) - which may be signed by the 3rd party application. The website building system 30 may receive the message. The verifier and signer 235 may verify the signature using the import key of the third-party application (A). If the verification fails, the verifier and signer 235 may report the incoming message as invalid and no further messages are sent.

검증기 및 서명기(235)는 내부 사이트 ID를 가지는 메시지와 연관되는 외부 ID를 변환할 수 있다. 검증기 및 서명기(235)는 어떤 제 3 자 애플리케이션(들)(40)이 메시지를 획득해야만 하는지를 확인할 수 있다.The verifier and signer 235 may translate an external ID associated with a message having an internal site ID. The verifier and signer 235 may ascertain which third party application(s) 40 should obtain the message.

예를 들어, 각 제 3 자 애플리케이션(B1..Bn) 별로, 검증기 및 서명기(235)는 제 3 자 애플리케이션(B)의 외부 ID를 찾을 수 있다. 검증기 및 서명기(235)는 그 후에 제 3 자 애플리케이션(B)으로의 메시지를 생성하고 변환기 및 어댑터들(212/232)에 본원에서 상술한 바와 같은 임의의 적용 가능한 필터링 및 변환 규칙들을 적용할 것을 지시할 수 있다. 검증기 및 서명기(235)는 그 후에 제 3 자 애플리케이션(B)에 대한 인출 키를 가지는 메시지에 서명하고 이 메시지를 라우터 및 트랙커(231)(또는 라우터(211))를 통해 제 3 자 애플리케이션(B)에 송신할 수 있다. 제 3 자 애플리케이션(B)은 그 후에 메시지를 수신하고 서명을 검증할 수 있다. 현재의 검증이 실패하면, 메시지는 무효인 것으로 보고되고 더 프로세싱되지 않는다. 검증기 및 서명기(235)는 비밀 검증 데이터가 신뢰되지 않은 클라이언트에게 송신되지 않는 것을 보장하기 위해 단지 서버 측 프로세싱만을 수행할 수 있고 클라이언트 측 프로세싱을 수행하지 않을 수 있음이 인정될 것이다.For example, for each third-party application (B1..Bn), the verifier and signer 235 may find the external ID of the third-party application (B). The verifier and signer 235 may then generate a message to the third party application B and apply any applicable filtering and transformation rules as described hereinabove to the converter and adapters 212/232. can instruct The verifier and signer 235 then signs the message with the retrieval key to the third-party application B and sends this message through the router and tracker 231 (or router 211) to the third-party application ( B) can be sent. The third party application B can then receive the message and verify the signature. If the current verification fails, the message is reported as invalid and not further processed. It will be appreciated that verifier and signer 235 may perform only server-side processing and no client-side processing to ensure that secret verification data is not sent to untrusted clients.

본원에서 상술한 바와 같이, 시스템(200)은 웹사이트 구축 시스템(30) 및 제 3 자 애플리케이션들(40) 사이에서 다수의 유형들의 통신을 사용할 수 있다. 이 유형들은 예를 들어 제어 통신, 예를 들어, 웹사이트 구축 시스템(30)이 제 3 자 애플리케이션(40)에 셧다운(shut down)을 명령하는 것, 기능 통신, 예를 들어, 쇼핑 카트 제 3 자 애플리케이션(40)이 본 출원에서 논의되는 예인 결제 또는 활동 통신에 영향을 미치도록 웹사이트 구축 시스템(30)을 통해 과금 제 3 자 애플리케이션(40)에 총 구매량을 송신하는 것을 포함할 수 있다. 이 상이한 유형들의 통신이 예를 들어, 송신되는 메시지들의 양, 우선순위, 견고성(robustness), 응답 시간 요건들 등에 관하여 상이한 프로파일들 및 요건들을 가지는 것이 인정될 것이다.As described above herein, system 200 may use multiple types of communication between website building system 30 and third party applications 40 . These types include, for example, control communication, eg, the website building system 30 instructing a third-party application 40 to shut down, functional communication, eg, a shopping cart third sending the total purchase amount to the billing third-party application 40 via the website building system 30 such that the third-party application 40 influences a payment or activity communication, an example discussed herein. It will be appreciated that these different types of communication have different profiles and requirements with respect to, for example, quantity, priority, robustness, response time requirements, etc. of messages transmitted.

특히, 시스템(200)은 매우 빈번한(예를 들어, 제 3 자 애플리케이션(40) 그래픽 사용자 인터페이스(graphical user interface; GUI) 이벤트들이 보고되는 제 3 자 애플리케이션(40) 활동들로 개조되는 경우) 활동 리포트들을 포함할 수 있다. 그와 같은 많은 활동 리포트들은 더 많은 크리티컬 메시지(critical message)들을 처리하는 시스템의 부분들을 압도할 수 있다. 그러므로, 시스템(200)은 메시지들의 각각의 클래스가 별개의 채널을 통해 송신되도록 다수의 통신 채널들을 구현할 수 있다(예를 들어, 상이한 포트들, 다수의 동시 세션들 등을 사용하여). 이 방식에서, 활동 리포팅은 부 채널(side channel)을 사용하고 명령 및 기능 통신과 병렬이지만 이 명령 및 기능 통신을 방해하지 않는다.In particular, the system 200 is responsible for very frequent (eg, when third party application 40 graphical user interface (GUI) events are retrofitted to reported third party application 40 activities). Reports may be included. Such many activity reports can overwhelm parts of the system that process more critical messages. Thus, system 200 may implement multiple communication channels (eg, using different ports, multiple concurrent sessions, etc.) such that each class of messages is transmitted on a separate channel. In this way, activity reporting uses a side channel and parallels command and function communication, but does not interfere with this command and function communication.

본원에서 상술한 바와 같이, 시스템(200)은 컨택 조정기(240) 및 활동 조정기(250)를 통해 컨택 정보를 생성하고 강화할 뿐만 아니라 특정한 컨택과 연관되는 활동 이벤트들을 분석하기 위하여 활동 정보를 수집할 수 있다. 허브들(210 및 230)을 통해 라우팅되는 각 활동 메시지별로, 컨택 조정기(240) 및 활동 조정기(250)는 정보를 프로세싱할 수 있다. 스트림 생성기(251)는 활동 메시지들로부터 컨택 특정 데이터 스트림들을 생성할 수 있고 컨택 조정기(240)의 요소들은 데이터를 추출하고 이것을 컨택 데이터베이스(245) 상에 저장하기 전에 이것을 프로세싱할 수 있다.As described hereinabove, system 200 may collect activity information to analyze activity events associated with a particular contact, as well as to generate and enrich contact information via contact coordinator 240 and activity coordinator 250 . have. For each activity message routed through hubs 210 and 230 , contact coordinator 240 and activity coordinator 250 may process the information. Stream generator 251 may generate contact specific data streams from activity messages and elements of contact coordinator 240 may process the data before extracting and storing it on contacts database 245 .

그러므로 각각의 활동 스트림은 자신과 연관되고 데이터 스트림 하에서 수행되는 활동들로부터 추출되는 데이터에 의해 점차 강화될 수 있는 구성 컨택을 가질 수 있다. 컨택 조정기(240)는 또한 관련 컨택들의 존재- 동일한 사람을 기술하는 것으로 발견되는 다수의 컨택 기록들-를 인식할 수 있음이 인정될 것이다. 컨택 식별기(272)는 이메일, 전화번호, 사회 보장 번호, 페이스북 ID 등과 같은 1차 ID 필드를 정합함으로써 그와 같은 기록들을 인식할 수 있다. 일부 1차 ID 필드들은 다중 값 필드들이고(예를 들어, 한 사람은 다수의 식별 이메일을 가질 수 있다) 반면에 일부는 전적으로 단일한 값 필드들(예를 들어, 사회 보장 번호)인 것이 인정될 것이다.Thus, each activity stream may have a constituent contact associated with it and may be progressively enhanced by data extracted from activities performed under the data stream. It will be appreciated that contact coordinator 240 may also be aware of the existence of related contacts - multiple contact records found describing the same person. Contact identifier 272 may recognize such records by matching primary ID fields, such as email, phone number, social security number, Facebook ID, and the like. It will be appreciated that some primary ID fields are multi-valued fields (eg, a person may have multiple identifying emails), while some are entirely single-valued fields (eg, social security number). will be.

그러므로 데이터 병합기(243)는 새로운 활동으로부터 추출되는 컨택 필드들을 현재의 구성 컨택에 병합할 수 있고 일단 익명의 사용자가 로그인 동작을 수행했고 식별된 사용자가 되었으면 자체의 웹사이트의 사용 중에 이 익명의 사용자에 대하여 구성되는 구성 컨택을 미리 규정된 저장된 컨택에 병합할 수 있다(이것은 "수직" 병합으로 공지될 수 있다). 수평 컨택 병합기(277)는 또한 자신이 동일한 사용자를 언급하는 관련된 컨택들이 있음을 검출하면 2개의 상이한 컨택들(구성 컨택 또는 저장 컨택들)의 "수평" 병합을 수행할 수 있다. 본원에서 상술한 바와 같이, 그와 같은 병합은 실제 병합(즉, 2개의 별개의 컨택들을 단일 컨택으로 전환)하거나, 하나의 컨택을 다른 컨택에 병합하거나 또는 가상 병합을 통해(즉, 2개의 컨택들을 별개의 컨택들로 유지하지만 이것들이 동일한 사용자를 표현하는 것으로 표기되도록 이것들을 서로 링크시킨다 - 실제 컨택 정보 및 활동 스트림들을 병합하거나 병합하지 않고) 수행될 수 있다. 심지어 가상의 병합에서도 더 추가되는 정보가 다수의 링크된 가상 병합 컨택들에 추가될 수 있음이 또한 인정될 것이다.The data merger 243 can therefore merge the contact fields extracted from the new activity into the currently configured contact and once the anonymous user has performed a login operation and has become an identified user, this anonymous user can be used during use of its website. A configuration contact that is configured for a user may be merged into a predefined stored contact (this may be known as a “vertical” merge). Horizontal contact merger 277 may also perform a “horizontal” merging of two different contacts (either configuration contact or store contacts) if it detects that there are related contacts that refer to the same user. As discussed hereinabove, such merging can be accomplished through physical merging (ie, converting two separate contacts into a single contact), merging one contact into another, or via virtual merging (ie, two contacts). keeping the contacts as separate contacts but linking them together so that they are marked as representing the same user (with or without merging the actual contact information and activity streams). It will also be appreciated that further added information can be added to multiple linked virtual merge contacts, even in a virtual merge.

그러므로, 데이터 추출기(241)는 관련 데이터 활동 구조로부터 컨택형 정보를 추출할 수 있고 데이터 병합기(243)는 컨택형 정보를 활동 스트림들과 연관되는 컨택에(익명 또는 식별된) 통합할 수 있다. 컨택형 정보(I)가 1차 ID 필드를 포함하면, 데이터 병합기(243)는 1차 ID 필드 값에 기초하여 관련 컨택들에 대해 체크할 수 있고, 만일 발견되면, 이 컨택들을 병합할 수 있다. 데이터 병합기(243)는 또한 활동이 사이트에서 사용자의 신원을 설정하는지를 체크할 수 있고(예를 들어, 사이트 로그인 활동) 만일 그렇다면, 익명의 컨택을 사용자에 대하여 저장되어 있는 기존의 컨택 기록과 병합하고, 이를 이제부터 식별된 컨택으로 만들 수 있다.Therefore, data extractor 241 may extract contact-type information from the relevant data activity structure and data merger 243 may incorporate contact-type information into a contact (anonymous or identified) associated with the activity streams. . If the contact type information I includes a primary ID field, the data merger 243 may check for related contacts based on the primary ID field value and, if found, merge these contacts. have. Data merger 243 may also check if the activity establishes the identity of the user on the site (eg, site login activity) and, if so, merges the anonymous contact with an existing contact record stored for the user. and make it an identified contact from now on.

컨택 식별기(272)는 예를 들어, 단일 익명의 사용자(사이트에 로그인하지 않았던)에 의한 세션을 추적하기 위하여 쿠키를 사용하거나, 등록된 사용자들에 대한 사이트 로그인을 사용하거나, 자신의 계정이 소셜 네트워크와 연관되는 사이트 사용자들에 대한 소셜 로그인을 통하거나 또는 동일한 사용자를 기술하는 2개의 사용자 프로파일들을 식별하기 위하여 1차 ID 필드들(이메일/전화와 같은)을 정합시킴으로써 사이트 사용자들을 식별하는 다수의 방법들을 구현할 수 있음이 인정될 것이다.Contact identifier 272 may, for example, use cookies to track sessions by a single anonymous user (who has not logged into the site), use site logins for registered users, or if their account is social Multiple identification of site users either through social login for site users associated with the network or by matching primary ID fields (such as email/phone) to identify two user profiles that describe the same user. It will be appreciated that methods may be implemented.

자신의 세부사항들이 컨택 데이터베이스(245)에 저장되어 있는 사이트 사용자들이 사이트에 등록하지 않은 익명의 사용자들; 등록된 사용자들 및 잠재적 사용자들-아직 공식적으로 사이트에 등록되지 않은 잠재적 사용자들의 기록들(외부 소스들로부터 임포팅(importing)된)-로서 분류될 수 있음이 더 인정될 것이다.anonymous users whose details are stored in the contact database 245 are not registered with the site; It will be further appreciated that registered users and potential users may be classified as records (imported from external sources) of potential users who have not yet been officially registered with the site.

관련 웹사이트는 세션에서 세션으로 지속되는 영구적 쿠키들을 설치할 수 있으므로, 동일한 컴퓨터 상에서 동일한 브라우저로 실행될 수 있는 다수의 익명의 세션들은 정보를 동일한 컨택 기록에 공여하는 것을 계속할 수 있다. 그러므로, 심지어 익명의 사용자라도 상당한 컨택스트 및 컨택 정보를 가질 수 있다.Since the relevant website may install persistent cookies that persist from session to session, multiple anonymous sessions that may run in the same browser on the same computer may continue to contribute information to the same contact history. Therefore, even an anonymous user can have significant context and contact information.

등록된 사용자들은 특정 사이트에 고유한 ID를 제공해야만 한다. 별개의 사이트 특정 ID(예를 들어, 사용자이름), 이메일, 전화번호 또는 사회 보장 번호와 같은 외부 식별자 또는 소셜 네트워크 ID, 구글 ID, OpenID 식별과 같이 상이한 시스템에 의해 제공되는 외부 식별자 등과 같이, 다수의 ID의 유형들이 사용될 수 있다.Registered users must provide a unique ID for a particular site. multiple, such as separate site-specific IDs (eg usernames), external identifiers such as email, phone numbers or social security numbers, or external identifiers provided by different systems, such as social network IDs, Google IDs, OpenID identifications, etc. The types of IDs of may be used.

소셜 네트워크 로그인을 통하여 등록한 사용자는 사이트가 동일한 사용자의 사이트 프로파일을 채우기 위해 소셜 네트워크 내에서 이용 가능한 개인 정보를 사용하는 것을 가능하게 할 수 있다. 데이터 추출기(241)는 또한 이 개인 정보에 대한 임의으 변경을 검출하고, 가능하면 사이트 사용자 프로파일을 업데이트하기 위하여 소셜 네트워크 프로파일을 재방문할 수 있다.A user who registers through a social network login may enable the site to use personal information available within the social network to populate the site profile of the same user. Data extractor 241 may also detect any changes to this personal information and revisit the social network profile, possibly to update the site user profile.

등록된 사용자는 시스템이 "본 시스템에 접속을 유지할 것" 선택사양을 제공할지라도, 일반적으로 자신의 신원을 설정하기 위해 시스템 내에 로그인해야 한다. 그와 같은 로그인 절차는 명시적일 수 있거나-사용자가 로그인 다이얼로그를 호출하는- 암시적일 수 있거나-사용자가 예를 들어, 토크백을 블로그에 추가할 때 어떤 식별 세부사항들을 제공할 필요가 있는-, 또는 외부 로그인 기반일 수 있다-시스템이 소셜 네트워크 로그인 또는 OpenID 로그인과 같이, 상이한 시스템과 연관되는 로그인 절차를 호출한다-. 로그인 절차는 또한 물리적 디바이스(예를 들어, 시스템에 직접 또는 무선 인터페이스를 통해 접속되는 보안 토큰(security token))를 통해 또는 생물 측정 정보 사용을 통해(사용자의 생물 측정 파라미터들, 예를 들어, 지문 또는 홍채 스캔뿐만 아니라 타이핑 패턴 검출과 같은 사용자의 행동 검출 모두를 포함하는) 또는 상술한 방법들의 임의의 결합을 통해 영향을 받을 수 있다.Registered users typically must log into the system to establish their identity, although the system offers the option to "keep access to this system". Such a login procedure may be explicit - in which the user invokes a login dialog - may be implicit - in which the user needs to provide some identifying details, for example when adding a talkback to a blog - or It may be external login based - the system invokes a login procedure associated with a different system, such as a social network login or OpenID login. The login procedure may also be via a physical device (eg, a security token connected directly to the system or via a wireless interface) or through the use of biometric information (the user's biometric parameters, eg, fingerprint). or both (including both iris scans as well as detection of a user's behavior such as typing pattern detection) or any combination of the methods described above.

소셜 로그인 절차는 양 방향 모두로의 정규 로그인과 상호 작용할 수 있음이 또한 인정될 것이다. 예를 들어, 소셜 ID는 소셜 로그인이 사이트 로그인을 함축하도록 사이트 회원 ID와 연관될 수 있거나 또는 사이트 회원 ID는 사이트 로그인이 사용자를 하나 이상의 소셜 네트워크들에 또한 식별할 수 있도록 하나 이상의 소셜 네트워크 ID들과 연관될 수 있다.It will also be appreciated that a social login procedure may interact with a regular login in both directions. For example, a social ID may be associated with a site member ID such that a social login implies a site login or the site member ID may be associated with one or more social network IDs such that the site login may also identify the user to one or more social networks. may be related to

사용자가 명시적인 로그아웃을 수행할 때, 컨택 처리기(242)는 새로운 익명의 사용자 쿠키를 발생시키고 그러므로 자신의 활동들이 이 새로운 익명의 컨택 하에서 저장될 새로운 익명의 세션(또는 세션 시리즈)를 개방할 수 있다. 이 새로운 익명의 컨택은 가능하면 추가 로그인 시에 이후 식별되는 컨택과 병합될 수 있다.When the user performs an explicit logout, the contact handler 242 generates a new anonymous user cookie and therefore opens a new anonymous session (or series of sessions) in which his activities will be stored under this new anonymous contact. can This new anonymous contact can possibly be merged with a later identified contact on further logins.

이제 익명의 사용자의 로그인 및 로그아웃 프로세스를 도시하는 도 19가 참조된다. 사용자는 시스템을 익명으로 사용하기 시작할 수 있다. 컨택 처리기(242)는 컨택을 생성할 수 있고 스트림 생성기(251)는 사용자가 1차 제 3 자 애플리케이션 행위(act1)를 수행할 때 활동 스트림(anon 1)을 자동으로 생성할 수 있다. 스트림 병합기(252)는 act1으로부터의 정보 및 다음의 활동들(act2 및 act3)으로부터의 정보를 사용자 anon1에 병합할 수 있다.Reference is now made to FIG. 19 , which illustrates the login and logout process of an anonymous user. Users can start using the system anonymously. Contact handler 242 may create a contact and stream generator 251 may automatically generate an activity stream (anon 1) when a user performs a primary third-party application action (act1). Stream merger 252 may merge information from act1 and information from the following activities (act2 and act3) into user anon1.

일단 동일한 사용자가 사용자 X로서 로그인을 수행했으면, 데이터 병합기(243)는 anon1 컨택(및 활동 스트림으로부터 검색되는 임의의 다른 관련 컨택 데이터)을 사용자 X의 컨택 정보에 병합할 수 있다. 스트림 병합기(252)는 또한 추가 행위들(act4 및 act5)로부터 추출되는 정보를 단일 스트림에 병합할 수 있고 데이터 추출기(241)는 그 후에 사용자 X의 컨택 정보를 추출할 수 있음이 인정될 것이다. 사용자 X가 로그아웃을 수행하면, 컨택 처리기(242)는 새로운 쿠키를 생성하고, 추가 활동들을 사용자 X로부터 분리할 수 있다. 그러므로, 새로운 활동(act6)이 수행되면, 컨택 처리기(242)는 새로운 익명의 컨택 anon2을 생성할 수 있고 데이터 추출기(241)는 이의 추출된 컨택 세부사항들(및 활동들)을 새로 생성되는 익명의 컨택 anon2 하에 저장할 수 있다.Once the same user has logged in as user X, data merger 243 may merge the anon1 contact (and any other relevant contact data retrieved from the activity stream) into user X's contact information. It will be appreciated that stream merger 252 may also merge information extracted from additional actions act4 and act5 into a single stream and data extractor 241 may then extract user X's contact information. . If user X logs out, contact handler 242 may create a new cookie and isolate further activities from user X. Therefore, when a new activity (act6) is performed, contact handler 242 may create a new anonymous contact anon2 and data extractor 241 may generate its extracted contact details (and activities) into the newly created anonymous contact anon2. It can be stored under the contact of anon2.

(시나리오 A에서와 같이) 사용자 anon2가 사용자 Y로서 2번째 로그인을 수행하면, 데이터 병합기(243)는 사용자 anon2에 대한 컨택 정보(act6 및 act7에 의해 업데이트된 바에 따른)를 임의의 추가 활동과 함께 사용자 X에 대한 컨택 세부사항들(act1 내지 act5를 반영하기 위해 이미 업데이트된)에 병합할 수 있다.When user anon2 performs a second login as user Y (as in scenario A), data merger 243 converts the contact information for user anon2 (as updated by act6 and act7) with any further activity. Together we can merge the contact details for user X (already updated to reflect act1 through act5).

활동들과 연관되는 활동 데이터 구조가 또한 컨택 세부사항들을 포함할 수 있음이 인정될 것이다. 데이터 추출기(241)는 이 정보를 추출하고 이를 데이터 병합기(243)로 전송할 수 있고 데이터 병합기(243)는 이 정보를 컨택 데이터베이스(245) 내의 기존 컨택 정보와 통합하여 가능하면 이를 강화시킬 수 있다. 데이터 추출기(241)는 본원 아래에서 더 상세하게 서술되는 바와 같이 특정한 활동 메시지들로부터, 전체 스트림들로부터, 다른 컨택들로부터 또는 지리적 주소 변환 서비스들로의 IP와 같은 외부 소스로부터 세부사항들을 추출할 수 있음이 더 인정될 것이다. 본원에서 상술한 바와 같이, 컨택 데이터베이스(245) 내의 컨택들은 또한 사용자에 의해 등록 또는 가입 프로세스의 일부로서 웹사이트에 명시적으로 제공되거나, 웹사이트에 가입할 때(소셜 로그인/등록 특징을 통해) 사용자에 의해 사용되는 소셜 네트워킹 계정으로부터 추출되거나 또는 자신의 사용자 프로파일을 업데이트할 때 사용자에 의해 제공되는 컨택 세부사항들을 포함할 수 있다. 데이터 추출기(241)는 또한 외부 소스로부터 컨택 정보를 검색할 수 있다(예를 들어, 사용자가 단지 US 집 코드(zip code)만을 명시할 때, 그리고 이것이 웹 서비스를 디코딩하는 외부 집 코드로부터 전체 주소 정보를 검색하기 위해서 사이트에 의해 사용될 때).It will be appreciated that an activity data structure associated with activities may also include contact details. Data extractor 241 may extract this information and send it to data merger 243, which may incorporate this information with existing contact information in contact database 245 and possibly enrich it. have. Data extractor 241 may extract details from specific activity messages, from full streams, from other contacts or from an external source, such as IP to geographic address translation services, as described in more detail herein below. It will be further acknowledged that As discussed hereinabove, contacts in contact database 245 may also be provided explicitly by a user to a website as part of a registration or signup process, or when subscribing to a website (via a social login/registration feature). may include contact details extracted from a social networking account used by the user or provided by the user when updating his or her user profile. Data extractor 241 may also retrieve contact information from an external source (eg, when the user specifies only a US zip code, and the full address from the external zip code it decodes the web service from). when used by the site to retrieve information).

본원에서 상술한 바와 같이, 컨택 식별기(272)는 사용자 이름, 이메일 또는 전화번호와 같은 주 ID 필드에 기초하여 2개의 컨택들을 관련되는 것으로 인식할 수 있다. 일단 컨택들(A(새 것) 및 B(기존의 것))이 관련되어 있는 것으로 밝혀지면, 데이터 병합기(243)는 A를 B에 병합할 수 있다(B는 마스터(master)이다). 이것은 다음과 같이 필드 병합 규칙들을 사용하여 행해진다:As described above herein, contact identifier 272 may recognize two contacts as related based on a primary ID field, such as a user name, email, or phone number. Once the contacts (A (new) and B (old)) are found to be related, data merger 243 can merge A into B (B is master). This is done using field merging rules as follows:

B1 = B or A("B∥A"에서와 같은); B를 취하고 B가 0이거나 비어 있으면 A를 취함;B1 = B or A (as in "B|A"); Take B and take A if B is 0 or empty;

B1 = math-func(A, B); 중요한 개인적인 경우들은:B1 = math-func(A, B); Important personal cases are:

B1 = A + B; 예를 들어, 방문수, 총 구매들;B1 = A + B; eg visits, total purchases;

B1 = min(A, B); 예를 들어 - 사이트 가입 일자;B1 = min(A, B); For example - the date of joining the site;

B1 = max(A, B); 예를 들어, 최종 활동 일자;B1 = max(A, B); For example, date of last activity;

B1 = list-unite(B, A); B 끝에 목록 A를 연결하고, B 내의 요소들에 대해 중복할 수 있는 A 내의 요소들을 제거한다(즉, B1 = B & (A-B)). 데이터 병합기(243)는 다음의 규칙들에 따라 목록 회원들 사이의 복제들을 결정할 수 있다:B1 = list-unit(B, A); Concatenate list A at the end of B, and remove elements in A that may be duplicates for elements in B (ie, B1 = B & (A-B)). Data merger 243 may determine replicas between list members according to the following rules:

정규 값(regular value)들(즉, 스칼라들)로 구성되는 목록들에 대하여, 정규 값 비교를 사용;For lists made up of regular values (ie, scalars), use regular value comparison;

구조들로 구성되는 목록들에 대하여, 구조의 특정한 하위 필드를 비교 키로서 사용. 예를 들어, 다수의 주소들을 지원하는 웹사이트 구축 시스템(30)에서의 주소 유형(가정, 사업, 배달,...);For lists made up of structures, using a specific subfield of the structure as a comparison key. For example, an address type (home, business, delivery,...) in the website building system 30 that supports multiple addresses;

정규화된 값 비교. (예를 들어) 아래 전화번호들의 처리를 참조할 것:Normalized value comparison. See (for example) the handling of phone numbers below:

구조 A가 구조 B의 더 상세화된 버전이면 A를 B에 통합(본원 아래에서 더 상세하게 기술) 그리고If structure A is a more detailed version of structure B, then incorporate A into B (described in more detail below herein) and

상위의 확실성 점수(certainty score)- 값은 자신에게 부여되는 확실성 점수를 가질 수 있다(예를 들어, 사용자에 의해 직접 제공되는 정보 대 사용자에 대하여 추론되는 정보에 대한 상이한 확실성 점수를 가지는). 데이터 병합기(243)는 상위의 확실성 점수를 가지는 값을 선택할 수 있다.Higher certainty score—a value may have a certainty score assigned to it (eg, having a different certainty score for information provided directly by the user versus information inferred about the user). The data merger 243 may select the value with the higher certainty score.

일부 필드 유형들이 정규화된 포맷을 가지는 것이 인정될 것이다. 예를 들어, 전화번호들은 정규화된 US 포맷(예를 들어, (999)555-1234) 또는 국제 포맷(예를 들어, +1-999-555-1234)으로 정규화될 수 있다. 데이터 병합기(243)는 1차 컨택 키들(전화번호와 같은)을 비교할 때 그리고 병합된 목록들에서 복제들을 체크할 때와 같이, 비교를 위해 필드 값을 정규화된 포맷으로 전환할 수 있다.It will be appreciated that some field types have a normalized format. For example, phone numbers can be normalized to a normalized US format (eg, (999)555-1234) or an international format (eg, +1-999-555-1234). Data merger 243 may convert the field value into a normalized format for comparison, such as when comparing primary contact keys (such as a phone number) and when checking for duplicates in merged lists.

데이터 병합기(243)는 동일한 기저의 구조를 가지는 2개의 구조화된 값들을 비교할 수 있다-예를 들어, 다수의 하위 필드들(국가, 주, 집 코드, 거리, 번호 등)로 구성되는 주소 값. X에서 비어 있지 않은 필드들의 각각이 Y에 있는 동일한 필드의 각각과 동일한 값을 가지면, 즉 Y가 X의 모든 비어있지 않은 필드 값들을 포함하고 그리고 가능하면 일부 추가 필드 값들을 포함하면, 구조 Y는 구조 X의 상세화된 버전이다. 그러므로 데이터 병합기(243)는 A가 B의 상세화된 버전이고 A가 B와 동일하지 않으면 A를 B에 통합할 수 있다.Data merger 243 can compare two structured values having the same underlying structure - for example, an address value consisting of multiple subfields (country, state, house code, street, number, etc.) . If each of the non-empty fields in X has the same value as each of the same field in Y, i.e. Y contains all non-empty field values of X and possibly some additional field values, then structure Y is A detailed version of Structure X. Therefore, data merger 243 may merge A into B if A is a detailed version of B and A is not the same as B.

데이터 추출기(241)가 활동이 기원했던 IP 주소로부터 컨택 주소를 추론할 수 있음이 인정될 것이다. 이것은 활동이 브라우저 세션으로부터 도달했고 사용자가 주소를 가지고 있지 않은 경우에만 사용된다. 그러므로 데이터 추출기(241)는 IP 주소의 지리적 정보에 따라 주/국가 정보를 추출할 수 있다. 이 경우에, 주소는 "추정된 지리적 IP 주소"로서 표기된다. 이것은 향후의 주소 병합을 방해-주소 필드가 IP 매핑(mapping)에 기초하여 기존(및 아마도 부정확한) 주소를 포함하고, 이는 컨택 데이터베이스(245)에 저장될 이후의 상세한(그러나 기본적으로 상이한) 주소를 방해할 수 있으므로-하지 않게 하는데 필요하다.It will be appreciated that the data extractor 241 may infer the contact address from the IP address from which the activity originated. This is only used if the activity arrived from a browser session and the user does not have an address. Therefore, the data extractor 241 may extract state/country information according to the geographic information of the IP address. In this case, the address is denoted as an "estimated geographic IP address". This prevents future address merging - the address field contains an existing (and possibly incorrect) address based on the IP mapping, which will be stored in the contact database 245 with a detailed (but fundamentally different) address It may interfere with - so it is necessary to prevent it from doing so.

데이터 병합기(243)는 또한 병합된 목록들에 대한 태그 충돌을 처리할 수 있다. 목록들을 병합하는 경우에, 2개의 실체들, 즉, 컨택 A로부터의 실체, 상이하나 동일한 태그를 가지는 컨택 B로부터의 두번째 실체가 존재하는 상황에 처하는 것이 가능하다는 것이 인정될 것이다. 이 시나리오에서, 데이터 병합기(243)는 동일한 태그를 가지는 양 실체들을 목록 내로 불러들임으로써 목록을 병합할 수 있다.Data merger 243 may also handle tag conflicts for merged lists. It will be appreciated that, in the case of merging lists, it is possible to run into a situation where two entities exist: an entity from contact A, and a second entity from contact B, which has a different but identical tag. In this scenario, data merger 243 may merge the list by loading both entities with the same tag into the list.

그러므로 [{태그:"가정", 이메일:"a@b.com"}] + [{태그:"가정", 이메일:"c@d.com"}] 결합은 [{태그:"가정", 이메일:"a@b.com"},{tag:"가정", 이메일:"c@d.com"}]을 생성할 수 있다. 이것은 병합되는 필드들이 "허용되는 비 고유 목록 태그들"로서 표기되는 경우에 사용될 것이다.So, the combination [{tag:"home", email:"a@b.com"}] + [{tag:"home", email:"c@d.com"}] would be [{tag:"home", You can create email:"a@b.com"},{tag:"home", email:"c@d.com"}]. This will be used if the fields being merged are marked as "Non-unique list tags allowed".

데이터 병합기(243)는 또한 컨택 정보를 통합하려고 시도할 때 언어, 구문 또는 다른 텍스트 분석 방법뿐만 아니라 외부 데이터 소스들 또는 서비스들에 대한 참고를 사용할 수 있다. 예를 들어, 사용자는 자신의 집주소 거리 명을 2개의 활동 기록들에 2개의 상이한 방식들로-그러나 동일한 집 전화번호, 도시 및 집 코드로 명시되는- 기재했었을 수 있다. 통합기(273)는 2개의 엔트리들을 비교할 때 텍스트 분석(예를 들어, 사운덱스 알고리즘(soundex algorithm))을 적용할 수 있고, 또한 거리명의 2개의 버전들을 소정의 도시 및 집 코드에 대한 거리 명들의 외부 소스와 비교할 수 있다. 이와 같은 경우에, 통합기(273)는 양 주소들이 정통 거리 명과 유사하고(그러나 아마도 동일하지 않은) 모든 다른 주소 데이터 필드들이 적절한 값을 가지면 이 정통 거리 명을 선택할 수 있다.Data merger 243 may also use references to external data sources or services as well as language, syntax, or other text analysis methods when attempting to consolidate contact information. For example, a user may have entered his home address street name in two activity records in two different ways—but specified with the same home phone number, city and house code. The aggregator 273 may apply text analysis (eg, a soundex algorithm) when comparing the two entries, and also convert the two versions of the street name to a street name for a given city and zip code. can be compared with external sources of In such a case, aggregator 273 may select this orthodox street name if both addresses are similar (but probably not identical) and all other address data fields have appropriate values.

데이터 병합기(243)는 또한 로그인/세션 정보에 따라 컨택 정보를 병합할 수 있다. 사용자는 로그인 또는 등록을 수행하지 않고 사이트를 사용하고, 세션을 시작하고, 일부 활동들을 이 세션의 일부 및 이후의 등록 또는 로그인으로서 수행-그러므로 세션을 새로 생성되거나 기존의 등록된 사용자 프로파일(컨택 정보를 포함하는)과 연관시키는-할 수 있다.Data merger 243 may also merge contact information according to login/session information. A user can use the site without performing a login or registration, start a session, and perform some activities as part of and subsequent registration or login of this session - thus creating a session with a new or existing registered user profile (contact information can be associated with).

일단 사용자가 세션을 시작하면(익명으로서), 컨택 식별기(272)는 세션 동안 사용자를 추적할 수 있고(쿠키들, 세션 ID 등을 사용하여) 컨택 처리기(242)는 익명의 세션 동안 사용자에 의해 수행되는 활동들에 기초하여 특정한 익명의 사용자에 대한 구성 컨택을 생성할 수 있다. 라우터 및 트랙커(231)는 또한 동일한 컴퓨터로부터의 다수의 세션들에 걸쳐 익명의 사용자를 추적하는 것을 계속할 수 있다. 이것은 지속성 쿠키(persistent cookie)(세션 쿠키(session cookie)보다는 오히려)를 사용함으로써 행해질 수 있다.Once the user initiates a session (as anonymous), the contact identifier 272 can track the user during the session (using cookies, session ID, etc.) and the contact handler 242 can be used by the user during the anonymous session. A configuration contact may be created for a particular anonymous user based on the activities performed. The router and tracker 231 may also continue to track the anonymous user across multiple sessions from the same computer. This can be done by using a persistent cookie (rather than a session cookie).

사용자가 등록하면, 데이터 병합기(243)는 초기에 사용자 프로파일을 채우기 위하여 구성 컨택 정보를 사용할 수 있다. 사용자들이 로그인하면, 데이터 병합기(243)는 구성 컨택 정보를 초기에 기존 사용자 프로파일과 통합할 수 있다. 구성 컨택 정보는 데이터 병합기(243)가 병합을 위해 구성 컨택에서 사용하기 위한 임의의 다른 1차 ID(이메일 등)를 가지고 있지 않을 수 있으므로, 사용자의 사이트 ID에 따라 병합되는 것이 인정될 것이다. 임의의 그와 같은 병합은 수집된 정보에서의 불일치들을 노출할 수 있음이 또한 인정될 것이다. 익명의 구성 컨택을 기존 프로파일 데이터와 병합할 때, 불일치들이 발생할 수 있고 불가피할 수 있다. 예를 들어, 익명의 사용자는 John Smith의 명 하에서 데이터 폼(어떤 제 3 자 애플리케이션(40)에 의해 디스플레이되는)을 채우고 나서 그 후에 이름 Jane Doe 하에서 계정 내로 로그인한다(동일한 또는 별개의 브라우저 세션들을 사용하여). (예를 들어) 이후의 로그인이 동일한 컴퓨터를 사용하는 2번째 사람에 의해 실제로 행해졌거나 또는 사용자가 자신의 프라이버시를 보호하기 위해 컨택 폼 내에 가명을 사용한 것이 가능하다. 데이터 병합기(243)가 다수의 익명의 구성 컨택들을 병합할 때에도 동일한 것이 적용될 수 있다.When a user registers, data merger 243 may initially use the configuration contact information to populate the user profile. Once users log in, data merger 243 may initially integrate the configuration contact information with the existing user profile. The configuration contact information will be merged according to the user's site ID, as the data merger 243 may not have any other primary ID (such as email) for use in the configuration contact for merging. It will also be appreciated that any such merging may expose inconsistencies in the collected information. When merging anonymous configuration contacts with existing profile data, inconsistencies may arise and may be unavoidable. For example, an anonymous user fills out a data form (displayed by some third party application 40) under the command of John Smith and then logs into an account under the name Jane Doe (either the same or separate browser sessions). using). It is possible (for example) that subsequent logins were actually done by a second person using the same computer, or that the user used a pseudonym in the contact form to protect his or her privacy. The same may apply when data merger 243 merges multiple anonymous constituent contacts.

불일치 해소기(264)는 대부분의 필드들이(이메일 및 전화와 같은 1차 키 필드들을 포함하는) 다수의 값들을 포함할 수 있는 목록 필드들이므로, 전형적으로 불일치들을 자동으로 처리할 수 있다. 이것은 동일한 기저의 사이트의 다수의 사용들에만 적용될 수 있다. 해소될 수 없는(예를 들어, 다수의 값들을 목록 값에 병합함으로써) 임의의 그와 같은 불일치는 사이트 소유자에 의한, 최종 사용자(어떤 값을 사용할지를 결정할 수 있는)에 의한 또는 다른 기술들을 사용한 가능한 수동 처리를 위하여 플래깅(flagging)될 수 있다.The inconsistency resolver 264 can typically handle inconsistencies automatically, as most fields are list fields that can contain multiple values (including primary key fields such as email and phone). This may only apply to multiple uses of the same underlying site. Any such discrepancy that cannot be resolved (eg, by merging multiple values into a list value) may be resolved by the site owner, by the end user (who can decide which value to use), or using other techniques. It can be flagged for possible manual handling.

그러므로, 구성 컨택 정보는 단일 사람을 반영할 뿐만 아니라 동일한 컴퓨터를 통해 동일한 사이트에 액세스하는 사용자의 결합 세트를 반영할 수 있는 것이 가능하다.Therefore, it is possible that the configuration contact information may reflect a single person as well as a combined set of users accessing the same site via the same computer.

본원에서 상술한 바와 같이, 데이터 병합기(243)는 전형적으로 컨택들이 생성되거나 수정될 때마다 1차 ID 필드들(이메일 및 전화번호들과 같은)에 따라 컨택들을 병합한다.As discussed hereinabove, data merger 243 typically merges contacts according to primary ID fields (such as email and phone numbers) whenever contacts are created or modified.

입력은 하나 이상의 값들을 가지는 하나 이상의 1차 ID 필드(들)를 가지는 컨택 기록(입력 컨택(C))(예를 들어, 2개의 이메일들 및 3개의 전화번호들이 있는 컨택 기록)이다. 다수의 1차 ID 필드들은 사용자가 (예를 들어) 가정/직장/셀룰러 전화번호 및 가정/직장 이메일들을 가질 수 있을 때- 그리고 사용자가 이것들 중 임의의 하나를 컨택 폼에서 상호 교환 가능하게 사용할 수 있을 때- 필요할 수 있다.Input is a contact record (input contact C) having one or more primary ID field(s) having one or more values (eg, a contact record with two emails and three phone numbers). A number of primary ID fields are provided when a user may have (eg) a home/work/cellular phone number and home/work email - and the user may use any one of these interchangeably in a contact form When there is - it may be necessary.

데이터 병합기(243)는 1차 키 값들을 정규화하고 정규화된 1차 키 값들, 예를 들어 "(전화=P1 또는 전화=P2) 또는 (이메일=E1 또는 이메일=E2)" 중 임의의 값을 포함하는 컨택 기록에 대한 질의를 생성할 수 있다. 데이터 병합기(243)는 부가적으로 질의를 특정 사이트에 대한 컨택 데이터베이스(245)로 제한할 수 있다. 데이터 병합기(243)는 컨택 데이터베이스(245)를 질의하고 정합하는 컨택 목록(L)(입력 컨택(C)을 포함하는)을 검색할 수 있다.Data merger 243 normalizes the primary key values and returns any of the normalized primary key values, e.g., "(Phone=P1 or Phone=P2) or (Email=E1 or Email=E2)" You can create a query for the contact history that contains it. Data merger 243 may additionally limit the query to contact database 245 for a particular site. Data merger 243 may query contact database 245 and retrieve matching contact list L (including input contact C).

입력 컨택이 등록된 사이트 회원(특정한 사이트의)이면, 데이터 병합기(243)는 목록(L)으로부터 컨택(C)을 제거하고 목록(L) 내의 모든 남은 컨택들을 컨택(C)에 병합할 수 있다. 데이터 병합기(243)는 그 후에 업데이트된 컨택(C)을 컨택 데이터베이스(245)에 다시 저장하고 컨택 데이터베이스(245)로부터 목록(L) 내의 모든 남은 컨택들을 제거할 수 있다. 본원에서 상술한 바와 같이, 데이터 병합기(234)는 대안으로 가상 병합하고, 모든 컨택 정보를 통합하고(즉, 모든 이용 가능한 정보를 포함하기 위하여 모든 컨택 기록들을 업데이트) 그리고 정합되는 컨택 기록들을 동일한 사람에 속하는 것으로 표기하는 것을("복제" 컨택 기록들의 삭제하는 대신) 수행할 수 있다. 이것은 예를 들어, 제 3 자 애플리케이션들(40)이 컨택 기록들에 특정한 내부 ID들을 저장하거나 사용하면 필요할 수 있고, 그러므로 컨택 기록들을 삭제하는 것은 이 제 3 자 애플리케이션(40)을 실패하게 만들 것이다. 동일한 처리(즉, 컨택들을 삭제하는 것보다는 컨택들을 관련되는 것으로 표기하는 것)는 본원 아래에서 더 상세하게 논의되는 다른 경우들에 적용될 수 있다.If the input contact is a registered site member (of a specific site), data merger 243 may remove contact C from list L and merge all remaining contacts in list L into contact C. have. Data merger 243 may then store updated contact C back to contact database 245 and remove all remaining contacts in list L from contact database 245 . As discussed hereinabove, data merger 234 alternatively virtual merges, merges all contact information (ie, updates all contact records to include all available information) and matches matched contact records to the same Marking as belonging to a person (instead of deleting "replicated" contact records) can be done. This may be necessary, for example, if third-party applications 40 store or use internal IDs specific to contact records, and therefore deleting the contact records would cause this third-party application 40 to fail. . The same treatment (ie, marking contacts as relevant rather than deleting them) may apply to other cases discussed in greater detail herein below.

입력 컨택이 등록된 사이트 회원이 아니면, 데이터 병합기(243)는 얼마나 많은 사이트 회원 컨택들이 목록(L) 내에 있는지를 알아보기 위해 체크할 수 있다. 0명의 사이트 회원들이 있으면, 이는 목록(L)으로부터 컨택(C)을 제거할 수 있고 목록(L) 내의 모든 남은 컨택들을 컨택(C)에 병합할 수 있다. 데이터 병합기(243)는 그 후에 업데이트된 컨택(C)을 컨택 데이터베이스(245)에 다시 저장하고 컨택 데이터베이스(245)로부터 목록(L) 내의 모든 남은 컨택들을 제거할 수 있다.If the input contact is not a registered site member, data merger 243 may check to see how many site member contacts are in list L. If there are zero site members, it may remove contact C from list L and merge all remaining contacts in list L into contact C. Data merger 243 may then store updated contact C back to contact database 245 and remove all remaining contacts in list L from contact database 245 .

1명의 사이트 회원이 있으면(컨택(D)), 데이터 병합기(243)는 목록(L)으로부터 컨택(D)을 제거하고 L 내의 모든 남은 컨택들을(컨택(C)을 포함하는) 컨택(D)에 병합할 수 있다. 데이터 병합기(243)는 그 후에 업데이트된 컨택(D)을 컨택 데이터베이스(245)에 다시 저장하고 컨택 데이터베이스(245)로부터 목록(L) 내의 모든 남은 컨택들을 제거할 수 있다.If there is one site member (contact D), data merger 243 removes contact D from list L and removes all remaining contacts in L (including contact C) from contact D ) can be merged into Data merger 243 may then store updated contact D back to contact database 245 and remove all remaining contacts in list L from contact database 245 .

둘 이상의 사이트 회원 컨택들(D, D1, D2,...)이 있으면, 데이터 병합기(243)는 발견되는 사이트 회원 컨택들(D, D1, D2,...)로부터 컨택(D)을 선택하고 목록(L)으로부터 컨택(D)을 제거할 수 있다. 데이터 병합기(243)는 그 후에 사이트 회원들이 아닌 목록(L) 내의 컨택들을 포함하는, 목록(L)으로부터 하위 목록(LL)을 생성할 수 있다. 데이터 병합기(243)는 그 후에 목록(LL) 상의 모든 남은 컨택들을 컨택(D)에 병합할 수 있다. 데이터 병합기(243)는 그 후에 업데이트된 컨택(D)을 컨택 데이터베이스(245)에 다시 저장하고 컨택 데이터베이스(245)로부터 목록(LL) 내의 모든 남은 컨택들을 제거할 수 있다.If there are more than one site member contacts D, D1, D2,... You can select and remove a contact (D) from the list (L). Data merger 243 may then create a sub-list LL from list L, including contacts in list L who are not site members. Data merger 243 may then merge all remaining contacts on list LL into contact D. The data merger 243 may then store the updated contact D back to the contact database 245 and remove all remaining contacts in the list LL from the contact database 245 .

본원에서 로그인 병합에 대하여 상술한 바와 같이, 데이터에서 불일치들이 발생할 수 있다. 그러나, 목록 값 생성기(275)가 목록 값 필드들(다수의 값들을 가지는)을 생성할 수 있고 컨택들 사이에 명확한 선행(precedence)을 규정할 수 있으므로, 문제는 대부분의 경우 발생하지 않을 수 있다.As discussed above for login merging herein, inconsistencies may arise in the data. However, since the list value generator 275 can generate list value fields (having multiple values) and define a clear precedence between contacts, the problem may not arise in most cases. .

예를 들어, 데이터 병합기(243)는 다음의 컨택들을 병합한다:For example, data merger 243 merges the following contacts:

컨택1 = [전화1, 이메일1];Contact1 = [Phone1, Email1];

컨택2 = [전화1, 이메일2];Contact2 = [Phone1, Email2];

컨택3 = [전화2, 이메일2];Contact3 = [Phone2, Email2];

이는 결합된 컨택을 발생시킬 수 있다:This can result in a combined contact:

결합 - 컨택 = [전화 = [전화1, 전화2], 이메일 = [이메일1, 이메일2]].Combine - Contact = [Phone = [Phone1, Phone2], Email = [Email1, Email2]].

컨택 데이터베이스(245)는 다수의 소스들로부터의, 그리고 이의 사용을 위해 상이한 허가들의 레벨들을 가지는 컨택 정보를 포함할 수 있음이 인정될 것이다. 다음의 논의는 이메일들을 언급하는데; 그러나 이 논의 및 기술은 위에 언급되는 바와 같이 사용자에게 컨택하는 데 사용되는 임의의 유형의 정보에 적용된다(전화, 팩스, Skype ID, 인스턴트 메시징 ID, 소셜 네트워크 ID 등).It will be appreciated that the contact database 245 may contain contact information from multiple sources and having different levels of permissions for its use. The following discussion refers to emails; However, this discussion and technique applies to any type of information used to contact a user as noted above (telephone, fax, Skype ID, instant messaging ID, social network ID, etc.).

예를 들어, 이메일 주소가 사이트에 제공되었던 방식은 자체의 사용을 위하여 상이한 허가들을 표시할 수 있다. 이메일 주소들에 대한 일부 가능한 소스들은 등록 ID; 컨택 폼, 뉴스레터 가입 및 구독 취소 요청이다. 이메일 주소들은 사용자에 의해 전자적으로 서명된 "허용된 사용자 합의"의 면에서 더 상이할 수 있다.For example, the manner in which an email address was provided to a site may indicate different permissions for its use. Some possible sources for email addresses include registration ID; Contact forms, newsletter signup and unsubscribe requests. Email addresses may be further different in terms of an “accepted user agreement” that is electronically signed by the user.

웹사이트 구축 시스템(30)이 전형적으로 소정의 이메일에 대한 허용된 사용들에 관한 정보를 가지고 있는 것이 인정될 것이다. 그러나, 웹사이트 소유자는 예를 들어, 사이트 내의 상이한 가입 폼들의 성격으로 인해 또는 시스템 내의 컨택들이 웹사이트에 의해 추가 사용 허가 정보를 포함하는 상이한 소스로부터 임포팅되는 것으로 인해 상이하거나, 별개이거나 또는 추가의 정보를 가질 수 있다.It will be appreciated that the website building system 30 typically has information regarding permitted uses for a given email. However, the website owner may be different, separate, or additional can have information.

데이터 및 허가 처리기(244)는 웹사이트 소유자가 이 정보를 관리하는 것을 보조하기 위하여 사이트에서 사용되는 제 3 자 애플리케이션들(40)에서 권한 사용자 정책을 시행할 수 있다.The data and permissions processor 244 may enforce rights user policies on third party applications 40 used on the site to assist the website owner in managing this information.

그러므로 관련 컨택에 대한 컨택 기록은 정보의 2개의 필드들을 포함할 수 있다. 제 1 필드는 웹사이트에 의해 사용자 활동으로부터 계산되는 도출 또는 제안된 허가들을 포함하는 웹사이트 허가 필드이다. 컨택 폼은 단지 기능 이메일을 함축하고 반면에 가입자 폼은 반복 이메일(recurring email)들을 함축할 수 있다. 제 2 필드는 웹사이트 허가 필드 값에 기초하는 사이트 소유자 허가 필드이다. 사이트 소유자는 웹사이트 권장사항들을 변경할 수 있고 자신이 좋아하는 것은 무엇이든지 할 수 있지만, 자신은 웹사이트 허가 필드에 의해 규정되는 허가들을 초과하는 어떠한 사용에도 책임을 진다.Therefore, a contact record for a related contact may contain two fields of information. The first field is a website permission field containing derived or suggested permissions calculated from user activity by the website. A contact form can only imply functional emails, whereas a subscriber form can imply recurring emails. The second field is a site owner permission field based on the website permission field value. The site owner may change the website recommendations and do whatever he likes, but he is responsible for any use that exceeds the permissions stipulated by the website permissions field.

웹사이트 허가 필드 값이 사용자들의 의도에 대한 웹사이트의 최상의 정보를 표현하는 것임이 인정될 것이다. 사이트 소유자 허가 값은 웹사이트에 의해 할당되고 제 3 자 애플리케이션(40) 및 시스템의 다른 부분들에 의해(예를 들어, 뉴스레터 송신을 제공하는 제 3 자 애플리케이션(40)에 의해) 사용되는 값이다.It will be appreciated that the website permission field value represents the best information of the website about the intent of the users. The site owner permission value is a value assigned by the website and used by the third party application 40 and other parts of the system (eg, by the third party application 40 providing newsletter transmission). to be.

데이터 및 허가 처리기(244)는 다수의 방식들로 허가들을 규정하기 위해 이 허가 필드들을 사용할 수 있다. 예를 들어, 데이터 및 허가 처리기(244)는 다음의 코드들 또는 결합들 및 이의 변형들 중 어떤 것을 구현할 수 있다(이메일뿐만 아니라 다른 컨택 ID들에 대해서).The data and permission processor 244 may use these permission fields to define permissions in a number of ways. For example, data and permission processor 244 may implement any of the following codes or combinations and variations thereof (for email as well as other contact IDs).

미지 - 이메일은 미지의 소스들로부터 추출되었고 어떠한 이메일 송신에도 사용될 수 없다.Unknown - Email has been extracted from unknown sources and cannot be used to send any email.

이메일 ID - 등록 목적들을 위해 제공되는 이메일. 이는 등록 확인, 기억이 나지 않는 패스워드 및 의심되는 보안 위반 통지와 같은 등록 관련 문제들을 제외하고 어떠한 이메일 송신에도 사용될 수 없다.Email ID - Email provided for registration purposes. It cannot be used to send any e-mail except for registration-related issues such as registration confirmation, forgotten passwords and notification of suspected security breaches.

기능 이메일 - 특정 기능을 위해 제공되고 1회성 이메일들을 허용한다. 예를 들어, 구매 확인 이메일 또는 특정한 컨택 폼에 대하여 제공되는 이메일.Functional Emails - Provided for specific functions and allow one-time emails. For example, purchase confirmation emails or emails provided for specific contact forms.

반복 이메일 - 다수의 그리고 주기적 구독들 및 광고들이 특정한 웹사이트에 의해 송신되는 것을 허용한다. 이것은 명시적 구독/승인을 필요로 한다.Recurring Email - Allows multiple and periodic subscriptions and advertisements to be sent by a particular website. This requires explicit subscription/approval.

공유 가능 이메일 - 다수의 그리고 주기적인 구독들 및 광고들이 웹사이트뿐만 아니라 이의 파트너들(제 3 자 애플리케이션들(40), 제 4 자들)에 의해 송신되는 것을 허용한다. 이것은 명시적인 구독/승인을 필요로 하고 허용된 공유에 대한 상세한 정보를 포함할 수 있다.Shareable Email - Allows multiple and periodic subscriptions and advertisements to be sent by the website as well as its partners (third party applications 40, fourth parties). This requires explicit subscription/approval and may include detailed information about allowed shares.

기피(opt out) - 사용자는 명백히 구독 취소하였다. 어떠한 이메일들도 사용자에게 송신될 수 없다(가능하면 기피 통지를 제외하고).opt out - user explicitly unsubscribed. No e-mails may be sent to the user (with the exception of possibly opt-out notices).

데이터 및 허가 처리기(244)는 허가 비트 마스크(UNIX 및 리눅스 시스템들에서 사용되는 것과 유사한) 또는 액세스 제어 목록(Access Control List; ACL) 메커니즘과 같은 대안의 방법들을 사용할 수 있음이 인정될 것이다. 데이터 및 허가 처리기(244)는 또한 컨택 정보의 별개의 부분들에 대해 별개의 허가 필드들을 구현할 수 있다(예를 들어, 이메일, 인스턴트 메신저 주소, 소셜 네트워크 ID 등).It will be appreciated that the data and permission handler 244 may use alternative methods, such as a permission bit mask (similar to that used in UNIX and Linux systems) or an Access Control List (ACL) mechanism. Data and permission processor 244 may also implement separate permission fields for distinct portions of contact information (eg, email, instant messenger address, social network ID, etc.).

전형적인 사용 시나리오는 컨택 데이터베이스(245)가 컨택 폼들로부터 수집되는 이메일들의 제 1 세트 및 구독 요청들로부터의 이메일들의 제 2 세트를 포함하는 시나리오이다. 웹사이트는 뉴스레터 송신 제 3 자 애플리케이션(40)을 호출하여, 제 3 자 애플리케이션(40)이 이메일들을 단지 사용자의 제 2 세트(구독 요청들을 송신한 사용자들)에 속하는 사용자들에게만 송신할 것임을 인지할 수 있다.A typical usage scenario is one in which the contacts database 245 includes a first set of emails collected from contact forms and a second set of emails from subscription requests. The website calls the newsletter sending third party application 40 to indicate that the third party application 40 will only send emails to users belonging to the second set of users (users who have sent subscription requests). can recognize

그와 같은 시스템의 장점들은 사용자들에 대한 비본질적인 스팸 메일 송신 또는 개인 정보 오용으로부터의 더 양호한 보호(기술 및 법적인 것 모두)- 웹사이트 및 웹사이트 소유자 모두에 대해-를 포함할 뿐만 아니라 본원에서 상술한 바와 같이 개인 데이터 프록시(234)와 함께 사용될 때 개인정보 보호 정책을 실제로 시행하는 능력을 포함한다. 이는 또한 구독 취소 요청들이 더 엄격하게 시행되는 것을 보장할 수 있다.Advantages of such a system include better protection (both technical and legal) for users (both technical and legal) from non-essential spam sending or misuse of personal information for users - for both the website and the website owner - as well as being described herein. includes the ability to actually enforce privacy policies when used in conjunction with personal data proxy 234 as described above. This may also ensure that unsubscribe requests are enforced more strictly.

그러므로 사용자는 관련 웹사이트 구축 시스템(30) 및 임의의 관련된 제 3 자 애플리케이션들(40) 사이의 활동들의 스트림을 발생시킬 수 있다. 이 스트림들은 활동 스트림들로 공지될 수 있다. 각각의 활동 스트림은 단일 컨택에 대한 정보원(informatin source)으로서 사용될 수 있다. 개별 스트림들의 활동 데이터 구조는 또한 상이한 활동 스트림들이 동일한 소스에서 나온 것임이 결정될 수 있으면 컨택을 형성하기 위해 병합될 수 있다. 예를 들어, 단일 사용자는 모바일 디바이스 및 개인용 컴퓨터와 같은 2개의 디바이스들을 통해 익명으로 작업할 수 있다. 그와 같은 사용자는 메시지가 저장될 수 있는 2개의 익명의 스트림들을 생성할 수 있다. 일단 스트림들이 동일한 사용자와 연관되는 것으로 식별되었으면, 이것들을 병합될 수 있다.A user may thus generate a stream of activities between the relevant website building system 30 and any relevant third party applications 40 . These streams may be known as activity streams. Each activity stream can be used as an information source for a single contact. The activity data structures of the individual streams may also be merged to form a contact if it can be determined that the different activity streams are from the same source. For example, a single user may work anonymously across two devices, such as a mobile device and a personal computer. Such a user can create two anonymous streams in which messages can be stored. Once the streams have been identified as being associated with the same user, they can be merged.

본원에서 제시되는 프로세스들 및 디스플레이들은 내재적으로 임의의 특정한 컴퓨터 또는 다른 장치와 관련되지 않는다. 다양한 범용 시스템들은 본원에서의 내용들에 따라 프로그램들과 함께 사용될 수 있거나 더 특수한 장치들을 구성하여 원하는 방법을 수행하는 것이 편리한 것임이 판명될 수 있다. 상기 설명으로부터 다양한 이 시스템들에 대한 원하는 구조가 등장할 것이다. 게다가, 본 발명의 실시예들은 임의의 특정한 프로그래밍 언어를 참고하여 기술되지 않는다. 본원에서 기술되는 바와 같은 본 발명의 내용을 구현하는 데 다양한 프로그래밍 언어들이 사용될 수 있음이 인정될 것이다.The processes and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized devices to perform the desired method. From the above description will emerge the desired structure for a variety of these systems. Moreover, embodiments of the present invention are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the subject matter as described herein.

앞서의 논의들에서부터 명백한 바와 같이, 구체적으로 달리 진술되지 않으면, 명세서 전체에 걸쳐, "프로세싱하는", "컴퓨팅하는", "계산하는", "결정하는" 등과 같은 용어들을 활용하는 논의들은 전자와 같이 컴퓨팅 시스템의 레지스터들 및/또는 메모리들 내에서 물리적인 양으로 표현되는 데이터를 조작하고/조작하거나 이 데이터를 컴퓨팅 시스템의 메모리들, 레지스터들 또는 다른 그와 같은 정보 저장, 전송 또는 디스플레이 디바이스들 내의 물리적인 양들로 유사하게 표현되는 다른 데이터로 변환하는 컴퓨터, 컴퓨팅 시스템 또는 유사한 전자 컴퓨팅 디바이스의 행위 및/또는 프로세스들을 칭하는 것임이 인정될 것이다. As is apparent from the preceding discussions, unless specifically stated otherwise, throughout the specification, discussions utilizing terms such as "processing", "compute", "compute", "determining", etc. refer to the former and the Manipulate and/or manipulate data represented in physical quantities within registers and/or memories of the computing system, such as memory, registers, or other such information storage, transmission or display devices of the computing system It will be appreciated that the act and/or processes of a computer, computing system, or similar electronic computing device that converts it into other data that is similarly expressed in physical quantities within.

본 발명의 실시예들은 본원에서의 동작들을 수행하는 장치를 포함할 수 있다. 이 장치는 원하는 목적들을 위해 특수하게 구성될 수 있거나, 또는 이는 컴퓨터에 저장되는 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 그와 같은 컴퓨터 프로그램은 컴퓨터 판독 가능 저장 매체, 예를 들어, 플로피 디스크들, 광 디스크들, 자기 광 디스크들을 포함하는 임의의 유형의 디스크, 판독 전용 메모리(read-only memory; ROM)들, 컴팩트 디스크 판독 전용 메모리(compact disc ROM; CD-ROM)들, 랜덤 액세스 메모리(random access memory; RAM)들, 전기적 프로그램 가능 판독 전용 메모리(electrically programmable ROM; EPROM)들, 전기적 소거 가능 및 프로그램 가능 판독 전용 메모리(electrically erasable and programmable ROM; EPPROM)들, 자기 또는 광 카드들, 플래시 메모리 또는 전자 명령들을 저장하는데 적합하고 컴퓨터 시스템 버스에 결합될 수 있는 임의의 다른 유형의 매체에 저장될 수 있으나 이로 제한되지 않는다.Embodiments of the present invention may include apparatus for performing the operations herein. This apparatus may be specially constructed for the desired purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, for example, any type of disk including floppy disks, optical disks, magneto-optical disks, read-only memories (ROMs), compact compact disc ROMs (CD-ROMs), random access memories (RAMs), electrically programmable read only memories (EPROMs), electrically erasable and programmable read only may be stored in electrically erasable and programmable ROM (EPPROM), magnetic or optical cards, flash memory or any other tangible medium suitable for storing electronic instructions and capable of being coupled to a computer system bus, but is not limited to does not

본 발명의 특정 특징들이 본원에서 설명되고 기술되었을지라도, 이제 당업자에게는 많은 수정들, 대체들, 변경들 및 등가들이 착상될 수 있다. 그러므로 첨부된 청구항들이 본 발명의 진정한 사상 내에 해당하는 모든 그와 같은 수정들 및 변경들을 포괄하도록 의도되는 것이 이해되어야 한다.Although specific features of the invention have been described and described herein, many modifications, substitutions, changes and equivalents may occur to those skilled in the art. It is therefore to be understood that the appended claims are intended to cover all such modifications and variations that fall within the true spirit of the present invention.

Claims (24)

웹사이트를 위한 시스템으로서,
적어도 상기 웹사이트의 사용자들에 대한 현재 컨택 정보를 저장하는 데이터베이스;
상기 웹사이트와 상기 웹사이트에 내장된 적어도 하나의 제 3 자 애플리케이션 사이에서 교환되는 적어도 하나의 활동 메시지를 수신하는 활동 조정기; 및
상기 웹사이트의 사용자들 중 한 사용자, 새로운 사용자, 및 익명 사용자 중 적어도 하나에 대한 컨택 관련 정보를 상기 적어도 하나의 활동 메시지로부터 모아서 그에 따른 컨택 프로파일을 증강시키는, 컨택 조정기
를 포함하고,
상기 컨택 조정기는 상기 컨택 프로파일로부터 상기 사용자에 대해 업데이트된 현재 컨택 관련 정보로 상기 데이터베이스를 업데이트하고, 상기 컨택 프로파일로부터 상기 새로운 사용자 및 상기 익명 사용자에 대한 새로운 컨택 정보를 생성하는,
시스템.
A system for a website, comprising:
a database storing current contact information for at least users of the website;
an activity coordinator for receiving at least one activity message exchanged between the website and at least one third-party application embedded in the website; and
a contact coordinator that aggregates contact-related information for at least one of a user, a new user, and an anonymous user of the website from the at least one activity message to augment a contact profile accordingly.
including,
wherein the contact coordinator updates the database with current contact-related information updated for the user from the contact profile, and generates new contact information for the new user and the anonymous user from the contact profile.
system.
제1항에 있어서,
상기 활동 조정기는,
상기 적어도 하나의 활동 메시지와 연관된 상기 사용자를 식별하고, 연관된 컨택이 존재하지 않으면 데이터의 활동 스트림을 생성하는, 스트림 생성기; 및
상기 적어도 하나의 활동 메시지로부터의 데이터를 기존의 스트림에 병합하고 그리고 상기 활동 스트림 중 적어도 2개로부터의 데이터를 단일 스트림에 병합하는, 스트림 병합기
중 적어도 하나를 포함하는,
시스템.
According to claim 1,
The activity coordinator is
a stream generator that identifies the user associated with the at least one activity message and generates an activity stream of data if an associated contact does not exist; and
merging data from the at least one activity message into an existing stream and merging data from at least two of the activity streams into a single stream.
comprising at least one of
system.
제2항에 있어서,
상기 컨택 조정기는,
적어도 하나의 활동 메시지, 상기 활동 스트림, 상기 사용자에 대한 현재 컨택 정보, 및 외부 소스들 중 적어도 하나로부터 상기 컨택 관련 정보를 추출하는 데이터 추출기;
적어도 2개의 컨택 정보 기록들을 병합하고 그리고 미리 규정된 병합 규칙들에 따라 상기 추출된 컨택 관련 정보를 기존 사용자의 컨택 관련 정보와 병합하는 데이터 병합기 - 상기 기록들은 동일한 식별된 사용자와의 연관성을 가짐 -;
식별 가능한 새로운 컨택 및 익명의 컨택 중 적어도 하나를 생성하고 그리고 상기 웹사이트의 세션 동안 컨택 활동을 추적하는, 컨택 처리기; 및
추출된 컨택 관련 정보의 프라이버시 보호 및 허가들을 처리하는, 데이터 및 허가 처리기
중 적어도 하나를 포함하는,
시스템.
3. The method of claim 2,
The contact coordinator,
a data extractor for extracting the contact-related information from at least one of at least one activity message, the activity stream, current contact information for the user, and external sources;
A data merger that merges at least two contact information records and merges the extracted contact related information with the existing user's contact related information according to predefined merging rules, the records having an association with the same identified user -;
a contact handler that creates at least one of a new identifiable contact and an anonymous contact and tracks contact activity during a session of the website; and
Data and permission processor, handling privacy protection and permissions of extracted contact-related information
comprising at least one of
system.
제1항에 있어서,
상기 시스템은 클라이언트 상에서 구현될 수 있는,
시스템.
According to claim 1,
The system can be implemented on a client,
system.
제1항에 있어서,
상기 적어도 하나의 제 3 자 애플리케이션은 소셜 네트워크, 소셜 네트워크에 대한 인터페이스, 소셜 네트워크 메시징 소프트웨어에 대한 인터페이스, 및 인스턴트 메시징 시스템 중 적어도 하나인,
시스템.
According to claim 1,
wherein the at least one third-party application is at least one of a social network, an interface to a social network, an interface to social network messaging software, and an instant messaging system;
system.
제3항에 있어서,
상기 데이터 추출기는 추출된 컨택 세부사항을 새로 생성된 익명의 컨택 하에 저장하는,
시스템.
4. The method of claim 3,
wherein the data extractor stores the extracted contact details under the newly created anonymous contact;
system.
제3항에 있어서,
상기 데이터 병합기는,
상기 컨택 정보 기록들 중 적어도 2개에서 동일한 1차 ID 필드 값들의 위치를 찾는 것, 정규화될 때 동일한 상기 컨택 정보 기록들 중 적어도 2개에서 1차 키 필드 값들의 위치를 찾는 것, 쿠키를 사용하여 사이트 사용자들을 식별하는 것, 등록된 사용자들에 대한 사이트 로그인을 사용하여 사이트 사용자를 식별하는 것, 및 소셜 네트워크와 연관되는 계정을 가지는 사이트 사용자들에 대한 소셜 로그인을 통해 사이트 사용자를 식별하는 것 중 적어도 하나를 수행하는, 컨택 식별기;
언어, 구문, 텍스트 분석, 및 외부 데이터 소스들과 서비스들에 대한 참고(consultation) 중 적어도 하나를 사용하여 컨택 정보를 통합하는, 통합기;
미리 규정된 규칙들에 따라 컨택 기록들 사이의 불일치들을 해소하는, 불일치 해소기(contradiction resolver);
상기 컨택 기록들 사이의 명확한 우선순위를 규정하기 위한 목록 값 필드들을 생성하는, 목록 값 생성기;
검출되는 공통 1차 ID로 인하여 2개의 관련되지 않은 컨택들을 병합하는, 수평 컨택 병합기; 및
익명의 컨택과 등록된 사용자와 연관되는 컨택을 연결시킬 수 있는 등록 또는 로그인 시에 상기 익명의 컨택을 상기 등록된 사용자와 연관되는 컨택과 병합하는, 수직 컨택 병합기
중 적어도 하나를 포함하는,
시스템.
4. The method of claim 3,
The data merger,
locating the same primary ID field values in at least two of the contact information records, locating primary key field values in at least two of the contact information records that are identical when normalized, using a cookie to identify site users by way of a method, to identify site users using site logins for registered users, and to identify site users through social logins for site users having accounts associated with social networks; at least one of: a contact identifier;
an aggregator that aggregates contact information using at least one of language, syntax, text analysis, and consultation to external data sources and services;
a contradiction resolver, resolving inconsistencies between contact records according to predefined rules;
a list value generator for generating list value fields for defining an explicit priority among the contact records;
a horizontal contact merger, which merges two unrelated contacts due to a detected common primary ID; and
A vertical contact merger that merges the anonymous contact with a contact associated with the registered user upon registration or login capable of associating an anonymous contact with a contact associated with a registered user.
comprising at least one of
system.
제2항에 있어서,
상기 스트림 병합기는,
상기 데이터를 상기 식별된 사용자와 연관되는 상기 스트림에 병합하는, 활동-대-스트림 병합기, 및
적어도 2개의 별개의 스트림들을 단일 스트림으로 병합하는 스트림-대-스트림 병합기
를 포함하는
시스템.
3. The method of claim 2,
The stream merger,
an activity-to-stream merger that merges the data into the stream associated with the identified user, and
A stream-to-stream merger that merges at least two separate streams into a single stream.
containing
system.
제8항에 있어서,
상기 스트림-대-스트림 병합기는,
식별된 공통 사용자에 따라 상기 적어도 2개의 별개의 스트림들을 병합하는 수평 스트림 병합기, 및
익명의 사용자에 대하여 생성되는 스트림과 등록된 사용자와 연관되는 스트림을 연결시킬 수 있는 등록 또는 로그인 시에 상기 익명의 사용자에 대하여 생성되는 스트림을 상기 등록된 사용자와 연관되는 스트림과 병합하는, 수직 스트림 병합기
중 적어도 하나를 포함하는,
시스템.
9. The method of claim 8,
The stream-to-stream merger comprises:
a horizontal stream merger that merges the at least two separate streams according to an identified common user, and
A vertical stream for merging the stream generated for the anonymous user with the stream associated with the registered user upon registration or login capable of concatenating the stream generated for the anonymous user and the stream associated with the registered user merger
comprising at least one of
system.
제7항에 있어서,
상기 수평 컨택 병합기는, 적어도 2개의 컨택 기록들을 별개로 유지하고 상기 적어도 2개의 컨택 기록들이 동일한 사용자를 표현하는 것으로 표기되도록 상기 적어도 2개의 컨택 기록들을 서로 링크하는 가상 병합기를 포함하는,
시스템.
8. The method of claim 7,
wherein the horizontal contact merger comprises a virtual merger that maintains at least two contact records separately and links the at least two contact records together such that the at least two contact records are marked as representing the same user.
system.
제7항에 있어서,
상기 수직 컨택 병합기는, 익명의 컨택 및 등록된 사용자와 연관되는 컨택을 별개로 유지하고 상기 익명의 컨택 및 상기 등록된 사용자와 연관되는 컨택이 동일한 사용자를 표현하는 것으로 표기되도록 상기 익명의 컨택 및 상기 등록된 사용자와 연관되는 컨택을 서로 링크하는 가상 병합기를 포함하는,
시스템.
8. The method of claim 7,
The vertical contact merger is configured to keep an anonymous contact and a contact associated with a registered user separate and such that the anonymous contact and the contact associated with the registered user are marked as representing the same user. a virtual merger that links together contacts associated with registered users;
system.
제2항에 있어서,
사용자 허가 필드는 결정된 상기 웹사이트 및 결정된 상기 웹사이트의 소유자 중 적어도 하나인,
시스템.
3. The method of claim 2,
the user permission field is at least one of the determined website and the determined owner of the website;
system.
컴퓨팅 시스템에 의해 각 단계가 수행되는 웹사이트를 위한 방법으로서,
적어도 상기 웹사이트의 사용자들에 대한 현재 컨택 정보를 데이터베이스에 저장하는 단계;
상기 웹사이트와 상기 웹사이트에 내장된 적어도 하나의 제 3 자 애플리케이션 사이에서 교환되는 적어도 하나의 활동 메시지를 수신하는 단계; 및
상기 웹사이트의 사용자들 중 한 사용자, 새로운 사용자, 및 익명 사용자 중 적어도 하나에 대한 컨택 관련 정보를 상기 적어도 하나의 활동 메시지로부터 모아서 그에 따른 컨택 프로파일을 증강시키는 단계
를 포함하고,
상기 컨택 프로파일을 증강시키는 단계는, 상기 데이터베이스를 상기 컨택 프로파일로부터 상기 사용자에 대해 업데이트된 현재 컨택 관련 정보로 업데이트하고, 상기 컨택 프로파일로부터 상기 새로운 사용자 및 상기 익명 사용자에 대한 새로운 컨택 정보를 생성하는,
방법.
A method for a website in which each step is performed by a computing system, the method comprising:
storing current contact information for at least users of the website in a database;
receiving at least one activity message exchanged between the website and at least one third-party application embedded in the website; and
aggregating from the at least one activity message contact-related information for at least one of a user of the website, a new user, and an anonymous user, and augmenting a contact profile accordingly;
including,
augmenting the contact profile comprises updating the database with current contact-related information updated for the user from the contact profile, and generating new contact information for the new user and the anonymous user from the contact profile.
Way.
제13항에 있어서,
상기 적어도 하나의 활동 메시지를 수신하는 단계는,
상기 적어도 하나의 활동 메시지와 연관된 상기 사용자를 식별하고, 연관된 컨택이 존재하지 않으면 데이터의 활동 스트림을 생성하는 단계; 및
상기 적어도 하나의 활동 메시지로부터의 데이터를 기존의 스트림에 병합하고 그리고 상기 활동 스트림 중 적어도 2개로부터의 데이터를 단일 스트림에 병합하는 단계
중 적어도 하나를 포함하는,
방법.
14. The method of claim 13,
Receiving the at least one activity message comprises:
identifying the user associated with the at least one activity message and generating an activity stream of data if an associated contact does not exist; and
merging data from the at least one activity message into an existing stream and merging data from at least two of the activity streams into a single stream;
comprising at least one of
Way.
제14항에 있어서,
상기 컨택 관련 정보를 모으고 컨택 프로파일을 증강시키는 단계는,
상기 적어도 하나의 활동 메시지, 상기 활동 스트림, 상기 사용자에 대한 현재 컨택 정보, 및 외부 소스들 중 적어도 하나로부터 상기 컨택 관련 정보를 추출하는 단계;
적어도 2개의 컨택 정보 기록들을 병합하고 그리고 미리 규정된 병합 규칙들에 따라 상기 추출된 컨택 관련 정보를 기존 사용자의 컨택 관련 정보와 병합하는 단계 - 상기 기록들은 동일한 식별된 사용자와의 연관성을 가짐 -;
식별 가능한 새로운 컨택 및 익명의 컨택 중 적어도 하나를 생성하고 그리고 상기 웹사이트의 세션 동안 컨택 활동을 추적하는 단계; 및
추출된 컨택 관련 정보의 프라이버시 보호 및 허가들을 처리하는 단계
중 적어도 하나를 포함하는,
방법.
15. The method of claim 14,
The step of collecting the contact-related information and enhancing the contact profile comprises:
extracting the contact-related information from at least one of the at least one activity message, the activity stream, current contact information for the user, and external sources;
merging at least two contact information records and merging the extracted contact related information with contact related information of an existing user according to predefined merging rules, wherein the records have an association with the same identified user;
creating at least one of a new identifiable contact and an anonymous contact and tracking contact activity during a session of the website; and
processing the privacy protection and permissions of the extracted contact-related information;
comprising at least one of
Way.
제13항에 있어서,
상기 방법은 클라이언트 상에서 구현될 수 있는,
방법.
14. The method of claim 13,
The method can be implemented on a client,
Way.
제13항에 있어서,
상기 적어도 하나의 제 3 자 애플리케이션은 소셜 네트워크, 소셜 네트워크에 대한 인터페이스, 소셜 네트워크 메시징 소프트웨어에 대한 인터페이스, 및 인스턴트 메시징 시스템 중 적어도 하나인,
방법.
14. The method of claim 13,
wherein the at least one third-party application is at least one of a social network, an interface to a social network, an interface to social network messaging software, and an instant messaging system;
Way.
제14항에 있어서,
상기 컨택 관련 정보를 추출하는 단계는 추출된 컨택 세부사항을 새로 생성된 익명의 컨택 하에 저장하는,
방법.
15. The method of claim 14,
The step of extracting the contact-related information includes storing the extracted contact details under the newly created anonymous contact,
Way.
제15항에 있어서,
상기 적어도 2개의 컨택 정보 기록들을 병합하고 그리고 상기 추출된 컨택 관련 정보를 병합하는 단계는,
상기 컨택 정보 기록들 중 적어도 2개에서 동일한 1차 ID 필드 값들의 위치를 찾는 것, 정규화될 때 동일한 상기 컨택 정보 기록들 중 적어도 2개에서 1차 키 필드 값들의 위치를 찾는 것, 쿠키를 사용하여 사이트 사용자들을 식별하는 것, 등록된 사용자들에 대한 사이트 로그인을 사용하여 사이트 사용자를 식별하는 것, 소셜 네트워크와 연관되는 계정을 가지는 사이트 사용자들에 대한 소셜 로그인을 통해 사이트 사용자를 식별하는 것 중 적어도 하나를 수행하는 단계;
언어, 구문, 텍스트 분석 및 외부 데이터 소스들 및 서비스들에 대한 참고 중 적어도 하나를 사용하여 컨택 정보를 통합하는 단계;
미리 규정된 규칙들에 따라 컨택 기록들 사이의 불일치들을 해소하는 단계;
상기 컨택 기록들 사이의 명확한 우선순위를 규정하기 위한 목록 값 필드들을 생성하는 단계;
검출되는 공통 1차 ID로 인하여 2개의 관련되지 않은 컨택들을 병합하는 단계; 및
익명의 컨택과 등록된 사용자와 연관되는 컨택을 연결시킬 수 있는 등록 또는 로그인 시에 상기 익명의 컨택을 상기 등록된 사용자와 연관되는 컨택과 병합하는 단계
중 적어도 하나를 포함하는,
방법.
16. The method of claim 15,
Merging the at least two contact information records and merging the extracted contact information includes:
locating the same primary ID field values in at least two of the contact information records, locating primary key field values in at least two of the contact information records that are identical when normalized, using a cookie identifying site users by means of a method, identifying site users using site logins for registered users, and identifying site users through social logins for site users having accounts associated with social networks. performing at least one;
aggregating contact information using at least one of language, syntax, text analysis, and references to external data sources and services;
resolving inconsistencies between contact records according to predefined rules;
creating list value fields to define an explicit priority among the contact records;
merging two unrelated contacts due to a detected common primary ID; and
merging the anonymous contact with a contact associated with the registered user upon registration or login capable of associating the anonymous contact with a contact associated with the registered user;
comprising at least one of
Way.
제14항에 있어서,
상기 적어도 하나의 활동 메시지로부터의 데이터를 기존의 스트림에 병합하고 그리고 상기 활동 스트림 중 적어도 2개로부터의 데이터를 단일 스트림에 병합하는 단계는,
상기 데이터를 상기 식별된 사용자와 연관되는 상기 스트림에 병합하는 단계, 및 적어도 2개의 별개의 스트림들을 단일 스트림으로 병합하는 단계를 더 포함하는,
방법.
15. The method of claim 14,
merging data from the at least one activity message into an existing stream and merging data from at least two of the activity streams into a single stream, comprising:
merging the data into the stream associated with the identified user, and merging at least two separate streams into a single stream.
Way.
제20항에 있어서,
상기 적어도 2개의 별개의 스트림들을 단일 스트림으로 병합하는 단계는,
식별된 공통 사용자에 따라 상기 적어도 2개의 별개의 스트림들을 병합하는 단계, 및
익명의 사용자에 대하여 생성되는 스트림과 등록된 사용자와 연관되는 스트림을 연결시킬 수 있는 등록 또는 로그인 시에 상기 익명의 사용자에 대하여 생성되는 스트림을 상기 등록된 사용자와 연관되는 스트림과 병합하는 단계
중 적어도 하나를 포함하는,
방법.
21. The method of claim 20,
Merging the at least two separate streams into a single stream comprises:
merging the at least two separate streams according to an identified common user; and
Merging the stream generated for the anonymous user with the stream associated with the registered user at the time of registration or login, which can connect the stream generated for the anonymous user and the stream associated with the registered user
comprising at least one of
Way.
제19항에 있어서,
상기 2개의 관련되지 않은 컨택들을 병합하는 단계는,
적어도 2개의 컨택 기록들을 별개로 유지하고 상기 적어도 2개의 컨택 기록들이 동일한 사용자를 표현하는 것으로 표기되도록 상기 적어도 2개의 컨택 기록들을 서로 링크하는 단계를 포함하는,
방법.
20. The method of claim 19,
Merging the two unrelated contacts comprises:
maintaining at least two contact records separately and linking the at least two contact records to each other such that the at least two contact records are marked as representing the same user;
Way.
제19항에 있어서,
상기 익명의 컨택을 병합하는 단계는, 익명의 컨택 및 등록된 사용자와 연관되는 컨택을 별개로 유지하고 상기 익명의 컨택 및 상기 등록된 사용자와 연관되는 컨택이 동일한 사용자를 표현하는 것으로 표기되도록 상기 익명의 컨택 및 상기 등록된 사용자와 연관되는 컨택을 서로 링크하는 단계를 포함하는,
방법.
20. The method of claim 19,
The step of merging the anonymous contact may include keeping the anonymous contact and the contact associated with the registered user separate and such that the anonymous contact and the contact associated with the registered user are marked as representing the same user. linking a contact of and a contact associated with the registered user to each other,
Way.
제14항에 있어서,
사용자 허가 필드는 결정된 상기 웹사이트 및 결정된 상기 웹사이트의 소유자 중 적어도 하나인,
방법.
15. The method of claim 14,
the user permission field is at least one of the determined website and the determined owner of the website;
Way.
KR1020217013915A 2013-12-04 2014-12-04 System and method for third party application activity data collection KR102361002B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227003986A KR102433089B1 (en) 2013-12-04 2014-12-04 System and method for third party application activity data collection

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361911485P 2013-12-04 2013-12-04
US61/911,485 2013-12-04
PCT/IB2014/066589 WO2015083115A2 (en) 2013-12-04 2014-12-04 Third party application activity data collection
KR1020167017946A KR102251844B1 (en) 2013-12-04 2014-12-04 System and method for third party application activity data collection

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020167017946A Division KR102251844B1 (en) 2013-12-04 2014-12-04 System and method for third party application activity data collection

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227003986A Division KR102433089B1 (en) 2013-12-04 2014-12-04 System and method for third party application activity data collection

Publications (2)

Publication Number Publication Date
KR20210056451A KR20210056451A (en) 2021-05-18
KR102361002B1 true KR102361002B1 (en) 2022-02-08

Family

ID=53274235

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020167017946A KR102251844B1 (en) 2013-12-04 2014-12-04 System and method for third party application activity data collection
KR1020227003986A KR102433089B1 (en) 2013-12-04 2014-12-04 System and method for third party application activity data collection
KR1020217013915A KR102361002B1 (en) 2013-12-04 2014-12-04 System and method for third party application activity data collection

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020167017946A KR102251844B1 (en) 2013-12-04 2014-12-04 System and method for third party application activity data collection
KR1020227003986A KR102433089B1 (en) 2013-12-04 2014-12-04 System and method for third party application activity data collection

Country Status (11)

Country Link
EP (1) EP3077920A4 (en)
JP (5) JP6506762B2 (en)
KR (3) KR102251844B1 (en)
CN (2) CN105940391B (en)
AU (4) AU2014358700B2 (en)
BR (1) BR112016012695A8 (en)
CA (1) CA2932286C (en)
EA (1) EA036433B1 (en)
IL (3) IL292474A (en)
MX (2) MX359477B (en)
WO (1) WO2015083115A2 (en)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3304475A4 (en) 2015-05-31 2018-12-05 Wix.com Ltd. System and method for capability packages offering based on analysis of edited websites and their use
US9906541B2 (en) 2016-05-10 2018-02-27 Allstate Insurance Company Digital safety and account discovery
US10320821B2 (en) 2016-05-10 2019-06-11 Allstate Insurance Company Digital safety and account discovery
CA3202578A1 (en) * 2016-10-21 2018-04-26 Allstate Insurance Company Digital safety and account discovery
KR102285880B1 (en) * 2017-05-17 2021-08-05 구글 엘엘씨 Data Breach Prevention
JP7040124B2 (en) * 2018-02-28 2022-03-23 トヨタ自動車株式会社 Vehicle movement notification device and notification method
JP7373563B2 (en) 2018-11-14 2023-11-02 ウィックス.コム リミテッド. Systems and methods for creating and processing configurable applications for website building systems
CN110007979A (en) * 2018-12-13 2019-07-12 平安普惠企业管理有限公司 Browser information application method, device, computer equipment and storage medium
US20210004481A1 (en) * 2019-07-05 2021-01-07 Google Llc Systems and methods for privacy preserving determination of intersections of sets of user identifiers
US11275842B2 (en) 2019-09-20 2022-03-15 The Toronto-Dominion Bank Systems and methods for evaluating security of third-party applications
US11436336B2 (en) 2019-09-23 2022-09-06 The Toronto-Dominion Bank Systems and methods for evaluating data access signature of third-party applications
CN113934482A (en) * 2020-07-14 2022-01-14 北京奇虎科技有限公司 Page display method, equipment, storage medium and device
KR102557919B1 (en) * 2021-07-09 2023-07-21 주식회사 티지360테크놀로지스 Method and System for Generating Unified ID by Integrating Multiple Digital IDs

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110029665A1 (en) 2008-08-14 2011-02-03 Tealeaf Technology, Inc. Dynamically configurable session agent
US20120084151A1 (en) 2009-12-30 2012-04-05 Kozak Frank J Facilitation of user management of unsolicited server operations and extensions thereto
US20130275228A1 (en) 2012-04-11 2013-10-17 Netgear, Inc. System and method for filtering advertising in a networking device

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002522829A (en) * 1998-08-07 2002-07-23 イー2 ソフトウェア コーポレイション Network contact tracking system
AU9124801A (en) * 2000-09-28 2002-04-08 Oracle Corp Enterprise web mining system and method
US20020198943A1 (en) * 2001-06-20 2002-12-26 David Zhuang Web-enabled two-way remote messaging facility
EP1504385A4 (en) * 2001-12-05 2008-12-03 Xchange Advantage Inc E Method and system for managing distributed trading data
US7305469B2 (en) * 2001-12-18 2007-12-04 Ebay Inc. Prioritization of third party access to an online commerce site
US20030220812A1 (en) * 2002-04-09 2003-11-27 Jones Michael B. Method of coordinating business transactions between repair service participants
US7281202B2 (en) * 2003-06-19 2007-10-09 Microsoft Corporation Framework for creating modular web applications
US20120150888A1 (en) * 2003-09-10 2012-06-14 Geoffrey Hyatt Method and system for relationship management and intelligent agent
JP3892877B2 (en) * 2005-03-28 2007-03-14 株式会社コナミデジタルエンタテインメント Message character string output system, control method and program for message character string output system
JP5073974B2 (en) * 2006-06-23 2012-11-14 公栄 中嶋 Web site construction system
US10007895B2 (en) * 2007-01-30 2018-06-26 Jonathan Brian Vanasco System and method for indexing, correlating, managing, referencing and syndicating identities and relationships across systems
US7958516B2 (en) * 2007-04-18 2011-06-07 Google Inc Controlling communication within a container document
US10068238B2 (en) * 2007-05-23 2018-09-04 Excalibur Ip, Llc Incentive-based system and method for third-party web application development and publication
US8774374B2 (en) * 2007-12-13 2014-07-08 Verizon Patent And Licensing Inc. Managing visual voicemail from multiple devices
US20090209286A1 (en) * 2008-02-19 2009-08-20 Motorola, Inc. Aggregated view of local and remote social information
CN101556669A (en) * 2008-04-11 2009-10-14 上海赢思软件技术有限公司 Method and device for conducting personalized marketing with user by using human-computer interaction technology
US8793339B2 (en) * 2008-08-29 2014-07-29 Red Hat, Inc. Facilitating client server interaction
US20100057560A1 (en) * 2008-09-04 2010-03-04 At&T Labs, Inc. Methods and Apparatus for Individualized Content Delivery
US8869256B2 (en) * 2008-10-21 2014-10-21 Yahoo! Inc. Network aggregator
US8683554B2 (en) * 2009-03-27 2014-03-25 Wavemarket, Inc. System and method for managing third party application program access to user information via a native application program interface (API)
US8549072B2 (en) * 2009-07-23 2013-10-01 Facebook, Inc. Markup language for incorporating social networking system information by an external website
US8589326B2 (en) * 2009-08-21 2013-11-19 Avaya Inc. Utilizing presence in conjunction with other information to determine an appropriate communications modality
JP5911432B2 (en) * 2010-02-08 2016-04-27 フェイスブック,インク. Communication of information about activities from different domains in social network systems
US8244848B1 (en) * 2010-04-19 2012-08-14 Facebook, Inc. Integrated social network environment
CA2704866A1 (en) * 2010-05-19 2011-11-19 Vendasta Technologies Inc. Unifying social graphs across multiple social networks
WO2011156832A1 (en) * 2010-06-13 2011-12-22 Bnc Ventures B.V. Method and system for managing customer relationships
US9553878B2 (en) * 2010-08-16 2017-01-24 Facebook, Inc. People directory with social privacy and contact association features
JP2012120041A (en) 2010-12-02 2012-06-21 Ntt Docomo Inc Telephone-directory-data integrating apparatus and method, and computer program therefor
CN102307210B (en) * 2011-01-13 2014-12-10 国云科技股份有限公司 Data downloading system and data management and downloading method thereof
US20120197967A1 (en) * 2011-01-27 2012-08-02 Sivapathalingham Sivavakeesar Socializing System, Framework and Methods thereof
US9547626B2 (en) 2011-01-29 2017-01-17 Sdl Plc Systems, methods, and media for managing ambient adaptability of web applications and web services
JP5758693B2 (en) * 2011-04-28 2015-08-05 株式会社日立国際電気 Customer service management system
JP2013008345A (en) * 2011-06-24 2013-01-10 Argyle Inc Coupon issuance system associated with social media
US9384101B2 (en) * 2011-07-26 2016-07-05 Apple Inc. Web application architecture
US10217117B2 (en) * 2011-09-15 2019-02-26 Stephan HEATH System and method for social networking interactions using online consumer browsing behavior, buying patterns, advertisements and affiliate advertising, for promotions, online coupons, mobile services, products, goods and services, entertainment and auctions, with geospatial mapping technology
CN103095663B (en) * 2011-11-04 2016-08-03 阿里巴巴集团控股有限公司 Information interacting method between a kind of A non logged-on user and device
CN103167444B (en) * 2011-12-19 2015-09-30 中国电信股份有限公司 Website obtains the method for subscriber phone number, system, client and server
US20130217416A1 (en) * 2011-12-23 2013-08-22 Microsoft Corporation Client check-in
CN102624728B (en) * 2012-03-09 2015-04-15 浙江大学城市学院 Method and system for carrying out whole-network login authentication by utilizing registered website user information
JP2013196063A (en) 2012-03-16 2013-09-30 Cellant Corp Cookie sharing program, web server with cookie sharing function, cookie sharing system and cookie sharing method
US8898766B2 (en) * 2012-04-10 2014-11-25 Spotify Ab Systems and methods for controlling a local application through a web page
JP5175402B1 (en) * 2012-06-21 2013-04-03 株式会社 ディー・エヌ・エー COMMUNICATION METHOD, COMMUNICATION DEVICE, AND PROGRAM
JP5510690B2 (en) * 2013-06-03 2014-06-04 豊 塚本 Personal information protection device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110029665A1 (en) 2008-08-14 2011-02-03 Tealeaf Technology, Inc. Dynamically configurable session agent
US20120084151A1 (en) 2009-12-30 2012-04-05 Kozak Frank J Facilitation of user management of unsolicited server operations and extensions thereto
US20130275228A1 (en) 2012-04-11 2013-10-17 Netgear, Inc. System and method for filtering advertising in a networking device

Also Published As

Publication number Publication date
CN105940391A (en) 2016-09-14
EA036433B1 (en) 2020-11-10
KR102433089B1 (en) 2022-08-16
IL245992B (en) 2020-03-31
CA2932286C (en) 2023-07-18
KR20160092021A (en) 2016-08-03
IL292474A (en) 2022-06-01
AU2021240187A1 (en) 2021-10-28
AU2023285951A1 (en) 2024-01-25
JP2020191123A (en) 2020-11-26
IL245992A0 (en) 2016-07-31
CN105940391B (en) 2020-08-04
WO2015083115A3 (en) 2015-12-17
JP7032492B2 (en) 2022-03-08
IL273052B (en) 2022-06-01
WO2015083115A2 (en) 2015-06-11
MX359477B (en) 2018-09-27
KR20220018101A (en) 2022-02-14
AU2019264558A1 (en) 2019-12-05
MX2018011867A (en) 2020-11-06
EP3077920A2 (en) 2016-10-12
BR112016012695A8 (en) 2020-05-12
BR112016012695A2 (en) 2017-08-08
JP7387779B2 (en) 2023-11-28
EA201691088A1 (en) 2016-11-30
AU2014358700B2 (en) 2019-08-15
JP2017502392A (en) 2017-01-19
JP6506762B2 (en) 2019-04-24
EP3077920A4 (en) 2017-05-10
JP2022068338A (en) 2022-05-09
JP2019133700A (en) 2019-08-08
JP2024023313A (en) 2024-02-21
AU2014358700A1 (en) 2016-07-21
IL273052A (en) 2020-04-30
JP6746746B2 (en) 2020-08-26
KR102251844B1 (en) 2021-05-13
KR20210056451A (en) 2021-05-18
CN111859128A (en) 2020-10-30
MX2016007301A (en) 2017-01-06
CA2932286A1 (en) 2015-06-11

Similar Documents

Publication Publication Date Title
US20230273971A1 (en) System and method for third party application activity data collection
JP7387779B2 (en) Systems and methods for websites
US10977427B2 (en) Third party application communication API
CA2840497C (en) System for multi-point publication syndication

Legal Events

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