KR102254821B1 - 대화형 콘텐츠 제공 시스템 - Google Patents

대화형 콘텐츠 제공 시스템 Download PDF

Info

Publication number
KR102254821B1
KR102254821B1 KR1020200029227A KR20200029227A KR102254821B1 KR 102254821 B1 KR102254821 B1 KR 102254821B1 KR 1020200029227 A KR1020200029227 A KR 1020200029227A KR 20200029227 A KR20200029227 A KR 20200029227A KR 102254821 B1 KR102254821 B1 KR 102254821B1
Authority
KR
South Korea
Prior art keywords
message
chatbot
electronic device
server
bot
Prior art date
Application number
KR1020200029227A
Other languages
English (en)
Other versions
KR20200029417A (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
Priority claimed from KR1020170048452A external-priority patent/KR102266879B1/ko
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020200029227A priority Critical patent/KR102254821B1/ko
Publication of KR20200029417A publication Critical patent/KR20200029417A/ko
Application granted granted Critical
Publication of KR102254821B1 publication Critical patent/KR102254821B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/18Commands or executable codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/02User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail using automatic reactions or user delegation, e.g. automatic replies or chatbot-generated messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/06Message adaptation to terminal or network requirements
    • H04L51/066Format adaptation, e.g. format conversion or compression

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

제1 프로토콜을 준수하는(compliant with) 제1 네트워크 또는 제2 프로토콜을 준수하는 제2 네트워크를 통해 서버와 통신을 수행하는 통신 모듈, 상기 통신 모듈과 전기적으로 연결된 프로세서, 상기 프로세서와 전기적으로 연결되고, 명령어들(instructions)을 저장하는 메모리를 포함하고, 상기 명령어들은, 상기 프로세서에 의해 실행 시, 상기 서버로부터 상기 제2 네트워크를 통해서 CP(content provider) 서버에 연관된 제1 메시지를 전송하고, 상기 제1 네트워크를 통해서, 상기 CP 서버를 식별하기 위한 식별자를 포함하는 제2 메시지를 상기 서버로부터 획득하도록 하는, 전자 장치가 개시된다. 이 외에도 명세서를 통해 파악되는 다양한 실시 예가 가능하다.

Description

대화형 콘텐츠 제공 시스템{A SYSTEM FOR PROVIDING DIALOG CONTENTS}
본 문서에서 개시되는 다양한 실시 예들은 대화형 콘텐츠 제공 시스템, 전자 장치, 및 서버에 관한 것이다.
최근 이동통신 기술의 발달로, 전자 장치는 손쉽게 휴대할 수 있으면서도 유무선 네트워크에 자유로이 접속 가능한 형태로 변모하고 있다. 예를 들어 스마트폰(smartphone) 및 태블릿(tablet) PC와 같은 휴대용 전자 장치는 통화 및 메시지 송수신 기능에 더하여 인터넷 접속 및 멀티미디어 재생과 같은 다양한 기능을 지원할 수 있다.
전자 장치의 사용자는 자신이 원하는 콘텐츠 또는 서비스를 제공받기 위해, 검색 엔진에 검색 키워드를 전송하여야 한다. 상기와 같은 검색 키워드를 이용한 검색에 있어서, 사용자는 직접 적절한 검색 키워드를 스스로 도출해야 하는 번거로움이 있다.
이러한 번거로움을 극복하기 위해, 자연어 이해에 기반한 대화형 콘텐츠 제공 서비스가 시도되고 있다. 상기 대화형 콘텐츠 제공 서비스는 사용자의 자연어 요청의 의미를 분석하여 적절한 콘텐츠를 사용자에게 대화형(dialog)으로 제공하는 것을 목적으로 한다.
대화형 콘텐츠 제공 서비스는 대화형 UI(user interface)를 제공하는 메신저 어플리케이션을 기반으로 구현될 수 있다. 대표적으로 OTT(over the top) 기반 메신저 어플리케이션들은 현재 수 많은 개발사에 의해 개발되었으며, 이들은 전 세계 각국에서 서비스를 제공하고 있다.
따라서, 단일의 콘텐츠 제공자는 자신의 대화형 콘텐츠 제공 서비스를 구현하기 위해 소프트웨어를 다양한 메신저 어플리케이션 각각에 적합하게 개발하여야 하는 어려움이 있다. 나아가, 상기 대화형 콘텐츠 제공 서비스를 제공받을 수 있는 고객 역시 메신저 어플리케이션을 인스톨한 사용자에 한정되므로, 고객 확장성에 한계가 있을 수 있다.
본 문서에서 개시되는 다양한 실시 예들에 따르면, 대화형 콘텐츠 제공 서비스를 위한 단일의 플랫폼을 제공하고, 상기 플랫폼에 콘텐츠 제공자 서버들(이하, CP 서버)을 종속시키며, 사용자의 전자 장치와 확장성이 높은 네트워크(예: RCS 네트워크)를 통해 통신하는 대화형 콘텐츠 제공 시스템을 제공할 수 있다.
본 문서에 개시되는 일 실시 예에 따른 전자 장치는, 하우징, 상기 하우징의 일면을 통해 노출되는 디스플레이, 제1 프로토콜을 준수하는(compliant with) 제1 네트워크, 또는 제2 프로토콜을 준수하는 제2 네트워크를 통해(over) 통신하는 통신 모듈, 상기 디스플레이 및 상기 통신 모듈과 전기적으로 연결된 프로세서, 및 상기 프로세서와 전기적으로 연결되고 지정된 어플리케이션을 저장하는 메모리를 포함할 수 있다. 상기 메모리는, 실행시, 상기 프로세서가 상기 지정된 어플리케이션을 실행하고, 플랫폼 서버와 상기 제2 네트워크를 통해 상호작용함으로써 CP 서버를 지정하고, 상기 지정된 CP 서버에서 생성된 초기 응답 메시지를 상기 제1 네트워크를 통해 수신하고, 상기 초기 응답 메시지의 발신처로부터 상기 제1 프로토콜에 기반한 상기 지정된 CP 서버의 제1 식별자를 확인하도록 하는 인스트럭션들을 저장할 수 있다.
본 문서에 개시되는 일 실시 예에 따른 서버는, 제1 프로토콜을 준수하는(compliant with) 제1 네트워크를 통해(over) 전자 장치와 통신하고, 제2 프로토콜을 준수하는 제2 네트워크를 통해 콘텐트 제공자 서버(CP server, content provider server)와 통신하는 통신 모듈, 상기 통신 모듈과 전기적으로 연결된 프로세서, 및 상기 프로세서와 전기적으로 연결되고, 상기 제1 프로토콜에 기반한 상기 CP 서버의 제1 식별자 및 상기 제2 프로토콜에 기반한 상기 CP 서버의 제2 식별자 간의 제1 대응관계(relationship)를 저장하는 메모리를 포함할 수 있다. 상기 메모리는, 실행시, 상기 프로세서가 상기 제1 네트워크를 통해 상기 전자 장치로부터, 상기 CP 서버의 상기 제1 식별자를 수신처로 하는 상기 제1 프로토콜에 따라 포맷된 제1 메시지를 수신하고, 상기 제2 프로토콜에 따라 포맷되도록 상기 제1 메시지를 변환하고, 상기 메모리에 저장된 상기 제1 대응관계를 이용하여 상기 변환된 제1 메시지의 수신처를 상기 CP 서버의 상기 제2 식별자로 변경하고, 상기 제2 식별자가 나타내는 상기 CP 서버로 상기 변환된 제1 메시지를 상기 제2 네트워크를 통해 전송하도록 하는 인스트럭션들을 저장할 수 있다.
본 문서에 개시되는 또 다른 실시 예에 따른 서버는, 제1 프로토콜을 준수하는(compliant with) 제1 네트워크를 통해(over) 전자 장치와 통신하고, 제2 프로토콜을 준수하는 제2 네트워크를 통해 콘텐트 제공자 서버(CP server, content provider server)와 통신하는 통신 모듈, 상기 통신 모듈과 전기적으로 연결된 프로세서, 및 상기 프로세서와 전기적으로 연결되고, 상기 제1 프로토콜에 기반한 상기 전자 장치의 식별자 및 상기 전자 장치에 할당된 고유의 식별자 간의 제2 대응관계를 저장하는 메모리를 포함할 수 있다. 상기 메모리는, 실행시, 상기 프로세서가 상기 제2 네트워크를 통해 상기 CP 서버로부터, 상기 전자 장치에 할당된 고유의 식별자를 수신처로 하는 상기 제2 프로토콜에 따라 포맷된 제2 메시지를 수신하고, 상기 제1 프로토콜에 따라 포맷되도록 상기 제2 메시지를 변환하고(convert the first message to be formatted under the second protocol), 상기 메모리에 저장된 상기 제2 대응관계를 이용하여 상기 변환된 제2 메시지의 수신처를 상기 제1 프로토콜에 기반한 상기 전자 장치의 식별자로 변경하고, 상기 제1 프로토콜에 기반한 상기 전자 장치의 식별자가 나타내는 상기 전자 장치로 상기 변환된 제2 메시지를 상기 제1 네트워크를 통해 전송하도록 하는 인스트럭션들을 저장할 수 있다.
본 문서에 개시되는 다양한 실시 예에 의하면, 챗봇과 전자 장치 간의 메시지 송수신은 RCS 네트워크를 통해 송수신될 수 있다. 상기 RCS 네트워크의 향상된 확장성, 연결성, 및 호환성으로 인해 본 발명의 일 실시 예에 따른 시스템은 더욱 향상된 챗봇 서비스를 제공할 수 있다. 이 외에, 본 문서를 통해 직접적 또는 간접적으로 파악되는 다양한 효과들이 제공될 수 있다.
도 1a 및 도 1b는 일 실시 예에 따른 대화형 콘텐츠 제공 시스템을 나타낸다.
도 2는 일 실시 예에 따른 대화형 콘텐츠 제공 방법을 나타낸 시퀀스도를 나타낸다.
도 3a 및 도 3b는 일 실시 예에 따른 전자 장치의 GUI를 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시 예에 따른 시스템 내의 전자 장치의 블록도를 나타낸다.
도 5는 일 실시 예에 따른 플랫폼 서버의 기능 블록도를 나타낸다.
도 6a은 일 실시 예에 따른 봇 서비스 모듈을 나타낸다.
도 6b는 일 실시 예에 따른 봇 레지스트리를 나타낸다.
도 6c는 일 실시 예에 따른 교환기를 나타낸다.
도 6d는 일 실시 예에 따른 봇 에이전트를 나타낸다.
도 6e는 일 실시 예에 따른 봇 에이전트 매니저를 나타낸다.
도 7은 일 실시 예에 따른 챗봇을 플랫폼 서버에 등록하는 방법을 나타낸다.
도 8은 일 실시 예에 따른 챗봇 등록 시 플랫폼 서버의 동작을 나타낸다.
도 9는 일 실시 예에 따른 챗봇을 구독하는 방법을 나타낸다.
도 10은 일 실시 예에 따른 챗봇 구독 시 플랫폼 서버의 동작을 나타낸다.
도 11은 일 실시 예에 따른 채팅 방법을 나타낸다.
도 12는 일 실시 예에 따른 챗봇과 채팅 시 플랫폼 서버의 동작을 나타낸다.
도면의 설명과 관련하여, 동일 또는 유사한 구성요소에 대해서는 동일 또는 유사한 참조 부호가 사용될 수 있다.
이하, 본 발명의 다양한 실시 예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 실시 예의 다양한 변경(modification), 균등물(equivalent), 및/또는 대체물(alternative)을 포함하는 것으로 이해되어야 한다.
본 문서에 개시된 다양한 실시 예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들면, 휴대용 통신 장치(예: 스마트폰), 컴퓨터 장치(예: PDA, 태블릿 PC, 랩탑 PC, 데스크톱 PC, 워크스테이션, 또는 서버), 휴대용 멀티미디어 장치(예: 전자 책 리더기 또는 MP3 플레이어), 휴대용 의료 기기(예: 심박, 혈당, 혈압, 또는 체온 측정기), 카메라, 또는 웨어러블 장치 중 적어도 하나를 포함할 수 있다. 웨어러블 장치는 액세서리 형(예: 시계, 반지, 팔찌, 발찌, 목걸이, 안경, 콘택트 렌즈, 또는 머리 착용 형 장치(head-mounted-device(HMD)), 직물 또는 의류 일체형(예: 전자 의복), 신체 부착 형(예: 스킨 패드 또는 문신), 또는 생체 이식 형 회로 중 적어도 하나를 포함할 수 있다. 어떤 실시 예들에서, 전자 장치는, 예를 들면, 텔레비전, DVD(digital video disk) 플레이어, 오디오 장치, 오디오 액세서리 장치(예: 스피커, 헤드폰, 또는 헤드 셋), 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스, 홈 오토메이션 컨트롤 패널, 보안 컨트롤 패널, 게임 콘솔, 전자 사전, 전자 키, 캠코더, 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
다른 실시 예에서, 전자 장치는 네비게이션 장치, 위성 항법 시스템(GNSS(global navigation satellite system)), EDR(event data recorder)(예: 차량/선박/비행기 용 블랙박스(black box)), 자동차 인포테인먼트 장치(예: 차량용 헤드-업 디스플레이), 산업용 또는 가정용 로봇, 드론(drone), ATM(automated teller machine), POS(point of sales) 기기, 계측 기기(예: 수도, 전기, 또는 가스 계측 기기), 또는 사물 인터넷 장치(예: 전구, 스프링클러 장치, 화재 경보기, 온도 조절기, 또는 가로등) 중 적어도 하나를 포함할 수 있다. 본 문서의 실시 예에 따른 전자 장치는 전술한 기기들에 한정되지 않으며, 또한, 예를 들면, 개인의 생체 정보(예: 심박 또는 혈당)의 측정 기능이 구비된 스마트폰의 경우처럼, 복수의 장치들의 기능들을 복합적으로 제공할 수 있다. 본 문서에서, 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치(예: 인공지능 전자 장치)를 지칭할 수 있다.
도 1a는 일 실시 예에 따른 대화형 콘텐츠 제공 시스템을 나타낸다.
도 1a를 참조하면 일 실시 예에 따른 대화형 콘텐츠 제공 시스템(100)은, 전자 장치(101), 플랫폼 서버(platform server)(102), 및 CP(content provider) 서버들(104-1, 104-2; 통칭하여 104)를 포함할 수 있다. 상기 전자 장치(101), 상기 플랫폼 서버(102), 및 CP 서버들(104-1 104-2)는, 도시하지 않았으나, 예컨대 데이터 네트워크 (제2 네트워크의 일례) (예: IP 네트워크, 인터넷)를 통해 연결될 수 있다.
전자 장치(101)는, 이에 제한되지 않으나, 휴대용 통신 장치(예: 스마트폰), 컴퓨터 장치(예: PDA(personal digital assistant), 태블릿 PC(tablet PC), 랩탑 PC, 데스크톱 PC), 휴대용 멀티미디어 장치(예: 전자 책 리더기 또는 MP3 플레이어), 또는 웨어러블 장치 중 적어도 하나를 포함할 수 있다.
일 실시 예에 따르면, 전자 장치(101)는 데이터 네트워크(예: IP 네트워크, 인터넷)를 통해 플랫폼 서버(102)에 접속할 수 있다. 상기 전자 장치(101)는 브라우저를 통해 플랫폼 서버(102)에 의해 운용되는 웹 페이지(챗봇 스토어 웹 페이지)에 접속하거나, 또는 전용 어플리케이션(챗봇 스토어 어플리케이션)을 실행할 수 있다. 사용자는 상기 웹 페이지 또는 상기 전용 어플리케이션을 통해 자신이 원하는 서비스를 제공하는 CP 서버(104)를 검색하고, 상기 검색된 CP 서버(104)를 구독(subscribe)할 수 있다.
일 실시 예에 따르면, 상기 전자 장치(101)는 RCS(rich communication suite) 네트워크(103)을 통해 상기 플랫폼 서버(102)와 통신할 수 있으며, 상기 플랫폼 서버(102)를 매개하여 CP 서버(104)와 메시지를 송수신할 수 있다.
예를 들어, 전자 장치(101)는 제1 CP 서버(104-1)를 구독할 수 있다. 상기 구독에 의해 전자 장치(101)와 제1 CP 서버(104-1)는 네이티브 메신저 어플리케이션에서 제공되는 챗 스레드(chat thread)가 개시될 수 있다. 챗 스레드가 개시되면, 전자 장치(101)와 제1 CP 서버(104-1)는 상기 네이티브 메신저 어플리케이션에서 제공된 GUI(graphic user interface)(110)(예: 챗 룸(chat room))를 통해 메시지들(111-1, 111-2, 111-3)를 서로 송수신할 수 있다. 예를 들면, 제1 CP 서버(104-1)에서 생성된 메시지들(111-1, 111-3)은 RCS 네트워크(103)를 통해 전자 장치(101)에 전송될 수 있다. 전자 장치(101)에서 생성된 메시지(111-2)는 RCS 네트워크(103)를 통해 플랫폼 서버(102)에 전송된 후 지정된 방식으로 변환되어, 제1 CP 서버(104-1)에 전송될 수 있다.
플랫폼 서버(102)는 CP 서버들(104-1, 104-2)의 플랫폼 역할을 수행하고, CP 서버들(104-1, 104-2)과 전자 장치(101)를 매개할 수 있다. 예컨대, 상기 플랫폼 서버(102)는 전자 장치(101)가 CP 서버들(104-1, 104-2)을 검색하거나, 상기 CP 서버들(104-1, 104-2)과 전자 장치(101) 간의 메시지 송수신을 지원할 수 있다.
일 실시 예에 따르면, 플랫폼 서버(102)는 CP 서버들(104-1, 104-2)과 데이터 네트워크를 통해 통신할 수 있고, 상기 플랫폼 서버(102)는 전자 장치(101)와 RCS 네트워크(103)를 통해 통신할 수 있다. 따라서, CP 서버들(104-1, 104-2)에서 생성된 메시지는 플랫폼 서버(102)에서 RCS 네트워크(103)에 기반한 메시지 포맷으로 변환되어야 전자 장치(101)에 전달될 수 있다. 반대로, 전자 장치(101)에서 생성된 RCS 네트워크(103)에 기반한 메시지는 플랫폼 서버(102)에서 데이터 네트워크에 기반한 메시지 포맷으로 변환되어야 CP 서버들(104-1, 104-2) 에 전달될 수 있다.
RCS 네트워크(103)는 차세대 통합 메시징 서비스의 국제표준 프로토콜인 RCS(제1 프로토콜의 일례)를 준수(compliant with)할 수 있다. 상기 RCS는 GSMA (global system for mobile communication association)에서 채택된 차세대 통합 메시징 서비스의 국제표준으로서, 기존의 메시징 서비스(예: SMS/MMS)에서 제공하지 않는 다양한 특징(예: 그룹 챗, 파일 전송, 수신자의 상태 체크, 또는 메시지 전송 상태 체크 등)을 제공할 수 있다.
일 실시 예에 따르면, RCS 네트워크(103)는 MNO(mobile network operator)에 운용될 수 있으며, "전화번호(예: MSISDN(mobile station international subscriber directory number)"에 기반하여 가입자들(예: 전자 장치(101), CP 서버들(104-1, 104-2))을 특정할 수 있다.
상기 RCS 네트워크(103)를 이용하는 메시징 서비스 어플리케이션 프로그램(이하, 어플리케이션)은, OTT 기반 메시징 서비스 어플리케이션(예: Facebook messengerTM, LineTM, KakaotalkTM, 또는 What's appTM 등)과 달리, 네이티브 어플리케이션으로 구현될 수 있다. 따라서, 사용자는 RCS 네트워크(103)를 이용하기 위해 별도로 메시징 서비스 어플리케이션을 추가적으로 다운로드하거나 인스톨할 필요가 없으며, 전자 장치(101)에서 제공될 수 있다. 또한, RCS 네트워크(103)를 이용하는 메시징 서비스 어플리케이션은 "전화번호"를 가입자 특정에 이용하므로 사용자의 회원가입(sign up), 또는 로그인(sign in 또는 log in)을 필요로 하지 않는다.
CP 서버들(104: 104-1, 104-2)은 예컨대, 각각의 콘텐트 제공자(CP, content provider)(14: 14-1, 14-2)에 의해 개발될 수 있다. CP 서버(104)는 초기 응답 메시지(이른바, 웰컴 메시지), 또는 상기 CP 서버(104)에서 제공되는 서비스와 관련된 메시지를 플랫폼 서버(102) 및 RCS 네트워크(103)을 통해 전자 장치(101)에 제공할 수 있다.
일 실시 예에 따르면, CP 서버(104)는 머신 러닝(machine learning) 또는 인공지능(artificial intelligence)을 지원하는 NLP(natural language processing) 모듈 (혹은 NLU(natural language understanding) 모듈)을 포함할 수 있다. 상기 NLP 모듈은 전자 장치(101)로부터 수신된 메시지에 포함된 자연어의 의미 혹은 콘텍스트(context)를 도출(derive)하고, 상기 의미 혹은 콘텍스트에 대응하는 메시지를 자동으로 생성할 수 있다. 본 문서에서, 상기 NLP 모듈을 포함하는 CP 서버(104)는 챗봇(chatbot) 혹은 단순히 봇(bot)으로 참조될 수 있다.
도 1b는 일 실시 예에 따른 대화형 콘텐츠 제공 시스템을 나타낸다.
도 1b를 참조하면 일 실시 예에 따른 대화형 콘텐츠 제공 시스템(100)은, 전자 장치(101), 플랫폼 서버(102), 및 챗봇(104)을 포함할 수 있다. 상기 전자 장치(101), 상기 플랫폼 서버(102), 및 챗봇(104)은, 도시하지 않았으나, 예컨대 데이터 네트워크 (제2 네트워크의 일례) (예: IP 네트워크, 인터넷)를 통해 연결될 수 있다.
일 실시 예에 따르면, 개발자(14)는 챗봇(104)을 개발(build), 업데이트(update), 출시(release)할 수 있다. 상기 개발자(14)는 예컨대 챗봇 스토어의 개발자 포털 웹 페이지 등에 접속하여 상기 챗봇(104)을 등록할 수 있다.
동작 001에서, 개발자(14)는 챗봇(104)의 정보를 등록할 수 있다. 예를 들어, 개발자(14)는 "챗봇 스토어"의 개발자 포털 웹 페이지 등에 접속하여 챗봇(104)의 이름, 아이콘, 설명, URI와 같은 정보를 등록할 수 있다.
다양한 실시 예에 따르면, 플랫폼 서버(102)는 상기 동작 001에서 플랫폼 서버(102)는 액세스 토큰(access token)을 생성하여 개발자(14)에 전달하거나, 및/또는 개발자(14)로부터 자체 생성 인증서(self-signed certificate) 를 제공받을 수 있다. 상기 토큰 및 인증서는 추후 플랫폼 서버(102)와 챗봇(104) 사이에서 송수신되는 메시지의 보안성을 향상시키기 위해 이용될 수 있다.
동작 002에서, 플랫폼 서버(102)는 챗봇(104)의 유효성을 확인할 수 있다. 예를 들어, 플랫폼 서버(102)의 봇 레지스트리(122)는 등록된 URI를 검증하기 위해 챗봇(104)의 온라인(Online) 여부를 확인할 수 있다.
동작 003에서 전자 장치(101)는 지정된 어플리케이션을 통해 플랫폼 서버(102)가 운용하는 "챗봇 스토어"에 접속하고, 상기 플랫폼 서버(102)의 봇 레지스트리(122)에 등록된 챗봇들을 열람할 수 있다. 예컨대, 전자 장치(101)는 상기 봇 레지스트리(122)에 등재된 챗봇들의 목록을 수신하거나, 사용자가 희망하는 서비스를 제공하는 챗봇을 검색 및 지정할 수 있다.
일 실시 예에 따르면, 상기 챗봇(104)을 검색하기 위해 전자 장치(101)가 플랫폼 서버(102)의 봇 레지스트리(122)로 전송하는 요청 메시지의 포맷은 헤더(header) 및 보디(body)를 포함할 수 있다. 예를 들어, 상기 헤더 및 보디는 각각 [표 1] 및 [표 2]와 같이 설명될 수 있다.
Field Type Description
Content-Type String Content type of the request body: application/json
Field Type Description
searchQuery optional String A search query for published bots.
pageNumber optional String A page index of search request. It begins with 1.
pageSize optional String A number of bot search result entry within single request.
또한, 플랫폼 서버(102)의 봇 레지스트리(122)가 전자 장치(101)에 제공하는, 챗봇 검색 결과를 포함한 메시지는 [표 3]과 같은 메시지 포맷을 가질 수 있다. 상기 [표 3] 중에서, 검색된 챗봇들의 리스트(botInfoList)는, [표 4]와 같은 데이터 포맷을 가진 챗봇 정보(BotInfo)를 포함할 수 있다.
Field Type Description
botInfoList BotInfo[] A list of bot search result.
searchTotalCount int Total number of the result.
Field Type Description
appId optional string appId(BotId) value generated when the Bot was created in Bot Registry
name optional string A name of a Bot.
publisher optional string A publisher of a Bot.
msisdn optional string MSISDN of a Bot.
mno optional string Mobile Network Provider of a Bot.
iconUrl optional string A URL to a bot icon.
brief optional string A brief description of a Bot.
description optional string A detailed description of a Bot.
동작 004에서 전자 장치(101)는 챗봇(104)의 RCS 식별자를 확보하고, 이를 기반으로 상기 챗봇(104)을 구독(subscribe)할 수 있다. 이때, 상기 챗봇(104)은 플랫폼 서버(102)를 통해 전자 장치(101)의 사용자 정보를 획득할 수 있다.
일 실시 예에 따르면, 상기 챗봇(104)을 구독하기 위해 전자 장치(101)가 플랫폼 서버(102)의 봇 레지스트리(122)로 전송하는 메시지의 포맷은 헤더 및 보디를 포함할 수 있다. 예를 들어, 상기 헤더 및 보디는 각각 [표 5] 및 [표 6]과 같이 설명될 수 있다.
Field Type Description
Content-Type String Content type of the request body: application/json
Field Type Description
appId optional String appId(BotId) value generated when the Bot was created in Bot Registry
subscriberMsisdn optional String MSISDN of a subscriber.
subscriberName optional String A nick name of a subscriber.
code optional String A verification code retrieved from Bot Registry.
promotion optional Boolean If a subscriber subscribe for promotional messages.
동작 005에서 전자 장치(101)는 RCS 네트워크(103)를 통해 챗봇과 대화(챗 스레드)를 시작할 수 있다. 예를 들어, 전자 장치(101)는, 챗봇(104)의 RCS 식별자(예: MSISDN)를 수신처로 하고, RCS에 따른 포맷(예: SIP(session initiation protocol) 메시지 포맷)을 가진 메시지("Taxi")를 RCS 네트워크(103)에 전송할 수 있다.
동작 006에서 상기 전자 장치(101)에서 생성된 메시지는 RCS 네트워크(103)를 통해 플랫폼 서버(102)의 봇 에이전트(142)에 전달될 수 있다. 상기 봇 에이전트(142)는 상기 챗봇(104)과 연계되어 있을 수 있다.
동작 007에서, 봇 서비스 모듈(132)은 동작 006에서 봇 에이전트(142)가 수신한 메시지의 수신처를 URI 형식으로 변환할 수 있다. 이를 위해 상기 봇 서비스 모듈(132)은 봇 레지스트리(122)에 저장된 챗봇(104)의 RCS 식별자와 챗봇(104)의 URI의 대응관계를 참조할 수 있다.
동작 008에서 봇 서비스 모듈(132)은 상기 URI에 의해 특정된 챗봇(104)에게 메시지를 전달할 수 있다. 플랫폼 서버(102)는 상기 메시지를 전송하기 위해 챗봇(104)과 HTTPS(hypertext transfer protocol over secure socket layer)에 기반한 연결을 수립할 수 있다. 이때, 플랫폼 서버(102)는 동작 001에서 등록된 챗봇(104)의 인증서를 기반으로 상기 챗봇(104)을 검증할 수 있다.
일 실시 예에 따르면, 동작 008에서 상기 플랫폼 서버(102)의 봇 서비스 모듈(132)이 챗봇(104)으로 전송하는 메시지의 포맷은 헤더 및 보디를 포함할 수 있다. 예를 들어, 상기 헤더 및 보디는 각각 [표 7] 및 [표 8]와 같이 설명될 수 있다.
Field Type Description
Content-Type String Content type of the request body: application/json
Field Type Description
messageType String "Message": Message from end users.
botID String AppID value generated when the Bot was created in Bot Registry.
chatID String chatID of the chat this message belongs to.
message Message Actual message sent from the user.
contacts Contacts Contact information for the message.
동작 009에서 챗봇(104)은 메시지("Taxi")에 대한 응답 메시지("Destination?")를 생성하고, 이를 플랫폼 서버(102)의 봇 서비스 모듈(132)로 전달할 수 있다. 일 실시 예에 따르면, 상기 응답 메시지의 일부 필드(field)에는 동작 001에서 수신된 액세스 토큰이 포함될 수 있다. 플랫폼 서버(102)는 상기 토큰을 이용하여 상기 응답 메시지가 정당한 챗봇에 의해 생성 및 전송되었는지 검증할 수 있다.
일 실시 예에 따르면, 상기 봇 서비스 모듈(132)이 챗봇(104)으로 전송하는 메시지의 포맷은 헤더, 파라미터, 및 보디를 포함할 수 있다. 예를 들어, 헤더, 파라미터, 및 보디는 각각 [표 9], [표 10], 및 [표 11]와 같이 설명될 수 있다.
Field Type Description
Authorization String Access token given by Bot Registry.
Content-Type String Content type of the request body: application/json
Field Type Description
botID String BotID value generated when the Bot was created in Bot Registry.
Field Type Description
chatID optional String chatID of the destination chat thread.
userID optional String userID of the recipient. Required only for unsolicited messages to a follower (i.e. when chatID is not available).
userNumber optional String Phone number of the recipient. Required only for unsolicited messages to a non-follower (i.e. when both chatID and userID is not available).
message Message Message to be sent to the user.
동작 010에서 상기 응답 메시지는 봇 서비스 모듈(132)에서 봇 에이전트(142)로 전송되고, 상기 봇 에이전트(142)에서 RCS에 따른 포맷(예: SIP 메시지 포맷)으로 변환될 수 있다. 상기 변환된 메시지는 RCS 네트워크(103)에 전송될 수 있다.
동작 011에서 메시지로 변환된 응답 메시지는 RCS 네트워크(103)를 통해 사용자의 전자 장치(101)에 전달될 수 있다.
도 2는 일 실시 예에 따른 대화형 콘텐츠 제공 방법을 나타낸 시퀀스도를 나타낸다.
도 2를 참조하면, 일 실시 예에 따른 대화형 콘텐츠 제공 방법은, CP 서버 등록 동작 211-212, CP 서버 구독(subscription) 동작 221-228, 채팅 동작 231-238을 포함할 수 있다. 도 2의 동작들은, 예컨대, 도 1a에 도시된 전자 장치(101), 플랫폼 서버(102), 및 제1 CP 서버(104-1)에 의해 수행될 수 있다. 각 장치에서 수행되는 동작들은 프로세서로 실행 가능한 인스트럭션(instruction)으로 구현되어, 상기 각 장치에 포함된 메모리에 저장될 수 있다. 이하 도 2의 설명에 도 1a의 참조번호를 사용하기로 하며, 제1 CP 서버(104-1)는 제1 챗봇(104-1)으로 참조하기로 한다.
동작 211에서 콘텐트 제공자(CP)(14-1)(예: 제1 챗봇(104-1)의 개발자)는, 예컨대, 플랫폼 서버(102)가 운용하는 웹 페이지 상에서 "챗봇 생성" 버튼을 누를 수 있다. 상기 콘텐트 제공자(CP)(14-1)는 제1 챗봇(104-1)를 "챗봇 스토어"에 등재하기 위해 필요한 정보를 플랫폼 서버(102)에 제공할 수 있다. 예컨대, 상기 콘텐트 제공자(CP)(14-1)는 제1 챗봇(104-1)을 이용하여 플랫폼 서버(102)에 상기 제1 챗봇(104-1)의 데이터 네트워크 상 식별자(예: URI(uniform resource identifier))를 포함한 등록 요청 메시지를 전송할 수 있다.
동작 212에서 플랫폼 서버(102)는 제1 챗봇(104-1)을 "챗봇 스토어"에 등록하기 위한 다양한 프로세스를 수행할 수 있다. 일 예를 들어, 플랫폼 서버(102)는 상기 제1 챗봇(104-1)을 위하여 RCS 네트워크(103)(제1 네트워크의 일례)에서 사용될 식별자(예: MSISDN)(이하, RCS 식별자)를 할당할 수 있다. 플랫폼 서버(102)는 상기 제1 챗봇(104-1)의 RCS 식별자와 상기 제1 챗봇(104-1)의 데이터 네트워크 상 식별자(예: URI) 간의 제1 대응관계를 메모리에 저장할 수 있다.
또한, 동작 212에서 플랫폼 서버(102)는 상기 RCS 네트워크(103)에 대한 인증을 수행하거나, 제1 챗봇(104-1)을 위해 사용될 플랫폼 서버(102) 내 각종 소프트웨어 모듈(예: 후술하는 봇 에이전트(BotAgent), 메시지 큐(message queue))을 구성할 수 있다. 예를 들어, 플랫폼 서버(102)는 액세스 토큰을 생성하여 제1 챗봇(104-1)에 전송하거나, 및/또는 제1 챗봇(104-1)으로부터 인증서(예: 자체 생성 인증서, CA에 의해 발행된 인증서)를 제공받을 수 있다. 상기 토큰 및 인증서는 메시지의 보안성을 향상시키기 위해 이용될 수 있다.
동작 221에서 사용자의 전자 장치(101)는, 플랫폼 서버(102)와 데이터 네트워크(제2 네트워크의 일례)를 통해 상호작용함으로써 제1 챗봇(104-1)를 지정할(designate) 수 있다.
예를 들어, 전자 장치(101)는 지정된 어플리케이션(예: 네이티브 메시징 서비스 어플리케이션, 웹 브라우저 어플리케이션, 마켓 어플리케이션 등)을 실행할 수 있다. 전자 장치(101)는 상기 지정된 어플리케이션을 통해 "챗봇 스토어"에 접속하고, 상기 "챗봇 스토어"에 등록된 챗봇들의 상태(status), 가용성(availability), 간략한 설명(abstract description) 등을 열람할 수 있다. 전자 장치(101)는 상기 "챗봇 스토어"에 등록된 챗봇들 중에서 특정 챗봇(제1 챗봇(104-1))을 지정할 수 있다. 상기 특정 챗봇(제1 챗봇(104-1))은 상기 특정 챗봇의 RCS 식별자를 이용하여 지정될 수 있다.
일 실시 예에 따르면, 상기 제1 챗봇(104-1)이 지정되면, 전자 장치(101)는 구독 요청(a subscribe request)을 요청하고, 제1 챗봇(104-1)에 의해 승인된 후에 상기 제1 챗봇(104-1)과 메시지 송수신을 위한 세션(예: 챗룸(chatroom) 생성 등)을 개시할 수 있다. 다양한 실시 예에 따르면, 전자 장치(101)는 상기 구독 요청을 전송하기 위해 사용자 인증을 사용자에게 요구할 수도 있다. 또한, 사용자는 특정 챗봇과 통신하기 원하지 않는 경우, 구독 중지 요청(unsubscribe request)을 해당 특정 챗봇에게 전송할 수도 있다.
동작 222에서 전자 장치(101)에 의해 제1 챗봇(104-1)이 지정되면, 플랫폼 서버(102)는 전자 장치(101)의 RCS 식별자를 확인(verify)할 수 있다. 플랫폼 서버(102)는 상기 확인된 전자 장치(101)의 식별자에 대응하는 고유(unique) 식별자를 상기 전자 장치(101)에 할당할(allocate) 수 있다. 상기 전자 장치(101)의 RCS 식별자 및 상기 고유 식별자 간의 제2 대응관계를 상기 플랫폼 서버(102)의 메모리에 저장될 수 있다.
일 실시 예에 따르면, 전자 장치(101)의 RCS 식별자는 이에 제한되지 않으나, MSISDN일 수 있다. 다양한 실시 예에 따르면, 상기 RCS 식별자는 IMSI(international mobile station identity)일 수도 있다. 일 실시 예에 따르면, 전자 장치(101)에 할당되는 상기 고유 식별자는, 상기 전자 장치(101)를 지칭하거나(UserID), 또는 상기 전자 장치(101)가 속한 메시지 교환 스레드(thread)(ChatID)를 지칭할 수 있다.
동작 223에서 플랫폼 서버(102)는, 알림 메시지(notification message)를 데이터 네트워크를 통해 제1 챗봇(104-1)에 전송할 수 있다. 상기 알림 메시지의 수신처는 제1 챗봇(104-1)의 URI로 특정될 수 있으며, 상기 알림 메시지는 동작 222에서 할당된 전자 장치(101)의 고유 식별자를 포함할 수 있다. 상기 제1 챗봇(104-1)의 URI는, 동작 212에서 플랫폼 서버(102)에 저장된 제1 대응관계를 이용하여 챗봇의 RCS 식별자로부터 변환된 것일 수 있다.
일 실시 예에 따르면, 플랫폼 서버(102)는 상기 알림 메시지를 전송하기 위해 제1 챗봇(104-1)과 HTTPS에 기반한 연결을 수립할 수 있다. 이때, 예를 들어, 플랫폼 서버(102)는 제1 챗봇(104-1) 또는 상기 제1 챗봇(104-1)과 송수신되는 메시지를 검증할 수 있다.
일 예를 들어, 플랫폼 서버(102)는 제1 챗봇(104-1)의 URI에 접근할 경우, 콘텐트 제공자(CP)(14-1)에 의한 동작 211에서의 선택에 따라, HTTPS 프로토콜을 사용할 수 있다. 상기 플랫폼 서버(102)는, Man-In-The-Middle 공격을 회피하기 위해 제1 챗봇(104-1)과 연결 시 전달되는 인증서가 공개키 기반구조(Public Key Infrastructure, PKI)에 기반한 인증기관(Certificate Authority, CA)에 의해 발행된 것인지 확인할 수 있다. 또 다른 예를 들면, 플랫폼 서버(102)는 동작 211에서 콘텐트 제공자(CP)(14-1)가 등록한 Self-Signed 인증서와 동일한 인증서가 전달되는지 확인할 수 있다. 또 다른 예를 들면, 콘텐트 제공자(CP)(14-1)는 HTTP 프로토콜을 사용하되, 플랫폼 서버(102)에 의해 동작 221에서 선택적으로 제공하는 대칭키를 사용하여, 플랫폼 서버(102)과 제1 챗봇(104-1) 간에 송수신되는 메시지를 보호할 수 있다.
동작 224에서 제1 챗봇(104-1)은 동작 223에서 수신된 알림 메시지로부터 상기 제1 챗봇(104-1)을 구독하기 원하는 전자 장치(101)의 고유 식별자를 확인 또는 획득할 수 있다.
동작 225에서 제1 챗봇(104-1)은, 상기 확인된 전자 장치(101)의 고유 식별자를 수신처로 하는 초기 응답 메시지(initial response message)(또는, 웰컴 메시지)를 생성하여, 데이터 네트워크를 통해 플랫폼 서버(102)에 전송할 수 있다. 즉, 플랫폼 서버(102)는 알림 메시지의 전송에 응답하여, 초기 응답 메시지를 제1 챗봇(104-1)로부터 수신할 수 있다.
일 실시 예에 따르면, 상기 초기 응답 메시지는, 이미지, 오디오, 비디오, 자연어 텍스트, 또는 미리 정의된 UI(예: 버튼) 등을 포함할 수 있다. 상기 미리 정의된 UI는, 인기있는(popular) 쿼리(query)에 대응한 정보를 직접 포함하거나, 또는 상기 정보에 간접적으로 연결된 (또는 링크된) 객체를 포함할 수 있다. 상기 초기 응답 메시지를 수신한 전자 장치(101)의 사용자는 별도로 직접 텍스트를 타이핑하지 아니하고 미리 정의된 UI를 선택함으로써 상기 초기 응답 메시지에 응답할 수 있다.
일 실시 예에 따르면, 상기 초기 응답 메시지는, 예컨대, 상기 CP 서버에서 제공하는 서비스를 설명하기 위한 메타 정보(meta-information)를 포함할 수 있다. 상기 메타 정보는, 예컨대, 이름, 카테고리, 주소, 서비스 리스트, 퍼플리셔(publisher), 또는 설명 등과 같은 챗봇 자신을 설명하는 정보를 적어도 일부 포함할 수 있다. 상기 초기 응답 메시지는 전자 장치(101)에 의한 구독에 응답하여 최초로 제공되는 메시지로서, "웰컴 메시지"로 참조될 수도 있다.
일 실시 예에 따르면, 상기 초기 응답 메시지의 일부 필드에는 동작 212에서 수신된 액세스 토큰이 포함될 수 있다. 플랫폼 서버(102)는 상기 토큰을 이용하여 상기 초기 응답 메시지가 정당한 챗봇에 의해 생성 및 전송되었는지 검증할 수 있다. 예를 들면, 제1 챗봇(104-1)은 보안성을 향상시키기 위하여 HTTPS 프로토콜을 사용할 수 있다. 제1 챗봇(104-1)은 플랫폼 서버(102)로부터 제공받은 액세스 토큰을 초기 응답 메시지 내에 포함시킬 수 있다. 플랫폼 서버(102)는 상기 액세스 토큰을 확인함으로써 상기 수신된 초기 응답 메시지가 동작 212에서 등록된 제1 챗봇(104-1)으로부터 전송된 메시지인지 검증할 수 있다.
동작 226에서 플랫폼 서버(102)는 제1 챗봇(104-1)로부터 데이터 네트워크를 통해 수신된 초기 응답 메시지를 RCS에 따른 포맷(예: SIP 메시지 포맷)으로 변환(convert)할 수 있다. 이때, 플랫폼 서버(102)는 상기 초기 응답 메시지의 수신처를 전자 장치(101)의 고유 식별자에서 상기 전자 장치(101)의 RCS 식별자로 변환할 수 있다. 일 실시 예에 따르면, 상기 플랫폼 서버(102)는 상기 초기 응답 메시지의 수신처를 변환함에 있어서, 동작 222에서 메모리에 저장된 제2 대응관계를 이용할 수 있다.
동작 227에서 플랫폼 서버(102)는 동작 226에서 변환된 초기 응답 메시지를 상기 RCS 네트워크(103)를 통해 전자 장치(101)에 전달할 수 있다.
동작 228에서 전자 장치(101)는, 동작 227에서 수신된 초기 응답 메시지의 발신처로부터 RCS에 기반한 제1 챗봇(104-1)의 식별자(RCS 식별자; 예컨대 MSISDN)를 확인(verify) 또는 획득할 수 있다. 다양한 실시 예에 따르면, 전자 장치(101)는 동작 221에서 제1 챗봇(104-1)의 RCS 식별자를 미리 획득할 수도 있고, 이 경우 동작 228은 생략될 수도 있다. 예를 들어, 제1 챗봇(104-1)이 메시징 서비스 어플리케이션에서 제공하는 챗봇인 경우 상기 제1 챗봇(104-1)의 RCS 식별자는 미리 획득되어 있을 수 있다.
동작 231에서 전자 장치(101)는 제1 챗봇(104-1)에서 제공되는 서비스를 이용하기 위해 제1 챗봇(104-1)에 전송할 메시지를 생성할 수 있다. 예를 들어, 전자 장치(101)는, 제1 챗봇(104-1)의 RCS 식별자를 수신처로 하는, RCS에 따라 포맷된(formatted under RCS) 제1 메시지를 생성할 수 있다.
일 실시 예에 따르면, 상기 제1 메시지는 예컨대, SIP 메시지 포맷을 가질 수 있으며, 전자 장치(101)에서 생성되었다는 측면에서 사용자 메시지(UserMessage)로 참조될 수도 있다. 상기 제1 메시지는, 예를 들어, RCS 기반 SMS/MMS로 구현될 수도 있으며, 또 다른 예를 들어, 상기 제1 메시지는, 자연어(natural language)를 포함한 텍스트, 이미지, 오디오, 또는 비디오 등을 포함할 수 있다.
동작 232에서 전자 장치(101)는 동작 231에서 생성된 제1 메시지를 RCS 네트워크(103)를 통해 플랫폼 서버(102)로 전송할 수 있다. 일 실시 예에 따르면, 상기 제1 메시지는 RCS에 따라 포맷되어 있고, 제1 챗봇(104-1)의 RCS 식별자를 수신처로 할 수 있다.
동작 233에서 플랫폼 서버(102)는, 전자 장치(101)로부터 RCS 네트워크(103)를 통해 수신된 제1 메시지를 데이터 네트워크에 적용된 프로토콜(예: 인터넷 프로토콜)에 따른 포맷으로 변환할 수 있다. 이때, 플랫폼 서버(102)는 상기 제1 메시지의 수신처를 제1 챗봇(104-1)의 RCS 식별자에서 상기 제1 챗봇(104-1)의 데이터 네트워크 상의 식별자(예: URI)로 변환할 수 있다. 일 실시 예에 따르면, 상기 플랫폼 서버(102)는 상기 제1 메시지의 수신처를 변환함에 있어서, 동작 212에서 메모리에 저장된 제1 대응관계를 이용할 수 있다.
동작 234에서 플랫폼 서버(102)는, 동작 233에서 변환된 제1 메시지를 데이터 네트워크를 통해 제1 챗봇(104-1)에 전달할 수 있다. 일 실시 예에 따르면, 플랫폼 서버(102)는 상기 제1 메시지를 전송하기 위해 제1 챗봇(104-1)과 HTTPS에 기반한 연결을 수립할 수 있다. 이때, 플랫폼 서버(102)는 동작 212에서 수신한 제1 챗봇(104-1)의 인증서(예: PKI에 기반한 CA에 의해 발행된 인증서, Self-Signed 인증서)를 기반으로 상기 제1 챗봇(104-1)을 검증하거나, 또는 대칭키에 기반한 암호화를 통해 상기 제1 메시지를 보호할 수 있다.
동작 235에서 제1 챗봇(104-1)은 제1 메시지의 수신에 응답하여 제2 메시지를 생성할 수 있다. 상기 제2 메시지는 상기 제1 메시지의 콘텍스트와 연관되어 있으며, 상기 제1 챗봇(104-1)에서 제공하는 서비스의 콘텐트를 포함할 수 있다.
일 실시 예에 따르면, 상기 제2 메시지는 예컨대, 데이터 네트워크에서 허용된 메시지 포맷을 가질 수 있다. 상기 제2 메시지는 전자 장치(101)의 고유 식별자를 수신처로 할 수 있다. 다양한 실시 예에 따르면, 상기 제2 메시지는 제1 챗봇(104-1)에서 생성되었다는 측면에서 봇 메시지(BotMessage)로 참조될 수도 있다.
일 실시 예에 따르면, 상기 제2 메시지의 일부 필드에는 동작 212에서 수신된 액세스 토큰이 포함될 수 있다. 플랫폼 서버(102)는 상기 토큰을 이용하여 상기 초기 응답 메시지가 정당한 챗봇에 의해 생성 및 전송되었는지 검증할 수 있다. 예를 들면, 제1 챗봇(104-1)은 보안성을 향상시키기 위하여 HTTPS 프로토콜을 사용할 수 있다. 제1 챗봇(104-1)은 플랫폼 서버(102)로부터 제공받은 액세스 토큰을 제2 메시지 내에 포함시킬 수 있다. 플랫폼 서버(102)는 상기 액세스 토큰을 확인함으로써 상기 수신된 제2 메시지가 동작 212에서 등록된 제1 챗봇(104-1)으로부터 전송된 메시지인지 검증할 수 있다.
일 실시 예에 따르면, 상기 제2 메시지는, 이미지, 오디오, 비디오, 자연어 텍스트, 또는 미리 정의된 UI(예: 버튼) 등을 포함할 수 있다. 상기 미리 정의된 UI는, 인기있는 쿼리에 대응한 정보를 직접 포함하거나, 또는 상기 정보에 간접적으로 연결된 (또는 링크된) 객체를 포함할 수 있다. 예컨대, 제1 챗봇(104-1)이 언론사에 의해 개발된 경우 상기 미리 정의된 UI는 뉴스의 헤드라인을 포함하거나, 또는 상기 헤드라인을 가진 뉴스 기사의 링크를 포함할 수 있다. 상기 제2 메시지를 수신한 전자 장치(101)의 사용자는 별도로 직접 텍스트를 타이핑하지 아니하고 미리 정의된 UI를 선택함으로써 상기 제2 메시지에 응답할 수 있다.
일 실시 예에 따르면, 제1 챗봇(104-1)은 상기 제1 챗봇(104-1)이 제공하는 서비스와 연관된 NLP 모듈을 포함할 수 있다. 상기 제1 챗봇(104-1)은 상기 NLP 모듈을 이용하여 전자 장치(101)로부터 수신된 제1 메시지의 의미 또는 콘텍스트를 도출하고, 상기 의미 혹은 콘텍스트에 대응하는 제2 메시지를 자동으로 생성할 수 있다. 다양한 실시 예에 따르면, 제1 챗봇(104-1)은 상기 NLP 모듈을 포함하지 않는 경우, NLP 모듈을 구비한 외부 서버와 상호작용함으로써 전자 장치(101)로부터 수신된 제1 메시지의 의미 또는 콘텍스트를 도출할 수도 있다.
동작 236에서 제1 챗봇(104-1)은, 데이터 네트워크를 통해 전자 장치(101)의 고유 식별자를 수신처로 하는 상기 제2 메시지를 플랫폼 서버(102)에 전송할 수 있다.
동작 237에서 플랫폼 서버(102)는 동작 236에서 수신된 제2 메시지를 RCS에 따른 포맷(예: SIP 메시지 포맷)으로 변환할 수 있다. 이때, 플랫폼 서버(102)는 상기 제2 메시지의 수신처를 전자 장치(101)의 고유 식별자에서 상기 전자 장치(101)의 RCS 식별자로 변환할 수 있다. 일 실시 예에 따르면, 상기 플랫폼 서버(102)는 상기 제2 메시지의 수신처를 변환함에 있어서, 동작 222에서 메모리에 저장된 제2 대응관계를 이용할 수 있다.
동작 238에서 플랫폼 서버(102)는 상기 제2 메시지를 RCS 네트워크(103)를 통해 전자 장치(101)에 전달할 수 있다. 동작 238 이후에는 동작 231 내지 238이 반복적으로 이루어질 수 있다. 다양한 실시 예에 따르면, 제1 챗봇(104-1)은 전자 장치(101)로부터 수신된 제1 메시지에 대한 응답으로 2 이상의 제2 메시지가 수신할 수도 있다.
도 2에서는 단일의 챗봇(104-1)과 단일의 전자 장치(101) 사이의 챗 (i.e., 메시지 송수신)을 설명하고 있으나 이에 제한되지 않는다. 다양한 실시 예에 따르면, 단일의 전자 장치와 복수의 봇 사이의 챗, 복수의 전자 장치와 단일의 봇 사이의 챗, 또는 복수의 전자 장치와 복수의 봇 사이의 챗과 같은 그룹 챗(group chat) 역시 도 2에 도시된 동작에 기반하여 유사하게 이루어질 수 있다.
도 3a 및 도 3b는 일 실시 예에 따른 전자 장치의 GUI를 설명하기 위한 도면이다.
도 3a 및 도 3b를 참조하면, 일 실시 예에 따른 대화형 콘텐츠 제공 방법이 수행되는 전자 장치(300)의 GUI 화면들 301-306이 도시되어 있다. 상기 GUI 화면들 301-306은 전자 장치(300)의 네이티브 메시징 서비스 어플리케이션의 실행 화면일 수 있다. 전자 장치(300)는, 도 2에서 설명한 바와 같이, 상기 네이티브 메시징 서비스 어플리케이션을 이용하여, RCS 네트워크 및 플랫폼 서버를 통해 챗봇과 메시지를 송수신할 수 있다. 도 3a 및 도 3b의 설명에 있어서 각 챗봇들은 플랫폼 서버에 이미 등록되어 있고, 각각의 챗봇은 NLP 모듈을 포함할 수 있다.
도 3a를 참조하면, 전자 장치는, 네이티브 메시징 서비스 어플리케이션을 실행하고, GUI 화면 301을 터치스크린 디스플레이에 출력할 수 있다. 예를 들면, 상기 GUI 화면 301에는 검색 필드(search field)(311) 및 챗룸을 나타내는 UI 객체들(312)이 포함될 수 있다. 사용자는, 예를 들어, 상기 검색 필드(311)에 키워드(예: 대화 상대 이름, 챗룸 이름, 챗봇 이름, 또는 특정 키워드 등)를 입력함으로써 상기 키워드를 포함한 챗룸 또는 키워드가 지칭하는 사용자(혹은 챗봇)을 검색할 수 있다. 또 다른 예를 들어, 사용자는 챗룸을 나타내는 UI 객체들(312) 중 어느 하나를 선택하면, 전자 장치(300)는 상기 선택된 UI 객체에 대응하는 챗룸 화면을 표시할 수도 있다.
일 실시 예에 따르면, 사용자는 상기 GUI 화면 301 중 임의의 위치에서 터치 스와이프(31)할 수 있다. 상기 터치 스와이프(31)에 응답하여 전자 장치(300)는 GUI 화면 302를 터치스크린 디스플레이에 출력할 수 있다.
일 실시 예에 따르면, GUI 화면 302에는 검색 필드(321) 및 사용자가 구독하고 있는 챗봇을 나타낸 UI 객체들(322)이 포함될 수 있다. 일 예를 들면, 사용자는 상기 검색 필드(321)에 자신이 제공받기 원하는 서비스와 관련된 키워드를 입력할 수 있다. 상기 키워드는, 예컨대, "챗봇 스토어"를 운용하는 플랫폼 서버로 전달되고, 상기 플랫폼 서버는 상기 키워드에 기반하여, 적합한 챗봇(들)의 리스트를 사용자에게 제공할 수도 있다. 챗봇을 나타낸 UI 객체들(322)은 사용자가 기존에 구독하고 있는 챗봇들을 나타낼 수 있다. 일 예를 들어 UI 객체들(322)을 참조하면 사용자가 기존에 구독하고 있는 챗봇은 "고객 서비스 챗봇(CS Bot)", "음식점 챗봇(Restaurant)", 및 "가전제품 챗봇(Appliance Bot)"을 포함할 수 있다.
일 실시 예에 따르면, 사용자는 "가전제품 챗봇(Appliance Bot)"이 제공하는 서비스를 제공받기 위하여 "가전제품 챗봇(Appliance Bot)"의 UI 객체를 선택(터치)(32)할 수 있다. 상기 선택(32)에 응답하여 전자 장치(300)는 GUI 화면 303을 터치스크린 디스플레이에 출력할 수 있다.
일 실시 예에 따르면, GUI 화면 303은 사용자가 선택한 "가전제품 챗봇(Appliance Bot)"의 정보(331) 및 상기 "가전제품 챗봇(Appliance Bot)"과 챗을 시작하기 위한 버튼(332)을 포함할 수 있다. 예를 들어, "가전제품 챗봇(Appliance Bot)"의 정보(331)는, 상기 "가전제품 챗봇(Appliance Bot)"과 연관된 이미지, 상기 "가전제품 챗봇(Appliance Bot)"에 할당된 전화번호(예: 8215553366), 상기 전화번호로 통화를 개시하도록 설정된 소프트 버튼, 및 상기 "가전제품 챗봇(Appliance Bot)"이 운영하는 웹 사이트에 링크된 소프트 버튼을 포함할 수 있다.
일 실시 예에 따르면, 사용자는 "가전제품 챗봇(Appliance Bot)"과 챗을 시작하기 위하여 (챗 스레드를 개시하기 위하여) 버튼(332)을 선택(터치)(33)할 수 있다. 상기 선택(33)에 응답하여 전자 장치(300)는 도 3b에 도시된 GUI 화면 304를 터치스크린 디스플레이에 출력할 수 있다.
도 3b의 GUI 화면 304를 참조하면, "가전제품 챗봇(Appliance Bot)"과 메시지를 송수신할 수 있는 챗룸이 도시되어 있다. 전자 장치(300)의 사용자와의 챗이 개시되면, "가전제품 챗봇(Appliance Bot)"은 플랫폼 서버(예: 도 1a의 플랫폼 서버(102))) 및 RCS 네트워크(예: 도 1a의 RCS 네트워크(103))를 통해 초기 응답 메시지(웰컴 메시지)(341)를 전자 장치(300)에 전송할 수 있다. 예를 들어, 전자 장치(300)에 수신되는 초기 응답 메시지(341)는 SIP 메시지일 수 있다. 상기 전자 장치(300)은 수신된 초기 응답 메시지(341)를 챗룸에 표시할 수 있다.
예를 들어, 상기 초기 응답 메시지(341)는 자신이 제공하는 서비스에 대한 설명 및 미리 정의된 UI(예: 버튼)(341-1, 342-2)에 대한 정보를 포함할 수 있다. 상기 미리 정의된 UI(341-1, 342-2)는 상기 서비스에 대한 설명과 함께 챗룸에 표시될 수 있다. 예를 들어, 버튼 341-1은 제품 등록을 시작하는 버튼일 수 있고, 버튼 342-2는 "가전제품 챗봇(Appliance Bot)"의 콘텐트 제공자(예: 제조사)가 운용하는 웹 페이지에 링크된 버튼일 수 있다.
일 실시 예에 따르면, 사용자는 제품 등록을 위하여 버튼(342-1)을 선택(터치)(34)할 수 있다. 상기 선택(34)에 응답하여 전자 장치(300)는 GUI 화면 305를 터치스크린 디스플레이에 출력할 수 있다. 다양한 실시 예에 따르면, 사용자는 챗룸 하단에 표시된 입력 필드(343)에 제품 등록을 의도한 자연어 또는 키워드를 입력할 수도 있다. 예를 들어, 사용자는 자연어 또는 키워드를 소프트 키보드를 이용하여 입력 필드(343)에 직접 입력할 수 있다. 또 다른 예를 들어, 사용자는 상기 자연어 또는 키워드를 포함한 발화를 전자 장치(300)에 제공할 수 있다. 이 경우, 전자 장치(300)는 STT(speech to text) 기술에 기반하여 음성 인식된 텍스트를 상기 입력 필드(343)에 표시할 수 있다.
GUI 화면 305를 참조하면, 전자 장치(300)는 버튼(342-1)의 선택을 나타내는 메시지(351), 상기 메시지(351)에 대한 응답 메시지(352), 및 버튼들(353-1, 353-2)을 기존 메시지 및 버튼들(341, 342-1, 342-2) 밑에 표시할 수 있다. 상기 응답 메시지(352)는 "가전제품 챗봇(Appliance Bot)"에서 생성된 메시지로서, 제품 등록을 위한 사진 촬영에 대한 안내 및 상기 버튼들(352, 353-1, 353-2)에 대한 정보를 포함할 수 있다. 예를 들어, 버튼 353-1은 사진 촬영을 개시하는 버튼일 수 있고, 버튼 353-2는 사진 촬영 대상(예: 라벨(label))이 부착된 위치를 안내하기 위한 버튼일 수 있다.
일 실시 예에 따르면, 사용자는 제품 등록을 위한 사진 촬영을 진행하기 위해 버튼(353-1)을 선택(터치)(35)할 수 있다. 상기 선택(35)에 응답하여 전자 장치(300)는 GUI 화면 306을 터치스크린 디스플레이에 출력할 수 있다. 다양한 실시 예에 따르면, 사용자는 챗룸 하단에 표시된 입력 필드(354)에 사진 촬영을 의도한 자연어 또는 키워드를 입력할 수도 있다.
GUI 화면 306을 참조하면, 전자 장치(300)는 버튼(353-1)의 선택을 나타내는 메시지(361), 및 상기 메시지(361)에 대한 응답 메시지(362)를 기존 메시지 및 버튼들(351, 352, 353-1, 353-2) 밑에 표시할 수 있다. 상기 응답 메시지(362)는 "가전제품 챗봇(Appliance Bot)"에서 생성된 메시지로서, 사진 촬영 대상(예: 라벨)을 안내하는 이미지 및 텍스트를 포함할 수 있다.
일 실시 예에 따르면, 사용자는 카메라를 구동하기 위해 챗룸 하단에 배치된 버튼(363)을 선택(터치)(36)할 수 있다. 상기 선택(36)이 이루어지면, 전자 장치(300)는 내장된 카메라를 구동할 수 있다. 사용자는 상기 카메라를 이용하여 제품의 라벨을 촬영할 수 있다. 다양한 실시 예에 따르면, 사용자는 챗룸 하단에 배치된 입력 필드(364)에 카메라 구동을 의도한 자연어 또는 키워드를 입력할 수도 있다.
또 다른 실시 예에 따르면, 사용자는 제품 라벨의 촬영을 대체하여, 챗룸 하단에 배치된 버튼(363)을 통해 연결된 별도 메뉴를 거쳐, 전자 장치(300)의 메모리에 저장된 제품 라벨의 사진을 첨부할 수도 있다.
도 4는 본 발명의 일 실시 예에 따른 시스템 내의 전자 장치의 블록도를 나타낸다.
도 4을 참조하여, 네트워크 환경(400)에서 전자 장치(401)는, 제1 네트워크(499-1)(예: RCS 네트워크) 및 제2 네트워크(499-2)(예: 데이터 네트워크)를 통하여 플랫폼 서버(402) 또는 CP 서버(챗봇)(404) 와 통신할 수 있다. 상기 전자 장치(401), 플랫폼 서버(402), 및 CP 서버(404)는 도 1a에 도시된 전자 장치(101), 플랫폼 서버(102), 및 CP 서버(104-1, 104-2)에 각각 대응할 수 있다.
일 실시 예에 따르면, 전자 장치(401)는 버스(410), 프로세서(420), 메모리(430), 입력 장치(450)(예: 마이크 또는 마우스), 표시 장치(460), 오디오 모듈(470), 센서 모듈(476), 인터페이스(477), 햅틱 모듈(479), 카메라 모듈(480), 전력 관리 모듈(488), 및 배터리(489), 통신 모듈(490), 및 가입자 식별 모듈(496)을 포함할 수 있다. 어떤 실시 예에서는, 전자 장치(401)는 구성요소들 중 적어도 하나(예: 표시 장치(460) 또는 카메라 모듈(480))를 생략하거나 다른 구성요소(예: 전자 장치(401)의 외관을 형성하는 하우징)를 추가적으로 구비할 수 있다.
버스(410)는, 구성요소들(420-490)을 서로 연결하고, 구성요소들 간의 신호(예: 제어 메시지 또는 데이터)를 전달하는 회로를 포함할 수 있다.
프로세서(420)는, 중앙처리장치(central processing unit, CPU), 어플리케이션 프로세서(application processor, AP), GPU(graphics processing unit), 카메라의 ISP(image signal processor), 또는 CP(communication processor) 중 하나 또는 그 이상을 포함할 수 있다. 일 실시 예에 따르면, 프로세서(420)는 SoC(system on chip) 또는 SiP(system in package)로 구현될 수 있다.
프로세서(420)는, 예를 들면, 운영 체제 또는 어플리케이션 프로그램(예: 네이티브 메시징 서비스 어플리케이션, 웹 브라우저 어플리케이션, 마켓 어플리케이션 등)을 구동하여 프로세서(420)에 연결된 전자 장치(401)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)을 제어할 수 있고, 각종 데이터 처리 및 연산을 수행할 수 있다. 프로세서(420)는 다른 구성요소들(예: 메모리(430), 통신 모듈(490) 등)과 전기적으로 연결되어, 상기 다른 구성요소들 중 적어도 하나로부터 수신된 명령 또는 데이터를 휘발성 메모리(432)에 로드 하여 처리하고, 결과 데이터를 비 휘발성 메모리(434)에 저장할 수 있다.
본 문서에 있어서, 전자 장치(401), 플랫폼 서버(402), CP 서버(104)가 특정 동작을 수행한다 함은, 각각의 장치들(401, 402, 404)에 포함된 프로세서에 의해 수행되는 것으로 이해될 수 있다.
메모리(430)는, 휘발성 메모리(432) 또는 비 휘발성 메모리(434)를 포함할 수 있다. 휘발성 메모리(432)는, 예를 들면, RAM(random access memory)(예: DRAM, SRAM, 또는 SDRAM)로 구성될 수 있다. 비 휘발성 메모리(434)는, 예를 들면, PROM(programmable read-only memory), OTPROM(one time PROM), EPROM(erasable PROM), EEPROM(electrically EPROM), mask ROM, flash ROM, 플래시 메모리, HDD(hard disk drive), 또는 SSD(solid state drive)로 구성될 수 있다. 또한, 비 휘발성 메모리(434)는, 전자 장치(401)와의 연결 형태에 따라, 그 안에 배치된 내장 메모리(436), 또는 필요 시에만 연결하여 사용 가능한 스탠드-얼론(stand-alone) 형태의 외장 메모리(438)로 구성될 수 있다. 외장 메모리(438)는 플래시 드라이브(flash drive), 예를 들면, CF(compact flash), SD(secure digital), Micro-SD, Mini-SD, xD(extreme digital), MMC(multi-media card), 또는 메모리 스틱을 포함할 수 있다. 외장 메모리(438)는 유선(예: 케이블 또는 USB(universal serial bus)) 또는 무선(예: Bluetooth)을 통하여 전자 장치(401)와 기능적으로 또는 물리적으로 연결될 수 있다.
메모리(430)는, 예를 들면, 전자 장치(401)의 적어도 하나의 다른 소프트웨어 구성요소, 예를 들어, 프로그램(440)에 관계된 명령 또는 데이터(예: 전술한 제1 대응관계, 제2 대응관계)를 저장할 수 있다. 프로그램(440)은, 예를 들면, 커널(441), 라이브러리(443), 어플리케이션 프레임워크(445), 또는 어플리케이션 프로그램(interchangeably "어플리케이션")(447)을 포함할 수 있다.
입력 장치(450)는, 마이크, 마우스, 또는 키보드를 포함할 수 있다. 일 실시 예에 따르면, 키보드는 물리적인 키보드로 연결되거나, 표시 장치(460)를 통해 가상 키보드로 표시될 수 있다.
표시 장치(460)는, 전자 장치(401)의 외관을 이루는 하우징의 적어도 일면(예: 전면, 측면 등)을 통해 노출될 수 있다. 상기 표시 장치(460)는, 디스플레이, 홀로그램 장치, 또는 프로젝터 및 해당 장치를 제어하기 위한 제어 회로를 포함할 수 있다. 디스플레이는, 예를 들면, 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이, 유기 발광 다이오드(OLED) 디스플레이, 마이크로 전자기계 시스템(MEMS) 디스플레이, 또는 전자 종이(electronic paper) 디스플레이를 포함할 수 있다. 디스플레이는, 일 실시 예에 따르면, 유연하게, 투명하게, 또는 착용할 수 있게 구현될 수 있다. 디스플레이는 사용자의 터치, 제스처, 근접, 또는 호버링(hovering) 입력을 감지할 수 터치 회로(touch circuitry) 또는 터치에 대한 압력의 세기를 측정할 수 있는 압력 센서(interchangeably "force sensor")를 포함할 수 있다. 상기 터치 회로 또는 압력 센서는 디스플레이와 일체형으로 구현되거나, 또는 디스플레이와는 별도의 하나 이상의 센서들로 구현될 수 있다. 홀로그램 장치는 빛의 간섭을 이용하여 입체 영상을 허공에 보여줄 수 있다. 프로젝터는 스크린에 빛을 투사하여 영상을 표시할 수 있다. 스크린은, 예를 들면, 전자 장치(401)의 내부 또는 외부에 위치할 수 있다.
오디오 모듈(470)은, 예를 들면, 소리와 전기 신호를 쌍방향으로 변환시킬 수 있다. 일 실시 예에 따르면, 오디오 모듈(470)은, 입력 장치(450)(예: 마이크)를 통해 소리를 획득하거나, 또는 전자 장치(401)에 포함된 출력 장치(미 도시)(예: 스피커 또는 리시버), 또는 전자 장치(401)와 연결된 외부 전자 장치(예: 무선 스피커 또는 무선 헤드폰) 또는 전자 장치(406)(예: 유선 스피커 또는 유선 헤드폰))를 통해 소리를 출력할 수 있다.
센서 모듈(476)은, 예를 들면, 전자 장치(401)의 내부의 작동 상태(예: 전력 또는 온도), 또는 외부의 환경 상태(예: 고도, 습도, 또는 밝기)를 계측 또는 감지하여, 그 계측 또는 감지된 상태 정보에 대응하는 전기 신호 또는 데이터 값을 생성할 수 있다. 센서 모듈(476)은, 예를 들면, 제스처 센서, 자이로 센서, 기압 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러(color) 센서(예: RGB(red, green, blue) 센서), IR(infrared) 센서, 생체 센서(예: 홍채 센서, 지문 센서, 또는 HRM(heartbeat rate monitoring) 센서, 후각(electronic nose) 센서, EMG(electromyography) 센서, EEG(Electroencephalogram) 센서, ECG(Electrocardiogram) 센서), 온도 센서, 습도 센서, 조도 센서, 또는 UV(ultra violet) 센서를 포함할 수 있다. 센서 모듈(476)은 그 안에 속한 적어도 하나 이상의 센서들을 제어하기 위한 제어 회로를 더 포함할 수 있다. 어떤 실시 예에서는, 전자 장치(401)는 프로세서(420) 또는 프로세서(420)와는 별도의 프로세서(예: 센서 허브)를 이용하여, 센서 모듈(476)을 제어할 수 있다. 별도의 프로세서(예: 센서 허브)를 이용하는 경우에, 전자 장치(401)는 프로세서(420)가 슬립(sleep) 상태에 있는 동안, 프로세서(420)를 깨우지 않고 별도의 프로세서의 작동에 의하여 센서 모듈(476)의 동작 또는 상태의 적어도 일부를 제어할 수 있다.
인터페이스(477)는, 일 실시 예에 따르면, HDMI(high definition multimedia interface), USB, 광 인터페이스(optical interface), RS-232(recommended standard 232), D-sub(D-subminiature), MHL(mobile high-definition link) 인터페이스, SD카드/MMC(multi-media card) 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다. 연결 단자(478)는 전자 장치(401)와 전자 장치(406)를 물리적으로 연결시킬 수 있다. 일 실시 예에 따르면, 연결 단자(478)는, 예를 들면, USB 커넥터, SD 카드/MMC 커넥터, 또는 오디오 커넥터(예: 헤드폰 커넥터)를 포함할 수 있다.
햅틱 모듈(479)은 전기적 신호를 기계적인 자극(예: 진동 또는 움직임) 또는 전기적인 자극으로 변환할 수 있다. 예를 들면, 햅틱 모듈(479)은 사용자에게 촉각 또는 운동 감각과 관련된 자극을 제공할 수 있다. 햅틱 모듈(479)은 예를 들면, 모터, 압전 소자, 또는 전기 자극 장치를 포함할 수 있다.
카메라 모듈(480)은, 예를 들면, 정지 영상 및 동영상을 촬영할 수 있다. 카메라 모듈(480)는, 일 실시 예에 따르면, 하나 이상의 렌즈(예: 광각 렌즈 및 망원 렌즈, 또는 전면 렌즈 및 후면 렌즈), 이미지 센서, 이미지 시그널 프로세서, 또는 플래시(예: 발광 다이오드 또는 제논 램프(xenon lamp) 등)를 포함할 수 있다.
전력 관리 모듈(488)은 전자 장치(401)의 전력을 관리하기 위한 모듈로서, 예를 들면, PMIC(power management integrated circuit)의 적어도 일부로서 구성될 수 있다.
배터리(489)는, 예를 들면, 1차 전지, 2차 전지, 또는 연료 전지를 포함하여 외부 전원에 의해 재충전되어, 상기 전자 장치(401)의 적어도 하나의 구성 요소에 전력을 공급할 수 있다.
통신 모듈(490)은, 예를 들면, 제1 네트워크(499-1) 및 제2 네트워크(499-1)를 통한 통신 채널 수립을 지원하고, 상기 수립된 통신 채널을 이용한 통신(예: 메시지/데이터 송수신)을 수행할 수 있다. 일 실시 예에 따르면, 통신 모듈(490)은 제1 통신 모듈(491) 및 제2 통신 모듈(492)을 포함할 수 있다.
일 실시 예에 따르면, 제1 통신 모듈(491)은 제1 프로토콜을 준수하는 제1 네트워크(499-1)(예: 텔레폰(telephone) 네트워크)를 통해 통신할 수 있다. 상기 제1 프로토콜은 RCS를 포함할 수 있다. 상기 RCS를 준수하는 제1 네트워크(499-1)는 RCS 네트워크로 참조된다. 상기 RCS 네트워크에 접속한 장치들(401, 402, 404)의 식별자는 MSISDN 혹은 IMSI로 표현될 수 있다.
일 실시 예에 따르면, 상기 제1 통신 모듈(491)은, 셀룰러 통신을 지원할 수 있다. 상기 제1 통신 모듈(491)은, 예를 들면, 가입자 식별 모듈(496)을 이용하여 통신 네트워크 내에서 전자 장치(401)의 구별 및 인증을 수행할 수 있다. 일 실시 예에 따르면, 제1 통신 모듈(491)은 프로세서(420)(예: AP)와 별개인 CP를 포함할 수 있다. 이런 경우, CP는, 예를 들면, 프로세서(420)가 인액티브(예: 슬립) 상태에 있는 동안 프로세서(420)를 대신하여, 또는 프로세서(420)가 액티브 상태에 있는 동안 프로세서(420)과 함께, 전자 장치(401)의 구성요소들(410-496) 중 적어도 하나의 구성 요소와 관련된 기능들의 적어도 일부 기능을 수행할 수 있다.
일 실시 예에 따르면, 제2 통신 모듈(491)은 제2 프로토콜을 준수하는 제2 네트워크(499-2)를 통해 통신할 수 있다. 상기 제1 프로토콜은 인터넷 프로토콜 등을 포함할 수 있다. 상기 제2 프로토콜을 준수하는 제2 네트워크(499-2)는 예컨대, 데이터 네트워크, 인터넷, IP 네트워크 등을 포함할 수 있다. 제2 네트워크(499-2)에 접속한 장치들(401, 402, 404)의 식별자는 URI로 표현될 수 있다.
다양한 실시 예들에 따르면, 전자 장치(401)에서 실행되는 동작들의 전부 또는 일부는 다른 하나 또는 복수의 전자 장치에서 실행될 수 있다. 일 실시 예에 따르면, 전자 장치(401)가 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 전자 장치(401)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 다른 장치에게 요청할 수 있다. 다른 전자 장치는 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 전자 장치(401)로 전달할 수 있다. 전자 장치(401)는 수신된 결과를 그대로 또는 추가적으로 처리하여 요청된 기능이나 서비스를 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
도 4에서는 전자 장치(401)의 하드웨어 구성을 중심으로 설명이 이루어졌다. 도 4에 도시된 플랫폼 서버(402) 및/또는 CP 서버(404)는 전자 장치(401)과 동일 또는 유사한 하드웨어 구성을 포함할 수 있다. 플랫폼 서버(402)는, 예를 들어, 전자 장치(401)와 마찬가지로, 프로세서, 메모리, 제1 통신 모듈, 및 제2 통신 모듈을 포함할 수 있다. 다양한 실시 예에 따르면, CP 서버(404)는, NLP 모듈(444)을 더 포함할 수 있다.
도 5는 일 실시 예에 따른 플랫폼 서버의 기능 블록도를 나타낸다.
도 5를 참조하면 일 실시 예에 따른 대화형 콘텐츠 제공 시스템(500)은 전자 장치들(501-1 내지 501-M), 플랫폼 서버(502), RCS 네트워크(503), 챗봇들(504-1 내지 504-N), 및 데이터 네트워크(505)를 포함할 수 있다. 일 실시 예에 따르면, 플랫폼 서버(502)는 RCS 네트워크(503)을 통해 복수의 전자 장치들(501-1 내지 501-M)과 연결될 수 있고, 데이터 네트워크(예: 인터넷)(505)를 통해 복수의 챗봇(504-1 내지 504-N)과 연결될 수 있다.
일 실시 예에 따른 플랫폼 서버(502)는, 봇 서비스(BotService) 모듈(510), 봇 레지스트리(BotRegistry)(520), 봇 데이터베이스(BotDB)(525), 사용자 레지스트리(UserRegistry)(530), 사용자 데이터베이스(UserDB)(535), 교환기(Exchange)(540), 봇 에이전트(BotAgent)(550-1, 550-2), 더미 봇 에이전트(Dummy BotAgent)(550-D), 봇 에이전트 매니저(BotAgentManager)(560), 봇 에이전트 데이터베이스(BotAgentDB)(565), 봇 서비스 큐(BotServiceQueue)(570), 타겟 큐(TargetQueue)(580T-1, 580T-2), 서비스 큐(ServiceQueue)(580S-1, 580S-2), 및 글로벌 큐(GlobalQueue)(590)를 포함할 수 있다. 상기 구성들(510-590)은 소프트웨어 모듈로서, 메모리 상에 로드된 후, 프로세서의 컴퓨팅 리소스에 의해 각 구성에 할당된 기능이 실행될 수 있다. 따라서, 상기 구성들(510-590)의 동작은 실질적으로 프로세서의 동작으로 이해될 수 있다. 또한, 상기 구성들(510-590) 중 큐(queue) 및 데이터베이스(DB)는 메모리의 일부 구성으로 이해될 수 있다.
봇 서비스(BotService)(510)은 대화형 콘텐츠 제공 시스템(500)의 상향 중재 모듈(uptown mediator)의 역할을 수행할 수 있다. 봇 서비스 모듈(510)은 챗봇들(504-1 내지 504-N)과 교환기(540)(하향 중재 모듈(downtown mediator) 간의 메시지를 라우팅할 수 있다.
일 실시 예에 따르면, 봇 서비스 모듈(510)은 상기 봇 서비스 모듈(510)에서 처리되는 메시지들의 수신처 식별자 및/또는 발신처 식별자를 상호 변환할 수 있다. 예를 들어, 봇 서비스 모듈(510)은 제1 전자 장치(501-1)에서 생성된 메시지(UserMessage)의 수신처를 MSISDN에서 URI로 변환하거나, 및/또는 상기 메시지(UserMessage)의 발신처를 MSISDN에서 고유 식별자로 변환할 수 있다. 또 다른 예를 들어, 봇 서비스 모듈(510)은 제1 챗봇(504-1)에서 생성된 메시지(BotMessage)의 발신처를 URI에서 MSISDN로 변환하거나, 및/또는 상기 메시지(BotMessage)의 수신처를 고유 식별자에서 MSISDN로 변환할 수 있다.
이를 위해 상기 봇 서비스 모듈(510)은 챗봇들(504-1 내지 504-N) 각각의 URI(예: callback-URL) 또는 상기 URI에 대응하는 MSISDN을 획득(retrieve)하기 위하여 봇 레지스트리(520)와 통신할 수 있다. 또한, 봇 서비스 모듈(510)은 사용자의 전자 장치들(501-1 내지 501-M) 각각의 고유 식별자(예: UserID, ChatID 등), 또는 상기 고유 식별자에 대응하는 MSISDN을 획득하기 위하여 사용자 레지스트리(530)와 통신할 수 있다.
다양한 실시 예에 따르면, 봇 서비스 모듈(510)은 새로이 퍼블리시된 챗봇으로부터의 생성 알림(create notification)을 듣고(listen), 상기 새로이 퍼블리시된 챗봇의 등재를 위하여 봇 레지스트리(520)와 통신할 수도 있다.
봇 레지스트리(BotRegistry)(520)는 봇 데이터베이스(525)에 저장된 봇 정보(bot information)(예: 챗봇의 URI, MSISDN 등)를 관리할 수 있다. 예컨대, 상기 봇 레지스트리(520)는 봇 서비스 모듈(510)의 제어 하에 상기 봇 정보를 읽거나 쓸(read/write) 수 있다.
사용자 레지스트리(UserRegistry)(530), 사용자 데이터베이스(535)의 저장된 사용자/구독자 정보(user/subscriber information)(예: 사용자의 UserID, ChatID, 사용자 전자 장치의 MSISDN 등)를 관리할 수 있다. 예컨대, 상기 사용자 레지스트리(530)는 봇 서비스 모듈(510)의 제어 하에 상기 사용자/구독자 정보를 읽거나 쓸 수 있다. 다양한 실시 예에 다르면, 사용자 레지스트리(530)는 봇 레지스트리(520)와 통합되어 관리될 수 있다.
교환기(Exchange)(540)는 대화형 콘텐츠 제공 시스템(500)의 하향 중재 모듈(downtown mediator)의 역할을 수행할 수 있다. 일 실시 예에 따르면, 교환기(540)는 봇 에이전트(550-1, 550-2)와 상향 중재 모듈인 봇 서비스(510) 간의 메시지들을 지정된 키(key)를 이용하여 라우팅할 수 있다. 상기 교환기(540)는 메시징 브로커 플랫폼(messaging broker platform)에 기반하여 설계될 수 있다. 일 실시 예에 따르면, 교환기(540)는 메시지 동작 흐름(messaging workflow)을 위한 퍼블리싱, 구독(subscription), 라우팅, 패턴 매칭 등을 지원할 수 있다. 다양한 실시 예에 따르면, 교환기(540)는 새로이 퍼블리시된 챗봇에 할당할 새로운 봇 에이전트를 생성하기 위해 봇 에이전트 매니저(560)로부터의 알림을 들을(listen) 수 있다.
봇 에이전트(BotAgent)(550-1, 550-2)는 챗봇의 인스턴스(instance)이자, 사용자의 컨택 포인트일 수 있다. 일 실시 예에 따르면, 각 챗봇은 1 대 1로 대응되는 봇 에이전트와 연계될 수 있다. 예컨대, 제1 챗봇(504-1)은 제1 봇 에이전트(550-1)와 통신하고, 제2 챗봇(504-2)은 제2 봇 에이전트(550-2)와 통신할 수 있다. 상기 봇 에이전트들(550-1, 550-2)는 각각에 대응하는 챗봇(504-1, 504-2)과 통신하여, 사용자의 전자 장치들(501-1 내지 501-M)에서 생성된 메시지들을 수집하거나, 사용자의 전자 장치들(501-1 내지 501-M)에게 메시지들을 전송 및 분배할 수 있다. 도 5를 비롯하여 본 문서에서, 챗봇 및 봇 에이전트는 1:1로 대응하는 것으로 기재되어 있으나, 이에 제한되지 아니한다. 다양한 실시 예에 따르면, 단일의 챗봇은 2 이상의 봇 에이전트와 연계될 수 있다. 예를 들어, 챗봇이 다수의 전자 장치와 다수의 메시지를 송수신하게 되어 통신 트래픽이 하나의 봇 에이전트에 집중되는 경우, 로드 밸런싱(load balancing)을 위해 상기 챗봇에 연계되는 추가적인 봇 에이전트가 할당될 수 있다.
일 실시 예에 따르면, 상기 봇 에이전트들(550-1, 550-2)는 전자 장치(501-1 내지 501-M)에서 생성된 메시지(UserMessage)의 포맷을 RCS 포맷(SIP 메시지 포맷)에서 데이터 네트워크에 적합한 포맷으로 변환할 수 있다. 또한, 반대로, 봇 에이전트들(550-1, 550-2)는 챗봇(504-1 내지 504-N)에서 생성된 메시지(BotMessage)의 포맷을 데이터 네트워크에 기반한 포맷에서 RCS 포맷(SIP 메시지 포맷)으로 변환할 수 있다.
또한, 일 실시 예에 따르면, 챗봇들(504-1, 504-2)은 MSISDN을 할당받은 후 RCS 네트워크(503)를 통해 사용자에게 서비스를 제공할 수 있다. 상기 챗봇들(504-1, 504-2)에 대응하는 각각의 봇 에이전트(550-1, 550-2)는, 상기 챗봇들(504-1, 504-2)의 MSISDN을 관리하거나, RCS 네트워크(503)에 등록하거나, 복수의 사용자들과 인터페이싱하는 역할을 수행할 수 있다.
더미 봇 에이전트(Dummy BotAgent)(550-D)는 어떠한 챗봇에도 할당되지 않은 여분의 봇 에이전트일 수 있다. 상기 더미 봇 에이전트(550-D)는, 예컨대, 봇 에이전트 매니저(560)에 의하여 새로이 퍼블리시된 챗봇에 할당될 수 있다.
봇 에이전트 매니저(BotAgentManager)(560)는 봇 에이전트 데이터베이스(565)에 등록된 모든 봇 에이전트(550-1, 550-2)의 상태를 관리할 수 있다. 예를 들어, 봇 에이전트 매니저(560)는 제2 봇 에이전트(550-2)가 생존 신호(signal of alive)를 송신해오지 않으면 상기 제2 봇 에이전트(550-2)를 재배치(disposition)할 수 있다. 또 다른 예를 들어, 봇 에이전트 매니저(560)는 특정 봇 에이전트에 과부하가 걸리는 경우 추가적인 봇 에이전트를 할당할 수도 있다. 또 다른 예를 들어, 봇 에이전트 매니저(560)는 새로이 퍼블리시된 챗봇이 등록된 경우, 더미 봇 에이전트(550-D)를 상기 새로이 퍼블리시된 챗봇에 할당할 수도 있다.
봇 서비스 큐(BotServiceQueue)(570)는 교환기(504)와 봇 서비스 모듈(510)이 통신하기 위한 공유 메모리(shared memory)일 수 있다. 상기 봇 서비스 큐(570)는 봇 서비스 모듈(510)에 의해 처리될 수 있다. 봇 서비스 모듈(510)은 메시지들(UserMessage 및 BotMessage)을 송수신 하기 위해 2개 채널을 사용할 수 있다. 이중에서, 봇 메시지 큐(570)는 사용자의 전자 장치에서 생성된 메시지(UserMessage)의 수신 채널을 구성할 수 있다.
타겟 큐(TargetQueue)(580T-1, 580T-2) 및 서비스 큐(ServiceQueue)(580S-1, 580S-2)는, 챗봇들(504-1 내지 504-N)에서 생성된 메시지(BotMessage)가 봇 에이전트(550-1, 550-2)에 전달되기 전에 저장되는 공용 메모리일 수 있다. 상기 타겟 큐(580T-1, 580T-2) 및 서비스 큐(580S-1, 580S-2)는, 챗봇들(504-1 내지 504-N)에서 생성된 메시지(BotMessage)의 발신 채널을 구성할 수 있다.
상기 타겟 큐(580T-1, 580T-2) 및 서비스 큐(580S-1, 580S-2)는, 각각에 대응하는 봇 에이전트(550-1, 550-2)에 의해 처리될 수 있다. 예컨대, 상기 타겟 큐(580T-1) 및 서비스 큐(580S-1)는, 제1 봇 에이전트(550-1)에 의해 처리될 수 있다.
글로벌 큐(GlobalQueue)(590)는 더미 봇 에이전트(550-D)에 의해 처리될 수 있다. 더미 봇 에이전트(550-D)에 새로이 퍼블리시된 챗봇이 할당된 경우, 해당 봇 에이전트는 타겟 큐 또는 서비스 큐를 처리하기 시작할 수 있다.
일 실시 예에 따르면, 제1 전자 장치(501-1)는 제1 챗봇(504-1)와의 챗 스레드 상에서 메시지(UserMessage)(SIP 메시지)를 생성하고, 상기 메시지를 RCS 네트워크(503)을 통해 제1 봇 에이전트(550-1)로 전송할 수 있다. 상기 제1 봇 에이전트(550-1)는 수신한 메시지의 포맷을 SIP 메시지에서 데이터 네트워크(505)에 적합한 포맷으로 변환하고, 이를 교환기(540)로 전송할 수 있다. 상기 교환기(540)는 수신된 메시지를 라우팅하여 봇 서비스 큐(570)에 저장할 수 있다. 봇 서비스 모듈(510)은 상기 봇 서비스 큐(570)에 저장된 메시지를 읽어 내어 봇 레지스트리(520)를 참조하여 상기 메시지의 수신처를 MSISDN에서 URI로 변환할 수 있다. 이어서, 봇 서비스 모듈(510)은 데이터 네트워크(505)를 통해 상기 URI가 지시하는 제1 챗봇(504-1)에 상기 메시지를 전달할 수 있다.
또 다른 실시 예에 따르면, 제1 챗봇(504-1)는 수신처가 제1 전자 장치(501-1)의 고유 식별자로 설정된 응답 메시지를 생성하고, 상기 응답 메시지를 데이터 네트워크(505)을 통해 봇 서비스 모듈(510)로 전송할 수 있다. 상기 봇 서비스 모듈(510)은 사용자 레지스트리(530)를 참조하여 상기 응답 메시지의 수신처를 제1 전자 장치(501-1)의 MSISDN로 변환하고, 이를 교환기(540)로 전송할 수 있다. 상기 교환기(540)는 상기 수신된 응답 메시지를 라우팅하여, 제1 봇 에이전트(550-1)가 처리하고 있는 제1 타겟 큐(580T-1)에 상기 응답 메시지를 저장할 수 있다. 제1 봇 에이전트(550-1)는 상기 제1 타겟 큐(580T-1)에 저장된 응답 메시지를 읽어 내어 메시지 포맷을 SIP 메시지 포맷으로 변환할 수 있다. 이어서, 제1 봇 에이전트(550-1)는 RCS 네트워크(503)를 통해 상기 MSISDN가 지시하는 제1 전자 장치(501-1)에 상기 응답 메시지를 전달할 수 있다.
다양한 실시 예에 따르면, 상기 응답 메시지는 초기 응답 메시지(웰컴 메시지) 이거나, 또는 제1 챗봇(504-1)이 제공하는 서비스를 구독하는 모든 전자 장치에 전송되는 방송(broadcast) 메시지일 수 있다. 다양한 실시 예에 따르면, 기존에 메시지를 주고 받은 적이 있는 전자 장치(501-1 내지 501-M)로 전송되는 메시지라고 하더라도 다양한 이유로 봇 에이전트와 전자 장치간의 메시지 전달 채널이 끊긴 경우 상기 응답 메시지는 발송될 수 있다. 이러한 경우, 상기 교환기(540)는 해당 메시지를 라우팅하여, 제1 봇 에이전트(550-1)가 처리하고 있는 제1 서비스 큐(580S-1)에 해당 메시지를 저장할 수 있다. 상기 제1 봇 에이전트(550-1)는 상기 제1 서비스 큐(580S-1)에 저장된 메시지를 읽어 내어, 챗 스레드가 개시되는 전자 장치(초기 응답 메시지의 경우), 또는 제1 챗봇(504-1)이 제공하는 서비스를 구독하는 모든 전자 장치(방송 메시지의 경우)로 전송할 수 있다.
상기 전술한 플랫폼 서버(502)의 각 구성들(510-590)의 동작은 일 예시로서, 전술한 예에 제한되지 않는다. 이하, 도 6a 내지 도 6e에서는 봇 서비스 모듈(510), 봇 레지스트리(520), 교환기(540), (제1) 봇 에이전트(550-1), 및 봇 에이전트 매니저(560)의 세부 구성들을 설명하기로 한다.
도 6a은 일 실시 예에 따른 봇 서비스 모듈을 나타낸다.
도 6a를 참조하면, 봇 서비스 모듈(510)은, 사건 기반 모델(event based model)에 기반하여 설계될 수 있다. 상기 봇 서비스 모듈(510)은 이벤트 버스(event-bus)(511), 라우터(router)(512), 봇 메시지 처리기(BotMessageHandler)(513), 사용자 메시지 처리기(BotMessageHandler)(514), 봇 주소 탐색 모듈(BotAddressDiscovery)(515), 및 메시지 트랜슬레이터(MessageTranslator)(516)를 포함할 수 있다.
이벤트 버스(event bus)(511)는 장래에 새로운 컴포넌트를 손쉽게 추가할 수 있는 환경을 제공할 수 있다.
라우터(router)(512)는, 3개의 소스 포트, 즉, 챗봇(504-1 내지 504-N)과 연결되는 "Bot-port", 봇 레지스트리(520)와 연결되는 "BotRegistry-port" 및 사용자 레지스트리(530)와 연결되는 "UserRegistry-port"로부터 메시지를 수신하고, 특정 메시지 송신자(MessageSender)로 상기 메시지를 라우팅할 수 있다. 예컨대, 상기 라우터(512)는 "Bot-port"로부터 메시지의 유형(일반, 방송 등)을 나타내는 메시지를 수신할 수 있다. 상기 라우터(512)는 "BotRegistry-port" 및 "UserRegistry-port"로부터 봇 데이터베이스(525) 및 사용자 데이터베이스(535)의 관리(생성, 삭제 등)를 위한 제어 메시지를 수신할 수 있다. 이러한 메시지들은 각각 지정된 처리기(handler)에게 라우팅될 수 있다.
봇 메시지 처리기(BotMessageHandler)(513)는 응답(confirm, error 등)을 전송하거나 이벤트 버스에 푸시(push)하는 특정 메시지들을 처리할 수 있다. 일 실시 예에 따르면, 봇 메시지 처리기(513)는 사용자가 챗봇에게 전송하는 메시지(SEND message), 챗봇이 사용자에게 전송하는 응답 메시지(REPLY message), 챗봇이 복수의 사용자들에게 전송하는 방송 메시지(BROADCAST message) 등을 처리할 수 있다.
일 실시 예에 따르면, 봇 메시지 처리기(513)는 봇 레지스트리(520)가 봇 서비스(510)에게 새로운 봇이 퍼블리쉬되었다는 것을 알리는 등록 메시지(REGISTER message)를 처리할 수 있다. 또한, 봇 메시지 처리기(513)는 봇 레지스트리(520)가 봇 서비스(510)에게 특정 봇이 언퍼블리쉬(unpublish)되었다는 것을 알리는 등록취소 메시지(DEREGISTER message)를 처리할 수도 있다.
사용자 메시지 처리기(BotMessageHandler)(514)는 사용자로부터 챗봇으로 향한(targeted) 발송 유형(SEND type)을 가진 메시지를 이벤트 버스(Event Bus)로부터 흡수(consume)할 수 있다. 사용자 메시지 처리기(514)는 사용자가 챗봇으로 메시지를 송신하는 메시지(SEND message)를 처리할 수 있다.
사용자 메시지 처리기(514)는 응답을 소스(source)(즉, 사용자의 전자 장치)로 송신하고, 메시지를 챗봇으로 전달할 수 있다. 사용자 메시지 처리기(514)는 상기 메시지를 챗봇으로 전달하기 위해 봇 주소 탐색 모듈(515)을 이용하여 특정 봇의 식별자를 문의(query)할 수 있다. 사용자 메시지 처리기(514)는 봇의 식별자를 탐색하기 위해, 이벤트 버스(511)로 검색 요청(searching request)을 푸시할 수 있다. 봇 주소 탐색 모듈(515)로부터 응답이 도달하면, 사용자 메시지 처리기(514)는 탐색된 식별자로 메시지를 전달할 수 있다.
봇 주소 탐색 모듈(BotAddressDiscovery)(515)은 이벤트 버스(511)로부터 특정 봇의 주소를 검색을 구하는 요청(query) 메시지를 흡수(consume)할 수 있다. 상기 봇 주소 탐색(BotAddressDiscovery) 모듈은 봇 레지스트리(520)에 문의하고, 그 결과를 이벤트 버스(511)에 푸시할 수 있다.
메시지 트랜슬레이터(MessageTranslator)(516)는 이벤트 버스(511)와 교환기(540) 간의 메시지들을 송신하거나 흡수(consume)할 수 있다. 상기 메시지 트랜슬레이터(516)는 봇 서비스 큐(570)에 저장된 사용자의 전자 장치에서 생성된 메시지(UserMessage)를 이벤트 버스(511)에 전달할 수 있다.
도 6b는 일 실시 예에 따른 봇 레지스트리를 나타낸다.
도 6b를 참조하면, 봇 레지스트리(520)는 봇 데이터베이스(525)에 저장된 봇 정보를 관리할 수 있다. 다양한 실시 예에 따르면, 봇 레지스트리(520)는 사용자 레지스트리(530)와 통합되어 관리될 수 있다. 이 경우 봇 레지스트리(520)는 챗봇과 상기 챗봇이 제공하는 서비스를 구독하는 사용자들의 정보(subscribers information)를 관리할 수 있다. 상기 봇 레지스트리(520)는 챗봇 스토어 및 개발자 포털의 백-엔드(back-end)의 역할을 수행할 수 있다.
일 실시 예에 따르면, 봇 레지스트리(520)는 레지스트리 서버(RegistryServer)(521), 봇 퍼블리시 처리기(BotPublishHandler)(522), 봇 구독 처리기(BotSubscribeHandler)(523), 및 봇 데이터 베이스 래퍼(BotDBWrapper)(524)를 포함할 수 있다.
레지스트리 서버(521)는 WebUI(예: 챗봇 스토어 웹 페이지의 UI, 챗봇 스토어 어플리케이션에 의한 UI), 봇 서비스(510), 또는 전자 장치(501-1 부터 501-M)로부터 수신되는 챗봇 또는 사용자에 관한 요구를 분석하고, 이후, 분석 결과를 지정된 처리기(예: 봇 퍼블리시 처리기(522) 및 봇 구독 처리기(523) 등)에 전달할 수 있다. 봇 퍼블리시 처리기(522)는 새로 등록된 챗봇에 대한 정보를 봇 데이터 베이스 래퍼(524)를 이용하여 가공 및 저장할 수 있다. 또한 봇 퍼블리시 처리기(522)는 봇 서비스(510)에게 새로운 챗봇이 퍼블리쉬 되었음을 알림으로써 상기 도 6a에서 설명된 봇 에이전트의 추가 절차를 진행하도록 할 수 있다. 봇 데이터베이스 래퍼(524)는 봇 데이터베이스(525)가 관련 처리 절차를 실행할 수 있도록 도울 수 있다.
도 6c는 일 실시 예에 따른 교환기를 나타낸다.
도 6c를 참조하면, 일 실시 예에 따른 교환기(540)은 메시지 전달을 위한 다양한 라우터를 포함할 수 있다. 일 실시 예에 따르면, 교환기(540)는 봇 서비스 라우터(BotServiceRouter)(541) 타겟 라우터(TargetRouter)(542) 서비스 라우터(ServiceRouter)(543) 및 글로벌 라우터(GlobalRouter)(544)를 포함할 수 있다.
봇 서비스 라우터(541)는 챗봇들에 각각에 타겟팅된 봇 에이전트(550-1, 550-2)로부터 메시지를 수신할 수 있다. 상기 메시지는 봇 서비스 큐(570)에 퍼블리시되고, 이는 봇 서비스(510)에 전달될 수 있다.
타겟 라우터(542)는 봇 에이전트(550-1, 550-2)와 연관된 챗봇으로부터 메시지를 수신할 수 있다. 타겟 라우터(542)는 상기 메시지를 수신하는 전자 장치의 식별자를 키(key)로 이용하여 상기 메시지를 라우팅할 수 있다. 상기 키는 각각의 메시지마다 유니크할 수 있다. 상기 타겟 라우터(542)는 챗봇이 메시지를 송신하기 원하는 타겟 큐(580T-1, 580T-2)를 선택하고, 상기 메시지를 라우팅할 수 있다.
서비스 라우터(543)는 타겟 라우터(542)의 대안(alternative)이다. 예컨대, 메시지가 초기 응답 메시지(웰컴 메시지) 또는 방송 메시지이거나, 또는 기존에 메시지를 주고 받은 적이 있는 전자 장치(501-1 내지 501-M)를 대상으로 하는 메시지라고 하더라도 어떤 이유로 봇 에이전트와 전자 장치간의 기존 메시지 전달 채널이 단절되면, 타겟 라우터(542)는 타겟 큐(580T-1, 580T-1)를 찾지 못할 수 있다. 이러한 경우 메시지는 서비스 라우터(543)에 전달될 수 있다. 상기 서비스 라우터(543)는 챗봇의 식별자(Bot-ID)를 이용하여 챗봇에 1 대 1 또는 1 대 N으로 매핑된 서비스 큐(580S-1, 580S-2)를 가질 수 있다. 이러한 메시지는 봇 에이전트(550-1, 550-2)들 중에서 라우팅 정책(routing policy)에 따라서, 특정 챗봇에 매핑된 하나의 봇 에이전트로 라우팅될 수 있다.
글로벌 라우터(544)는 새로운 봇을 퍼블리시하는 통로 역할을 수행할 수 있다. 새로운 챗봇이 퍼블리시되면, 상기 글로벌 라우터(544)는 새로운 챗봇을 위한 봇 에이전트에게 생성 메시지를 전달하고, 해당 봇 에이전트는 서비스 큐에 대한 연결 관계를 생성할 수 있다. 이로써, 새로운 봇이 서비스할 수 있는 준비가 이루어질 수 있다.
도 6d는 일 실시 예에 따른 봇 에이전트를 나타낸다.
도 6d를 참조하면, 일 실시 예에 따른 제1 봇 에이전트(550-1)는 사용자 에이전트(UserAgent)(551), 하트비트 생성기(HeartbeatGenerator)(552), 메시지 컨버터(MessageConvertor)(553), 메시지 퍼블리셔(MessagePublisher)(554), 및 메시지 구독기(MessageSubscriber)(555)를 포함할 수 있다. 도 5에 도시된 제2 봇 에이전트(550-2)는 제1 봇 에이전트(550-1)와 동일 또는 유사한 구성을 포함할 수 있다.
사용자 에이전트(551)는, 제1 챗봇(504-1)에 할당된 RCS 식별자(MSISDN)를 RCS 네트워크에 등록할 수 있다. 상기 제1 챗봇(504-1)에 할당된 사용자 에이전트(551)는 RCS 네트워크(503)에서 사용자의 전자 장치들(501-1 내지 501-M)과 유사하게 하나의 장치(혹은 가입자)로 간주될 수 있다.
하트비트 생성기(552)는 봇 에이전트(550-1)가 동작 중에 있다는 것을 알리기 위한 생존 신호(signal of alive)를 봇 에이전트 매니저(560)에 주기적으로 송신할 수 있다. 이를 위해 하트비트 생성기(552)는 주기적으로 봇 에이전트 데이터베이스(565)에 봇 에이전트의 상태(BotAgent's status)를 기입할 수 있다.
메시지 컨버터(553)는 RCS 네트워크에 기반한 메시지(SIP 메시지)를 데이터 네트워크(505) 상에서 송수신될 수 있는 포맷으로 변환하거나, 그 역의 동작을 수행할 수 있다(vice-versa).
메시지 퍼블리셔(554)는 사용자의 전자 장치들(501-1 내지 501-M)에서 생성된 메시지를 교환기(540)로 송신할 수 있다.
메시지 구독기(555)는 제1 챗봇(504-1)에서 생성된 메시지를 제1 타겟 큐(580S-1) 또는 제1 서비스 큐(580S-1)로부터 읽어 내어 메시지 변환기(553)로 전달할 수 있다.
도 6e는 일 실시 예에 따른 봇 에이전트 매니저를 나타낸다.
도 6e를 참조하면, 일 실시 예에 따른 봇 에이전트 매니저(560)는 봇 에이전트 데이터베이스(565)와 통신하여, 상기 봇 에이전트 데이터베이스(565)에 등록된 모든 봇 에이전트(550-1, 550-2, 550-D)를 관리할 수 있다. 상기 봇 에이전트 매니저(560)는 봇 에이전트들(550-1, 550-2, 550-D)을 관리하기 위한 메시지를 교환기(540)로 전송할 수 있다.
일 실시 예에 따르면, 봇 에이전트 매니저(560)는 봇 에이전트 모니터(561)를 포함할 수 있다. 예를 들어, 봇 에이전트 모니터(561)는 봇 에이전트가 생존 신호(예: 하드비트 신호)를 송신하는지 여부에 따라서 상기 봇 에이전트의 동작 여부를 판단할 수 있다.
도 7은 일 실시 예에 따른 챗봇을 플랫폼 서버에 등록하는 방법을 나타낸다.
도 7을 참조하면, 일 실시 예에 따르면 챗봇 등록 방법은, 동작 701-710을 포함할 수 있다. 상기 동작 701-710은 도 2의 CP 서버 등록 동작 211-212에 대응될 수 있다. 도 7의 설명에 있어서, 도 5 및 도 6a - 도 6e에서 사용된 참조번호를 이용하기로 한다.
동작 701에서 콘텐트 제공자(CP)는 플랫폼 서버(502)에서 운용하는 개발자 포탈(예: 챗봇 스토어 웹 페이지, 챗봇 스토어 어플리케이션)에 가입(join)할 수 있다.
동작 702에서 콘텐트 제공자(CP)는 RCS 네트워크 사업자(RCS network operator)로부터 챗봇(504)을 위한 MSISDN를 할당받을 수 있다.
동작 703에서 콘텐트 제공자(CP)는 챗봇(504)를 등록하도록 플랫폼 서버(502)에 요청할 수 있다.
동작 704에서 플랫폼 서버(502)의 봇 레지스트리(520)는 상기 챗봇(504)에 관한 정보를 봇 데이터베이스(525)에 저장할 수 있다.
동작 705에서 플랫폼 서버(502)의 봇 레지스트리(520)는 상기 챗봇(504)의 Callback-URL을 캐싱(caching)할 수 있다.
동작 706에서 플랫폼 서버(502)의 봇 서비스 모듈(510)은 챗봇(504)에 할당할 봇 에이전트를 생성하도록 하는 명령(CREATE Command)을 교환기(540)에 제공할 수 있다.
동작 707에서 플랫폼 서버(502)의 교환기(540)는 글로벌 큐(590)에 상기 생성 명령을 지정(assign) 할 수 있다.
동작 708에서 플랫폼 서버(502)의 교환기(540)는 챗봇(504)에 할당할 봇 에이전트(550)를 지정(assign) 할 수 있다.
동작 709에서 상기 지정된 봇 에이전트(550)는 챗봇(504)의 MSISDN을 RCS 네트워크에 등록할 수 있다.
동작 710에서 봇 에이전트(550)는 서비스 큐를 생성하고 이를 바인딩할 수 있다.
도 8은 일 실시 예에 따른 챗봇 등록 시 플랫폼 서버의 동작을 나타낸다.
도 8을 참조하면, 일 실시 예에 따르면 챗봇 등록 시 플랫폼 서버의 동작은, 동작 801-810을 포함할 수 있다. 상기 동작 801-810은 도 2의 CP 서버 등록 동작 212, 및 도 7의 706-710에 대응될 수 있다. 도 8의 설명에 있어서, 도 5 및 도 6a - 도 6e에서 사용된 참조번호를 이용하기로 한다.
동작 801에서, 봇 서비스 모듈(510)은 봇 서비스 큐(570)에 들을(listen) 수 있다.
동작 802에서, 봇 서비스 모듈(510)은 챗봇에 할당할 봇 에이전트를 생성하도록 하는 명령(CREATE Command)을 글로벌 큐(590)에 지정(assign) 할 수 있다.
동작 803에서, 글로벌 큐(590)는 더미 봇 에이전트(550)가 들을 수 있다.
동작 804에서 더미 봇 에이전트(550)는 상기 글로벌 큐(590)로부터 봇 에이전트를 생성하도록 하는 명령(CREATE Command)을 읽어 낼 수 있다. 이에 따라 챗봇에 대응되는 봇 에이전트(550)로 전환될 수 있다.
동작 805에서 봇 에이전트(550)는 봇 에이전트 데이터베이스(565)에 자신(550)의 상태(BotAgent's status)를 알릴 수 있다.
동작 806에서 봇 에이전트(550)는 챗봇의 MSISDN을 RCS 네트워크에 등록을 요청하고, 이에 응답하여 사용자 인증을 할 수 있다.
동작 807에서 봇 에이전트(550)는 챗봇의 MSISDN을 RCS 네트워크에 등록하고, 이에 응답하여 확인 메시지를 수신할 수 있다.
동작 808에서 봇 에이전트(550)는 챗봇을 RCS 네트워크에 퍼블리시하고, 이에 응답하여 확인 메시지를 수신할 수 있다.
동작 809에서 봇 에이전트(550)는 서비스 큐(580S)를 들을 수 있다.
이후, 동작 810에서 봇 에이전트 매니저(560)는 봇 에이전트 데이터베이스(565)를 참조하여 봇 에이전트(550)의 동작 상태를 모니터링할 수 있다.
다양한 실시 예에 따르면, 챗봇에 할당된 특정 봇 에이전트는 RCS 네트워크에 대한 등록을 실패하거나 다양한 이유로 작동이 중지될 수도 있다. 이 경우, 봇 에이전트 매니저(예: 도 5의 봇 에이전트 매니저(560))는 상기 실패한 봇 에이전트의 문제점을 탐지할 수 있다. 봇 에이전트 매니저의 제어 하에, 실패한 봇 에이전트는 자신의 리소스를 삭제할 수 있으며, 플랫폼 서버는 새로운 등록 절차(예: 도 8의 동작 801-810)를 재개할 수 있다.
또한, 다양한 실시 예에 따르면, 챗봇의 개발자는 더 이상 유효하지 않은 챗봇을 삭제할 수도 있다. 상기 개발자의 챗봇 삭제 요청이 플랫폼 서버(502)에 전달되면, 봇 서비스 모듈(510)은 상기 개발자의 챗봇에 대응하는 봇 에이전트를 삭제하도록 하는 명령(Delete Command)을 해당 봇 에이전트에 전송할 수 있다. 상기 삭제 명령을 수신한 봇 에이전트는 챗봇을 RCS 네트워크(503) 상에서 등록 해제(deregister)하고, 자신의 리소스를 봇 에이전트 데이터베이스(565)에서 삭제할 수 있다. 상기 봇 에이전트는 삭제가 완료되면 봇 레지스트리(520) 및/또는 봇 에이전트 매니저(650)에 봇 에이전트가 삭제되었다는 것을 통보할 수 있다.
도 9는 일 실시 예에 따른 챗봇을 구독하는 방법을 나타낸다.
도 9를 참조하면, 일 실시 예에 따르면 챗봇 구독 방법은, 동작 901-913을 포함할 수 있다. 상기 동작 901-913은 도 2의 CP 서버 구독 동작 221-228에 대응될 수 있다. 도 9의 동작 1101-1113은 예컨대, 도 7에서의 챗봇 등록 이후에 이루어질 수 있다. 도 9의 설명에 있어서, 도 5 및 도 6a - 도 6e에서 사용된 참조번호를 이용하기로 한다.
동작 901에서 전자 장치(501)의 사용자는 플랫폼 서버(101)와 챗봇(504)를 검색할 수 있다.
동작 902에서 플랫폼 서버(502)의 봇 레지스트리(520)는 전자 장치(501)를 인증할 수 있다.
동작 903에서 전자 장치(501)는 구독을 요청하는 메시지를 플랫폼 서버(502)에 전송할 수 있다.
동작 904에서 플랫폼 서버(502)의 봇 레지스트리(520)는 알림 메시지를 전송함으로써, 전자 장치(501)에 의한 구독을 알릴 수 있다.
동작 905에서 챗봇(504)는 웰컴 메시지(초기 응답 메시지)를 플랫폼 서버(802)에 전송할 수 잇다.
동작 906에서 플랫폼 서버(502)의 봇 서비스 모듈(510)는 전자 장치(501)와 챗봇(504) 사이의 챗 스레드를 나타내는 식별자(ChatID)를 생성할 수 있다.
동작 907에서 플랫폼 서버(502)의 봇 서비스 모듈(510)은 웰컴 메시지를 교환기(540)에 전달할 수 있다.
동작 908에서 플랫폼 서버(502)의 교환기(540)는 상기 챗봇(504)에 대응하는 타겟 큐(예: 도 5의 타켓 큐(580T))를 탐색할 수 있다.
동작 909에서 전자 장치(501) 및 챗봇(504)은 기존에 메시지를 송수신한 바 없으므로(바인딩된 타겟 큐(580T)가 없으므로), 플랫폼 서버(502)의 교환기(540)는 대안적으로(alternatively) 서비스 큐(580S)를 지정할 수 있다.
동작 910에서 플랫폼 서버(502)의 교환기(540)는 웰컴 메시지를 봇 에이전트(550)에 전달할 수 있다.
동작 911에서 플랫폼 서버(502)의 봇 에이전트(550)는 타겟 큐(580T)에 들을(listen) 수 있다.
동작 912에서 플랫폼 서버(502)의 봇 에이전트(550)는 웰컴 메시지를 RCS 네트워크를 통해 전자 장치(501)로 전송할 수 있다.
동작 913에서 전자 장치(501)는 상기 웰컴 메시지를 수신할 수 있다. 예를 들어, 전자 장치(501)는 디스플레이(예: 도 4의 표시장치(460))에 웰컴 메시지를 표시할 수 있다.
도 10은 일 실시 예에 따른 챗봇 구독 시 플랫폼 서버의 동작을 나타낸다.
도 10을 참조하면, 일 실시 예에 따르면 챗봇 구독 시 플랫폼 서버의 동작은, 동작 1001-1006을 포함할 수 있다. 상기 동작 1001-1006은 도 2의 동작 225-228, 및 도 7의 907-913에 대응될 수 있다. 도 10의 설명에 있어서, 도 5 및 도 6a - 도 6e에서 사용된 참조번호를 이용하기로 한다.
동작 1001에서 봇 서비스(510)는 챗봇(504)로부터 수신한 웰컴 메시지를 타겟 큐(580T)에 전송할 수 있다.
동작 1002에서 전자 장치(501) 및 챗봇(504)는 기존에 메시지를 송수신한 바 없으므로(바인딩된 타겟 큐(580T)가 없으므로), 플랫폼 서버(502)의 교환기(540)는, 상기 타겟 큐(580T)에 수신된 웰컴 메시지를 서비스 큐(580S)에 전달할 수 있다.
동작 1003에서 플랫폼 서버(502)의 봇 에이전트(550)는 서비스 큐(580S)로부터 웰컴 메시지를 읽어낼 수 있다.
동작 1004에서 플랫폼 서버(502)의 봇 에이전트(550)는 전자 장치(501)와의 MSRP(message session relay protocol) 세션이 이미 존재하는지 봇 에이전트 데이터베이스(565)를 참조함으로써 판단할 수 있다.
동작 1005에서 플랫폼 서버(502)의 봇 에이전트(550)는 전자 장치(501) 및 챗봇(504)은 기존에 메시지를 송수신한 바 없으므로, 타겟 큐(580T)에 새로이 들을(listen) 수 있다.
동작 1006에서 플랫폼 서버(502)의 봇 에이전트(550)는 MSRP 세션을 개시하고, 이후 웰컴 메시지를 전자 장치(501)에 전송할 수 있다("MSRP Send").
도 11은 일 실시 예에 따른 채팅 방법을 나타낸다.
도 11을 참조하면, 일 실시 예에 따르면 채팅 방법은, 동작 1101-1113을 포함할 수 있다. 상기 동작 1101-1113은 도 2의 채팅 동작 231-238에 대응될 수 있다. 도 11의 동작 1101-1113은 예컨대, 도 9에서 설명된 웰컴 메시지가 전송된 이후에 이루어질 수 있다. 도 11의 설명에 있어서, 도 5 및 도 6a - 도 6e에서 사용된 참조번호를 이용하기로 한다.
이하, 동작 1101-1106은 사용자의 전자 장치(501)에서 챗봇(504)으로 메시지를 전송하는 동작을 나타낸다.
동작 1101에서 전자 장치(501)는 SIP 메시지를 생성하여 RCS 네트워크를 통해 플랫폼 서버(502)의 봇 에이전트(550)로 전송할 수 있다.
동작 1102에서 플랫폼 서버(502)의 봇 에이전트(550)는 메시지의 포맷을 데이터 네트워크에 적합한 포맷으로 변환할 수 있다.
동작 1103에서 플랫폼 서버(502)의 봇 에이전트(550)는 교환기(540)에 메시지를 전달할 수 있다.
동작 1104에서 플랫폼 서버(502)의 교환기(540)는 메시지를 봇 서비스 큐(예: 도 5의 봇 서비스 큐(570))에 지정(assign)할 수 있다.
동작 1105에서 플랫폼 서버(502)의 봇 서비스 모듈(510)은 봇 서비스 큐(570)에 저장된 메시지를 읽어내고, 상기 메시지의 수신처인 챗봇(504)의 식별자(Callback URL)를 봇 레지스트리(520)에 문의(query)할 수 있다.
동작 1106에서 플랫폼 서버(502)의 봇 서비스 모듈(510)은 메시지를 챗봇(504)에 전송할 수 있다.
이하, 동작 1107-1113은 사용자의 챗봇(504)에서 전자 장치(501)로 메시지를 전송하는 동작을 나타낸다.
동작 1107에서 챗봇(504)은 메시지를 생성하여 데이터 네트워크를 통해 플랫폼 서버(502)의 봇 서비스 모듈(510)로 전송할 수 있다.
동작 1108에서 플랫폼 서버(502)의 봇 서비스 모듈(510)은 사용자 레지스트리(예: 도 5의 사용자 레지스트리(530))에 문의하여, 메시지를 수신할 사용자의 정보, 예컨대, 전자 장치의 MSISDN을 획득할 수 있다.
동작 1109에서 플랫폼 서버(502)의 봇 서비스 모듈(510)은 교환기(540)에 메시지를 전달할 수 있다.
동작 1110에서 플랫폼 서버(502)의 교환기(540)는 메시지를 타겟 큐(580T)에 지정(assign)할 수 있다.
동작 1111에서 플랫폼 서버(502)의 봇 에이전트(550)는 타겟 큐(580T)에 저장된 메시지를 읽어내고, 메시지의 포맷을 RCS 네트워크(503)에 적합한 포맷(SIP 메시지 포맷)으로 변환할 수 있다.
동작 1112에서 플랫폼 서버(502)의 봇 에이전트(550)는 RCS 네트워크(503)를 통해 메시지를 전자 장치(501)에 전송할 수 있다.
동작 1113에서 전자 장치(501)는 RCS 네트워크(503)를 통해 메시지를 수신할 수 있다.
도 12는 일 실시 예에 따른 챗봇과 채팅 시 플랫폼 서버의 동작을 나타낸다.
도 12를 참조하면, 일 실시 예에 따르면 챗봇과 채팅 시 플랫폼 서버의 동작은, 동작 1201-1211을 포함할 수 있다. 상기 동작 1201-1206은 도 2의 동작 231-238, 및 도 11의 1101-1113에 대응될 수 있다. 도 11의 동작 1201-1211은 예컨대, 도 10에서 설명된 웰컴 메시지가 전송된 이후, 전자 장치(501)와 플랫폼 서버(502)간의 MSRP 세션이 개시된 이후에 이루어질 수 있다. 도 12의 설명에 있어서, 도 5 및 도 6a - 도 6e에서 사용된 참조번호를 이용하기로 한다.
이하, 동작 1201-1206은 사용자의 전자 장치(501)에서 챗봇(504)으로 메시지를 전송하는 동작을 나타낸다.
동작 1201에서 전자 장치(501)는 기 생성된 MSRP 세션이 존재하므로, 추가적인 메시지 송수신(예: 도 11의 동작 1106 참조) 없이, 메시지를 플랫폼 서버(502)의 봇 에이전트(550)로 전송할 수 있다.
동작 1202에서 전자 장치(501)는 플랫폼 서버(502)의 봇 에이전트(550)로부터 수신 확인 메시지(MSRP 200 OK)를 수신할 수 있다.
동작 1203에서 플랫폼 서버(502)의 봇 에이전트(550)는 메시지의 포맷을 변환하고, 봇 서비스 큐(570)에 저장할 수 있다.
동작 1204에서 플랫폼 서버(502)의 봇 서비스 모듈(510)은 봇 서비스 큐(570)에 저장된 메시지를 읽어낼 수 있다.
동작 1205에서 플랫폼 서버(502)의 봇 서비스 모듈(510)은 챗봇(504)의 Callback URL로 메시지를 전송할 수 있다. 다양한 실시 예에 따르면, 동작 1205를 대신하여, 챗봇 (504)은 동작 1206에 도시된 바와 같이, Poll Request를 이용하여 메시지를 수신할 수도 있다.
이하, 동작 1207-1211은 사용자의 챗봇(504)에서 전자 장치(501)로 메시지를 전송하는 동작을 나타낸다.
동작 1207에서 챗봇(504)은 메시지를 생성하여, 이를 데이터 네트워크를 통해 플랫폼 서버(502)의 봇 서비스 모듈(510)로 전송할 수 있다.
동작 1208에서 플랫폼 서버(502)의 봇 서비스 모듈(510)은 타겟 큐(580T)에 상기 메시지를 저장할 수 있다.
동작 1209에서 플랫폼 서버(502)의 봇 에이전트(550)는 타겟 큐(580T)에 저장된 메시지를 읽어내고, 메시지의 포맷을 RCS 네트워크(503)에 적합한 포맷(SIP 메시지 포맷)으로 변환할 수 있다.
동작 1210에서 플랫폼 서버(502)의 봇 에이전트(550)는 기 생성된 MSRP 세션을 이용하여 메시지를 전자 장치(501)로 전송할 수 있다.
동작 1211에서 플랫폼 서버(502)의 봇 에이전트(550)는 전자 장치(501)로부터 수신 확인 메시지(MSRP 200 OK)를 수신할 수 있다.
도 12에 도시된 동작 1201-1211은, 도 10에서 설명된 전자 장치(501)와 플랫폼 서버(502)간의 MSRP 세션이 개시된 이후에 이루어지는 것으로 설명하였으나, 이에 제한되지 않는다. 예를 들어, 전자 장치(501)는 웰컴 메시지를 수신하기 전에, 일정한 서비스를 요청하는 메시지를 먼저 챗봇(504)에 전송할 수도 있다. 이러한 경우, 전자 장치(501)는 플랫폼 서버(502)와 MSRP 세션(예: 도 10의 동작 1006)을 개시하고, 이후, 예컨대, 동작 1201-1206과 같이, 메시지를 플랫폼 서버(502)를 통해 챗봇(504)에 전송할 수 있다.
본 발명의 다양한 실시 예에 의하면, 챗봇과 전자 장치의 메시지 송수신은 RCS 네트워크를 통해 송수신될 수 있다. 상기 RCS 네트워크는 OTT 메시징 서비스 어플리케이션에 비하여 더 높은 연결성(accessibility)을 제공할 수 있고, 또한, GSMA에서 국제 표준으로 채택되었으므로 캐리어들간의 호환성이 높다. 이러한 RCS 네트워크에 기반한 챗봇 서비스는, OTT 기반 챗봇 서비스가 IP 네트워크 상에서 제공되는 것과 달리, 사용자의 전화번호를 이용하므로 SMS/MMS를 제공하는 기존의 네트워크를 통해 제공될 수 있다. 따라서, 실질적으로 셀룰러 네트워크에 연결된 모든 가입자는 잠재적인 고객이 될 수 있다. 나아가, RCS 네트워크 사업자(operator)가 각자의 RCS 네트워크를 개방하는데(interoperable) 동의하기만 하면, 전세계적인 서비스를 제공할 수 있다.
일 실시 예에 따른 전자 장치(401)는, 하우징, 상기 하우징의 일면을 통해 노출되는 디스플레이(460), 제1 프로토콜을 준수하는(compliant with) 제1 네트워크(499-1), 또는 제2 프로토콜을 준수하는 제2 네트워크(499-2)를 통해(over) 통신하는 통신 모듈(490), 상기 디스플레이(460) 및 상기 통신 모듈(490)과 전기적으로 연결된 프로세서(420), 및 상기 프로세서(420)와 전기적으로 연결되고 지정된 어플리케이션(447)을 저장하는 메모리(430)를 포함할 수 있다. 상기 메모리(430)는, 실행시, 상기 프로세서(420)가 상기 지정된 어플리케이션(447)을 실행하고, 플랫폼 서버(402)와 상기 제2 네트워크(499-2)를 통해 상호작용함으로써 CP 서버(404)를 지정하고, 상기 지정된 CP 서버(404)에서 생성된 초기 응답 메시지를 상기 제1 네트워크(499-1)를 통해 수신하고, 상기 초기 응답 메시지의 발신처로부터 상기 제1 프로토콜에 기반한 상기 지정된 CP 서버의 제1 식별자를 확인하도록 하는 인스트럭션들을 저장할 수 있다.
일 실시 예에 따르면, 상기 메모리(430)는, 실행시, 상기 프로세서(420)가, 상기 제1 식별자를 수신처로 하는 상기 제1 프로토콜에 따라 포맷된 제1 메시지(a first message formatted under the first protocol and destined to the first identifier of the CP server)를 생성하고, 상기 제1 메시지를 상기 제1 네트워크(499-1)를 통해 상기 플랫폼 서버(402)로 전송하도록 하는 인스트럭션을 더 저장할 수 있다. 상기 플랫폼 서버(402)는, 상기 지정된 CP 서버(404)에 상기 제1 메시지를 전달할 수 있다.
일 실시 예에 따르면, 상기 플랫폼 서버(402)는, 상기 제2 프로토콜에 따라 포맷되도록 상기 제1 메시지를 변환하고(convert the first message to be formatted under the second protocol), 상기 변환된 제1 메시지의 수신처를 상기 제2 프로토콜에 기반한 상기 지정된 CP 서버(404)의 상기 제2 식별자로 변경하고, 상기 변환된 제1 메시지를 상기 제2 네트워크(499-2)를 통해 상기 제2 식별자가 나타내는 상기 지정된 CP 서버(404)로 전달할 수 있다.
일 실시 예에 따르면, 상기 메모리(430)는, 실행시, 상기 프로세서(420)가, 상기 제1 네트워크(499-1)를 통해 상기 플랫폼 서버(402)로부터 제2 메시지를 수신하도록 하는 인스트럭션을 더 저장할 수 있다. 상기 제2 메시지는 상기 CP 서버(404)에서 생성되되, 상기 제1 메시지의 콘텍스트와 연관된 콘텐트를 포함할 수 있다.
일 실시 예에 따르면, 상기 제1 메시지는 자연어(NL, natural language)를 포함할 수 있다.
일 실시 예에 따르면, 상기 메모리(430)는, 실행 시, 상기 프로세서(420)가, 상기 지정된 CP 서버(404)와 연관된 검색어(search query)를 적어도 포함하는 요청 메시지(request message)를 상기 통신 모듈(490)을 통해 상기 플랫폼 서버(402)로 전송하고, 상기 요청 메시지에 응답하여 상기 검색어와 연관된 CP 서버들의 목록을 수신하도록 하는 인스트럭션을 더 저장할 수 있다. 상기 목록에 포함된 CP 서버들 중에서 상기 지정된 CP 서버(404)가 선택될 수 있다.
일 실시 예에 따른 서버(402)는, 제1 프로토콜을 준수하는(compliant with) 제1 네트워크(499-1)를 통해(over) 전자 장치(401)와 통신하고, 제2 프로토콜을 준수하는 제2 네트워크(499-2)를 통해 콘텐트 제공자 서버(CP server, content provider server)(404)와 통신하는 통신 모듈(490), 상기 통신 모듈(490)과 전기적으로 연결된 프로세서(420), 및 상기 프로세서(420)와 전기적으로 연결되고, 상기 제1 프로토콜에 기반한 상기 CP 서버(404)의 제1 식별자 및 상기 제2 프로토콜에 기반한 상기 CP 서버(404)의 제2 식별자 간의 제1 대응관계(relationship)를 저장하는 메모리(430)를 포함할 수 있다. 상기 메모리(430)는, 실행시, 상기 프로세서(420)가 상기 제1 네트워크(499-1)를 통해 상기 전자 장치(401)로부터, 상기 CP 서버(404)의 상기 제1 식별자를 수신처로 하는 상기 제1 프로토콜에 따라 포맷된 제1 메시지를 수신하고, 상기 제2 프로토콜에 따라 포맷되도록 상기 제1 메시지를 변환하고, 상기 메모리(430)에 저장된 상기 제1 대응관계를 이용하여 상기 변환된 제1 메시지의 수신처를 상기 CP 서버의 상기 제2 식별자로 변경하고, 상기 제2 식별자가 나타내는 상기 CP 서버로 상기 변환된 제1 메시지를 상기 제2 네트워크(499-2)를 통해 전송하도록 하는 인스트럭션들을 저장할 수 있다.
일 실시 예에 따르면, 상기 제1 프로토콜은 RCS(rich communication suite)를 포함할 수 있다.
일 실시 예에 따르면, 상기 제1 식별자는 MSISDN(Mobile Station International Subscriber Directory Number)를 포함할 수 있다.
일 실시 예에 따르면, 상기 제2 프로토콜은 인터넷 프로토콜 또는 HTTPS를 포함할 수 있다.
일 실시 예에 따르면, 상기 제2 식별자는 URI(uniform resource identifier)을 포함할 수 있다.
일 실시 예에 따르면, 상기 통신 모듈(490)은 상기 제2 네트워크(499-2)를 통해 상기 전자 장치(401)와 더 통신할 수 있다. 상기 메모리(430)는, 실행시, 상기 프로세서(420)가, 상기 제2 네트워크(499-2)를 통한 상기 전자 장치(401)와의 상호작용에 기반하여 상기 CP 서버(404)가 지정되면(designated), 상기 제2 네트워크(499-2)를 통해 알림 메시지를 상기 CP 서버(404)에 전송하도록 하는 인스트럭션을 더 저장할 수 있다.
일 실시 예에 따르면, 상기 메모리(430)는, 실행시, 상기 프로세서(420)가, 상기 알림 메시지의 전송에 응답하여, 초기 응답 메시지(initial response message)를 상기 제2 네트워크(499-2)를 통해 상기 CP 서버(404)로부터 수신하고, 상기 제1 프로토콜에 따라 포맷되도록 상기 초기 응답 메시지를 변환하고(convert), 상기 초기 응답 메시지를 상기 제1 네트워크(499-1)를 통해 상기 전자 장치(401)로 전송하도록 하는 인스트럭션을 더 저장할 수 있다. 상기 전자 장치(401)로부터 수신되는 상기 제1 메시지는 상기 초기 응답 메시지가 전송된 이후에 수신될 수 있다.
일 실시 예에 따르면, 상기 전자 장치(401)는, 상기 수신된 초기 응답 메시지의 발신처로부터 상기 CP 서버(404)의 상기 제1 식별자를 확인할 수 있다.
일 실시 예에 따르면, 상기 초기 응답 메시지는, 상기 CP 서버(404)에서 제공하는 서비스를 설명하기 위한 메타 정보(meta-information)를 포함할 수 있다.
일 실시 예에 따르면, 상기 통신 모듈(490)은 상기 제2 네트워크(499-2)를 통해 상기 전자 장치(401)와 더 통신할 수 있다. 상기 메모리(430)는, 실행시, 상기 프로세서(420)가, 상기 제2 네트워크(499-2)를 통한 상기 전자 장치(401)와의 상호작용에 기반하여 상기 CP 서버(404)가 지정되면, 상기 제1 프로토콜에 기반한 상기 전자 장치(401)의 식별자를 확인하고(verify), 상기 전자 장치(401)에 고유의(unique) 식별자를 할당하고(allocate), 상기 제1 프로토콜에 기반한 상기 전자 장치(401)의 식별자 및 상기 할당된 고유의 식별자 간의 제2 대응관계를 상기 메모리(430)에 저장하고, 상기 고유의 식별자를 포함한 알림 메시지를 상기 제2 네트워크(499-2)를 통해 상기 CP 서버(404)에 전송하도록 하는 인스트럭션을 더 저장할 수 있다.
일 실시 예에 따르면, 상기 메모리(430)는, 실행시, 상기 프로세서(420)가, 상기 알림 메시지의 전송에 응답하여, 상기 CP 서버(404)로부터 상기 고유의 식별자를 수신처로 하는 초기 응답 메시지(initial response message)를 상기 제2 네트워크(499-2)를 통해 수신하고, 상기 제1 프로토콜에 따라 포맷되도록 상기 초기 응답 메시지를 변환하고, 상기 메모리(430)에 저장된 상기 제2 대응관계를 이용하여, 상기 초기 응답 메시지의 수신처를 상기 제1 프로토콜에 기반한 상기 전자 장치(401)의 식별자로 변경하고, 상기 초기 응답 메시지를 상기 제1 네트워크(499-1)를 통해 상기 전자 장치(401)로 전송하도록 하는 인스트럭션을 더 저장할 수 있다. 상기 전자 장치(401)로부터 수신되는 상기 제1 메시지는 상기 초기 응답 메시지가 전송된 이후에 수신될 수 있다.
일 실시 예에 따르면, 상기 전자 장치(401)는, 상기 수신된 초기 응답 메시지의 발신처를 상기 CP 서버(404)의 상기 제1 식별자로 설정할 수 있다.
일 실시 예에 따른 서버(402)는, 제1 프로토콜을 준수하는(compliant with) 제1 네트워크(499-1)를 통해(over) 전자 장치(401)와 통신하고, 제2 프로토콜을 준수하는 제2 네트워크(499-2)를 통해 콘텐트 제공자 서버(CP server, content provider server)(404)와 통신하는 통신 모듈(490), 상기 통신 모듈(490)과 전기적으로 연결된 프로세서(420), 및 상기 프로세서(420)와 전기적으로 연결되고, 상기 제1 프로토콜에 기반한 상기 전자 장치(401)의 식별자 및 상기 전자 장치(401)에 할당된 고유의 식별자 간의 제2 대응관계를 저장하는 메모리(430)를 포함할 수 있다. 상기 메모리(430)는, 실행시, 상기 프로세서(420)가 상기 제2 네트워크(499-2)를 통해 상기 CP 서버(404)로부터, 상기 전자 장치(401)에 할당된 고유의 식별자를 수신처로 하는 상기 제2 프로토콜에 따라 포맷된 제2 메시지를 수신하고, 상기 제1 프로토콜에 따라 포맷되도록 상기 제2 메시지를 변환하고(convert the first message to be formatted under the second protocol), 상기 메모리(430)에 저장된 상기 제2 대응관계를 이용하여 상기 변환된 제2 메시지의 수신처를 상기 제1 프로토콜에 기반한 상기 전자 장치(401)의 식별자로 변경하고, 상기 제1 프로토콜에 기반한 상기 전자 장치(401)의 식별자가 나타내는 상기 전자 장치(401)로 상기 변환된 제2 메시지를 상기 제1 네트워크(499-1)를 통해 전송하도록 하는 인스트럭션들을 저장할 수 있다.
일 실시 예에 따르면, 상기 CP 서버(404)는, 상기 CP 서버(404)가 제공하는 서비스와 연관된 NLP(natural language processing) 모듈(444)을 포함할 수 있다. 상기 제2 메시지는, 상기 NLP 모듈(444)에 의하여 생성된 자연어를 포함할 수 있다.
일 실시 예에 따르면, 상기 고유의 식별자는, 상기 전자 장치(401)를 지칭하거나 또는 상기 전자 장치(401)가 속한 메시지 교환 스레드(thread)를 지칭할 수 있다.
본 문서의 다양한 실시 예들 및 이에 사용된 용어들은 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 해당 실시 예의 다양한 변경, 균등물, 및/또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및/또는 B 중 적어도 하나", "A, B 또는 C" 또는 "A, B 및/또는 C 중 적어도 하나" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제1," "제2," "첫째," 또는 "둘째,"등의 표현들은 해당 구성요소들을, 순서 또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다. 어떤(예: 제1) 구성요소가 다른(예: 제2) 구성요소에 "(기능적으로 또는 통신적으로) 연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제 3 구성요소)를 통하여 연결될 수 있다.
본 문서에서, "~하도록 설정된(adapted to or configured to)"은 상황에 따라, 예를 들면, 하드웨어적 또는 소프트웨어적으로 "~에 적합한," "~하는 능력을 가지는," "~하도록 변경된," "~하도록 만들어진," "~를 할 수 있는," 또는 "~하도록 설계된"과 상호 호환적으로(interchangeably) 사용될 수 있다. 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 설정된 (또는 구성된) 프로세서"는 해당 동작들을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치(예: 메모리 430)에 저장된 하나 이상의 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(예: CPU 또는 AP)를 의미할 수 있다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어(firmware)로 구성된 유닛(unit)을 포함하며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. "모듈"은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수 있다. "모듈"은 기계적으로 또는 전자적으로 구현될 수 있으며, 예를 들면, 어떤 동작들을 수행하는, 알려졌거나 앞으로 개발될, ASIC(application-specific integrated circuit) 칩, FPGAs(field-programmable gate arrays), 또는 프로그램 가능 논리 장치를 포함할 수 있다.
다양한 실시 예들에 따른 장치(예: 모듈들 또는 그 기능들) 또는 방법(예: 동작들)의 적어도 일부는 프로그램 모듈의 형태로 컴퓨터로 판독 가능한 저장 매체(예: 메모리(430))에 저장된 명령어로 구현될 수 있다. 상기 명령어가 프로세서(예: 프로세서(420))에 의해 실행될 경우, 프로세서가 상기 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 판독 가능한 기록 매체는, 하드디스크, 플로피디스크, 마그네틱 매체(예: 자기테이프), 광기록 매체(예: CD-ROM, DVD, 자기-광 매체(예: 플롭티컬 디스크), 내장 메모리 등을 포함할 수 있다. 명령어는 컴파일러에 의해 만들어지는 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다.
다양한 실시 예들에 따른 구성 요소(예: 모듈 또는 프로그램 모듈) 각각은 단수 또는 복수의 개체로 구성될 수 있으며, 전술한 해당 서브 구성 요소들 중 일부 서브 구성 요소가 생략되거나, 또는 다른 서브 구성 요소를 더 포함할 수 있다. 대체적으로 또는 추가적으로, 일부 구성 요소들(예: 모듈 또는 프로그램 모듈)은 하나의 개체로 통합되어, 통합되기 이전의 각각의 해당 구성 요소에 의해 수행되는 기능을 동일 또는 유사하게 수행할 수 있다. 다양한 실시 예들에 따른 모듈, 프로그램 모듈 또는 다른 구성 요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱(heuristic)하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.

Claims (20)

  1. 전자 장치에 있어서,
    RCS(rich communication suite) 프로토콜을 처리하는 서버와 통신을 수행하는 통신 모듈;
    상기 통신 모듈과 전기적으로 연결된 프로세서; 및
    상기 프로세서와 전기적으로 연결되고, 명령어들(instructions)을 저장하는 메모리를 포함하고,
    상기 명령어들은, 상기 프로세서에 의해 실행 시, 상기 전자 장치가,
    상기 서버에게 챗봇과 관련된 제1 메시지를 전송하고,
    상기 서버가 상기 제1 메시지에 응답하여 송신하는 제2 메시지를 수신하도록 구성되고,
    상기 제1 메시지는 상기 서버에 등록된 적어도 하나의 챗봇들을 검색하기 위한 질의(query)를 포함하고,
    상기 제2 메시지는 상기 질의에 대응하여 검색된 적어도 하나의 챗봇들에 대한 목록을 포함하고,
    상기 목록은, 상기 적어도 하나의 챗봇들 각각의 식별자, 명칭, 및 상기 적어도 하나의 챗봇들 각각의 아이콘에 접근하기 위한 주소를 포함하는, 전자 장치.
  2. 청구항 1에 있어서,
    상기 명령어들은, 상기 프로세서에 의해 실행 시, 상기 전자 장치가,
    상기 서버에게 상기 적어도 하나의 챗봇들 중 제1 챗봇에 대한 구독을 요청하는 제3 메시지를 송신하고,
    상기 제3 메시지를 송신한 후 RCS 네트워크를 이용하여 상기 서버에게 상기 제1 챗봇에게 전달하기 위한 제4 메시지를 송신하도록 구성되는, 전자 장치.
  3. 청구항 2에 있어서,
    상기 제4 메시지는 SIP(session initiation protocol) 메시지 포맷에 기반하여 생성되는, 전자 장치.
  4. 청구항 3에 있어서,
    상기 제4 메시지는 상기 서버에서 HTTPS(hypertext transfer protocol over secure socket layer)에 기반한 메시지로 변환되고,상기 변환된 메시지가 상기 제1 챗봇에 입력되는, 전자 장치.
  5. 청구항 2에 있어서,
    상기 제4 메시지는 상기 제1 챗봇의 IMSI(international mobile station identity)를 목적지 주소로 가지는 , 전자 장치.
  6. 청구항 5에 있어서,
    상기 제1 챗봇의 IMSI는 상기 제2 메시지를 통해 획득되는, 전자 장치.
  7. 청구항 2에 있어서,
    상기 명령어들은, 상기 프로세서에 의해 실행 시, 상기 전자 장치가,
    상기 제4 메시지를 송신한 후 상기 RCS 네트워크를 이용하여 상기 서버로부터 상기 제1 챗봇이 전달한 제5 메시지를 수신하도록 구성되는, 전자 장치.
  8. 청구항 7에 있어서,
    상기 제5 메시지는 상기 제1 챗봇에서 HTTPS에 기반하여 생성되고,
    상기 제5 메시지는 상기 서버에서 SIP 메시지 포맷에 기반하여 변환된 후 상기 전자 장치로 송신되는, 전자 장치.
  9. 청구항 2에 있어서,
    상기 명령어들은, 상기 프로세서에 의해 실행 시, 상기 전자 장치가,
    상기 제3 메시지를 송신한 후 상기 RCS 네트워크를 이용하여 상기 서버로부터 상기 제1 챗봇이 전달한 초기 메시지를 수신하도록 구성되는, 전자 장치.
  10. 청구항 9에 있어서,
    상기 초기 메시지는 상기 챗봇의 서비스를 설명하기 위한 메타 정보를 포함하는, 전자 장치.
  11. 청구항 1에 있어서,
    상기 제1 메시지 및 상기 제2 메시지는 상기 전자 장치 상에서 구동 중인 어플리케이션을 통해 송수신되는, 전자 장치.
  12. 서버에 있어서,
    RCS(rich communication suite) 프로토콜에 기반하여 통신을 수행하는 통신 모듈;
    상기 통신 모듈과 전기적으로 연결된 프로세서; 및
    상기 프로세서와 전기적으로 연결되고, 명령어들(instructions)을 저장하는 메모리를 포함하고,
    상기 명령어들은, 상기 프로세서에 의해 실행 시, 상기 서버가
    전자 장치로부터 상기 서버에 등록된 적어도 하나의 챗봇들을 검색하기 위한 질의(query)를 포함하기 위한 제1 메시지를 수신하고,
    상기 제1 메시지에 응답하여, 상기 질의에 대응하는 적어도 하나의 챗봇들을 검색하고,
    상기 질의에 대응하여 검색된 적어도 하나의 챗봇들에 대한 목록을 포함하는 제2 메시지를 상기 전자 장치로 송신하도록 구성되고,
    상기 목록은, 상기 적어도 하나의 챗봇들 각각의 식별자, 명칭, 및 상기 적어도 하나의 챗봇들 각각의 아이콘에 접근하기 위한 주소를 포함하는, 서버.
  13. 청구항 12에 있어서,
    상기 명령어들은, 상기 프로세서에 의해 실행 시, 상기 서버가,
    상기 전자 장치로부터 상기 적어도 하나의 챗봇들 중 제1 챗봇에 대한 구독을 요청하는 제3 메시지를 수신하고,
    상기 제3 메시지를 수신한 후 상기 RCS 프로토콜에 기반한 RCS 네트워크를 이용하여 상기 전자 장치로부터 상기 제1 챗봇에게 전달하기 위한 제4 메시지를 수신하고,
    상기 제4 메시지를 HTTPS(hypertext transfer protocol over secure socket layer)에 기반한 메시지로 변환하고,
    상기 변환된 메시지를 상기 제1 챗봇에 송신하도록 구성되고,
    상기 전자 장치로부터 수신된 상기 제4 메시지는 SIP(session initiation protocol) 메시지 포맷에 기반하여 생성된, 서버.
  14. 청구항 13에 있어서,
    상기 전자 장치로부터 수신된 상기 제4 메시지는 상기 제1 챗봇의 IMSI(international mobile station identity)를 목적지 주소로 가지는, 서버.
  15. 청구항 13에 있어서,
    상기 명령어들은, 상기 프로세서에 의해 실행 시, 상기 서버가,
    상기 제4 메시지를 수신한 후 상기 RCS 네트워크를 이용하여 상기 전자 장치에게 상기 제1 챗봇이 전달한 제5 메시지를 송신하도록 구성되는, 서버.
  16. 청구항 15에 있어서,
    상기 제5 메시지는 상기 제1 챗봇에서 HTTPS에 기반하여 생성되고,
    상기 제5 메시지는 상기 서버에서 SIP 메시지 포맷에 기반하여 변환된 후 상기 전자 장치로 송신되는, 서버.
  17. 청구항 13에 있어서,
    상기 명령어들은, 상기 프로세서에 의해 실행 시, 상기 서버가,
    상기 제3 메시지를 수신한 후 상기 RCS 네트워크를 이용하여 상기 전자 장치에게 상기 제1 챗봇이 전달한 초기 메시지를 송신하도록 구성되는, 서버.
  18. 청구항 17에 있어서,
    상기 초기 메시지는 상기 챗봇의 서비스를 설명하기 위한 메타 정보를 포함하는, 서버.
  19. 청구항 12에 있어서,
    상기 제1 메시지 및 상기 제2 메시지는 상기 전자 장치 상에서 구동 중인 어플리케이션을 통해 송수신되는, 서버.
  20. 삭제
KR1020200029227A 2017-04-14 2020-03-09 대화형 콘텐츠 제공 시스템 KR102254821B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200029227A KR102254821B1 (ko) 2017-04-14 2020-03-09 대화형 콘텐츠 제공 시스템

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020170048452A KR102266879B1 (ko) 2017-04-14 2017-04-14 대화형 콘텐츠 제공 시스템
KR1020200029227A KR102254821B1 (ko) 2017-04-14 2020-03-09 대화형 콘텐츠 제공 시스템

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020170048452A Division KR102266879B1 (ko) 2017-04-14 2017-04-14 대화형 콘텐츠 제공 시스템

Publications (2)

Publication Number Publication Date
KR20200029417A KR20200029417A (ko) 2020-03-18
KR102254821B1 true KR102254821B1 (ko) 2021-05-26

Family

ID=69999560

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200029227A KR102254821B1 (ko) 2017-04-14 2020-03-09 대화형 콘텐츠 제공 시스템

Country Status (1)

Country Link
KR (1) KR102254821B1 (ko)

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
:‘Rich Communication Suite 7.0 Advanced Communications Services and Client Specification, Version 8.0‘, 2017.07.28.*
‘iPhone 3.0:The Missing Manual, 3rd Edition’, 2009.08.*

Also Published As

Publication number Publication date
KR20200029417A (ko) 2020-03-18

Similar Documents

Publication Publication Date Title
KR102266879B1 (ko) 대화형 콘텐츠 제공 시스템
US10484347B2 (en) Method and apparatus for supporting secure chat
KR102304086B1 (ko) 대화형 콘텐츠를 제공하는 전자 장치, 서버 및 이를 위한 방법
KR20170063792A (ko) 기업 시스템에 디바이스들상의 애플리케이션들의 일원화된 프로비저닝
WO2020207085A1 (zh) 信息分享方法、装置、电子设备及存储介质
US10084850B2 (en) Terminal apparatus, server and method of controlling the same
WO2021120976A2 (zh) 负载均衡控制方法及服务器
JP2021099861A (ja) メッセージングサービスのためのサーバ、システム、ユーザ端末、方法、及びプログラム
US11824826B2 (en) System and method for multi-channel group communications
KR102502655B1 (ko) 연속성을 갖는 컨텐츠 재생 방법 및 이를 위한 전자 장치
CN112420217B (zh) 消息推送方法、装置、设备及存储介质
CN109905380A (zh) 一种分布式系统中的节点控制方法和相关装置
WO2017054585A1 (zh) 网络接入方法、装置及系统
EP4262146A1 (en) Iot device and method for onboarding iot device to server
CN112328318B (zh) 专有云平台自动规划的方法、装置及存储介质
CN114217989A (zh) 设备间的服务调用方法、装置、设备、介质及计算机程序
WO2018145574A1 (zh) 一种信息处理方法及装置、终端、服务器、存储介质
US20160330251A1 (en) Method and device for sharing connection information in electronic device
CN108111374A (zh) 同步设备列表的方法、装置、设备和计算机存储介质
WO2023169193A1 (zh) 用于生成智能合约的方法和装置
KR102254821B1 (ko) 대화형 콘텐츠 제공 시스템
KR102533986B1 (ko) 실시간 콘텐트 데이터를 공유하는 전자 장치
KR102263977B1 (ko) 정보 제공을 수행하기 위한 방법, 장치, 및 시스템
CN109976872A (zh) 数据处理方法、装置、电子设备及存储介质
CN112597022A (zh) 远程诊断方法、装置、存储介质及电子设备

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