KR20240046433A - 통화에 대한 추정 보류 기간 결정 및 디스플레이 - Google Patents

통화에 대한 추정 보류 기간 결정 및 디스플레이 Download PDF

Info

Publication number
KR20240046433A
KR20240046433A KR1020237044863A KR20237044863A KR20240046433A KR 20240046433 A KR20240046433 A KR 20240046433A KR 1020237044863 A KR1020237044863 A KR 1020237044863A KR 20237044863 A KR20237044863 A KR 20237044863A KR 20240046433 A KR20240046433 A KR 20240046433A
Authority
KR
South Korea
Prior art keywords
call
hold
periods
period
implementations
Prior art date
Application number
KR1020237044863A
Other languages
English (en)
Inventor
조셉 조셉 체루카라
홍 첸
앤드류 조지 셰바나우
레베카 치우
이쉬안 겅
주니어 커티스 레이 로빈슨
이 왕
유에 간
샬롯 헐트
빈 선
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/540,849 external-priority patent/US11765274B2/en
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20240046433A publication Critical patent/KR20240046433A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/50Centralised arrangements for answering calls; Centralised arrangements for recording messages for absent or busy subscribers ; Centralised arrangements for recording messages
    • H04M3/51Centralised call answering arrangements requiring operator intervention, e.g. call or contact centers for telemarketing
    • H04M3/523Centralised call answering arrangements requiring operator intervention, e.g. call or contact centers for telemarketing with call distribution or queueing
    • H04M3/5238Centralised call answering arrangements requiring operator intervention, e.g. call or contact centers for telemarketing with call distribution or queueing with waiting time or load prediction arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/42025Calling or Called party identification service
    • H04M3/42085Called party identification service
    • H04M3/42102Making use of the called party identifier

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Telephonic Communication Services (AREA)

Abstract

구현예는 통화에 대한 추정 보류 기간들의 결정 및 디스플레이에 관한 것이다. 일부 구현예에서, 컴퓨터로 구현되는 방법은 대상 엔터티의 식별자를 획득하는 단계를 포함하며, 식별자는 제1 통화 장치와 대상 엔티티 사이의 통화를 시작하기 위해 제1 통화 장치에 의해 사용가능하다. 보류 기간은 통화가 현재 시간에 예상되는 특정 시간에서 시작될 때 통화가 인간 에이전트와 매칭되기 전까지의 추정 시간량으로 결정된다. 보류 기간은 하나 이상의 통화 장치들과 대상 엔티티 사이의 복수의 이전 통화들에 기초하여 결정된다. 보류 기간은 제1 통화 장치와 대상 엔티티 사이의 통화 시작 전에 제1 통화 장치에 의해 디스플레이되도록 제공된다.

Description

