(57)【要約】メッセージングアプリケーションボットのための許可制御及び管理が説明される。方法は、第１のユーザに関連する第１のコンピューティングデバイス上にメッセージングアプリケーションを提供し、第１のユーザと他のユーザとの間の通信を可能にすること、メッセージングアプリケーションにおいてユーザ要求を検出することを含む。方法は、ユーザ要求に応答するアクションが第１のユーザに関連するデータへのアクセスを必要とすることをプログラム的に判定すること、第１のユーザに関連するデータへのアクセスを第１のユーザが承認又は禁止することを可能にする許可インタフェースをメッセージングアプリケーションにおいてレンダリングさせることも含む。方法は、第１のユーザに関連するデータへのアクセスの承認を示すユーザ入力を第１のユーザから受信すると、第１のユーザに関連するデータにアクセスしてユーザ要求に応答するアクションを実行することも含む。
2019530050.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実装される方法であって、
第１のユーザに関連する第１のコンピューティングデバイス上にメッセージングアプリケーションを提供して、前記第１のユーザと少なくとも１つの他のユーザとの間の通信を可能にすること、
前記メッセージングアプリケーションにおいてユーザ要求を検出すること、
前記ユーザ要求に応答するアクションが、前記第１のユーザに関連するデータへのアクセスを必要とすることをプログラム的に判定すること、
前記第１のユーザに関連するデータへのアクセスを前記第１のユーザが承認または禁止することを可能にする許可インタフェースを前記第１のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングさせること、
前記第１のユーザに関連するデータへのアクセスの承認を示すユーザ入力を前記第１のユーザから受信すると、前記第１のユーザに関連するデータにアクセスして、前記ユーザ要求に応答するアクションを実行すること
を含む方法。
【請求項２】
前記第１のユーザに関連するデータへのアクセスを禁止するユーザ入力を前記第１のユーザから受信すると、前記アクションが実行されないという標示を前記メッセージングアプリケーションに提供することをさらに含む、請求項１に記載のコンピュータにより実装される方法。
【請求項３】
前記第１のユーザは人間のユーザであり、前記少なくとも１つの他のユーザは支援エージェントである、請求項１に記載のコンピュータにより実装される方法。
【請求項４】
前記第１のユーザは人間のユーザであり、前記少なくとも１つの他のユーザは、前記第１のユーザとは異なる、第２のコンピューティングデバイスに関連する第２の人間のユーザを含み、前記許可インタフェースを前記第１のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングさせることは、前記許可インタフェースを前記第１のコンピューティングデバイス上にローカルに表示することを含む、請求項１に記載のコンピュータにより実装される方法。
【請求項５】
前記第１のユーザに関連するデータへのアクセスを禁止するユーザ入力を前記第１のユーザから受信すると、前記第１のユーザに関連する前記第１のコンピューティングデバイス上にレンダリングするための第１の標示を提供することをさらに含み、前記第１の標示は、前記第１のユーザが前記第１のユーザに関連するデータへのアクセスを禁止していること、および前記アクションを実行することができないことの標示を含む、請求項４に記載のコンピュータにより実装される方法。
【請求項６】
前記少なくとも１つの他のユーザに関連する第２のコンピューティングデバイス上にレンダリングするための第２の標示を提供することをさらに含み、前記第１の標示および前記第２の標示は、前記ユーザ要求に応えることの失敗を示すものであり、前記第１の標示および前記第２の標示は異なっている、請求項５に記載のコンピュータにより実装される方法。
【請求項７】
前記第１の標示および前記第２の標示は、異なるテキストコンテンツ、異なるスタイル、および異なるフォーマットのうちの１つまたは複数を有する、請求項６に記載のコンピュータにより実装される方法。
【請求項８】
前記第１のユーザは人間のユーザであり、前記少なくとも１つの他のユーザは、前記第１のユーザとは異なる第２の人間のユーザと、支援エージェントとを含み、前記ユーザ要求は、前記第１のユーザに関連する前記第１のコンピューティングデバイス上で受信され、前記方法は、前記ユーザ要求に応答して、前記メッセージングアプリケーションにおいて別個の会話を開始することをさらに含み、前記別個の会話は、前記第１のユーザと前記支援エージェントとを含み、前記第２の人間のユーザを除外している、請求項１に記載のコンピュータにより実装される方法。
【請求項９】
前記ユーザ要求を検出することは、前記第１のユーザおよび前記少なくとも１つの他のユーザのうちの一または複数から前記メッセージングアプリケーションにおいて受信された１つまたは複数のメッセージを分析することを含む、請求項１に記載のコンピュータにより実装される方法。
【請求項１０】
前記１つまたは複数のメッセージは、テキストメッセージ、マルチメディアメッセージ、および支援エージェントへのコマンドのうちの１つまたは複数を含む、請求項９に記載のコンピュータにより実装される方法。
【請求項１１】
前記ユーザ要求に応答するアクションを実行することは、第１のメッセージングアプリケーションにおいて１つまたは複数のユーザ選択可能な提案を提供することを含み、前記１つまたは複数のユーザ選択可能な提案から特定の提案をユーザが選択すると、対応するメッセージが第１のデバイスから前記少なくとも１つの他のユーザのデバイスに送信される、請求項１に記載のコンピュータにより実装される方法。
【請求項１２】
前記１つまたは複数の提案を前記メッセージングアプリケーションにおいてレンダリングさせることをさらに含む、請求項１１に記載のコンピュータにより実装される方法。
【請求項１３】
前記１つまたは複数の提案は、前記第１のユーザによって選択されたときに前記提案についての詳細を表示させる提案要素としてレンダリングされる、請求項１２に記載のコンピュータにより実装される方法。
【請求項１４】
コンピュータにより実装される方法であって、
第１のコンピューティングデバイス上で実行されているメッセージングアプリケーションにおいて、第１のユーザからのユーザ要求を検出すること、
前記ユーザ要求に応答するアクションが、前記第１のユーザに関連するデータへのアクセスを必要とすることをプログラム的に判定すること、
前記第１のユーザに関連するデータへのアクセスを前記第１のユーザが承認または禁止することを可能にする許可インタフェースを前記第１のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングさせること、
前記許可インタフェースにおいて前記第１のユーザからの承認を受信すると、前記第１のユーザに関連するデータにアクセスし、前記ユーザ要求に応答するアクションを実行すること
を含む方法。
【請求項１５】
前記第１のユーザに関連するデータへのアクセスを禁止するユーザ入力を前記第１のユーザから受信すると、前記アクションが実行されないという標示を前記メッセージングアプリケーションに提供することをさらに含む、請求項１４に記載のコンピュータにより実装される方法。
【請求項１６】
前記第１のユーザに関連するデータへのアクセスを禁止するユーザ入力を前記第１のユーザから受信すると、
前記メッセージングアプリケーションにおいてレンダリングするための第１の標示を提供すること、
少なくとも１つの他のユーザに関連する第２のメッセージングアプリケーションにおいてレンダリングするための第２の標示を提供すること
をさらに含み、前記第１の標示および前記第２の標示は、前記ユーザ要求に応えることの失敗を示すものであり、前記第１の標示および前記第２の標示は異なっている、請求項１４に記載のコンピュータにより実装される方法。
【請求項１７】
１つまたは複数のプロセッサによって実行されると、前記１つまたは複数のプロセッサに動作を実施させる命令を記憶した非一時的コンピュータ可読媒体に結合された１つまたは複数のプロセッサを備えるシステムであって、前記動作は、
第１のユーザに関連する第１のコンピューティングデバイス上にメッセージングアプリケーションを提供して、前記第１のユーザと少なくとも１つの他のユーザとの間の通信を可能にすること、
前記メッセージングアプリケーションにおいてユーザ要求を検出すること、
前記ユーザ要求に応答するアクションが、前記第１のユーザに関連するデータへのアクセスを必要とすることをプログラム的に判定すること、
前記第１のユーザに関連するデータへのアクセスを前記第１のユーザが承認または禁止することを可能にする許可インタフェースを前記第１のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングさせること、
前記第１のユーザに関連するデータへのアクセスの承認を示すユーザ入力を前記第１のユーザから受信すると、前記第１のユーザに関連するデータにアクセスして、前記ユーザ要求に応答するアクションを実行すること
を含む、システム。
【請求項１８】
前記動作は、前記第１のユーザに関連するデータへのアクセスを禁止するユーザ入力を前記第１のユーザから受信すると、前記アクションが実行されないという標示を前記メッセージングアプリケーションに提供することをさらに含む、請求項１７に記載のシステム。
【請求項１９】
前記第１のユーザは人間のユーザであり、前記少なくとも１つの他のユーザは支援エージェントである、請求項１７に記載のシステム。
【請求項２０】
前記第１のユーザは人間のユーザであり、前記少なくとも１つの他のユーザは、前記第１のユーザとは異なる第２の人間のユーザと、支援エージェントとを含み、前記ユーザ要求は、前記第１のユーザに関連する前記第１のコンピューティングデバイス上で受信され、前記動作は、前記ユーザ要求に応答して、前記メッセージングアプリケーションにおいて別個の会話を開始することをさらに含み、前記別個の会話は、前記第１のユーザと前記支援エージェントとを含み、前記第２の人間のユーザを除外している、請求項１７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、「BOT PERMISSIONS」と題され、２０１６年９月２０日に出願された米国特許出願第６２／３９７，０４７号の利益を主張し、その全体が参照により本明細書に組み込まれる。
【背景技術】
【０００２】
ユーザは、メッセージングサービスを使用して、チャット、インスタントメッセージなどのメッセージング会話を行う。メッセージング会話は、任意のユーザデバイス、例えばコンピュータ、モバイルデバイス、ウェアラブルデバイスなどを使用して実施することができる。ユーザがメッセージングアプリケーションを使用してより多くの会話を行い、より多くのタスクを実行するにつれて、（例えばボットまたは他の自動化されたアシスタントアプリケーションを介した）メッセージング会話またはタスクへの自動化された支援が効率改善に役に立つ可能性がある。自動化はユーザがメッセージング通信をより効率的に行うのを助けることができるが、メッセージングボットがいつどのようにユーザ情報にアクセスするか、およびメッセージングボットがどのユーザ情報にアクセスすることを許可されているかに関する許可を管理する必要があり得る。
【０００３】
本明細書で提供される背景の説明は、本開示の状況を概略的に提示することを目的としている。本発明者らの成果は、本背景技術の欄に記載されている限りにおいて、出願時に先行技術として適格ではない可能性がある記載の態様と同様に、明示的にも暗示的にも本開示に対する先行技術として認めたものではない。
【発明の概要】
【０００４】
いくつかの実装形態は、コンピュータにより実装される方法を含むことができ、本方法は、第１のユーザに関連する第１のコンピューティングデバイス上にメッセージングアプリケーションを提供して、第１のユーザと少なくとも１つの他のユーザとの間の通信を可能にすること、メッセージングアプリケーションにおいてユーザ要求を検出することを含み得る。本方法は、ユーザ要求に応答するアクションが、第１のユーザに関連するデータへのアクセスを必要とすることをプログラム的に判定すること、第１のユーザに関連するデータへのアクセスを第１のユーザが承認または禁止することを可能にする許可インタフェースを第１のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングさせることも含み得る。本方法はさらに、第１のユーザに関連するデータへのアクセスの承認を示すユーザ入力を第１のユーザから受信すると、第１のユーザに関連するデータにアクセスして、ユーザ要求に応答するアクションを実行することを含み得る。
【０００５】
本方法は、第１のユーザに関連するデータへのアクセスを禁止するユーザ入力を第１のユーザから受信すると、タスクが実行されないという標示をメッセージングアプリケーションに提供することも含み得る。いくつかの実装形態においては、第１のユーザは人間のユーザを含み、少なくとも１つの他のユーザは支援エージェントを含むことができる。
【０００６】
いくつかの実装形態においては、第１のユーザは人間のユーザであり、少なくとも１つの他のユーザは、第１のユーザとは異なる、第２のコンピューティングデバイスに関連する第２の人間のユーザを含む。許可インタフェースは、第１のユーザに関連する第１のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングされることができ、許可インタフェースは、第２の人間のユーザに関連する第２のコンピューティングデバイス上には表示されない。
【０００７】
本方法は、第１のユーザに関連するデータへのアクセスを禁止するユーザ入力を第１のユーザから受信すると、第１のユーザに関連する第１のコンピューティングデバイス上にレンダリングするための第１の標示を提供することをさらに含み得る。本方法は、少なくとも１つの他のユーザに関連する第２のコンピューティングデバイス上にレンダリングするための第２の標示を提供することも含むことができ、第１の標示および第２の標示は、ユーザ要求に応えることの失敗を示すものであり、第１の標示および第２の標示は異なっている。
【０００８】
いくつかの実装形態においては、第１の標示および第２の標示は、異なるテキストコンテンツ、異なるスタイル、および異なるフォーマットのうちの１つまたは複数を含み得る。いくつかの実装形態においては、第１のユーザは人間のユーザを含み、少なくとも１つの他のユーザは、第１のユーザとは異なる第２の人間のユーザと、支援エージェントとを含む。ユーザ要求は、第１のユーザに関連する第１のコンピューティングデバイスから受信されることができる。本方法は、ユーザ要求に応答して、メッセージングアプリケーションにおいて別個の会話を開始することも含み得る。別個の会話は、第１のユーザと支援エージェントとを含むことができ、第２の人間のユーザを含まない。
【０００９】
いくつかの実装形態においては、ユーザ要求を検出することは、第１のユーザおよび少なくとも１つの他のユーザのうちの一または複数からメッセージングアプリケーションにおいて受信された１つまたは複数のメッセージを分析することを含む。１つまたは複数のメッセージは、テキストメッセージ、マルチメディアメッセージ、および支援エージェントへのコマンドのうちの１つまたは複数を含み得る。ユーザ要求に応答するアクションを実行することは、第１のメッセージングアプリケーションへ１つまたは複数の提案を提供することを含む。
【００１０】
本方法は、１つまたは複数の提案をメッセージングアプリケーションにおいてレンダリングさせることも含み得る。１つまたは複数の提案は、第１のユーザによって選択されたときに提案についての詳細を表示させる提案要素としてレンダリングされることができる。
【００１１】
いくつかの実装形態においては、コンピュータにより実装される方法を含むことができる。本方法は、メッセージングアプリケーションにおいてユーザ要求を検出すること、ユーザ要求に応答するアクションが、第１のユーザに関連するデータへのアクセスを必要とすることをプログラム的に判定することを含み得る。本方法は、第１のユーザに関連するデータへのアクセスを第１のユーザが承認または禁止することを可能にする許可インタフェースを第１のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングさせることも含み得る。本方法は、さらに、許可インタフェースにおいて第１のユーザからの承認を受信すると、第１のユーザに関連するデータにアクセスし、ユーザ要求に応答するアクションを実行することを含み得る。
【００１２】
本方法は、第１のユーザに関連するデータへのアクセスを禁止するユーザ入力を第１のユーザから受信すると、タスクが実行されないという標示をメッセージングアプリケーションに提供することも含み得る。本方法は、第１のユーザに関連するデータへのアクセスを禁止するユーザ入力を第１のユーザから受信すると、メッセージングアプリケーションにおいてレンダリングするための第１の標示を提供することをさらに含み得る。本方法は、少なくとも１つの他のユーザに関連する第２のメッセージングアプリケーションにおいてレンダリングするための第２の標示を提供することも含むことができ、第１の標示および第２の標示は、ユーザ要求に応えることの失敗を示すものであり、第１の標示および第２の標示は異なっている。
【００１３】
いくつかの実装形態は、１つまたは複数のプロセッサによって実行されると、１つまたは複数のプロセッサに動作を実施させる命令を記憶した非一時的コンピュータ可読媒体に結合された１つまたは複数のプロセッサを備えるシステムを含み得る。動作は、第１のユーザに関連する第１のコンピューティングデバイス上にメッセージングアプリケーションを提供して、第１のユーザと少なくとも１つの他のユーザとの間の通信を可能にすること、メッセージングアプリケーションにおいてユーザ要求を検出することを含み得る。動作は、ユーザ要求に応答するアクションが、第１のユーザに関連するデータへのアクセスを必要とすることをプログラム的に判定すること、第１のユーザに関連するデータへのアクセスを第１のユーザが承認または禁止することを可能にする許可インタフェースを第１のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングさせることも含み得る。動作は、さらに、第１のユーザに関連するデータへのアクセスの承認を示すユーザ入力を第１のユーザから受信すると、第１のユーザに関連するデータにアクセスして、ユーザ要求に応答するアクションを実行することを含み得る。
【００１４】
動作は、第１のユーザに関連するデータへのアクセスを禁止するユーザ入力を第１のユーザから受信すると、タスクが実行されないという標示をメッセージングアプリケーションに提供することも含み得る。いくつかの実装形態においては、第１のユーザは人間のユーザを含み、少なくとも１つの他のユーザは支援エージェントを含むことができる。いくつかの実装形態においては、第１のユーザは人間のユーザを含み、少なくとも１つの他のユーザは、第１のユーザとは異なり、第２のコンピューティングデバイスに関連する第２の人間のユーザを含むことができる。許可インタフェースは、第１のユーザに関連する第１のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングされることができ、第２の人間のユーザに関連する第２のコンピューティングデバイス上には表示されない。
【図面の簡単な説明】
【００１５】
【図１】いくつかの実装形態によるメッセージがユーザとボットとの間で交換され得る例示的な環境のブロック図である。
【図２】いくつかの実装形態によるユーザデバイスおよびボット通信の例示的な構成の図である。
【図３】いくつかの実装形態によるユーザデバイスおよびボット通信の例示的な構成の図である。
【図４】いくつかの実装形態によるユーザデバイスおよびボット通信の例示的な構成の図である。
【図５】いくつかの実装形態によるボット許可を管理するための例示的な方法のフロー図である。
【図６】いくつかの実装形態によるボットメッセージングを伴う例示的なユーザインタフェースの図である。
【図７】いくつかの実装形態によるボットメッセージングを伴う例示的なユーザインタフェースの図である。
【図８】いくつかの実装形態によるボット許可を管理するための例示的な方法のフロー図である。
【図９】いくつかの実装形態によるボット許可を管理するように構成された例示的なコンピューティングデバイスの図である。
【発明を実施するための形態】
【００１６】
本明細書で説明される１つまたは複数の実装形態は、メッセージングアプリケーションボットのための許可制御および管理に関する。
図１は、自動支援エージェントを可能とし、いくつかの実施形態では自動支援エージェントを提供するメッセージングサービスを提供するための例示的な環境１００のブロック図を示す。例示的な環境１００は、メッセージングサーバ１０１、１つまたは複数のクライアントデバイス１１５ａ、１１５ｎ、サーバ１３５、およびネットワーク１４０を含む。ユーザ１２５ａ〜１２５ｎは、それぞれのクライアントデバイス１１５ａ、１１５ｎに関連付けられることができる。サーバ１３５は、例えば、メッセージングサービスを提供する当事者とは異なる当事者によって制御されるサードパーティサーバであり得る。様々な実装形態では、以下でさらに詳細に説明するように、サーバ１３５はボットサービスを実装することができる。いくつかの実装形態では、環境１００は、図１に示されている１つまたは複数のサーバまたはデバイスを含まないことがあり、または図１に示されない他のサーバまたはデバイスを含むことがある。図１および残りの図において、参照番号の後の文字、例えば「１１５ａ」は、その特定の参照番号を有する要素への参照を表す。後続の文字を除いた本文中の参照番号、例えば「１１５」は、その参照番号を有する要素の実装に対する一般的な参照を表す。
【００１７】
図示の実装形態では、メッセージングサーバ１０１、クライアントデバイス１１５、およびサーバ１３５は、ネットワーク１４０を介して通信可能に結合されている。様々な実装形態では、ネットワーク１４０は、有線または無線の従来型のものとすることができ、星型構成、トークンリング構成または他の構成を含む多数の異なる構成をとることができる。さらに、ネットワーク１４０は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）（例えばインターネット）、および／または複数のデバイスが通信することができる他の相互接続されたデータパスを含むことができる。いくつかの実装形態では、ネットワーク１４０はピアツーピアネットワークであってよい。ネットワーク１４０は、様々な異なる通信プロトコルでデータを送信するために電気通信ネットワークの一部に結合されるかまたはその一部を含むこともできる。いくつかの実装形態では、ネットワーク１４０は、ショートメッセージングサービス（ＳＭＳ）、マルチメディアメッセージングサービス（ＭＭＳ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、直接データ接続、電子メールなどを介することを含むデータの送受信のための、ブルートゥース（登録商標）通信ネットワーク、Ｗｉ−Ｆｉ（登録商標）、またはセルラー通信ネットワークを含む。図１は、クライアントデバイス１１５、メッセージングサーバ１０１、およびサーバ１３５に結合された１つのネットワーク１４０を示しているが、実際には、１つまたは複数のネットワーク１４０が、これらのエンティティに結合し得る。
【００１８】
メッセージングサーバ１０１は、プロセッサ、メモリ、およびネットワーク通信機能を含み得る。いくつかの実装形態では、メッセージングサーバ１０１は、ハードウェアサーバである。いくつかの実装形態では、メッセージングサーバ１０１は、仮想化環境に埋め込まれ得る。例えば、メッセージングサーバ１０１は、１つまたは複数の他の仮想マシンを含み得るハードウェアサーバ上で実行される仮想マシンであってよい。メッセージングサーバ１０１は、信号線１０２を介してネットワーク１４０に通信可能に結合されている。信号線１０２は、イーサネット（登録商標）、同軸ケーブル、光ファイバケーブルなどのような有線接続、またはＷｉ−Ｆｉ、ブルートゥース、または他の無線技術などの無線接続とすることができる。いくつかの実装形態では、メッセージングサーバ１０１は、ネットワーク１４０を介して、クライアントデバイス１１５ａ〜１１５ｎ、サーバ１３５、およびボット１１３のうちの１つまたは複数との間でデータを送受信する。いくつかの実装形態では、メッセージングサーバ１０１は、ユーザ（例えば、ユーザ１２５のうちのいずれか）が他のユーザおよび／またはボットとメッセージを交換することを可能にするためのクライアント機能を提供するメッセージングアプリケーション１０３ａを含み得る。メッセージングアプリケーション１０３ａは、サーバアプリケーション、クライアント−サーバアプリケーションのサーバモジュール、または（例えば、１つまたは複数のクライアントデバイス１１５上の対応するクライアントメッセージングアプリケーション１０３ｂを有する）分散アプリケーションとすることができる。
【００１９】
メッセージングサーバ１０１は、メッセージングサーバ１０１を介して交換されたメッセージ、１つまたは複数のボットのデータおよび／または構成、ならびに１つまたは複数のユーザ１２５に関連するユーザデータを、それぞれのユーザからそのようなデータを格納するための明示的な許可がある場合には格納することができるデータベース１９９も含む。いくつかの実施形態では、メッセージングサーバ１０１は、１つまたは複数の支援エージェント、例えばボット１０７ａおよび１１１を含むことができる。他の実施形態では、支援エージェントは、メッセージングサーバ１０１上ではなく、クライアントデバイス１１５ａ〜ｎ上に実装され得る。
【００２０】
メッセージングアプリケーション１０３ａは、ユーザ１２５と１つまたは複数のボット１０５、１０７ａ、１０７ｂ、１０９ａ、１０９ｂ、１１１、および１１３との間のメッセージの交換を可能にするためのプロセッサによって動作可能なコードおよびルーチンであり得る。いくつかの実装形態では、メッセージングアプリケーション１０３ａは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または特定用途向け集積回路（ＡＳＩＣ）を含むハードウェアを使用して実装され得る。いくつかの実装形態では、メッセージングアプリケーション１０３ａは、ハードウェアとソフトウェアとの組み合わせを使用して実装され得る。
【００２１】
様々な実装形態では、クライアントデバイス１１５に関連するそれぞれのユーザが、メッセージの格納について同意したときに、データベース１９９は、１つまたは複数のクライアントデバイス１１５間で交換されたメッセージを格納することができる。いくつかの実装形態では、クライアントデバイス１１５に関連するそれぞれのユーザがメッセージの格納について同意したときに、データベース１９９は、１つまたは複数のクライアントデバイス１１５と、例えば他のクライアントデバイス、メッセージングサーバ１０１、およびサーバ１３５などの異なるデバイス上に実装された１つまたは複数のボットとの間で交換されるメッセージを格納し得る。一または複数のユーザが同意しない実装形態では、それらのユーザによって送受信されたメッセージは格納されない。
【００２２】
いくつかの実装形態では、メッセージは、例えば、メッセージの送信者および受信者だけが暗号化されたメッセージを見ることができるように暗号化されてもよい。いくつかの実装形態では、メッセージが格納されている。いくつかの実装形態では、データベース１９９は、例えば、ボット１０７ａ、ボット１１１などの１つまたは複数のボットのデータおよび／または構成をさらに格納することができる。ユーザ１２５が、（ソーシャルネットワークデータ、連絡先情報、画像などのような）ユーザデータの格納に同意するいくつかの実装形態では、データベース１９９はそのような同意を提供したそれぞれのユーザ１２５に関連するユーザデータを格納することもできる。
【００２３】
いくつかの実装形態では、メッセージングアプリケーション１０３ａ／１０３ｂは、ユーザ１２５が新しいボットを作成することを可能にするユーザインタフェースを提供することができる。これらの実装形態では、メッセージングアプリケーション１０３ａ／１０３ｂは、メッセージングアプリケーション１０３ａ／１０３ｂのユーザ間の会話にユーザ作成ボットを含めることを可能にする機能を含み得る。
【００２４】
クライアントデバイス１１５は、メモリおよびハードウェアプロセッサを含むコンピューティングデバイス、例えば、カメラ、ラップトップコンピュータ、タブレットコンピュータ、携帯電話、ウェアラブルデバイス、モバイル電子メールデバイス、携帯型ゲーム機、携帯型音楽プレーヤー、リーダデバイス、ヘッドマウントディスプレイ、またはネットワーク１４０に無線でアクセスすることができる他の電子デバイスなどであり得る。
【００２５】
図示の実装形態では、クライアントデバイス１１５ａは信号線１０８を介してネットワーク１４０に結合され、クライアントデバイス１１５ｎは信号線１１０を介してネットワーク１４０に結合されている。信号線１０８および１１０は、例えばイーサネットなどの有線接続、またはＷｉ−Ｆｉ、ブルートゥース、または他の無線技術などの無線接続とすることができる。クライアントデバイス１１５ａ、１１５ｎは、それぞれユーザ１２５ａ、１２５ｎによってアクセスされる。図１のクライアントデバイス１１５ａ、１１５ｎは例として用いられている。図１は２つのクライアントデバイス１１５ａおよび１１５ｎを示しているが、本開示は１つまたは複数のクライアントデバイス１１５を有するシステムアーキテクチャに適用される。
【００２６】
いくつかの実装形態では、クライアントデバイス１１５は、ユーザ１２５によって着用されるウェアラブルデバイスであり得る。例えば、クライアントデバイス１１５は、クリップ（例えば、リストバンド）の一部、宝飾品の一部、または眼鏡の一部として含まれてもよい。別の例では、クライアントデバイス１１５は、スマートウォッチとすることができる。様々な実装形態では、ユーザ１２５は、デバイスのディスプレイ上でメッセージングアプリケーション１０３ａ／１０３ｂからのメッセージを閲覧することができ、スピーカまたはデバイスの他の出力デバイスなどを介してメッセージにアクセスすることができる。例えば、ユーザ１２５は、スマートウォッチやスマートリストバンドのディスプレイ上でメッセージを閲覧することができる。別の例では、ユーザ１２５は、クライアントデバイス１１５に結合された、またはその一部であるヘッドホン（図示せず）、クライアントデバイス１１５のスピーカ、クライアントデバイス１１５の触覚フィードバック要素などを介してメッセージにアクセスすることができる。
【００２７】
いくつかの実装形態では、メッセージングアプリケーション１０３ｂはクライアントデバイス１１５ａに格納されている。いくつかの実装形態では、メッセージングアプリケーション１０３ｂ（例えば、シンクライアントアプリケーション、クライアントモジュールなど）は、メッセージングサーバ１０１に格納されている対応するメッセージングアプリケーション１０３ａ（例えば、サーバアプリケーション、サーバモジュールなど）を有するクライアントデバイス１１５ａに格納されているクライアントアプリケーションであり得る。例えば、メッセージングアプリケーション１０３ｂは、クライアントデバイス１１５ａ上のユーザ１２５ａによって作成されたメッセージをメッセージングサーバ１０１に格納されているメッセージングアプリケーション１０３ａに送信することができる。
【００２８】
いくつかの実装形態では、メッセージングアプリケーション１０３ａは、メッセージングサーバ１０１に格納されているスタンドアロンアプリケーションとすることができる。ユーザ１２５ａは、クライアントデバイス１１５ａ上のブラウザまたは他のソフトウェアを使用してウェブページを介してメッセージングアプリケーション１０３ａにアクセスすることができる。いくつかの実装形態では、クライアントデバイス１１５ａ上に実装されているメッセージングアプリケーション１０３ｂは、メッセージングサーバ１０１上に含まれているものと同じまたは類似のモジュールを含むことができる。いくつかの実装形態では、メッセージングアプリケーション１０３ｂは、例えば、１つまたは複数のクライアントデバイス１１５が他のクライアントデバイス１１５とのメッセージ交換を可能にする機能を含むピアツーピアまたは他の構成で、スタンドアロンクライアントアプリケーションとして実装され得る。これらの実装形態では、メッセージングサーバ１０１は、限定されたメッセージング機能（例えば、クライアント認証、バックアップなど）を含むか、またはそのような機能を含まない可能性がある。いくつかの実装形態では、メッセージングサーバ１０１は、１つまたは複数のボット、例えばボット１０７ａおよびボット１１１を実装することができる。
【００２９】
サーバ１３５は、プロセッサ、メモリ、およびネットワーク通信機能を含み得る。いくつかの実装形態では、サーバ１３５はハードウェアサーバである。サーバ１３５は、信号線１２８を介してネットワーク１４０に通信可能に結合されている。信号線１２８は、イーサネット、同軸ケーブル、光ファイバケーブルなどのような有線接続、またはＷｉ−Ｆｉ、ブルートゥース、または他の無線技術などの無線接続とすることができる。いくつかの実装形態では、サーバ１３５は、ネットワーク１４０を介してメッセージングサーバ１０１およびクライアントデバイス１１５のうちの１つまたは複数との間でデータを送受信する。サーバ１３５は１つのサーバとして示されているが、様々な実装態様は１つまたは複数のサーバ１３５を含み得る。サーバ１３５は、サーバアプリケーションまたはサーバモジュールとして１つまたは複数のボット、例えばボット１０９ａおよびボット１１３を実装することができる。
【００３０】
様々な実装形態では、サーバ１３５は、メッセージングサーバ１０１を管理するのと同じエンティティ、例えばメッセージングサービスのプロバイダの一部とすることができる。いくつかの実装形態では、サーバ１３５は、例えば、メッセージングアプリケーション１０３ａ／１０３ｂを提供するエンティティとは異なるエンティティによって制御されるサードパーティサーバとすることができる。いくつかの実装形態では、サーバ１３５はボットを提供またはホストする。
【００３１】
ボットは自動化されたサービスで、１つまたは複数のコンピュータに実装されており、ユーザは主にテキストを通じて、例えばメッセージングアプリケーション１０３ａ／１０３ｂを介して対話する。ボットは、ボットが様々なメッセージングアプリケーションのユーザと対話できるように、ボットプロバイダによって実装され得る。いくつかの実装形態では、メッセージングアプリケーション１０３ａ／１０３ｂのプロバイダは、１つまたは複数のボットを提供することもある。いくつかの実装形態では、メッセージングアプリケーション１０３ａ／１０３ｂのプロバイダによって提供されるボットは、ボットが他のメッセージングアプリケーションに含まれることができるように、例えば他のプロバイダによって提供されるように構成され得る。ボットは他のモードに比べていくつかの利点を提供することが可能である。例えば、ボットは、クライアントデバイスにアプリケーションをインストールしたり、ウェブサイトにアクセスしたりすることなく、ユーザが新しいサービス（例えば、タクシー予約サービス、レストラン予約サービスなど）を試すことを許可することができる。さらに、ユーザは、テキストを介してボットと対話することができ、これは、ウェブサイト、ソフトウェアアプリケーション、電話通話、例えば、対話式音声応答（interactive voice response：ＩＶＲ）サービス、またはサービスとやり取りする他の方法を使用するのに必要な学習と比較して、最小限の学習しか必要とせず、または全く学習を必要としない。メッセージングサービスまたはアプリケーションにボットを組み込むことで、ユーザは、メッセージングサービス内で旅行の計画、買い物、イベントのスケジュール、情報の取得などのさまざまなタスクを他のユーザと協力することも可能となり、タスクを実行するためのさまざまなアプリケーション（例えば、タクシー予約アプリケーション、レストラン予約アプリケーション、カレンダーアプリケーションなど）間またはＷｅｂサイト間での切り替えのような面倒な操作を排除することができる。
【００３２】
ボットは、メッセージングアプリケーション１０３ａ／１０３ｂを介して一または複数のユーザ（例えば、ユーザ１２５ａ〜ｎのうちのいずれか）と対話して情報を提供するか、またはメッセージングアプリケーション１０３内で特定のアクションを実施するように構成されたコンピュータプログラムまたはアプリケーション（例えば、ソフトウェアアプリケーション）として実装されてもよい。一例として、情報検索ボットは、インターネット上の情報を検索し、メッセージングアプリ内で最も関連性の高い検索結果を提示することができる。別の例として、トラベルボットは、例えば、メッセージングアプリ内で旅行およびホテルのチケットの購入を可能にし、メッセージングアプリ内でホテルを予約し、メッセージングアプリ内でレンタカーを予約することなどによって、メッセージングアプリケーション１０３を介して旅行手配をする能力を有し得る。別の例として、タクシーボットは、別個のタクシー予約アプリを起動することも呼び出すこともせずに、例えば、（ユーザ１２５が位置情報へのアクセスを許可する場合にクライアントデバイス１１５からタクシーボットによって取得される）ユーザの位置にタクシーを呼び出す能力を有し得る。別の例として、コーチ／チューターボットは、ユーザを個人指導して、例えば、試験に現れる可能性がある質問をし、ユーザの応答が正しいか誤っているかについてのフィードバックを提供することによって、メッセージングアプリ内のいくつかの科目の内容についてユーザを指導し得る。別の例として、ゲームボットは、メッセージングアプリ内においてユーザとは反対サイドまたは同じサイドでゲームをプレイすることができる。別の例として、コマーシャルボットは、例えば、商人のカタログから製品情報を検索し、メッセージングアプリを通じて購入を可能とすることによって、特定の商人からサービスを提供することができる。別の例として、インタフェースボットは、メッセージングアプリのユーザが遠隔デバイスまたは車両とチャットし、そこから情報を検索し、および／または遠隔デバイスまたは車両に命令を提供できるように遠隔デバイスまたは車両とインタフェースしてもよい。
【００３３】
ボットの機能には、ユーザの意図を理解して実行することが含まれ得る。ユーザの意図は、ユーザの会話およびその文脈を分析し理解することによって理解され得る。ボットは、会話の変化するコンテキスト、または時間の経過とともに進化する会話に基づくユーザの変化する感情および／または意図を理解することもできる。例えば、ユーザＡがコーヒーのための会議を提案したが、ユーザＢがコーヒーを好まないと述べた場合、ボットはユーザＢにコーヒーに対する否定的な感情スコアを割り当て、会議のためにコーヒーショップを提案しない可能性がある。
【００３４】
メッセージングアプリケーション１０３ａ／１０３ｂのユーザと通信することができるボットを実装することは、多くの利点を提供することができる。従来、ユーザは、請求書の支払い、食べ物の注文、チケットの予約などの活動を実行するためにソフトウェアアプリケーションまたはウェブサイトを利用することがある。そのような実施に関する問題は、複数の活動を実行するために、ユーザが複数のソフトウェアアプリケーションやウェブサイトをインストールまたは使用することを要求されることである。例えば、ユーザは、（例えば、公益事業会社からの）公共料金の請求書に対する支払いをするため、映画のチケットを購入するため（例えば、チケットサービスプロバイダからのチケット予約アプリケーション）、（例えばそれぞれのレストランから）レストランの予約をするために、異なるソフトウェアアプリケーションをインストールしなければならない場合があり、または各活動のためにそれぞれのウェブサイトを訪問する必要があり得る。そのような実施に関する別の問題は、ユーザが複雑なユーザインタフェース、例えばウィンドウ、ボタン、チェックボックス、ダイアログボックスなどのような複数のユーザインタフェース要素を使用して実装されたユーザインタフェースなどを学習しなくてはならないことである。
【００３５】
したがって、１つまたは複数の説明された実装形態の利点は、単一のアプリケーションが、別個のウェブサイトへのアクセスまたはソフトウェアアプリケーションのインストールおよび実行を必要とせずに、ユーザが任意の数の相手との対話を含むアクティビティを実行できることであり、これはクライアントデバイス上のメモリ、ストレージ、および処理リソースの消費を削減する技術的効果を有する。説明された実装形態の利点は、会話型インタフェースにより、ユーザが、例えば複雑なユーザインタフェースを学習する必要なしに、そのような活動を完了することをより簡単かつ迅速とすることであり、これは計算リソースの消費を低減するという技術的効果を有する。説明された実装形態の別の利点は、ボットを実装することによって、例えば、通信サーバ、１つまたは複数のＷｅｂサーバでホストされているＷｅｂサイト、ＥメールサーバでホストされているカスタマーサポートＥメールなどのうちの一つまたは複数を使用して実装された無料電話番号など、様々な参加エンティティがより低いコストでユーザ対話を提供できるようになることであり、これは、ユーザ対話を可能とするために展開される計算リソースの必要性を減らすことができるという技術的効果を有する。説明された特徴の他の技術的効果は、通信ネットワークにわたってユーザタスクを完了するために必要とされるシステム処理および伝送リソースの消費の問題の縮小である。
【００３６】
本明細書における特定の例は、ボットと一または複数のユーザとの間の対話を説明しているが、ボットとユーザ１２５との間の１対１の対話、ボットと二以上のユーザとの間の（例えば、グループメッセージングの会話における）１対多の対話、複数のボットとユーザとの間の多対１の対話、および複数のボットと複数のユーザとの間の多対多の対話などの様々なタイプの対話が可能である。さらに、いくつかの実装形態では、ボットは、メッセージングアプリケーション１０３を介して、ボット間の直接通信を介して、または組み合わせにより、他のボット（例えば、ボット１０７ａ／１０７ｂ、１０９ａ／１０９ｂ、１１１、１１３など）と対話するようにも構成され得る。例えば、レストラン予約ボットは、テーブルを予約するために特定のレストランのボットと対話することができる。
【００３７】
特定の実施形態では、ボットは会話型インタフェースを使用して自然言語を使用してユーザと会話的に対話することができる。いくつかの実施形態では、ボットは、例えばレストランの住所の要求に応じて、「レストランＲの位置はＬである」などのテンプレートを使用するなど、テンプレートベースのフォーマットを使用して、ユーザと対話するための文章を作成することができる。場合によっては、例えばボットがユーザと対話するために自然言語を使用するかどうか、ボットがテンプレートベースの対話を使用するかどうかなど、ユーザが、ボット対話フォーマットを選択できるようにすることが可能であり得る。
【００３８】
ボットが自然言語を使用して会話的に対話する場合、ボットの対話の内容および／またはスタイルは、自然言語処理を使用して判定される会話の内容、会話中のユーザの識別情報、１つまたは複数の会話コンテキスト（例えば、ユーザの対話に関する履歴情報、ソーシャルグラフに基づく会話内のユーザ間の関係）、外部条件（例えば、天気、交通）、ユーザのスケジュール、ユーザに関連する関連コンテキストなどのうちの一つまたは複数に基づいて動的に変化し得る。このような場合、ボットの対話の内容とスタイルは、会話に参加しているユーザが同意した要素のみに基づいて異なる。
【００３９】
一例として、会話のユーザがフォーマルな言葉を使用していると判断された場合（例えば、俗語や絵文字がない、または最小限の俗語または絵文字）、ボットもフォーマルな言葉を使用してその会話内で対話することができ、逆もまた同様である。別の例として、会話中のユーザが（現在および／または過去の会話に基づいて）絵文字のヘビーユーザであると判定された場合、ボットは、１つまたは複数の絵文字を使用してそのユーザと対話することもできる。別の例として、会話中の２人のユーザがソーシャルグラフ内で遠い関係であると判定された場合（例えば、彼らの間に２人以上の中間ノードを有する、例えば、彼らが友達の友達の友達であることを示す）、ボットはその会話でよりフォーマルな言葉を使用し得る。会話に参加しているユーザが、ユーザのソーシャルグラフ、スケジュール、場所、またはユーザに関連するその他のコンテキストなどの要素をボットが利用することに同意していない場合、ボットの対話の内容およびスタイルは、このような要素を利用する必要がないデフォルトスタイル、例えばニュートラルスタイルであり得る。
【００４０】
さらに、いくつかの実装形態では、一または複数のボットは、ユーザとの会話をやり取りするための機能を含むことができる。例えば、ユーザが、「＠ムービーボット映画を推薦してくれませんか？（@moviebot Can you recommend a movie?）」と入力することにより映画に関する情報を要求した場合、「ムービーボット（moviebot）」というボットが「コメディーの気分ですか？」と応答し得る。次に、ユーザは、例えば「いいえ」と応答する場合があり、これに対し、ボットは、「了解しました。「宇宙と星」というタイトルのＳＦ映画は素晴らしい評価を得ています。チケットを予約しましょうか？」と応答し得る。するとユーザは、「はい、私は午後６時より後に行くことができます。スティーブが参加できるかどうか確認してください」と表明することができる。ボットが自分の連絡先についての情報にアクセスすることに対するユーザの同意、およびボットからメッセージを受信することに対する友人スティーブの同意があると、ボットはユーザの友人スティーブにメッセージを送信し、適切な時間に映画チケットを予約するさらなるアクションを実行することが可能である。
【００４１】
特定の実施形態では、会話に参加しているユーザは、例えば、ボット名またはボットハンドル（例えば、タクシー（taxi）、＠タクシーボット（@taxibot）、＠ムービー（@movies）など）を入力すること、音声コマンド（例えば、「銀行ボットを呼び出して」など）を使用すること、ユーザインタフェース要素（例えば、ボット名またはハンドルでラベル付けされたボタンまたはその他の要素）をアクティブにすることなどによって、特定のボットまたは特定のタスクを実行するボットを呼び出すことが可能とされ得る。ボットが呼び出されると、ユーザ１２５は、他のユーザ１２５にメッセージを送信するのと同様の方法で、メッセージングアプリケーション１０３ａ／１０３ｂを介してボットにメッセージを送信することができる。例えば、タクシーを呼ぶには、ユーザは「＠タクシーボットタクシーを呼んで（@taxibot get me a cab）」と入力することができ、ホテルを予約するには、ユーザは「＠ホテルボット 私の近くの中華料理店で４人のテーブルを予約して（@hotelbot book a table for 4 at a Chinese restaurant near me）」と入力することができる。
【００４２】
特定の実施形態では、ボットは、具体的に呼び出されることなく、メッセージング会話内の情報またはアクションを自動的に提案することができる。つまり、ユーザはボットを特別に呼び出す必要がないかもしれない。これらの実施形態では、ボットは、継続的にまたは別々の時点での会話の分析および理解に依存することができる。会話の分析は、特定のユーザのニーズを理解し、いつボットが支援を提案すべきかを識別するために使用することができる。一例として、ボットは、ユーザが情報を必要としていると判定した場合（例えば、ユーザが他のユーザに質問することに基づいて、複数のユーザがある情報を有していないことを示すことに基づいて）、何らかの情報を検索して答えを提案することが可能である。別の例として、複数のユーザが中華料理を食べることに興味を表明したと判定された場合、ボットは自動的にユーザの近くにある一連の中華レストランを提案してもよく、これは、レストランの場所、評価、ウェブサイトへのリンクなどの任意の情報の提案を含む。
【００４３】
特定の実施形態では、ボットを自動的に呼び出したり、またはユーザがボットを明示的に呼び出すのを待ったりするのではなく、自動的な提案がメッセージング会話中の一または複数のユーザに対し行われて、一または複数のボットを呼び出すことができる。これらの実施形態では、会話は継続的にまたは別々の時点で分析されることができ、会話の分析は、特定のユーザのニーズを理解し、いつ会話内でボットを提案すべきかを識別するために使用することができる。
【００４４】
ボットが具体的に呼び出されることなく、メッセージング会話内において情報またはアクションを自動的に提案することができる実施形態では、例えば、メッセージング会話に参加している一または複数のユーザが、ユーザの会話の分析をボットが実施することについて同意しない場合、そのような機能は無効にされる。さらに、そのような機能は、ユーザ入力に基づいて一時的に無効にされてもよい。例えば、会話がプライベートであるかセンシティブであることをユーザが示したとき、会話コンテキストの分析は、ユーザがボットをアクティブにするための入力を提供するまで一時停止される。さらに、分析機能が無効化されているという標示を、例えばユーザインタフェース要素を用いて、会話の参加者に提供することができる。
【００４５】
様々な実装形態では、ボットは様々な構成で実装され得る。例えば、図１に示されるように、ボット１０５はクライアントデバイス１１５ａ上に実装される。この例では、ボットは、クライアントデバイス１１５ａに対してローカルなソフトウェアアプリケーション内のモジュールであり得る。例えば、ユーザがクライアントデバイス１１５ａ上にタクシーを呼ぶアプリケーションをインストールした場合、ボット機能はタクシーを呼ぶアプリケーションにモジュールとして組み込まれることができる。この例では、ユーザは、例えば「＠タクシーボットタクシーを呼んで（@taxibot get me a cab）」というメッセージを送信することによって、タクシーボットを呼び出すことが可能である。メッセージングアプリケーション１０３ｂは、タクシーを呼ぶアプリケーション内のボットモジュールを自動的に起動させることができる。このようにして、ユーザがメッセージングアプリケーション１０３を介してボットと会話することができるように、ボットはクライアントデバイス上にローカルに実装され得る。
【００４６】
図１に示す別の例では、ボット１０７ａはクライアントデバイス１１５ａ上に実装されているように示され、ボット１０７ｂはメッセージングサーバ１０１上に実装されているように示されている。この例では、ボットは、ボット１０７ａ（サーバモジュール）およびボット１０７ｂ（クライアントモジュール）のそれぞれによって提供されるボット機能の一部を用いて、例えばクライアント−サーバコンピュータプログラムとして、実装することができる。例えば、ボットがハンドル＠カレンダー（@calendar）を有するスケジューリングボットである場合、ユーザ１１５ａは、「＠カレンダー 夕方に洗濯物を受け取ることをリマインドして（@calendar remind me to pick up laundry in the evening）」と入力することによって、リマインダをスケジュールすることができ、これは、ボット１０７ｂ（クライアントモジュール）によって取り扱われ得る。この例を続けると、ユーザ１１５ａがボットに「ジムは４時に会えるかをチェックして」と言うと、ボット１０７ａ（サーバモジュール）はメッセージを交換するためにユーザであるジム（またはジムのスケジューリングボット）に連絡し、ユーザ１１５ａに応答を提供する。
【００４７】
別の例では、ボット１０９ａ（サーバモジュール）はサーバ１３５上に実装され、ボット１０９ｂ（クライアントモジュール）はクライアントデバイス１１５上に実装される。この例では、ボット機能は、クライアントデバイス１１５、およびメッセージングサーバ１０１とは異なるサーバ１３５上に実装されたモジュールによって提供される。いくつかの実装形態では、ボットは、例えば、複数のクライアントデバイスおよびサーバ（例えば、クライアントデバイス１１５、サーバ１３５、メッセージングサーバ１０１など）にわたって分散されたモジュールを用いて、分散アプリケーションとして実装され得る。いくつかの実装形態では、ボットは、サーバアプリケーションとして実装されることができ、それは、例えば、メッセージングサーバ１０１上に実装されるボット１１１、およびサーバ１３５上に実装されるボット１１３である。
【００４８】
クライアントのみ、サーバのみ、クライアント−サーバ、分散などの種々の実装は、様々な利点を提供することができる。例えば、クライアントのみの実装では、ボット機能をローカルで、例えば、ネットワークアクセスがなくても、提供することが可能であり、これは、例えば、ユーザがネットワークのサービスエリア外にいるとき、または少ないまたは限られたネットワーク帯域幅しか有しない任意のエリア内にいる場合のような、特定の状況において有利であり得る。サーバのみ、クライアント−サーバ、または分散構成などの１つまたは複数のサーバを含む実装では、例えば、金融取引、チケットの予約などのクライアントデバイスでローカルに提供できない特定の機能が許可され得る。
【００４９】
図１では、ボットをメッセージングアプリケーション１０３とは異なるものとして示しているが、いくつかの実装形態では、１つまたは複数のボットは、メッセージングアプリケーション１０３の一部として実装され得る。ボットがメッセージングアプリケーション１０３の一部として実装される実装形態では、ボットを実行する前にユーザの許可が取得される。例えば、ボットがメッセージングアプリケーション１０３ａ／１０３ｂの一部として実行される場合、メッセージングアプリケーション１０３ａ／１０３ｂは、特定の活動を実施することができるボット、例えば、送受信メッセージを翻訳する翻訳ボット、ユーザのカレンダー上のイベントをスケジュールするスケジューリングボットなどを提供することが可能である。この例では、翻訳ボットはユーザの具体的な許可がある場合にのみアクティブになる。ユーザが同意しない場合、メッセージングアプリケーション１０３ａ／１０３ｂ内のボットは実装されない（例えば、無効化、削除など）。ユーザが同意する場合、ボットまたはメッセージングアプリケーション１０３ａ／１０３ｂは、メッセージングアプリケーション１０３ａ／１０３ｂを介してユーザ間で交換されるメッセージを限定的に使用して、特定の機能、例えば、翻訳、スケジューリングなどを提供することができる。
【００５０】
いくつかの実装形態では、メッセージングアプリケーション１０３ａ／１０３ｂのプロバイダおよびユーザ１２５とは異なるサードパーティが、特定の目的のためにメッセージングアプリケーション１０３ａ／１０３ｂを介してユーザ１２５と通信することができるボットを提供し得る。例えば、タクシーサービスプロバイダはタクシーボットを提供し、発券サービスはイベントチケットを予約できるボットを提供し、銀行ボットは金融取引を実行する機能を提供することができる。
【００５１】
メッセージングアプリケーション１０３を介してボットを実装する際、ボットは、特定のユーザ許可があった場合にのみユーザと通信することを許可される。例えば、ユーザがボットを呼び出すと、ボットは、例えば、ボットを呼び出すというユーザの動作に基づいて返信することができる。別の例では、ユーザは、ユーザに連絡することができる特定のボットまたはボットの種類を示すことができる。例えば、ユーザは、旅行ボットが自分と通信することを許可するが、ショッピングボットには許可を与えないことがある。この例では、メッセージングアプリケーション１０３ａ／１０３ｂは、旅行ボットがユーザとメッセージを交換することを許可するが、ショッピングボットからのメッセージをフィルタリングまたは拒否することができる。
【００５２】
さらに、いくつかの機能（例えば、タクシーの呼出、フライト予約、友達への連絡など）を提供するために、ボットは、場所、支払い情報、連絡先などのユーザデータへのボットのアクセスをユーザが許可することを要求し得る。そのような場合、ユーザには、ボットへアクセスを許可または拒否するオプションが提示される。ユーザがアクセスを拒否した場合、ボットはメッセージで、例えば「申し訳ありませんが、タクシーを予約することができません」と、応答する可能性がある。さらに、ユーザは、限定されたやり方で情報へのアクセスを提供することができ、例えば、ユーザは、ボットの特定の起動時にのみタクシーボットが現在位置にアクセスすることを許可し、他の場合は許可しないことができる。異なる実装形態では、ユーザは、ボットがアクセスできる情報の種類、量、および粒度を制御することができ、そのような許可をいつでも変更することができる（例えば、ユーザインタフェースを介した）機能が提供されている。いくつかの実装形態では、ボットがそのようなデータにアクセスすることができるようになる前に、例えば、個人を識別可能な情報を削除するなど、情報を特定のデータ要素に制限するためにユーザデータが処理され得る。さらに、ユーザは、メッセージングアプリケーション１０３ａ／１０３ｂおよび１つまたは複数のボットによるユーザデータの使用を制御することができる。例えば、ユーザは、金融取引を行う能力を提供するボットが、取引完了前にユーザ認証を必要とすることを指定することができ、例えば、ボットは、「映画「宇宙と星」のチケットは各１２ドルです。このまま予約しますか？」というメッセージ、または「このシャツの最安値は送料込みで１２５ドルです。あなたの下４桁１２３４のクレジットカードに請求しますか？」というメッセージを送信し得る。
【００５３】
いくつかの実装形態では、メッセージングアプリケーション１０３ａ／１０３ｂは、１つまたは複数の提案、例えば提案された応答を、例えばボタンのユーザインタフェース、または他のユーザインタフェース要素を介してユーザ１２５に提供することもできる。提案された応答は、例えば、ユーザが応答を入力する必要性を減らすか、または無くすことによって、より迅速な対話を可能にし得る。提案された応答は、例えば、クライアントデバイスがテキスト入力機能を欠いているとき（例えば、キーボードまたはマイクロフォンを含まないスマートウォッチ）に、ユーザがメッセージに迅速かつ容易に応答することを可能にし得る。提案された応答は、例えば、ユーザが提案された応答を選択したときに（例えば、タッチスクリーン上の対応するユーザインタフェース要素を選択することによって）、ユーザがメッセージに迅速に応答することも可能にし得る。提案された応答は、応答を生成するようにトレーニングされた予測モデル、例えば機械学習モデルを使用して生成されることが可能である。
【００５４】
例えば、メッセージングアプリケーション１０３ａ／１０３ｂは、メッセージングアプリケーション１０３とのユーザの対話を向上させることが可能な、例えばディープラーニングモデルなどの機械学習を実装することができる。機械学習モデルは、合成データ、例えば、ユーザ情報を使用せずにコンピュータによって自動的に生成されたデータを使用してトレーニングすることができる。いくつかの実装形態では、機械学習モデルは、例えば、トレーニングのためにユーザデータを利用する許可がユーザから明示的に得られているサンプルデータに基づいてトレーニングされ得る。例えば、サンプルデータは、受信されたメッセージと、受信されたメッセージに対して送信された応答とを含み得る。サンプルデータに基づいて、機械学習モデルは受信されたメッセージに対する応答を予測することができ、次にそれを提案された応答として提供することができる。例えば、受信されたメッセージおよびユーザのコンテキストに基づいてカスタマイズされた応答の選択を提供することにより、受信されたメッセージに対する応答を作成するユーザの負担を軽減することによって、ユーザの対話は強化される。例えば、ユーザが同意するとき、提案された応答は、ユーザの以前の活動、例えば、会話における以前のメッセージ、異なる会話におけるメッセージなどに基づいてカスタマイズされ得る。例えば、そのような活動は、ユーザに対する適切な提案応答、例えば、ユーザの対話スタイルに基づく遊び心のある応答、フォーマルな応答などを判定するために用いられ得る。別の例では、ユーザが１つまたは複数の優先言語および／またはロケールを指定すると、メッセージングアプリケーション１０３ａ／１０３ｂは、ユーザの優先言語で提案された応答を生成することができる。様々な例では、提案される応答は、テキスト応答、画像、マルチメディアなどであり得る。
【００５５】
いくつかの実装形態では、機械学習は、メッセージングサーバ１０１上、クライアントデバイス１１５上、またはメッセージングサーバ１０１およびクライアントデバイス１１５の両方の上で実装され得る。いくつかの実装形態では、単純な機械学習モデルがクライアントデバイス１１５上に実装され（例えば、クライアントデバイスのメモリ、ストレージ、および処理制約内でモデルの動作を可能にするため）、複雑な機械学習モデルがメッセージングサーバ１０１上に実装され得る。ユーザが機械学習技術の使用について同意しない場合、そのような技術は実装されない。いくつかの実装形態では、ユーザは、機械学習がクライアントデバイス１１５上にのみ実装されることに選択的に同意し得る。これらの実装形態では、機械学習はクライアントデバイス１１５上で実装されることができ、これにより、機械学習モデルに対する更新または機械学習モデルによって使用されるユーザ情報がローカルに格納または使用されて、メッセージングサーバ１０１、サーバ１３５、他のクライアントデバイス１１５などの他のデバイスと共有されない。
【００５６】
例えば、機械学習技術に基づく提案を受け取ることに同意するユーザに対し、提案は、メッセージングアプリケーション１０３によって提供され得る。例えば、提案は、コンテンツ（例えば、映画、本など）、スケジュール（例えば、ユーザのカレンダー上の利用可能時間）、イベント／開催地（例えば、レストラン、コンサートなど）等の提案を含み得る。いくつかの実装形態では、会話に参加しているユーザが会話データの使用に同意する場合、提案は、会話内容に基づいた、着信メッセージへの提案された応答を含み得る。例えば、会話の内容に基づく提案に同意した２人のユーザのうちの第１のユーザが「軽い食事はどうですか？イタリア料理はどうですか？」というメッセージを送信すると、例えば、「＠アシスタントランチ、イタリア料理、２人用のテーブル（@assistant lunch, Italian, table for 2）」という応答が、第２のユーザに提案され得る。この例では、提案された応答は（記号＠およびボットハンドルアシスタントによって識別された）ボットを含む。第２のユーザがこの応答を選択すると、アシスタントボットが会話に追加され、メッセージがボットに送信される。次に、ボットからの応答が会話に表示され、２人のユーザのいずれかがボットにさらにメッセージを送信することができる。この例では、アシスタントボットは会話のコンテンツへのアクセスを提供されず、提案された応答はメッセージングアプリケーション１０３によって生成される。
【００５７】
特定の実装形態では、提案された応答の内容は、ボットがすでに会話中に存在しているか、または会話に組み込むことができるかに基づいてカスタマイズされ得る。例えば、旅行ボットをメッセージングアプリに組み込むことができると判定された場合、フランスへの航空券の費用についての質問に対する提案された応答は、「旅行ボットに聞いてみましょう！」であり得る。
【００５８】
異なる実装形態では、提案、例えば提案された応答は、テキスト（例えば、「素晴らしい！」）、絵文字（例えば、笑顔、眠そうな顔など）、画像（例えば、ユーザの写真ライブラリからの写真）、テンプレートのフィールドにユーザデータが挿入されたテンプレートに基づいて生成されたテキスト（例えば、「彼女の番号は＜電話番号＞」、ここで、ユーザがユーザデータへのアクセスを提供するならば、フィールド＜電話番号＞は、ユーザデータに基づいて記入されている）、リンク（例えば、ユニフォームリソースロケータ）などのうちの一つまたは複数を含み得る。いくつかの実装形態では、提案された応答は、例えば、色、フォント、レイアウトなどを使用してフォーマット化および／またはスタイル化され得る。例えば、映画の推薦を含む提案された応答は、映画についての説明文、映画からの画像、およびチケットを購入するためのリンクを含むことができる。異なる実装形態では、提案された応答は、異なるタイプのユーザインタフェース要素として、例えば、テキストボックス、情報カードなどとして提示され得る。
【００５９】
異なる実装形態では、ユーザは、提案を受け取るかどうか、どのタイプの提案を受け取るか、提案の頻度などを制御することができる。例えば、ユーザは提案を受け取ることを完全に辞退するか、特定のタイプの提案を選択するか、または一日のうちの特定の時間帯にだけ提案を受け取ることが可能である。別の例では、ユーザはパーソナライズされた提案を受け取ることを選択し得る。この例では、ユーザデータの使用および機械学習技術の使用に関するユーザの選好に基づいて提案を提供するために機械学習が使用され得る。
【００６０】
図２は、いくつかの実装形態による、通信中の１つのユーザデバイスおよび１つのボットまたは支援エージェントの例示的な構成の図である。図２に示す構成例では、ユーザデバイス２０２（例えば、図１の１１５ａ〜１１５ｎ）は、ボット２０４（例えば、１０５、１０７ａ、１０７ｂ、１０９ａ、１０９ｂ、１１１、および／または１１３）と１対１で会話している。ユーザデバイス２０２に関連するユーザ（例えば、ユーザ１２５ａ〜１２５ｎ）は、ボット２０４を呼び出し、ボット２０４との通信セッションに参加することができる。かわりに、ボット２０４は、ユーザデバイス２０２に関連するユーザとの通信を自動的に開始してもよい。本実施例に記載の「ユーザ」は人間のユーザを指すことが理解されよう。しかし、当然のことながら、ユーザは、コンピュータまたは他の人間でないシステムを含むことができ、ユーザとボットとの間の通信は、人間のユーザとボットとの間、コンピュータなどの人間でないもの（例えば、コンピュータ上で実行されるソフトウェアアプリケーションなど）とボットとの間、および／または１つまたは複数のボットと１つまたは複数の他のボットとの間の通信を含み得る。
【００６１】
図３は、いくつかの実装形態による、通信中の２以上のユーザデバイスと単一のボットまたは支援エージェントとの例示的な構成の図である。図３に示す構成例では、ユーザデバイス３０２〜３０６（例えば、図１の１１５ａ〜１１５ｎ）は、ボット３０８（例えば、１０５、１０７ａ、１０７ｂ、１０９ａ、１０９ｂ、１１１、および／または１１３）を含むグループメッセージング会話中であり得る。ユーザデバイス３０２〜３０６に関連するユーザの一または複数（例えば、ユーザ１２５ａ〜１２５ｎのうちの一または複数）は、ボット３０８と対話し、ボット３０８との通信セッションに参加することができる。ボットからの通信の一部または全部は、グループメッセージング会話に配置され得る。また、ボット３０８との間で提供されるある情報は、その情報に関連するユーザにのみ利用可能であり、例えば表示され得る。ボット３０８は、ユーザデバイス３０２〜３０６に関連するユーザのうちの一または複数との通信を自動的に開始することができる。
【００６２】
図４は、いくつかの実装形態による、通信中の２以上のユーザデバイスおよび２以上のボットまたは支援エージェントの例示的な構成の図である。図４に示す構成例では、ユーザデバイス４０２および任意選択で４０４（例えば図１の１１５ａ〜１１５ｎ）は、複数のボット４０６〜４０８（例えば図１の１０５、１０７ａ、１０７ｂ、１０９ａ、１０９ｂ、１１１、および／または１１３）を含むグループメッセージング会話中であり得る。ユーザデバイス４０２〜４０４に関連するユーザのうちの一または複数（例えば、ユーザ１２５ａ〜１２５ｎのうちの一または複数）は、ボット４０６〜４０８のうちの一方または両方と対話し、ボット４０６〜４０８との通信セッションに参加することができる。ボットからの通信の一部または全部は、グループメッセージング会話に配置され得る。また、ボット４０６〜４０８との間で提供されるある情報は、その情報に関連するユーザにのみ利用可能であり、例えば表示され得る。ボット４０６〜４０８は、ユーザデバイス４０２〜４０４に関連するユーザのうちの一または複数との通信を自動的に開始することができる。
【００６３】
図５は、いくつかの実装形態によるボット許可を管理するための例示的な方法のフロー図である。処理は５０２から始まり、ユーザからの要求がボットで受信される。要求は、ボットが実行するように要求されたタスクを含み得る。いくつかの実装形態では、要求はボットに対するコマンドであり得る。例えば、予約ボットに対するコマンドを含む要求は、「＠予約ボット近くのホテルを探して（@reservationbot find a hotel nearby）」であり、アシスタントボットに対するコマンドを含む要求は、「＠アシスタントジムに私のフライトの詳細を送って（@assistant send my flight details to Jim）」などであり得る。この例では、ボットは、ボットハンドル、例えば、「＠」記号の後に続くボットの名前（例えば、予約ボット（reservationbot）、アシスタント（assistant）など）によって識別される。タスクを実行するため、および／またはリクエストに対する応答を提供するため、ボットはユーザデータへのアクセスを必要とし得る。ユーザおよびボットは、１対１の通信配置であり得る（例えば、図２）。例えば、ユーザはカーサービスの迎車を要求することができ、自動車サービスボットは、どの車がユーザの送迎に利用可能であるかを判定するためにユーザの位置を知る必要がある可能性がある。別の例では、ユーザは近くのホテルでホテル予約をすることを望む可能性があり、ホテル予約ボットは、ユーザの位置を知る必要がある可能性がある。さらに別の例では、ボットは、ユーザ情報（例えば、写真、カレンダエントリ、フライトスケジュールなど）を共有することを含むユーザに対する提案された応答を提供することができ、提案ボットは、提案された応答のために有用であり得るデータにアクセスするためのユーザの許可を得て、実際の応答としてそのようなデータを提供する必要があり得る。要求は、ユーザからの要求であってもよいし、（例えば、提案応答ボットなどからの）自動的に生成された要求であってもよい。処理は５０４に続く。
【００６４】
５０４で、許可ユーザインタフェース要素が、要求に関連するユーザに表示される。許可要求ユーザインタフェース要素の一例を図６に示し、以下に説明する。許可ユーザインタフェース要素は、音声プロンプトとして、または他のユーザインタフェースおよび／または出力方法を使用して提示されてもよい。処理は５０６に続く。５０６において、ユーザがボットにユーザデータにアクセスまたは取得する許可を与えるかどうかの標示が受信される。標示は、ユーザが許可を与えるか否かを示すユーザインタフェース要素選択（例えば、タッチ、タップ、画面上のユーザインタフェースボタンの選択、タイプ入力、音声入力、ジェスチャ入力など）の形で受信され得る。例えば、ユーザは、図６の許可ユーザインタフェース要素に示されている「今は認めない」または「承認する」オプションのうちの１つを選択することができる。処理は５０８に続く。
【００６５】
５０８において、ボット許可システムは許可が与えられたか否かを判定する。許可が与えられたかどうかを判定することは、ステップ５０６で受信された標示を評価することによって達成できる。許可が与えられた場合、処理は５１０に続く。許可が与えられなかった場合、処理は５１４に続く。
【００６６】
５１０で、ボットと共有されているユーザデータの標示が任意選択で提供され得る。例えば、図７に示す標示「位置データを共有します」は、ユーザによって与えられた許可に従って、ユーザデータがボットと共有されたことの標示として提供され得る。処理は５１２に続く。５１２で、ボットは、与えられた許可に関連するタスクを完了するためにさらなる処理を実行することができる。例えば、カーサービスボットは、どの車がユーザにカーサービスを提供する場所にいるかを判定し続けることができる。別の例では、宿泊施設ボットは、共有されたユーザ位置を使用して、空がありレンタル可能な近くの宿泊施設を判定することができる。
【００６７】
５１４で、ボットは、タスクを辞退することの標示をユーザに対して表示させることができる。例えば、ボットは、「申し訳ありませんが、現在地を取得できませんでした−車をスケジュールできません」などのような標示を提供できる。標示は、グラフィカルユーザインタフェース上に表示されてもよく、および／または音声キューまたは他の出力標示の形で提供されてもよい。
【００６８】
図６は、いくつかの実装形態によるボットメッセージングを伴う例示的なユーザインタフェース６００の図である。特に、ユーザインタフェース６００は、ユーザからボットへのメッセージ（６０２）を含む。メッセージ６０２は、ユーザの個人情報、（例えば、近くのホテルを見つける）例えば位置情報の使用を必要とし得る要求（「私に近くのホテルを見つけて」）を含む。ユーザからの要求に応答して、ボットは、要求を完了するためにボットがユーザの位置データにアクセスする必要があることを示すメッセージ（６０４）をユーザに送信することができる。
【００６９】
ボットは、許可承認／拒否インタフェース要素６０６を表示させることができる。許可要素６０６は、どのタイプの許可が必要であるかの説明（６０８）、およびボットがユーザデータにアクセス（または受信）するための許可を拒否するための入力要素６１０および承認するための入力要素６１２を含むことができる。
【００７０】
図７は、図６から続く、ユーザがボットにユーザの位置データを使用する許可を与える、例示的なユーザインタフェース７００の図である。ユーザインタフェース７００は、図６に関連して上述した要素６０２〜６０４を含む。ユーザインタフェース７００は、例えば入力要素６１２を選択することによってユーザが許可を与えることに応答して、ユーザデータがボットと共有されたという標示（７０２）も含む。ユーザインタフェース７００は、ボットが要求に取り組んでいることを示すボットからのメッセージ（７０４）、およびボットからの１つまたは複数のオプションの提案（７０６および７０８）も含む。ユーザが提案要素（７０６、７０８）のうちの１つを選択すると、ボットは、ボットからの提案についての詳細、この例ではボットによって識別された提案された近くのホテルについての詳細を表示させることができる。
【００７１】
図８は、いくつかの実装形態による、グループメッセージングコンテキスト内で（例えば、「グループチャット」内で）ボット許可を管理するための例示的な方法のフロー図である。処理は８０２で始まり、ユーザからの要求がボットで受信される。要求されたタスクを実行するために、および／または要求に対する応答を提供するために、ボットはユーザデータへのアクセスを必要とし得る。ユーザおよびボットは、（例えば、図３または図４に示されるように）複数のユーザおよび／またはボットとのグループ通信構成にあってもよい。例えば、複数のユーザとの通信セッションにおいて、ユーザは、例えば複数のユーザのためにカーサービスの迎車を要求し得る。カーサービスボットは、どの車がユーザを迎えに行くのに利用可能であるかを判定するために、迎車に含まれるべき各ユーザの位置を知る必要がある可能性がある。別の例では、ユーザは、会話に参加しているユーザのグループのために近くのホテルでホテル予約をすることを望む可能性がある。この例では、ホテル予約ボットは、ユーザのグループに関する情報、例えば名前、支払い情報などを知る必要があり得る。要求はユーザからの要求である場合もあれば、（提案応答ボットなどから）自動的に生成された要求である場合もある。処理は８０４に続く。
【００７２】
８０４で、進捗標示が任意選択でボットによって表示され、要求を行っている個々のユーザまたはグループがグループ会話においてこれを見ることができる。例えば、カーサービスボットは、グループ会話で「手配中です」などのメッセージを表示し得る。処理は８０６に続く。
【００７３】
８０６で、許可ユーザインタフェース要素を要求に関連するユーザに表示させる。許可要求ユーザインタフェース要素の例は、図６に示されており、上で説明されている。許可ユーザインタフェース要素は、音声プロンプトとして、または他のユーザインタフェースおよび／または出力方法を使用して提示されてもよい。処理は８０８に続く。
【００７４】
８０８で、一または複数のユーザがボットに、それぞれのユーザデータにアクセスまたは取得する許可を与えるかどうかの標示が受信される。標示は、ユーザが許可を与えるか否かを示すユーザインタフェース要素選択（例えば、タッチ、タップ、画面上のユーザインタフェースボタンの選択、タイプ入力、音声入力、ジェスチャ入力など）の形で受け取ることができる。例えば、ユーザは、図６の許可ユーザインタフェース要素に示されている「今は認めない」または「承認する」のうちの１つを選択することができる。処理は８１０に続く。
【００７５】
８１０で、ボット許可システムは許可が与えられたか否かを判定する。許可が与えられたかどうかを判定することは、ステップ８０８で受信された標示を評価することによって達成できる。許可が与えられた場合、処理は８１２に続く。許可が与えられなかった場合、処理は８１６に続く。
【００７６】
８１２で、ボットはユーザと１対１のチャットを開始することができる。１対１のチャット、および１対１のチャットで交換されたメッセージは、グループメッセージング会話のユーザグループからは見えない。処理は８１４に続く。
【００７７】
８１４で、ボットは、１対１のユーザメッセージングの会話内で与えられた許可に関連するタスクを完了するためにさらなる処理を実行することができる。例えば、カーサービスボットは、どの車がユーザにカーサービスを提供する場所にいるかを判定し続けることができる。別の例では、宿泊施設ボットは、共有のユーザ位置を使用して、空がありレンタル可能な近くの宿泊施設を判定することができる。
【００７８】
８１６で、ボットは、グループメッセージング会話内でタスクを辞退することの「礼儀正しい」標示をユーザに表示させることができる。例えば、ボットは、「私はあなたの位置を知ることができませんでした−車をスケジュールすることができません」などのような標示を提供することができる。標示は、グラフィカルユーザインタフェース上に表示されるか、または音声キューまたは他の出力標示の形で提供され得る。辞退メッセージの礼儀正しい態様は、ユーザがユーザのデータを使用の許可をボットに与えなかったことを明示的には示さないメッセージを含むことができる。異なる実装形態では、標示は、例えば要求に基づいて、または他の要因に基づいて、異なるテキストコンテンツを含み得る。例えば、車を呼ぶという文脈でユーザが位置へのアクセスを禁止することに応答した標示は、「すみません、位置を取得できません」、「近くの車を見つけることができません」などのテキストコンテンツを含むことができる。いくつかの実装形態では、グループ会話の異なる参加者に異なる標示が送信されることがある。いくつかの実装形態では、標示は、異なるフォーマット、例えば、テキストボックス、グラフィカル表示、アニメーション表示などを使用することができる。いくつかの実装形態では、標示は、異なるスタイル、例えば、太字テキスト、イタリック体テキスト、フォント、色などを使用することができる。
【００７９】
図９は、本明細書に記載の１つまたは複数の機能を実装するために使用することができる例示的なコンピューティングデバイス９００のブロック図である。一例では、コンピューティングデバイス９００は、クライアント（またはユーザ）デバイス、例えば図１に示されるクライアントデバイス１１５ａ〜１１５ｎのうちのいずれかを実装するために使用され得る。コンピューティングデバイス９００は、上述したような任意の適切なコンピュータシステム、サーバ、または他の電子もしくはハードウェアデバイスであり得る。
【００８０】
本明細書に記載の１つまたは複数の方法は、任意のタイプのコンピューティングデバイス上で実行することができるスタンドアロンプログラム、ウェブブラウザ上で実行されるプログラム、モバイルコンピューティングデバイス（携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス（腕時計、アームバンド、宝飾品、帽子、バーチャルリアリティゴーグルまたはメガネ、拡張現実ゴーグルまたはメガネなど）、ラップトップコンピュータなど）上で実行されるモバイルアプリケーション（「ａｐｐ」）において実行することができる。一例では、クライアント／サーバアーキテクチャを使用することができ、例えば、（ユーザデバイスとしての）モバイルコンピューティングデバイスは、ユーザ入力データをサーバデバイスに送信し、出力のための（例えば、表示のための）最終出力データをサーバから受信する。別の例では、すべての計算は、モバイルコンピューティングデバイス上のモバイルアプリ（および／または他のアプリ）内で実行することができる。別の例では、計算は、モバイルコンピューティングデバイスと１つまたは複数のサーバデバイスとの間で分割することができる。
【００８１】
いくつかの実装形態では、コンピューティングデバイス９００は、プロセッサ９０２、メモリ９０４、および入力／出力（Ｉ／Ｏ）インタフェース９０６を含む。プロセッサ９０２は、プログラムコードを実行し、コンピューティングデバイス９００の基本動作を制御するための１つまたは複数のプロセッサおよび／または処理回路であり得る。「プロセッサ」は、データ、信号または他の情報を処理する任意の適切なハードウェアおよび／またはソフトウェアシステム、機構または構成要素を含む。プロセッサは、汎用中央処理装置（ＣＰＵ）、複数の処理装置、機能を達成するための専用回路、または他のシステムを有するシステムを含み得る。処理は特定の地理的位置に限定される必要はなく、または時間的な制限がある必要もない。例えば、プロセッサは、その機能を「リアルタイム」、「オフライン」、「バッチモード」などで実行することができる。処理の部分は、異なる時間に、異なる場所で、異なる（または同じ）処理システムにより実行することができる。コンピュータは、メモリと通信する任意のプロセッサであり得る。
【００８２】
メモリ９０４は、通常、プロセッサ９０２によるアクセスのためにコンピューティングデバイス９００に設けられ、プロセッサにより実行される命令を格納するのに適したランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的消去可能読み取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリなどの任意の適切なプロセッサ読み取り可能記憶媒体とすることができ、プロセッサ９０２とは別個に配置され、および／またはそれと一体化され得る。メモリ９０４は、オペレーティングシステム９０８、およびメッセージングアプリケーション、ボットアプリケーションなどの１つまたは複数のアプリケーション９１０を含む、プロセッサ９０２によってコンピューティングデバイス９００上で動作するソフトウェアを格納することができる。いくつかの実装形態では、アプリケーション９１０は、プロセッサ９０２が本明細書に記載の機能、例えば、図５および／または図８の方法のうちの１つまたは複数を実施することを可能とする命令を含み得る。例えば、アプリケーション９１０は、本明細書で説明されたようなボット許可を管理するためのプログラムを含むメッセージングおよび／またはボットアプリケーションを含むことができる。アプリケーションのうちの１つまたは複数は、例えば、選択可能なオプションまたはコントロール、および選択されたオプションに基づくデータを表示するためのユーザ入力に応答して表示されるユーザインタフェースを提供することができる。本明細書で開示された１つまたは複数の方法は、いくつかの環境およびプラットフォーム、例えば、任意のタイプのコンピューティングデバイス上で実行できるスタンドアロンコンピュータプログラム、ウェブページを有するウェブアプリケーション、モバイルコンピューティングデバイス上で実行されるモバイルアプリケーション（「ａｐｐ」）などとして、動作することができる。
【００８３】
あるいは、メモリ９０４内のソフトウェアのいずれも、他の任意の適切な記憶場所またはコンピュータ可読媒体に記憶することができる。さらに、メモリ９０４（および／または他の接続された単数または複数の記憶デバイス）は、メッセージ、許可設定、ユーザ設定および関連データ構造、パラメータ、オーディオデータ、ユーザ設定、および／または本明細書で説明された機能で使用される他の命令およびデータをデータベース９１２に格納することができる。メモリ９０４および他の任意の種類の記憶装置（磁気ディスク、光ディスク、磁気テープ、または他の有形の媒体）は、「記憶装置」または「記憶デバイス」と見なすことができる。
【００８４】
Ｉ／Ｏインタフェース９０６は、コンピューティングデバイス９００を他のシステムおよびデバイスとインタフェースすることを可能にするための機能を提供することができる。インタフェースされたデバイスは、コンピューティングデバイス９００の一部として含めることができ、または分離してコンピューティングデバイス９００と通信することができる。例えば、ネットワーク通信デバイス、無線通信デバイス、記憶デバイス、および入力／出力デバイスは、Ｉ／Ｏインタフェース９０６を介して通信することができる。いくつかの実装形態では、Ｉ／Ｏインタフェース９０６は、入力デバイス（キーボード、ポインティングデバイス、タッチスクリーン、マイクロフォン、カメラ、スキャナ、センサなど）および／または出力デバイス（表示デバイス、スピーカーデバイス、プリンター、モーターなど）のようなインタフェースデバイスに接続することができる。
【００８５】
Ｉ／Ｏインタフェース９０６に接続することができるインタフェースデバイスのいくつかの例は、コンテンツ、例えば、本明細書で説明されるような出力アプリケーションの画像、ビデオ、および／またはユーザインタフェースを表示するために使用できる表示デバイス９１４を含み得る。表示デバイス９１４は、ローカル接続（例えば、表示バス）および／またはネットワーク接続を介してコンピューティングデバイス９００に接続されることができ、任意の適切な表示デバイスとすることができる。表示デバイス９１４は、液晶ディスプレイ（ＬＣＤ）、発光ダイオード（ＬＥＤ）、またはプラズマディスプレイスクリーン、陰極線管（ＣＲＴ）、テレビ、モニター、タッチスクリーン、３Ｄディスプレイスクリーン、または他の視覚的表示デバイスのような任意の適切な表示デバイスを含むことができる。例えば、表示デバイス９１４は、モバイルデバイスに提供されるフラットディスプレイスクリーン、ゴーグルデバイスに提供される複数の表示スクリーン、またはコンピュータデバイス用のモニタスクリーンであり得る。
【００８６】
Ｉ／Ｏインタフェース９０６は、他の入力および出力デバイスとインタフェースすることができる。いくつかの例は、画像フレームをキャプチャすることができる１つまたは複数のカメラを含む。方位センサ、例えば、ジャイロスコープおよび／または加速度計は、デバイスの方位（いくつかの実装形態では視野の方位に対応することができる）および／またはカメラの方位を示すセンサデータを提供することができる。いくつかの実装形態は、音声（例えば、音声コマンドなど）をキャプチャするためのマイクロフォン、音声を出力するためのオーディオスピーカデバイス、または他の入出力デバイスを提供することができる。
【００８７】
説明を簡単にするために、図９は、プロセッサ９０２、メモリ９０４、Ｉ／Ｏインタフェース９０６、オペレーティングシステム９０８、およびボット許可アプリケーション９１０のためにそれぞれ１つのブロックを示している。これらのブロックは、１つまたは複数のプロセッサまたは処理回路、オペレーティングシステム、メモリ、Ｉ／Ｏインタフェース、アプリケーション、および／またはソフトウェアモジュールを表すことができる。他の実装形態では、コンピューティングデバイス９００は、示された構成要素の全てを有しない場合があり、かつ／または本明細書に示されたものの代わりにまたはそれに加えて他のタイプの要素を含む他の要素を有し得る。ユーザデバイス（例えば、１１５ａ〜１１５ｎ）は、本明細書のいくつかの実装形態で説明されるように、ブロックおよび動作を実行するものとして説明されているが、ユーザデバイス（例えば１１５ａ〜１１５ｎ）または同様のデバイスの任意の適切なコンポーネントまたはコンポーネントの組合せ、またはそのようなシステムに関連する任意の適切な１つまたは複数のプロセッサが、説明されているブロックおよび動作を実行し得る。
【００８８】
本明細書に記載の方法は、コンピュータプログラム命令またはコードによって実装することができ、それらはコンピュータ上で実行することができる。例えば、コードは、１つまたは複数のデジタルプロセッサ（例えば、マイクロプロセッサまたは他の処理回路）によって実装することができ、半導体または固体メモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、フラッシュメモリ、リジッドメモリを含む、磁気、光学、電磁気、または半導体の記憶媒体のような、非一時的コンピュータ可読媒体（例えば、記憶媒体）を含むコンピュータプログラム製品に格納することができる。プログラム命令は、例えば、サーバ（例えば、分散システムおよび／またはクラウドコンピューティングシステム）から配信されるサービスとしてのソフトウェア（ＳａａＳ）の形で、電子信号に含まれ、電子信号として提供されることもできる。あるいは、１つまたは複数の方法をハードウェア（論理ゲートなど）で、またはハードウェアとソフトウェアの組合せで実装することができる。ハードウェアの例は、プログラマブルプロセッサ（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）など）、汎用プロセッサ、グラフィックプロセッサ、特定用途向け集積回路（ＡＳＩＣ）などであり得る。１つまたは複数の方法は、システム上で実行されているアプリケーションの一部またはコンポーネントとして、あるいは他のアプリケーションおよびオペレーティングシステムと共に実行されているアプリケーションまたはソフトウェアとして実行することができる。
【００８９】
説明は、その特定の実装形態に関して記載されているが、これらの特定の実装形態は単なる例示であり、限定的なものではない。例に示されている概念は、他の例および実装にも適用することができる。
【００９０】
本明細書で説明する特定の実装形態が、ユーザに関する個人情報（例えば、ユーザの電話番号または部分的な電話番号、ユーザデータ、ユーザのソーシャルネットワークに関する情報、ユーザの位置および時間、ユーザのバイオメトリック情報、ユーザの活動およびデモグラフィック情報）を収集または使用し得る状況では、個人情報が収集されるかどうか、個人情報が保存されるかどうか、個人情報が使用されるかどうか、およびどのようにユーザに関する情報が収集され、保存され、使用されるかを制御する一または複数の機会がユーザに提供される。すなわち、本明細書で論じられるシステムおよび方法は、具体的にそのようにすることについて関連するユーザから明示的な許可を受けた場合に、ユーザの個人情報を収集し、保存し、かつ／または使用する。さらに、特定のデータは、個人を特定できる情報が削除されるように、保存または使用される前に１つまたは複数の方法で処理され得る。一例として、ユーザの識別情報は、個人を識別可能な情報が判定され得ないように取り扱われ得る。別の例として、ユーザの地理的位置は、ユーザの特定の位置が判定されることができないように、より大きな領域に一般化され得る。
【００９１】
本開示に記載されている機能ブロック、動作、特徴、方法、デバイス、およびシステムは、当業者に知られているように、システム、デバイス、および機能ブロックの異なる組み合わせに統合または分割することができることに留意されたい。特定の実装形態のルーチンを実装するために、任意の適切なプログラミング言語およびプログラミング技術が使用され得る。手続き型またはオブジェクト指向などの異なるプログラミング技術が使用され得る。ルーチンは、単一の処理デバイスまたは複数のプロセッサ上で実行することができる。ステップ、動作、または計算は特定の順序で提示され得るが、異なる特定の実装形態においてはその順序は変更されてもよい。いくつかの実装形態では、本明細書において連続的なものとして示されている複数のステップまたは動作が同時に実行され得る。さらなる実装形態が以下に開示される。
【００９２】
［実装形態１］
コンピュータにより実行される方法であって、
第１のユーザに関連する第１のコンピューティングデバイス上にメッセージングアプリケーションを提供して、前記第１のユーザと少なくとも１つの他のユーザとの間の通信を可能にすること、
前記メッセージングアプリケーションにおいてユーザ要求を検出すること、
前記ユーザ要求に応答するアクションが、前記第１のユーザに関連するデータへのアクセスを必要とすることをプログラム的に判定すること、
前記第１のユーザに関連するデータへのアクセスを前記第１のユーザが承認または禁止することを可能にする許可インタフェースを前記第１のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングさせること、
前記第１のユーザに関連するデータへのアクセスの承認を示すユーザ入力を前記第１のユーザから受信すると、前記第１のユーザに関連するデータにアクセスして、前記ユーザ要求に応答するアクションを実行すること
を含む方法。
【００９３】
［実装形態２］
前記第１のユーザに関連するデータへのアクセスを禁止するユーザ入力を前記第１のユーザから受信すると、タスクが実行されないという標示を前記メッセージングアプリケーションに提供することをさらに含む、実装形態１に記載のコンピュータにより実行される方法。
【００９４】
［実装形態３］
前記第１のユーザは人間のユーザであり、前記少なくとも１つの他のユーザは支援エージェントである、実装形態１または２に記載のコンピュータにより実行される方法。
【００９５】
［実装形態４］
前記第１のユーザは人間のユーザであり、前記少なくとも１つの他のユーザは、前記第１のユーザとは異なる、第２のコンピューティングデバイスに関連する第２の人間のユーザを含み、前記許可インタフェースは、前記第１のユーザに関連する前記第１のコンピューティングデバイス上のメッセージングアプリケーションにおいてレンダリングされ、前記許可インタフェースは、前記第２の人間のユーザに関連する前記第２のコンピューティングデバイス上に表示されない、実装形態１、２、または３に記載のコンピュータにより実行される方法。
【００９６】
［実装形態５］
前記第１のユーザに関連するデータへのアクセスを禁止するユーザ入力を前記第１のユーザから受信すると、
前記第１のユーザに関連する前記第１のコンピューティングデバイス上にレンダリングするための第１の標示を提供すること、
前記少なくとも１つの他のユーザに関連する第２のコンピューティングデバイス上にレンダリングするための第２の標示を提供すること
をさらに含み、前記第１の標示および前記第２の標示は、前記ユーザ要求に応えることの失敗を示すものであり、前記第１の標示および前記第２の標示は異なっている、実装形態１乃至４のいずれか一つに記載のコンピュータにより実行される方法。
【００９７】
［実装形態６］
前記第１の標示および前記第２の標示は、異なるテキストコンテンツ、異なるスタイル、および異なるフォーマットのうちの１つまたは複数を有する、実装形態５に記載のコンピュータにより実行される方法。
【００９８】
［実装形態７］
前記第１のユーザは人間のユーザであり、前記少なくとも１つの他のユーザは、前記第１のユーザとは異なる第２の人間のユーザと、支援エージェントとを含み、前記ユーザ要求は、前記第１のユーザに関連する前記第１のコンピューティングデバイスから受信され、前記方法は、前記ユーザ要求に応答して、前記メッセージングアプリケーションにおいて別個の会話を開始することをさらに含み、前記別個の会話は、前記第１のユーザと前記支援エージェントとを含み、前記第２の人間のユーザを含まない、実装形態１乃至６のいずれか一つに記載のコンピュータにより実行される方法。
【００９９】
［実装形態８］
前記ユーザ要求を検出することは、前記第１のユーザおよび前記少なくとも１つの他のユーザのうちの一または複数から前記メッセージングアプリケーションにおいて受信された１つまたは複数のメッセージを分析することを含む、実装形態１乃至７のいずれか一つに記載のコンピュータにより実行される方法。
【０１００】
［実装形態９］
前記１つまたは複数のメッセージは、テキストメッセージ、マルチメディアメッセージ、および支援エージェントへのコマンドのうちの１つまたは複数を含む、実装形態８に記載のコンピュータにより実行される方法。
【０１０１】
［実装形態１０］
前記ユーザ要求に応答するアクションを実行することは、前記第１のメッセージングアプリケーションへ１つまたは複数の提案を提供することを含む、実装形態１乃至９のいずれか一つに記載のコンピュータにより実行される方法。
【０１０２】
［実装形態１１］
前記１つまたは複数の提案を前記メッセージングアプリケーションにおいてレンダリングさせることをさらに含む、実装形態１０に記載のコンピュータにより実行される方法。
【０１０３】
［実装形態１２］
前記１つまたは複数の提案は、前記第１のユーザによって選択されたときに前記提案についての詳細を表示させる提案要素としてレンダリングされる、実装形態１１に記載のコンピュータにより実行される方法。
【図１】
2019530050.tif 000003
【図２】
2019530050.tif 000004
【図３】
2019530050.tif 000005
【図４】
2019530050.tif 000006
【図５】
2019530050.tif 000007
【図６】
2019530050.tif 000008
【図７】
2019530050.tif 000009
【図８】
2019530050.tif 000010
【図９】
2019530050.tif 000011
【国際調査報告】
2019530050.tif 000012
2019530050.tif 000013
2019530050.tif 000014