特許第6659910号(P6659910)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特許6659910データへのアクセス許可を要求するボット
<>
  • 特許6659910-データへのアクセス許可を要求するボット 図000002
  • 特許6659910-データへのアクセス許可を要求するボット 図000003
  • 特許6659910-データへのアクセス許可を要求するボット 図000004
  • 特許6659910-データへのアクセス許可を要求するボット 図000005
  • 特許6659910-データへのアクセス許可を要求するボット 図000006
  • 特許6659910-データへのアクセス許可を要求するボット 図000007
  • 特許6659910-データへのアクセス許可を要求するボット 図000008
  • 特許6659910-データへのアクセス許可を要求するボット 図000009
  • 特許6659910-データへのアクセス許可を要求するボット 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6659910
(24)【登録日】2020年2月10日
(45)【発行日】2020年3月4日
(54)【発明の名称】データへのアクセス許可を要求するボット
(51)【国際特許分類】
   G06F 21/62 20130101AFI20200220BHJP
   G06F 13/00 20060101ALI20200220BHJP
【FI】
   G06F21/62 345
   G06F13/00 650B
【請求項の数】20
【全頁数】29
(21)【出願番号】特願2019-505058(P2019-505058)
(86)(22)【出願日】2017年9月19日
(65)【公表番号】特表2019-530050(P2019-530050A)
(43)【公表日】2019年10月17日
(86)【国際出願番号】US2017052333
(87)【国際公開番号】WO2018057536
(87)【国際公開日】20180329
【審査請求日】2019年1月31日
(31)【優先権主張番号】62/397,047
(32)【優先日】2016年9月20日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】ファン、シェルビアン
(72)【発明者】
【氏名】ダン、リチャード
(72)【発明者】
【氏名】ボルコフ、アントン
(72)【発明者】
【氏名】ロドリゲス、アダム
【審査官】 宮司 卓佳
(56)【参考文献】
【文献】 特開2013−117938(JP,A)
【文献】 特開2009−048602(JP,A)
【文献】 特開2014−142919(JP,A)
【文献】 特開2002−073513(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
G06F 13/00
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実装される方法であって、
第1のユーザに関連する第1のコンピューティングデバイス上にメッセージングアプリケーションを提供して、前記第1のユーザと少なくとも1つの他のユーザとの間の通信を可能にすること、
前記メッセージングアプリケーションにおいてユーザ要求を検出すること、
前記ユーザ要求に応答するアクションが、前記第1のユーザに関連するデータへのアクセスを必要とすることをプログラム的に判定すること、
前記第1のユーザに関連するデータへのアクセスを前記第1のユーザが承認または禁止することを可能にする許可インタフェースを前記第1のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングさせること、
前記第1のユーザに関連するデータへのアクセスの承認を示すユーザ入力を前記第1のユーザから受信すると、前記第1のユーザに関連するデータにアクセスして、前記ユーザ要求に応答するアクションを実行すること
を含む方法。
【請求項2】
前記第1のユーザに関連するデータへのアクセスを禁止するユーザ入力を前記第1のユーザから受信すると、前記アクションが実行されないという標示を前記メッセージングアプリケーションに提供することをさらに含む、請求項1に記載のコンピュータにより実装される方法。
【請求項3】
前記第1のユーザは人間のユーザであり、前記少なくとも1つの他のユーザは支援エージェントである、請求項1に記載のコンピュータにより実装される方法。
【請求項4】
前記第1のユーザは人間のユーザであり、前記少なくとも1つの他のユーザは、前記第1のユーザとは異なる、第2のコンピューティングデバイスに関連する第2の人間のユーザを含み、前記許可インタフェースを前記第1のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングさせることは、前記許可インタフェースを前記第1のコンピューティングデバイス上にローカルに表示することを含む、請求項1に記載のコンピュータにより実装される方法。
【請求項5】
前記第1のユーザに関連するデータへのアクセスを禁止するユーザ入力を前記第1のユーザから受信すると、前記第1のユーザに関連する前記第1のコンピューティングデバイス上にレンダリングするための第1の標示を提供することをさらに含み、前記第1の標示は、前記第1のユーザが前記第1のユーザに関連するデータへのアクセスを禁止していること、および前記アクションを実行することができないことの標示を含む、請求項4に記載のコンピュータにより実装される方法。
【請求項6】
前記少なくとも1つの他のユーザに関連する第2のコンピューティングデバイス上にレンダリングするための第2の標示を提供することをさらに含み、前記第1の標示および前記第2の標示は、前記ユーザ要求に応えることの失敗を示すものであり、前記第1の標示および前記第2の標示は異なっている、請求項5に記載のコンピュータにより実装される方法。
【請求項7】
前記第1の標示および前記第2の標示は、異なるテキストコンテンツ、異なるスタイル、および異なるフォーマットのうちの1つまたは複数を有する、請求項6に記載のコンピュータにより実装される方法。
【請求項8】
前記第1のユーザは人間のユーザであり、前記少なくとも1つの他のユーザは、前記第1のユーザとは異なる第2の人間のユーザと、支援エージェントとを含み、前記ユーザ要求は、前記第1のユーザに関連する前記第1のコンピューティングデバイス上で受信され、前記方法は、前記ユーザ要求に応答して、前記メッセージングアプリケーションにおいて別個の会話を開始することをさらに含み、前記別個の会話は、前記第1のユーザと前記支援エージェントとを含み、前記第2の人間のユーザを除外している、請求項1に記載のコンピュータにより実装される方法。
【請求項9】
前記ユーザ要求を検出することは、前記第1のユーザおよび前記少なくとも1つの他のユーザのうちの一または複数から前記メッセージングアプリケーションにおいて受信された1つまたは複数のメッセージを分析することを含む、請求項1に記載のコンピュータにより実装される方法。
【請求項10】
前記1つまたは複数のメッセージは、テキストメッセージ、マルチメディアメッセージ、および支援エージェントへのコマンドのうちの1つまたは複数を含む、請求項9に記載のコンピュータにより実装される方法。
【請求項11】
前記ユーザ要求に応答するアクションを実行することは、第1のメッセージングアプリケーションにおいて1つまたは複数のユーザ選択可能な提案を提供することを含み、前記1つまたは複数のユーザ選択可能な提案から特定の提案をユーザが選択すると、対応するメッセージが第1のデバイスから前記少なくとも1つの他のユーザのデバイスに送信される、請求項1に記載のコンピュータにより実装される方法。
【請求項12】
前記1つまたは複数の提案を前記メッセージングアプリケーションにおいてレンダリングさせることをさらに含む、請求項11に記載のコンピュータにより実装される方法。
【請求項13】
前記1つまたは複数の提案は、前記第1のユーザによって選択されたときに前記提案についての詳細を表示させる提案要素としてレンダリングされる、請求項12に記載のコンピュータにより実装される方法。
【請求項14】
コンピュータにより実装される方法であって、
第1のコンピューティングデバイス上で実行されているメッセージングアプリケーションにおいて、第1のユーザからのユーザ要求を検出すること、
前記ユーザ要求に応答するアクションが、前記第1のユーザに関連するデータへのアクセスを必要とすることをプログラム的に判定すること、
前記第1のユーザに関連するデータへのアクセスを前記第1のユーザが承認または禁止することを可能にする許可インタフェースを前記第1のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングさせること、
前記許可インタフェースにおいて前記第1のユーザからの承認を受信すると、前記第1のユーザに関連するデータにアクセスし、前記ユーザ要求に応答するアクションを実行すること
を含む方法。
【請求項15】
前記第1のユーザに関連するデータへのアクセスを禁止するユーザ入力を前記第1のユーザから受信すると、前記アクションが実行されないという標示を前記メッセージングアプリケーションに提供することをさらに含む、請求項14に記載のコンピュータにより実装される方法。
【請求項16】
前記第1のユーザに関連するデータへのアクセスを禁止するユーザ入力を前記第1のユーザから受信すると、
前記メッセージングアプリケーションにおいてレンダリングするための第1の標示を提供すること、
少なくとも1つの他のユーザに関連する第2のメッセージングアプリケーションにおいてレンダリングするための第2の標示を提供すること
をさらに含み、前記第1の標示および前記第2の標示は、前記ユーザ要求に応えることの失敗を示すものであり、前記第1の標示および前記第2の標示は異なっている、請求項14に記載のコンピュータにより実装される方法。
【請求項17】
1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに動作を実施させる命令を記憶した非一時的コンピュータ可読媒体に結合された1つまたは複数のプロセッサを備えるシステムであって、前記動作は、
第1のユーザに関連する第1のコンピューティングデバイス上にメッセージングアプリケーションを提供して、前記第1のユーザと少なくとも1つの他のユーザとの間の通信を可能にすること、
前記メッセージングアプリケーションにおいてユーザ要求を検出すること、
前記ユーザ要求に応答するアクションが、前記第1のユーザに関連するデータへのアクセスを必要とすることをプログラム的に判定すること、
前記第1のユーザに関連するデータへのアクセスを前記第1のユーザが承認または禁止することを可能にする許可インタフェースを前記第1のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングさせること、
前記第1のユーザに関連するデータへのアクセスの承認を示すユーザ入力を前記第1のユーザから受信すると、前記第1のユーザに関連するデータにアクセスして、前記ユーザ要求に応答するアクションを実行すること
を含む、システム。
【請求項18】
前記動作は、前記第1のユーザに関連するデータへのアクセスを禁止するユーザ入力を前記第1のユーザから受信すると、前記アクションが実行されないという標示を前記メッセージングアプリケーションに提供することをさらに含む、請求項17に記載のシステム。
【請求項19】
前記第1のユーザは人間のユーザであり、前記少なくとも1つの他のユーザは支援エージェントである、請求項17に記載のシステム。
【請求項20】
前記第1のユーザは人間のユーザであり、前記少なくとも1つの他のユーザは、前記第1のユーザとは異なる第2の人間のユーザと、支援エージェントとを含み、前記ユーザ要求は、前記第1のユーザに関連する前記第1のコンピューティングデバイス上で受信され、前記動作は、前記ユーザ要求に応答して、前記メッセージングアプリケーションにおいて別個の会話を開始することをさらに含み、前記別個の会話は、前記第1のユーザと前記支援エージェントとを含み、前記第2の人間のユーザを除外している、請求項17に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、「BOT PERMISSIONS」と題され、2016年9月20日に出願された米国特許出願第62/397,047号の利益を主張し、その全体が参照により本明細書に組み込まれる。
【背景技術】
【0002】
ユーザは、メッセージングサービスを使用して、チャット、インスタントメッセージなどのメッセージング会話を行う。メッセージング会話は、任意のユーザデバイス、例えばコンピュータ、モバイルデバイス、ウェアラブルデバイスなどを使用して実施することができる。ユーザがメッセージングアプリケーションを使用してより多くの会話を行い、より多くのタスクを実行するにつれて、(例えばボットまたは他の自動化されたアシスタントアプリケーションを介した)メッセージング会話またはタスクへの自動化された支援が効率改善に役に立つ可能性がある。自動化はユーザがメッセージング通信をより効率的に行うのを助けることができるが、メッセージングボットがいつどのようにユーザ情報にアクセスするか、およびメッセージングボットがどのユーザ情報にアクセスすることを許可されているかに関する許可を管理する必要があり得る。
【0003】
本明細書で提供される背景の説明は、本開示の状況を概略的に提示することを目的としている。本発明者らの成果は、本背景技術の欄に記載されている限りにおいて、出願時に先行技術として適格ではない可能性がある記載の態様と同様に、明示的にも暗示的にも本開示に対する先行技術として認めたものではない。
【発明の概要】
【0004】
いくつかの実装形態は、コンピュータにより実装される方法を含むことができ、本方法は、第1のユーザに関連する第1のコンピューティングデバイス上にメッセージングアプリケーションを提供して、第1のユーザと少なくとも1つの他のユーザとの間の通信を可能にすること、メッセージングアプリケーションにおいてユーザ要求を検出することを含み得る。本方法は、ユーザ要求に応答するアクションが、第1のユーザに関連するデータへのアクセスを必要とすることをプログラム的に判定すること、第1のユーザに関連するデータへのアクセスを第1のユーザが承認または禁止することを可能にする許可インタフェースを第1のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングさせることも含み得る。本方法はさらに、第1のユーザに関連するデータへのアクセスの承認を示すユーザ入力を第1のユーザから受信すると、第1のユーザに関連するデータにアクセスして、ユーザ要求に応答するアクションを実行することを含み得る。
【0005】
本方法は、第1のユーザに関連するデータへのアクセスを禁止するユーザ入力を第1のユーザから受信すると、タスクが実行されないという標示をメッセージングアプリケーションに提供することも含み得る。いくつかの実装形態においては、第1のユーザは人間のユーザを含み、少なくとも1つの他のユーザは支援エージェントを含むことができる。
【0006】
いくつかの実装形態においては、第1のユーザは人間のユーザであり、少なくとも1つの他のユーザは、第1のユーザとは異なる、第2のコンピューティングデバイスに関連する第2の人間のユーザを含む。許可インタフェースは、第1のユーザに関連する第1のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングされることができ、許可インタフェースは、第2の人間のユーザに関連する第2のコンピューティングデバイス上には表示されない。
【0007】
本方法は、第1のユーザに関連するデータへのアクセスを禁止するユーザ入力を第1のユーザから受信すると、第1のユーザに関連する第1のコンピューティングデバイス上にレンダリングするための第1の標示を提供することをさらに含み得る。本方法は、少なくとも1つの他のユーザに関連する第2のコンピューティングデバイス上にレンダリングするための第2の標示を提供することも含むことができ、第1の標示および第2の標示は、ユーザ要求に応えることの失敗を示すものであり、第1の標示および第2の標示は異なっている。
【0008】
いくつかの実装形態においては、第1の標示および第2の標示は、異なるテキストコンテンツ、異なるスタイル、および異なるフォーマットのうちの1つまたは複数を含み得る。いくつかの実装形態においては、第1のユーザは人間のユーザを含み、少なくとも1つの他のユーザは、第1のユーザとは異なる第2の人間のユーザと、支援エージェントとを含む。ユーザ要求は、第1のユーザに関連する第1のコンピューティングデバイスから受信されることができる。本方法は、ユーザ要求に応答して、メッセージングアプリケーションにおいて別個の会話を開始することも含み得る。別個の会話は、第1のユーザと支援エージェントとを含むことができ、第2の人間のユーザを含まない。
【0009】
いくつかの実装形態においては、ユーザ要求を検出することは、第1のユーザおよび少なくとも1つの他のユーザのうちの一または複数からメッセージングアプリケーションにおいて受信された1つまたは複数のメッセージを分析することを含む。1つまたは複数のメッセージは、テキストメッセージ、マルチメディアメッセージ、および支援エージェントへのコマンドのうちの1つまたは複数を含み得る。ユーザ要求に応答するアクションを実行することは、第1のメッセージングアプリケーションへ1つまたは複数の提案を提供することを含む。
【0010】
本方法は、1つまたは複数の提案をメッセージングアプリケーションにおいてレンダリングさせることも含み得る。1つまたは複数の提案は、第1のユーザによって選択されたときに提案についての詳細を表示させる提案要素としてレンダリングされることができる。
【0011】
いくつかの実装形態においては、コンピュータにより実装される方法を含むことができる。本方法は、メッセージングアプリケーションにおいてユーザ要求を検出すること、ユーザ要求に応答するアクションが、第1のユーザに関連するデータへのアクセスを必要とすることをプログラム的に判定することを含み得る。本方法は、第1のユーザに関連するデータへのアクセスを第1のユーザが承認または禁止することを可能にする許可インタフェースを第1のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングさせることも含み得る。本方法は、さらに、許可インタフェースにおいて第1のユーザからの承認を受信すると、第1のユーザに関連するデータにアクセスし、ユーザ要求に応答するアクションを実行することを含み得る。
【0012】
本方法は、第1のユーザに関連するデータへのアクセスを禁止するユーザ入力を第1のユーザから受信すると、タスクが実行されないという標示をメッセージングアプリケーションに提供することも含み得る。本方法は、第1のユーザに関連するデータへのアクセスを禁止するユーザ入力を第1のユーザから受信すると、メッセージングアプリケーションにおいてレンダリングするための第1の標示を提供することをさらに含み得る。本方法は、少なくとも1つの他のユーザに関連する第2のメッセージングアプリケーションにおいてレンダリングするための第2の標示を提供することも含むことができ、第1の標示および第2の標示は、ユーザ要求に応えることの失敗を示すものであり、第1の標示および第2の標示は異なっている。
【0013】
いくつかの実装形態は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに動作を実施させる命令を記憶した非一時的コンピュータ可読媒体に結合された1つまたは複数のプロセッサを備えるシステムを含み得る。動作は、第1のユーザに関連する第1のコンピューティングデバイス上にメッセージングアプリケーションを提供して、第1のユーザと少なくとも1つの他のユーザとの間の通信を可能にすること、メッセージングアプリケーションにおいてユーザ要求を検出することを含み得る。動作は、ユーザ要求に応答するアクションが、第1のユーザに関連するデータへのアクセスを必要とすることをプログラム的に判定すること、第1のユーザに関連するデータへのアクセスを第1のユーザが承認または禁止することを可能にする許可インタフェースを第1のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングさせることも含み得る。動作は、さらに、第1のユーザに関連するデータへのアクセスの承認を示すユーザ入力を第1のユーザから受信すると、第1のユーザに関連するデータにアクセスして、ユーザ要求に応答するアクションを実行することを含み得る。
【0014】
動作は、第1のユーザに関連するデータへのアクセスを禁止するユーザ入力を第1のユーザから受信すると、タスクが実行されないという標示をメッセージングアプリケーションに提供することも含み得る。いくつかの実装形態においては、第1のユーザは人間のユーザを含み、少なくとも1つの他のユーザは支援エージェントを含むことができる。いくつかの実装形態においては、第1のユーザは人間のユーザを含み、少なくとも1つの他のユーザは、第1のユーザとは異なり、第2のコンピューティングデバイスに関連する第2の人間のユーザを含むことができる。許可インタフェースは、第1のユーザに関連する第1のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングされることができ、第2の人間のユーザに関連する第2のコンピューティングデバイス上には表示されない。
【図面の簡単な説明】
【0015】
図1】いくつかの実装形態によるメッセージがユーザとボットとの間で交換され得る例示的な環境のブロック図である。
図2】いくつかの実装形態によるユーザデバイスおよびボット通信の例示的な構成の図である。
図3】いくつかの実装形態によるユーザデバイスおよびボット通信の例示的な構成の図である。
図4】いくつかの実装形態によるユーザデバイスおよびボット通信の例示的な構成の図である。
図5】いくつかの実装形態によるボット許可を管理するための例示的な方法のフロー図である。
図6】いくつかの実装形態によるボットメッセージングを伴う例示的なユーザインタフェースの図である。
図7】いくつかの実装形態によるボットメッセージングを伴う例示的なユーザインタフェースの図である。
図8】いくつかの実装形態によるボット許可を管理するための例示的な方法のフロー図である。
図9】いくつかの実装形態によるボット許可を管理するように構成された例示的なコンピューティングデバイスの図である。
【発明を実施するための形態】
【0016】
本明細書で説明される1つまたは複数の実装形態は、メッセージングアプリケーションボットのための許可制御および管理に関する。
図1は、自動支援エージェントを可能とし、いくつかの実施形態では自動支援エージェントを提供するメッセージングサービスを提供するための例示的な環境100のブロック図を示す。例示的な環境100は、メッセージングサーバ101、1つまたは複数のクライアントデバイス115a、115n、サーバ135、およびネットワーク140を含む。ユーザ125a〜125nは、それぞれのクライアントデバイス115a、115nに関連付けられることができる。サーバ135は、例えば、メッセージングサービスを提供する当事者とは異なる当事者によって制御されるサードパーティサーバであり得る。様々な実装形態では、以下でさらに詳細に説明するように、サーバ135はボットサービスを実装することができる。いくつかの実装形態では、環境100は、図1に示されている1つまたは複数のサーバまたはデバイスを含まないことがあり、または図1に示されない他のサーバまたはデバイスを含むことがある。図1および残りの図において、参照番号の後の文字、例えば「115a」は、その特定の参照番号を有する要素への参照を表す。後続の文字を除いた本文中の参照番号、例えば「115」は、その参照番号を有する要素の実装に対する一般的な参照を表す。
【0017】
図示の実装形態では、メッセージングサーバ101、クライアントデバイス115、およびサーバ135は、ネットワーク140を介して通信可能に結合されている。様々な実装形態では、ネットワーク140は、有線または無線の従来型のものとすることができ、星型構成、トークンリング構成または他の構成を含む多数の異なる構成をとることができる。さらに、ネットワーク140は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)(例えばインターネット)、および/または複数のデバイスが通信することができる他の相互接続されたデータパスを含むことができる。いくつかの実装形態では、ネットワーク140はピアツーピアネットワークであってよい。ネットワーク140は、様々な異なる通信プロトコルでデータを送信するために電気通信ネットワークの一部に結合されるかまたはその一部を含むこともできる。いくつかの実装形態では、ネットワーク140は、ショートメッセージングサービス(SMS)、マルチメディアメッセージングサービス(MMS)、ハイパーテキスト転送プロトコル(HTTP)、直接データ接続、電子メールなどを介することを含むデータの送受信のための、ブルートゥース(登録商標)通信ネットワーク、Wi−Fi(登録商標)、またはセルラー通信ネットワークを含む。図1は、クライアントデバイス115、メッセージングサーバ101、およびサーバ135に結合された1つのネットワーク140を示しているが、実際には、1つまたは複数のネットワーク140が、これらのエンティティに結合し得る。
【0018】
メッセージングサーバ101は、プロセッサ、メモリ、およびネットワーク通信機能を含み得る。いくつかの実装形態では、メッセージングサーバ101は、ハードウェアサーバである。いくつかの実装形態では、メッセージングサーバ101は、仮想化環境に埋め込まれ得る。例えば、メッセージングサーバ101は、1つまたは複数の他の仮想マシンを含み得るハードウェアサーバ上で実行される仮想マシンであってよい。メッセージングサーバ101は、信号線102を介してネットワーク140に通信可能に結合されている。信号線102は、イーサネット(登録商標)、同軸ケーブル、光ファイバケーブルなどのような有線接続、またはWi−Fi、ブルートゥース、または他の無線技術などの無線接続とすることができる。いくつかの実装形態では、メッセージングサーバ101は、ネットワーク140を介して、クライアントデバイス115a〜115n、サーバ135、およびボット113のうちの1つまたは複数との間でデータを送受信する。いくつかの実装形態では、メッセージングサーバ101は、ユーザ(例えば、ユーザ125のうちのいずれか)が他のユーザおよび/またはボットとメッセージを交換することを可能にするためのクライアント機能を提供するメッセージングアプリケーション103aを含み得る。メッセージングアプリケーション103aは、サーバアプリケーション、クライアント−サーバアプリケーションのサーバモジュール、または(例えば、1つまたは複数のクライアントデバイス115上の対応するクライアントメッセージングアプリケーション103bを有する)分散アプリケーションとすることができる。
【0019】
メッセージングサーバ101は、メッセージングサーバ101を介して交換されたメッセージ、1つまたは複数のボットのデータおよび/または構成、ならびに1つまたは複数のユーザ125に関連するユーザデータを、それぞれのユーザからそのようなデータを格納するための明示的な許可がある場合には格納することができるデータベース199も含む。いくつかの実施形態では、メッセージングサーバ101は、1つまたは複数の支援エージェント、例えばボット107aおよび111を含むことができる。他の実施形態では、支援エージェントは、メッセージングサーバ101上ではなく、クライアントデバイス115a〜n上に実装され得る。
【0020】
メッセージングアプリケーション103aは、ユーザ125と1つまたは複数のボット105、107a、107b、109a、109b、111、および113との間のメッセージの交換を可能にするためのプロセッサによって動作可能なコードおよびルーチンであり得る。いくつかの実装形態では、メッセージングアプリケーション103aは、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向け集積回路(ASIC)を含むハードウェアを使用して実装され得る。いくつかの実装形態では、メッセージングアプリケーション103aは、ハードウェアとソフトウェアとの組み合わせを使用して実装され得る。
【0021】
様々な実装形態では、クライアントデバイス115に関連するそれぞれのユーザが、メッセージの格納について同意したときに、データベース199は、1つまたは複数のクライアントデバイス115間で交換されたメッセージを格納することができる。いくつかの実装形態では、クライアントデバイス115に関連するそれぞれのユーザがメッセージの格納について同意したときに、データベース199は、1つまたは複数のクライアントデバイス115と、例えば他のクライアントデバイス、メッセージングサーバ101、およびサーバ135などの異なるデバイス上に実装された1つまたは複数のボットとの間で交換されるメッセージを格納し得る。一または複数のユーザが同意しない実装形態では、それらのユーザによって送受信されたメッセージは格納されない。
【0022】
いくつかの実装形態では、メッセージは、例えば、メッセージの送信者および受信者だけが暗号化されたメッセージを見ることができるように暗号化されてもよい。いくつかの実装形態では、メッセージが格納されている。いくつかの実装形態では、データベース199は、例えば、ボット107a、ボット111などの1つまたは複数のボットのデータおよび/または構成をさらに格納することができる。ユーザ125が、(ソーシャルネットワークデータ、連絡先情報、画像などのような)ユーザデータの格納に同意するいくつかの実装形態では、データベース199はそのような同意を提供したそれぞれのユーザ125に関連するユーザデータを格納することもできる。
【0023】
いくつかの実装形態では、メッセージングアプリケーション103a/103bは、ユーザ125が新しいボットを作成することを可能にするユーザインタフェースを提供することができる。これらの実装形態では、メッセージングアプリケーション103a/103bは、メッセージングアプリケーション103a/103bのユーザ間の会話にユーザ作成ボットを含めることを可能にする機能を含み得る。
【0024】
クライアントデバイス115は、メモリおよびハードウェアプロセッサを含むコンピューティングデバイス、例えば、カメラ、ラップトップコンピュータ、タブレットコンピュータ、携帯電話、ウェアラブルデバイス、モバイル電子メールデバイス、携帯型ゲーム機、携帯型音楽プレーヤー、リーダデバイス、ヘッドマウントディスプレイ、またはネットワーク140に無線でアクセスすることができる他の電子デバイスなどであり得る。
【0025】
図示の実装形態では、クライアントデバイス115aは信号線108を介してネットワーク140に結合され、クライアントデバイス115nは信号線110を介してネットワーク140に結合されている。信号線108および110は、例えばイーサネットなどの有線接続、またはWi−Fi、ブルートゥース、または他の無線技術などの無線接続とすることができる。クライアントデバイス115a、115nは、それぞれユーザ125a、125nによってアクセスされる。図1のクライアントデバイス115a、115nは例として用いられている。図1は2つのクライアントデバイス115aおよび115nを示しているが、本開示は1つまたは複数のクライアントデバイス115を有するシステムアーキテクチャに適用される。
【0026】
いくつかの実装形態では、クライアントデバイス115は、ユーザ125によって着用されるウェアラブルデバイスであり得る。例えば、クライアントデバイス115は、クリップ(例えば、リストバンド)の一部、宝飾品の一部、または眼鏡の一部として含まれてもよい。別の例では、クライアントデバイス115は、スマートウォッチとすることができる。様々な実装形態では、ユーザ125は、デバイスのディスプレイ上でメッセージングアプリケーション103a/103bからのメッセージを閲覧することができ、スピーカまたはデバイスの他の出力デバイスなどを介してメッセージにアクセスすることができる。例えば、ユーザ125は、スマートウォッチやスマートリストバンドのディスプレイ上でメッセージを閲覧することができる。別の例では、ユーザ125は、クライアントデバイス115に結合された、またはその一部であるヘッドホン(図示せず)、クライアントデバイス115のスピーカ、クライアントデバイス115の触覚フィードバック要素などを介してメッセージにアクセスすることができる。
【0027】
いくつかの実装形態では、メッセージングアプリケーション103bはクライアントデバイス115aに格納されている。いくつかの実装形態では、メッセージングアプリケーション103b(例えば、シンクライアントアプリケーション、クライアントモジュールなど)は、メッセージングサーバ101に格納されている対応するメッセージングアプリケーション103a(例えば、サーバアプリケーション、サーバモジュールなど)を有するクライアントデバイス115aに格納されているクライアントアプリケーションであり得る。例えば、メッセージングアプリケーション103bは、クライアントデバイス115a上のユーザ125aによって作成されたメッセージをメッセージングサーバ101に格納されているメッセージングアプリケーション103aに送信することができる。
【0028】
いくつかの実装形態では、メッセージングアプリケーション103aは、メッセージングサーバ101に格納されているスタンドアロンアプリケーションとすることができる。ユーザ125aは、クライアントデバイス115a上のブラウザまたは他のソフトウェアを使用してウェブページを介してメッセージングアプリケーション103aにアクセスすることができる。いくつかの実装形態では、クライアントデバイス115a上に実装されているメッセージングアプリケーション103bは、メッセージングサーバ101上に含まれているものと同じまたは類似のモジュールを含むことができる。いくつかの実装形態では、メッセージングアプリケーション103bは、例えば、1つまたは複数のクライアントデバイス115が他のクライアントデバイス115とのメッセージ交換を可能にする機能を含むピアツーピアまたは他の構成で、スタンドアロンクライアントアプリケーションとして実装され得る。これらの実装形態では、メッセージングサーバ101は、限定されたメッセージング機能(例えば、クライアント認証、バックアップなど)を含むか、またはそのような機能を含まない可能性がある。いくつかの実装形態では、メッセージングサーバ101は、1つまたは複数のボット、例えばボット107aおよびボット111を実装することができる。
【0029】
サーバ135は、プロセッサ、メモリ、およびネットワーク通信機能を含み得る。いくつかの実装形態では、サーバ135はハードウェアサーバである。サーバ135は、信号線128を介してネットワーク140に通信可能に結合されている。信号線128は、イーサネット、同軸ケーブル、光ファイバケーブルなどのような有線接続、またはWi−Fi、ブルートゥース、または他の無線技術などの無線接続とすることができる。いくつかの実装形態では、サーバ135は、ネットワーク140を介してメッセージングサーバ101およびクライアントデバイス115のうちの1つまたは複数との間でデータを送受信する。サーバ135は1つのサーバとして示されているが、様々な実装態様は1つまたは複数のサーバ135を含み得る。サーバ135は、サーバアプリケーションまたはサーバモジュールとして1つまたは複数のボット、例えばボット109aおよびボット113を実装することができる。
【0030】
様々な実装形態では、サーバ135は、メッセージングサーバ101を管理するのと同じエンティティ、例えばメッセージングサービスのプロバイダの一部とすることができる。いくつかの実装形態では、サーバ135は、例えば、メッセージングアプリケーション103a/103bを提供するエンティティとは異なるエンティティによって制御されるサードパーティサーバとすることができる。いくつかの実装形態では、サーバ135はボットを提供またはホストする。
【0031】
ボットは自動化されたサービスで、1つまたは複数のコンピュータに実装されており、ユーザは主にテキストを通じて、例えばメッセージングアプリケーション103a/103bを介して対話する。ボットは、ボットが様々なメッセージングアプリケーションのユーザと対話できるように、ボットプロバイダによって実装され得る。いくつかの実装形態では、メッセージングアプリケーション103a/103bのプロバイダは、1つまたは複数のボットを提供することもある。いくつかの実装形態では、メッセージングアプリケーション103a/103bのプロバイダによって提供されるボットは、ボットが他のメッセージングアプリケーションに含まれることができるように、例えば他のプロバイダによって提供されるように構成され得る。ボットは他のモードに比べていくつかの利点を提供することが可能である。例えば、ボットは、クライアントデバイスにアプリケーションをインストールしたり、ウェブサイトにアクセスしたりすることなく、ユーザが新しいサービス(例えば、タクシー予約サービス、レストラン予約サービスなど)を試すことを許可することができる。さらに、ユーザは、テキストを介してボットと対話することができ、これは、ウェブサイト、ソフトウェアアプリケーション、電話通話、例えば、対話式音声応答(interactive voice response:IVR)サービス、またはサービスとやり取りする他の方法を使用するのに必要な学習と比較して、最小限の学習しか必要とせず、または全く学習を必要としない。メッセージングサービスまたはアプリケーションにボットを組み込むことで、ユーザは、メッセージングサービス内で旅行の計画、買い物、イベントのスケジュール、情報の取得などのさまざまなタスクを他のユーザと協力することも可能となり、タスクを実行するためのさまざまなアプリケーション(例えば、タクシー予約アプリケーション、レストラン予約アプリケーション、カレンダーアプリケーションなど)間またはWebサイト間での切り替えのような面倒な操作を排除することができる。
【0032】
ボットは、メッセージングアプリケーション103a/103bを介して一または複数のユーザ(例えば、ユーザ125a〜nのうちのいずれか)と対話して情報を提供するか、またはメッセージングアプリケーション103内で特定のアクションを実施するように構成されたコンピュータプログラムまたはアプリケーション(例えば、ソフトウェアアプリケーション)として実装されてもよい。一例として、情報検索ボットは、インターネット上の情報を検索し、メッセージングアプリ内で最も関連性の高い検索結果を提示することができる。別の例として、トラベルボットは、例えば、メッセージングアプリ内で旅行およびホテルのチケットの購入を可能にし、メッセージングアプリ内でホテルを予約し、メッセージングアプリ内でレンタカーを予約することなどによって、メッセージングアプリケーション103を介して旅行手配をする能力を有し得る。別の例として、タクシーボットは、別個のタクシー予約アプリを起動することも呼び出すこともせずに、例えば、(ユーザ125が位置情報へのアクセスを許可する場合にクライアントデバイス115からタクシーボットによって取得される)ユーザの位置にタクシーを呼び出す能力を有し得る。別の例として、コーチ/チューターボットは、ユーザを個人指導して、例えば、試験に現れる可能性がある質問をし、ユーザの応答が正しいか誤っているかについてのフィードバックを提供することによって、メッセージングアプリ内のいくつかの科目の内容についてユーザを指導し得る。別の例として、ゲームボットは、メッセージングアプリ内においてユーザとは反対サイドまたは同じサイドでゲームをプレイすることができる。別の例として、コマーシャルボットは、例えば、商人のカタログから製品情報を検索し、メッセージングアプリを通じて購入を可能とすることによって、特定の商人からサービスを提供することができる。別の例として、インタフェースボットは、メッセージングアプリのユーザが遠隔デバイスまたは車両とチャットし、そこから情報を検索し、および/または遠隔デバイスまたは車両に命令を提供できるように遠隔デバイスまたは車両とインタフェースしてもよい。
【0033】
ボットの機能には、ユーザの意図を理解して実行することが含まれ得る。ユーザの意図は、ユーザの会話およびその文脈を分析し理解することによって理解され得る。ボットは、会話の変化するコンテキスト、または時間の経過とともに進化する会話に基づくユーザの変化する感情および/または意図を理解することもできる。例えば、ユーザAがコーヒーのための会議を提案したが、ユーザBがコーヒーを好まないと述べた場合、ボットはユーザBにコーヒーに対する否定的な感情スコアを割り当て、会議のためにコーヒーショップを提案しない可能性がある。
【0034】
メッセージングアプリケーション103a/103bのユーザと通信することができるボットを実装することは、多くの利点を提供することができる。従来、ユーザは、請求書の支払い、食べ物の注文、チケットの予約などの活動を実行するためにソフトウェアアプリケーションまたはウェブサイトを利用することがある。そのような実施に関する問題は、複数の活動を実行するために、ユーザが複数のソフトウェアアプリケーションやウェブサイトをインストールまたは使用することを要求されることである。例えば、ユーザは、(例えば、公益事業会社からの)公共料金の請求書に対する支払いをするため、映画のチケットを購入するため(例えば、チケットサービスプロバイダからのチケット予約アプリケーション)、(例えばそれぞれのレストランから)レストランの予約をするために、異なるソフトウェアアプリケーションをインストールしなければならない場合があり、または各活動のためにそれぞれのウェブサイトを訪問する必要があり得る。そのような実施に関する別の問題は、ユーザが複雑なユーザインタフェース、例えばウィンドウ、ボタン、チェックボックス、ダイアログボックスなどのような複数のユーザインタフェース要素を使用して実装されたユーザインタフェースなどを学習しなくてはならないことである。
【0035】
したがって、1つまたは複数の説明された実装形態の利点は、単一のアプリケーションが、別個のウェブサイトへのアクセスまたはソフトウェアアプリケーションのインストールおよび実行を必要とせずに、ユーザが任意の数の相手との対話を含むアクティビティを実行できることであり、これはクライアントデバイス上のメモリ、ストレージ、および処理リソースの消費を削減する技術的効果を有する。説明された実装形態の利点は、会話型インタフェースにより、ユーザが、例えば複雑なユーザインタフェースを学習する必要なしに、そのような活動を完了することをより簡単かつ迅速とすることであり、これは計算リソースの消費を低減するという技術的効果を有する。説明された実装形態の別の利点は、ボットを実装することによって、例えば、通信サーバ、1つまたは複数のWebサーバでホストされているWebサイト、EメールサーバでホストされているカスタマーサポートEメールなどのうちの一つまたは複数を使用して実装された無料電話番号など、様々な参加エンティティがより低いコストでユーザ対話を提供できるようになることであり、これは、ユーザ対話を可能とするために展開される計算リソースの必要性を減らすことができるという技術的効果を有する。説明された特徴の他の技術的効果は、通信ネットワークにわたってユーザタスクを完了するために必要とされるシステム処理および伝送リソースの消費の問題の縮小である。
【0036】
本明細書における特定の例は、ボットと一または複数のユーザとの間の対話を説明しているが、ボットとユーザ125との間の1対1の対話、ボットと二以上のユーザとの間の(例えば、グループメッセージングの会話における)1対多の対話、複数のボットとユーザとの間の多対1の対話、および複数のボットと複数のユーザとの間の多対多の対話などの様々なタイプの対話が可能である。さらに、いくつかの実装形態では、ボットは、メッセージングアプリケーション103を介して、ボット間の直接通信を介して、または組み合わせにより、他のボット(例えば、ボット107a/107b、109a/109b、111、113など)と対話するようにも構成され得る。例えば、レストラン予約ボットは、テーブルを予約するために特定のレストランのボットと対話することができる。
【0037】
特定の実施形態では、ボットは会話型インタフェースを使用して自然言語を使用してユーザと会話的に対話することができる。いくつかの実施形態では、ボットは、例えばレストランの住所の要求に応じて、「レストランRの位置はLである」などのテンプレートを使用するなど、テンプレートベースのフォーマットを使用して、ユーザと対話するための文章を作成することができる。場合によっては、例えばボットがユーザと対話するために自然言語を使用するかどうか、ボットがテンプレートベースの対話を使用するかどうかなど、ユーザが、ボット対話フォーマットを選択できるようにすることが可能であり得る。
【0038】
ボットが自然言語を使用して会話的に対話する場合、ボットの対話の内容および/またはスタイルは、自然言語処理を使用して判定される会話の内容、会話中のユーザの識別情報、1つまたは複数の会話コンテキスト(例えば、ユーザの対話に関する履歴情報、ソーシャルグラフに基づく会話内のユーザ間の関係)、外部条件(例えば、天気、交通)、ユーザのスケジュール、ユーザに関連する関連コンテキストなどのうちの一つまたは複数に基づいて動的に変化し得る。このような場合、ボットの対話の内容とスタイルは、会話に参加しているユーザが同意した要素のみに基づいて異なる。
【0039】
一例として、会話のユーザがフォーマルな言葉を使用していると判断された場合(例えば、俗語や絵文字がない、または最小限の俗語または絵文字)、ボットもフォーマルな言葉を使用してその会話内で対話することができ、逆もまた同様である。別の例として、会話中のユーザが(現在および/または過去の会話に基づいて)絵文字のヘビーユーザであると判定された場合、ボットは、1つまたは複数の絵文字を使用してそのユーザと対話することもできる。別の例として、会話中の2人のユーザがソーシャルグラフ内で遠い関係であると判定された場合(例えば、彼らの間に2人以上の中間ノードを有する、例えば、彼らが友達の友達の友達であることを示す)、ボットはその会話でよりフォーマルな言葉を使用し得る。会話に参加しているユーザが、ユーザのソーシャルグラフ、スケジュール、場所、またはユーザに関連するその他のコンテキストなどの要素をボットが利用することに同意していない場合、ボットの対話の内容およびスタイルは、このような要素を利用する必要がないデフォルトスタイル、例えばニュートラルスタイルであり得る。
【0040】
さらに、いくつかの実装形態では、一または複数のボットは、ユーザとの会話をやり取りするための機能を含むことができる。例えば、ユーザが、「@ムービーボット映画を推薦してくれませんか?(@moviebot Can you recommend a movie?)」と入力することにより映画に関する情報を要求した場合、「ムービーボット(moviebot)」というボットが「コメディーの気分ですか?」と応答し得る。次に、ユーザは、例えば「いいえ」と応答する場合があり、これに対し、ボットは、「了解しました。「宇宙と星」というタイトルのSF映画は素晴らしい評価を得ています。チケットを予約しましょうか?」と応答し得る。するとユーザは、「はい、私は午後6時より後に行くことができます。スティーブが参加できるかどうか確認してください」と表明することができる。ボットが自分の連絡先についての情報にアクセスすることに対するユーザの同意、およびボットからメッセージを受信することに対する友人スティーブの同意があると、ボットはユーザの友人スティーブにメッセージを送信し、適切な時間に映画チケットを予約するさらなるアクションを実行することが可能である。
【0041】
特定の実施形態では、会話に参加しているユーザは、例えば、ボット名またはボットハンドル(例えば、タクシー(taxi)、@タクシーボット(@taxibot)、@ムービー(@movies)など)を入力すること、音声コマンド(例えば、「銀行ボットを呼び出して」など)を使用すること、ユーザインタフェース要素(例えば、ボット名またはハンドルでラベル付けされたボタンまたはその他の要素)をアクティブにすることなどによって、特定のボットまたは特定のタスクを実行するボットを呼び出すことが可能とされ得る。ボットが呼び出されると、ユーザ125は、他のユーザ125にメッセージを送信するのと同様の方法で、メッセージングアプリケーション103a/103bを介してボットにメッセージを送信することができる。例えば、タクシーを呼ぶには、ユーザは「@タクシーボットタクシーを呼んで(@taxibot get me a cab)」と入力することができ、ホテルを予約するには、ユーザは「@ホテルボット 私の近くの中華料理店で4人のテーブルを予約して(@hotelbot book a table for 4 at a Chinese restaurant near me)」と入力することができる。
【0042】
特定の実施形態では、ボットは、具体的に呼び出されることなく、メッセージング会話内の情報またはアクションを自動的に提案することができる。つまり、ユーザはボットを特別に呼び出す必要がないかもしれない。これらの実施形態では、ボットは、継続的にまたは別々の時点での会話の分析および理解に依存することができる。会話の分析は、特定のユーザのニーズを理解し、いつボットが支援を提案すべきかを識別するために使用することができる。一例として、ボットは、ユーザが情報を必要としていると判定した場合(例えば、ユーザが他のユーザに質問することに基づいて、複数のユーザがある情報を有していないことを示すことに基づいて)、何らかの情報を検索して答えを提案することが可能である。別の例として、複数のユーザが中華料理を食べることに興味を表明したと判定された場合、ボットは自動的にユーザの近くにある一連の中華レストランを提案してもよく、これは、レストランの場所、評価、ウェブサイトへのリンクなどの任意の情報の提案を含む。
【0043】
特定の実施形態では、ボットを自動的に呼び出したり、またはユーザがボットを明示的に呼び出すのを待ったりするのではなく、自動的な提案がメッセージング会話中の一または複数のユーザに対し行われて、一または複数のボットを呼び出すことができる。これらの実施形態では、会話は継続的にまたは別々の時点で分析されることができ、会話の分析は、特定のユーザのニーズを理解し、いつ会話内でボットを提案すべきかを識別するために使用することができる。
【0044】
ボットが具体的に呼び出されることなく、メッセージング会話内において情報またはアクションを自動的に提案することができる実施形態では、例えば、メッセージング会話に参加している一または複数のユーザが、ユーザの会話の分析をボットが実施することについて同意しない場合、そのような機能は無効にされる。さらに、そのような機能は、ユーザ入力に基づいて一時的に無効にされてもよい。例えば、会話がプライベートであるかセンシティブであることをユーザが示したとき、会話コンテキストの分析は、ユーザがボットをアクティブにするための入力を提供するまで一時停止される。さらに、分析機能が無効化されているという標示を、例えばユーザインタフェース要素を用いて、会話の参加者に提供することができる。
【0045】
様々な実装形態では、ボットは様々な構成で実装され得る。例えば、図1に示されるように、ボット105はクライアントデバイス115a上に実装される。この例では、ボットは、クライアントデバイス115aに対してローカルなソフトウェアアプリケーション内のモジュールであり得る。例えば、ユーザがクライアントデバイス115a上にタクシーを呼ぶアプリケーションをインストールした場合、ボット機能はタクシーを呼ぶアプリケーションにモジュールとして組み込まれることができる。この例では、ユーザは、例えば「@タクシーボットタクシーを呼んで(@taxibot get me a cab)」というメッセージを送信することによって、タクシーボットを呼び出すことが可能である。メッセージングアプリケーション103bは、タクシーを呼ぶアプリケーション内のボットモジュールを自動的に起動させることができる。このようにして、ユーザがメッセージングアプリケーション103を介してボットと会話することができるように、ボットはクライアントデバイス上にローカルに実装され得る。
【0046】
図1に示す別の例では、ボット107aはクライアントデバイス115a上に実装されているように示され、ボット107bはメッセージングサーバ101上に実装されているように示されている。この例では、ボットは、ボット107a(サーバモジュール)およびボット107b(クライアントモジュール)のそれぞれによって提供されるボット機能の一部を用いて、例えばクライアント−サーバコンピュータプログラムとして、実装することができる。例えば、ボットがハンドル@カレンダー(@calendar)を有するスケジューリングボットである場合、ユーザ115aは、「@カレンダー 夕方に洗濯物を受け取ることをリマインドして(@calendar remind me to pick up laundry in the evening)」と入力することによって、リマインダをスケジュールすることができ、これは、ボット107b(クライアントモジュール)によって取り扱われ得る。この例を続けると、ユーザ115aがボットに「ジムは4時に会えるかをチェックして」と言うと、ボット107a(サーバモジュール)はメッセージを交換するためにユーザであるジム(またはジムのスケジューリングボット)に連絡し、ユーザ115aに応答を提供する。
【0047】
別の例では、ボット109a(サーバモジュール)はサーバ135上に実装され、ボット109b(クライアントモジュール)はクライアントデバイス115上に実装される。この例では、ボット機能は、クライアントデバイス115、およびメッセージングサーバ101とは異なるサーバ135上に実装されたモジュールによって提供される。いくつかの実装形態では、ボットは、例えば、複数のクライアントデバイスおよびサーバ(例えば、クライアントデバイス115、サーバ135、メッセージングサーバ101など)にわたって分散されたモジュールを用いて、分散アプリケーションとして実装され得る。いくつかの実装形態では、ボットは、サーバアプリケーションとして実装されることができ、それは、例えば、メッセージングサーバ101上に実装されるボット111、およびサーバ135上に実装されるボット113である。
【0048】
クライアントのみ、サーバのみ、クライアント−サーバ、分散などの種々の実装は、様々な利点を提供することができる。例えば、クライアントのみの実装では、ボット機能をローカルで、例えば、ネットワークアクセスがなくても、提供することが可能であり、これは、例えば、ユーザがネットワークのサービスエリア外にいるとき、または少ないまたは限られたネットワーク帯域幅しか有しない任意のエリア内にいる場合のような、特定の状況において有利であり得る。サーバのみ、クライアント−サーバ、または分散構成などの1つまたは複数のサーバを含む実装では、例えば、金融取引、チケットの予約などのクライアントデバイスでローカルに提供できない特定の機能が許可され得る。
【0049】
図1では、ボットをメッセージングアプリケーション103とは異なるものとして示しているが、いくつかの実装形態では、1つまたは複数のボットは、メッセージングアプリケーション103の一部として実装され得る。ボットがメッセージングアプリケーション103の一部として実装される実装形態では、ボットを実行する前にユーザの許可が取得される。例えば、ボットがメッセージングアプリケーション103a/103bの一部として実行される場合、メッセージングアプリケーション103a/103bは、特定の活動を実施することができるボット、例えば、送受信メッセージを翻訳する翻訳ボット、ユーザのカレンダー上のイベントをスケジュールするスケジューリングボットなどを提供することが可能である。この例では、翻訳ボットはユーザの具体的な許可がある場合にのみアクティブになる。ユーザが同意しない場合、メッセージングアプリケーション103a/103b内のボットは実装されない(例えば、無効化、削除など)。ユーザが同意する場合、ボットまたはメッセージングアプリケーション103a/103bは、メッセージングアプリケーション103a/103bを介してユーザ間で交換されるメッセージを限定的に使用して、特定の機能、例えば、翻訳、スケジューリングなどを提供することができる。
【0050】
いくつかの実装形態では、メッセージングアプリケーション103a/103bのプロバイダおよびユーザ125とは異なるサードパーティが、特定の目的のためにメッセージングアプリケーション103a/103bを介してユーザ125と通信することができるボットを提供し得る。例えば、タクシーサービスプロバイダはタクシーボットを提供し、発券サービスはイベントチケットを予約できるボットを提供し、銀行ボットは金融取引を実行する機能を提供することができる。
【0051】
メッセージングアプリケーション103を介してボットを実装する際、ボットは、特定のユーザ許可があった場合にのみユーザと通信することを許可される。例えば、ユーザがボットを呼び出すと、ボットは、例えば、ボットを呼び出すというユーザの動作に基づいて返信することができる。別の例では、ユーザは、ユーザに連絡することができる特定のボットまたはボットの種類を示すことができる。例えば、ユーザは、旅行ボットが自分と通信することを許可するが、ショッピングボットには許可を与えないことがある。この例では、メッセージングアプリケーション103a/103bは、旅行ボットがユーザとメッセージを交換することを許可するが、ショッピングボットからのメッセージをフィルタリングまたは拒否することができる。
【0052】
さらに、いくつかの機能(例えば、タクシーの呼出、フライト予約、友達への連絡など)を提供するために、ボットは、場所、支払い情報、連絡先などのユーザデータへのボットのアクセスをユーザが許可することを要求し得る。そのような場合、ユーザには、ボットへアクセスを許可または拒否するオプションが提示される。ユーザがアクセスを拒否した場合、ボットはメッセージで、例えば「申し訳ありませんが、タクシーを予約することができません」と、応答する可能性がある。さらに、ユーザは、限定されたやり方で情報へのアクセスを提供することができ、例えば、ユーザは、ボットの特定の起動時にのみタクシーボットが現在位置にアクセスすることを許可し、他の場合は許可しないことができる。異なる実装形態では、ユーザは、ボットがアクセスできる情報の種類、量、および粒度を制御することができ、そのような許可をいつでも変更することができる(例えば、ユーザインタフェースを介した)機能が提供されている。いくつかの実装形態では、ボットがそのようなデータにアクセスすることができるようになる前に、例えば、個人を識別可能な情報を削除するなど、情報を特定のデータ要素に制限するためにユーザデータが処理され得る。さらに、ユーザは、メッセージングアプリケーション103a/103bおよび1つまたは複数のボットによるユーザデータの使用を制御することができる。例えば、ユーザは、金融取引を行う能力を提供するボットが、取引完了前にユーザ認証を必要とすることを指定することができ、例えば、ボットは、「映画「宇宙と星」のチケットは各12ドルです。このまま予約しますか?」というメッセージ、または「このシャツの最安値は送料込みで125ドルです。あなたの下4桁1234のクレジットカードに請求しますか?」というメッセージを送信し得る。
【0053】
いくつかの実装形態では、メッセージングアプリケーション103a/103bは、1つまたは複数の提案、例えば提案された応答を、例えばボタンのユーザインタフェース、または他のユーザインタフェース要素を介してユーザ125に提供することもできる。提案された応答は、例えば、ユーザが応答を入力する必要性を減らすか、または無くすことによって、より迅速な対話を可能にし得る。提案された応答は、例えば、クライアントデバイスがテキスト入力機能を欠いているとき(例えば、キーボードまたはマイクロフォンを含まないスマートウォッチ)に、ユーザがメッセージに迅速かつ容易に応答することを可能にし得る。提案された応答は、例えば、ユーザが提案された応答を選択したときに(例えば、タッチスクリーン上の対応するユーザインタフェース要素を選択することによって)、ユーザがメッセージに迅速に応答することも可能にし得る。提案された応答は、応答を生成するようにトレーニングされた予測モデル、例えば機械学習モデルを使用して生成されることが可能である。
【0054】
例えば、メッセージングアプリケーション103a/103bは、メッセージングアプリケーション103とのユーザの対話を向上させることが可能な、例えばディープラーニングモデルなどの機械学習を実装することができる。機械学習モデルは、合成データ、例えば、ユーザ情報を使用せずにコンピュータによって自動的に生成されたデータを使用してトレーニングすることができる。いくつかの実装形態では、機械学習モデルは、例えば、トレーニングのためにユーザデータを利用する許可がユーザから明示的に得られているサンプルデータに基づいてトレーニングされ得る。例えば、サンプルデータは、受信されたメッセージと、受信されたメッセージに対して送信された応答とを含み得る。サンプルデータに基づいて、機械学習モデルは受信されたメッセージに対する応答を予測することができ、次にそれを提案された応答として提供することができる。例えば、受信されたメッセージおよびユーザのコンテキストに基づいてカスタマイズされた応答の選択を提供することにより、受信されたメッセージに対する応答を作成するユーザの負担を軽減することによって、ユーザの対話は強化される。例えば、ユーザが同意するとき、提案された応答は、ユーザの以前の活動、例えば、会話における以前のメッセージ、異なる会話におけるメッセージなどに基づいてカスタマイズされ得る。例えば、そのような活動は、ユーザに対する適切な提案応答、例えば、ユーザの対話スタイルに基づく遊び心のある応答、フォーマルな応答などを判定するために用いられ得る。別の例では、ユーザが1つまたは複数の優先言語および/またはロケールを指定すると、メッセージングアプリケーション103a/103bは、ユーザの優先言語で提案された応答を生成することができる。様々な例では、提案される応答は、テキスト応答、画像、マルチメディアなどであり得る。
【0055】
いくつかの実装形態では、機械学習は、メッセージングサーバ101上、クライアントデバイス115上、またはメッセージングサーバ101およびクライアントデバイス115の両方の上で実装され得る。いくつかの実装形態では、単純な機械学習モデルがクライアントデバイス115上に実装され(例えば、クライアントデバイスのメモリ、ストレージ、および処理制約内でモデルの動作を可能にするため)、複雑な機械学習モデルがメッセージングサーバ101上に実装され得る。ユーザが機械学習技術の使用について同意しない場合、そのような技術は実装されない。いくつかの実装形態では、ユーザは、機械学習がクライアントデバイス115上にのみ実装されることに選択的に同意し得る。これらの実装形態では、機械学習はクライアントデバイス115上で実装されることができ、これにより、機械学習モデルに対する更新または機械学習モデルによって使用されるユーザ情報がローカルに格納または使用されて、メッセージングサーバ101、サーバ135、他のクライアントデバイス115などの他のデバイスと共有されない。
【0056】
例えば、機械学習技術に基づく提案を受け取ることに同意するユーザに対し、提案は、メッセージングアプリケーション103によって提供され得る。例えば、提案は、コンテンツ(例えば、映画、本など)、スケジュール(例えば、ユーザのカレンダー上の利用可能時間)、イベント/開催地(例えば、レストラン、コンサートなど)等の提案を含み得る。いくつかの実装形態では、会話に参加しているユーザが会話データの使用に同意する場合、提案は、会話内容に基づいた、着信メッセージへの提案された応答を含み得る。例えば、会話の内容に基づく提案に同意した2人のユーザのうちの第1のユーザが「軽い食事はどうですか?イタリア料理はどうですか?」というメッセージを送信すると、例えば、「@アシスタントランチ、イタリア料理、2人用のテーブル(@assistant lunch, Italian, table for 2)」という応答が、第2のユーザに提案され得る。この例では、提案された応答は(記号@およびボットハンドルアシスタントによって識別された)ボットを含む。第2のユーザがこの応答を選択すると、アシスタントボットが会話に追加され、メッセージがボットに送信される。次に、ボットからの応答が会話に表示され、2人のユーザのいずれかがボットにさらにメッセージを送信することができる。この例では、アシスタントボットは会話のコンテンツへのアクセスを提供されず、提案された応答はメッセージングアプリケーション103によって生成される。
【0057】
特定の実装形態では、提案された応答の内容は、ボットがすでに会話中に存在しているか、または会話に組み込むことができるかに基づいてカスタマイズされ得る。例えば、旅行ボットをメッセージングアプリに組み込むことができると判定された場合、フランスへの航空券の費用についての質問に対する提案された応答は、「旅行ボットに聞いてみましょう!」であり得る。
【0058】
異なる実装形態では、提案、例えば提案された応答は、テキスト(例えば、「素晴らしい!」)、絵文字(例えば、笑顔、眠そうな顔など)、画像(例えば、ユーザの写真ライブラリからの写真)、テンプレートのフィールドにユーザデータが挿入されたテンプレートに基づいて生成されたテキスト(例えば、「彼女の番号は<電話番号>」、ここで、ユーザがユーザデータへのアクセスを提供するならば、フィールド<電話番号>は、ユーザデータに基づいて記入されている)、リンク(例えば、ユニフォームリソースロケータ)などのうちの一つまたは複数を含み得る。いくつかの実装形態では、提案された応答は、例えば、色、フォント、レイアウトなどを使用してフォーマット化および/またはスタイル化され得る。例えば、映画の推薦を含む提案された応答は、映画についての説明文、映画からの画像、およびチケットを購入するためのリンクを含むことができる。異なる実装形態では、提案された応答は、異なるタイプのユーザインタフェース要素として、例えば、テキストボックス、情報カードなどとして提示され得る。
【0059】
異なる実装形態では、ユーザは、提案を受け取るかどうか、どのタイプの提案を受け取るか、提案の頻度などを制御することができる。例えば、ユーザは提案を受け取ることを完全に辞退するか、特定のタイプの提案を選択するか、または一日のうちの特定の時間帯にだけ提案を受け取ることが可能である。別の例では、ユーザはパーソナライズされた提案を受け取ることを選択し得る。この例では、ユーザデータの使用および機械学習技術の使用に関するユーザの選好に基づいて提案を提供するために機械学習が使用され得る。
【0060】
図2は、いくつかの実装形態による、通信中の1つのユーザデバイスおよび1つのボットまたは支援エージェントの例示的な構成の図である。図2に示す構成例では、ユーザデバイス202(例えば、図1の115a〜115n)は、ボット204(例えば、105、107a、107b、109a、109b、111、および/または113)と1対1で会話している。ユーザデバイス202に関連するユーザ(例えば、ユーザ125a〜125n)は、ボット204を呼び出し、ボット204との通信セッションに参加することができる。かわりに、ボット204は、ユーザデバイス202に関連するユーザとの通信を自動的に開始してもよい。本実施例に記載の「ユーザ」は人間のユーザを指すことが理解されよう。しかし、当然のことながら、ユーザは、コンピュータまたは他の人間でないシステムを含むことができ、ユーザとボットとの間の通信は、人間のユーザとボットとの間、コンピュータなどの人間でないもの(例えば、コンピュータ上で実行されるソフトウェアアプリケーションなど)とボットとの間、および/または1つまたは複数のボットと1つまたは複数の他のボットとの間の通信を含み得る。
【0061】
図3は、いくつかの実装形態による、通信中の2以上のユーザデバイスと単一のボットまたは支援エージェントとの例示的な構成の図である。図3に示す構成例では、ユーザデバイス302〜306(例えば、図1の115a〜115n)は、ボット308(例えば、105、107a、107b、109a、109b、111、および/または113)を含むグループメッセージング会話中であり得る。ユーザデバイス302〜306に関連するユーザの一または複数(例えば、ユーザ125a〜125nのうちの一または複数)は、ボット308と対話し、ボット308との通信セッションに参加することができる。ボットからの通信の一部または全部は、グループメッセージング会話に配置され得る。また、ボット308との間で提供されるある情報は、その情報に関連するユーザにのみ利用可能であり、例えば表示され得る。ボット308は、ユーザデバイス302〜306に関連するユーザのうちの一または複数との通信を自動的に開始することができる。
【0062】
図4は、いくつかの実装形態による、通信中の2以上のユーザデバイスおよび2以上のボットまたは支援エージェントの例示的な構成の図である。図4に示す構成例では、ユーザデバイス402および任意選択で404(例えば図1の115a〜115n)は、複数のボット406〜408(例えば図1の105、107a、107b、109a、109b、111、および/または113)を含むグループメッセージング会話中であり得る。ユーザデバイス402〜404に関連するユーザのうちの一または複数(例えば、ユーザ125a〜125nのうちの一または複数)は、ボット406〜408のうちの一方または両方と対話し、ボット406〜408との通信セッションに参加することができる。ボットからの通信の一部または全部は、グループメッセージング会話に配置され得る。また、ボット406〜408との間で提供されるある情報は、その情報に関連するユーザにのみ利用可能であり、例えば表示され得る。ボット406〜408は、ユーザデバイス402〜404に関連するユーザのうちの一または複数との通信を自動的に開始することができる。
【0063】
図5は、いくつかの実装形態によるボット許可を管理するための例示的な方法のフロー図である。処理は502から始まり、ユーザからの要求がボットで受信される。要求は、ボットが実行するように要求されたタスクを含み得る。いくつかの実装形態では、要求はボットに対するコマンドであり得る。例えば、予約ボットに対するコマンドを含む要求は、「@予約ボット近くのホテルを探して(@reservationbot find a hotel nearby)」であり、アシスタントボットに対するコマンドを含む要求は、「@アシスタントジムに私のフライトの詳細を送って(@assistant send my flight details to Jim)」などであり得る。この例では、ボットは、ボットハンドル、例えば、「@」記号の後に続くボットの名前(例えば、予約ボット(reservationbot)、アシスタント(assistant)など)によって識別される。タスクを実行するため、および/またはリクエストに対する応答を提供するため、ボットはユーザデータへのアクセスを必要とし得る。ユーザおよびボットは、1対1の通信配置であり得る(例えば、図2)。例えば、ユーザはカーサービスの迎車を要求することができ、自動車サービスボットは、どの車がユーザの送迎に利用可能であるかを判定するためにユーザの位置を知る必要がある可能性がある。別の例では、ユーザは近くのホテルでホテル予約をすることを望む可能性があり、ホテル予約ボットは、ユーザの位置を知る必要がある可能性がある。さらに別の例では、ボットは、ユーザ情報(例えば、写真、カレンダエントリ、フライトスケジュールなど)を共有することを含むユーザに対する提案された応答を提供することができ、提案ボットは、提案された応答のために有用であり得るデータにアクセスするためのユーザの許可を得て、実際の応答としてそのようなデータを提供する必要があり得る。要求は、ユーザからの要求であってもよいし、(例えば、提案応答ボットなどからの)自動的に生成された要求であってもよい。処理は504に続く。
【0064】
504で、許可ユーザインタフェース要素が、要求に関連するユーザに表示される。許可要求ユーザインタフェース要素の一例を図6に示し、以下に説明する。許可ユーザインタフェース要素は、音声プロンプトとして、または他のユーザインタフェースおよび/または出力方法を使用して提示されてもよい。処理は506に続く。506において、ユーザがボットにユーザデータにアクセスまたは取得する許可を与えるかどうかの標示が受信される。標示は、ユーザが許可を与えるか否かを示すユーザインタフェース要素選択(例えば、タッチ、タップ、画面上のユーザインタフェースボタンの選択、タイプ入力、音声入力、ジェスチャ入力など)の形で受信され得る。例えば、ユーザは、図6の許可ユーザインタフェース要素に示されている「今は認めない」または「承認する」オプションのうちの1つを選択することができる。処理は508に続く。
【0065】
508において、ボット許可システムは許可が与えられたか否かを判定する。許可が与えられたかどうかを判定することは、ステップ506で受信された標示を評価することによって達成できる。許可が与えられた場合、処理は510に続く。許可が与えられなかった場合、処理は514に続く。
【0066】
510で、ボットと共有されているユーザデータの標示が任意選択で提供され得る。例えば、図7に示す標示「位置データを共有します」は、ユーザによって与えられた許可に従って、ユーザデータがボットと共有されたことの標示として提供され得る。処理は512に続く。512で、ボットは、与えられた許可に関連するタスクを完了するためにさらなる処理を実行することができる。例えば、カーサービスボットは、どの車がユーザにカーサービスを提供する場所にいるかを判定し続けることができる。別の例では、宿泊施設ボットは、共有されたユーザ位置を使用して、空がありレンタル可能な近くの宿泊施設を判定することができる。
【0067】
514で、ボットは、タスクを辞退することの標示をユーザに対して表示させることができる。例えば、ボットは、「申し訳ありませんが、現在地を取得できませんでした−車をスケジュールできません」などのような標示を提供できる。標示は、グラフィカルユーザインタフェース上に表示されてもよく、および/または音声キューまたは他の出力標示の形で提供されてもよい。
【0068】
図6は、いくつかの実装形態によるボットメッセージングを伴う例示的なユーザインタフェース600の図である。特に、ユーザインタフェース600は、ユーザからボットへのメッセージ(602)を含む。メッセージ602は、ユーザの個人情報、(例えば、近くのホテルを見つける)例えば位置情報の使用を必要とし得る要求(「私に近くのホテルを見つけて」)を含む。ユーザからの要求に応答して、ボットは、要求を完了するためにボットがユーザの位置データにアクセスする必要があることを示すメッセージ(604)をユーザに送信することができる。
【0069】
ボットは、許可承認/拒否インタフェース要素606を表示させることができる。許可要素606は、どのタイプの許可が必要であるかの説明(608)、およびボットがユーザデータにアクセス(または受信)するための許可を拒否するための入力要素610および承認するための入力要素612を含むことができる。
【0070】
図7は、図6から続く、ユーザがボットにユーザの位置データを使用する許可を与える、例示的なユーザインタフェース700の図である。ユーザインタフェース700は、図6に関連して上述した要素602〜604を含む。ユーザインタフェース700は、例えば入力要素612を選択することによってユーザが許可を与えることに応答して、ユーザデータがボットと共有されたという標示(702)も含む。ユーザインタフェース700は、ボットが要求に取り組んでいることを示すボットからのメッセージ(704)、およびボットからの1つまたは複数のオプションの提案(706および708)も含む。ユーザが提案要素(706、708)のうちの1つを選択すると、ボットは、ボットからの提案についての詳細、この例ではボットによって識別された提案された近くのホテルについての詳細を表示させることができる。
【0071】
図8は、いくつかの実装形態による、グループメッセージングコンテキスト内で(例えば、「グループチャット」内で)ボット許可を管理するための例示的な方法のフロー図である。処理は802で始まり、ユーザからの要求がボットで受信される。要求されたタスクを実行するために、および/または要求に対する応答を提供するために、ボットはユーザデータへのアクセスを必要とし得る。ユーザおよびボットは、(例えば、図3または図4に示されるように)複数のユーザおよび/またはボットとのグループ通信構成にあってもよい。例えば、複数のユーザとの通信セッションにおいて、ユーザは、例えば複数のユーザのためにカーサービスの迎車を要求し得る。カーサービスボットは、どの車がユーザを迎えに行くのに利用可能であるかを判定するために、迎車に含まれるべき各ユーザの位置を知る必要がある可能性がある。別の例では、ユーザは、会話に参加しているユーザのグループのために近くのホテルでホテル予約をすることを望む可能性がある。この例では、ホテル予約ボットは、ユーザのグループに関する情報、例えば名前、支払い情報などを知る必要があり得る。要求はユーザからの要求である場合もあれば、(提案応答ボットなどから)自動的に生成された要求である場合もある。処理は804に続く。
【0072】
804で、進捗標示が任意選択でボットによって表示され、要求を行っている個々のユーザまたはグループがグループ会話においてこれを見ることができる。例えば、カーサービスボットは、グループ会話で「手配中です」などのメッセージを表示し得る。処理は806に続く。
【0073】
806で、許可ユーザインタフェース要素を要求に関連するユーザに表示させる。許可要求ユーザインタフェース要素の例は、図6に示されており、上で説明されている。許可ユーザインタフェース要素は、音声プロンプトとして、または他のユーザインタフェースおよび/または出力方法を使用して提示されてもよい。処理は808に続く。
【0074】
808で、一または複数のユーザがボットに、それぞれのユーザデータにアクセスまたは取得する許可を与えるかどうかの標示が受信される。標示は、ユーザが許可を与えるか否かを示すユーザインタフェース要素選択(例えば、タッチ、タップ、画面上のユーザインタフェースボタンの選択、タイプ入力、音声入力、ジェスチャ入力など)の形で受け取ることができる。例えば、ユーザは、図6の許可ユーザインタフェース要素に示されている「今は認めない」または「承認する」のうちの1つを選択することができる。処理は810に続く。
【0075】
810で、ボット許可システムは許可が与えられたか否かを判定する。許可が与えられたかどうかを判定することは、ステップ808で受信された標示を評価することによって達成できる。許可が与えられた場合、処理は812に続く。許可が与えられなかった場合、処理は816に続く。
【0076】
812で、ボットはユーザと1対1のチャットを開始することができる。1対1のチャット、および1対1のチャットで交換されたメッセージは、グループメッセージング会話のユーザグループからは見えない。処理は814に続く。
【0077】
814で、ボットは、1対1のユーザメッセージングの会話内で与えられた許可に関連するタスクを完了するためにさらなる処理を実行することができる。例えば、カーサービスボットは、どの車がユーザにカーサービスを提供する場所にいるかを判定し続けることができる。別の例では、宿泊施設ボットは、共有のユーザ位置を使用して、空がありレンタル可能な近くの宿泊施設を判定することができる。
【0078】
816で、ボットは、グループメッセージング会話内でタスクを辞退することの「礼儀正しい」標示をユーザに表示させることができる。例えば、ボットは、「私はあなたの位置を知ることができませんでした−車をスケジュールすることができません」などのような標示を提供することができる。標示は、グラフィカルユーザインタフェース上に表示されるか、または音声キューまたは他の出力標示の形で提供され得る。辞退メッセージの礼儀正しい態様は、ユーザがユーザのデータを使用の許可をボットに与えなかったことを明示的には示さないメッセージを含むことができる。異なる実装形態では、標示は、例えば要求に基づいて、または他の要因に基づいて、異なるテキストコンテンツを含み得る。例えば、車を呼ぶという文脈でユーザが位置へのアクセスを禁止することに応答した標示は、「すみません、位置を取得できません」、「近くの車を見つけることができません」などのテキストコンテンツを含むことができる。いくつかの実装形態では、グループ会話の異なる参加者に異なる標示が送信されることがある。いくつかの実装形態では、標示は、異なるフォーマット、例えば、テキストボックス、グラフィカル表示、アニメーション表示などを使用することができる。いくつかの実装形態では、標示は、異なるスタイル、例えば、太字テキスト、イタリック体テキスト、フォント、色などを使用することができる。
【0079】
図9は、本明細書に記載の1つまたは複数の機能を実装するために使用することができる例示的なコンピューティングデバイス900のブロック図である。一例では、コンピューティングデバイス900は、クライアント(またはユーザ)デバイス、例えば図1に示されるクライアントデバイス115a〜115nのうちのいずれかを実装するために使用され得る。コンピューティングデバイス900は、上述したような任意の適切なコンピュータシステム、サーバ、または他の電子もしくはハードウェアデバイスであり得る。
【0080】
本明細書に記載の1つまたは複数の方法は、任意のタイプのコンピューティングデバイス上で実行することができるスタンドアロンプログラム、ウェブブラウザ上で実行されるプログラム、モバイルコンピューティングデバイス(携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス(腕時計、アームバンド、宝飾品、帽子、バーチャルリアリティゴーグルまたはメガネ、拡張現実ゴーグルまたはメガネなど)、ラップトップコンピュータなど)上で実行されるモバイルアプリケーション(「app」)において実行することができる。一例では、クライアント/サーバアーキテクチャを使用することができ、例えば、(ユーザデバイスとしての)モバイルコンピューティングデバイスは、ユーザ入力データをサーバデバイスに送信し、出力のための(例えば、表示のための)最終出力データをサーバから受信する。別の例では、すべての計算は、モバイルコンピューティングデバイス上のモバイルアプリ(および/または他のアプリ)内で実行することができる。別の例では、計算は、モバイルコンピューティングデバイスと1つまたは複数のサーバデバイスとの間で分割することができる。
【0081】
いくつかの実装形態では、コンピューティングデバイス900は、プロセッサ902、メモリ904、および入力/出力(I/O)インタフェース906を含む。プロセッサ902は、プログラムコードを実行し、コンピューティングデバイス900の基本動作を制御するための1つまたは複数のプロセッサおよび/または処理回路であり得る。「プロセッサ」は、データ、信号または他の情報を処理する任意の適切なハードウェアおよび/またはソフトウェアシステム、機構または構成要素を含む。プロセッサは、汎用中央処理装置(CPU)、複数の処理装置、機能を達成するための専用回路、または他のシステムを有するシステムを含み得る。処理は特定の地理的位置に限定される必要はなく、または時間的な制限がある必要もない。例えば、プロセッサは、その機能を「リアルタイム」、「オフライン」、「バッチモード」などで実行することができる。処理の部分は、異なる時間に、異なる場所で、異なる(または同じ)処理システムにより実行することができる。コンピュータは、メモリと通信する任意のプロセッサであり得る。
【0082】
メモリ904は、通常、プロセッサ902によるアクセスのためにコンピューティングデバイス900に設けられ、プロセッサにより実行される命令を格納するのに適したランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電気的消去可能読み取り専用メモリ(EEPROM)、フラッシュメモリなどの任意の適切なプロセッサ読み取り可能記憶媒体とすることができ、プロセッサ902とは別個に配置され、および/またはそれと一体化され得る。メモリ904は、オペレーティングシステム908、およびメッセージングアプリケーション、ボットアプリケーションなどの1つまたは複数のアプリケーション910を含む、プロセッサ902によってコンピューティングデバイス900上で動作するソフトウェアを格納することができる。いくつかの実装形態では、アプリケーション910は、プロセッサ902が本明細書に記載の機能、例えば、図5および/または図8の方法のうちの1つまたは複数を実施することを可能とする命令を含み得る。例えば、アプリケーション910は、本明細書で説明されたようなボット許可を管理するためのプログラムを含むメッセージングおよび/またはボットアプリケーションを含むことができる。アプリケーションのうちの1つまたは複数は、例えば、選択可能なオプションまたはコントロール、および選択されたオプションに基づくデータを表示するためのユーザ入力に応答して表示されるユーザインタフェースを提供することができる。本明細書で開示された1つまたは複数の方法は、いくつかの環境およびプラットフォーム、例えば、任意のタイプのコンピューティングデバイス上で実行できるスタンドアロンコンピュータプログラム、ウェブページを有するウェブアプリケーション、モバイルコンピューティングデバイス上で実行されるモバイルアプリケーション(「app」)などとして、動作することができる。
【0083】
あるいは、メモリ904内のソフトウェアのいずれも、他の任意の適切な記憶場所またはコンピュータ可読媒体に記憶することができる。さらに、メモリ904(および/または他の接続された単数または複数の記憶デバイス)は、メッセージ、許可設定、ユーザ設定および関連データ構造、パラメータ、オーディオデータ、ユーザ設定、および/または本明細書で説明された機能で使用される他の命令およびデータをデータベース912に格納することができる。メモリ904および他の任意の種類の記憶装置(磁気ディスク、光ディスク、磁気テープ、または他の有形の媒体)は、「記憶装置」または「記憶デバイス」と見なすことができる。
【0084】
I/Oインタフェース906は、コンピューティングデバイス900を他のシステムおよびデバイスとインタフェースすることを可能にするための機能を提供することができる。インタフェースされたデバイスは、コンピューティングデバイス900の一部として含めることができ、または分離してコンピューティングデバイス900と通信することができる。例えば、ネットワーク通信デバイス、無線通信デバイス、記憶デバイス、および入力/出力デバイスは、I/Oインタフェース906を介して通信することができる。いくつかの実装形態では、I/Oインタフェース906は、入力デバイス(キーボード、ポインティングデバイス、タッチスクリーン、マイクロフォン、カメラ、スキャナ、センサなど)および/または出力デバイス(表示デバイス、スピーカーデバイス、プリンター、モーターなど)のようなインタフェースデバイスに接続することができる。
【0085】
I/Oインタフェース906に接続することができるインタフェースデバイスのいくつかの例は、コンテンツ、例えば、本明細書で説明されるような出力アプリケーションの画像、ビデオ、および/またはユーザインタフェースを表示するために使用できる表示デバイス914を含み得る。表示デバイス914は、ローカル接続(例えば、表示バス)および/またはネットワーク接続を介してコンピューティングデバイス900に接続されることができ、任意の適切な表示デバイスとすることができる。表示デバイス914は、液晶ディスプレイ(LCD)、発光ダイオード(LED)、またはプラズマディスプレイスクリーン、陰極線管(CRT)、テレビ、モニター、タッチスクリーン、3Dディスプレイスクリーン、または他の視覚的表示デバイスのような任意の適切な表示デバイスを含むことができる。例えば、表示デバイス914は、モバイルデバイスに提供されるフラットディスプレイスクリーン、ゴーグルデバイスに提供される複数の表示スクリーン、またはコンピュータデバイス用のモニタスクリーンであり得る。
【0086】
I/Oインタフェース906は、他の入力および出力デバイスとインタフェースすることができる。いくつかの例は、画像フレームをキャプチャすることができる1つまたは複数のカメラを含む。方位センサ、例えば、ジャイロスコープおよび/または加速度計は、デバイスの方位(いくつかの実装形態では視野の方位に対応することができる)および/またはカメラの方位を示すセンサデータを提供することができる。いくつかの実装形態は、音声(例えば、音声コマンドなど)をキャプチャするためのマイクロフォン、音声を出力するためのオーディオスピーカデバイス、または他の入出力デバイスを提供することができる。
【0087】
説明を簡単にするために、図9は、プロセッサ902、メモリ904、I/Oインタフェース906、オペレーティングシステム908、およびボット許可アプリケーション910のためにそれぞれ1つのブロックを示している。これらのブロックは、1つまたは複数のプロセッサまたは処理回路、オペレーティングシステム、メモリ、I/Oインタフェース、アプリケーション、および/またはソフトウェアモジュールを表すことができる。他の実装形態では、コンピューティングデバイス900は、示された構成要素の全てを有しない場合があり、かつ/または本明細書に示されたものの代わりにまたはそれに加えて他のタイプの要素を含む他の要素を有し得る。ユーザデバイス(例えば、115a〜115n)は、本明細書のいくつかの実装形態で説明されるように、ブロックおよび動作を実行するものとして説明されているが、ユーザデバイス(例えば115a〜115n)または同様のデバイスの任意の適切なコンポーネントまたはコンポーネントの組合せ、またはそのようなシステムに関連する任意の適切な1つまたは複数のプロセッサが、説明されているブロックおよび動作を実行し得る。
【0088】
本明細書に記載の方法は、コンピュータプログラム命令またはコードによって実装することができ、それらはコンピュータ上で実行することができる。例えば、コードは、1つまたは複数のデジタルプロセッサ(例えば、マイクロプロセッサまたは他の処理回路)によって実装することができ、半導体または固体メモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、フラッシュメモリ、リジッドメモリを含む、磁気、光学、電磁気、または半導体の記憶媒体のような、非一時的コンピュータ可読媒体(例えば、記憶媒体)を含むコンピュータプログラム製品に格納することができる。プログラム命令は、例えば、サーバ(例えば、分散システムおよび/またはクラウドコンピューティングシステム)から配信されるサービスとしてのソフトウェア(SaaS)の形で、電子信号に含まれ、電子信号として提供されることもできる。あるいは、1つまたは複数の方法をハードウェア(論理ゲートなど)で、またはハードウェアとソフトウェアの組合せで実装することができる。ハードウェアの例は、プログラマブルプロセッサ(例えば、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス(CPLD)など)、汎用プロセッサ、グラフィックプロセッサ、特定用途向け集積回路(ASIC)などであり得る。1つまたは複数の方法は、システム上で実行されているアプリケーションの一部またはコンポーネントとして、あるいは他のアプリケーションおよびオペレーティングシステムと共に実行されているアプリケーションまたはソフトウェアとして実行することができる。
【0089】
説明は、その特定の実装形態に関して記載されているが、これらの特定の実装形態は単なる例示であり、限定的なものではない。例に示されている概念は、他の例および実装にも適用することができる。
【0090】
本明細書で説明する特定の実装形態が、ユーザに関する個人情報(例えば、ユーザの電話番号または部分的な電話番号、ユーザデータ、ユーザのソーシャルネットワークに関する情報、ユーザの位置および時間、ユーザのバイオメトリック情報、ユーザの活動およびデモグラフィック情報)を収集または使用し得る状況では、個人情報が収集されるかどうか、個人情報が保存されるかどうか、個人情報が使用されるかどうか、およびどのようにユーザに関する情報が収集され、保存され、使用されるかを制御する一または複数の機会がユーザに提供される。すなわち、本明細書で論じられるシステムおよび方法は、具体的にそのようにすることについて関連するユーザから明示的な許可を受けた場合に、ユーザの個人情報を収集し、保存し、かつ/または使用する。さらに、特定のデータは、個人を特定できる情報が削除されるように、保存または使用される前に1つまたは複数の方法で処理され得る。一例として、ユーザの識別情報は、個人を識別可能な情報が判定され得ないように取り扱われ得る。別の例として、ユーザの地理的位置は、ユーザの特定の位置が判定されることができないように、より大きな領域に一般化され得る。
【0091】
本開示に記載されている機能ブロック、動作、特徴、方法、デバイス、およびシステムは、当業者に知られているように、システム、デバイス、および機能ブロックの異なる組み合わせに統合または分割することができることに留意されたい。特定の実装形態のルーチンを実装するために、任意の適切なプログラミング言語およびプログラミング技術が使用され得る。手続き型またはオブジェクト指向などの異なるプログラミング技術が使用され得る。ルーチンは、単一の処理デバイスまたは複数のプロセッサ上で実行することができる。ステップ、動作、または計算は特定の順序で提示され得るが、異なる特定の実装形態においてはその順序は変更されてもよい。いくつかの実装形態では、本明細書において連続的なものとして示されている複数のステップまたは動作が同時に実行され得る。さらなる実装形態が以下に開示される。
【0092】
[実装形態1]
コンピュータにより実行される方法であって、
第1のユーザに関連する第1のコンピューティングデバイス上にメッセージングアプリケーションを提供して、前記第1のユーザと少なくとも1つの他のユーザとの間の通信を可能にすること、
前記メッセージングアプリケーションにおいてユーザ要求を検出すること、
前記ユーザ要求に応答するアクションが、前記第1のユーザに関連するデータへのアクセスを必要とすることをプログラム的に判定すること、
前記第1のユーザに関連するデータへのアクセスを前記第1のユーザが承認または禁止することを可能にする許可インタフェースを前記第1のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングさせること、
前記第1のユーザに関連するデータへのアクセスの承認を示すユーザ入力を前記第1のユーザから受信すると、前記第1のユーザに関連するデータにアクセスして、前記ユーザ要求に応答するアクションを実行すること
を含む方法。
【0093】
[実装形態2]
前記第1のユーザに関連するデータへのアクセスを禁止するユーザ入力を前記第1のユーザから受信すると、タスクが実行されないという標示を前記メッセージングアプリケーションに提供することをさらに含む、実装形態1に記載のコンピュータにより実行される方法。
【0094】
[実装形態3]
前記第1のユーザは人間のユーザであり、前記少なくとも1つの他のユーザは支援エージェントである、実装形態1または2に記載のコンピュータにより実行される方法。
【0095】
[実装形態4]
前記第1のユーザは人間のユーザであり、前記少なくとも1つの他のユーザは、前記第1のユーザとは異なる、第2のコンピューティングデバイスに関連する第2の人間のユーザを含み、前記許可インタフェースは、前記第1のユーザに関連する前記第1のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングされ、前記許可インタフェースは、前記第2の人間のユーザに関連する前記第2のコンピューティングデバイス上に表示されない、実装形態1、2、または3に記載のコンピュータにより実行される方法。
【0096】
[実装形態5]
前記第1のユーザに関連するデータへのアクセスを禁止するユーザ入力を前記第1のユーザから受信すると、
前記第1のユーザに関連する前記第1のコンピューティングデバイス上にレンダリングするための第1の標示を提供すること、
前記少なくとも1つの他のユーザに関連する第2のコンピューティングデバイス上にレンダリングするための第2の標示を提供すること
をさらに含み、前記第1の標示および前記第2の標示は、前記ユーザ要求に応えることの失敗を示すものであり、前記第1の標示および前記第2の標示は異なっている、実装形態1乃至4のいずれか一つに記載のコンピュータにより実行される方法。
【0097】
[実装形態6]
前記第1の標示および前記第2の標示は、異なるテキストコンテンツ、異なるスタイル、および異なるフォーマットのうちの1つまたは複数を有する、実装形態5に記載のコンピュータにより実行される方法。
【0098】
[実装形態7]
前記第1のユーザは人間のユーザであり、前記少なくとも1つの他のユーザは、前記第1のユーザとは異なる第2の人間のユーザと、支援エージェントとを含み、前記ユーザ要求は、前記第1のユーザに関連する前記第1のコンピューティングデバイスから受信され、前記方法は、前記ユーザ要求に応答して、前記メッセージングアプリケーションにおいて別個の会話を開始することをさらに含み、前記別個の会話は、前記第1のユーザと前記支援エージェントとを含み、前記第2の人間のユーザを含まない、実装形態1乃至6のいずれか一つに記載のコンピュータにより実行される方法。
【0099】
[実装形態8]
前記ユーザ要求を検出することは、前記第1のユーザおよび前記少なくとも1つの他のユーザのうちの一または複数から前記メッセージングアプリケーションにおいて受信された1つまたは複数のメッセージを分析することを含む、実装形態1乃至7のいずれか一つに記載のコンピュータにより実行される方法。
【0100】
[実装形態9]
前記1つまたは複数のメッセージは、テキストメッセージ、マルチメディアメッセージ、および支援エージェントへのコマンドのうちの1つまたは複数を含む、実装形態8に記載のコンピュータにより実行される方法。
【0101】
[実装形態10]
前記ユーザ要求に応答するアクションを実行することは、前記第1のメッセージングアプリケーションへ1つまたは複数の提案を提供することを含む、実装形態1乃至9のいずれか一つに記載のコンピュータにより実行される方法。
【0102】
[実装形態11]
前記1つまたは複数の提案を前記メッセージングアプリケーションにおいてレンダリングさせることをさらに含む、実装形態10に記載のコンピュータにより実行される方法。
【0103】
[実装形態12]
前記1つまたは複数の提案は、前記第1のユーザによって選択されたときに前記提案についての詳細を表示させる提案要素としてレンダリングされる、実装形態11に記載のコンピュータにより実行される方法。
図1
図2
図3
図4
図5
図6
図7
図8
図9