통화에 대한 추정 보류 기간 결정 및 디스플레이
본 출원은 2021년 12월 2일에 출원된 "통화에 대한 추정 보류 기간 결정 및 디스플레이"라는 제목의 미국 특허 출원 번호 17/540,849에 대한 우선권을 주장하며, 본 출원은 2021년 8월 24일에 출원된 "통화에 대한 추정 보류 기간 결정 및 디스플레이"라는 제목의 미국 임시 특허 출원 번호 63/236,648에 대한 우선권을 주장하며, 두 출원 모두 전체 내용이 참조로 여기에 포함된다.
사람들은 정보를 획득하고, 서비스를 예약하는 등의 목적으로 기업이나 다른 엔터티에 많은 전화 통화를 한다. 해당 엔터티의 인간 에이전트는 일반적으로 자동화된 응답으로 쉽게 처리할 수 없는 특정 요청이나 서비스에 대해 발신자에게 말을 한다. 많은 엔터티들은 그러한 정보 및 서비스에 대해 발신자로부터 수신된 통화량을 처리할 수 없으므로 일부 발신자는 인간 에이전트가 전화를 받을 수 있을 때까지 보류 대기열(holding queue)에서 기다려야 한다. 일부 엔터티는 인간 에이전트에 대한 대기 시간의 추정치를 제공한다. 그러한 추정치는 다른 요인들 중에서 현재 보류 대기열에 있는 발신자의 수와 인간 에이전트의 가용성에 기초하여 엔터티에 의해 결정된다.
본 명세서에 제공된 배경 설명은 개시 내용의 맥락을 일반적으로 제시하기 위한 것이다. 현재 명명된 발명자의 작업은 본 배경 섹션에 설명된 범위 내에서뿐만 아니라 출원 당시 선행 기술로 인정되지 않을 수 있는 설명의 측면도 본 개시 내용에 대한 선행 기술로 명시적 또는 묵시적으로 인정되지 않는다.
본 출원의 구현예는 통화에 대한 추정 보류 기간 결정 및 디스플레이에 관한 것이다. 일부 구현예에서, 컴퓨터로 구현되는 방법은 대상 엔터티의 식별자를 획득하는 단계를 포함하며, 이 식별자는 제1 통화 장치와 대상 엔터티 사이의 통화를 시작하기 위해 제1 통화 장치에 의해 사용될 수 있다. 통화가 현재 시간에 예상되는 특정 시간에서 시작될 때 통화가 인간 에이전트와 매칭되기까지의 추정 시간량인 보류 기간이 결정된다. 보류 기간은 하나 이상의 통화 장치들과 대상 엔터티 사이의 복수의 이전 통화들에 기초하여 결정된다. 보류 기간은 제1 통화 장치와 대상 엔터티 사이의 통화 시작 전에 제1 통화 장치에 의해 디스플레이되도록 제공된다.
방법의 다양한 구현예가 설명된다. 예를 들어, 일부 구현예에서, 식별자를 획득하는 단계, 보류 기간을 결정하는 단계, 디스플레이될 보류 기간을 제공하는 단계는 제1 통화 장치와 통신하는 서버 장치에 의해 수행되고, 식별자를 획득하는 단계는 제1 통화 장치에 대한 사용자 입력에 기초하여 식별자를 수신한 제1 통화 장치로부터 서버 장치에서 식별자를 수신하는 단계를 포함하고, 디스플레이될 보류 기간을 제공하는 단계는 서버 장치로부터 제1 통화 장치에 의해 디스플레이될 보류 기간을 제1 통화 장치에 전송하는 단계를 포함한다. 일부 구현예에서, 식별자를 획득하는 단계, 보류 기간을 결정하는 단계, 디스플레이될 보류 기간을 제공하는 단계는 제1 통화 장치와 통신하는 서버 장치에 의해 수행되고, 식별자를 획득하는 단계는 서버 장치에서 제1 통화 장치에 의해 수행되고, 보류 기간을 결정하는 단계는 보류 기간들을 저장하는 데이터 구조 또는 대상 엔터티 및 특정 시간을 포함하는 입력들에 응답하여 보류 기간들을 출력하는 제1 통화 장치의 로컬 저장소에 저장된 기계 학습 모델에 액세스하는 단계를 포함한다. 일부 구현예에서, 식별자를 획득하는 단계, 보류 기간을 결정하는 단계, 디스플레이될 보류 기간을 제공하는 단계는 제1 통화 장치에 의해 수행되고, 보류 기간을 결정하는 단계는 통신 네트워크를 통해 서버 장치에 보류 기간을 요청하는 단계, 식별자에 기초하여 보류 기간을 결정하는 서버 장치에 제1 통화 장치로부터 식별자를 전송하는 단계, 및 제1 통화 장치와 대상 엔터티 사이의 통화 시작 전에, 서버 장치로부터 제1 통화 장치에서 보류 기간을 수신하는 단계를 포함하고, 보류 기간을 요청하는 단계는 대상 엔터티의 식별자의 완성된 버전(complete version)을 획득하기 전에 수행된다.
일부 구현예에서, 보류 기간을 결정하는 단계는 기계 학습 모델 또는 데이터 구조의 사용에 기초하며; 기계 학습 모델은 식별자와 통화 시간을 포함하는 입력을 수신하고 통화에 대한 추정 보류 기간을 나타내는 결과를 출력하며, 식별자, 이전 통화들의 시작 시간들, 이전 통화들의 통화 기간들, 이전 통화들의 보류 기간들을 포함한 트레이닝 데이터에 기초하여 트레이닝되며; 그리고 데이터 구조는 엔터티에 대한 추정 보류 기간들을 저장하며, 보류 기간들은 복수의 이전 통화들에 기초한다. 일부 구현예에서, 하나 이상의 통화 장치들은 복수의 사용자들과 연관된 복수의 통화 장치들이다.
일부 구현예에서, 보류 기간은 하나 이상의 통화 장치들과 대상 엔터티 사이의 복수의 이전 통화들의 복수의 통화 기간들을 나타내는 통화 기간 데이터, 및 이전 통화들의 복수의 보류 기간들을 나타내는 보류 기간 데이터에 기초하여 결정된다. 일부 예에서는, 복수의 이전 통화들은 임계 기간보다 긴 통화 기간들을 가지고, 임계 기간보다 짧은 통화 기간들을 갖는 통화는 제외하며, 보류 기간 들 중 하나 이상은 임계 기간보다 긴 통화 기간들의 대응하는 통화 기간들에 기초한다. 추가 예시에서, 하나 이상의 보류 기간들은 하나 이상의 이전 통화들의 통화 기간들에 기초하여 하나 이상의 보류 기간들을 추정하는 함수에 기초하여 결정되고, 임계 기간 및 함수는 식별자와 연관된 대상 엔터티에 커스터마이즈된다.
일부 구현예에서, 방법은 보류 기간들의 디스플레이와 연관되어 특정 시간이 제1 통화 장치에 의해 디스플레이되게 하는 단계를 더 포함하며, 특정 시간은 현재 시간보다 적어도 하루 앞이다.
일부 구현예에서, 방법은 복수의 예상(prospective) 통화들에 대한 복수의 보류 기간들을 결정하는 단계, 복수의 보류 기간들은 보류 기간을 포함하고, 복수의 보류 기간들 각각은 연관된 예상 통화가 현재 시간보다 앞서 각각의 통화 시간에서 시작될 때 연관된 예상 통화가 인간 에이전트와 매칭되기까지의 각각의 추정 시간량을 나타내고, 그리고 각각의 통화 시간은 서로 상이하며; 및 복수의 보류 기간들이 각각의 통화 시간들과 연관되어 디스플레이되게 하는 단계를 더 포함한다. 일부 구현예에서, 방법은 복수의 보류 기간들 중 특정 보류 기간 및 특정 보류 기간과 연관된 특정 통화 시간을 갖는 예상 통화를 선택하는 사용자 입력을 수신하는 단계 및 제1 통화 장치와 연관된 캘린더의 특정 통화 시간에 선택된 예상 통화를 스케쥴링하는 단계를 더 포함한다. 일부 예에서, 특정 통화 시간이 다가오고 있거나 도착했음을 나타내는 알림이 제1 통화 장치에 의해 출력된다. 일부 예에서, 제1 통화 장치와 대상 엔터티 사이의 통화는 특정 통화 시간에 제1 통화 장치에 의해 자동으로 시작된다.
일부 구현예에서, 보류 기간이 디스플레이되게 하는 단계는 제1 통화 장치와 대상 엔터티 사이의 제1 통화 중에 수행되고, 제1 통화 장치와 대상 엔터티 사이의 통화는 제2 통화이고, 제1 통화는 제1 통화 장치와 대상 엔터티 사이의 제2 통화를 시작하게 하기 전에 시작된다. 일부 구현예에서, 방법은 제1 통화 장치와 대상 엔터티 사이의 통화가 종료된 후에 사용자 피드백에 대한 프롬프트가 디스플레이되게 하는 단계, 보류 기간의 정확도를 나타내는 사용자 피드백을 수신하는 단계, 및 사용자 피드백에 기초하여 보류 기간을 결정하는 데 사용되는 데이터 구조 또는 모델을 업데이트하는 단계를 더 포함한다.
일부 구현예에서, 통화에 대한 보류 기간 추정치를 제공하는 시스템은 명령어들을 저장하는 메모리와 메모리에 결합된 적어도 하나의 프로세서를 포함하며, 적어도 하나의 프로세서는 동작들을 수행하기 위해 메모리로부터 명령어들에 액세스하도록 구성된다. 동작들은 대상 엔티티의 식별자를 획득하는 동작, 식별자는 제1 통화 장치와 대상 엔티티 사이의 통화를 시작하기 위해 제1 통화 장치에 의해 사용가능하며; 통화가 현재 시간에 예상되는 특정 시간에서 시작될 때 통화가 인간 에이전트와 매칭되기까지의 추정 시간량인 보류 기간이 결정된다 하는 동작, 보류 기간은 하나 이상의 통화 장치들과 대상 엔티티 사이의 복수의 이전 통화들에 기초하여 결정되며; 및 제1 통화 장치와 대상 엔티티 사이의 통화 시작 전에 제1 통화 장치에 의해 디스플레이될 보류 기간을 제공하는 동작을 포함한다.
시스템의 다양한 구현예에서, 보류 기간을 결정하는 동작은 하나 이상의 통화 장치들과 대상 엔터티 사이의 이전 통화들의 복수의 통화 기간들을 나타내는 통화 기간 데이터 및 이전 통화들의 복수의 보류 기간들을 나타내는 보류 기간 데이터에 기초한다. 일부 구현예에서, 추가 동작들은 보류 기간을 포함하는 복수의 보류 기간들을 결정하는 동작, 보류 기간들 각각은 통화가 현재 시간에 예상되는 각각의 통화 시간에서 시작될 때 통화가 인간 에이전트와 매칭되기 전까지의 각각의 추정 시간량을 나타내고, 그리고 각각의 통화 시간들은 서로 상이하며; 및 복수의 보류 기간들이 각각의 통화 시간들과 연관되어 디스플레이되게 하는 동작을 더 포함한다. 다양한 구현예에서 동작들은 위 방법의 하나 이상의 특징들을 포함할 수 있다.
일부 구현예에서, 프로세서에 의해 실행될 때 프로세서로 하여금 동작들을 수행하게 하는 명령어들을 저장하는 비일시적 컴퓨터 판독가능 매체. 동작들은 대상 엔티티의 식별자를 획득하는 동작, 식별자는 제1 통화 장치와 대상 엔티티 사이의 통화를 시작하기 위해 제1 통화 장치에 의해 사용가능하며; 통화가 현재 시간에 예상되는 특정 시간에서 시작될 때 통화가 인간 에이전트와 매칭되기 전까지의 추정 시간량인 보류 기간을 결정하는 동작, 보류 기간은 하나 이상의 통화 장치들과 대상 엔티티 사이의 복수의 이전 통화들에 기초하여 결정되며; 및 제1 통화 장치와 대상 엔티티 사이의 통화 시작 전에 제1 통화 장치에 의해 디스플레이될 보류 기간을 제공하는 동작을 포함한다. 다양한 구현예에서 동작들은 위의 방법이나 시스템의 하나 이상의 특징들을 포함할 수 있다.
도 1은 본 명세서에 기술된 하나 이상의 구현예에서 사용될 수 있는 예시적인 시스템의 블록도이다;
도 2는 일부 구현예에 따라, 예상 통화들에 대한 추정 보류 기간들을 결정하고 디스플레이하는 예시적인 방법을 나타내는 흐름도이다;
도 3은 일부 구현예에 따라, 이전 통화들에 기초하여 예상 통화들에 대한 보류 기간들을 추정하는 데 사용되는 데이터 구조 및/또는 모델을 구축하는 예시적인 방법을 나타내는 흐름도이다;
도 4는 일부 구현예에 따라, 대상 엔터티로의 예상 통화들에 대한 보류 기간들을 결정하는 예시적인 방법을 나타내는 흐름도이다;
도 5 내지 도 8은 일부 구현예에 따라, 통화를 시작하기 전에 예상 통화들에 대한 보류 기간들이 디스플레이되는 통화 장치에 의해 디스플레이되는 사용자 인터페이스의 개략도이다;
도 9 및 도 10은 일부 구현예에 따라, 통화 중에 예상 통화들에 대한 보류 기간들이 디스플레이되는 통화 장치에 의해 디스플레이되는 사용자 인터페이스의 개략도이다; 그리고
도 11은 본 명세서에 기술된 하나 이상의 구현예에 사용될 수 있는 예시적인 디바이스의 블록도이다.
본 명세서에 설명된 하나 이상의 구현예는 통화에 대한 추정 보류 기간 결정 및 디스플레이에 관한 것이다. 다양한 구현예에서, 방법은 대상 엔터티의 식별자를 획득하는 단계를 포함한다. 식별자는 통화 장치와 대상 엔터티 사이의 통화를 시작하기 위해 통화 장치에 의해 사용될 수 있으며; 예를 들어, 전화번호 또는 기타 식별자로 전화를 걸어 기업에 연결하고 통화를 설정할 수 있다. 통화가 인간 에이전트와 매칭되기 전까지의 추정 시간량인 하나 이상의 보류 기간들이 결정된다. 보류 기간들이 결정된 통화는 현재 진행 중인 통화가 아닌 현재 시간 이후의 통화 시간에 시작되는 예상(prospective) 통화이다. 보류 기간들은 예를 들어 통화 장치의 다수의 사용자가 대상 엔터티에 건 이전 통화들에 기초하여 결정된다. 결정된 보류 기간들은 통화 장치와 대상 엔터티 사이의 예상 통화 시작 전에 통화 장치에 의해 디스플레이될 수 있다.
다양한 추가 구성이 설명된다. 예를 들어, 일부 구현예에서, 보류 기간들을 결정하는 단계는 통화 장치와 통신하는 서버에 의해 수행될 수 있으며, 여기서 서버는 디스플레이되도록 보류 기간들을 통화 장치에 전송할 수 있다. 일부 구현예에서, 식별자를 획득하고 보류 기간들을 결정 및 디스플레이하는 단계는 통화 장치에 의해 수행될 수 있다. 다양한 구현예에서, 보류 기간들을 결정하는 단계는 보류 기간들을 저장하는 데이터 구조에 액세스하는 단계를 포함할 수 있다. 일부 구현예에서, 예상 통화의 통화 시간 및 대상 엔터티와 같은 예상 통화의 입력 통화 특성에 응답하여 보류 기간들을 출력하는데 기계 학습 모델이 사용된다. 다양한 구현예에서, 데이터 구조 및/또는 모델은 서버에 저장되거나 통화 장치의 로컬 저장소에 저장될 수 있다. 일부 구현예에서, 클라이언트 장치는 대상 엔터티의 식별자의 완성된 버전을 획득하기 전에 서버 또는 다른 원격 장치로부터 보류 기간을 요청할 수 있다.
일부 구현예에서, 통화 장치들과 대상 엔터티 사이의 이전 통화들의 통화 기간들을 나타내는 통화 기간 데이터 및 이전 통화들의 보류 기간들을 나타내는 보류 기간 데이터에 기초하여 보류 기간이 결정된다. 예를 들어, 보류 기간들을 결정하는데 사용된 이전 통화들은 임계 기간보다 긴 통화 기간들을 가지고, 임계 기간보다 짧은 통화 기간들을 갖는 통화들은 제외한다. 이전 통화 보류 기간들 중 하나 이상은 임계 기간보다 긴 대응하는 통화 기간들에 기초할 수 있다. 일부 구현예에서는, 이전 통화 보류 기간들은 함수에 기초할 수 있으며, 여기서 임계 기간과 함수는 식별자와 연관된 대상 엔터티에 대해 커스터마이즈될 수 있다.
일부 구현예에서, 예상 통화들에 대한 다수의 보류 기간들은 서로 다른 다수의 각각의 통화 시간들에서 결정되고, 다수의 보류 기간들은 해당하는 각각의 통화 시간들과 연관되어 디스플레이될 수 있다. 일부 구현예에서, 사용자 입력은 특정 보류 기간 및 예상 통화 시간을 갖는 예상 통화를 선택할 수 있으며, 선택된 예상 통화는 사용자와 연관된 캘린더의 해당 통화 시간에 자동으로 스케쥴링된다. 예를 들어, 특정 통화 시간이 다가오고 있거나 도착했음을 나타내는 알림이 통화 장치에 의해 출력될 수 있으며 및/또는 선택된 통화는 특정 통화 시간에 통화 장치와 대상 엔터티 사이에서 자동으로 시작된다.
설명된 기술 및 특징에는 여러 가지 이점이 있다. 설명된 구현예는 아직 시작되지 않은 예상 통화들에 대한 사용자의 보류 기간들의 추정치를 제공한다. 이는 현재 진행 중인 통화에 대한 추정 보류 시간들을 제공하지만 통화가 시작되기 전에 사용자에게 통화에 대한 보류 기간 정보를 제공하지 않는 이전 시스템과 다르다. 사용자는 예상 통화들에 대한 보류 기간들의 추정치들을 통해, 그러한 정보 없이 엔터티에 전화를 걸 때보다 더 효율적이고 잠재적인 좌절감 없이 통화를 계획하고 스케쥴링할 수 있다. 설명된 기술은 현재 시작되거나 앞으로 한 시간 또는 며칠 후에 시작되는 통화에 대해 사용자에게 추정 보류 기간들을 제공할 수 있으므로, 사용자는 자신의 스케쥴과 장치 사용에 가장 편리하고 시간 효율성이 높은 시간과 요일에 통화를 계획할 수 있다. 또한, 계획된 통화들 및 해당 통화들의 보류 기간들과 관련된 알람을 사용자에게 제공할 수 있다.
또한, 본 명세서에 설명된 다양한 구현예는 대상 엔터티(또는 콜 센터와 같은 연관 엔터티)로부터 데이터를 수신할 필요 없이 사용자가 행한 이전 통화들의 통화 특성들을 사용하여 추정 보류 기간들을 결정한다. 예를 들어, 그러한 데이터는 예를 들어 대상 엔터티 또는 연관 엔터티에 의해 수행된 통화 및 에이전트의 내부 모니터링에 기초하여, 현재 또는 향후 에이전트 가용성을 나타낼 수 있으며 및/또는 대상 엔터티의 인간 에이전트와 대화하기 위해 기다리는 현재 보류 대기열에 있는 발신자의 수를 나타낼 수 있다. 여기에 설명된 기술은 그러한 에이전트 가용성 및 현재 보류 대기열 데이터를 사용할 필요가 없다. 예를 들어, 설명된 기술은 현재 에이전트 가용성 데이터, 현재 보류 대기열 데이터 또는 대상 엔터티 또는 연관 엔터티로부터 수신된 기타 데이터를 사용할 필요 없이 사용자 및 사용자 장치에 의한 이전 통화들과 관련된 데이터에 기초하여 보류 기간들을 추정할 수 있다. 이러한 이전 통화 데이터는 장치들에 의해 자동으로 결정되거나, 사용자 피드백에 기초하여 결정되거나, 이전 통화들의 통화 기간들과 같은 기타 통화 특성들에 기초하여 결정된 이전 통화들의 보류 기간들을 포함할 수 있으므로, 향후 다른 날짜 및 시간에서의 통화들에 대한 보류 기간의 강력한 추정치를 제공한다. 따라서, 설명된 기술은 예를 들어, 현재 에이전트 가용성 데이터 또는 보류 대기열 데이터가 이용가능하지 않거나 알려진 엔터티 및/또는 시간들에서 이루어진 통화들과 같은, 이전 통화 데이터가 이용가능한 모든 통화에 대한 보류 기간들을 추정하는 데 사용될 수 있다.
하나 이상의 설명된 구현예의 기술적 효과는 장치가 결과를 획득하기 위해 더 적은 계산 리소스를 소비한다는 것이다. 예를 들어, 설명된 기술의 기술적 효과는 설명된 기술 또는 구성 중 하나 이상을 제공하지 않는 이전 시스템과 비교하여 시스템 프로세싱 리소스 및 전력 리소스의 소비가 감소한다는 것이다. 예를 들어, 이러한 이전 시스템은 사용자가 대상 엔터티의 인간 에이전트와 연결을 시도하기 위해 다수의 서로 다른 전화를 걸도록 요구할 수 있으며, 각 통화는 사용자가 미리 알지 못하는 시간 동안 사용자가 대기하도록 요구한다. 사용자는 종종 에이전트와 연결되기 전에 통화를 종료하고 그 시간에 보류 기간이 더 짧아지기를 바라면서 다른 시간에 대상 엔터티에 다시 통화를 시도한다. 이렇게 여러 번 통화를 시도하면 시스템 리소스가 낭비된다. 여기에 설명된 구성은 예를 들어 아직 시작되지 않은 예상 통화들에 대한 보류 기간들을 디스플레이하여 사용자가 보다 효율적으로 전화를 걸 수 있도록 하고, 다양한 통화 시간의 알려진 보류 기간들을 고려함으로써 이러한 단점을 줄일 수 있으므로, 전반적으로 더 적은 수의 통화가 시작되게 하고 통화 장치, 대상 엔터티 및 통화를 활성화하기 위해 통화 장치와 통신하는 기타 장치의 전체 프로세싱 및 전력 요구 사항을 낮추게 된다.
또한, 일부 구현예에서, 데이터 구조 및/또는 모델은 보류 기간들을 결정하는 데 사용될 수 있으며 사용자가 전화를 걸기 전에 그리고 보류 기간들을 결정하기 전에 구축되고 저장될 수 있다. 사전 구축된 데이터 구조 및/또는 모델은 로컬 저장소 또는 원격 장치와의 효율적인 통신을 통해 통화 장치에 의해 효율적으로 액세스될 수 있으므로 통화 중 및 통화에 앞서 프로세싱 및 네트워킹 리소스의 소비가 줄어든다. 대조적으로, 일부 이전 시스템은 현재 보류 시간 추정치를 결정하기 위해 대상 엔터티에서의 현재 에이전트 가용성 및/또는 보류 대기열의 현재 발신자 수를 나타내는 데이터를 요구할 수 있으며, 이는 추가 시스템 프로세싱 및 네트워킹 리소스를 요구할 수 있다.
본 명세서의 설명에 더하여, 본 명세서에 설명된 시스템, 프로그램 또는 특징이 사용자 정보(예: 사용자의 소셜 네트워크, 소셜 활동 또는 액티비티, 직업, 사용자 선호도, 사용자의 현재 위치, 사용자의 메시지, 사용자에 의한 발신 전화 또는 사용자의 장치에 대한 정보) 수집을 가능하게 할 수 있는지 여부와 그 시기, 그리고 사용자가 서버로부터 컨텐츠나 통신을 전송받는지 여부에 대해 사용자가 선택할 수 있도록 하는 제어가 사용자에게 제공될 수 있다. 또한, 특정 데이터는 저장 또는 사용되기 전에 하나 이상의 방법으로 처리되어 개인 식별 정보가 제거될 수 있다. 예를 들어, 사용자의 신원은 사용자에 대한 개인 식별 정보가 결정될 수 없도록 처리되거나, 사용자의 지리적 위치는 위치 정보가 획득되는 곳에서 일반화되어(예: 도시, 우편번호 또는 주 수준) 사용자의 특정 위치를 확인될 수 없도록 할 수 있다. 따라서 사용자는 자신에 대해 어떤 정보가 수집되고, 해당 정보가 어떻게 사용되며, 어떤 정보가 사용자에게 제공되는지 제어할 수 있다.
도 1은 본 명세서에 설명된 일부 구현예에서 사용될 수 있는 예시적인 네트워크 환경(100)의 블록도를 도시한다. 일부 구현예에서, 네트워크 환경(100)은 하나 이상의 서버 장치, 예를 들어 도 1의 예에서는 서버 시스템(102)을 포함한다. 예를 들어, 서버 시스템(102)은 네트워크(130)를 통해 통신할 수 있다. 서버 시스템(102)은 서버 장치(104) 및 데이터베이스(106) 또는 기타 저장 장치를 포함할 수 있다. 네트워크 환경(100)은 또한 서버(102)와 서로 통신하고/하거나 네트워크 연결(130)을 통해 다른 장치와 통신할 수 있는 하나 이상의 클라이언트 장치, 예를 들어 클라이언트 장치(120, 122, 124, 126)를 포함한다. 네트워크(130)는 인터넷, 근거리 통신망(LAN), 무선 네트워크, 스위치 또는 허브 연결 등 중 하나 이상을 포함하는 임의 유형의 통신 네트워크일 수 있다. 일부 구현예에서, 네트워크(130)는 예를 들어 피어 투 피어 무선 프로토콜(예: Bluetooth®, Wi-Fi Direct 등)을 사용하거나 하나의 클라이언트 장치가 다른 클라이언트 장치에 대한 서버 역할을 하게 하는 등, 장치(120-126) 사이에 피어 투 피어 통신을 포함할 수 있다. 2개의 클라이언트 장치(120, 122) 사이의 피어 투 피어 통신의 일례가 화살표(132)로 표시되어 있다.
설명의 편의를 위해, 도 1은 서버 시스템(102), 서버 장치(104) 및 데이터베이스(106)에 대한 하나의 블록을 도시하고, 클라이언트 장치(120, 122, 124, 126)에 대한 4개의 블록을 도시한다. 서버 블록(102, 104, 106)은 다수의 시스템, 서버 장치 및 네트워크 데이터베이스를 나타낼 수 있으며, 블록은 표시된 것과 다른 구성으로 제공될 수 있다. 예를 들어, 서버 시스템(102)은 예를 들어 네트워크(130)를 통해 다른 서버 시스템과 통신할 수 있는 다중 서버 시스템을 나타낼 수 있다. 일부 구현예에서, 서버 시스템(102)은 예를 들어 클라우드 호스팅 서버 또는 통화 서비스(예: Voice over Internet Protocol, VOIP)를 제공하는 서버를 포함할 수 있다. 일부 예에서, 데이터베이스(106) 및/또는 다른 저장 장치는 서버 장치(104)와 별개인 서버 시스템 블록(들)에 제공될 수 있으며 네트워크(130)를 통해 서버 장치(104) 및 다른 서버 시스템과 통신할 수 있다. 또한 클라이언트 장치는 개수에 제한 없이 있을 수 있다. 일부 예에서, 서버 시스템(102)은 네트워크 연결(130)을 통해 클라이언트 장치와 무선으로 통신하며, 클라이언트 장치는 서버 모바일 장치로부터의 신호에 의해 활성화되거나 보완될 수 있는 다양한 기능을 제공한다.
서버 시스템(102) 및 클라이언트 장치(120-126)는 예를 들어 데스크탑 컴퓨터, 랩탑 컴퓨터, 휴대용 또는 모바일 장치, 휴대폰, 스마트폰, 태블릿 컴퓨터, 텔레비전, TV 셋톱 박스 또는 엔터테인먼트 장치, 웨어러블 장치(예: 디스플레이 안경 또는 고글, 머리 장착형 디스플레이(HMD), 이어피스, 이어버드, 피트니스 밴드, 손목시계, 헤드셋, 완장, 보석류 등), 가상 현실(VR) 및/또는 증강 현실(AR) 지원 장치, 개인 휴대 정보 단말기(PDA), 미디어 플레이어, 게임 장치 등 다양한 애플리케이션에 사용되는 모든 유형의 장치일 수 있다. 일부 클라이언트 장치는 데이터베이스(106) 또는 기타 저장소와 유사한 로컬 데이터베이스를 가질 수도 있다. 다른 구현예에서, 네트워크 환경(100)은 도시된 구성요소들 모두를 갖지 않을 수 있고/있거나 여기에 설명된 것 대신에 또는 이에 추가하여 다른 유형의 요소들을 포함하는 다른 요소들을 가질 수 있다.
다양한 구현예에서, 클라이언트 장치(120-126)는 각각의 클라이언트 장치 및/또는 서버 시스템(102)에서 실행되는 애플리케이션을 통해 서버 시스템(102)과 상호작용할 수 있다. 예를 들어, 각각의 클라이언트 장치(120, 122, 124, 126)는 서버 시스템(102)과 데이터를 주고받을 수 있다. 일부 구현예에서, 서버 시스템(102)은 컨텐츠 데이터(예를 들어, 오디오, 이미지, 비디오, 메시지, 이메일 등), 알림, 명령 등과 같은 다양한 데이터를 클라이언트 장치의 전체 또는 특정 장치에 전송할 수 있다. 각 클라이언트 장치는 서버 시스템(102)에 승인, 데이터 요청, 알림, 사용자 명령, 통화 요청 등과 같은 적절한 데이터를 보낼 수 있다. 일부 예에서, 서버 및 클라이언트 장치는 텍스트 데이터, 오디오 데이터, 비디오 데이터, 이미지 데이터 또는 기타 유형의 데이터를 포함하는 다양한 형태의 데이터를 전달할 수 있다.
다양한 구현예에서, 최종 사용자(U1, U2, U3, U4)는 각각의 클라이언트 장치(120, 122, 124, 126)를 사용하여 서버 시스템(102) 및/또는 서로 통신할 수 있다. 일부 예에서, 사용자(U1, U2, U3, U4)는 각각의 클라이언트 장치 및/또는 서버 시스템(102)에서 실행되는 애플리케이션을 통해 및/또는 네트워크 서비스, 예를 들어 소셜 네트워크 서비스 또는 서버 시스템(102)에서 구현된 다른 유형의 네트워크 서비스를 통해 서로 상호작용할 수 있다. 일부 구현예에서, 서버 시스템(102)은 각 클라이언트 장치가 서버 시스템(102) 및/또는 네트워크 서비스에 업로드된 전달된 컨텐츠 또는 공유 컨텐츠를 수신할 수 있도록 클라이언트 장치에 적절한 데이터를 제공할 수 있다 일부 구현예에서, "사용자"에는 하나 이상의 프로그램이나 가상 엔터티는 물론 시스템이나 네트워크와 인터페이스하는 사람도 포함될 수 있다.
클라이언트 장치(120, 122, 124 및/또는 126)의 사용자 인터페이스는 사용자 컨텐츠와 이미지, 비디오, 데이터 및 기타 컨텐츠뿐만 아니라 통신(예: 전화 또는 인터넷 통화, 화상 회의, 동기식 또는 비동기식 채팅 등), 개인 정보 보호 설정, 알림 및 기타 데이터를 포함하는 기타 컨텐츠의 디스플레이를 가능하게 할 수 있다. 이러한 사용자 인터페이스는 클라이언트 장치의 소프트웨어, 서버 장치의 소프트웨어, 및/또는 서버 장치(104)에서 실행되는 클라이언트 소프트웨어와 서버 소프트웨어의 조합, 예를 들어 서버 시스템(102)과 통신하는 애플리케이션 소프트웨어 또는 클라이언트 소프트웨어를 사용하여 디스플레이될 수 있다. 사용자 인터페이스는 클라이언트 장치 또는 서버 장치의 디스플레이 장치, 예를 들어 터치스크린 또는 기타 디스플레이 스크린, 프로젝터 등에 의해 디스플레이될 수 있다. 일부 구현예에서, 서버 시스템에서 실행되는 애플리케이션 프로그램은 클라이언트 장치와 통신하여 클라이언트 장치에서 사용자 입력을 수신하고 클라이언트 장치에서 시각적 데이터, 오디오 데이터 등과 같은 데이터를 출력할 수 있다.
서버 및 클라이언트 장치에서 실행되는 다양한 애플리케이션 및/또는 운영 체제는 통신 애플리케이션(예: 음성 통화, 화상 회의, 채팅 또는 기타 커뮤니케이션 연결 및 제공), 이메일 애플리케이션, 컨텐츠 데이터의 디스플레이, 개인 정보 보호 설정, 알림, 브라우저 등을 포함한 다양한 기능을 활성화할 수 있다. 사용자 인터페이스는 클라이언트 장치의 애플리케이션이나 다른 소프트웨어, 서버 장치의 소프트웨어, 및/또는 서버(102)에서 실행되는 클라이언트 소프트웨어, 예를 들어 서버(102)와 통신하는 애플리케이션 소프트웨어 또는 클라이언트 소프트웨어의 조합을 사용하여 클라이언트 장치에 디스플레이될 수 있다. 사용자 인터페이스는 클라이언트 장치 또는 서버 장치의 디스플레이 장치, 예를 들어 디스플레이 화면, 프로젝터 등에 의해 디스플레이될 수 있다. 일부 구현예에서, 서버에서 실행되는 애플리케이션 프로그램은 클라이언트 장치와 통신하여 클라이언트 장치에서 사용자 입력을 수신하고 클라이언트 장치에서 시각적 데이터, 오디오 데이터 등과 같은 데이터를 출력할 수 있다. 일부 구현예에서, 네트워크 환경(100)의 하나 이상의 장치, 예를 들어 서버 시스템(102)의 하나 이상의 서버는 전자 백과사전, 지식 그래프, 하나 이상의 데이터베이스, 단어 모음, 구문, 기호 및 기타 정보, 소셜 네트워크 애플리케이션(예: 소셜 그래프, 친구를 위한 소셜 네트워크, 비즈니스를 위한 소셜 네트워크 등), 장소 또는 위치에 대한 웹사이트(예: 레스토랑, 자동차 판매점 등), 매핑 애플리케이션(예: 지도 위치를 조회하는 웹사이트), 통화 특성 및 데이터 등을 유지할 수 있다. 일부 구현예에서, 서버 시스템(102)은 특정 유형의 컨텐츠 항목(예: 텍스트 또는 이미지)의 분류기를 포함할 수 있으며, 특정 클래스 중 임의의 클래스가 수신된 컨텐츠 항목에서 검출되는지 여부를 결정할 수 있다.
일부 구현예에서는 컴퓨터 네트워크와 연결이 끊기거나 컴퓨터 네트워크에 간헐적으로 연결된 클라이언트 또는 서버 장치에 여기에 설명된 하나 이상의 특징을 제공할 수 있다. 일부 구현예에서, 클라이언트 장치는 예를 들어 채팅이나 다른 메시지를 통해 비동기식 통신을 위해 여기에 설명된 특징과 결과를 제공할 수 있다.
기계 학습 모델은 본 명세서에 설명된 바와 같이 서버 시스템(102) 및/또는 하나 이상의 클라이언트 장치(120-126)에 의해 사용될 수 있다. 일부 구현예에서, 기계 학습 모델은 네트워크 아키텍처에 따라, 예를 들어 하나 이상의 레이어로 배열된 하나 이상의 노드, 네트워크 아키텍처를 통해 연결된 다양한 노드 및 관련 가중치를 갖는 신경 네트워크일 수 있다. 예를 들어, 모델의 트레이닝 단계에서는 트레이닝 데이터를 사용하여 모델을 트레이닝할 수 있으며, 추론 단계에서는 트레이닝된 모델이 입력 데이터에 기초하여 출력을 결정할 수 있다. 일부 구현예에서, 모델은 예를 들어 테스트 랩 또는 기타 설정의 테스트 장치에서 오프라인으로 트레이닝될 수 있으며, 트레이닝된 모델은 모델을 실행하는 서버에 제공될 수 있다. 일부 구현예에서, 트레이닝된 모델은 장치 내에서 로컬로 다시 트레이닝되거나 업데이트될 수 있으며, 트레이닝되지 않은 모델은 장치 내에서 트레이닝될 수 있다. 일부 구현예에서, 사용자 허가를 받아 연합 학습을 활용하여 하나 이상의 트레이닝된 모델을 업데이트할 수 있으며, 예를 들어 개별 서버 장치가 각각 로컬 모델 트레이닝을 수행할 수 있고 모델에 대한 업데이트가 집계되어 모델의 하나 이상의 중앙 버전을 업데이트할 수 있다.
도 2는 일부 구현예에 따라, 예상 통화들에 대한 추정 보류 기간들을 결정하고 디스플레이하는 예시적인 방법(200)을 나타내는 흐름도이다. 일부 구현예에서, 방법(200)은 서버, 예를 들어 도 1에 도시된 서버 시스템(102)에서 구현될 수 있다. 일부 구현예에서, 방법(200)의 블록 중 일부 또는 전부는 하나 이상의 클라이언트 장치(예를 들어, 도 1에 도시된 클라이언트 장치(120, 122, 124 및/또는 126)), 하나 이상의 서버 장치 및/또는 서버 장치(들)와 클라이언트 장치(들) 모두에서 구현될 수 있다. 기술된 예에서, 방법(200)의 블록을 구현하는 시스템(들)은 하나 이상의 프로세서 하드웨어 또는 프로세싱 회로("프로세서")를 포함하고, 데이터베이스(106) 또는 기타 접근가능한 저장소와 같은 하나 이상의 저장 장치에 접근할 수 있다. 일부 구현예에서, 하나 이상의 서버 시스템의 서로 다른 구성요소는 서로 다른 블록 또는 블록의 일부를 수행할 수 있다.
일부 구현예에서는 사용자 입력에 기초하여 방법(200) 또는 그 일부를 시작할 수 있다. 예를 들어, 사용자는 디스플레이된 사용자 인터페이스로부터 방법(200)의 시작 또는 방법(200)의 특정 블록을 선택할 수 있다. 일부 구현예에서, 방법(200) 또는 그 부분은 사용자 입력을 통한 사용자의 안내에 따라 수행될 수 있다. 일부 구현예에서, 방법(200) 또는 방법의 일부는 장치에 의해 자동으로 시작될 수 있다. 예를 들어, 방법(또는 그 일부)은 주기적으로 시작될 수 있거나, 하나 이상의 특정 사건 또는 조건의 발생에 기초하여 시작될 수 있다. 예를 들어, 그러한 이벤트 또는 조건은 해당 장치 또는 다른 장치에 의해 수행된 하나 이상의 이전 통화들, 방법(200)의 마지막 수행 이후 만료된 미리 결정된 기간, 및/또는 방법(200)을 구현하는 장치의 설정에서 지정될 수 있는 하나 이상의 다른 이벤트 또는 발생 조건을 나타내는 데이터를 획득하는 것을 포함할 수 있다. 일부 예에서, 장치(서버 또는 클라이언트)는 (사용자 동의가 수신된 경우) 통화 특성 데이터에 액세스하여 방법(200)을 수행할 수 있다.
블록(202)에서는, 방법(200)의 구현예에서 사용자 데이터를 사용하기 위한 사용자 동의(예를 들어, 사용자 허가)가 획득되었는지 여부가 체크된다. 예를 들어, 사용자 데이터에는 사용자 기본 설정, 사용자 통화 특성 데이터, 사용자가 선택한 응답, 장치의 사용자 인터페이스 내 기타 컨텐츠 또는 컨텐츠 컬렉션 내 기타 컨텐츠 데이터 항목(예: 사용자와 연관된 통화), 사용자가 보내거나 받은 메시지, 사용자의 소셜 네트워크 및/또는 연락처에 대한 정보, 컨텐츠 등급, 사용자의 지리적 위치, 과거 사용자 데이터 등이 포함될 수 있다. 본 명세서에 설명된 방법의 하나 이상의 블록은 일부 구현예에서 사용자 데이터를 사용할 수 있다.
방법(200)에서 사용자 데이터가 사용될 수 있는 관련 사용자들로부터 사용자 동의가 획득된 경우, 블록(204)에서, 본 명세서의 방법의 블록들이 해당 블록들에 대해 기술된 바와 같이 사용자 데이터의 가능한 사용으로 구현될 수 있다고 결정되고, 방법은 블록(208)으로 계속된다. 사용자 동의가 획득되지 않은 경우, 블록들이 사용자 데이터를 사용하지 않고 구현되어야 한다고 블록(206)에서 결정되고, 방법은 블록(208)으로 계속된다. 일부 구현예에서, 사용자 동의가 획득되지 않은 경우, 방법(200)의 나머지 부분은 수행되지 않고 및/또는 사용자 데이터를 사용하는 특정 블록은 수행되지 않는다. 일부 구현예에서 사용자 동의가 획득되지 않은 경우, 방법(200)의 블록은 사용자 데이터를 사용하지 않고 일반 또는 공개적으로 액세스가능하고 공개적으로 사용가능한 데이터를 사용하여 구현되어야 한다.
블록(208)에서, 보류 기간들의 데이터 구조 및/또는 모델은 한 명 이상의 사용자들의 이전 통화들(예를 들어, 전화 통화, 음성 통화, 또는 OTT(over-the-to) 서비스를 통화 걸려온 기타 통화들)에 관한 데이터에 기초하여 구축된다. 데이터 구조 또는 모델을 사용하여 이전 통화들이 이루어진 다양한 엔터티들에 대한 보류 기간들을 추정한다. 본 명세서에 언급된 바와 같이, 전화번호 또는 보이스 통신을 가능하게 하는 기타 주소 정보(예: 사용자 이름, 이메일 주소, 사용자 식별자 등, 전화번호 또는 기타 주소 정보에 매핑된 토큰(들), 전화번호 또는 기타 주소 정보의 해시 등)와 같은 엔터티와 연관된 식별자들을 통해 다양한 엔터티들에 대한 통화가 이루어진다. 엔터티들에는 다양한 개인, 조직, 기업, 그룹 등이 포함될 수 있다.
일부 구현예에서, 추정 보류 기간들은 사용자에 의해 이루어진 이전 통화들의 통화 특성들을 사용하여 결정되며 대상 엔터티(또는 콜 센터와 같은 연관 엔터티)로부터의 데이터가 필요하지 않다. 이러한 데이터에는 예를 들어, 대상 엔터티 또는 연관 엔터티에 의해 수행된 통화 및 에이전트의 내부 모니터링에 기초하여, 현재 또는 예상 에이전트 가용성을 나타내는 데이터 및/또는 대상 엔터티의 인간 에이전트와 대화하기 위해 기다리는 현재 보류 대기열에 있는 발신자의 수를 나타내는 데이터를 포함할 수 있다. 예를 들어, 대상 엔터티(또는 연관 엔터티)는 다양한 시간에 인간 에이전트 가용성을 추적하고 보류 중인 발신자 수를 추적할 수 있으며 이 데이터에 기초하여 보류 기간들의 추정치를 제공할 수 있다. 여기에 설명된 기술은 그러한 데이터를 사용할 필요가 없으며, 예를 들어, 여기에 설명된 기술은 사용자 장치의 사용을 기초로 하며, 현재 에이전트 가용성 데이터, 현재 보류 대기열 데이터, 또는 대상 엔터티 또는 연관 엔터티로부터 수신된 기타 데이터를 사용할 필요 없이, 이전 통화들과 관련된 데이터를 사용할 수 있다. 따라서, 설명된 기술은 사용자 통화 데이터가 이용가능한 임의의 통화, 예를 들어 현재 에이전트 가용성 데이터 또는 보류 대기열 데이터를 사용할 수 없거나 알려진 엔터티 및/또는 시간에서 이루어진 통화들에 대한 보류 기간들을 추정하는데 사용될 수 있다.
블록(208)은 대상 엔터티에 대한 통화를 시작하기 전에 그리고 아래에 기술된 바와 같이 현재 통화 및 예상 통화들에 대한 보류 기간들을 결정하고 디스플레이하기 전에 데이터 구조(들) 및/또는 모델(들)을 결정하고 저장하는 전처리 블록으로서 수행될 수 있다. 다양한 구현예에서 데이터 구조 또는 모델은 다양한 형태일 수 있다. 예를 들어, 일부 구현예에서, 데이터 구조는 다양한 엔터티의 특정 식별자(예: 전화번호 또는 기타 주소 정보) 및 통화 시간과 같은 기타 통화 특성들에 대한 추정 보류 기간들을 나타내는 테이블, 그래프 또는 기타 데이터 구조이다. 이러한 추정 보류 기간들은 한 명 이상의 사용자가 해당 엔터티에 대해 수행한 이전 통화들의 다양한 통화 특성들에 기초하여 결정된다. 일부 구현예에서는, 기계 학습 모델과 같은 모델이 구축될 수 있으며, 이는 사용자가 수행한 엔터티에 대한 이전 통화들의 통화 특성들을 나타내는 데이터에 기초하여 트레이닝될 수 있다. 추론 단계에서, 기계 학습 모델은 하나 이상의 통화 특성들의 입력들에 기초하여 추정 보류 기간을 출력할 수 있다.
보류 기간들의 데이터 구조 및 모델 구축의 일부 예는 도 3을 참조하여 아래에 설명되어 있다. 방법은 블록(210)으로 계속된다.
블록(210)에서, 통화 장치가 데이터 구조 및/또는 모델(또는 그 일부)을 통화 장치의 로컬 저장소에 저장할지 여부가 결정된다. 통화 장치는 엔터티에 전화를 걸기 위해 사용될 수 있는 장치(예를 들어, 도 1의 클라이언트 장치(120-126) 또는 기타 장치)이다. 일부 구현예에서, 통화 장치는 엔터티에 대한 추정 보류 기간들을 결정하기 위해 통화 장치의 로컬 저장소(예를 들어, 로컬 메모리 또는 기타 로컬 저장 장치)에 저장된 데이터 구조 또는 모델에 액세스할 수 있다. 일부 구현예에서, 테이블 또는 리스트와 같은 데이터 구조는 로컬로 저장될 수 있으며, 이는 특정 엔터티 또는 엔터티 식별자에 대해 이전에 결정된 보류 기간들을 저장한다. 통화 장치는 일반적으로 네트워크를 통해 원격 장치에 저장된 데이터에 액세스하는 것보다 이러한 데이터 구조에 더 빠르게 액세스할 수 있다.
일부 구현예에서, 기계 학습 모델, 계산 그래프, 또는 기타 모델이나 데이터 구성과 같은 모델이 통화 장치의 로컬 저장소에 저장될 수 있다. 통화 장치는 네트워크 연결을 통해 원격 장치가 제공하는 모델에 액세스(또는 모델의 사용 및 출력을 요청)할 필요 없이 모델에 입력을 제공하고 모델로부터 출력을 획득함으로써 이러한 로컬 모델에 액세스할 수 있다. 따라서 통화 장치는 통화 장치에 대해 적어도 부분적으로 로컬에서 보류 기간들을 결정하기 위해 데이터 구조 및/또는 모델을 사용하여 블록(212)에서 준비될 수 있다.
통화 장치가 데이터 구조 및/또는 모델을 로컬 저장소에 저장하지 않는 경우, 방법은 아래에 설명되는 블록(214)으로 계속된다. 예를 들어, 통화 장치는 도 4를 참조하여 설명되는 바와 같이 추정 보류 기간들을 결정해야 할 때 원격 장치의 데이터 또는 모델에 동적으로 액세스할 수 있다.
통화 장치가 데이터 구조 및/또는 모델(또는 그 일부)을 로컬 저장소에 저장하는 경우, 방법은 블록(212)으로 계속되며, 여기서 데이터 및/또는 하나 이상의 모델은 원격 장치로부터 네트워크를 통해 통화 장치에 의해 다운로드되고 통화 장치의 로컬 저장소에 저장된다. 예를 들어, 엔터티 및/또는 엔터티 식별자에 대한 추정 보류 기간들의 데이터 구조(또는 그 일부)는 서버, 다른 클라이언트 장치, 또는 네트워크를 통한 다른 장치와 같은 원격 장치로부터 획득될 수 있다. 일부 구현예에서, 원격 장치에서 이용가능한 엔터티 이름 및/또는 엔터티 식별자의 서브세트 또는 데이터 구조의 일부는 통화 장치에 저장하기 위해 획득될 수 있다. 예를 들어, 사용자가 전화를 거는 데 사용되는 가장 많이 사용되는 엔터티 식별자들(예: 가장 자주 사용됨, 특정 기간 내에 가장 자주 사용됨 및/또는 통화 장치와 동일한 지리적 위치 또는 지역에 있거나 사용자/통화 장치와 유사한 기타 특성을 갖는 사용자가 가장 자주 사용함)이 통화 장치에 다운로드될 수 있다. 일부 구현예에서, 예를 들어 통화 장치 상의 더 제한된 로컬 저장 장치에 적응하기 위해 완성된 데이터 구조의 일부가 통화 장치에 다운로드될 수 있다. 예를 들어, 사용자의 국가 또는 통화 장치가 현재 위치한 국가에 있는 엔터티 식별자에 대한 보류 기간들을 제공하는 데이터 구조의 일부가 다운로드될 수 있다.
추가적으로 또는 대안적으로, 모델 또는 모델의 일부는 네트워크를 통해 원격 장치로부터 통화 장치의 로컬 저장소로 다운로드될 수 있다. 모델(예를 들어, 기계 학습 모델)의 일부 예가 도 3을 참조하여 설명된다. 일부 구현예에서, 모델의 일부는 예를 들어 통화 장치 상의 더 제한된 로컬 저장 장치에 적응하기 위해 통화 장치에 다운로드될 수 있다. 예를 들어, 사용자 국가 또는 통화 장치가 현재 위치한 국가에 있는 엔터티 식별자에 대한 보류 기간들을 결정하는 기계 학습 모델 구조의 일부가 다운로드될 수 있다.
일부 구현예에서, 데이터 구조 및/또는 모델은 블록(208)에서 이러한 데이터 구조 및/또는 모델이 구축된 후에 통화 장치에 의해 수신될 수 있으며, 예를 들어 원격 장치 등에서 데이터 또는 모델이 업데이트되는 것(예: 사용자의 최근 통화들에 기초하여, 새로운 엔터티 또는 엔터티 식별자 추가 등)에 응답하여, 특정 기간 이후에 주기적으로 발생하는 특정 조건에 기초하여, 새로운 데이터 및/또는 새로운 모델 구성요소로 주기적으로 업데이트될 수 있다. 일부 구현예에서, 데이터 구조 및/또는 모델(또는 그 일부)은 통화 장치에서 구축될 수 있으며 다른 장치로부터 다운로드되지 않는다. 방법은 블록(214)으로 계속될 수 있다.
블록(214)에서, 대상 엔터티의 식별자가 통화 장치에 의해 획득된다. 식별자는 예를 들어, 전화번호나 기타 통화명, 기타 주소 정보(예: 사용자 이름, 이메일 주소, 사용자 식별자 등, 전화번호 또는 기타 주소 정보에 매핑된 토큰(들), 전화번호 또는 기타 주소 정보의 해시 등)일 수 있다. 엔터티 식별자를 사용하면 통화 장치가 대상 엔터티에 대한 통화를 시작할 수 있다. 엔터티 식별자는 다양한 구현예 및/또는 경우에서 여러 가지 방법 중 하나로 획득될 수 있다. 예를 들어, 대상 식별자는 통화 장치의 사용자로부터 사용자 입력을 통해 획득될 수 있다. 이러한 사용자 입력은 식별자를 입력하기 위해 사용자가 물리적 또는 가상 키패드의 키를 선택하는 것을 포함할 수 있다. 일부 예에서, 엔터티 식별자는 사용자가 통화 장치에 저장된 연락처 리스트에서 연락처 항목을 선택하는 것에 응답하여 획득될 수 있으며, 이는 해당 연락처 항목과 연관된 식별자가 저장소에서 자동으로 검색되어 사용을 위해 제공되게 한다. 예를 들어, 식별자는 통화를 시작하는 다이얼러 애플리케이션이나 통화를 시작할 수 있는 다른 애플리케이션과 같이 통화 장치에서 실행되는 애플리케이션에 입력되거나 제공될 수 있다. 일부 다른 예에서, 엔터티 식별자는 통화 장치에서 실행되는 다른 애플리케이션이나 네트워크를 통한 원격 장치로부터 획득될 수 있다.
일부 예에서, 엔터티 식별자는 예를 들어 식별자가 수신되는 시점에 통화를 시작하지 않고 대상 엔터티에 대한 하나 이상의 향후 통화들에 대해 디스플레이된 보류 기간들을 보기 위해, 통화와 독립적으로 수신된다. 다른 예에서, 엔터티 식별자는 현재 시간에 대상 엔터티에 대한 통화를 즉시 시작하기 위해 수신되며, 예를 들어 식별자는 다이얼러 애플리케이션에서 수신되고 통화를 시작하기 위한 컨트롤이 사용자에 의해 선택되거나 통화 장치에 의해 통화가 자동으로 시작된다. 일부 구현예에서, 엔터티 식별자는 대상 엔터티에 대한 통화가 시작되는 동안 또는 시작된 후에 (현재) 통화 중에 수신되며, 예를 들어 엔터티 식별자는 이미 진행 중일 수도 있는 현재 통화를 시작하거나 또는 이미 진행 중인 통화와는 다른 대상 엔터티에 대한 제2 통화를 시작하기 위해 통화 장치에 의해 수신된다. 대상 엔터티의 식별자를 획득하는 몇 가지 예는 도 4를 참조하여 아래에 설명되어 있다.
블록(216)에서는 통화가 진행 중인지 여부가 결정된다. 예를 들어, 일부 경우에 진행 중인 통화는 블록(214)에서 대상 엔터티의 식별자를 수신하는 것에 응답하여 시작된 통화일 수 있으며, 예를 들어 사용자가 통화를 시작하기 위해 애플리케이션의 연락처나 다른 컨트롤을 선택함으로써 시작된 통화일 수 있다. 일부 경우에 진행 중인 통화는 사용자에 의해 이전에 선택되었고, 예를 들어 블록(228)을 통해 방법(200)의 이전 반복에서 지정된 통화 시간에 시작된 지정된 통화일 수 있다. 진행 중인 통화가 없으면 방법은 아래에 설명된 블록(220)으로 계속된다.
진행 중인 통화(예를 들어, "현재 통화")가 있는 경우, 방법은 블록(218)으로 계속되며, 여기서 현재 통화와 관련된 추정 보류 기간이 결정되고 통화 장치에 디스플레이된다. 보류 기간은 통화 중에 인간 에이전트와 통화가 연결되기 전까지의, 예를 들어 인간 에이전트가 이용가능하고 통화 중에 사용자와 대화하기 위해 통화에 참여할 수 있기 전까지의 추정 시간량이다. 일부 구현예에서, 보류 기간은 데이터 구조로부터 검색될 수 있으며, 여기서 보류 기간은 통화 특성 데이터에 기초하여 이전에 결정되었다. 일부 구현예에서, 보류 기간은 블록(210, 212) 및 도 3을 참조하여 본 명세서에 설명된 바와 같이 하나 이상의 모델, 예를 들어 기계 학습 모델을 사용하여 결정될 수 있다. 데이터 구조 및/또는 모델은 통화 장치의 로컬 저장소에 저장될 수 있거나 네트워크 연결을 통해 원격 장치의 통화 장치에 의해 원격으로 액세스될 수 있다. 보류 기간들을 결정하는 일부 예가 도 3 및 도 4를 참조하여 설명된다. 예를 들어, 블록(218)에서 현재 통화에 대한 보류 기간은 후술되는 블록(220)에서 하나 이상의 예상 통화들에 대한 보류 기간들과 유사하게 결정될 수 있다.
일부 구현예에서, 통화 장치가 대상 엔터티에 의해 현재 통화에서 보류 상태에 놓였는지 여부가 결정될 수 있다. 예를 들어, 통화가 나중에 시작되고 통화 장치와 대상 엔터티 사이에 통화 연결이 설정되고, 사용자가 통화 중에 인간 에이전트와 대화할 것을 요청하거나 선택한 후, 통화 장치는 통화 중에 사용자와 즉시 대화할 수 있는 인간 에이전트가 없기 때문에 대상 엔터티에 의해, 예를 들어 대상 엔터티의 자동화 시스템에 의해 보류될 수 있다. 일부 구현예에서, 보류 기간은 현재 통화가 보류 중인 경우에만 블록(218)에서 결정되고 디스플레이될 수 있다. 일부 구현예에서, 현재 통화가 보류 중인지 여부에 관계없이 블록(218)에서 현재 통화에 대한 보류 기간이 결정되고 디스플레이될 수 있다. 일부 구현예에서, 사용자는 예를 들어 통화 장치의 사용자 인터페이스에 디스플레이된 컨트롤 또는 옵션을 선택함으로써 통화가 보류 중임을 통화 장치에 명시할 수 있다. 일부 구현예에서, 통화 장치는 예를 들어, 스피치 인식 기술을 사용하여 엔터티의 자동화 시스템이 특정 단어(예: "인간 에이전트가 10분 후에 전화를 받을 수 있습니다. 기다려주셔서 감사합니다.")를 통해 또는 보류 상태를 나타내는 음악 재생을 통해 통화가 보류 중임을 나타내는지 여부를 결정함으로써, 사용자 입력이나 개입 없이 통화가 보류 중인지 자동으로 검출할 수 있다.
블록(220)에서, 하나 이상의 추정 보류 기간들은 통화 특성 데이터 및/또는 모델에 기초하여 결정되며, 보류 기간들은 현재 시간보다 나중에 시작되는 통화 장치에 의한 대상 엔터티로의 하나 이상의 예상 통화들과 연관된다. 일부 구현예에서, 예상 통화들은 통화 장치에 의해 아직 시작되지 않은 통화이고 통화 장치에 의해 현재 진행 중인 어떠한 통화도 포함하지 않는 통화이다. 예를 들어, 하나 이상의 예상 통화들은 (블록(222)에서와 같이) 보류 기간들을 결정하고 디스플레이한 후 즉시 시작될 수 있거나, 또는 보류 기간들을 디스플레이한 후 몇 시간 또는 며칠 후와 같은 향후 통화 시간에 시작될 수 있다.
다수의 보류 기간들이 블록(220)에서 결정될 수 있으며, 각 보류 기간은 현재 시간보다 늦은 다른 예상 통화 시간에 시작되는 다른 예상 통화와 연관되어 있다. 보류 기간(들)은 통화 특성 데이터에 기초하여 결정되며, 이전에 결정된 후 저장된 데이터 구조로부터 검색될 수 있고/있거나 하나 이상의 모델, 예를 들어 기계 학습 모델에 기초하여 결정될 수 있다. 데이터 구조 및/또는 모델은 통화 장치의 로컬 저장소에 저장될 수 있거나 네트워크 연결을 통해 원격 장치의 통화 장치에 의해 원격으로 액세스될 수 있다. 예상 통화들에 대한 보류 기간들은 다양한 예에서, 임의의 통화를 시작하기 전(예: 통화 컨트롤 선택 전), 하나 이상의 현재 통화가 진행 중인 동안, 통화가 종료된 후 등에서 결정될 수 있다. 보류 기간들을 결정하는 일부 예는 도 4를 참조하여 설명된다.
블록(222)에서, 블록(220)에서 결정된 보류 기간(들)은 예를 들어 보류 기간(들)이 결정된 예상 통화(들)의 시작 전에, 통화 장치에 의해 디스플레이되게 된다. 예를 들어, 예상 통화들의 예상 시간들 및 이와 연관된 추정 보류 기간들은 다이얼러 애플리케이션의 인터페이스와 같은 통화 장치의 사용자 인터페이스 내에 또는 통화 장치에 디스플레이되는 메시지 또는 알림 내에 디스플레이될 수 있다. 통화 장치에서 통화가 아직 시작되지 않은 경우, 사용자가 통화를 시작하기 전에 예상 보류 기간들을 볼 수 있도록 다이얼러 애플리케이션 또는 다른 애플리케이션의 인터페이스에 (또는 운영 체제에 의한 알림으로서) 예상 통화 시간들 및 보류 기간들을 디스플레이할 수 있다. 블록(220)에서 보류 기간들이 결정될 때 통화 장치에서 현재 통화가 진행 중인 경우, 예상 통화 시간들 및 보류 기간들은 별도의 윈도우 또는 디스플레이 영역에 디스플레이될 수 있으며 및/또는 사용자가 통화 중에 통화 시간들 및 보류 기간들을 보기 위한 컨트롤을 선택하는 것에 응답하여 디스플레이될 수 있다. 일부 구현예에서, 보류 기간들의 그래픽 표현은 예를 들어 막대 그래프, 차트 또는 기타 표현으로 디스플레이될 수 있다. 보류 기간들을 디스플레이하는 일부 예는 도 5 내지 도 10을 참조하여 아래에서 설명된다.
블록(224)에서, 블록(218)에서 디스플레이된 예상 통화 시간들 중 하나 이상이 사용자에 의해 선택되었는지 여부가 결정된다. 일부 구현예에서, 블록(222)에서 디스플레이된 추정 보류 기간들과 연관된 디스플레이된 예상 통화 시간들은, 예를 들어 터치스크린 인터페이스, 보이스 명령 또는 기타 사용자 입력을 통해 사용자에 의해 선택가능하다. 블록(224)에서 예상 통화 시간들 중 어느 것도 선택되지 않은 경우(또는 일부 구현예에서, 선택가능하지 않은 경우), 방법은 아래에 설명된 블록(230)으로 계속된다. 이들 통화 시간들 중 하나 이상이 선택되면, 방법은 블록(226)으로 계속되며, 여기서 선택된 각각의 통화 시간과 연관된 예상 통화가 그 시간에 스케쥴링된다. 일부 구현예에서, 스케줄링은 애플리케이션, 예를 들어 다이얼러 애플리케이션 또는 알림을 제공할 수 있는 다른 애플리케이션에서 선택된 통화 시간을 스케줄링하는 것을 포함할 수 있다. 일부 구현예에서, 스케줄링은 통화 장치에서 실행되는 캘린더 애플리케이션에서 예상 통화 시간에 사용자 캘린더에 항목을 추가하는 것을 포함할 수 있다. 예를 들어, 사용자는 캘린더 애플리케이션이나 다른 애플리케이션을 열어 대상 엔터티와 대상 엔터티를 호출하기 위한 스케쥴링된 통화 시간을 보여주는 항목을 볼 수 있다. 일부 구현예에서는 (예를 들어, 사용자 인터페이스에 디스플레이된 컨트롤을 통해) 스케쥴링된 예상 통화를 다시 스케쥴링하는 옵션 또한 제공될 수 있다.
사용자가 대상 엔터티와의 통화를 시작하거나 통화 중인 경우, 일부 구현예에서 통화 장치는 통화 중 특정 지점에서 사용자가 보류 중인지 여부를 자동으로 검출할 수 있다. 예를 들어, 이는 대상 엔터티로부터 통화 장치에 의해 수신된 스피치 데이터의 검출에 기초하여, 스피치 데이터를 프로그래밍 방식으로 분석하는 것에 기초하여 검출될 수 있다. 일부 구현예에서, 통화 장치는 통화가 보류 중인 동안 예를 들어 에이전트 또는 사용자에 의해 발화된 특정 단어, 보류 음악의 중단 또는 자동화 보이스 등을 통해 인간 에이전트가 통화에 연결되었는지 여부를 검출하여, 그 통화가 더 이상 보류되지 않도록 할 수 있다. 일부 구현예에서, 통화 장치는, 예를 들어 사용자가 그러한 알림을 요청한 경우, 통화가 더 이상 보류되지 않고 인간 에이전트가 통화에 연결되어 있음을 나타내는 알림을 출력할 수 있다. 일부 구현예에서, 아래에 설명된 바와 같이, 통화 보류 기간은 저장되어 데이터 구조 또는 모델을 업데이트하는 데 사용될 수 있다. 방법은 블록(228)으로 계속될 수 있다.
블록(228)에서, 블록(226)에서 스케쥴링된 예상 통화의 통화 시간에서 (또는 통화 시간에 접근했을 때), 알림이 디스플레이되고/되거나 통화 장치에 의해 통화가 자동으로 시작된다. 예를 들어, 예상 통화 시간 전 미리 정해진 시간(예를 들어, 5분 또는 10분 전)에 예상 전화가 곧 도래할 것임을 사용자에게 알리는 알림이 디스플레이된다. 일부 구현예에서, 알림은 이 통화에 대한 추정 보류 기간을 포함할 수 있다(최초의 추정 보류 기간이 결정된 이후 추가 통화 특성 데이터로 데이터 구조 또는 모델이 업데이트된 경우 보류 기간이 업데이트될 수 있음). 일부 구현예에서, 사용자는 예를 들어 다이얼러 애플리케이션, 연락처 리스트 등을 통해 스케쥴링된 통화를 수동으로 시작할 수 있다. 일부 구현예에서, 예를 들어 사용자가 그렇게 하기 위한 선호도를 입력한 경우 스케쥴링된 통화는 통화 시간에 통화 장치에 의해 자동으로 시작될 수 있다. 예를 들어, 통화 장치의 다이얼러 또는 통화 애플리케이션은 사용자 입력이나 개입 없이 자동으로 엔터티 식별자에 전화를 걸 수 있고 시작 중인 통화를 사용자에게 알릴 수 있다. 방법은 블록(230)으로 계속될 수 있다.
블록(230)에서는 통화 장치의 통화가 종료되었는지 여부가 결정된다. 예를 들어, 어떤 경우에는 통화가 블록(216)에서 검출된 현재 진행 중인 통화일 수 있다. 어떤 경우에는 블록(222)에서 예상 보류 기간들이 디스플레이된 후에 통화가 시작되었을 수 있다. 어떤 경우에는 통화가 블록(228)에서 또는 그 이후에 시작된 예상 통화일 수 있다. 통화가 종료되지 않은 경우, 방법은 통화가 진행 중인지 및/또는 통화 장치가 추가 사용자 입력을 기다릴 수 있는지를 결정하기 위해 블록(216)으로 계속될 수 있다.
통화가 블록(230)에서 종료된 경우, 방법은 블록(232)으로 계속되며, 여기서 통화와 관련된 통화 특성 데이터가 획득되고, 적절한 경우 통화의 보류 기간들을 결정하기 위한 하나 이상의 기법이 이 데이터에 기초하여 업데이트된다. 예를 들어, 사용자 허가가 있는 경우, 통화 특성 데이터는 통화 대상 엔터티의 식별자, 통화 기간, 사용자가 통화에서 보류된 경우 통화 중 보류 기간, 통화 시간(요일, 날짜 등 포함), 통화가 휴일에 이루어졌는지 여부 및/또는 기타 통화 장치 컨텍스트 정보와 같은 특성들을 포함할 수 있다. 이 통화 특성 데이터는 데이터 구조를 업데이트하는 데 사용될 수 있고/있거나 사용자에 의해 허용된 경우, 여기에 설명된 보류 기간들을 결정하는 데 사용되는 모델을 업데이트하는 데 제공될 수 있다. 예를 들어, 데이터 구조가 대상 엔터티에 대한 평균 통화 기간 및/또는 평균 보류 기간을 포함하는 경우, 해당 평균은 종료된 통화의 통화 기간 및 보류 기간을 포함하는 데이터에 기초하여 조정될 수 있다. 모델은 종료된 통화 및 추가적인 사용자 통화들로부터의 데이터로 추가로 트레이닝되고 업데이트될 수 있다.
일부 구현예에서, 통화 중 또는 통화 후에 사용자로부터 피드백이 요청될 수 있다. 예를 들어, 통화 장치의 통화 기록에는 기록 내 종료된 통화와 연관된 옵션이나 컨트롤이 포함될 수 있으며, 여기서 사용자는 종료된 통화에 대한 피드백을 입력하기 위한 컨트롤을 선택할 수 있다. 예를 들어, 통화가 종료되는 동안 사용자가 보류 상태였던 보류 기간이 자동으로 결정되지 않은 경우, 사용자에게 해당 보류 기간을 입력하도록 요청할 수 있다. 일부 구현예에서, 통화 장치는 통화 장치에 의해 자동으로 결정된 대로(예를 들어, 본 명세서에 설명된 스피치 인식 기술에 기초하여) 보류 기간의 추정치를 제시하고 사용자에게 추정치를 확인하도록 요청하거나, 또는 그것이 부정확한 경우 추정치를 조정하도록 요청할 수 있다. 이러한 방식으로 이전 통화들에 대해 보다 정확한 보류 기간들을 결정할 수 있으므로 새로운 통화에 앞서 보류 기간 추정치들을 결정하는 정확도를 향상시킬 수 있다.
도 3은 일부 구현예에 따라, 이전 통화들에 기초하여 예상 통화들에 대한 보류 기간들을 추정하는 데 사용되는 데이터 구조 및/또는 모델을 구축하는 예시적인 방법(300)을 나타내는 흐름도이다. 예를 들어, 방법(300)은 사용자의 이전 통화들에 기초하여 보류 기간을 결정하기 위해 도 2의 블록(208) 또는 블록(208)의 일부로서 구현될 수 있다. 일부 구현예에서, 방법(300)은 예를 들어, 도 2를 참조하여 설명된 바와 같이, 예상 통화들 및/또는 현재 통화들에 대한 보류 기간들을 결정하기 위해 통화 장치(예를 들어, 클라이언트 장치 또는 다른 장치)에 의해 다운로드되거나 액세스될 수 있는 데이터 구조 및/또는 모델을 구축하기 위해, 통화 장치 이외의 서버 또는 다른 장치에 의해 수행될 수 있다. 일부 구현예에서, 방법(300)은 통화 장치, 예를 들어 클라이언트 장치에 의해 수행될 수 있거나, 또는 방법의 서로 다른 부분들이 각각 서버 장치 및 클라이언트 장치에 의해 수행될 수 있다.
방법은 블록(302)에서 시작된다. 블록(302)에서, 이전 통화들을 나타내는 데이터(이전 발신자들의 특정 사용자 허가를 받아 보류 기간들 결정, 모델 트레이닝 등의 목적으로 저장 및 이용가능하게 됨)가 획득된다. 예를 들어, 데이터는 한 명 이상의 사용자들이 다양한 엔터티로의 통화에 대한 통화 특성이 포함될 수 있으며, 여기서 통화 특성은 통화를 했던 사용자들과 분리되어 통화 특성만 알 수 있다. 예를 들어, 이전 통화들은 통신 네트워크를 통해 사용자 동의 하에 통화 특성이 획득되는 통화 장치를 사용하는 사용자 집단에 의해 이루어졌을 수 있다. 통화 특성은 예를 들어, 호출된 엔터티의 엔터티 식별자(예: 전화번호, 통화 주소 또는 이전 통화들을 통해 대상 엔터티에 연결하는 데 사용된 기타 식별자), 통화 기간(통화 시작 또는 통화 연결부터 종료 또는 연결 해제까지의 시간), 통화 시간(예: 시간 및/또는 분, 요일, 날짜), 각 통화가 휴일, 비즈니스 행사 시작일 등의 행사 기간 동안(및/또는 직전에) 이루어졌는지 여부, 각 통화가 평일인지 주말인지 여부 등을 포함할 수 있다.
일부 구현예에서, 획득된 통화 특성은 이전 통화들에서 발생한 보류 기간들, 예를 들어 이전 통화 동안 사용자가 보류 상태였던 기간을 포함할 수 있다. 예를 들어, 하나 이상의 통화 보류 기간들은 사용자 동의가 획득된 경우, 기계 학습 모델을 통환 스피치 인식 또는 기타 기법들을 사용하여 이전 통화에서 녹음된 오디오 데이터의 스피치 데이터 분석에 기초하여 통화 장치에 의해 (및/또는 연결된 원격 장치에 의해) 자동으로 결정될 수 있다. 예를 들어, 스피치 인식 기법은 통화 오디오에서 특정 단어를 검사하여 통화가 보류된 시기를 인식할 수 있고/또는 다른 기법은 통화 오디오에서 다른 오디오(예: 사용자가 보류 중임을 나타내는 자동 통화 응답기에 의해 발화된 단어, 통화가 보류 중임을 나타내는 음악 재생)를 검사할 수 있다. 이러한 기법은 또한 사용자가 더 이상 보류 상태가 아닐 때, 예를 들어 인간 에이전트가 통화가 연결되었음을 나타내기 위해 오디오 데이터에서 보류 음악이 중지되고 사용자가 응답한 통화에서 대상 엔터티로부터의 (다른) 보이스가 검출될 때, 또는 인간 에이전트를 나타내는 대상 엔터티로부터 발화된 단어(예: "안녕하세요"등)를 인식하는데 사용될 수 있다. 시스템이 발신자가 보류 상태였던 보류 기간의 시작과 해당 보류 기간의 종료를 결정한 후, 이전 통화에 대해 이러한 시점들 사이의 보류 기간을 결정할 수 있다.
또한, 일부 구현예에서, 이전 통화들의 하나 이상의 보류 기간들은 예를 들어 통화 중 또는 통화가 종료된 후(예를 들어, 도 2의 블록(232)와 유사) 사용자 피드백에 기초하여 결정될 수 있다. 예를 들어 사용자는 통화가 종료된 후 추정 보류 기간들을 통화 장치에 입력할 수 있다.
일부 구현예에서, 이전 통화들 중 하나 이상은 위에서 설명된 바와 같이 통화 오디오에서의 검출 또는 사용자 피드백에 의해 결정된 보류 기간들과 연관되지 않을 수 있다. 일부 구현예에서, 블록(306-314)에 대해 아래에서 설명되는 바와 같이, 그러한 보류 기간들을 갖지 않는 이전 호출들에 대해 보류 기간들이 추정될 수 있다. 방법은 블록(304)으로 계속될 수 있다.
블록(304)에서, 이미 지정된 보류 기간들을 갖지 않은 이전 통화들의 통화 기간들을 추정하기 위한 임계값(들) 및 함수(들)가 결정된다. 이러한 임계값 및 함수는 블록(302)에서 데이터가 획득된 이전 통화들 중 적어도 일부에 대한 보류 기간들을 추정하기 위해 아래 설명된 바와 같이 사용될 수 있다. 예를 들어, 통화들의 통화 기간이 특정 임계값을 초과하는 경우, 보류 기간은 일반적으로 통화들의 통화 시간과 상관관계가 있을 수 있다. 예를 들어, 짧은 통화 기간 동안 다양한 상황과 사용자 행동으로 인해 임계값 미만의 통화 기간들은 보류 기간을 나타내지 않을 수 있으며; 예를 들어, 사용자는 대기하는 대신 통화를 끊고 싶어할 수 있다. 임계 통화 기간을 사용하여 추정 보류 기간들을 결정하는 데 사용할 이전 통화들을 결정할 수 있다. 일부 구현예에서, 블록(304)에서 결정된 함수들은 통화 기간을 추정 보류 기간으로 변환하는 함수를 포함할 수 있다. 예를 들어, 이전 통화들의 통화 기간들(임계값 이상)과 이전 통화들에 대해 알려진 보류 기간들을 분석하여 통화 기간과 보류 기간 사이의 관계를 결정할 수 있다. 통화 기간을 보류 기간으로 변환하는 함수가 결정될 수 있다.
일부 구현예에서, 모든 이전 통화들에 대한 일반적인 적용을 위해 단일 임계값 및 단일 함수가 결정될 수 있다. 일부 구현예에서, 다수의 임계값 및/또는 함수가 결정될 수 있으며, 각 임계값 및/또는 함수는 특정 대상 엔터티를 갖는 통화들, 이전 통화들의 통화 시간들 등과 같은 특정 통화 특성을 갖는 통화들에 대해 수정, 커스터마이즈, 또는 특화될 수 있다. 예를 들어, 특정 엔터티에 대한 (이러한 통화 특성들이 알려진) 이전 통화들의 통화 기간들 및 보류 기간들에 기초하여, 특정 임계 기간을 초과하는 통화 기간들은 해당 특정 엔터티에 대한 통화들의 보류 기간들과 더 상관관계가 있으며, 해당 특정 임계값은 다른 엔터티에 대한 이전 통화들로부터 결정된 일반적인 임계값보다 크다는 것이 명백할 수 있다. 따라서, 특정 엔터티에 대한 임계 통화 기간은 일반적인 임계 통화 기간보다 더 높은 값으로 설정될 수 있다. 마찬가지로, 특정 엔터티에 대한 이전 통화들의 통화 특성을 통해, 통화 기간과 보류 기간 사이의 관계는 다른 엔터티에 대한 이전 콜들에 기초하여 일반적인 함수에 대해 결정된 관계와 특정 엔터티에 대해 상이할 수 있음이 명백할 수 있다. 따라서, 해당 관계에 특정한 함수가 결정되고 해당 특정 엔터티에 대한 통화들과 연관시킬 수 있다. 예를 들어, 일부 구현예에서, 하나 이상의 이러한 수정된 임계값은 특정 대상 엔터티 및/또는 다른 통화 특성과 연관된 임계값을 저장하는 데이터 구조로부터 검색될 수 있다. 방법은 블록(306)으로 계속될 수 있다.
블록(306)에서, 블록(302)에서 획득된 이전 통화들의 세트로부터 이전 통화가 선택된다. 선택된 이전 통화에는 연관된 보류 기간 데이터가 없다. 방법은 블록(308)으로 계속된다.
블록(308)에서, 선택된 이전 통화의 통화 기간이 임계 통화 기간보다 긴지 여부가 결정된다. 예를 들어, 임계 통화 기간은 통화가 통화 기간과 상관관계가 있는 보류 기간을 가질 가능성이 더 높은 통화 기간일 수 있다. 통화 기간이 임계 통화 기간보다 짧은 통화들의 경우 보류 기간은 통화 기간과 그다지 상관관계가 없다. 일부 구현예에서, 위에서 설명된 바와 같이, 임계 통화 기간은 예를 들어 선택된 이전 통화의 대상 엔터티에 관계없이, 블록(302)에서 획득된 모든 이전 통화들에 사용되는 일반적인 통화 기간이다. 일부 구현예에서, 임계 통화 기간은 블록(304)에 대해 위에서 설명된 바와 같이, 예를 들어 대상 엔터티 및/또는 선택된 이전 통화의 다른 통화 특성에 맞게 커스터마이즈된 수정된 임계값일 수 있다.
통화 기간이 임계 통화 기간보다 크거나 같으면, 방법은 아래에 설명되는 블록(312)으로 계속된다. 통화 기간이 임계 통화 기간보다 작으면, 방법은 블록(310)으로 계속되며, 여기서 선택된 이전 통화는 방법(300)의 목적을 위해 무시되는데, 예를 들어 해당 통화 특성은 대상 엔터티에 대한 추정 보류 기간을 결정하기 위해 무시되고 추정 보류 기간들을 제공하는 모델 트레이닝하기 위해 무시된다. 방법은 아래에 설명되는 블록(314)으로 계속될 수 있다.
블록(312)에서, 선택된 이전 통화의 통화 기간은 임계값보다 긴 것으로 확인되었으며, 따라서 그 통화 특성은 보류 기간을 결정하는 데 사용될 수 있다. 일부 구현예에서, 보류 기간 함수를 사용하여, 이전 통화의 대응하는 통화 기간에 기초하여 선택된 이전 통화에 대한 보류 기간이 추정된다. 이 함수는 통화 기간과 보류 기간의 관계에 기초하여 선택된 이전 통화에 대한 통화 기간을 추정 보류 기간으로 변환하는 것을 결정할 수 있다. 보류 기간 함수는 그러한 이전 통화들이 보류 기간과 높은 상관관계가 있는 것으로 밝혀졌기 때문에, 블록(308)에서 사용된 임계값을 초과하는 통화 기간을 갖는 이전 통화들에 적용된다. 일부 구현예에서, 함수는 사용자 통화들로부터 획득된 추가적인 이전 통화 데이터에 기초하여 시간이 지남에 따라 업데이트될 수 있다. 일부 예에서, 통화 기간과 보류 기간 사이의 관계는 선형 회귀이며, 보류 기간 함수는 추정 보류 기간을 획득하기 위해 통화 기간에 제1 인자를 곱하거나 제2 인자를 더함으로써 이 선형 회귀를 구현한다. 예를 들어, (초기) 함수는 (통화 기간 * 0.66 - 5.22)로 추정 보류 기간을 획득할 수 있다.
일부 구현예에서, 보류 기간 함수는, 예를 들어 블록(304)에 대해 위에서 설명된 바와 같이, 선택된 이전 통화의 대상 엔터티 또는 다른 통화 특성에 커스터마이즈되는, 수정되고 커스터마이즈된 함수일 수 있다. 예를 들어, 그러한 수정된 함수는 특정 대상 엔터티들 및/또는 다른 통화 특성들과 연관된 그러한 함수들을 저장하는 데이터 구조로부터 검색될 수 있다. 방법은 블록(314)으로 계속될 수 있다.
블록(314)에서는, 블록(302)에서 획득된 통화들의 세트 중 보류 기간과 아직 연관되지 않고 방법(300)에서 아직 프로세싱되지 않은 이전 통화들이 더 있는지 여부가 결정된다. 그렇다면, 방법은 프로세싱할 다른 이전 통화들을 선택하기 위해 블록(306)으로 계속된다. 블록(314)에서 결정된 바와 같이 프로세싱할 이전 통화들이 더 이상 없는 경우, 방법은 아래에 설명되는 블록(316)으로 계속된다.
일부 구현예에서, 이전 통화들에 대한 보류 기간들의 추정치들은 다수의 기법을 사용하여 결정될 수 있으며, 이러한 기법의 결과들은 결과들 사이의 차이(있는 경우)를 결정하기 위해 비교될 수 있다. 비교는 기법 중 하나에서 발생할 수 있는 오류를 나타낼 수 있으며, 예를 들어 결과가 크게 다른 경우 보류 기간을 다시 계산하거나 무시할 수 있다.
블록(316)에서, 데이터 구조 및/또는 모델 트레이닝은 이전 통화들의 통화 특성을 사용하여 결정되며, 여기서 통화 특성은 이전 통화들의 보류 기간들을 포함한다. 데이터 구조를 결정하고/하거나 모델을 트레이닝하는 데 사용되는 보류 기간들은 이전 통화들에 대해 (예를 들어, 자동 보류 검출 및/또는 사용자 피드백을 통해) 이전에 결정된 보류 기간들 뿐만 아니라 블록(312)에서 결정된 추정 보류 기간들을 포함할 수 있다. 결정된 데이터 구조 및/또는 트레이닝된 모델은 새로운 통화, 예를 들어 현재 통화 및 향후 통화에 대한 보류 기간들을 결정하는 데 사용될 수 있다.
일부 구현예에서, 각 대상 엔터티와 해당 대상 엔터티에 대한 각각의 추정 보류 기간을 포함하는 데이터를 저장하는 테이블, 리스트, 또는 기타 구조를 포함할 수 있는 데이터 구조가 결정될 수 있다. 예를 들어, 추정 보류 기간들 중 하나 이상은 대상 엔터티를 통해 데이터 구조에서 조회될 수 있으며 도 2에 대해 설명된 바와 같이 대상 엔터티에 대한 예상(또는 현재) 통화에 대한 추정 보류 기간으로서 제공될 수 있다. 일부 구현예에서, 테이블에 저장된 추정 보류 기간은 이전 통화들로부터 알려졌거나 추정된 대상 엔터티에 대한 모든 이전 보류 기간들의 평균으로 결정될 수 있다. 일부 구현예에서, 추정 보류 기간은 대안적으로 이전 보류 기간들의 조합, 예를 들어 평균, 중앙값 등일 수 있다. 일부 구현예에서, 데이터 구조는 통화 시간, 통화 요일, 통화가 휴일이나 다른 행사 중에 시작되는지 여부 등과 같이 예상 통화에 대한 보류 기간을 결정하기 위해 데이터 구조에서 조회될 수 있는 다양한 다른 통화 특성을 포함할 수 있다. 특정 통화 시간에 대한 보류 기간은 해당 통화 시간에 (예를 들어, 해당 통화 시간의 임계 기간 내) 시작된 이전 통화들의 보류 기간들에 기초할 수 있다. 예를 들어, 데이터 구조에 저장된 각 엔터티에 대해, 이러한 통화 특성 중 다수가 나열될 수 있으며(예: 다양한 시간, 요일 등), 보류 기간이 각 통화 특성 또는 통화 특성의 하나 이상의 서로 다른 조합들과 연관될 수 있다. 일부 예에서, 특정 통화 시간을 갖는 예상 통화에 대한 보류 기간을 결정하기 위해, 데이터 구조에서 통화 시간(및/또는 날짜)을 조회하여 해당 통화에 대한 추정 보류 기간을 결정한다.
일부 구현예에서, 특정 예상 통화들에 대한 보류 기간들은 이용가능한 이전 통화들 중 일부, 예를 들어 이용가능한 이전 통화들의 전체 세트의 서브세트의 통화 특성에 기초하여 결정될 수 있다. 예를 들어, 특정 통화 특성(예: 특정 통화 시간 또는 대상 엔터티)에 대한 보류 기간들은 표준 추정치를 벗어나는 것으로 알려져 있을 수 있다. 예를 들어, 비표준적인 사용자 통화 행동을 하는 날(예를 들어, 휴일 또는 휴일 전날)의 특정 통화 시간은, 결정되는 보류 기간의 통화 시간의 임계 시간 기간 내의 통화들과 같이, 보다 최근의 이전 통화들의 통화 특성에 기초하여 결정될 수 있다. 예를 들어, 사용된 이전 통화들은 특정 통화 시간까지 지난 1시간 내에 시작되었거나 발생했을 수 있다.
일부 구현예에서, 하나 이상의 모델들은 이전 통화들 또는 그 서브세트의 통화 특성에 기초하여 트레이닝될 수 있다. 예를 들어, 일부 구현예에서, 모델은 기계 학습 모델, 예를 들어 네트워크 아키텍처에 따라 배열된 하나 이상의 노드를 갖는 신경 네트워크, 예를 들어 하나 이상의 레이어에 배열되고, 네트워크 아키텍처를 통해 연결된 다양한 노드 및 연관 가중치들을 갖는 신경 네트워크이다. 예를 들어, 모델의 트레이닝 단계에서, 트레이닝 데이터를 사용하여 모델을 트레이닝할 수 있으며, 그 후 추론 단계(예: 도 2에서 설명된 바와 같이)에서, 트레이닝된 모델은 입력 데이터에 기초하여 출력을 제공할 수 있다. 일부 구현예에서, 모델은 예를 들어, 테스트 랩 또는 기타 설정의 테스트 장치에서 오프라인으로 트레이닝될 수 있으며, 트레이닝된 모델은 모델을 실행하는 서버 또는 통화 장치에 제공될 수 있다. 일부 구현예에서 사용자 허가를 받아 연합 학습을 활용하여 하나 이상의 트레이닝된 모델을 업데이트할 수 있으며, 예를 들어 개별 장치가 각각 로컬 모델 트레이닝을 수행할 수 있고 모델에 대한 업데이트는 모델의 하나 이상의 중앙 버전을 업데이트하기 위해 집계될 수 있다. 모델에 포함될 수 있는 특징의 추가 예는 도 11과 관련하여 아래에 설명된다.
기계 학습 모델에 대한 트레이닝 데이터는 위에서 설명된 바와 같이 이전 통화들의 사용자가 허용한 통화 특성, 예를 들어 호출된 엔터티의 식별자, 통화 기간, 통화 시간(예: 시간 및/또는 분, 요일 등), 각 통화가 평일에 이루어졌는지 주말에 이루어졌는지 여부, 각 통화가 행사(휴일, 비즈니스 행사 개막일 등) 중에 이루어졌는지 여부를 포함할 수 있다. 일부 구현예에서, 모델은 트레이닝 데이터에 의해 트레이닝되어 특정 통화 시간 또는 다른 특정 통화 특성을 갖는 통화들에 대한 보류 기간들을 포함하여 이전 통화들이 트레이닝 데이터로서 획득된 임의의 통화 시간 또는 대상 엔터티에 대한 보류 기간들을 제공한다. 예를 들어, 입력이 사용자의 통화량이 다른 대부분의 날보다 높을 수 있는 휴일 전날에 발생하는 예상 통화 시간을 나타내는 경우 모델은 더 긴 추정 보류 시간들을 출력하도록 트레이닝될 수 있다.
도 4는 일부 구현예에 따른, 대상 엔터티로의 예상 통화들에 대한 보류 기간들을 결정하기 위한 예시적인 방법(400)을 나타내는 흐름도이다. 예를 들어, 방법(400)은 식별자가 통화 장치에 의해 획득되는 도 2의 블록(214)에서 및/또는 대상 엔터티로의 예상 통화들에 대한 보류 기간들이 결정되는 도 2의 블록(220)에서 구현될 수 있다.
방법은 블록(402)에서 시작된다. 블록(402)에서, 추정 보류 기간들이 결정될 예상 통화들의 통화 시간들이 결정된다. 여기에는 보류 기간들이 결정될 예상 통화들의 특정 통화 시간들 및/또는 통화 수(양)를 결정하는 것이 포함될 수 있다. 결정될 각 보류 기간은 다른 예상 통화 시간에 시작되는 다른 예상 통화와 연관될 수 있다. 예상 통화들의 통화 시간들은 다양한 요인에 기초할 수 있다. 예를 들어, 사용자 설정 또는 선호도는 예상 통화들의 수 또는 해당 예상 통화들의 보류 기간들 및/또는 통화 시간들을 나타내기 위해 사용자에 의해 제공되었을 수 있다(예를 들어, 다이얼러 애플리케이션 또는 다른 애플리케이션과 같은 통화 장치에 지정됨). 그러한 선호도는 예를 들어, 서로 다른 예상 날짜, 하루 (예를 들어, 오늘) 모두, 매일 특정 기간 또는 시간, 특정 요일 등에 통화 시간들을 갖는 예상 통화들에 대해 보류 기간들이 제공되는 지 여부를 나타낼 수 있다. 일부 구현예에서, 예상 통화들의 수 및 통화 시간들은 다른 조건, 예를 들어 사용자의 캘린더 내 데이터(예: 사용자가 전화를 걸 수 있는 시간 및/또는 날짜를 나타냄), 대상 엔터티의 알려진 업무 시간 등에 기초할 수 있다.
다양한 예에서, 예상 통화들에 대해 결정된 통화 시간들은 다양한 시간일 수 있다. 예를 들어, 결정된 통화 시간들은 표준 주중 및/또는 주말 동안 대상 엔터티의 업무 시간에 걸쳐 있을 수 있다. 추가 예에서, 결정된 통화 시간들은 하루 동안 규칙적으로, 예를 들어 매시간, 매 30분마다 등에 걸쳐 간격을 둘 수 있다. 일부 구현예에서, 결정된 통화 시간들은 현재 날짜에 대한 대상 엔터티의 남은 업무 시간에 걸쳐 있다(예를 들어, 현재 시간이 대상 엔터티의 업무 시간이 거의 끝나가는 시점인 경우, 예상 통화들은 남은 업무 시간 동안의 통화들 및 다음 날의 통화들을 포함할 수 있다). 일부 구현예에서, 사용자 동의가 획득된 경우, 결정된 통화 시간들은 사용자가 수행한 대상 엔터티로의 이전 통화들의 이력(예: 특성)에 기초하는, 매일 특정 시간들이 될 수 있다. 예를 들어, 사용자가 이전에 오전 9시에서 오전 11시 사이에만 대상 엔터티에게 전화를 걸었다면, 해당 기간 내의 통화 시간들이 예상 통화들에 대해 결정될 수 있다(그리고, 예를 들어 다른 통화 시간들은 결정되지 않거나 사용자가 다른 통화 시간들을 요청하는 경우 나중에 결정된다). 추가 예에서, 예상 통화 시간들은 특정 시간 또는 특정 기간에서의 이전 통화 빈도에 기초하여 결정될 수 있다. 예를 들어, 사용자가 특정 기간(예: 다른 날)에 수행한 통화 수가 임계값을 초과하는 경우 그 기간 내의 예상 통화 시간들이 결정될 수 있다. 다른 예에서, 적어도 최소 또는 임계 통화 기간을 갖는 대상 엔터티로의 이전 통화들은, 예를 들어 위의 예 및 구현예에서, 통화 시간 결정 시 카운트될 수 있으며 및/또는 임계 기간 미만의 이전 통화들은 이러한 통화 시간 결정에서 무시될 수 있다.
일부 구현예에서, 위에서 설명된 이전에 호출된 기간 내 및/또는 다른 특성을 갖는 결정된 통화 시간들은 다른 결정된 통화 시간들보다 더 높은 우선순위를 갖도록 지정될 수 있다(일부 구현예에서는, 특정 수의 우선순위가 낮은 특정 통화 시간들 또한, 사용자를 위한 추가 옵션으로서 결정되어 제공될 수 있음). 예를 들어, 우선순위가 높은 통화 시간들과 연관된 보류 기간들은 보류 기간들의 초기 또는 디폴트 디스플레이의 일부가 될 수 있으며, 우선순위가 낮은 보류 기간들은 기본적으로 숨겨지고 사용자로부터 받은 사용자 입력에 의해 명령되는 경우 디스플레이될 수 있다. 추가 예에서, 더 높은 우선순위의 통화 시간들과 연관된 보류 기간들이 디스플레이될 수 있으며, 디스플레이 영역에 정보를 디스플레이할 영역이 제한되어 있는 경우, 기타 또는 더 낮은 우선순위의 보류 기간들은 디스플레이되지 않을 수 있다. 일부 구현예에서, 통화 시간들 및 보류 기간들은 위에서 설명된 하나 이상의 요소에 기초하여 (예를 들어, 대상 엔터티에 대한 통화 시간들의 사용자 기록에서 이전 통화들의 특성에 기초하여) 순위가 매겨질 수 있으며, 결정된 통화 시간들의 세트 중 상위 X 개의 가장 높은 순위의 통화 시간들 / 보류 기간들이 디스플레이되며, 여기서 X는 5, 10 등이 될 수 있으며 낮은 순위의 통화 시간들 및 보류 기간들은 디스플레이되지 않는다. 방법은 블록(404)으로 계속된다.
블록(404)에서는, 사용자가 예를 들어 대상 엔터티로의 통화를 시작하기 위해, 대상 엔터티의 엔터티 식별자를 현재 통화 장치에 입력하고 있는지 여부가 결정된다. 예를 들어, 엔터티 식별자는 도 2의 블록(214)에서 획득되는 과정에 있을 수 있으며, 사용자는 아직 엔터티 식별자 입력을 완성하지 않았다. 사용자가 현재 엔터티 식별자를 입력하고 있지 않은 경우, 방법은 아래에 설명된 블록(412)으로 계속된다.
사용자가 현재 엔터티 식별자를 입력하고 있는 경우, 방법은 블록(406)으로 계속되며, 여기서 입력이 완성되거나 엔터티 식별자를 획득하기 전에 대상 엔터티에 대한 후보 보류 기간들을 프리페치할지(pre-fetch)할지 여부가 결정된다. 예를 들어, 일부 구현예에서, 수신된 엔터티 식별자의 일부는 완성되었을 때 다수의 후보 엔터티 식별자들 중 일부가 될 수 있는 프리픽스(prefix)로 간주될 수 있다. 이러한 후보 식별자들과 연관된 후보 보류 기간들은 통화 장치에 의해 완성된 식별자가 획득하기 전에 원격 장치에서 프리페치되어 통화 장치의 로컬 저장소에 저장될 수 있다. 프리페칭을 사용하면 보류 기간들이 로컬에 저장된 설정된 후보 보류 기간들 중에서 선택되기 때문에, 완성된 식별자에 대한 보류 기간이 식별자가 완성된 후 빠르게 통화 장치에 의해 디스플레이될 수 있다. 예를 들어, 이러한 프리페칭은 통화 장치가 서버나 다른 장치와 같은 원격 장치로부터 예상 통화들에 대한 보류 기간들을 획득하는 일부 구현예에서 바람직할 수 있으며, 여기서 보류 기간들을 결정하기 위한 데이터 구조 또는 모델은 통화 장치의 로컬 저장소에 저장되지 않는다. 보류 기간들이 통화 장치의 로컬 저장소에 저장된 데이터 구조 또는 모델을 통해 결정될 수 있는 구현예에서, 보류 기간들을 결정하는 것은 엔터티 식별자가 완성되기 전에 후보 보류 기간들을 프리페칭하는 것이 필요하지 않을 정도로 충분히 빠를 수 있다.
일부 구현예에서, 완성된 식별자의 임계 부분이 수신된 경우, 후보 보류 기간들의 프리페칭이 수행된다. 일부 예에서, 완성된 엔터티 식별자가 10자리라면, 프리페칭은 부분 식별자의 8번째(또는 대안적으로, 9번째) 숫자가 수신되기 전이 아니라 그 후에 수행될 수 있다. 이는 완성된 식별자가 수신된 후 매칭 보류 기간을 결정하기에 충분한 비교적 짧은 시간에 호출 장치에서 수신될 수 있는 데이터의 양으로 후보의 수가 좁아지는 것을 허용한다(아래 설명됨).
후보 보류 기간들의 프리페칭이 수행되지 않으면, 방법은 아래에서 설명되는 블록(412)으로 계속된다. 후보 보류 기간들의 프리페칭이 수행되어야 하는 경우, 방법은 블록(408)으로 계속되며, 여기서 후보 보류 기간들은 사용자에 의해 입력된 부분 엔터티 식별자에 기초하여 서버와 같은 원격 장치로부터 프리페치된다. 예를 들어, 통화 장치는 원격 장치에 요청을 보내고 블록(404)에서 수신된 부분 식별자와 일치하는 후보 엔터티 식별자에 대한 후보 보류 기간들을 수신할 수 있다. 원격 장치는 예를 들어, 도 3에서 위에서 설명된 것과 유사하게 데이터 구조 및/또는 모델(들)을 사용하여 보류 기간들을 결정할 수 있고, 보류 기간들을 네트워크를 통해 통화 장치에 전송할 수 있다.
일부 구현예에서, 예를 들어 통화 장치 또는 원격 장치에 의해 더 많은 양의 후보 보류 기간들의 서브세트가 통화 장치에 의해 프리페치되도록 결정된다. 예를 들어, 후보 보류 기간들의 서브세트는 하나 이상의 인자에 기초하여 결정된 바와 같이, 사용자에 의해 입력될 가능성이 가장 높은 식별자인 엔터티 식별자와 연관될 수 있다. 예를 들어, 가장 가능성이 높은 식별자는 사용자가 이전에 호출한 엔터티를 나타내는 이력 데이터에 기초할 수 있으며, 예를 들어 여기서 사용자가 이전에 호출한 가장 빈번한 및/또는 가장 최근 엔터티의 식별자는 수신된 식별자일 가능성이 가장 높은 것으로 간주된다. 일부 구현예에서는, 사용자의 현재 또는 최근 대화나 메시지를 조사하여 어떤 엔터티가 언급되었는지 결정 (및/또는 특정 엔터티에 의해 제공되는 서비스나 제품 등 특정 엔터티와 관련된 주제가 언급되었는지 여부를 결정)할 수 있으므로, 언급된 엔터티의 식별자(들)는 수신된 식별자와 일치할 가능성이 있는 후보 식별자들로서 서브세트에 포함되도록 선택된다. 이러한 가능성 있는 식별자와 관련된 보류 기간들은 사용자에게 디스플레이될 가능성이 가장 높은 보류 기간들 중 하나로 선택되어 통화 장치에 프리페치된다. 방법은 블록(410)으로 계속된다.
블록(410)에서, 완성된 엔터티 식별자가 수신되었고(예를 들어, 사용자가 대상 엔터티의 식별자를 통화 장치에 입력하는 것을 완료함) 완성된 식별자와 일치하는 보류 기간(들)이 후보 보류 기간들로부터 선택된다. 예를 들어 완성된 식별자와 일치하지 않는 후보 보류 기간들은 삭제될 수 있다. 일부 예에서, 사용자가 블록(404)에서 전화번호의 처음 9자리를 입력한 경우, 해당 9자리 숫자와 일치하는 엔터티 식별자에 대한 후보 보류 기간들이 블록(408)에서 통화 장치로 프리페치될 수 있고, 블록(410)에서 마지막 그리고10번째 숫자가 수신되었으며 해당 엔터티 식별자와 연관된 보류 기간들이 선택되었다. 방법은 전술한 바와 같이 선택된 보류 기간들을 디스플레이하기 위해 도 2의 블록(222)으로 계속될 수 있다.
블록(412)에서, (완성된) 엔터티 식별자가 수신된다. 예를 들어, 사용자가 대상 엔터티의 엔터티 식별자 입력을 수동으로 완료했거나 엔터티 식별자가 통화 장치에서 실행되는 애플리케이션과 같은 다른 소스로부터 수신되었을 수 있다(예를 들어, 사용자의 연락처에 있는 연락처 항목이 사용자에 의해 선택되었거나, 디스플레이된 전화번호 또는 기타 통화 식별자가 애플리케이션에서 사용자에 의해 선택됨). 방법은 블록(414)으로 계속될 수 있다.
블록(414)에서는 통화 특성 데이터가 통화 장치의 로컬 저장소에 캐싱되어 있는지 여부가 결정된다. 예를 들어, 통화 특성 데이터는 해당 식별자들에 대해 추정된 엔터티 식별자들 및 보류 기간(들)을 저장하는 하나 이상의 데이터 구조로 제공될 수 있으며, 그 예는 도 3의 블록(316)을 참조하여 설명된다. 통화 데이터가 통화 장치에 로컬로 캐싱되지 않은 경우, 방법은 아래에 설명된 블록(418)으로 계속된다. 통화 데이터가 통화 장치에 로컬로 캐싱된 경우, 방법은 블록(416)으로 계속되며, 블록(402)에서 결정된 예상 통화들에 대한 보류 기간(들)을 결정하기 위해 대상 엔터티의 엔터티 식별자 및 예상 통화 시간(들)을 데이터 구조(캐싱된 통화 특성 데이터)에서 조회한다. 방법은 전술한 바와 같이 결정된 보류 기간들을 디스플레이하기 위해 도 2의 블록(222)으로 계속될 수 있다.
블록(418)에서, 보류 기간들을 결정하기 위한 모델이 통화 장치의 로컬 저장소에 저장되어 있는지 여부가 결정된다. 예를 들어, 모델은 통화 특성, 예를 들어 대상 엔터티, 통화 시간 등과 같은 입력에 기초하여 추정 보류 기간들을 출력하도록 트레이닝된 기계 학습 모델일 수 있으며, 그 예는 도 3의 블록(316)을 참조하여 설명된다. 모델이 통화 장치에 로컬로 저장되지 않은 경우, 방법은 아래에 설명된 블록(422)으로 계속된다. 모델이 통화 장치에 로컬로 저장되어 있는 경우, 방법은 블록(420)으로 계속되며, 대상 엔터티의 엔터티 식별자, 예상 통화 시간(들) 및/또는 기타 통화 특성과 같은 예상 통화들의 통화 특성이 모델에 입력되고, 블록(402)에서 결정된 예상 통화들에 대한 보류 기간(들)을 포함하는 모델의 출력이 획득된다. 방법은 전술한 바와 같이 결정된 보류 기간들을 디스플레이하기 위해 도 2의 블록(222)으로 계속될 수 있다.
블록(422)에서는, 블록(402)에서 결정된 예상 통화의 하나 이상의 통화 특성이 서버와 같은 원격 장치로 전송되고 해당 통화에 대한 보류 기간들이 원격 장치로부터 획득된다. 예를 들어, 통화 장치는 대상 엔터티의 식별자와 블록(402)에서 결정된 예상 통화 시간들뿐만 아니라 보류 기간들을 결정하는 데 사용될 수 있는 기타 정보(예를 들어, 통화 시간들이 휴일에 발생하는 지 여부, 등)를 원격 장치에 보낼 수 있다. 원격 장치는 예를 들어, 도 3에서 위에서 설명된 것과 유사하게 데이터 구조 및/또는 모델(들)을 사용하여 보류 기간들을 결정할 수 있고, 결정된 보류 기간들을 네트워크를 통해 통화 장치에 전송할 수 있다. 방법은 전술한 바와 같이 결정된 보류 기간들을 디스플레이하기 위해 도 2의 블록(222)으로 계속될 수 있다.
일부 구현예에서, 블록(420) 또는 블록(422)에서 사용되는 것과 같은 트레이닝된 모델은 예를 들어 도 2의 블록(232)을 참조하여 위에서 설명된 바와 같이 추가 데이터로 추가로 트레이닝되거나 업데이트될 수 있다. 모델은 통화 장치에서 로컬로 트레이닝될 수 있으며, 원격 장치의 모델은 통화 장치로부터 수신된 데이터에 기초하여 트레이닝될 수 있다.
다양한 구현예에서, 블록 중 하나 이상이 방법(400)에서 생략될 수 있는데, 예를 들어 해당 블록의 특정 특징이 특정 구현예에서 제공되지 않는 경우이다. 예를 들어, 모델이 보류 기간들을 결정하기 위해 장치에 의해 로컬에서 사용되고 보류 기간들을 결정하기 위해 설명된 다른 기법이 사용되지 않는 일부 구현예에서, 블록(404-418 및 422)은 생략될 수 있다. 유사하게, 모델이 사용되지 않는 일부 구현예에서, 블록(418 및 420)은 생략될 수 있다.
본 명세서에 설명된 방법, 블록 및 동작은 도 2 내지 도 4에 도시되거나 설명된 것과 다른 순서로 수행될 수 있고, 및/또는 적절한 경우 다른 블록 또는 동작과 동시에 (부분적으로 또는 완전히) 수행될 수 있다. 예를 들어, 도 2의 블록(216 및 218)은 블록(220-226) 이전, 이후 또는 적어도 부분적으로 동시에 수행될 수 있다. 도 2의 블록(230)은 방법(200)에서 다양한 시점에 수행될 수 있다. 다른 예에서, 블록(402, 412 및 416)은 적어도 부분적으로 동시에 또는 도 4의 예에 도시된 것과 다른 순서로 수행될 수 있다. 일부 블록이나 동작은 데이터의 한 부분에 대해 수행되고 나중에 데이터의 다른 부분에 대해 다시 수행될 수 있다. 설명된 모든 블록과 동작을 다양한 구현예에서 수행할 필요는 없다. 일부 구현예에서, 블록 및 동작은 방법에서 다른 순서로 및/또는 다른 시간에 여러 번 수행될 수 있다.
본 명세서에 개시된 하나 이상의 방법은 여러 환경 및 플랫폼에서 동작할 수 있으며, 예를 들어 임의의 유형의 컴퓨팅 장치에서 실행될 수 있는 독립형 컴퓨터 프로그램, 모바일 컴퓨팅에서 실행되는 모바일 애플리케이션("앱") 등으로 동작할 수 있다.
본 명세서에 설명된 하나 이상의 방법(예: 200, 300 및/또는 400)은 모든 유형의 컴퓨팅 장치에서 실행될 수 있는 독립형 프로그램, 웹 브라우저에서 실행되는 프로그램, 모바일 컴퓨팅 장치(예: 휴대폰, 스마트폰, 태블릿 컴퓨터, 손목시계, 암밴드, 보석류, 모자, 가상 현실 고글 또는 안경, 증강 현실 고글 또는 안경, 헤드 마운트 디스플레이 등과 같은 웨어러블 장치, 노트북 컴퓨터 등)에서 실행되는 모바일 애플리케이션 ("앱")에서 실행될 수 있다. 일례에서, 클라이언트/서버 아키텍처가 사용될 수 있는데, 예를 들어 모바일 컴퓨팅 장치(클라이언트 장치로서)는 사용자 입력 데이터를 서버 장치에 보내고 서버로부터 출력을 위한(예를 들어 디스플레이를 위한) 최종 출력 데이터를 수신한다. 다른 예에서, 방법의 모든 계산은 모바일 컴퓨팅 장치의 모바일 앱(및/또는 다른 앱) 내에서 수행될 수 있다. 다른 예에서, 계산은 모바일 컴퓨팅 장치와 하나 이상의 서버 장치 사이에 분할될 수 있다.
일례에서, 클라이언트/서버 아키텍처가 사용될 수 있는데, 예를 들어 모바일 컴퓨팅 장치(클라이언트 장치로서)는 사용자 입력 데이터를 서버 장치에 보내고 서버로부터 출력을 위한(예를 들어 디스플레이를 위한) 최종 출력 데이터를 수신한다. 다른 예에서, 모든 계산은 모바일 컴퓨팅 장치의 모바일 앱(및/또는 다른 앱) 내에서 수행될 수 있다. 다른 예에서, 계산은 모바일 컴퓨팅 장치와 하나 이상의 서버 장치 사이에 분할될 수 있다.
본 명세서에 설명된 방법은 컴퓨터에서 실행될 수 있는 컴퓨터 프로그램 명령 또는 코드에 의해 구현될 수 있다. 예를 들어, 코드는 하나 이상의 디지털 프로세서(예: 마이크로프로세서 또는 기타 프로세싱 회로)에 의해 구현될 수 있고 반도체 또는 솔리드 스테이트 메모리, 자기 테이프, 이동식 컴퓨터 디스켓, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 플래시 메모리, 강성 자기 디스크, 광 디스크, 솔리드 스테이트 메모리 드라이브 등을 포함하는 자기, 광학, 전자기 또는 반도체 저장 매체 등과 같은 비일시적 컴퓨터 판독가능 매체(예: 저장 매체)를 포함하는 컴퓨터 프로그램 제품에 저장될 수 있다. 프로그램 명령어들은 또한 예를 들어 서버(예를 들어, 분산 시스템 및/또는 클라우드 컴퓨팅 시스템)로부터 전달되는 SaaS(Software as a Service) 형태의 전자 신호에 포함되어 제공될 수 있다. 대안적으로, 하나 이상의 방법은 하드웨어(논리 게이트 등)로 구현되거나 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 예시적인 하드웨어는 프로그래밍가능 프로세서(예: 필드 프로그래밍가능 게이트 어레이(FPGA), 복합 프로그래밍가능 논리 장치), 범용 프로세서, 그래픽 프로세서, 애플리케이션 특정 집적 회로(ASIC) 등이 될 수 있다. 하나 이상의 방법은 시스템에서 실행되는 애플리케이션의 일부 또는 구성 요소로 수행되거나, 다른 애플리케이션 및 운영 체제와 함께 실행되는 애플리케이션 또는 소프트웨어로 수행될 수 있다.
도 5는 일부 구현예에 따라 통화에 대한 보류 기간들이 디스플레이될 수 있는 통화 장치의 디스플레이 화면에 의해 디스플레이되는 예시적인 사용자 인터페이스(500)의 개략도이다. 예를 들어, 인터페이스(500)는 클라이언트 장치, 예를 들어 도 1에 도시된 클라이언트 장치(120-126) 중 하나 또는 서버 장치, 예를 들어 서버 시스템(102)과 같은 다른 장치의 디스플레이 장치에 의해 터치스크린 상에 디스플레이될 수 있다.
일부 구현예에서, 사용자 인터페이스(500)는 다른 장치에 대한 통화를 시작하고, 다른 장치로부터 들어오는 통화에 응답하고, 통화 연결을 통해 다른 장치와 통신하는 통화 애플리케이션 프로그램과 연관될 수 있다. 이 예에서는 대상 엔터티의 이름(502)이 디스플레이되며, 대상 엔터티는 사용자에 의해 선택되었다. 대상 엔터티의 엔터티 식별자(504)는 엔터티 이름(502) 근처에 디스플레이된다. 표준 숫자 키패드(508), 식별자 입력 필드(510) 및 통화 컨트롤(512)을 포함하는 통화 인터페이스(506)도 디스플레이된다. 숫자 키패드(508)의 키는 입력 필드(510)에 식별자(514)를 입력하기 위해 사용자에 의해(예를 들어, 터치스크린 또는 다른 입력 장치를 통해) 선택될 수 있으며, 예를 들어 한 번에 한 문자 또는 다른 구현예에서는 다수의 문자들을 입력할 수 있다. 일부 구현예에서, 식별자(514)는 예를 들어 사용자가 다른 애플리케이션(예를 들어 지도 애플리케이션, 웹 브라우저 등)로부터 대상 엔터티에게 전화를 걸도록 선택하는 것에 응답하여 통화 장치에 의해 입력 필드(510)에 자동으로 입력될 수 있으며, 이는 인터페이스(500)가 통화 장치에 의해 디스플레이되게 한다. 통화 컨트롤(512)은 사용자에 의해 선택되면 통화 장치가 대상 엔터티의 식별자(514)를 다이얼링하고 대상 엔터티에 대한 통화를 시작하게 할 수 있다.
사용자 인터페이스(500)는 또한 추정 보류 기간들과 관련된 관련된 정보가 디스플레이될 수 있는, 보류 기간 디스플레이 영역(520)을 포함할 수 있다. 이 예에서, 추정 보류 기간이 엔터티 식별자(504/514)에 대해 결정되는 과정에 있음을 나타내는 메시지(522)가 디스플레이 영역(520)에 디스플레이된다. 이는 예를 들어 식별자(514)를 사용하여 대상 엔터티로 통화가 시작되기 전(그리고 이 예에서는 통화 컨트롤(512)이 사용자에 의해 선택되기 전)의 보류 기간들에 대한 통화 전 결정이다. 일부 구현예에서, 메시지(524)는 또한 예를 들어 보류 기간들이 결정되고 있음을 나타내기 위해 통화 컨트롤(512)에 디스플레이되거나 통화 컨트롤(512)과 연관될 수도 있다.
도 6은 일부 구현예에 따라, 통화 장치에 의해 결정된 후 보류 기간들이 디스플레이되는 도 5의 사용자 인터페이스(500)의 개략도이다. 이 디스플레이 예는 식별자(514)를 사용하여 대상 엔터티에 대한 통화를 시작하기 전이다. 보류 기간들은 여기에 설명된 기법 중 하나를 사용하여 추정될 수 있다. 이 예에서는, 다수의 예상 통화들에 대해 다수의 보류 기간들이 추정되며, 각 통화는 통화 시간이 서로 다르다. 예를 들어, 대상 엔터티가 업무를 위해 열려 있고 발신자와 대화할 인간 에이전트를 제공할 수 있는 기간의 매 시간(오전 7시, 오전 8시 등)마다 각각의 보류 기간은 통화에 대해 통화 장치에 의해 추정되었다. 여기에는 현재 시간 이후의 예상 통화 시간이 포함된다. 현재 시간 이전의 통화 시간에 대한 보류 기간들은 참조용으로 디스플레이될 수 있으며 및/또는 일부 구현예에서는 다음 날 동일한 통화 시간에 발생하는 추정 보류 기간들의 표시일 수 있다.
결정된 보류 기간들 중 적어도 일부는 디스플레이 영역(520)의 막대 그래프(601)에 그래픽으로 디스플레이되며, 예를 들어 다른 추정 보류 기간들의 크기에 대한 보류 기간의 크기를 나타내는 각 수직 막대(602)의 높이가 디스플레이된다. 이 예에서, 선택된 막대(604)는 다른 막대(602)와 시각적으로 구별하기 위해 다른 색상, 밝기 또는 기타 표시로 강조 표시되고, 특정 통화에 대한 보류 기간을 나타내는데, 이 예에서는 현재 시간을 포함하는 기간 내에 배치되는 통화이다(예: 현재 시간이 이 막대와 연관된 기간에 가장 가깝다). 또한, 보류 기간 표시(606)는 선택된 막대(604)와 시각적으로 연관되고 선택된 막대(604)에 의해 표시되는 보류 기간을 텍스트 형식으로 표시한다.
일부 구현예에서, 도시된 바와 같이 보류 기간들이 싱글 데이(single day) 동안 디스플레이되면, 날짜 라벨 세트(610)가 막대 그래프(601) 근처의 디스플레이 영역(520)에 디스플레이되거나 그렇지 않으면 막대 그래프(601)와 시각적으로 연관되어 디스플레이될 수 있다. 이 예에서, 각 라벨(610)은 서로 다른 요일을 나타낸다. 라벨들(610) 중 하나의 라벨(612)은 막대 그래프(601)의 보류 기간들이 적용되는 날짜를 나타내기 위해 강조 표시된다. 예를 들어, 라벨(612)은 굵은 글씨체, 밑줄체로 디스플레이될 수 있고/있거나 다른 라벨(610)과 시각적으로 구별될 수 있다. 일부 구현예에서는 사용자가 선택할 수 있는 다른 라벨, 예를 들어 잔여 일수가 선택가능한 현재 월, 잔여 월이 선택가능한 현재 연도 등이 디스플레이될 수 있다.
일부 구현예에서, 요약 메시지(614)는 예를 들어 막대 그래프(501)와 시각적으로 연관되어(예를 들어, 막대 그래프(501)에 인접하거나 근처에) 디스플레이 영역(520)에 디스플레이될 수 있다. 요약 메시지(614)는 막대 그래프(601)에 표시된 정보를 요약할 수 있는데, 예를 들어 막대 그래프(601)의 선택된 통화 시간에 또는 선택된 통화 시간 이전 및/또는 이후의 특정 기간 내에 시작된 통화에 대한 추정 보류 기간을 텍스트 형식으로 디스플레이할 수 있다. 예를 들어, 도 6에서 선택된 통화 시간은 현재 시간(또는 현재 시간 바로 다음 시간)이고, 메시지(614)는 선택된 막대(604)와 연관된 통화 시간(예를 들어, 이 예에서는 오후 12시)을 표시할 수 있다. 예를 들어, 메시지(614)의 통화 시간은 현재 시간을 포함하는 기간을 나타내는 통화 시간일 수 있다. 일부 예에서, 막대(602)로 표시되는 기간은 해당 막대에 대해 디스플레이된 통화 시간을 중심으로 한 1시간일 수 있거나, 다른 구현예에서는 다른 기간일 수 있다. 현재 시간이 다음 막대(602)에 의해 표시되는 다음 기간으로 진행되면, 선택된 막대(604) 및 메시지(614)가 이에 따라 업데이트될 수 있다. 예를 들어, 선택된 막대(604) 및 메시지(614)는 현재 시간이 다음 기간(예를 들어, 일례에서 오후 12시 31분)으로 진행될 때 막대 그래프(601)의 다음 통화 시간(예를 들어, 오후 1시)으로 변경될 수 있다.
일부 구현예에서, 메시지(620)는 또한 막대 그래프(601)에서 막대(604)의 선택된 통화 시간과 연관된 추정 보류 기간을 나타내는 통화 컨트롤(512) 내에 디스플레이되거나 이와 연관될 수도 있다.
도 7은 일부 구현예에 따른, 사용자에 의해 선택된 다른 추정 보류 기간의 예를 보여주는 도 6의 사용자 인터페이스(500)의 개략도이다. 도 7의 인터페이스(500)는 식별자(514)를 사용하여 대상 엔터티에 대한 통화를 시작하기 전에 디스플레이된다. 이 예에서, 사용자는 예를 들어 터치스크린에 디스플레이된 막대(702)를 탭하는 것과 같은 사용자 입력을 통해 막대 그래프(601)의 다른 막대(702)를 선택했다. 막대(702)는 선택에 응답하여 시각적으로 강조 표시되고, 이전에 선택된 막대(604)는 더 이상 강조 표시되지 않는다. 보류 기간 표시(606)는 선택된 막대(702)에 의해 표시되는 추정 보류 기간을 나타내기 위한 선택에 응답하여 업데이트된다.
도 8은 일부 구현예에 따른, 사용자에 의해 다른 추정 보류 기간이 선택되는 도 7의 사용자 인터페이스(500)를 개략적으로 나타낸 도면이다. 도 8의 인터페이스(500)는 식별자(514)를 사용하여 대상 엔터티에 대한 통화를 시작하기 전에 디스플레이된다. 이 예에서 사용자는 선택된 날짜의 예상 통화에 대한 보류 기간들을 보기 위해 다른 요일(현재 날짜가 아님)을 선택했다. 예를 들어, 사용자는 날짜 라벨(610)을 선택하여 선택된 날과 연관된 보류 기간들이 디스플레이되게 할 수 있다. 일부 예에서, (다음 다가오는 토요일에 대한) 라벨(802)은 도 8에서 사용자에 의해 선택되어 막대 그래프(804)가 디스플레이되게 한다. 막대 그래프(804)는 도 6 및 도 7에 도시된 금요일에 대한 막대 그래프(601)와 비교하여 통화에 대한 다른 보류 기간들의 세트를 포함한다. 일부 구현예에서는 대상 엔터티가 전화를 받을 수 없는 날짜가 선택되는 경우(예: 주말, 공휴일에는 업무 시간이 없음), 보류 기간의 막대 그래프는 디스플레이되지 않으며 대상 엔터티가 해당 날짜에 인간 에이전트를 통화에 연결하지 않음을 나타내는 메시지로 대체된다(예: 라벨(610)에 대해 일요일이 선택되는 경우 "일요일은 휴무"라는 메시지가 디스플레이됨).
막대 그래프(804)는 도 6 및 도 7의 막대 그래프(601)와 유사하게, 선택된 날짜의 서로 다른 통화 시간에서의 추정 보류 기간들을 포함한다. 막대 그래프(804)의 막대(806)가 선택된다. 예를 들어, 막대(806)는 사용자 입력에 의해 선택되었을 수 있거나, 다른 날짜 라벨(610)이 선택될 때 디폴트 선택일 수 있다(예를 들어, 막대 그래프(804)의 첫 번째 또는 가장 빠른 막대가 선택될 수 있음). 이에 따라 막대(806)가 시각적으로 강조 표시되고, 이전에 선택된 막대(702)는 더 이상 강조 표시되지 않는다. 보류 기간 표시(606)는 선택된 막대(806)에 의해 표시되는 추정 보류 기간을 나타내기 위한 선택에 응답하여 업데이트된다.
다른 구현예에서, 보류 기간들은 다른 방식이나 형식으로 디스플레이될 수 있다. 예를 들어 가로 막대 그래프, 색상으로 구분된 숫자 또는 영역, 캘린더 형식 또는 기타 그래픽 디스플레이가 사용될 수 있다.
도 9는 일부 구현예에 따라 통화 중에 보류 기간이 디스플레이될 수 있는 통화 장치의 디스플레이 화면에 의해 디스플레이되는 예시적인 사용자 인터페이스(900)의 개략도이다. 예를 들어, 인터페이스(900)는 클라이언트 장치, 예를 들어 도 1에 도시된 클라이언트 장치(120-126) 중 하나 또는 서버 시스템(102)과 같은 다른 장치의 디스플레이 장치에 의해 터치스크린에 디스플레이될 수 있다.
인터페이스(900)는 대상 엔터티에 대한 엔터티 식별자를 다이얼링함으로써 대상 엔터티에 대한 통화를 시작한 통화 장치에 의해 디스플레이되는 통화 인터페이스일 수 있다. 예를 들어 통화 상태(902)가 표시된다. 추정 보류 기간(904)이 (예를 들어, 본 명세서에 설명된 바와 같이) 현재 통화에 대해 결정되고 인터페이스(900)에 디스플레이될 수 있다. 또한, 보류 기간 컨트롤(906)이 디스플레이되고 사용자에 의해 선택되어 다른 통화 시간에 대상 엔터티로의 예상 통화에 대한 보류 기간들이 디스플레이되게 할 수 있다. 연결 해제 컨트롤(908)은 현재 통화를 끊기 위해 사용자에 의해 선택될 수 있다.
일부 구현예에서, 통화가 대상 엔터티에 연결된 후에 인터페이스(900)와 유사한 인터페이스가 디스플레이될 수 있다. 예를 들어, 추정 보류 기간(904) 및 보류 기간 컨트롤(906)은 발신자와 수신자가 통화 중에 보이스를 통해 통신하는 동안 인터페이스(900)에 계속 디스플레이될 수 있다. 추정 보류 기간(904)은 사용자가 대상 엔터티에 의해 보류된 경우에도 계속 디스플레이될 수 있다. 예를 들어, 스피치 인식 기술, 사용자 선택 수신, 또는 기타 기술은 대상 엔터티(예: 대상 엔터티의 자동화된 보이스 메뉴)가 사용자를 보류 상태로 설정했는지 여부를 검출하기 위해 통화 장치에 의해 사용될 수 있다. 보류 중인 동안, 추정 보류 기간(904)은 조정될 수 있는데, 예를 들어 보류 기간의 시간이 진행됨에 따라 감소될 수 있다. 통화 중 및/또는 보류 중에 보류 기간 컨트롤(906)이 디스플레이되어 사용자가 선택할 수 있다.
도 10은 일부 구현예에 따라 예상 통화에 대한 보류 기간들이 통화 장치에 의해 결정되고 통화 중에 인터페이스(900)에 디스플레이되는 도 9의 사용자 인터페이스(900)의 개략도이다. 이 예에서, 보류 기간 디스플레이 영역(1002)은 인터페이스(900)에 디스플레이되며, 여기서 디스플레이 영역(1002)은 다수의 예상 통화들에 대한 보류 기간들을 보여주는 막대 그래프(1004)를 포함한다. 예를 들어, 디스플레이 영역(1002)은 도 9에 도시된 바와 같이 사용자가 보류 기간 컨트롤(906)을 선택하는 것에 응답하여 디스플레이될 수 있거나, 디스플레이 영역(1002)이 디스플레이되도록 하기 위해 다른 입력이 수신될 수 있다.
막대 그래프(1004)는 도 6 내지 도 8과 관련하여 전술한 막대 그래프와 유사할 수 있다. 예를 들어, 다수의 예상 통화들에 대해 다수의 보류 기간들이 추정될 수 있으며, 각 예상 통화는 서로 다른 통화 시간을 갖는다. 사용자는 위에 설명된 것과 유사하게, 선택된 날짜에 대한 보류 기간들을 디스플레이하기 위해 날짜 라벨(1006)을 선택할 수 있다. 보류 기간 표시(1008)는 전술한 바와 유사하게 선택된 보류 기간을 텍스트 형식으로 표시할 수 있다. 일부 구현예에서, 요약 메시지(1010)는 위에서 설명한 것과 유사하게, 예를 들어 막대 그래프(1004)와 시각적으로 연관되어 디스플레이 영역(1002)에 디스플레이될 수 있다.
일부 구현예에서, 막대 그래프(1004)는 통화가 연결될 때 그리고 통화 중에, 예를 들어 발신자와 수신자가 말하고 있을 때, 발신자가 보류 중인 경우 등에서 계속 디스플레이될 수 있고 사용자 선택에 응답할 수 있다.
도 11은 본 명세서에 설명된 하나 이상의 특징을 구현하는 데 사용될 수 있는 예시적인 장치(1100)의 블록도이다. 일례에서, 장치(1100)는 클라이언트 장치, 예를 들어 도 1에 도시된 임의의 클라이언트 장치(120-126)를 구현하는 데 사용될 수 있다. 대안적으로, 장치(1100)는 서버 장치, 예를 들어 서버 장치(104) 등을 구현할 수 있다. 일부 구현예에서, 장치(1100)는 클라이언트 장치, 서버 장치, 또는 이들의 조합을 구현하는 데 사용될 수 있다. 장치(1100)는 본 명세서에 기술된 임의의 적합한 컴퓨터 시스템, 서버, 또는 기타 전자 또는 하드웨어 장치일 수 있다.
일부 구현예에서, 장치(1100)는 프로세서(1102), 메모리(1104) 및 I/O 인터페이스(1106)를 포함한다. 프로세서(1102)는 프로그램 코드를 실행하고 장치(1100)의 기본 동작을 제어하기 위한 하나 이상의 프로세서 및/또는 프로세싱 회로일 수 있다. "프로세서"에는 데이터, 신호 또는 기타 정보를 프로세싱하는 적절한 하드웨어 시스템, 메커니즘 또는 구성 요소가 포함된다. 프로세서는 하나 이상의 코어(예: 단일 코어, 듀얼 코어 또는 멀티 코어 구성)를 갖춘 범용 중앙 프로세싱 유닛(CPU), 다중 프로세싱 유닛(예: 다중 프로세서 구성), 그래픽 프로세싱 유닛(GPU), 필드-프로그래밍가능 게이트 어레이(FPGA), 애플리케이션 특정 집적 회로(ASIC), 복합 프로그래밍가능 논리 장치(CPLD), 기능 구현을 위한 전용 회로, 신경 네트워크 모델 기반 프로세싱을 구현하기 위한 특수 목적 프로세서, 신경 회로, 행렬 계산(예: 행렬 곱셈)에 최적화된 프로세서 또는 기타 시스템을 포함할 수 있다.
일부 구현예에서, 프로세서(1102)는 신경 네트워크 프로세싱을 구현하는 하나 이상의 보조 프로세서를 포함할 수 있다. 일부 구현예에서, 프로세서(1102)는 데이터를 프로세싱하여 확률적 출력을 생성하는 프로세서일 수 있으며, 예를 들어 프로세서(1102)에 의해 생성된 출력은 부정확할 수 있거나 예측 출력의 범위 내에서 정확할 수 있다. 예를 들어, 프로세서는 "실시간", "오프라인", "배치 모드" 등으로 해당 기능을 수행할 수 있다. 프로세싱의 일부는 서로 다른(또는 동일한) 프로세싱 시스템에 의해, 서로 다른 시간과 서로 다른 위치에서 수행될 수 있다. 컴퓨터는 메모리와 통신하는 모든 프로세서일 수 있다.
메모리(1104)는 일반적으로 프로세서(1102)에 의한 액세스를 위해 장치(1100)에 제공되며, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 전기적으로 소거가능한 읽기 전용 메모리(EEPROM), 플래시 메모리 등과 같은 임의의 적합한 프로세서 판독가능 저장 매체일 수 있으며, 이는 프로세서에 의한 실행을 위한 명령어들을 저장하는 데 적합하고 프로세서(1102)와 별도로 위치하거나 프로세서와 통합되는 것일 수 있다. 메모리(1104)는 운영 체제(1108), 기계 학습 애플리케이션(1130), 다른 애플리케이션들(1112) 및 애플리케이션 데이터(1114)를 포함하여 프로세서(1102)에 의해 서버 장치(1100)에서 동작하는 소프트웨어를 저장할 수 있다. 다른 애플리케이션들(1112)은 데이터 디스플레이 엔진, 통신 애플리케이션(예: 다이얼러 또는 통화 애플리케이션), 웹 호스팅 엔진, 이미지 디스플레이 엔진, 알림 엔진, 소셜 네트워킹 엔진 등과 같은 애플리케이션을 포함할 수 있다. 일부 구현예에서, 기계 학습 애플리케이션(1130) 및/또는 다른 애플리케이션들(1112)은 각각 프로세서(1102)가 본 문서에 설명된 기능, 예를 들어 도 2, 도 3 및/또는 도 4의 방법 중 일부 또는 전부를 수행할 수 있게 하는 명령어들을 포함할 수 있다. 애플리케이션 데이터(1114)는 통화 시간, 통화 기간, 보류 기간 및 이전 통화들의 다른 특성을 포함하는 통화 특성 및/또는 본 명세서에 설명된 추정 보류 기간들을 결정하는 데 사용될 수 있는 데이터 구조(예를 들어, 테이블, 리스트, 그래프)를 포함할 수 있다.
기계 학습 애플리케이션(1130)은 지도 및/또는 비지도 학습이 사용될 수 있는 하나 이상의 엔터티명(named-entity) 인식(NER) 구현을 포함할 수 있다. 기계 학습 모델에는 다중 태스크 학습 기반 모델, 조건부 랜덤 필드가 있는 잔차 태스크 양방향 LSTM(장단기 메모리), 통계적 NER 등이 포함될 수 있다. 본 명세서에 개시된 하나 이상의 방법은 예를 들어 임의의 유형의 컴퓨팅 장치에서 실행될 수 있는 독립형 컴퓨터 프로그램, 웹 페이지를 갖는 웹 애플리케이션, 모바일 컴퓨팅 장치에서 실행되는 모바일 애플리케이션("앱") 등 여러 환경 및 플랫폼에서 동작할 수 있다.
다양한 구현예에서, 기계 학습 애플리케이션(1130)은 베이지안 분류기, 지원 벡터 기계, 신경 네트워크 또는 기타 학습 기술을 활용할 수 있다. 일부 구현예에서, 기계 학습 애플리케이션(1130)은 트레이닝된 모델(1134), 추론 엔진(1136) 및 데이터(1132)를 포함할 수 있다. 일부 구현예에서, 데이터(1132)는 트레이닝된 데이터, 예를 들어 트레이닝된 모델(1134)을 생성하는 데 사용되는 데이터를 포함할 수 있다. 예를 들어, 트레이닝 데이터에는 사용자의 이전 통화들에 대한 통화 특성(사용자 동의를 얻은 경우) 등과 같이 통화 보류 기간들을 결정하기 위한 모델을 트레이닝하는 데 적합한 모든 유형의 데이터가 포함될 수 있다. 트레이닝 데이터는 트레이닝을 위해 특별히 표시된 데이터 저장소, 기계 학습을 위한 트레이닝 데이터로 사용하기 위해 권한이 제공되는 데이터 등 모든 소스에서 획득될 수 있다. 하나 이상의 사용자가 기계 학습 모델, 예를 들어 트레이닝된 모델(1134)을 트레이닝하기 위해 각자의 사용자 데이터의 사용을 허용하는 구현예에서, 트레이닝 데이터는 이러한 사용자 데이터를 포함할 수 있다. 사용자가 각자의 사용자 데이터의 사용을 허용하는 구현예에서, 데이터(1132)는 허용된 데이터를 포함할 수 있다.
일부 구현예에서, 트레이닝 데이터는 트레이닝되는 상황에서의 사용자 입력 또는 활동에 기초하지 않은 데이터, 예를 들어 시뮬레이션 또는 모델로부터 생성된 데이터 등과 같은 트레이닝 목적으로 생성된 합성 데이터를 포함할 수 있다. 일부 구현예에서, 기계 학습 애플리케이션(1130)은 데이터(1132)를 제외한다. 예를 들어, 이러한 구현예에서 트레이닝된 모델(1134)은 예를 들어 다른 장치에서 생성될 수 있으며 기계 학습 애플리케이션(1130)의 일부로 제공될 수 있다. 다양한 구현예에서, 트레이닝된 모델(1134)은 모델 구조 또는 형태 및 연관된 가중치를 포함하는 데이터 파일로서 제공될 수 있다. 추론 엔진(1136)은 트레이닝된 모델(1134)에 대한 데이터 파일을 판독하고 트레이닝된 모델(1134)에 지정된 모델 구조 또는 형태에 기초한 노드 연결성, 레이어 및 가중치를 갖는 신경 네트워크를 구현할 수 있다.
기계 학습 애플리케이션(1130)은 또한 하나 이상의 트레이닝된 모델(1134)을 포함한다. 예를 들어, 이러한 모델은 본 명세서에 기술된 통화에 대한 추정 보류 기간들을 결정하기 위한 트레이닝된 모델을 포함할 수 있다. 일부 구현예에서, 트레이닝된 모델(1134)은 하나 이상의 모델 형태 또는 구조를 포함할 수 있다. 예를 들어, 모델 형태 또는 구조는 선형 네트워크, 복수의 레이어(예: 각 레이어는 선형 네트워크인, 입력 레이어와 출력 레이어 사이의 "히든 레이어")를 구현하는 심층 신경 네트워크, 컨벌루션 신경 네트워크(예: 입력 데이터를 여러 부분 또는 타일로 분리하거나 분할하고, 하나 이상의 신경 네트워크 레이어를 사용하여 각 타일을 별도로 프로세싱하고, 각 타일의 프로세싱 결과를 집계하는 네트워크), 시퀀스 투 시퀀스 신경 네트워크(예: 문장의 단어, 비디오의 프레임 등과 같은 순차적 데이터를 입력으로 취하고 결과 시퀀스를 출력으로 생성하는 네트워크) 등과 같은 모든 유형의 신경 네트워크를 포함할 수 있다.
모델 형태 또는 구조는 다양한 노드 사이의 연결성과 노드의 레이어 구성을 지정할 수 있다. 예를 들어, 제1 레이어(예를 들어, 입력 레이어)의 노드는 입력 데이터(1132) 또는 애플리케이션 데이터(1114)로서 데이터를 수신할 수 있다. 이러한 데이터는 예를 들어 트레이닝된 모델이 보류 기간들을 결정하기 위해 사용될 때, 이전 통화들의 통화 특성 및/또는 이전 통화들 및 보류 기간들의 추정에 관한 사용자로부터의 피드백을 포함할 수 있다. 후속 중간 레이어들은 모델 형태 또는 구조에 명시된 연결성 별로 이전 레이어의 노드의 입력 출력을 수신할 수 있다. 이러한 레이어는 히든 레이어라고도 한다. 최종 레이어(예: 출력 레이어)는 기계 학습 애플리케이션의 출력을 생성한다. 예를 들어, 출력은 인터페이스에 제공될 예상 통화 시간들의 보류 기간들의 세트일 수 있다. 일부 구현예에서 모델 형식 또는 구조는 또한 각 레이어의 노드 수 및/또는 유형을 지정한다.
다양한 구현예에서, 하나 이상의 트레이닝된 모델(1134)은 모델 구조 또는 형태별로 레이어로 배열된 복수의 노드를 포함할 수 있다. 일부 구현예에서, 노드는 예를 들어 하나의 입력 유닛을 프로세싱하여 하나의 출력 유닛을 생성하도록 구성된 메모리가 없는 계산 노드일 수 있다. 노드에 의해 수행되는 계산은, 예를 들어, 복수의 노드 입력들 각각에 가중치를 곱하고, 가중 합을 구하고, 가중 합을 편향 또는 절편 값으로 조정하여 노드 출력을 생성하는 것을 포함할 수 있다.
일부 구현예에서, 노드에 의해 수행되는 계산은 또한 조정된 가중 합에 단계/활성화 함수를 적용하는 것을 포함할 수 있다. 일부 구현예에서, 단계/활성화 함수는 비선형 함수일 수 있다. 다양한 구현예에서, 그러한 계산은 행렬 곱셈과 같은 연산을 포함할 수 있다. 일부 구현예에서, 복수의 노드에 의한 계산은 예를 들어 멀티코어 프로세서의 다중 프로세서 코어를 사용하여, GPU의 개별 프로세싱 유닛 또는 특수 목적 신경 회로를 사용하여 병렬로 수행될 수 있다. 일부 구현예에서, 노드는 메모리를 포함할 수 있으며, 예를 들어 후속 입력을 프로세싱할 때 하나 이상의 이전 입력을 저장하고 사용할 수 있다. 예를 들어, 메모리가 있는 노드에는 LSTM(장단기 메모리) 노드가 포함될 수 있다. LSTM 노드는 노드가 FSM(Finite State Machine)처럼 작동하도록 허용하는 "상태"를 유지하기 위해 메모리를 사용할 수 있다. 이러한 노드가 있는 모델은 문장이나 단락의 단어, 비디오의 프레임, 음성 또는 기타 오디오 등과 같은 순차적 데이터를 프로세싱하는 데 유용할 수 있다.
일부 구현예에서, 하나 이상의 트레이닝된 모델(1134)은 개별 노드에 대한 임베딩 또는 가중치를 포함할 수 있다. 예를 들어, 모델은 모델 형태나 구조에 의해 지정된 대로 레이어로 구성된 복수의 노드로서 시작될 수 있다. 초기화 시, 모델 형태에 따라 연결된 각 노드 쌍, 예를 들어 신경 네트워크의 연속적인 레이어에 있는 노드 사이의 연결에 각각의 가중치가 적용될 수 있다. 예를 들어, 각 가중치는 무작위로 할당되거나 기본값으로 초기화될 수 있다. 그런 다음 모델은 예를 들어 데이터(1132)를 사용하여 트레이닝되어 결과를 생성할 수 있다.
예를 들어, 트레이닝에는 지도 학습 기술을 적용하는 것이 포함될 수 있다. 지도 학습에서, 트레이닝 데이터는 복수의 입력(예: 통화 특성)과 각 입력에 대한 대응하는 예측 출력(예: 서로 다른 통화 시간의 보류 기간 세트)을 포함할 수 있다. 모델의 출력과 예측 출력의 비교에 기초하여, 가중치 값은 예를 들어 유사한 입력이 제공될 때 모델이 예측 출력을 생성할 확률을 높이는 방식으로 자동으로 조정된다.
일부 구현예에서 트레이닝은 비지도 학습 기술을 적용하는 것을 포함할 수 있다. 비지도 학습에서는 입력 데이터만 제공될 수 있으며 모델은 데이터를 구별하도록 트레이닝될 수 있다. 예를 들어 입력 데이터를 복수의 그룹으로 묶을 수 있으며, 여기서 각 그룹은 어떤 방식으로든 유사한 입력 데이터를 포함한다. 예를 들어, 모델은 서로 유사한 통화 특성을 결정하거나 클러스터링하도록 트레이닝될 수 있다.
또 다른 예에서, 비지도 학습을 사용하여 트레이닝된 모델은 데이터 소스의 호출 또는 단어의 사용에 기초하여 호출 또는 단어를 클러스터링할 수 있다. 일부 구현예에서, 비지도 학습은 예를 들어 기계 학습 애플리케이션(1130)에 의해 사용될 수 있는 지식 표현을 생성하는 데 사용될 수 있다. 다양한 구현예에서, 트레이닝된 모델에는 모델 구조에 대응하는 일련의 가중치 또는 임베딩이 포함된다. 데이터(1132)가 생략되는 구현예에서, 기계 학습 애플리케이션(1130)은 예를 들어 기계 학습 애플리케이션(1130)의 개발자, 제3자 등에 의한 사전 트레이닝을 기초로 하는 트레이닝된 모델(1134)을 포함할 수 있다. 일부 구현예에서, 트레이닝된 모델(1134) 중 하나 이상은 각각 고정된, 예를 들어 가중치를 제공하는 서버로부터 다운로드되는 가중치 세트를 포함할 수 있다.
기계 학습 애플리케이션(1130)은 또한 추론 엔진(1136)을 포함한다. 추론 엔진(1136)은 트레이닝된 모델(1134)을 애플리케이션 데이터(1114)와 같은 데이터에 적용하여 서로 다른 통화 시간에 대한 보류 기간들의 세트와 같은 추론을 제공하도록 구성된다. 일부 구현예에서, 추론 엔진(1136)은 프로세서(1102)에 의해 실행될 소프트웨어 코드를 포함할 수 있다. 일부 구현예에서, 추론 엔진(1136)은 프로세서(1102)가 트레이닝된 모델을 적용할 수 있게 하는 회로 구성(예를 들어, 프로그래밍가능 프로세서, 필드 프로그래밍가능 게이트 어레이(FPGA) 등에 대해)을 지정할 수 있다. 일부 구현예에서, 추론 엔진(1136)은 소프트웨어 명령, 하드웨어 명령, 또는 조합을 포함할 수 있다. 일부 구현예에서, 추론 엔진(1136)은 추론 엔진(1136)을 호출하기 위해, 예를 들어 트레이닝된 모델(1134)을 애플리케이션 데이터(1114)에 적용하여 추론을 생성하기 위해 운영 체제(1108) 및/또는 다른 애플리케이션(1112)에 의해 사용될 수 있는 애플리케이션 프로그래밍 인터페이스(API)를 제공할 수 있다.
기계 학습 애플리케이션(1130)은 여러 기술적 이점을 제공할 수 있다. 예를 들어, 트레이닝된 모델(1134)이 비지도 학습에 기초하여 생성되는 경우, 트레이닝된 모델(1134)은 추론 엔진(1136)에 의해 적용되어 입력 데이터(예: 애플리케이션 데이터(1114))로부터 지식 표현, 예를 들어 수치 표현을 생성할 수 있다. 예를 들어, 보류 기간들을 결정하기 위해 트레이닝된 모델은 보류 기간들에 대한 표현을 생성할 수 있다. 일부 구현예에서, 그러한 표현은 출력(예를 들어, 라벨, 분류, 추정 특성 등)을 생성하기 위해 프로세싱 비용(예를 들어, 계산 비용, 메모리 사용량 등)을 줄이는 데 도움이 될 수 있다. 일부 구현예에서, 그러한 표현은 추론 엔진(1136)의 출력으로부터 출력을 생성하는 다른 기계 학습 애플리케이션에 대한 입력으로서 제공될 수 있다.
일부 구현예에서, 기계 학습 애플리케이션(1130)에 의해 생성된 지식 표현은 예를 들어 네트워크를 통해 추가 프로세싱을 수행하는 다른 장치에 제공될 수 있다. 그러한 구현예에서, 데이터가 아닌 지식 표현을 제공하는 것은 예를 들어 비용 절감으로 더 빠른 데이터 전송을 가능하게 하는 것과 같은 기술적 이점을 제공할 수 있다.
일부 구현예에서, 기계 학습 애플리케이션(1130)은 오프라인 방식으로 구현될 수 있다. 이러한 구현예에서, 트레이닝된 모델(1134)은 첫 번째 단계에서 생성될 수 있으며 기계 학습 애플리케이션(1130)의 일부로 제공될 수 있다. 일부 구현예에서, 기계 학습 애플리케이션(1130)은 온라인 방식으로 구현될 수 있다. 예를 들어, 이러한 구현예에서, 기계 학습 애플리케이션(1130)을 호출하는 애플리케이션(예를 들어, 운영 체제(1108), 하나 이상의 다른 애플리케이션(1112))은 기계 학습 애플리케이션(1130)에 의해 생성된 추론을 활용할 수 있으며, 예를 들어, 사용자에게 추론을 제공하고 시스템 로그(예를 들어, 사용자가 허용한 경우 추론에 기초하여 사용자에 의해 취해진 액션, 또는 추가 프로세싱을 위해 입력으로서 활용되는 추가 프로세싱의 결과)를 생성할 수 있다. 시스템 로그는 예를 들어, 시간별, 월별, 분기별 등과 같이 주기적으로 생성될 수 있으며 사용자 허가 하에 트레이닝된 모델(1134)을 업데이트하는 데, 예를 들어 트레이닝된 모델(1134)에 대한 임베딩을 업데이트하는 데 사용될 수 있다.
일부 구현예에서, 기계 학습 애플리케이션(1130)은 기계 학습 애플리케이션(1130)이 실행되는 장치(1100)의 특정 구성에 적응할 수 있는 방식으로 구현될 수 있다. 예를 들어, 기계 학습 애플리케이션(1130)은 예를 들어 프로세서(1102)와 같은 이용가능한 계산 리소스를 활용하는 계산 그래프를 결정할 수 있다. 예를 들어, 기계 학습 애플리케이션(1130)이 다수의 장치에 분산 애플리케이션으로 구현되는 경우, 기계 학습 애플리케이션(1130)은 계산을 최적화하는 방식으로 개별 장치에서 수행될 계산을 결정할 수 있다. 다른 예에서, 기계 학습 애플리케이션(1130)은 프로세서(1102)가 특정 수의 GPU 코어(예를 들어, 1000개)를 갖는 GPU를 포함한다고 결정하고 이에 따라 추론 엔진을(예를 들어, 1000개의 개별 프로세스 또는 스레드로) 구현할 수 있다.
일부 구현예에서, 기계 학습 애플리케이션(1130)은 트레이닝된 모델의 앙상블을 구현할 수 있다. 예를 들어, 트레이닝된 모델(1134)은 동일한 입력 데이터에 각각 적용가능한 복수의 트레이닝된 모델을 포함할 수 있다. 이러한 구현예에서, 기계 학습 애플리케이션(1130)은 예를 들어 사용가능한 계산 리소스, 사전 추론의 성공률 등에 기초하여 특정 트레이닝 모델을 선택할 수 있다. 일부 구현예에서, 기계 학습 애플리케이션(1130)은 복수의 트레이닝된 모델이 적용되도록 추론 엔진(1136)을 실행할 수 있다. 이러한 구현예에서, 기계 학습 애플리케이션(1130)은 예를 들어 각각의 트레이닝된 모델을 적용함으로써 개별 출력에 점수를 매기는 투표 기술을 사용하거나 하나 이상의 특정 출력을 선택함으로써 개별 모델 적용으로부터의 출력을 결합할 수 있다. 또한 이러한 구현예에서 기계 학습 애플리케이션은 개별 트레이닝모델을 적용하기 위한 시간 임계값(예: 0.5ms)을 적용하고 시간 임계값 내에서 사용가능한 개별 출력만 활용할 수 있다. 시간 임계값 내에 수신되지 않은 출력은 폐기되는 것과 같이 활용되지 않을 수 있다. 예를 들어, 이러한 접근법은 예를 들어 운영 체제(1108) 또는 하나 이상의 다른 애플리케이션(1112)에 의해 기계 학습 애플리케이션을 호출하는 동안 지정된 시간 제한이 있는 경우 적합할 수 있다.
다양한 구현예에서, 기계 학습 애플리케이션(1130)은 다양한 유형의 출력을 생성할 수 있다. 일부 구현예에서, 기계 학습 애플리케이션(1130)은 호출 애플리케이션, 예를 들어 운영 체제(1108) 또는 하나 이상의 다른 애플리케이션(1112)에 의해 지정된 형식에 기초하여 출력을 생성할 수 있다. 일부 구현예에서는 호출 애플리케이션이 또 다른 기계 학습 애플리케이션일 수 있다. 예를 들어, 이러한 구성은 생성적 적대 네트워크에서 사용될 수 있으며, 여기서 호출하는 기계 학습 애플리케이션은 기계 학습 애플리케이션(1130)의 출력을 사용하여 트레이닝되고 그 반대도 마찬가지이다.
메모리(1104)에 있는 임의의 소프트웨어는 대안적으로 임의의 다른 적합한 저장 위치 또는 컴퓨터 판독가능 매체에 저장될 수 있다. 또한, 메모리(1104)(및/또는 다른 연결된 저장 장치(들))는 하나 이상의 메시지, 하나 이상의 분류법, 전자 백과사전, 사전, 동의어 사전, 지식 베이스, 메시지 데이터, 문법, 사용자 기본 설정 및/또는 여기에 설명된 기능에 사용되는 기타 명령어 및 데이터를 저장할 수 있다. 메모리(1104) 및 임의의 다른 유형의 저장소(자기 디스크, 광 디스크, 자기 테이프 또는 기타 유형의 매체)는 "저장소" 또는 "저장 장치"로 간주될 수 있다.
I/O 인터페이스(1106)는 서버 장치(1100)를 다른 시스템 및 장치와 인터페이싱하는 기능을 제공할 수 있다. 인터페이스된 장치는 장치(1100)의 일부로 포함될 수 있거나 별도로 장치(1100)와 통신할 수 있다. 예를 들어, 네트워크 통신 장치, 저장 장치(예를 들어, 메모리(1104) 및/또는 데이터베이스(106)) 및 입력/출력 장치는 I/O 인터페이스(1106)를 통해 통신할 수 있다. 일부 구현예에서, I/O 인터페이스는 입력 장치(키보드, 포인팅 장치, 터치스크린, 마이크, 카메라, 스캐너, 센서 등) 및/또는 출력 장치(디스플레이 장치, 스피커 장치, 프린터, 모터 등)와 같은 인터페이스 장치에 연결할 수 있다.
I/O 인터페이스(1106)에 연결할 수 있는 인터페이스 장치의 일부 예는 하나 이상의 디스플레이 장치(1120) 및 하나 이상의 데이터 저장소(1138)(위에서 논의한 바와 같음)를 포함할 수 있다. 디스플레이 장치(1120)는 컨텐츠, 예를 들어 여기에 설명된 출력 애플리케이션의 사용자 인터페이스를 디스플레이하는 데 사용될 수 있다. 디스플레이 장치(1120)는 로컬 연결(예를 들어, 디스플레이 버스) 및/또는 네트워크 연결을 통해 장치(1100)에 연결될 수 있으며 임의의 적합한 디스플레이 장치일 수 있다. 디스플레이 장치(1120)는 LCD, LED 또는 플라즈마 디스플레이 스크린, CRT, 텔레비전, 모니터, 터치스크린, 3-D 디스플레이 스크린 또는 기타 시각적 디스플레이 장치와 같은 임의의 적절한 디스플레이 장치를 포함할 수 있다. 예를 들어, 디스플레이 장치(1120)는 모바일 장치에 제공되는 평면 디스플레이 스크린, 고글 또는 헤드셋 장치에 제공되는 다중 디스플레이 스크린, 프로젝터 또는 컴퓨터 장치용 모니터 스크린일 수 있다.
I/O 인터페이스(1106)는 다른 입력 및 출력 장치와 인터페이스할 수 있다. 몇 가지 예로는 디스플레이 장치, 프린터 장치, 스캐너 장치 등이 있다. 일부 구현예에서는 사운드, 보이스 명령 등을 캡처하기 위한 마이크로폰, 사운드 출력을 위한 오디오 스피커 장치 또는 기타 입력 및 출력 장치를 제공할 수 있다.
설명의 편의를 위해, 도 11은 프로세서(1102), 메모리(1104), I/O 인터페이스(1106) 및 소프트웨어 블록(1108, 1112, 1130) 각각에 대한 하나의 블록을 보여준다. 이러한 블록은 하나 이상의 프로세서 또는 프로세싱 회로, 운영 체제, 메모리, I/O 인터페이스, 애플리케이션 및/또는 소프트웨어 모듈을 나타낼 수 있다. 다른 구현예에서, 장치(1100)는 도시된 구성요소 모두를 갖지 않을 수 있고/있거나 여기에 도시된 것 대신에 또는 이에 추가하여 다른 유형의 요소를 포함하는 다른 요소를 가질 수 있다. 일부 구성 요소는 본 문서의 일부 구현예에 설명된 블록 및 동작을 수행하는 것으로 설명되어 있지만, 환경(100), 장치(1100), 유사한 시스템, 또는 그러한 시스템과 연관된 임의의 적합한 프로세서 또는 프로세서들의 임의의 적합한 구성요소 또는 구성요소들의 조합이 설명된 블록 및 동작을 수행할 수 있다.
설명은 특정 구현예에 관해 설명되었지만, 이러한 특정 구현예는 단지 예시일 뿐이며 제한적이지는 않는다. 예시에 예시된 개념은 다른 예시 및 구현예에 적용될 수 있다.
위의 설명에 더해, 사용자에게 여기에 설명된 시스템, 프로그램 또는 기능이 사용자 정보(예: 사용자의 소셜 네트워크, 소셜 액션 또는 활동, 직업, 사용자 기본 설정, 사용자 또는 사용자 장치의 현재 위치에 대한 정보) 수집을 활성화할 수 있는지 여부와 시기, 그리고 사용자에게 서버에서 컨텐츠 또는 통신이 전송되는지 여부에 대해 사용자가 선택할 수 있도록 하는 제어 기능이 제공될 수 있다. 또한, 특정 데이터는 저장 또는 사용되기 전에 하나 이상의 방법으로 처리되어 개인 식별 정보가 제거될 수 있다. 예를 들어, 사용자의 신원은 사용자에 대해 어떠한 개인 식별 정보도 확인할 수 없도록 처리될 수 있거나 또는 위치 정보가 획득되는 곳에서 사용자의 지리적 위치가 일반화되어 (예: 도시, 우편번호 또는 주 수준) 사용자의 특정 위치가 결정될 수 없도록 처리될 수 있다. 따라서 사용자는 자신에 대해 어떤 정보가 수집되고, 해당 정보가 어떻게 사용되며, 어떤 정보가 사용자에게 제공되는지 제어할 수 있다.
본 개시에 설명된 기능 블록, 동작, 특징, 방법, 장치 및 시스템은 당업자에게 알려진 바와 같이 시스템, 장치 및 기능 블록의 다양한 조합으로 통합되거나 분할될 수 있다는 점에 유의한다. 특정 구현예의 루틴을 구현하기 위해 임의의 적합한 프로그래밍 언어 및 프로그래밍 기술이 사용될 수 있다. 절차적 또는 객체 지향과 같은 다양한 프로그래밍 기술이 사용될 수 있다. 루틴은 단일 프로세싱 장치 또는 다중 프로세서에서 실행될 수 있다. 단계, 동작 또는 계산이 특정 순서로 표시될 수 있지만 순서는 다른 특정 구현예에서 변경될 수 있다. 일부 구현예에서는 본 명세서에서 순차적으로 표시된 여러 단계 또는 동작이 동시에 수행될 수 있다.

