KR100902732B1 - 모달리티에 관한 dom 이벤트 처리를 위한 프록시,멀티모달 단말기, dom 이벤트 처리 방법, 모달리티동기화 방법 - Google Patents

모달리티에 관한 dom 이벤트 처리를 위한 프록시,멀티모달 단말기, dom 이벤트 처리 방법, 모달리티동기화 방법 Download PDF

Info

Publication number
KR100902732B1
KR100902732B1 KR1020070123687A KR20070123687A KR100902732B1 KR 100902732 B1 KR100902732 B1 KR 100902732B1 KR 1020070123687 A KR1020070123687 A KR 1020070123687A KR 20070123687 A KR20070123687 A KR 20070123687A KR 100902732 B1 KR100902732 B1 KR 100902732B1
Authority
KR
South Korea
Prior art keywords
event
proxy
document
html
dom
Prior art date
Application number
KR1020070123687A
Other languages
English (en)
Other versions
KR20090056504A (ko
Inventor
안세열
Original Assignee
주식회사 케이티
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 케이티 filed Critical 주식회사 케이티
Priority to KR1020070123687A priority Critical patent/KR100902732B1/ko
Publication of KR20090056504A publication Critical patent/KR20090056504A/ko
Application granted granted Critical
Publication of KR100902732B1 publication Critical patent/KR100902732B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • G06F3/167Audio in a user interface, e.g. using voice commands for navigating, audio feedback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/038Indexing scheme relating to G06F3/038
    • G06F2203/0381Multimodal input, i.e. interface arrangements enabling the user to issue commands by simultaneous use of input devices of different nature, e.g. voice plus gesture on digitizer

Abstract

본 발명은 모달리티에 관한 DOM 이벤트 처리를 위한 프록시, 멀티모달 단말기, DOM 이벤트 처리 방법, 모달리티 동기화 방법에 관한 것으로, 더욱 상세하게는 멀티모달 단말기의 웹브라우저와 멀티모달 서버의 인터랙션 매니저간에 HTML 문서, SVG 문서, 음성 등과 같은 웹기반 마크업 문서 상의 모달리티에 관한 DOM(Document Object Model) 이벤트를 처리해 웹기반 마크업 문서의 상태를 변화시켜 다수의 모달리티의 동기를 맞추기 위한, 모달리티에 관한 DOM 이벤트 처리를 위한 프록시, 멀티모달 단말기, DOM 이벤트 처리 방법, 모달리티 동기화 방법을 제공하고자 한다.
이를 위하여, 본 발명은, 멀티모달 단말기에 있어서, 상기 멀티모달 단말기의 운영체제가 제공하는 웹브라우저 콘트롤을 호스팅하여 웹문서를 브라우징하기 위한 웹브라우저; 상기 웹브라우저 콘트롤 상에 로딩된 웹문서 내의 다수의 웹문서 요소; 및 상기 웹브라우저 콘트롤 상에서 상기 웹브라우저와 상기 웹문서 요소 사이에 탑재되어, 상기 웹문서 요소에서 발생시킨 문서 객체 모델 이벤트(이하, "DOM 이벤트"라 함)를 상기 웹브라우저로 중개하고, 상기 웹브라우저로부터 전달되는 문서 제어 이벤트를 해당 웹문서 요소에게 중개하기 위한 프록시를 포함한다.
모달리티, DOM(문서 객체 모델), 이벤트, 웹브라우저, 프록시, 인터랙션 매니저, HTML 문서, SVG 문서, 음성, 동기화

Description

모달리티에 관한 DOM 이벤트 처리를 위한 프록시, 멀티모달 단말기, DOM 이벤트 처리 방법, 모달리티 동기화 방법{Proxy, Terminal, Method for processing the Document Object Model Events for modalities}
본 발명은 모달리티에 관한 DOM 이벤트 처리를 위한 프록시, 멀티모달 단말기, DOM 이벤트 처리 방법, 모달리티 동기화 방법에 관한 것으로, 더욱 상세하게는 멀티모달 단말기의 웹브라우저와 멀티모달 서버의 인터랙션 매니저간에 HTML 문서, SVG 문서, 음성 등과 같은 웹기반 마크업 문서 상의 모달리티에 관한 DOM(Document Object Model) 이벤트를 처리해 웹기반 마크업 문서의 상태를 변화시켜 다수의 모달리티의 동기를 맞추기 위한, 모달리티에 관한 DOM 이벤트 처리를 위한 프록시, 멀티모달 단말기, DOM 이벤트 처리 방법, 모달리티 동기화 방법에 관한 것이다.
본 발명은 정보통신부 및 정보통신연구진흥원의 정보통신 선도기반 기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2005-S-113-02, 과제명: 유비쿼터스 환경지원 지식서비스 미들웨어 기술 개발].
멀티 모달리티 처리 시스템을 소개하면, 사용자측에는 음성 인터페이스 처리를 위한 마이크, 촉각 인터페이스 처리를 위한 펜/터치 스크린, 텍스트 인터페이스 처리를 위한 키 버튼 등이 탑재된 멀티모달 단말기가 구비되며, 네트워크 상에는 상기 멀티모달 단말기로부터 수신받은 다양한 모달리티 입력 정보(즉 멀티모달 단말기에서 발생시킨 모달리티)를 해석하여 해당 웹서버에게 넘겨주기 위한 인터랙션 매니저를 구비한 멀티모달 서버로 이루어진다. 여기서, 상기 웹서버는 멀티모달 단말기에서 발생시킨 모달리티에 대응되는 해당 어플리케이션(서비스)을 제공하는 서버를 의미한다.
그리고, 상기 멀티모달 단말기에는 상기 웹서버에서 운용하는 웹페이지, 바람직하게는 HTML 문서를 해석해 화면 등에 출력하기 위한 웹브라우저가 탑재된다.
한편, DOM(Document Object Model, 문서 객체 모델, 이하 "DOM"이라 함)은 문서를 트리 구조로 정형화하여 어플리케이션 프로그래밍 인터페이스(API; Application Programming Interface)를 통해 문서 구조의 노드값에 대해 조회, 추가, 삭제 등을 가능하게 하기 위한 문서 객체 모델을 의미한다.
예를 들어, 상기 멀티 모달리티 처리 시스템에 있어, 멀티모달 단말기에서 멀티모달 인터페이스를 지원하기 위해서는 웹브라우저가 다른 모달리티(예; VXML 브라우저에서 발생된 음성 등)에 의한 웹기반 마크업 문서(이하, "웹문서"라 통칭 함) 상태와 동기화를 유지하기 위한 DOM 이벤트를 멀티모달 서버의 인터랙션 매니저로 보내야 한다. 이하, 본 발명을 설명하는데 있어 웹문서로는 "HTML 문서"를, 웹브라우저로는 "HTML 브라우저"를 예로 들어 설명하기로 한다.
또한, 포켓피씨(PocketPC) 운영체제가 탑재된 PDA 환경의 멀티모달 단말기를 예로 들자면, HTML 브라우저의 HTTP 통신 기능, HTML 파싱/렌더링 기능 등을 구현하기 위해서는 "마이크로소프트 닷넷 프레임워크 2.0(Microsoft .NET Framework 2.0)"에서 제공되는 "웹브라우저 콘트롤(WebBrowser Control)"을 사용한다. 여기서, 웹브라우저 콘트롤은 멀티모달 단말기에 탑재되어 있는 "웹브라우저 액티브엑스(WebBrowser ActiveX) 콘트롤"을 관리하는 래퍼(Wrapper) 기능을 제공한다.
상기 멀티모달 단말기는 웹브라우저 콘트롤을 통해 윈도우즈 폼(Windows FORM) 상의 클라이언트 응용 프로그램에 HTML 문서를 표시하거나 HTML 브라우저의 웹 검색 기능을 클라이언트 응용 프로그램에 복제하는 등의 기능을 수행한다.
앞서 언급한 바와 같이, 멀티모달 단말기에서는 단말 운영체제에서 기본적으로 제공하는 웹브라우저 액티브엑스(WebBrowser ActiveX) 콘트롤을 메인 요소로 사용해 HTML 브라우저를 구동시킨다.
그런데, 상기와 같은 종래기술에서 제공되는 웹브라우저 액티브엑스 콘트롤은 멀티모달 단말기 상에서 HTML 문서를 통한 웹 서핑(네비게이션)을 수행하는데 있어 기본적인 기능을 제공할 수는 있으나, 멀티 모달리티 처리 시스템, 예컨대 멀티모달 단말기의 웹브라우저와 멀티모달 서버의 인터랙션 매니저간의 다양한 모달리티의 동기화를 수행하는데 상당한 제약이 있다.
즉, 멀티모달 단말기에서 발생된 모달리티에 관한 DOM 이벤트를 멀티모달 서버의 인터랙션 매니저로 전달해 모달리티의 동기화를 수행하기 위해서는, 멀티모달 단말기의 HTML 브라우저 상에 현재 로딩된 HTML 문서의 요소들이 발생시키는 DOM 이벤트를 가로채어 통신모듈을 통해 멀티모달 서버의 인터랙션 매니저로 보낼 수 있어야 한다. 그러나, 상기와 같은 종래기술에서 제공되는 웹브라우저의 인터페이스에는 이러한 기능이 정의되어 있지 않다.
또한, 상기와 같은 종래기술에서는, 멀티모달 단말기의 웹브라우저 콘트롤을 호스팅하여 HTML 브라우저를 사용하는 호스트 어플리케이션이, HTML 문서 상의 DOM으로의 직접적인 접근이 허용되지 않기 때문에 HTML 브라우저 상에 로딩된 HTML 문서의 요소들의 상태 등을 변경할 수 없는 문제점이 있다.
이에, 본 발명은 상기와 같은 문제점을 해결하고 상기와 같은 요구에 부응하기 위하여 제안된 것으로, 멀티모달 단말기의 웹브라우저와 멀티모달 서버의 인터랙션 매니저간에 HTML 문서, SVG 문서, 음성 등과 같은 웹기반 마크업 문서 상의 모달리티에 관한 DOM(Document Object Model) 이벤트를 처리해 웹기반 마크업 문서의 상태를 변화시켜 다수의 모달리티의 동기를 맞추기 위한, 모달리티에 관한 DOM 이벤트 처리를 위한 프록시, 멀티모달 단말기, DOM 이벤트 처리 방법, 모달리티 동기화 방법을 제공하는데 그 목적이 있다.
본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있으며, 본 발명의 실시예에 의해 보다 분명하게 알게 될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.
상기의 목적을 달성하기 위한 본 발명의 멀티모달 단말기는, 멀티모달 단말기에 있어서, 상기 멀티모달 단말기의 운영체제가 제공하는 웹브라우저 콘트롤을 호스팅하여 웹문서를 브라우징하기 위한 웹브라우저; 상기 웹브라우저 콘트롤 상에 로딩된 웹문서 내의 다수의 웹문서 요소; 및 상기 웹브라우저 콘트롤 상에서 상기 웹브라우저와 상기 웹문서 요소 사이에 탑재되어, 상기 웹문서 요소에서 발생시킨 문서 객체 모델 이벤트(이하, "DOM 이벤트"라 함)를 상기 웹브라우저로 중개하고, 상기 웹브라우저로부터 전달되는 문서 제어 이벤트를 해당 웹문서 요소에게 중개하기 위한 프록시를 포함한다.
한편, 본 발명의 DOM 이벤트 처리 방법은, 멀티모달 단말기에서 프록시를 통해 모달리티에 관한 DOM 이벤트를 처리하는 방법에 있어서, 상기 프록시가 HTML 문서 상의 HTML 요소가 발생시킨 HTML DOM 이벤트를 HTML 브라우저로 중개해 멀티모달 단말기의 통신모듈로 전달하는 단계; 상기 통신모듈이 HTML 브라우저로부터 전달받은 HTML DOM 이벤트를 멀티모달 서버의 인터랙션 매니저로 전송하는 단계; 상기 HTML DOM 이벤트 전송 결과로 상기 통신모듈이 멀티모달 서버의 인터랙션 매니저로부터 수신받은 특정 이벤트를 상기 HTML 브라우저로 전달하는 단계; 상기 HTML 브라우저가 상기 전달받은 특정 이벤트가 HTML 문서 제어 이벤트로 확인됨에 따라 상기 HTML 문서 제어 이벤트를 상기 프록시로 전달하는 단계; 및 상기 프록시가 HTML 브라우저로부터 전달받은 HTML 문서 제어 이벤트를 해당 웹문서 요소에게 중개하는 단계를 포함한다.
또한, 상기 본 발명의 DOM 이벤트 처리 방법은, 상기 프록시가 HTML 문서 상의 HTML 요소가 발생시킨 녹음시작신호를 멀티모달 단말기의 음성 입출력모듈로 중개해 해당 웹서버로 전달하는 단계를 더 포함한다.
또한, 상기 본 발명의 DOM 이벤트 처리 방법은, 상기 프록시가 HTML 문서 상의 SVG 뷰어에서 발생시킨 SVG DOM 이벤트를 HTML 브라우저로 중개해 멀티모달 단말기의 통신모듈로 전달하는 단계; 상기 통신모듈이 HTML 브라우저로부터 전달받은 SVG DOM 이벤트를 멀티모달 서버의 인터랙션 매니저로 전송하는 단계; 상기 SVG DOM 이벤트 전송 결과로 상기 통신모듈이 멀티모달 서버의 인터랙션 매니저로부터 수신받은 해당 SVG 문서 제어 이벤트를 상기 HTML 브라우저의 중개를 통해 상기 프록시로 전달하는 단계; 및 상기 프록시가 HTML 브라우저로부터 전달받은 상기 HTML 문서 제어 이벤트를 상기 SVG 뷰어에게 중개하는 단계를 더 포함한다.
한편, 본 발명은, 프로세서를 구비한 멀티모달 단말기에, 상기 멀티모달 단말기에 탑재된 프록시가 HTML 문서 상의 HTML 요소가 발생시킨 HTML DOM 이벤트를 HTML 브라우저로 중개해 멀티모달 단말기의 통신모듈로 전달하는 기능; 상기 통신모듈이 HTML 브라우저로부터 전달받은 HTML DOM 이벤트를 멀티모달 서버의 인터랙션 매니저로 전송하는 기능; 상기 HTML DOM 이벤트 전송 결과로 상기 통신모듈이 멀티모달 서버의 인터랙션 매니저로부터 수신받은 특정 이벤트를 상기 HTML 브라우저로 전달하는 기능; 상기 HTML 브라우저가 상기 전달받은 특정 이벤트가 HTML 문서 제어 이벤트로 확인됨에 따라 상기 HTML 문서 제어 이벤트를 상기 프록시로 전달하는 기능; 및 상기 프록시가 HTML 브라우저로부터 전달받은 HTML 문서 제어 이벤트를 해당 웹문서 요소에게 중개하는 기능을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
또한, 상기 본 발명은, 상기 프록시가 HTML 문서 상의 HTML 요소가 발생시킨 녹음시작신호를 멀티모달 단말기의 음성 입출력모듈로 중개해 해당 웹서버로 전달하는 기능을 더 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
또한, 상기 본 발명은, 상기 프록시가 HTML 문서 상의 SVG 뷰어에서 발생시 킨 SVG DOM 이벤트를 HTML 브라우저로 중개해 멀티모달 단말기의 통신모듈로 전달하는 기능; 상기 통신모듈이 HTML 브라우저로부터 전달받은 SVG DOM 이벤트를 멀티모달 서버의 인터랙션 매니저로 전송하는 기능; 상기 SVG DOM 이벤트 전송 결과로 상기 통신모듈이 멀티모달 서버의 인터랙션 매니저로부터 수신받은 해당 SVG 문서 제어 이벤트를 상기 HTML 브라우저의 중개를 통해 상기 프록시로 전달하는 기능; 및 상기 프록시가 HTML 브라우저로부터 전달받은 상기 HTML 문서 제어 이벤트를 상기 SVG 뷰어에게 중개하는 기능을 더 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
한편, 본 발명의 모달리티 동기화 방법은, 멀티모달 단말기의 프록시를 통해 웹서버의 보이스 브라우저 상태와 멀티모달 단말기의 웹브라우저 상태를 동기화하는 방법에 있어서, 상기 멀티모달 단말기의 음성 입출력모듈이 사용자 음성 특징을 상기 보이스 브라우저로 전송하는 단계; 상기 웹서버의 보이스 브라우저가 상기 수신받은 사용자 음성 특징에 대해 수행한 음성인식결과를 멀티모달 서버의 인터랙션 매니저에게 전달해 VoiceXML 문서 상태 변경을 통보하는 단계; 상기 멀티모달 서버의 인터랙션 매니저가 상기 수신받은 음성인식결과에 따른 HTML 문서 제어 이벤트를 상기 멀티모달 단말기의 통신모듈로 전송하는 단계; 상기 멀티모달 단말기의 통신모듈이 상기 수신받은 HTML 문서 제어 이벤트를 상기 웹브라우저의 중개를 거쳐 상기 프록시로 전달하는 단계; 및 상기 프록시가 상기 수신받은 HTML 문서 제어 이벤트를 해당 웹문서 요소에게 중개하는 단계를 포함한다.
한편, 본 발명은, 프로세서를 구비한 멀티 모달리티 처리 시스템에, 멀티모 달 단말기의 음성 입출력모듈이 사용자 음성 특징을 웹서버의 보이스 브라우저로 전송하는 기능; 상기 웹서버의 보이스 브라우저가 상기 수신받은 사용자 음성 특징에 대해 수행한 음성인식결과를 멀티모달 서버의 인터랙션 매니저에게 전달해 VoiceXML 문서 상태 변경을 통보하는 기능; 상기 멀티모달 서버의 인터랙션 매니저가 상기 수신받은 음성인식결과에 따른 HTML 문서 제어 이벤트를 상기 멀티모달 단말기의 통신모듈로 전송하는 기능; 상기 멀티모달 단말기의 통신모듈이 상기 수신받은 HTML 문서 제어 이벤트를 상기 웹브라우저의 중개를 거쳐 상기 프록시로 전달하는 기능; 및 상기 프록시가 상기 수신받은 HTML 문서 제어 이벤트를 해당 웹문서 요소에게 중개하는 기능을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
한편, 본 발명의 모달리티에 관한 DOM 이벤트 처리를 위한 프록시는, 모달리티에 관한 DOM 이벤트 처리를 위한 프록시에 있어서, 웹문서 내에서 발생된 문서 객체 모델 이벤트(이하, "DOM 이벤트"라 함)를 웹브라우저를 거쳐 통신모듈로 중개하기 위한 DOM 이벤트 중개 인터페이스; 상기 웹문서 내에서 발생된 녹음시작신호를 음성 입출력모듈로 중개하기 위한 녹음시작 이벤트 중개 인터페이스; 및 상기 통신모듈로부터 상기 웹브라우저를 거쳐 수신되는 문서 제어 이벤트를 상기 웹문서 내로 중개하기 위한 문서 제어 이벤트 통지 인터페이스를 포함한다.
상기와 같은 본 발명은 멀티모달 단말기와 멀티모달 서버간에 모달리티에 관 한 DOM 이벤트를 동기화시킬 수 있는 효과가 있다.
또한, 본 발명은 단말 운영체제, 웹브라우저 컨트롤 등에 따른 제약 사항이 많은 단말기 환경에서도 액티브액스(ActiveX) 형태로 구현된 프록시를 통해 HTML DOM 이벤트, SVG DOM 이벤트, 사용자 음성 등에 관한 다양한 모달리티를 처리할 수 있는 효과가 있다.
또한, 본 발명은 멀티모달 단말기 상에서 구동되는 웹문서에서 발생된 DOM 이벤트를 멀티모달 서버로 전송하고 이에 대한 웹문서 제어 이벤트를 받아 해당 요소에 관한 웹문서 상태를 변경할 수 있는 효과가 있다.
또한, 본 발명은 음성 모달리티가 독립적으로 동작되는 분산 멀티모달 인터페이스 환경에 있어서 프록시를 통해 사용자의 음성 입력에 대한 녹음시작 사실을 멀티모달 단말기로부터 멀티모달 서버로 통보할 수 있는 효과가 있다.
상술한 목적, 특징 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명하기로 한다.
본 발명에서는 모달리티에 관한 DOM 이벤트 처리 방법, 즉 멀티모달 단말기의 웹브라우저(이하, "HTML 브라우저"를 예로 듬)와 멀티모달 서버의 인터랙션 매니저간에 HTML 문서, XML 문서, SVG 문서, InkML 문서 등과 같은 웹기반 마크업 문서(이하, "웹문서"라 통칭하며, 이러한 웹문서에 대해 "HTML 문서"를 예로 듬) 상의 모달리티에 관한 DOM(Document Object Model) 이벤트를 처리해 웹기반 마크업 문서의 상태를 변화시켜 다수의 모달리티의 동기를 맞추기 위한 방법을 제공한다.
즉, 본 발명에서는 웹브라우저 콘트롤(WebBrowser Control)의 제약 사항이 많은 멀티모달 단말기, 예를 들어 "포켓피씨(PocketPC) 운영체제" 또는 "Windows CE 5.0 운영체제"가 탑재된 PDA 환경의 멀티모달 단말기 등에 액티브엑스(ActiveX) 형태로 구현한 프록시(Proxy)를 탑재시켜 HTML 문서 상의 HTML 요소들이 발생시킨 DOM 이벤트를 가로채어, 상기 프록시를 통해 멀티모달 단말기의 통신모듈에 DOM 이벤트를 보내어 멀티모달 서버의 인터랙션 매니저로 전송되도록 함으로서, HTML 문서 내의 DOM 상태를 변경해 멀티모달 단말기와 멀티모달 서버간에 모달리티의 동기화가 이루어지도록 한다.
본 발명에 대해 구체적으로 설명하기에 앞서, 공지의 HTML DOM 이벤트 및 본 발명에서 제시하는 프록시에 대해 간략히 설명하기로 한다.
HTML DOM 이벤트란 HTML 문서 상에서 사용자에 의한 클릭, 텍스트 입력 등에 따라 발생되는 "mouseclick 이벤트", "onfocus 이벤트" 등과, 사용자의 입력없이 발생되는 "onload 이벤트" 등을 통칭한다.
멀티모달 단말기 상의 HTML 문서에서 발생되는 HTML DOM 이벤트를 멀티모달 서버의 인터랙션 매니저로 전송하기 위해서는 해당 HTML DOM 이벤트가 HTML 브라우저로 올라가야 된다. 그런데, "포켓피씨(PocketPC) 운영체제" 또는 "Windows CE 5.0 운영체제" 환경의 멀티모달 단말기에 탑재된 HTML 브라우저는 웹브라우저 콘트롤을 사용해 HTML DOM 이벤트를 발생시킨 해당 HTML DOM으로 직접적으로 접근할 수 없다.
그런데, HTML 브라우저는 자신이 로딩한 액티브엑스(ActiveX) 형태의 객체와는 메시지를 서로 주고받아서 상호 통신을 할 수 있는데, 이러한 점을 참작해 본 발명에서는 액티브엑스(ActiveX) 형태로 프록시를 구현해 HTML DOM과 HTML 브라우저 사이에 중개자로서 탑재시켜, HTML 문서에서 HTML DOM 이벤트가 발생되는 경우에 해당 자바스크립트로 프록시에 관한 해당 인터페이스를 호출한다.
상기 프록시에 관한 인터페이스를 소개하면, 본 발명에서는 전송 인터페이스로 "sendDOMEvent 인터페이스", "sendSVGDOMEvent 인터페이스", "sendRecordSignal 인터페이스" 등을 정의한다. 여기서 소개한 전송 인터페이스에 대해서는 하기에서 그 구체적인 설명을 하기로 하며, 본 발명에서 사용하는 몇가지 인자에 대해 먼저 간략히 소개하기로 한다.
인자 중 "이벤트 이름(event name)"은 본 발명에서 멀티모달 단말기와 멀티모달 서버간에 정의되는 비동기 이벤트의 이름을 의미하며, "이벤트 소스 이름(event src name)"은 이벤트가 발생한 HTML 요소의 이름으로서 이것이 HTML 요소의 아이디를 의미하며, "폼 이름(FORM name)"은 이벤트가 발생한 HTML 요소가 속한 폼(FORM)의 이름을 의미한다.
이하, 도면을 참조하여 본 발명에 대해 설명하기에 앞서, 본 발명의 프록시에 관한 설명, 예컨대 메쏘드, 이벤트, 인터페이스(API) 등에 대해 구체적인 설명을 하기에서 상세히 하기로 한다.
1. 본 발명에 있어 HTML 브라우저와 HTML DOM(또는 SVG DOM)간의 통신을 설정하는 중개자 컴포넌트의 기능을 수행하도록 구현된 액티브엑스 디엘엘(ActiveX DLL)이다. HTML DOM 이벤트 또는 SVG DOM 이벤트를 HTML 브라우저로 전송하기 위해 상기 프록시에 다음과 같은 인터페이스를 구비한다.
(1) "sendDOMEvent 인터페이스"
- 형식: HRESULT sendDOMEvent([in] BSTR eventName, [in] BSTR srcName, [in] BSTR formName, [in] BSTR emmaXml)
- 인자: eventName(이벤트 이름), srcName(이벤트를 발생시킨 요소의 이름), formName(이벤트를 발생시킨 요소가 속한 폼(FORM)의 이름), emmaXml(폼(FORM)의 입력(INPUT) 요소들을 시리얼(serialize)한 EMMA 형식의 XML 문자열)[주; EMMA(Extensible Multi-Modal Annotation)는 멀티모달 플랫폼의 컴포넌트들간의 표준화된 데이터 교환 포맷]
- 부연설명: HTML 요소들이 발생시킨 이벤트를 HTML 브라우저에 전달하기 위해 "sendDOMEvent 인터페이스"를 호출한다. 여기서, 폼(FORM)을 시리얼화(serialize)한 EMMA XML은 자바스크립트 라이브러리["mmi.js"]를 이용해 사전에 만들어 두어야 한다[주; 하기에서 "mmi.js" 자바스크립트 라이브러리에 대해 상세히 설명하기로 함]
(2) "sendSVGDOMEvent 인터페이스"
- 형식: HRESULT sendSVGDOMEvent([in] BSTR eventName, [in] BSTR objectId, [in] BSTR emmaXml)
- 인자: eventName(SVG DOM 이벤트 이름), objectId(SVG ActiveX가 내장된 객체 태그의 아이디), emmaXml(폼(FORM)의 입력(INPUT) 요소들을 시리얼(serialize)한 EMMA 형식의 XML 문자열)
- 부연설명: SVG 뷰어의 액티브엑스가 SVG DOM 이벤트를 HTML 브라우저에 전달하기 위해 "sendSVGEvent 인터페이스"를 호출한다.
(3) "sendRecordSignal 인터페이스"
- 형식: HRESULT sendRecordSignal(void)
- 부연설명: 보이스 브라우저의 녹음 기능을 활성화시키기 위해 "sendRecordSignal 인터페이스"를 호출한다.
2. 본 발명에 있어 멀티모달 서버의 인터랙션 매니저로부터 수신되는 "xhtml 이벤트"를, HTML DOM으로 전달(반영)해 HTML 문서 상태를 변경하거나 SVG DOM으로 전달(반영)해 SVG 문서 상태를 변경하기 위해 상기 프록시, 바람직하게는 상기 프록시가 구현되는 HTML 문서에 다음과 같은 프록시 이벤트 핸들러를 구비한다.
(1) "EventSetFocus 핸들러"
- 형식: void EventSetFocus(BSTR elementName, BSTR formName, BSTR emmaXml)
- 인자: elementName(상태를 반영할 요소의 이름), formName(상태를 반영할 폼(FORM)의 이름), emmaXml(폼(FORM)의 입력(INPUT) 요소들을 시리얼(serialize)한 EMMA 형식의 XML 문자열)
- 부연설명: 멀티모달 서버의 인터랙션 매니저로부터 "xhtml.setfocus 이벤트"를 수신받은 경우에 "EventSetFocus 핸들러"를 통해 "xhtml.setfocus 이벤트"를 HTML DOM으로 전달한다. 그에 따라 하기의 "mmi.js"의 래퍼 함수(wrapper function)가 "emmaXml"을 파싱하여 입력 요소들의 값을 변경하고, "elementName"의 요소로 포커스를 옮긴다.
(2) "EventSetFields 핸들러"
- 형식: void EventSetFields(BSTR formName, BSTR emmaXml)
- 인자: formName(상태를 반영할 폼(FORM)의 이름), emmaXml(폼(FORM)의 입력(INPUT) 요소들을 시리얼(serialize)한 EMMA 형식의 XML 문자열)
- 부연설명: 멀티모달 서버의 인터랙션 매니저로부터 "xhtml.setfields 이벤트"를 수신받은 경우에 "EventSetFields 핸들러"를 통해 "xhtml.setfields 이벤트"를 HTML DOM으로 전달한다. 그에 따라 하기의 "mmi.js"의 래퍼 함수(wrapper function)가 "emmaXml"을 파싱하여 입력 요소들의 값을 변경한다.
(3) "EventActivateLink 핸들러"
- 형식: void EventActivateLink(BSTR linkName)
- 인자: linkName(점프할 URL이 포함된 태그의 이름)
- 부연설명: 멀티모달 서버의 인터랙션 매니저로부터 "xhtml.activate.link 이벤트"를 수신받은 경우에 "EventActivateLink 핸들러"를 통해 "xhtml.activate.link 이벤트"를 HTML DOM으로 전달한다. 그에 따라 하기의 "mmi.js"의 래퍼 함수(wrapper function)가 "linkName 요소"의 "href"에 저장된 URL로 현재 HTML 문서의 "location.href"의 값을 변경하여 웹페이지를 이동시킨다.
(4) "EventActivateSubmit 핸들러"
- 형식: void EventActivateSubmit(BSTR formName)
- 인자: formName(제출(submit)할 폼(FORM)의 이름)
- 부연설명: 멀티모달 서버의 인터랙션 매니저로부터 "xhtml.activate.submit 이벤트"를 수신받은 경우에 "EventActivateSubmit 핸들러"를 통해 "xhtml.activate.submit 이벤트"를 HTML DOM으로 전달한다. 그에 따라 하기의 "mmi.js"의 래퍼 함수(wrapper function)가 해당 "formName"을 갖는 "FORM"을 찾아 제출한다.
(5) "EventActivateReset 핸들러"
- 형식: void EventActivateReset(BSTR formName)
- 인자: formName(리셋(reset)시킬 폼(FORM)의 이름)
- 부연설명: 멀티모달 서버의 인터랙션 매니저로부터 "xhtml.activate.reset 이벤트"를 수신받은 경우에 "EventActivateReset 핸들러"를 통해 "xhtml.activate.reset 이벤트"를 HTML DOM으로 전달한다. 그에 따라 하기의 "mmi.js"의 래퍼 함수(wrapper function)가 해당 "formName"을 갖는 "FORM"을 찾아 리셋시킨다.
(6) "EventSVGDialogStart 핸들러"
- 형식: void EventSVGDialogStart(BSTR objectId, BSTR contentUrl, BSTR content)
- 인자: objectId(SVG ActiveX의 아이디), contentUrl(SVG 문서의 URL), content(SVG 포맷의 XML 문자열)
- 부연설명 : 멀티모달 서버의 인터랙션 매니저로부터 "svg.dialog.start 이벤트"를 수신받은 경우에 "EventSVGDialogStart 핸들러"를 통해 "svg.dialog.start 이벤트"를 HTML DOM으로 전달한다. 그에 따라 하기의 "mmi.js"의 래퍼 함수(wrapper function)가 "contentUrl" 또는 "content"를 "objectId"로 임베딩된 "SVG ActiveX"에 전달해 SVG 문서 파일을 로딩한다. 여기서, "contentUrl" 또는 "content" 중 어느 하나는 유효한 값을 가져야 한다.
(7) "EventSVGDialogZoomIn 핸들러"
- 형식: void EventSVGDialogZoomIn(BSTR objectId, double xcoord, double ycoord, int zoomLevel)
- 인자: objectId(SVG ActiveX의 아이디), xcoord(확대 시 원점이 되는 x 좌표), ycoord(확대 시 원점이 되는 y 좌표), zoomLevel(확대 배율)
- 부연설명: 멀티모달 서버의 인터랙션 매니저로부터 "svg.dialog.zoomin 이벤트"를 수신받은 경우에 "EventSVGDialogZoomIn 핸들러"를 통해 "svg.dialog.zoomin 이벤트"를 HTML DOM으로 전달한다. 그에 따라 하기의 "mmi.js"의 래퍼 함수(wrapper function)가 각 인자들을 "objectId"로 임베딩된 "SVG ActiveX"에 전달해 현재 로딩된 SVG 문서를 확대하여 표시한다.
(8) "EventSVGDialogZoomOut 핸들러"
- 형식: void EventSVGDialogZoomOut(BSTR objectId, double xcoord, double ycoord, int zoomLevel)
- 인자: objectId(SVG ActiveX의 아이디), xcoord (축소 시 원점이 되는 x 좌표), ycoord(축소 시 원점이 되는 y 좌표), zoomLevel(축소 배율)
- 부연설명: 멀티모달 서버의 인터랙션 매니저로부터 "svg.dialog.zoomout 이벤트"를 수신받은 경우에 "EventSVGDialogZoomOut 핸들러"를 통해 "svg.dialog.zoomout 이벤트"를 HTML DOM으로 전달한다. 그에 따라 하기의 "mmi.js"의 래퍼 함수(wrapper function)가 각 인자들을 "objectId"로 임베딩된 "SVG ActiveX"에 전달해 현재 로딩된 SVG 문서를 축소하여 표시한다.
(9) "EventSVGDialogMove 핸들러"
- 형식: void EventSVGDialogMove(BSTR objectId, double xcoord, double ycoord)
- 인자: objectId(SVG ActiveX의 아이디), xcoord(이동할 x 좌표), ycoord(이동할 y 좌표)
- 부연설명: 멀티모달 서버의 인터랙션 매니저로부터 "svg.dialog.move 이벤트"를 수신받은 경우에 "EventSVGDialogMove 핸들러"를 통해 "svg.dialog.move 이벤트"를 HTML DOM으로 전달한다. 그에 따라 하기의 "mmi.js"의 래퍼 함수(wrapper function)가 각 인자들을 "objectId"로 임베딩된 "SVG ActiveX"에 전달해 현재 로딩된 SVG 문서를 이동시켜 표시한다.
(10) "EventSVGSetViewPoint 핸들러"
- 형식: void EventSVGDialogSetViewPoint(BSTR objectId, double xcoord, double ycoord)
- 인자: objectId(SVG ActiveX의 아이디), xcoord(새 원점 x 좌표), ycoord(새 원점 y 좌표)
- 부연설명: 멀티모달 서버의 인터랙션 매니저로부터 "svg.dialog.setviewpoint 이벤트"를 수신받은 경우에 "EventSVGSetViewPoint 핸들러"를 통해 "svg.dialog.setviewpoint 이벤트"를 HTML DOM으로 전달한다. 그에 따라 하기의 "mmi.js"의 래퍼 함수(wrapper function)가 각 인자들을 "objectId"로 임베딩된 "SVG ActiveX"에 전달해 현재 로딩된 SVG 문서의 원점을 이동시켜 표시한다.
3. 한편, 본 발명에서 제시한 상기 프록시가 구동하기 위해서는 HTML 문서 내에 상기 프록시가 액티브엑스(ActiveX) 형태인 "AxMMIProxy.ocx"로 삽입되어야 한다. 이러한 "AxMMIProxy.ocx"는 다음의 [표 1]과 같은 코드를 통해 HTML 문서 내에 삽입된다.
Figure 112007086619506-pat00001
4. 한편, 상기 언급한 본 발명의 "mmi.js" 자바스크립트 라이브러리는 상기 프록시를 사용하기 쉽도록 래핑(wrapping)하고 있는 자바스크립트 메쏘드 라이브러리이다. 이러한 "mmi.js"는 HTML 어플리케이션(즉 HTML 문서 또는 SVG 문서)이 위치한 웹서버의 해당 경로의 디렉토리에 복사되어 있어야 하고, 다음의 [표 2]와 같은 코드를 통해 HTML 문서 내에 삽입된다.
Figure 112007086619506-pat00002
5. 그럼, 상기 언급한 본 발명의 "mmi.js" 자바스크립트 라이브러리에 대해 상세히 설명하기로 한다.
상기 "mmi.js"는, "AxMMIProxy.ocx"에 정의된 다수의 인터페이스들에 대해 HTML 어플리케이션이 해당 인터페이스 사용을 위한 메쏘드를 호출하기 쉽도록 "sendDOMEvent 메쏘드", "sendSVGDOMEvent 메쏘드" 등으로 단순화시키고, 프록시 상에서 발생된 이벤트를 HTML 어플리케이션에서 직접 핸들링하지 않아도 되도록 디폴트 핸들러(default handler)로서 구현된 자바스크립트 라이브러리이다.
즉, 본 발명에 사용되는 HTML 어플리케이션을 제작하기 위해서는 HTML 문서에 "AxMMIProxy.oc"x와 "mmi.js"를 HTML 문서 내에 삽입하면 되며, HTML 어플리케이션 구동 시에 "mmi.js"에 정의된 "sendDOMEvent 메쏘드", "sendSVGDOMEvent 메쏘드"를 호출하는 것으로서 멀티 모달리티 처리 인터페이스 기능을 구현할 수 있다. 이러한 "sendDOMEvent 메쏘드", "sendSVGDOMEvent 메쏘드"는 호출된 경우에 자신을 호출한 요소의 폼(FORM)을 검출하고 EMMA XML을 생성해 프록시에 전달한다.
또한, 상기 "mmi.js"는 프록시가 멀티모달 서버의 인터랙션 매니저로부터 "xhtml 이벤트"를 수신받은 경우에 해당 이벤트를 HTML DOM 또는 SVG DOM으로 전달해 현재 로딩된 해당 DOM의 폼(FORM) 및 입력(INPUT) 요소들의 상태를 자동으로 변경되도록 함으로서, HTML 어플리케이션에 프록시에 관한 이벤트 핸들러(event handler)를 직접 구현하지 않아도 된다.
6. 다음으로, 본 발명에 사용되는 HTML 어플리케이션을 제작하는데 있어 지켜야 되는 몇가지 사항에 대해 언급하기로 한다.
(1) 폼(FORM) 요소 선언
멀티 모달리티 처리 인터페이스에서는 입력 요소들[<INPUT TYPE=" ">]과 태그에 대해 멀티모달 단말기와 멀티모달 서버간 동기화를 이뤄야 한다. 통상의 데스크톱 컴퓨터 환경의 웹브라우저(예; Internet Explorer 등)에 구현된 DOM에서는 각각의 입력 요소에 대해 아이디 또는 이름을 사용해 접근이 가능하지만, 포켓 피씨 환경의 웹브라우저 상의 HTML DOM에서는 폼(FORM)의 하위 요소만을 사용해 입력 요소로 접근할 수 밖에 없다.
따라서, 멀티모달 단말기와 멀티모달 서버간 동기화를 원하는 입력 요소는 반드시 폼(FORM)의 자식으로 존재해야 되며, 여기서 폼(FORM)은 반드시 이름(name) 속성을 갖음과 아울러 HTML 문서의 바디(body) 내부에 하나의 폼(FORM)만이 존재하는 것이 바람직하다.
(2) 이벤트 발생
본 발명에서 이벤트를 발생시키기 위해서는 다음의 [표 3]과 같이 "mmi.js"에 정의된 "sendDOMEvent 메쏘드" 호출을 통해서 이뤄져야 된다. 즉, "sendDOMEvent 메쏘드"에 DOM 이벤트의 "이름"과 현재 "element의 this reference"를 넘겨주면 된다.
Figure 112007086619506-pat00003
그럼, 이하 도 1 내지 도 6을 참조하여 본 발명에서 제시하는 모달리티에 관한 DOM 이벤트 처리 방법에 대해 보다 상세히 설명하기로 한다.
도 1은 본 발명이 적용되는 멀티 모달리티 처리 시스템에 대한 일실시예 구성도이다.
도 1에 도시된 바와 같이, 멀티모달 단말기(10)에는 HTML 브라우저(11), 음성 입출력모듈(12) 및 통신모듈(13) 등이 탑재되어 있으며, 멀티모달 서버(20)에는 인터랙션 매니저(21) 등이 탑재되어 있으며, 웹서버(30)에는 모달리티 표현을 위한 다수의 마크업언어 엔진(31)[예; HTML 엔진, VXML 엔진, SVG 엔진 및 JSP 엔진 등]이 탑재되어 있다.
상기 멀티모달 서버(20)에서 처리되는 멀티모달 단말기(10)의 입력 모달리티로는 스타일러스 펜 입력 정보, 텍스트 입력 정보, 음성 입력 정보 등이 되며, 멀티모달 단말기(10)로의 출력 모달리티로는 GUI 화면 정보, 음성 정보 등이 된다. 이와 같은 멀티모달 단말기(10)와 멀티모달 서버(20)간의 모든 입출력 모달리티는 웹서버(30) 상의 다수의 마크업언어 엔진에 의해 표현된다.
그리고, 상기 멀티모달 서버(20)의 인터랙션 매니저(21)는 W3C에서 제안된 "SCXML(State Chart XML) 스크립트"를 기반으로 하여 동작한다.
상기 멀티모달 단말기(10)는 통신모듈(13)을 통해 멀티모달 서버(20)와 통신 연결된 상태이며, 자체 구비된 HTML 브라우저(11)가 키 버튼, 스타일러스 펜 등의 입력 디바이스를 통해 특정 정보를 입력받고, 텍스트, 그래픽 등을 화면에 출력한다. 또한, 멀티모달 단말기(10) 상에는 음성 입출력모듈(12)이 백그라운드 프로세서에 의해 실행되며, 이러한 음성 입출력모듈(12)은 HTML 브라우저(11)의 화면에 동기화되어 음성 입출력 기능을 수행한다.
부연적으로, 상기 멀티모달 단말기(10)의 HTML 브라우저(11)는 멀티모달 인터페이스를 제공하는 HTML 어플리케이션을 구동하는 프로그램으로서, 사용자에 의해 임의적으로 활성화되거나 특정 HTML 문서 접근 시에 활성화될 수 있다.
또한, 상기 멀티모달 단말기(10)의 통신모듈(13)은 HTML 브라우저(11)가 비활성화되어 있더라도 멀티모달 서버(20)로부터 특정 이벤트를 받는 경우에 HTML 브라우저(11)를 활성화시킬 수 있다.
도 2는 본 발명에 따른 멀티모달 단말기의 HTML 브라우저가 웹브라우저 컨트롤을 사용하는 경우에 프록시를 통해 HTML DOM 이벤트를 처리하는 과정을 보여주기 위한 일실시예 설명도이다.
도 2에서, HTML 브라우저(11)는 멀티모달 단말기(10) 상에서 단말 운영체제가 제공하는 웹브라우저 콘트롤(50)을 호스팅하여 HTML 문서를 브라우징하는 호스트 어플리케이션이며, HTML DOM(51)은 웹브라우저 콘트롤(50) 상에 현재 로딩된 HTML 문서 내의 객체 모델이다.
본 발명에서는 액티브엑스(ActiveX) 형태로 구현한 프록시(52)를 HTML DOM(51)과 HTML 브라우저(11) 사이에 중개자로서 탑재시켜, 상기 HTML DOM(51)과 HTML 브라우저(11)간에 프록시(52)를 통해 간접적으로 데이터 통신을 수행할 수 있도록 하며, HTML DOM(51)의 이벤트, 예컨대 HTML 문서 상에서 발생된 모달리티에 관한 이벤트를 HTML 브라우저(11)로 전달해 멀티모달 서버(20)의 인터랙션 매니저(21)로 전송되도록 하며, 상기 멀티모달 서버(20)의 인터랙션 매니저(21)로부터 수신받은 HTML 문서 상태 변경 명령에 대해 HTML 브라우저(11)의 명령에 의해 HTML DOM(51)의 해당 상태를 변경되도록 한다.
예컨대, 종래방식에서는 웹브라우저 콘트롤(50)을 호스팅한 HTML 브라우저(11)가 현재 로딩된 HTML DOM(51)에 직접 접근할 수 없었지만, 본 발명에서 제시한 프록시(52)를 통해, 바람직하게는 HTML 브라우저(11)와 프록시(52)간의 IPC(Inter-Process Communication) 통신 방식을 통해 모달리티에 관한 이벤트에 대응되는 메시지를 "WM_COPYDATA 방식"으로서 상호 주고 받을 수 있다.
또한, 본 발명에서 제시한 프록시(52)와 HTML DOM(51)간에는 자바스크립트(JAVASCRIPT)로 구현한 메쏘드 호출 및 이벤트 통지를 통해 상호 통신을 수행할 수 있다. 예컨대, 상기 HTML DOM(51)은 HTML 문서 상의 HTML 요소에 의해 DOM 이벤트가 발생되는 경우에 프록시 로딩, 프록시 인터페이스 호출 등을 수행하며, 상기 프록시(52)는 HTML 브라우저(11)를 통해 멀티모달 서버(20)의 인터랙션 매니저(21)로부터 HTML 문서 상태 변경 이벤트를 통지받는 경우에 해당 이벤트를 HTML DOM(51)으로 통지한다.
도 3은 도 2의 멀티모달 단말기에서 프록시를 통해 HTML 문서의 DOM 이벤트를 멀티모달 서버로 전송하는 과정과 멀티모달 서버로부터 이벤트를 통지받아 프록시를 통해 HTML 문서의 상태를 변경하는 과정을 보여주기 위한 일실시예 설명도이다.
도 3에서, 웹서버(30)에는 보이스 브라우저(60)가 탑재되어 있는데, 상기 보이스 브라우저(60)는 멀티모달 단말기(10)에서 사용자가 발화한 음성을 인식하는 기능을 수행한다. 예컨대, 멀티모달 단말기(10)의 HTML 브라우저(11)에 표시된 HTML 문서의 내용을 보면서 사용자가 음성을 발화해 페이지 이동 등을 요구하는 것을 웹서버(30)의 보이스 브라우저(60)에서 처리한다.
특히, 본 발명에서는 HTML 문서 상의 HTML 요소(72)에서 발생시킨 DOM 이벤트를 멀티모달 서버(20)측으로 중개하고 상기 멀티모달 서버(20)측으로부터 수신받은 HTML 문서 제어 이벤트(HTML 문서 상태 변경 이벤트)를 HTML 요소(72)로 중개해 HTML 문서의 상태를 변경시키기 위한 프록시(52), 바람직하게는 프록시 객체(71)가 객체 태그[<object> tag]로 HTML 문서 내에 삽입된다.
즉, 멀티모달 단말기(10)에 있어 HTML 문서 상의 HTML 요소(72)에서 DOM 이벤트를 발생시켜 프록시 객체(71)로 전달하면, 상기 프록시 객체(71)는 IPC 통신 방식으로 상기 DOM 이벤트를 HTML 브라우저(11)로 중개해 통신모듈(13)로 전달하며, 그에 따라 상기 통신모듈(13)이 XML RPC 통신 방식으로 DOM 이벤트를 멀티모달 서버(20)의 인터랙션 매니저(21)로 전송한다. 여기서, HTML 브라우저(11)와 통신모듈(13)간에는 IPC 통신 방식으로서 데이터 통신을 수행하며, 각각 서로 독립된 프로세스에 의해 동작한다.
예컨대, 멀티모달 단말기(10)에 있어 상기 HTML 브라우저(11)는 HTTP를 통해 웹서버(30)에서 제공되는 HTML 문서를 로딩해 구동하는 것만을 전담하며, 상기 HTML 브라우저(11)는 HTML 문서 상에서 HTML 요소(72)에서 발생시킨 DOM 이벤트를 통신모듈(13)로 보내어 간접적으로 멀티모달 서버(20)의 인터랙션 매니저(21)와 XML RPC 통신 방식으로서 데이터 통신을 수행한다.
한편, 상기 멀티모달 서버(20)의 인터랙션 매니저(21)는 웹서버(30)의 보이스 브라우저(60)로부터 VoiceXML 문서의 상태를 알리는 이벤트를 받은 경우에 상기 멀티모달 단말기(10) 상의 HTML 브라우저(11)의 상태도 동기(sync)를 맞추며, 이때 해당되는 이벤트, 즉 HTML 문서 상태를 변경시키기 위한 HTML 문서 제어 이벤트를 XML RPC 통신 방식으로서 멀티모달 단말기(10)의 통신모듈(13)로 전송한다.
이에, 상기 멀티모달 단말기(10)에 있어 통신모듈(13)을 통해 HTML 문서 제어 이벤트를 수신받은 경우에 상기 통신모듈(13)은 멀티모달 서버(20)의 인터랙션 매니저(21)로부터 수신받은 HTML 문서 제어 이벤트를 HTML 브라우저(11)로 전달한다. 여기서, 본 발명에서는 멀티모달 단말기(10)에 있어 멀티모달 서버(20)의 인터랙션 매니저(21)로부터 수신받은 각종 이벤트(데이터)를 통신모듈(13)로부터 프록시 객체(71)로 직접 전송하지 않고서 HTML 브라우저(11)를 거치는 이유는 다이얼로그 이벤트나 HTML 브라우저 툴바 상태 변경 등과 같이 HTML 요소(72)로 보낼 이벤트가 아니라 HTML 브라우저 동작을 제어하는 이벤트가 멀티모달 서버(20)측으로부터 수신될 경우에 이를 HTML 브라우저(11)로 전달해야 될 필요성이 있기 때문이다.
그에 따라, 상기 멀티모달 단말기(10)에 있어 HTML 브라우저(11)는 통신모듈(13)로부터 프록시 객체(71)로 전달해야 되는 이벤트, 즉 HTML 문서 제어 이벤트를 수신받은 경우에 브라우저 상의 자식 윈도우 트리를 순회하면서 자신이 로딩한 HTML 문서에 삽입된 프록시 객체(71)에게만 상기 HTML 문서 제어 이벤트를 중개한다.
도 4는 도 2의 멀티모달 단말기의 HTML 브라우저가 HTML 요소에서 발생시킨 DOM 이벤트를 멀티모달 서버로 전송함과 아울러 프록시를 통해 녹음시작신호를 음성 입출력모듈에 전달하는 과정을 스크립트와 함께 보여주기 위한 일실시예 설명도이다.
본 발명에서 제시하는 프록시 객체(71)는 HTML 브라우저(11)와 HTML DOM(51)간의 중개자 기능을 수행하는데, 이를 위해 프록시 객체(71)가 DOM 이벤트를 처리하기 위한 인터페이스, 즉 도 4의 DOM 이벤트 중개 인터페이스(81)를 구비한다.
특히, 멀티모달 단말기(10)에서 HTML 브라우저(11)가 HTML 요소(72)에서 발생시킨 DOM 이벤트를 멀티모달 서버(20)의 인터랙션 매니저(21)로 전송하는데 있어 DOM 이벤트 중개 인터페이스(81) 중에서 "sendDOMEvent 인터페이스"가 사용된다. 이때, HTML 브라우저(11)가 DOM 이벤트를 발생시킨 해당 HTML 요소의 아이디(ID)를 자바스크립트(JAVASCRIPT)를 통해 자동적으로 추출해 상기 "sendDOMEvent 인터페이스"를 호출하거나, HTML 요소(72)가 직접적으로 "sendDOMEvent 인터페이스"를 호출할 수도 있다. 여기서, HTML 문서에는 DOM 이벤트를 발생시킨 해당 HTML 요소의 아이디(ID)를 추출하기 위한 자바스크립트[이를 "HTML 요소 아이디 추출 자바스크립트(85)라 한다]가 삽입(구비)된다.
상기 "sendDOMEvent 인터페이스"에 대해 상세히 설명하면 다음과 같다.
상기 "sendDOMEvent 인터페이스"는 HTML 문서에서 DOM 이벤트가 발생된 경우에 HTML 브라우저로 상기 DOM 이벤트의 이름, 속성 등을 전달하는데 사용되는 액티브엑스 객체 형태의 인터페이스로서, HTML 문서 상에서 호출될 수 있다.
즉, HTML 문서에서 DOM 이벤트가 발생된 경우에 먼저 HTML 요소가 "<input type="input", value="부산", name="txtGoEnd", id="txtGoEnd", onfocus="sendEvent('onfocus', this)">"와 같은 간단한 자바스크립트 라이브러리에 정의된 "sendEvent 메쏘드"를 호출한다.
그에 따라, 상기 자바스크립트 라이브러리에 정의된 "sendEvent 메쏘드"는 "onfocus"라는 인자를 받아서 해당 이벤트 이름을 결정하고, "(xhtml.dialog.onfocus), this"라는 레퍼런스 인자를 받아서 이벤트가 발생한 HTML 요소[즉 <input>]의 속성, 이름, 아이디 등을 사용해 멀티모달 서버의 인터랙션 매니저로 추가적으로 보내야 될 속성 정보들을 자동적으로 추출한다.
그리고서, 상기 "sendEvent 메쏘드"는 현재 로딩된 HTML 문서의 입력 상태를 EMMA 포맷으로 인코딩한 후에 프록시의 "sendDOMEvent 인터페이스"를 호출하는 것으로서 해당 DOM 이벤트를 멀티모달 서버측으로 전송되도록 한다.
한편, 본 발명에서는 HTML 문서 상에서 발생된 녹음시작 이벤트에 대해, HTML 요소(72)에서 직접적으로 녹음시작신호를 프록시 객체(71)를 통해 음성 입출력모듈(12)로 전달할 수 있다. 이를 위해, 프록시 객체(71)가 녹음시작 이벤트를 처리하기 위한 인터페이스, 즉 도 4의 녹음시작 이벤트 중개 인터페이스(82), 바람직하게는 "sendRecordSignal 인터페이스"를 구비한다.
상기 "sendRecordSignal 인터페이스"에 대해 상세히 설명하면 다음과 같다.
상기 "sendRecordSignal 인터페이스"가 호출되면 프록시와 HTML 브라우저간에 IPC 통신 방식으로서 메시지를 주고 받을 수 있기 때문에, 상기 HTML 브라우저에서도 사용자에 의한 녹음시작 사실을 감지할 수 있다. 그에 따라, 상기 HTML 브라우저는 음성 입출력모듈에 해당되는 프로세스에 윈도 메시지를 보내어 녹음시작 시점을 통보할 수 있다.
그리고, HTML 요소가 이벤트 핸들러에게 직접 프록시의 "sendRecordSignal 인터페이스"를 호출하도록 하여, 특정 DOM 이벤트 발생 시 녹음을 시작하도록 한다. 예를 들어, "<input type="button", name="record", onclick="proxy.sendRecordSignal()">"이라는 코드는 <input> 태그를 사용자가 클릭한 경우에 녹음시작을 수행하도록 하는 것을 의미한다.
이후에, 사용자는 멀티모달 단말기(10)에 구비된 마이크를 통해 음성을 입력하며, 멀티모달 단말기(10)에 탑재된 음성특징추출 어플리케이션에 의해 해당 음성특징이 추출되어져 웹서버(30)의 보이스 브라우저(60)로 전송된다. 그에 따라, 상기 웹서버(30)의 보이스 브라우저(60)가 음성인식엔진을 통해 음성특징에 대한 음성인식을 수행해 해당되는 음성인식결과를 도출한다.
덧붙여, 현재의 분산 음성인식 기술(DSR)을 고려하면 음성인식 전처리 작업으로서 사용자가 멀티모달 단말기로 녹음시작이 이루어지는 사실을 알려줘야 된다. 예를 들어, HTML 문서에 표시된 지도 상에서 사용자가 목적지/출발지를 펜으로 찍으면서 음성으로 "이곳에서부터 저곳까지 길 안내를 해 줘"라고 요구하는 경우에, 분산 음성인식 기술이 접목된 멀티 모달리티 처리 시스템에서는 HTML 브라우저와 보이스 브라우저가 완전히 서로 독립적인 모달리티로 간주되기 때문에 HTML 브라우저를 통해 입력되는 정보를 보이스 브라우저에 반영하기 위해서는 사용자에 의해 녹음이 시작된다는 사실이 멀티모달 서버측으로 통보되어야만 되었다.
하지만, 본 발명에서는 HTML 요소(72)에서 직접 프록시 객체(71)의 "sendRecordSignal 인터페이스"를 호출함으로서 음성 입출력모듈(12)로 직접 녹음시작 이벤트를 통보할 수 있다.
도 5는 도 4의 음성인식결과가 웹서버의 보이스 브라우저를 통해 멀티모달 서버로 전송된 경우에 보이스 브라우저의 상태와 HTML 브라우저의 상태를 동기화하는 과정을 스크립트와 함께 보여주기 위한 일실시예 설명도이다.
앞서 도 4를 참조하여 언급했던 바와 같이, 웹서버(30)의 보이스 브라우저(60)가 음성인식엔진을 통해 음성특징에 대한 음성인식을 수행해 해당되는 음성인식결과를 도출하는데, 이후에 웹서버(30)의 보이스 브라우저(60)는 음성인식결과를 멀티모달 서버(20)의 인터랙션 매니저(21)로 전송해 멀티모달 단말기(10)에 관한 보이스 브라우저(60)의 상태와 HTML 브라우저(11)의 상태를 동기화시킨다.
즉, 상기 멀티모달 단말기(10)의 음성 입출력모듈(12)은 프록시 객체(71)로부터 녹음시작신호를 입력받은 경우에 마이크를 통해 사용자로부터 음성을 입력받으면 이 사용자 음성신호를 녹음 버퍼(미도시)에 저장하며, 상기 녹음 버퍼에 저장된 사용자 음성신호에 대해 음성특징추출 어플리케이션을 통해 음성특징을 추출해 RTP 통신 방식으로 이 추출한 음성특징을 웹서버(30)의 보이스 브라우저(60)로 전송한다.
그에 따라, 상기 웹서버(30)의 보이스 브라우저(60)는 멀티모달 단말기(10)로부터 수신받은 음성특징에 대해 음성인식엔진을 통해 음성인식을 수행해 해당되는 음성인식결과를 도출한다.
그런후, 상기 웹서버(30)의 보이스 브라우저(60)는 "vxml.dialog.step 이벤트"를 사용해 멀티모달 서버(20)의 인터랙션 매니저(21)에게 VoiceXML 문서의 상태가 변경됨을 통보한다.
그러면, 상기 멀티모달 서버(20)의 인터랙션 매니저(21)는 웹서버(30)의 보이스 브라우저(60)로부터 통보받은 "vxml.dialog.step 이벤트"에 포함되어 있는 음성인식결과를 멀티모달 단말기(10)에 관한 HTML 문서 상의 HTML 요소(72)에 반영시키기 위해, "xhtml.dialog.setfields 이벤트"를 사용해 해당 음성인식결과에 따른 HTML 문서 제어 이벤트를 멀티모달 단말기(10)의 통신모듈(13)로 전송한다.
이에, 상기 멀티모달 단말기(10)의 통신모듈(13)은 멀티모달 서버(20)의 인터랙션 매니저(21)로부터 수신받은 "xhtml.dialog.setfields 이벤트"에 포함되어 있는 해당 HTML 문서 제어 이벤트를 "WM_COPYDATA 방식"으로 HTML 브라우저(11)를 거쳐서 프록시 객체(71)로 전달한다.
그러면, 상기 프록시 객체(71)는 HTML 문서 제어 이벤트를 처리하기 위해 프록시 객체(71)에 구비한 문서 제어 이벤트 통지 인터페이스(83) 중에서 "eventSetFields 인터페이스"를 사용해 상기 HTML 문서 제어 이벤트를 토대로 HTML 문서에 삽입되어 있는 해당 프록시 이벤트 핸들러(86)를 호출해 현재 로딩된 DOM의 폼(FORM)과 입력 요소(input component) 등의 상태가 자동적으로 변경되도록 한다. 여기서, 프록시 이벤트 핸들러(86)는 자바스크립트로 HTML 문서 내에 삽입되어 있다.
상기 프록시 이벤트 핸들러에 대해 상세히 설명하면 다음과 같다.
상기 프록시 이벤트 핸들러는 프록시가 HTML 브라우저를 통해 멀티모달 서버의 인터랙션 매니저로부터 특정 이벤트, 특히 HTML 문서 제어 이벤트를 수신받은 경우에 어떠한 처리 동작을 수행해야 되는 지를 자바스크립트로서 기술해 놓은 오픈 인터페이스이다.
상기 멀티모달 서버의 인터랙션 매니저로부터 수신되는 각각의 이벤트를 처리하기 위한 이벤트 핸들러로는, "EventSetFocus 핸들러", "EventSetFields 핸들러", "EventActivateLink 핸들러", "EventActivateSubmit 핸들러", "EventActivateReset 핸들러", "EventSVGDialogStart 핸들러", "EventSVGDialogZoomin 핸들러", "EventSVGDialogZoomout 핸들러", "EventSVGDialogMove 핸들러", "EventSVGSetViewPoint 핸들러" 등이 있다.
예컨대, 프록시에서 HTML 브라우저를 통해 멀티모달 서버의 인터랙션 매니저로부터 특정 이벤트를 수신받은 경우에 상기 열거한 이벤트 핸들러들 중에서 해당되는 이벤트 핸들러가 콜백(callback)된다. 이와 같은 수신 이벤트를 처리하기 위한 핸들러들은 "mmi.js" 자바스크립트 라이브러리에 구현된다.
도 6은 도 2의 멀티모달 단말기의 HTML 브라우저가 SVG 문서의 DOM 이벤트를 멀티모달 서버로 전송하는 과정과 음성 입출력모듈로부터 입력받은 음성 모달리티를 SVG 문서에 반영하는 과정을 스크립트와 함께 보여주기 위한 일실시예 설명도이다.
도 6에 도시된 공지의 SVG 뷰어(90)는 액티브엑스(ActiveX) 형태로 구현되며, 객체 태그[<object> tag]로 HTML 문서 내에 삽입된다. 여기서, SVG(Scalable Vector Graphics)는 벡터 이미지 정보를 XML로 코딩하여 웹문서 상에 보여주는 기술을 의미하며, SVG 문서를 보기 위해서는 멀티모달 단말기에 SVG 뷰어가 탑재되어야 한다. 상기 SVG 문서도 HTML 문서와 마찬가지로 DOM 이벤트를 발생시키며, SVG의 DOM 상태를 변경시켜 SVG 출력을 변화시킬 수 있다.
이에, 본 발명에서는 멀티모달 단말기의 SVG 뷰어에서 발생시킨 SVG DOM 이벤트를 멀티모달 서버의 인터랙션 매니저로 전송하기 위한 인터페이스로 "sendSVGDOMEvent 인터페이스"를 프록시에 탑재한다. 이는, 멀티모달 서버측에서 HTML 문서와 SVG 문서를 별도의 모달리티로 간주하기 때문이다.
또한, 본 발명에서는 상기 SVG 문서의 상태를 변경시키기 위한 인터페이스, 즉 프록시가 HTML 브라우저를 통해 멀티모달 서버의 인터랙션 매니저로부터 SVG 문서 제어 이벤트를 수신받은 경우에 어떠한 처리 동작을 수행해야 되는 지를 자바스크립트[즉 SVG DOM 이벤트 처리 자바스크립트]로서 호출하는 "EventSVGDialogStart 인터페이스", "EventSVGDialogZoomIn 인터페이스", "EventSVGDialogZoomOut 인터페이스", "EventSVGDialogMove 인터페이스", "EventSVGSetViewPoint 인터페이스" 등을 프록시에 탑재한다.
본 발명에서는 사용자가 SVG 문서의 특정 부분을 클릭하면서 해당 부분에 대해 음성으로서 확대를 요구하는 경우에, SVG 뷰어(90)에서 발생시킨 SVG DOM 이벤트(예; "svg.dialog.onclick 이벤트")를 SVG DOM 이벤트 처리 자바스크립트(91)를 통해 프록시 객체(71)의 DOM 이벤트 중개 인터페이스(81) 중에서 "sendSVGDOMEvent 인터페이스"를 호출해 통신모듈(13)을 통해 멀티모달 서버(20)의 인터랙션 매니저(21)로 전송되도록 한다. 물론, 사용자의 SVG 문서 확대 요구 음성신호에 대응되는 음성특징은 멀티모달 서버(10)의 음성 입출력모듈(13)로부터 웹서버(30)의 보이스 브라우저(60)로 전송되며, 그에 따라 상기 웹서버(30)의 보이스 브라우저(60)는 "vxml.dialog.step 이벤트"를 사용해 멀티모달 서버(20)의 인터랙션 매니저(21)에게 VoiceXML 문서의 상태가 변경됨을 통보한다.
그러면, 상기 멀티모달 서버(20)의 인터랙션 매니저(21)는 멀티모달 단말기(10)의 통신모듈(13)로부터 수신받은 "svg.dialog.onclick 이벤트"와 웹서버(30)의 보이스 브라우저(60)로부터 수신받은 SVG 문서 확대 요구 음성인식결과를 토대로 멀티모달 단말기 상의 SVG 문서 상태를 변경시키기 위해, "svg.dialog.zoomin 이벤트"를 사용해 SVG 문서 부분 확대 이벤트를 멀티모달 단말기(10)의 통신모듈(13)로 전송한다.
이에, 상기 멀티모달 단말기(10)의 통신모듈(13)은 멀티모달 서버(20)의 인터랙션 매니저(21)로부터 수신받은 "svg.dialog.zoomin 이벤트"에 포함되어 있는 SVG 문서 부분 확대 이벤트를 WM_COPYDATA 방식으로 HTML 브라우저(11)를 거쳐서 프록시 객체(71)로 전달한다.
그러면, 상기 프록시 객체(71)는 SVG 문서 부분 확대 이벤트 명령을 처리하기 위해 프록시 객체(71)에 구비한 문서 제어 이벤트 통지 인터페이스(83) 중에서 "SVGEventZoomin 인터페이스"를 사용해 해당 SVG DOM 이벤트 처리 자바스크립트(91)를 호출해 현재 로딩된 SVG DOM의 해당 부분이 자동적으로 변경되도록 한다.
한편, 전술한 모달리티에 관한 DOM 이벤트 처리를 위해 멀티모달 단말기(10)에 탑재되는 HTML 브라우저(11)는 다음과 같은 스펙을 따르는 것이 바람직하다.
멀티모달 단말기(10) 상에서 HTML 브라우저(11)가 실행되는 경우에 통신모듈(13)의 세션을 초기화시킨다. 또한, HTML 브라우저(11)를 실행시킨 주체가 통신모듈(13)인지를 확인하며, 통신모듈(13)에 의해 실행된 경우에 HTML 브라우저(11)는 통신모듈(13)을 통해 수신받은 "dialog.start 이벤트" 등을 처리한다. 여기서, 일반적으로 HTML 브라우저(11)는 사용자가 웹문서 접근 시도 등과 같은 링크 태핑에 따라 실행되는데, 푸쉬 서비스(push service) 등에 있어서는 HTML 브라우저(11)가 종료되어 있더라도 푸쉬 메시지에 의한 통신모듈(13)을 통해 실행될 수도 있다.
한편, HTML 브라우저(11)는 "dialog.start 이벤트"를 수신받은 경우에 이 "dialog.start 이벤트"에 포함되어 있는 로딩 대상 HTML 문서 URL 파라미터를 통해 해당 URL에 접속해 HTTP를 통해 해당 HTML 문서를 로딩, 파싱 및 화면에 출력한다.
그리고, HTML 브라우저(11)는 HTML 문서를 출력한 이후에 수신되는 메시지가 무엇인지를 지속적으로 확인하면서, 프록시 객체(71)로부터 수신받은 HTML DOM 이벤트 또는 SVG DOM 이벤트를 통신모듈(13)로 전달하거나 멀티모달 서버(20)의 인터랙션 매니저(21)로부터 수신받은 HTML 문서 변경 이벤트 또는 SVG 문서 변경 이벤트 등을 프록시 객체(71)로 전달하며, 프록시 객체(71)로 전달할 이벤트가 아닌 HTML 문서 브라우징 명령(예; back 버튼신호, reload 버튼신호와 같은 네비게이션 명령 등)에 대해서는 통상의 웹 브라우징 처리 절차를 따른다.
상술한 바와 같은 본 발명의 방법은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 형태로 기록매체(씨디롬, 램, 롬, 플로피 디스크, 하드 디스크, 광자기 디스크 등)에 저장될 수 있다. 이러한 과정은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있으므로 더 이상 상세히 설명하지 않기로 한다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.
도 1은 본 발명이 적용되는 멀티 모달리티 처리 시스템에 대한 일실시예 구성도이고,
도 2는 본 발명에 따른 멀티모달 단말기의 HTML 브라우저가 웹브라우저 콘트롤을 사용하는 경우에 프록시를 통해 HTML DOM 이벤트를 처리하는 과정을 보여주기 위한 일실시예 설명도이고,
도 3은 도 2의 멀티모달 단말기에서 프록시를 통해 HTML 문서의 DOM 이벤트를 멀티모달 서버로 전송하는 과정과 멀티모달 서버로부터 이벤트를 통지받아 프록시를 통해 HTML 문서의 상태를 변경하는 과정을 보여주기 위한 일실시예 설명도이고,
도 4는 도 2의 멀티모달 단말기의 HTML 브라우저가 HTML 요소에서 발생시킨 DOM 이벤트를 멀티모달 서버로 전송함과 아울러 프록시를 통해 녹음시작 신호를 음성 입출력 모듈에 전달하는 과정을 스크립트와 함께 보여주기 위한 일실시예 설명도이고,
도 5는 도 4의 음성인식결과가 웹서버의 보이스 브라우저를 통해 멀티모달 서버로 전송된 경우에 보이스 브라우저의 상태와 HTML 브라우저의 상태를 동기화하는 과정을 스크립트와 함께 보여주기 위한 일실시예 설명도이고,
도 6은 도 2의 멀티모달 단말기의 HTML 브라우저가 SVG 문서의 DOM 이벤트를 멀티모달 서버로 전송하는 과정과 음성 입출력 모듈로부터 입력받은 음성 모달리티를 SVG 문서에 반영하는 과정을 스크립트와 함께 보여주기 위한 일실시예 설명도이 다.
* 도면의 주요 부분에 대한 부호 설명
10 : 멀티모달 단말기 11 : HTML 브라우저
12 : 음성 입출력모듈 13 : 통신모듈
20 : 멀티모달 서버 21 : 인터랙션 매니저
30 : 웹서버 50 : 웹브라우저 콘트롤
51 : HTML DOM 52 : 프록시
60 : 보이스 브라우저 72 : HTML 요소
81 : DOM 이벤트 중개 인터페이스
82 : 녹음시작 이벤트 중개 인터페이스
83 : 문서 제어 이벤트 통지 인터페이스
85 : HTML 요소 아이디 추출 자바스크립트
86 : 프록시 이벤트 핸들러
90 : SVG 뷰어 91 : SVG DOM 이벤트 처리 자바스크립트

Claims (35)

  1. 멀티모달 단말기에 있어서,
    멀티모달 단말기의 운영체제가 제공하는 웹브라우저 콘트롤을 호스팅하여 웹문서를 브라우징하기 위한 웹브라우저;
    상기 웹브라우저 콘트롤 상에 로딩된 웹문서 내의 다수의 웹문서 요소; 및
    상기 웹브라우저 콘트롤 상에서 상기 웹브라우저와 상기 웹문서 요소 사이에 탑재되어, 상기 웹문서 요소에서 발생시킨 문서 객체 모델 이벤트(이하, "DOM 이벤트"라 함)를 상기 웹브라우저로 중개하고, 상기 웹브라우저로부터 전달되는 문서 제어 이벤트를 해당 웹문서 요소에게 중개하기 위한 프록시
    를 포함하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시가 탑재된 멀티모달 단말기.
  2. 제 1 항에 있어서,
    상기 프록시와 상기 웹브라우저간에는, DOM 이벤트 또는 문서 제어 이벤트를 WM_COPYDATA 방식으로 상호 주고 받는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시가 탑재된 멀티모달 단말기.
  3. 제 1 항에 있어서,
    상기 프록시는, 액티브엑스(ActiveX) 형태로 구현되어 객체 태그[<object> tag]로서 상기 웹문서 내에 삽입되는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시가 탑재된 멀티모달 단말기.
  4. 멀티모달 단말기에서 프록시를 통해 모달리티에 관한 DOM 이벤트를 처리하는 방법에 있어서,
    상기 프록시가 HTML 문서 상의 HTML 요소가 발생시킨 HTML DOM 이벤트를 HTML 브라우저로 중개해 멀티모달 단말기의 통신모듈로 전달하는 단계;
    상기 통신모듈이 HTML 브라우저로부터 전달받은 HTML DOM 이벤트를 멀티모달 서버의 인터랙션 매니저로 전송하는 단계;
    상기 HTML DOM 이벤트 전송 결과로 상기 통신모듈이 멀티모달 서버의 인터랙션 매니저로부터 수신받은 특정 이벤트를 상기 HTML 브라우저로 전달하는 단계;
    상기 HTML 브라우저가 상기 전달받은 특정 이벤트가 HTML 문서 제어 이벤트로 확인됨에 따라 상기 HTML 문서 제어 이벤트를 상기 프록시로 전달하는 단계; 및
    상기 프록시가 HTML 브라우저로부터 전달받은 HTML 문서 제어 이벤트를 해당 웹문서 요소에게 중개하는 단계
    를 포함하는 모달리티에 관한 DOM 이벤트 처리 방법.
  5. 제 4 항에 있어서,
    상기 프록시가 HTML 문서 상의 HTML 요소가 발생시킨 녹음시작신호를 멀티모달 단말기의 음성 입출력모듈로 중개해 해당 웹서버로 전달하는 단계
    를 더 포함하는 모달리티에 관한 DOM 이벤트 처리 방법.
  6. 제 4 항에 있어서,
    상기 프록시가 HTML 문서 상의 SVG 뷰어에서 발생시킨 SVG DOM 이벤트를 HTML 브라우저로 중개해 멀티모달 단말기의 통신모듈로 전달하는 단계;
    상기 통신모듈이 HTML 브라우저로부터 전달받은 SVG DOM 이벤트를 멀티모달 서버의 인터랙션 매니저로 전송하는 단계;
    상기 SVG DOM 이벤트 전송 결과로 상기 통신모듈이 멀티모달 서버의 인터랙션 매니저로부터 수신받은 해당 SVG 문서 제어 이벤트를 상기 HTML 브라우저의 중개를 통해 상기 프록시로 전달하는 단계; 및
    상기 프록시가 HTML 브라우저로부터 전달받은 상기 HTML 문서 제어 이벤트를 상기 SVG 뷰어에게 중개하는 단계
    를 더 포함하는 모달리티에 관한 DOM 이벤트 처리 방법.
  7. 삭제
  8. 삭제
  9. 삭제
  10. 멀티모달 단말기의 프록시를 통해 웹서버의 보이스 브라우저 상태와 멀티모달 단말기의 웹브라우저 상태를 동기화하는 방법에 있어서,
    상기 멀티모달 단말기의 음성 입출력모듈이 사용자 음성 특징을 상기 보이스 브라우저로 전송하는 단계;
    상기 웹서버의 보이스 브라우저가 상기 수신받은 사용자 음성 특징에 대해 수행한 음성인식결과를 멀티모달 서버의 인터랙션 매니저에게 전달해 VoiceXML 문 서 상태 변경을 통보하는 단계;
    상기 멀티모달 서버의 인터랙션 매니저가 상기 수신받은 음성인식결과에 따른 HTML 문서 제어 이벤트를 상기 멀티모달 단말기의 통신모듈로 전송하는 단계;
    상기 멀티모달 단말기의 통신모듈이 상기 수신받은 HTML 문서 제어 이벤트를 상기 웹브라우저의 중개를 거쳐 상기 프록시로 전달하는 단계; 및
    상기 프록시가 상기 수신받은 HTML 문서 제어 이벤트를 해당 웹문서 요소에게 중개하는 단계
    를 포함하는 모달리티 동기화 방법.
  11. 삭제
  12. 모달리티에 관한 DOM 이벤트 처리를 위한 프록시에 있어서,
    웹문서 내에서 발생된 문서 객체 모델 이벤트(이하, "DOM 이벤트"라 함)를 웹브라우저를 거쳐 통신모듈로 중개하기 위한 DOM 이벤트 중개 인터페이스;
    상기 웹문서 내에서 발생된 녹음시작신호를 음성 입출력모듈로 중개하기 위한 녹음시작 이벤트 중개 인터페이스; 및
    상기 통신모듈로부터 상기 웹브라우저를 거쳐 수신되는 문서 제어 이벤트를 상기 웹문서 내로 중개하기 위한 문서 제어 이벤트 통지 인터페이스
    를 포함하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  13. 제 12 항에 있어서,
    상기 DOM 이벤트 중개 인터페이스는,
    상기 웹문서 내의 웹문서 요소에서 발생시킨 HTML DOM 이벤트를 웹브라우저를 거쳐 통신모듈로 중개하기 위한 sendDOMEvent 인터페이스; 및
    상기 웹문서 내의 SVG 뷰어에서 발생시킨 SVG DOM 이벤트를 웹브라우저를 거 쳐 통신모듈로 중개하기 위한 sendSVGDOMEvent 인터페이스
    를 포함하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  14. 제 13 항에 있어서,
    상기 웹문서 내에는, 특정 HTML DOM 이벤트를 발생시킨 해당 웹문서 요소의 아이디를 추출하기 위한 HTML 요소 아이디 추출 자바스크립트가 삽입되어 있는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  15. 제 14 항에 있어서,
    상기 웹 브라우저는, 상기 HTML 요소 아이디 추출 자바스크립트를 사용해 HTML DOM 이벤트를 발생시킨 해당 웹문서 요소의 아이디를 추출하고서, 상기 sendDOMEvent 인터페이스를 호출해 해당되는 HTML DOM 이벤트가 상기 프록시를 통해 자신에게 전달되도록 하는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  16. 제 15 항에 있어서,
    상기 sendDOMEvent 인터페이스는, 상기 웹 브라우저에 의해 자신이 호출됨에 따라 상기 HTML DOM 이벤트의 이름, 속성 및 아이디를 상기 웹브라우저로 전달하는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  17. 제 12 항에 있어서,
    상기 녹음시작 이벤트 중개 인터페이스는, 상기 웹문서 내의 웹문서 요소에 의해 자신이 호출됨에 따라 상기 음성 입출력모듈에 해당되는 프로세스로 윈도 메시지를 보내어 녹음시작 시점이 포함된 녹음시작신호를 전달하는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  18. 제 12 항에 있어서,
    상기 문서 제어 이벤트 통지 인터페이스는, 상기 웹브라우저로부터 HTML 문서 제어 이벤트를 수신받음에 따라 상기 웹문서에 삽입되어 있는 프록시 이벤트 핸들러 중에서 상기 HTML 문서 제어 이벤트에 관한 해당 이벤트 핸들러를 콜백하는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  19. 제 14 항에 있어서,
    상기 문서 제어 이벤트 통지 인터페이스는, 상기 웹브라우저로부터 SVG 문서 제어 이벤트를 수신받음에 따라 상기 웹문서에 삽입되어 있는 SVG DOM 이벤트 처리 자바스크립트를 호출해 상기 SVG 문서 제어 이벤트를 SVG 뷰어에게 전달하는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  20. 제 13 항에 있어서,
    상기 sendDOMEvent 인터페이스는, "HRESULT sendDOMEvent([in] BSTR eventName, [in] BSTR srcName, [in] BSTR formName, [in] BSTR emmaXml)"의 형식을 갖는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  21. 제 13 항에 있어서,
    상기 sendSVGDOMEvent 인터페이스는, "HRESULT sendSVGDOMEvent([in] BSTR eventName, [in] BSTR objectId, [in] BSTR emmaXml)"의 형식을 갖는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  22. 제 17 항에 있어서,
    상기 녹음시작 이벤트 중개 인터페이스는, "HRESULT sendRecordSignal(void)"의 형식을 갖는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  23. 제 18 항에 있어서,
    상기 문서 제어 이벤트 통지 인터페이스는, "xhtml.setfocus 이벤트"를 수신받은 경우에 상기 프록시 이벤트 핸들러 중에서 "void EventSetFocus(BSTR elementName, BSTR formName, BSTR emmaXml)"의 형식을 갖는 EventSetFocus 핸들러를 콜백하는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  24. 제 18 항에 있어서,
    상기 문서 제어 이벤트 통지 인터페이스는, "xhtml.setfields 이벤트"를 수신받은 경우에 상기 프록시 이벤트 핸들러 중에서 "void EventSetFields(BSTR formName, BSTR emmaXml)"의 형식을 갖는 EventSetFields 핸들러를 콜백하는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  25. 제 18 항에 있어서,
    상기 문서 제어 이벤트 통지 인터페이스는, "xhtml.activate.link 이벤트"를 수신받은 경우에 상기 프록시 이벤트 핸들러 중에서 "void EventActivateLink(BSTR linkName)"의 형식을 갖는 EventActivateLink 핸들러를 콜백하는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  26. 제 18 항에 있어서,
    상기 문서 제어 이벤트 통지 인터페이스는, "xhtml.activate.submit 이벤트"를 수신받은 경우에 상기 프록시 이벤트 핸들러 중에서 "void EventActivateSubmit(BSTR formName)"의 형식을 갖는 EventActivateSubmit 핸들러를 콜백하는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  27. 제 18 항에 있어서,
    상기 문서 제어 이벤트 통지 인터페이스는, "xhtml.activate.reset 이벤트"를 수신받은 경우에 상기 프록시 이벤트 핸들러 중에서 "void EventActivateReset(BSTR formName)"의 형식을 갖는 EventActivateReset 핸들러를 콜백하는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  28. 제 18 항에 있어서,
    상기 문서 제어 이벤트 통지 인터페이스는, "svg.dialog.start 이벤트"를 수 신받은 경우에 상기 프록시 이벤트 핸들러 중에서 "void EventSVGDialogStart(BSTR objectId, BSTR contentUrl, BSTR content)"의 형식을 갖는 EventSVGDialogStart 핸들러를 콜백하는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  29. 제 18 항에 있어서,
    상기 문서 제어 이벤트 통지 인터페이스는, "svg.dialog.zoomin 이벤트"를 수신받은 경우에 상기 프록시 이벤트 핸들러 중에서 "void EventSVGDialogZoomIn(BSTR objectId, double xcoord, double ycoord, int zoomLevel)"의 형식을 갖는 EventSVGDialogZoomIn 핸들러를 콜백하는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  30. 제 18 항에 있어서,
    상기 문서 제어 이벤트 통지 인터페이스는, "svg.dialog.zoomout 이벤트"를 수신받은 경우에 상기 프록시 이벤트 핸들러 중에서 "void EventSVGDialogZoomOut(BSTR objectId, double xcoord, double ycoord, int zoomLevel)"의 형식을 갖는 EventSVGDialogZoomOut 핸들러를 콜백하는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  31. 제 18 항에 있어서,
    상기 문서 제어 이벤트 통지 인터페이스는, "svg.dialog.move 이벤트"를 수신받은 경우에 상기 프록시 이벤트 핸들러 중에서 "void EventSVGDialogMove(BSTR objectId, double xcoord, double ycoord)"의 형식을 갖는 EventSVGDialogMove 핸들러를 콜백하는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  32. 제 18 항에 있어서,
    상기 문서 제어 이벤트 통지 인터페이스는, "svg.dialog.setviewpoint 이벤트"를 수신받은 경우에 상기 프록시 이벤트 핸들러 중에서 "void EventSVGDialogSetViewPoint(BSTR objectId, double xcoord, double ycoord)"의 형식을 갖는 EventSVGSetViewPoint 핸들러를 콜백하는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  33. 제 19 항에 있어서,
    상기 HTML 요소 아이디 추출 자바스크립트 및 상기 SVG DOM 이벤트 처리 자바스크립트는 자바스크립트 라이브러리에 포함되어 상기 웹문서에 삽입되는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  34. 제 33 항에 있어서,
    상기 자바스크립트 라이브러리는, 상기 문서 제어 이벤트 통지 인터페이스로부터 수신받은 문서 제어 이벤트를 웹문서 요소 또는 SVG 뷰어에게 전달해 해당 DOM의 폼(FORM) 및 입력 요소(INPUT COMPONENT)의 상태가 변경되도록 하는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
  35. 제 34 항에 있어서,
    상기 웹문서 내부에는, 하나의 폼(FORM)이 웹문서 바디 부분에 포함되는 것을 특징으로 하는 모달리티에 관한 DOM 이벤트 처리를 위한 프록시.
KR1020070123687A 2007-11-30 2007-11-30 모달리티에 관한 dom 이벤트 처리를 위한 프록시,멀티모달 단말기, dom 이벤트 처리 방법, 모달리티동기화 방법 KR100902732B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070123687A KR100902732B1 (ko) 2007-11-30 2007-11-30 모달리티에 관한 dom 이벤트 처리를 위한 프록시,멀티모달 단말기, dom 이벤트 처리 방법, 모달리티동기화 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070123687A KR100902732B1 (ko) 2007-11-30 2007-11-30 모달리티에 관한 dom 이벤트 처리를 위한 프록시,멀티모달 단말기, dom 이벤트 처리 방법, 모달리티동기화 방법

Publications (2)

Publication Number Publication Date
KR20090056504A KR20090056504A (ko) 2009-06-03
KR100902732B1 true KR100902732B1 (ko) 2009-06-15

Family

ID=40987900

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070123687A KR100902732B1 (ko) 2007-11-30 2007-11-30 모달리티에 관한 dom 이벤트 처리를 위한 프록시,멀티모달 단말기, dom 이벤트 처리 방법, 모달리티동기화 방법

Country Status (1)

Country Link
KR (1) KR100902732B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101809457B1 (ko) * 2017-04-21 2017-12-15 주식회사 한글과컴퓨터 웹 문서의 편집을 지원하는 클라이언트 단말 장치 및 그 동작 방법
KR101880507B1 (ko) * 2017-04-21 2018-07-20 주식회사 한글과컴퓨터 웹 문서에 삽입된 도형의 크기 조정을 지원하는 클라이언트 단말 장치 및 그 동작 방법
KR101880508B1 (ko) * 2017-04-27 2018-07-20 주식회사 한글과컴퓨터 웹 문서에서 목록 생성을 지원하는 웹 문서 편집 지원 장치 및 방법
KR101991297B1 (ko) * 2018-04-16 2019-06-20 주식회사 한글과컴퓨터 문서 편집 인터페이스의 커스터마이징을 지원하는 웹 기반의 문서 편집 지원 장치 및 그 동작 방법
CN114928524B (zh) * 2022-05-20 2024-03-26 浪潮思科网络科技有限公司 一种web端与交换机的交互方法、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100561228B1 (ko) * 2003-12-23 2006-03-15 한국전자통신연구원 보이스엑스엠엘 문서를 엑스에이치티엠엘플러스보이스문서로 변환하기 위한 방법 및 이를 이용한 멀티모달서비스 시스템
KR20070053627A (ko) * 2005-11-21 2007-05-25 한국전자통신연구원 멀티미디어 방송 서비스에서 음성 입출력이 동시에 가능한방송웹사이트 서비스를 위한 비주얼 데이터 및 음성데이터의 동기화 장치 및 그 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100561228B1 (ko) * 2003-12-23 2006-03-15 한국전자통신연구원 보이스엑스엠엘 문서를 엑스에이치티엠엘플러스보이스문서로 변환하기 위한 방법 및 이를 이용한 멀티모달서비스 시스템
KR20070053627A (ko) * 2005-11-21 2007-05-25 한국전자통신연구원 멀티미디어 방송 서비스에서 음성 입출력이 동시에 가능한방송웹사이트 서비스를 위한 비주얼 데이터 및 음성데이터의 동기화 장치 및 그 방법

Also Published As

Publication number Publication date
KR20090056504A (ko) 2009-06-03

Similar Documents

Publication Publication Date Title
US8549395B2 (en) Method and system for transforming an integrated webpage
US9405745B2 (en) Language translation using embeddable component
US7216351B1 (en) Systems and methods for synchronizing multi-modal interactions
US9729631B2 (en) Asynchronous data manipulation
KR100962893B1 (ko) 클라이언트-서버 통신 개선 방법, 클라이언트-서버아키텍처 내의 서버, 클라이언트-서버 아키텍처 시스템 및컴퓨터 판독가능한 저장 매체
US10671698B2 (en) Language translation using embeddable component
US20150095763A1 (en) Browser emulator system
US7080315B1 (en) Method and apparatus for coupling a visual browser to a voice browser
US10621276B2 (en) User interface virtualization for web applications
US9619784B2 (en) Presenting image previews of webpages
KR100353585B1 (ko) 표시 제어 정보 생성 방법 및 컴퓨터
CN110263284B (zh) 使用多个编辑器或特征的各版本的协作
US8539336B2 (en) System for linking to documents with associated annotations
US6446096B1 (en) Method and system for providing device-specific key control using role-based HTML element tags
US7761601B2 (en) Strategies for transforming markup content to code-bearing content for consumption by a receiving device
US6829746B1 (en) Electronic document delivery system employing distributed document object model (DOM) based transcoding
US20130031457A1 (en) System for Creating and Editing Temporal Annotations of Documents
US20030048286A1 (en) System and method for providing an enterprise oriented web browser and productivity environment
US20130031453A1 (en) System for Annotating Documents Served by a Document System without Functional Dependence on the Document System
US10528651B2 (en) Client-side aggregation of web content
US7171614B2 (en) Displaying plug-in derived content in an application&#39;s browser-embedded window with callbacks
KR100902732B1 (ko) 모달리티에 관한 dom 이벤트 처리를 위한 프록시,멀티모달 단말기, dom 이벤트 처리 방법, 모달리티동기화 방법
US20110264729A1 (en) Augmentation of network traffic
KR20120016333A (ko) 웹 어플리케이션을 위한 사전 캐싱 방법 및 이를 적용한 단말 장치
US8185606B2 (en) Email change tracking

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130603

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140602

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150601

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160609

Year of fee payment: 8