Claims (20)

  1. 컴퓨터로 구현되는 방법으로서, 상기 방법은:
    대상 엔터티의 식별자를 획득하는 단계, 상기 식별자는 제1 통화 장치와 대상 엔터티 사이의 통화를 시작하기 위해 제1 통화 장치에 의해 사용가능하며;
    상기 통화가 현재 시간에 예상되는(prospective) 특정 시간에서 시작될 때 상기 통화가 인간 에이전트와 매칭되기 전까지의 추정 시간량인 보류 기간(hold duration)을 결정하는 단계, 상기 보류 기간은 하나 이상의 통화 장치들과 대상 엔터티 사이의 복수의 이전 통화들에 기초하여 결정되며; 및
    제1 통화 장치와 대상 엔터티 사이의 상기 통화 시작 전에 제1 통화 장치에 의해 디스플레이될 보류 기간을 제공하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  2. 제1항에 있어서,
    상기 식별자를 획득하는 단계, 상기 보류 기간을 결정하는 단계, 상기 디스플레이될 보류 기간을 제공하는 단계는 제1 통화 장치와 통신하는 서버 장치에 의해 수행되고, 상기 식별자를 획득하는 단계는 제1 통화 장치에 대한 사용자 입력에 기초하여 상기 식별자를 수신한 제1 통화 장치로부터 서버 장치에서 상기 식별자를 수신하는 단계를 포함하고, 그리고 상기 디스플레이될 보류 기간을 제공하는 단계는 서버 장치로부터 제1 통화 장치에 의해 디스플레이될 상기 보류 기간을 제1 통화 장치에 전송하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  3. 제1항에 있어서,
    상기 식별자를 획득하는 단계, 상기 보류 기간을 결정하는 단계, 상기 디스플레이될 보류 기간을 제공하는 단계는 제1 통화 장치에 의해 수행되고, 상기 보류 기간을 결정하는 단계는:
    보류 기간들을 저장하는 데이터 구조 또는 대상 엔터티 및 상기 특정 시간을 포함하는 입력들에 응답하여 보류 기간들을 출력하는 제1 통화 장치의 로컬 저장소에 저장된 기계 학습 모델에 액세스하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  4. 제1항에 있어서,
    상기 식별자를 획득하는 단계, 상기 보류 기간을 결정하는 단계, 상기 디스플레이될 보류 기간을 제공하는 단계는 제1 통화 장치에 의해 수행되고, 상기 보류 기간을 결정하는 단계는:
    통신 네트워크를 통해 서버 장치에 상기 보류 기간을 요청하는 단계,
    상기 식별자에 기초하여 상기 보류 기간을 결정하는 서버 장치에 제1 통화 장치로부터 상기 식별자를 전송하는 단계, 및
    제1 통화 장치와 대상 엔터티 사이의 상기 통화 시작 전에, 서버 장치로부터 제1 통화 장치에서 상기 보류 기간을 수신하는 단계를 포함하고,
    상기 보류 기간을 요청하는 단계는 대상 엔터티의 상기 식별자의 완성된 버전을 획득하기 전에 수행되는, 컴퓨터로 구현되는 방법.
  5. 제1항에 있어서,
    상기 보류 기간을 결정하는 단계는:
    기계 학습 모델, 상기 기계 학습 모델은 상기 식별자 및 통화 시간을 포함하는 입력들을 수신하고, 상기 통화에 대한 추정 보류 기간을 나타내는 결과를 출력하고, 상기 기계 학습 모델은 식별자들, 이전 통화들의 시작 시간들, 이전 통화들의 통화 기간들, 이전 통화들의 보류 기간들을 포함하는 트레이닝 데이터에 기초하여 트레이닝되며; 또는
    엔터티들에 대한 추정 보류 기간들을 저장하는 데이터 구조 중 하나의 사용에 기초하고, 상기 추정 보류 기간들은 복수의 이전 통화들에 기초하는, 컴퓨터로 구현되는 방법.
  6. 제1항에 있어서,
    하나 이상의 통화 장치들은 복수의 사용자들과 연관된 복수의 통화 장치들인, 컴퓨터로 구현되는 방법.
  7. 제1항에 있어서,
    상기 보류 기간은:
    하나 이상의 통화 장치들과 대상 엔터티 사이의 복수의 이전 통화들의 복수의 통화 기간들을 나타내는 통화 기간 데이터; 및
    이전 통화들의 복수의 보류 기간들을 나타내는 보류 기간 데이터에 기초하여 결정되는, 컴퓨터로 구현되는 방법.
  8. 제7항에 있어서,
    복수의 이전 통화들은 임계 기간보다 긴 통화 기간들을 가지고, 상기 임계 기간보다 짧은 통화 기간들을 갖는 통화들을 제외하며, 상기 복수의 보류 기간들 중 하나 이상의 보류 기간들은 임계 기간보다 긴 통화 기간들의 대응하는 통화 기간들에 기초하는, 컴퓨터로 구현되는 방법.
  9. 제8항에 있어서,
    상기 복수의 보류 기간들 중 하나 이상의 보류 기간들은 하나 이상의 이전 통화들의 통화 기간들에 기초하여 하나 이상의 보류 기간들을 추정하는 함수에 기초하여 결정되고, 상기 임계 기간 및 상기 함수는 식별자와 연관된 대상 엔터티에 커스터마이즈되는, 컴퓨터로 구현되는 방법.
  10. 제1항에 있어서,
    상기 보류 기간의 디스플레이와 연관되어 상기 특정 시간이 제1 통화 장치에 의해 디스플레이되게 하는 단계를 더 포함하고, 상기 특정 시간은 현재 시간보다 적어도 하루 전인, 컴퓨터로 구현되는 방법.
  11. 제1항에 있어서,
    복수의 예상(prospective) 통화들에 대한 복수의 보류 기간들을 결정하는 단계, 상기 복수의 보류 기간들은 보류 기간을 포함하고, 상기 복수의 보류 기간들 각각은 연관된 예상 통화가 현재 시간보다 앞서 각각의 통화 시간에서 시작될 때 연관된 예상 통화가 인간 에이전트와 매칭되기 전까지의 각각의 추정 시간량을 나타내고, 그리고 각각의 통화 시간들은 서로 상이하며; 및
    상기 복수의 보류 기간들이 각각의 통화 시간들과 연관되어 디스플레이되게 하는 단계를 더 포함하는, 컴퓨터로 구현되는 방법.
  12. 제11항에 있어서,
    상기 복수의 보류 기간들 중 특정 보류 기간 및 특정 보류 기간과 연관된 특정 통화 시간을 갖는 예상 통화를 선택하는 사용자 입력을 수신하는 단계; 및
    제1 통화 장치와 연관된 캘린더 내 상기 특정 통화 시간에 선택된 예상 통화를 스케쥴링하는 단계를 더 포함하는, 컴퓨터로 구현되는 방법.
  13. 제12항에 있어서,
    상기 특정 통화 시간이 다가오고 있거나 도착했음을 나타내는 알림이 제1 통화 장치에 의해 출력되게 하는 단계를 더 포함하는, 컴퓨터로 구현되는 방법.
  14. 제12항에 있어서,
    제1 통화 장치에 의해, 상기 특정 통화 시간에 제1 통화 장치와 대상 엔터티 사이의 통화를 자동으로 시작하는 단계를 더 포함하는, 컴퓨터로 구현되는 방법.
  15. 제1항에 있어서,
    상기 보류 기간이 디스플레이되게 하는 단계는 제1 통화 장치와 대상 엔터티 사이의 제1 통화 동안 수행되고, 제1 통화 장치와 대상 엔터티 사이의 통화는 제2 통화이고, 제1 통화는 제1 통화 장치와 대상 엔터티 사이의 제2 통화를 시작하게 하기 전에 시작되는, 컴퓨터로 구현되는 방법.
  16. 제1항에 있어서,
    제1 통화 장치와 대상 엔터티 사이의 통화가 종료된 후 사용자 피드백에 대한 프롬프트가 디스플레이되게 하는 단계;
    상기 보류 기간의 정확도를 나타내는 사용자 피드백을 수신하는 단계; 및
    사용자 피드백에 기초하여 상기 보류 기간을 결정하는 데 사용되는 데이터 구조 또는 모델을 업데이트하는 단계를 더 포함하는, 컴퓨터로 구현되는 방법.
  17. 통화에 대한 보류 기간 추정치를 제공하는 시스템으로서, 상기 시스템은:
    명령어들을 저장하는 메모리; 및
    메모리에 결합된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는 동작들을 수행하기 위해 메모리로부터 명령어들에 액세스하도록 구성되며, 상기 동작들은:
    대상 엔티티의 식별자를 획득하는 동작, 상기 식별자는 제1 통화 장치와 대상 엔티티 사이의 통화를 시작하기 위해 제1 통화 장치에 의해 사용가능하며;
    상기 통화가 현재 시간에 예상되는(prospective) 특정 시간에서 시작될 때 상기 통화가 인간 에이전트와 매칭되기 전까지의 추정 시간량인 보류 기간(hold duration)을 결정하는 동작, 상기 보류 기간은 하나 이상의 통화 장치들과 대상 엔티티 사이의 복수의 이전 통화들에 기초하여 결정되며; 및
    제1 통화 장치와 대상 엔티티 사이의 상기 통화 시작 전에 제1 통화 장치에 의해 디스플레이될 보류 기간을 제공하는 동작을 포함하는, 시스템.
  18. 제17항에 있어서,
    상기 보류 기간을 결정하는 동작은:
    하나 이상의 통화 장치들과 대상 엔터티 사이의 복수의 이전 통화들의 복수의 통화 기간들을 나타내는 통화 기간 데이터; 및
    이전 통화들의 복수의 보류 기간들을 나타내는 보류 기간 데이터에 기초하는, 시스템.
  19. 제17항에 있어서,
    상기 적어도 하나의 프로세서는 추가 동작들을 수행하며, 상기 추가 동작들은:
    상기 보류 기간을 포함하는 복수의 보류 기간들을 결정하는 동작, 상기 복수의 보류 기간들 각각은 상기 통화가 현재 시간에 예상되는 각각의 통화 시간에서 시작될 때 상기 통화가 인간 에이전트와 매칭되기 전까지의 각각의 추정 시간량을 나타내고, 그리고 각각의 통화 시간들은 서로 상이하며; 및
    상기 복수의 보류 기간들이 각각의 통화 시간들과 연관되어 디스플레이되게 하는 동작을 더 포함하는, 시스템.
  20. 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 동작들을 수행하게 하는 명령어들을 저장하는 비일시적 컴퓨터 판독가능 매체에 있어서, 상기 동작들은:
    대상 엔티티의 식별자를 획득하는 동작, 상기 식별자는 제1 통화 장치와 대상 엔티티 사이의 통화를 시작하기 위해 제1 통화 장치에 의해 사용가능하며;
    상기 통화가 현재 시간에 예상되는(prospective) 특정 시간에서 시작될 때 상기 통화가 인간 에이전트와 매칭되기 전까지의 추정 시간량인 보류 기간(hold duration)을 결정하는 동작, 상기 보류 기간은 하나 이상의 통화 장치들과 대상 엔티티 사이의 복수의 이전 통화들에 기초하여 결정되며; 및
    제1 통화 장치와 대상 엔티티 사이의 상기 통화 시작 전에 제1 통화 장치에 의해 디스플레이될 보류 기간을 제공하는 동작을 포함하는, 비일시적 컴퓨터 판독가능 매체.
KR1020237044863A 2021-08-24 2022-07-19 통화에 대한 추정 보류 기간 결정 및 디스플레이 KR20240046433A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163236648P 2021-08-24 2021-08-24
US63/236,648 2021-08-24
US17/540,849 US11765274B2 (en) 2021-08-24 2021-12-02 Determination and display of estimated hold durations for calls
US17/540,849 2021-12-02
PCT/US2022/037548 WO2023027832A1 (en) 2021-08-24 2022-07-19 Determination and display of estimated hold durations for calls

Publications (1)

Publication Number Publication Date
KR20240046433A true KR20240046433A (ko) 2024-04-09

Family

ID=82846634

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237044863A KR20240046433A (ko) 2021-08-24 2022-07-19 통화에 대한 추정 보류 기간 결정 및 디스플레이

Country Status (5)

Country Link
US (1) US20230388422A1 (ko)
EP (1) EP4393143A1 (ko)
KR (1) KR20240046433A (ko)
DE (1) DE112022004094T5 (ko)
WO (1) WO2023027832A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230367961A1 (en) * 2022-05-12 2023-11-16 Dell Products L.P. Automated address data determinations using artificial intelligence techniques

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7215759B2 (en) * 2001-12-12 2007-05-08 International Business Machines Corporation Hold queue wait estimations
US9124699B2 (en) * 2006-05-05 2015-09-01 Outlook Amusements, Inc. Systems and methods for expert communications
US11012568B2 (en) * 2009-01-28 2021-05-18 Virtual Hold Technology Solutions, Llc System and method for providing chat-based customer callbacks
US9866695B1 (en) * 2016-08-30 2018-01-09 Genesys Telecommunications Laboratories, Inc. System and method for predictive routing based on a customer journey patience
US11128754B1 (en) * 2020-11-16 2021-09-21 Allstate Insurance Company Machine learning system for routing optimization based on historical performance data

Also Published As

Publication number Publication date
WO2023027832A1 (en) 2023-03-02
EP4393143A1 (en) 2024-07-03
DE112022004094T5 (de) 2024-06-27
US20230388422A1 (en) 2023-11-30

Similar Documents

Publication Publication Date Title
US11349991B2 (en) Systems and methods to present voice message information to a user of a computing device
US9148394B2 (en) Systems and methods for user interface presentation of virtual agent
US9276802B2 (en) Systems and methods for sharing information between virtual agents
US9262175B2 (en) Systems and methods for storing record of virtual agent interaction
US9659298B2 (en) Systems and methods for informing virtual agent recommendation
US9679300B2 (en) Systems and methods for virtual agent recommendation for multiple persons
US9560089B2 (en) Systems and methods for providing input to virtual agent
US20140164532A1 (en) Systems and methods for virtual agent participation in multiparty conversation
US20140164953A1 (en) Systems and methods for invoking virtual agent
KR20190012255A (ko) 선택적으로 조종 가능한 상태 머신을 갖는 개인 보조 모듈 제공
US8594297B2 (en) System and method for enhanced call routing
EP2912567A1 (en) System and methods for virtual agent recommendation for multiple persons
US20230388422A1 (en) Determination and display of estimated hold durations for calls
US11765274B2 (en) Determination and display of estimated hold durations for calls
US20230396709A1 (en) System and method for mobile device active callback prioritization with predictive outcome scoring
US11895269B2 (en) Determination and visual display of spoken menus for calls
US20230040084A1 (en) Automatic call categorization and screening
CN117769831A (zh) 确定和显示用于呼叫的估计保持持续时间
US11842733B2 (en) Artificial intelligence system for tasks
WO2023027833A1 (en) Determination and visual display of spoken menus for calls
WO2022125078A1 (en) Identifying and providing requested user information during voice calls and video calls
WO2022125079A1 (en) Saving communicated information from voice calls and video calls