いくつかの図面全体を通して類似の参照番号は、対応する部分を指す。
ソーシャルネットワーキングプラットフォームは、関係および/または共通の利益を介して人々を接続するネットワークアーキテクチャおよびソフトウェアを提供する。ソーシャルネットワーキングプラットフォーム上では、各ユーザは、ユーザの識別のためにソーシャルネットワーキングプラットフォームの他のユーザによって使用され得るそれぞれのソーシャルネットワークアイデンティティに関連付けられている。ソーシャルネットワーキングプラットフォーム上で、異なるユーザ間の関係は、関わっているユーザの相互合意によって形成され得る。2人のユーザが、相互のソーシャルネットワーキング関係を形成することに合意したときに、彼らは相互のソーシャルネットワーク連絡先となる。ユーザのグループは、相互のソーシャルネットワーキング関係を形成することを選び、したがって、ソーシャルネットワーキンググループを形成し得る。グループの各メンバーは、グループの他のすべてのメンバーのソーシャルネットワーク連絡先である。ときには、ユーザまたは組織が、パブリックソーシャルネットワークアイデンティティを確立することができ、一般大衆(たとえば、ソーシャルネットワーキングプラットフォーム上の任意のユーザ)が相互の合意を交わすことなくソーシャルネットワーキングプラットフォーム上で通信することを許す。ときには、ユーザは、パブリックソーシャルネットワークアイデンティティのメッセージまたはパブリケーションにサブスクライブする(たとえば、パブリックソーシャルネットワークアイデンティティを「フォローする」)ことを選択することができ、したがって、パブリックソーシャルネットワークアイデンティティのソーシャルネットワーク連絡先となる。パブリックソーシャルネットワークアイデンティティの所有者は、そのメッセージまたはパブリケーションにサブスクライブする各ユーザを、ソーシャルネットワーキングプラットフォーム上のソーシャルネットワーク連絡先のうちの1つとして取り扱うこともできる。
ソーシャルネットワーキングプラットフォーム上の各ユーザおよび各パブリックソーシャルネットワークアイデンティティは、自分がソーシャルネットワーキングプラットフォームの上でインスタントメッセージを通じて通信することができるソーシャルネットワーク連絡先(または連絡先)の関連付けられているリストを有する。たとえば、ソーシャルネットワーキンググループ内のユーザは、ソーシャルネットワーキングプラットフォームのプロバイダによって提供されるソフトウェアインターフェースを使用して相互に通信することができる。それに加えて、各ユーザは、ソーシャルネットワーキングプラットフォームのプロバイダによって提供されるソフトウェアインターフェースを使用して相互に通信することもできる。
いくつかの実施形態では、ソーシャルネットワーキングプラットフォームのプロバイダによって提供されるソフトウェアインターフェースは、ウェブインターフェースまたはソフトウェアインターフェースであってよい。たとえば、ユーザは、ソーシャルネットワーキングプラットフォームのウェブポータルにログオンし、ウェブポータルを通じてソーシャルネットワーキングプラットフォームの他のユーザとの間でメッセージを送受信することができる。代替的に、ユーザは、自分のそれぞれのユーザデバイス(たとえば、コンピュータ、スマートフォン、タブレットデバイス)上にソーシャルネットワーキングクライアントアプリケーションをダウンロードしてインストールし、ソーシャルネットワーキングクライアントアプリケーションによって提供されるインターフェースを使用して、ソーシャルネットワーキングプラットフォーム上で他者とインタラクティブにやり取りすることができる。メッセージは、様々なフォーマット、たとえば、テキスト、画像、写真、音声、ビデオ、エモーティコンなどであってよい。
ときには、ソーシャルネットワーキングプラットフォームは、ユーザが、ユーザの1つまたは複数のソーシャルネットワーク連絡先との一対一チャットセッションまたはグループチャットセッションを開始することを許可する。チャットセッション中に、チャットに関与する各ユーザは、そのチャットセッションに関与する他のユーザとの間で様々なフォーマット(たとえば、テキスト、音声、画像など)のインスタントメッセージを送受信することができる。
図1Aは、いくつかの実施形態による従来のソーシャルネットワーキングプラットフォームに対する例示的な動作環境100aのブロック図である。
図1Aに示されているように、ソーシャルネットワーキングプラットフォームプロバイダ102aは、通信サーバ112aを備えている。通信サーバ112aは、ソーシャルネットワーキングサービス(たとえば、ユーザ登録、メッセージの作成、メッセージの送信、チャットセッションの作成、オンライン投稿、および他のオンラインソーシャルインタラクション)を1つまたは複数のネットワーク106を介してそのそれぞれのユーザデバイス104(たとえば、ユーザデバイス104a〜104c)を操作している複数のユーザに提供する。
いくつかの実施形態では、各ユーザは、ユーザのそれぞれのユーザデバイス104上で実行されているソーシャルネットワーキングクライアントアプリケーション108(たとえば、ソーシャルネットワーキングクライアントアプリケーション108a〜108c)を使用して通信サーバ112aに接続することによって別のユーザとインタラクティブにやり取りする。通信サーバ112aは、ユーザ名、ニックネーム、またはアカウント識別子などの、そのそれぞれのソーシャルネットワークアイデンティティによってソーシャルネットワーク内のユーザを識別する。典型的には、各ユーザは、1つまたは複数のソーシャルネットワークグループ内のソーシャルネットワーク内の1人または複数の他のユーザからなるグループに関連付けられる。たとえば、ユーザは、グループの各々の他のメンバーと自分との関係および/または共通の利益に基づき異なるソーシャルネットワークグループを作成するか、または参加することができる。いくつかの実施形態では、ソーシャルネットワーキングプラットフォームのサーバは、ユーザの異なる特性(たとえば、実名、連絡先情報、関心事項、社会的経済的状況、オンライン活動履歴など)の知識ベース、ならびにそれらの相互接続およびグループメンバー帰属関係(たとえば、グループリストおよび連絡先リスト)を維持する。
いくつかの実施形態では、ソーシャルネットワークサーバは、1つまたは複数のソーシャルネットワーキングサービスをそのユーザに提供する。ユーザは、通信サーバ112aのソーシャルネットワーキングクライアントアプリケーション108(たとえば、ソーシャルネットワーキングクライアントアプリケーション108a〜108c)上に用意されているユーザインターフェースとインタラクティブにやり取りすることによって特定のサービスを呼び出すことができる。たとえば、ユーザは、チャットプログラムを開き、テキストまたは音声メッセージを送信することによって1つまたは複数の社会的連絡先(たとえば、ユーザの連絡先リスト、またはソーシャルネットワークグループ内の連絡先)との1つまたは複数の一対一またはグループチャットセッションを開始することができる。いくつかの実施形態では、他の形態のメッセージ(たとえば、画像、ビデオ、リンク、アイコン、動画など)も、一方のユーザから1人または複数の他のユーザに、ソーシャルネットワークサーバによって提供されるソーシャルネットワーキングプラットフォームを介して送信され得る。
図1Aに示されているように、各ユーザは、それぞれのソーシャルネットワーキングクライアントアプリケーション108(たとえば、ソーシャルネットワーキングクライアントアプリケーション108a〜108c)を使用して他のユーザとインタラクティブにやり取りすることができる。いくつかの実施形態では、ソーシャルネットワーキングクライアントアプリケーションは、ユーザが、コンテンツをオンライン掲示板に投稿する、テキストまたは音声メッセージを特定のユーザもしくはユーザのグループに送信する、別のユーザとの音声もしくはビデオチャットセッションを開始する、グループチャットセッションを開く、などの、特定のソーシャルネットワークサービスを呼び出すためのユーザインターフェース要素(たとえば、テキストボックス、ボタン、ウィンドウ、メッセージ表示領域など)を提供する。
ユーザデバイス104の例は、限定はしないが、ハンドヘルドコンピュータ、ウェアラブルコンピューティングデバイス、携帯情報端末(PDA)、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、携帯電話、スマートフォン、強化汎用パケット無線サービス(EGPRS)携帯電話、メディアプレーヤー、ナビゲーションデバイス、ゲーム機、テレビ、またはこれらのデータ処理デバイスもしくは他のデータ処理デバイスのうちの2つまたはそれ以上の組合せを含む。
1つまたは複数のネットワーク106の例は、ローカルエリアネットワーク(「LAN」)およびインターネットなどのワイドエリアネットワーク(「WAN」)を含む。1つまたは複数のネットワーク106は、適宜、Ethernet、ユニバーサルシリアルバス(USB)、FIREWIRE(登録商標)、Global System for Mobile Communications(GSM)(登録商標)、Enhanced Data GSM(登録商標) Environment(EDGE)、符号分割多元接続(CDMA)、時分割多元接続(TDMA)、Bluetooth(登録商標)、WiFi、ボイスオーバーインターネットプロトコル(VoIP)、Wi-MAX、または他の好適な通信プロトコルなどの、様々な有線もしくはワイヤレスプロトコルを含む、知られているネットワークプロトコルを使用して実装される。
通信サーバ112aは、1つまたは複数のスタンドアロン型データ処理装置または分散コンピュータネットワーク上に実装される。いくつかの実施形態では、通信サーバ112aは、通信サーバ112aの基盤となるコンピューティングリソースおよび/またはインフラストラクチャリソースを提供するためにサードパーティサービスプロバイダ(たとえば、サードパーティクラウドサービスプロバイダ)の様々な仮想デバイスおよび/またはサービスも採用する。
従来のソーシャルネットワーキングプラットフォームでは、各ユーザデバイス104は、適宜、1つもしくは複数の内部周辺デバイスモジュールを備えるか、または有線もしくはワイヤレス接続を介して1つもしくは複数の周辺デバイス(たとえば、ナビゲーションシステム、ヘルスモニタ、クライメートコントロール、スマートスポーツ機器、Bluetooth(登録商標)ヘッドセット、スマートウォッチなど)に接続され得る。ほとんどの場合において、これらの周辺デバイスの各々は、周辺デバイスのそれぞれのメーカーによって提供されるそれぞれのソフトウェアアプリケーションによってコントロールされ、ソーシャルネットワーキングクライアントアプリケーション108は、これらの周辺デバイスと通信しない、ときには、ソーシャルネットワーキングクライアントアプリケーションのプロバイダは、ユーザデバイスのいくつかの周辺デバイス(たとえば、カメラ、スピーカー、マイクロフォン、タッチパネル、キーボード、マウス、タッチスクリーン)を操作するソーシャルネットワーキングクライアントアプリケーションにおける機能を実装する。しかし、これらの機能は、これらの周辺デバイスをユーザ入力(たとえば、画像、音声、テキスト、タッチ、マウスの移動など)を取得するための手段として使用し、クライアントアプリケーションのオペレーション(たとえば、ユーザインターフェースのナビゲーションを行う、ユーザインターフェースにおいてコントロールを呼び出す、またはインスタントメッセージを作成する)またはユーザへのクライアントアプリケーションの出力(たとえば、音声、サウンド、ユーザインターフェースなど)の送達をコントロールすることに限定される。これらの従来のシステムでは、ソーシャルネットワーキングプラットフォームの上でユーザと周辺デバイスとの間の直接的通信はない。また、開発の複雑さ、コスト、および異なる周辺デバイス間の設計変更が巨大であることから、ソーシャルネットワーキングクライアントアプリケーションのプロバイダが他の種類の周辺デバイスをコントロールするようにサポートを拡張することは実用的でない。
人々が、自分たちの日常生活における様々な仕事のために様々な電子周辺デバイス(たとえば、スマートウォッチ、ヘルスモニタ、音楽プレーヤー、クライメートコントロール、スマートコーヒーメーカー、充電スタンド、ナビゲーションシステム、スポーツ機器、セットトップボックスなど)に依存することが多くなるにつれ、これらの異なる種類の周辺デバイスをコントロールするためにマスターしなければならないユーザインターフェースが様々であること(たとえば、異なる周辺デバイスのメーカーによる専用設計の専用ソフトウェアアプリケーションの異なるユーザインターフェース)が負担になる。さらに、異なるメーカーによって設計された同じ種類の周辺デバイスは、異なるメーカーによって製作された周辺デバイスの異なる通信プロトコルおよびデータフォーマットのせいで情報を相互に共有することができない場合がある。したがって、ユーザにとって、ユーザが購入する異なる製品の異なるユーザインターフェースおよび機能を調べ、学習することは難しい。ユーザにとって、自分のガジェットで作成されたか、または集められた情報を同じ種類のデバイスを所有し得るか、また所有し得ない他者と共有することはなおいっそう困難である。
本開示は、ソーシャルネットワーキングプラットフォームを介して周辺デバイスをコントロールするための方法およびデバイスを説明する。上の「背景技術」において指摘されているように、ソーシャルネットワーキングは、今日の世界に次第に広く行き渡りつつある。多くの人々が、1つまたは複数のソーシャルネットワーキングプラットフォーム用のソーシャルネットワーキングクライアントアプリケーションのオペレーションおよびコントロールにすでに非常によく馴染んでいる。ソーシャルネットワーキングプラットフォームの上で送信され受信されるソーシャルネットワークメッセージ(たとえば、自然言語によるインスタントメッセージ)の上で周辺デバイスのアクセスおよびコントロールを可能にすることは、ユーザが、異なる周辺デバイスに対する多くの専用ユーザインターフェースを学習することを回避するのに役立ち、周辺デバイスとの通信をより自然で直観的なものにする。さらに、単純な統合ユーザインターフェースコントロールが、異なるメーカーによって製作された周辺デバイス用に提供され得ると、ユーザが異なるメーカーおよびデバイスタイプの周辺デバイス間で情報を容易に共有することができる。それに加えて、いくつかの実施形態では、各デバイスメーカーは、ソーシャルネットワーキングプラットフォームプロバイダによって確立された通信プロトコル(たとえば、デバイス登録、デバイス発見、命令および応答の通信、情報のプレゼンテーション、周辺デバイスとの間の符号化された命令および応答の、人間が読み取れる形態のメッセージへの翻訳など)を採用することができる。したがって、周辺デバイスは、メーカーの専用フォーマットで符号化された命令およびメッセージをユーザデバイスの周辺デバイスに、またはそこから転送するためにソーシャルネットワーキングプラットフォームの通信サーバ、および通信サーバに接続されているユーザデバイスに頼ることができる。さらに、いくつかの実施形態では、符号化された命令およびメッセージは、通信サーバによって確立された通信プロトコルに従ってフォーマットされたメッセージ内にカプセル化されるものとしてよく、したがって、通信サーバは各種類の周辺デバイスに対して符号化された命令メッセージを解釈するためのロジックおよび機能を個別に実装する必要がない。周辺デバイスのサポート機能を開発する負担は、こうして、異なる種類の周辺デバイスのメーカーに移行される。このようにして、ユーザは、ソーシャルネットワーキングクライアントアプリケーションの慣れたユーザインターフェースを介して異なる種類の周辺デバイスをコントロールし、他のユーザ、および同じ種類であるか、もしくはそうでないか、または同じメーカーによって製作されているか、もしくはそうでないそのそれぞれの周辺デバイスと情報を共有するために、単純な統一された慣れた方法を利用する。それに加えて、ソーシャルネットワーキングプラットフォームのプロバイダは、それがサポートする周辺デバイスの種類を増やすために尋常でない量のリソースを費やす必要がない。
本開示では、様々な実施形態は、周辺デバイスに対するメーカーまたはサポートサービスプロバイダのサーバ(たとえば、「サポートサーバ」とも称される)、ソーシャルネットワーキングプラットフォームのサーバ(たとえば、「通信サーバ」とも称される)、ユーザデバイス(たとえば、ソーシャルネットワーキングクライアントアプリケーションを実行し、通信サーバと通信するために使用されるメインユーザデバイス)、ユーザ、およびソーシャルネットワーキングプラットフォームを介してコントロールされるべき周辺デバイス(たとえば、それが通信接続を確立したメインユーザデバイスを通じて他者と通信するデバイス)を含む、ソーシャルネットワーキングプラットフォームを介して周辺デバイスのアクセスおよびコントロールを提供することに関与する異なるパーティ間の相互関係を示す。
本開示における様々な使用事例のシナリオによって示されているように、ソーシャルネットワーキングプラットフォームを通じて周辺デバイスの便利、おもしろい、およびインタラクティブなコントロールを提供することは、ユーザエクスペリエンスを高めるのに役立ち、周辺デバイスメーカーのためのソフトウェア開発およびサポートを短縮することができる。本明細書で説明されているように、いくつかの実施形態では、ブログプラットフォーム、オンラインフォーラムプラットフォーム、掲示板プラットフォーム、マイクロブログプラットフォーム、インスタントメッセージプラットフォーム、オンラインチャットルームプラットフォーム、および上記のプラットフォームのうちの1つまたは複数のハイブリッドなどの、ソーシャルネットワーキングプラットフォームを介して周辺デバイスのアクセスおよびコントロールを提供する方法は、以前にはユーザおよび周辺デバイスメーカーにとって利用不可能であった多くの可能性を使用可能にする。
図1Bは、いくつかの実施形態による、ソーシャルネットワーキングプラットフォームを介した周辺デバイスのアクセスおよびコントロールをサポートするソーシャルネットワーキングプラットフォームに対する例示的な動作環境100bのブロック図である。
図1Bに示されているように、ソーシャルネットワーキングプラットフォームプロバイダ102bは、通信サーバ112bを備えている。ソーシャルネットワーキングプラットフォームプロバイダ102bおよび通信サーバ112bは、従来のソーシャルネットワーキングプラットフォームプロバイダ(たとえば、ソーシャルネットワーキングプラットフォームプロバイダ102a)および従来の通信サーバ(たとえば、通信サーバ112a)が実行することができる従来の機能のすべてを実行することができる。それに加えて、ソーシャルネットワーキングプラットフォームプロバイダ102bは、また、本明細書で説明されている実施形態により周辺デバイス(たとえば、周辺デバイス118)のアクセスおよびコントロールを使用可能にするように通信サーバ112bも実装する。
図1Bに示されているように、ソーシャルネットワーキングプラットフォームの各ユーザは、それぞれのユーザデバイス104(たとえば、ユーザデバイス104a〜104c)上で実行されているそれぞれのソーシャルネットワーキングクライアントアプリケーション108(たとえば、ソーシャルネットワーキングクライアントアプリケーション108c〜108e)を通じて通信サーバ112bと通信する。各ユーザデバイス104は、有線またはワイヤレス接続を介して1つまたは複数の周辺デバイス118(たとえば、118a、118b、および/または118c)に接続され得る。接続の種類の例は、ユニバーサルシリアルバス(USB)、FIREWIRE(登録商標)、Global System for Mobile Communications(GSM) (登録商標)、Enhanced Data GSM(登録商標) Environment(EDGE)、符号分割多元接続(CDMA)、時分割多元接続(TDMA)、Bluetooth(登録商標)、Bluetooth(登録商標) Low Energy(BLE)、WiFi、ボイスオーバーインターネットプロトコル(VoIP)、Wi-MAX、または他の好適な通信プロトコルに基づき確立される他の接続を含む。典型的には、各周辺デバイスは、比較的短い範囲(たとえば、数メートルまたは数十メートル)での接続を通じてそれぞれのユーザデバイスに接続されるけれども、そのような制限は、多くの種類の周辺デバイスには必要でない。周辺デバイスの例は、限定はしないが、スマートウォッチ、ヘルスモニタ(たとえば、心拍数モニタ、血圧計、ペースメーカー、ライフスタイル監視リストバンドなど)、音楽プレーヤー、クライメートコントロール(たとえば、天気モニタ、温度調節装置、暖房装置、空調、湿度コントロールなど)、照明コントロール、セキュリティ監視システム、スマートコーヒーメーカー、充電スタンド(たとえば、電気自動車または電子機器用の充電スタンドなど)、ナビゲーションシステム(たとえば、GPSシステム)、スポーツ機器(たとえば、スマートゴルフクラブ、スマート釣竿、スマートバスケットボールなど)、セットトップボックス(たとえば、オンラインストリーミングセットトップボックス、オンラインゲームデバイスなど)を含む。これらの周辺デバイスは、それでも、別々にインストールされ、ソーシャルネットワーキングクライアントアプリケーションとは独立して使用可能である専用ソフトウェアアプリケーションを備え得る。それに加えて、周辺デバイスは、適宜、物理的ハードウェアボタンまたは内蔵オンボードスクリーンおよびユーザが直接コントロールするためのソフトウェアインターフェースを備え得る。
図1Bに示されているように、通信サーバ112bは、通信サーバ112bに登録されている各ユーザアカウントの情報を含むユーザデータベース110bを備える。ユーザデータベース110bは、図1Aのユーザデータベース110aに類似している。それに加えて、通信サーバ112bは、デバイスデータベース110cも備える。デバイスデータベース110cは、本明細書で説明されているデバイス登録方法を使用して通信サーバ112bにすでに登録されている周辺デバイスに対する識別子を記憶する。デバイスデータベース110cは、周辺デバイス、そのそれぞれのユーザ、そのそれぞれのメインユーザデバイス、そのそれぞれのサポートデバイスなどの間の関係に関するデータも含む。
いくつかの実施形態では、各登録済み周辺デバイスは、登録済み周辺デバイスが人間の所有者(たとえば、周辺デバイスが接続されているメインユーザデバイスを操作している人間のユーザ)、他のユーザ、通信サーバ、および周辺デバイスのメーカーによって提供されるサポートサーバによって識別する際に使用され得るそれぞれのソーシャルネットワークアイデンティティ(たとえば、人間のユーザのソーシャルネットワーキングアイデンティティに類似している)を備える。各登録済み周辺デバイスの特性さらにはそれが現在関連付けられている(たとえば、接続されている)ユーザアカウントまたはユーザデバイスが、登録済み周辺デバイスのそれぞれのソーシャルネットワークアイデンティティの下でデバイスデータベース110cに記憶される。いくつかの実施形態では、各登録済み周辺デバイスは、ユーザデバイスに現在関連付けられているユーザアカウント(たとえば、ユーザデバイスで現在ログインされているユーザアカウント)のソーシャルネットワーク連絡先としてユーザカウントまたはユーザデバイスに関連付けられる。いくつかの実施形態では、他のユーザ、そのサポートサーバ、他の周辺デバイスは、デバイスデータベース110c内の登録済み周辺デバイスのソーシャルネットワーク連絡先として登録済み周辺デバイスに関連付けられ得る。
いくつかの実施形態では、周辺デバイスは、その人間の所有者(たとえば、周辺デバイスが現在接続されているユーザデバイスのユーザ)、別の周辺デバイス(たとえば、同じユーザデバイスに接続されている別の周辺デバイス、または別のユーザデバイスに接続されている別の周辺デバイス)、別のユーザ(たとえば、人間の所有者のソーシャルネットワーク連絡先)、および/またはサポートサーバと、自らのソーシャルネットワークアイデンティティを使用して通信することができる。いくつかの実施形態では、周辺デバイスは、そのサポートサーバのパブリックソーシャルネットワークアイデンティティの下で確立されたそれぞれのデバイスアイデンティティを通じてその人間の所有者と通信することができる。いくつかの実施形態では、各登録済みデバイスは、それが登録される際に使用されるユーザアカウントとは別のソーシャルネットワークアイデンティティを保有しない。いくつかの実施形態では、周辺デバイスは、その人間の所有者のソーシャルネットワークアイデンティティの下で確立されたそれぞれのデバイスアイデンティティを通じて別の周辺デバイス、別のユーザ、サポートサーバと通信することができる。いくつかの実施形態では、デバイスデータベース110cは、ユーザデータベース110bにマージされるものとしてよく、それにより、周辺デバイスのネットワークアイデンティティは、たとえば、それぞれの連絡先リスト、ログインステータス、通信履歴などを含む、人間のユーザまたはサポートサーバのネットワークアイデンティティに似たものになる。
図1Bに示されているように、通信サーバ112bは、1つまたは複数のそれぞれの周辺デバイスメーカーまたはサポートサービスプロバイダ(たとえば、周辺デバイスメーカー114a〜114b)によって提供される1つまたは複数のサポートサーバ116(たとえば、サポートサーバ116a〜116c)とも通信する。いくつかの実施形態では、サポートサービスプロバイダの各々は、ソーシャルネットワーキングプラットフォームプロバイダ102bによって確立されたプロトコル標準に従ってサポートサーバ116を実装しており、それにより、そのそれぞれの種類の周辺デバイスにアクセスし、コントロールするための符号化された命令は、ソーシャルネットワークプラットフォームを通じて(たとえば、通信サーバ112b、およびユーザデバイス104a〜104c上で実行されているソーシャルネットワーキングクライアントアプリケーション108c〜108eを介して)周辺デバイス(たとえば、周辺デバイス118a〜118c)に送信され得る。
いくつかの実施形態では、通信サーバ112bおよびソーシャルネットワーキングクライアントアプリケーション108c〜108eは、符号化された命令の解釈および/または翻訳を実行せず、符号化された命令の復号は、符号化された命令のターゲットで(たとえば、周辺デバイスで)実行される。それに対応して、いくつかの実施形態では、ユーザデバイス104上で実行されているソーシャルネットワーキングクライアントアプリケーション(たとえば、アプリケーション108c〜108e)は、ソーシャルネットワーキングプラットフォームプロバイダ102bによって確立されたプロトコル標準に従って実装されており、それにより、周辺デバイス118a〜118cに対する符号化されたメッセージは、ソーシャルネットワークプラットフォーム(たとえば、通信サーバ112bを含む)を通じてそのそれぞれのサポートサーバ(たとえば、サポートサーバ116a〜116c)に送信され得る。いくつかの実施形態では、通信サーバ112bおよびソーシャルネットワーキングクライアントアプリケーション108c〜108eは、符号化されたメッセージの解釈および/または翻訳を実行せず、符号化されたメッセージの復号は、符号化されたメッセージのターゲットで(たとえば、サポートサーバ116a〜116cで)実行される。
いくつかの実施形態では、符号化された命令を送信し、符号化されたメッセージを受信するサポートサーバ116は、適宜、人間が読み取れる形態の対応するインスタントメッセージ(たとえば、テキスト、表形式、画像、グラフィック、サウンド、および/または音声形態のインスタントメッセージ)を生成し、それらのインスタントメッセージを、通信サーバ112bを介して1人または複数のユーザ(たとえば、周辺デバイスの所有者または所有者が周辺デバイスの情報またはコントロールを共有している共有相手の他のユーザ)に送信する。いくつかの実施形態では、人間が読み取れるメッセージは、サポートサーバのソーシャルネットワーキングアイデンティティから人間の所有者および/または周辺デバイスのソーシャルネットワークアイデンティティに送信されるインスタントメッセージとしてソーシャルネットワーキングクライアントアプリケーション108c〜108e上に提示される。同様に、いくつかの実施形態では、これらの人間が読み取れるメッセージは、周辺デバイスのソーシャルネットワーキングアイデンティティからサポートサーバおよび/または人間の所有者のソーシャルネットワークアイデンティティに送信されるインスタントメッセージとしてソーシャルネットワーキングクライアントアプリケーション108c〜108e上に提示される。
いくつかの実施形態では、通信サーバ112bは、適宜、サポートサーバを伴わない通信に対する符号化された命令および符号化されたメッセージの翻訳を実装する。たとえば、通信サーバ112bは、適宜、人間のユーザから発信され、登録済み周辺デバイスをターゲットとする命令(たとえば、ソーシャルネットワーキングクライアントアプリケーション108c〜108eにおいて提供される1つまたは複数のユーザインターフェースコントロールの1つまたは複数のインスタントメッセージまたは選択を介してサブミットされる命令)を周辺デバイスによって理解される対応する符号化された命令に翻訳し、それによって、ソーシャルネットワーキングプラットフォームを介した人間のユーザによる周辺デバイスのアクセスおよびコントロールが実現される。それに加えて、通信サーバ112bは、適宜、登録済み周辺デバイスから発信され、人間のユーザをターゲットとする符号化されたメッセージを人間が読み取れる形態に翻訳する(たとえば、1つまたは複数のインスタントメッセージをユーザに)。
ソーシャルプラットフォームの上で遂行され得る通信は、サポートサーバの参加あり、またはなしの、周辺デバイスとその人間の所有者との間の通信、周辺デバイスの人間の所有者の参加あり、またはなしの、周辺デバイスとそのサポートサーバとの間の通信、周辺デバイスの参加あり、またはなしの、周辺デバイスの人間の所有者と周辺デバイスのサポートサーバとの間の通信、そのそれぞれの周辺デバイスの参加あり、またはなしの、およびそのそれぞれの周辺デバイスのサポートサーバの参加あり、またはなしの、異なるユーザ間の通信、そのそれぞれの人間の所有者の参加あり、またはなしの、および/またはそのそれぞれのサポートサーバあり、またはなしの、2つまたはそれ以上の周辺デバイスの間の通信、他のユーザの参加あり、またはなしの、および/または周辺デバイスのサポートサーバの参加あり、またはなしの、ユーザと別のユーザの周辺デバイスとの間の通信であってよい。他の通信構成も可能であり、本明細書で取り上げられている様々な例に照らして明らかである。
本明細書で説明されている実施形態の異なる態様に関してさらに多くの詳細を述べる前に、単純な例示的な使用シナリオが最初に提示される。例示的な使用シナリオでは、例示的なバインドプロセスは、最初にソーシャルネットワーキングアプリケーションを実行するユーザデバイスに周辺デバイスをバインドし、ソーシャルネットワーキングクライアントアプリケーションを現在操作しているそれぞれのユーザアカウントに周辺デバイスをバインドするために実行される。
例示的なデバイスバインディングプロセスにおいて、ユーザは、ユーザデバイス(たとえば、スマートフォン、タブレットデバイス、またはポータブルコンピュータ)上でソーシャルネットワーキングクライアントアプリケーション(たとえば、本明細書で説明されている方法を実装するインスタントメッセージングクライアントアプリケーション)を起動する。ユーザは、ソーシャルネットワーキングクライアントアプリケーションのログインインターフェースを通じてソーシャルネットワーキングプラットフォームの通信サーバの自分のユーザアカウントにログインする。ユーザデバイスと通信サーバとの間のその後の通信は、ユーザのユーザアカウントの下で行われる。ソーシャルネットワーキングクライアントアプリケーションのユーザインターフェースに備えられているのは、バーコードを(たとえば、ユーザデバイスのカメラを介して)スキャンすることができるバーコードスキャナインターフェースである。いくつかの実施形態では、周辺デバイスのメーカーが周辺デバイスに2Dバーコードを付け、2Dバーコードは、ソーシャルネットワーキングプラットフォームの通信サーバがメーカーのURLおよび/または周辺デバイスのデバイスIDなどの、周辺デバイスまたは周辺デバイスのメーカーを一意に識別するために必要とする情報を含む。ユーザがバインディングプロセスを進めることに合意し、バーコード情報がユーザのユーザアカウントの下でユーザデバイスからソーシャルネットワーキングプラットフォームの通信サーバに送信された後、通信サーバは、周辺デバイスをユーザアカウントにバインドする。言い換えれば、ソーシャルネットワーキングプラットフォームの通信サーバは周辺デバイスに対する一意的なソーシャルネットワークアイデンティティを作成し、周辺デバイスをユーザアカウントの下にあるユーザのソーシャルネットワーク連絡先のリストに追加する。いくつかの実施形態では、通信サーバは、また、周辺デバイスに対するサポートサービスプロバイダのサポートサーバに対するそれぞれのソーシャルネットワーキングアイデンティティを作成し、サポートサーバをユーザアカウントの下にあるユーザのソーシャルネットワーク連絡先のリストに追加する。
いくつかの実施形態では、バインディングプロセスは、周辺デバイスがユーザデバイスに接続されることを必要としない。バインディングプロセスが完了した後、周辺デバイスは、いつでも周辺デバイスに対して作成されたソーシャルネットワークアイデンティティの下でユーザデバイスに接続され得る。周辺デバイスからソーシャルネットワークプラットフォームの通信サーバへの通信は、仲介手段としてユーザデバイスを通じて遂行され得る。例示的なデバイス接続プロセスにおいて、ユーザデバイスは、ソーシャルネットワーククライアントアプリケーションの一意的なサービス識別子をブロードキャストする付近の周辺デバイスを自動的にスキャンする。周辺デバイスは、そのデバイス発見メッセージでソーシャルネットワーククライアントアプリケーションの一意的なサービス識別子をブロードキャストするようにメーカーによって事前構成されている。ユーザデバイス上で実行されているソーシャルネットワーククライアントアプリケーションは、周辺デバイスのデバイス発見メッセージが必要とされるサービス識別子を含み、周辺デバイスとの接続(たとえば、Bluetooth(登録商標)、Bluetooth(登録商標) Low Energy、WiFi、USBなどの接続)を確立することをスキャンし、検出する。接続が確立された後、ソーシャルネットワーククライアントアプリケーションは、周辺デバイスが現在オンラインであることをソーシャルネットワーキングプラットフォームの通信サーバに通知する。ソーシャルネットワーククライアントアプリケーションは、また、周辺デバイスが現在オンラインであり、ソーシャルネットワーキングプラットフォームの上でソーシャルネットワーク連絡先としてユーザと通信するのに利用可能であることをユーザインターフェースにおいてユーザに指示する。いくつかの実施形態では、ユーザデバイスは、ユーザがソーシャルネットワーキングクライアントアプリケーションにおいて周辺デバイスとの会話セッションを開始するユーザインターフェースコントロールを選択するまで周辺デバイスとの接続を確立することを試みない。いくつかの実施形態では、ユーザデバイスは、ユーザが最初に自分のユーザアカウントにログインするときに周辺デバイスとの接続をスキャンし、それを確立することを試みる。いくつかの実施形態では、ユーザは、バインディングプロセスおよび接続プロセスに対して同じユーザデバイスを使用する必要はない。バインディングプロセスおよび接続プロセスの説明で参照されているユーザデバイスは、ソーシャルネットワーキングクライアントアプリケーション(ソーシャルネットワーキングプラットフォームに対するウェブインターフェースを示すブラウザを含む)を現在実行しており、現在アクティブなユーザアカウントとしてユーザのアカウントを有するユーザデバイスである。
周辺デバイスがユーザのユーザアカウントの下でソーシャルネットワーキングクライアントアプリケーション内でユーザとの接続を確立した後、ユーザは、ソーシャルネットワーキングプラットフォーム上のソーシャルネットワーク連絡先として周辺デバイスと通信することができる。たとえば、周辺デバイスが、ユーザのユーザアカウントの下でソーシャルネットワーキングクライアントアプリケーション内でBluetooth(登録商標)またはBluetooth(登録商標) Low Energy(BLE)接続を介してユーザデバイス(たとえば、スマートフォン)に接続されているヘルスモニタリングリストバンドである場合、ユーザは、適宜、自分の他のソーシャルネットワーク連絡先と同様にしてリストバンドとのチャットセッションを開始することができる。たとえば、ユーザは、チャットセッションでリストバンドに、「Show me today's data」または「Light up the screen」というインスタントテキストメッセージを送信することを選択することができる。インスタントテキストメッセージは、チャットセッションの会話インターフェース内で、ユーザから周辺デバイスのそれぞれのソーシャルネットワークアイデンティティに送信されるメッセージとして提示される。
いくつかの実施形態では、ソーシャルネットワーキングクライアントアプリケーションは、リストバンドとの会話セッションを開始することを選択したときにユーザに対してカスタマイズされたユーザインターフェースを提供し、そのカスタマイズされたユーザインターフェース内で、ソーシャルネットワーキングクライアントアプリケーションは、リストバンドに発行され得る異なるコマンドを表す1つまたは複数のボタンを提示する。たとえば、カスタマイズされたユーザインターフェースは、「output today's data」用のボタン、「show battery level」用のボタン、および「vibrate」用のボタンを提示し得る。ユーザがこれらのボタンのうちの1つ(たとえば、「vibrate」用のボタン)を呼び出したときに、対応するコマンドが、チャットセッションの会話インターフェース上に、ユーザから周辺デバイスのそれぞれのソーシャルネットワークアイデンティティへのメッセージとして提示される。コマンドは、周辺デバイスの通信サーバまたはサポートサーバによって符号化された命令に翻訳され、通信サーバおよびユーザデバイスを介して周辺デバイスにも送信される。符号化された命令を受信したリストバンドは、しかるべく、たとえば、バイブレーションを起動することによって応答する。
いくつかの実施形態では、ユーザがタイプ入力、音声、ボタンを呼び出すこと、または他の何らかの手段によって、周辺デバイスに命令/コマンドを入力したかどうかに関係なく、命令/コマンドは、ユーザデバイスから通信サーバに送信され、通信サーバは、対応する符号化された命令/コマンドを(たとえば、内部翻訳それ自体を行うこと、または周辺デバイスのサポートサーバに接続することのいずれかによって)取得し、その翻訳結果をユーザデバイスに送り返す。ユーザデバイスは、ユーザデバイスと周辺デバイスとの間に確立されている接続を通じて符号化された命令/コマンドを周辺デバイスに転送する。周辺デバイスは、符号化された命令/コマンドに従って応答または活動する。たとえば、リストバンドは、ユーザがチャットインターフェースでテキストメッセージ「vibrate」を入力するか、またはリストバンド用にソーシャルネットワーキングクライアントアプリケーションが提供したカスタマイズされたユーザインターフェースにおいて「vibrate」用のボタンを呼び出した後にバイブレーションを起動する。これは、ユーザが身の回りにリストバンドを見つけられず、自分のソーシャルネットワーククライアントアプリケーションを使用してユーザがそれを見つけられるように音を鳴らすことによってリストバンドが応答することができるようにリストバンドに話しかけたいときに役立つ。
ときには、ユーザは、ユーザと周辺デバイスとの間のチャットセッションにおける追加のユーザおよび/または他の周辺デバイスを含むものとしてよい。たとえば、ユーザは、そのそれぞれの所有者によって通信サーバに登録されおり、そのそれぞれの所有者のユーザアカウントを介して現在オンラインである他のユーザまたは周辺デバイスのそれぞれのソーシャルネットワークアイデンティティを含むグループチャットセッションを作成することができる。たとえば、ユーザの周辺デバイスが、血圧計である場合、ユーザは、ユーザ自身、ユーザの家族、および血圧計を伴うグループチャットセッションを開始することができる。ユーザが血圧計のアームラップを自分の腕に巻き付けた後、ユーザは、グループチャットインターフェースでテキストメッセージ(たとえば、「start measuring」)を血圧計に(たとえば、メッセージ本文中で@XXXを使用することによって)入力するか、またはカスタマイズされたグループチャットインターフェースで「start」用のボタンを呼び出すことができる。グループチャットセッションの会話インターフェースは、ユーザの命令をユーザから血圧計に送信されたインスタントメッセージ「Start today's blood pressure measurement」として示す。送信サーバは、ユーザの命令を取得し、ユーザの命令に従って、血圧計に対する対応する符号化された命令を取得する。通信サーバは、ユーザデバイスを介して符号化された命令を血圧計に送信し、血圧計は、ユーザの血圧を測定することを開始することによって符号化された命令に応答する。いくつかの実施形態では、血圧計は、適宜、血圧測定の進捗状況および最終結果に関して符号化された応答をユーザデバイスに送信する。ユーザデバイスは、符号化された応答を通信サーバに送信し、通信サーバは、符号化された応答のコンテンツに従って対応する人間が読み取れるデータを取得する。通信サーバは、人間が読み取れるデータをグループチャットに関与しているユーザに1つまたは複数のチャットメッセージ(たとえば、「Starting to measure blood pressure, please keep still」、「Your blood pressure today is 120/60, very good」、「Measurement completed, please remove the arm wrap」など)として送信する。現在グループチャットに入っている各ユーザは、そのそれぞれのユーザデバイス上でこれらのチャットメッセージを血圧計からグループ全体へのメッセージとして、またはそれらのうちの各々への個別のメッセージとして見る。
より多くの例示的な使用シナリオおよび実施形態が以下で取り上げられている。
図2A〜図2Hは、いくつかの実施形態によりソーシャルネットワーキングクライアントアプリケーションを介して周辺デバイスのアクセスおよびコントロールをセットアップするための例示的なユーザインターフェースである。
いくつかの実施形態では、周辺デバイスのアクセスおよびコントロールをセットアップするために、ユーザは、最初に、周辺デバイスをソーシャルネットワーキングプラットフォーム上のユーザのアカウントにバインドすることを通信サーバに要求する。周辺デバイスがユーザのアカウントにバインドされた後、ユーザデバイスは、周辺デバイスをスキャンし、周辺デバイスが見つかった場合に周辺デバイスへの接続を確立する。図2A〜図2Hは、例示的なユーザアカウント「Red207」の下で動作するソーシャルネットワーキングクライアントアプリケーションを実行する例示的なユーザデバイス202(たとえば、図2Bのユーザデバイス104のうちの1つ)を通じて、例示的な周辺デバイス200(たとえば、図2Bの周辺デバイス118のうちの1つ)に対するコントロールをセットアップするためのプロセスを示している。
図2Aに示されているように、いくつかの実施形態では、周辺デバイス200(たとえば、ヘルスモニタリングリストバンド)のメーカーは、周辺デバイス200の包装または本体に2Dバーコードを付け、2Dバーコードは、周辺デバイス200に対する一意的な識別子201、または周辺デバイス200を含む周辺デバイスの種類に対するサポートサービスを提供する周辺デバイス200のサポートサーバに対する一意的な識別子を符号化する。一意的なデバイス識別子の他のフォーマットも可能である。
図2Bは、「Red2007」という名前のユーザアカウントは、ユーザデバイス202(たとえば、スマートフォン)上でソーシャルネットワーキングクライアントアプリケーションを起動し、ソーシャルネットワーキングクライアントアプリケーションにおいて提供されるハードウェア連絡先を追加する機能を呼び出していることを示す。ユーザは、2Dバーコードをスキャナ(たとえば、スマートフォンの内蔵カメラ)の下に置き、「scan」ボタン204を呼び出して2Dバーコードをスキャンする。いくつかの実施形態では、周辺デバイスのバーコードをスキャンすることを開始するためのユーザインターフェースコントロールは、ソーシャルネットワークプラットフォームの他のユーザに割り当てられているバーコード(たとえば、QRコード(登録商標))をスキャンすることを開始するためのユーザインターフェースコントロールと同じである。通信サーバは、ユーザがバーコードで取得された識別子に基づき新規の人間の連絡先またはハードウェア連絡先を追加したいかどうかをバックエンドで決定する。
図2Cは、ユーザデバイス202が、バーコードのスキャンに成功し、ユーザが自分のアカウントにバインドすることを望んでいる周辺デバイスの識別子を認識していることを示す。周辺デバイス200の名前(たとえば、「Q-Band(登録商標)」)が、ユーザに対して表示される。いくつかの実施形態では、モデル番号(たとえば、「Model X2000」)も、適宜、ユーザに対して表示される。ユーザが、バーコードの読み取りが自分の期待と一致していることを確認した後、ユーザは、「bind」ボタン206を呼び出して、周辺デバイス200をユーザアカウント「Red2007」にバインドすることができる。「bind」ボタン206の呼び出しは、ユーザデバイス202がバインド命令をソーシャルネットワーキングプラットフォームの通信サーバに送信することを引き起こし、通信サーバは、ユーザのアカウントと周辺デバイスの識別子との間のバインドを作成する。ときには、周辺デバイス200に割り当てられたバーコードが、一意的でない場合(たとえば、周辺デバイスの種類のすべて(たとえば、特定のデバイスモデル)について割り当てられている共通バーコードまたは周辺デバイスの1つまたは複数の種類に対するサポートサービスプロバイダである)、バインドプロセスは、ユーザアカウント識別子およびバーコード内に符号化されている識別子に基づき(たとえば、ユーザ名と共通デバイス識別とを連結することによって)周辺デバイスに対する一意的なデバイス識別子を作成する。通信サーバは、また、人間のユーザの特徴のうちのすべてまたは少なくともいくつかを含む(たとえば、ユーザ名、アバター、アカウントの種類、オンラインステータス、連絡先リスト、ソーシャルネットワークグループリスト、会話履歴、ファンリスト(たとえば、「other users that follow me」)、サブスクリプションのリスト(たとえば、「other users I am following」)などを含む)、周辺デバイス200に対するソーシャルネットワーキングアイデンティティも作成する。いくつかの実施形態では、通信サーバは、周辺デバイス200のアカウントがデバイスアカウントであり、それぞれのユーザアカウント(たとえば、「Red2007」)に関連付けられていることも指示する。
図2Dは、バインドプロセスが正常に完了したことを示している。通信サーバは、周辺デバイス200(「Q-Band」の一時的なオンラインアイデンティティを備える)が、ユーザのアカウントにバインドされていることを通知する。ユーザは、適宜、周辺デバイス200のニックネームをユーザによりアピールする他の名前(たとえば、「Red's Q-Band」)に変更することができる。
図2Eは、ユーザアカウント「Red207」に現在関連付けられている連絡先のリストを示す。連絡先のリストは、ユーザがすでに相互のソーシャルネットワーキング関係を確立している人間のユーザ(たとえば、「Annie」、「Mom」、および「Reddog」)を含む。図2Eは、また、連絡先のリストが周辺デバイスのソーシャルネットワークアイデンティティ208(たとえば、「Q-Band」)も含むことも示している。いくつかの実施形態では、連絡先のリストは、新規に追加された周辺デバイス200に対するサポートサービスプロバイダのパブリックソーシャルネットワークアイデンティティ210(たとえば、「Q-Support」)も含む。この時点で、周辺デバイスに対するアイコンは、ソーシャルネットワークアイデンティティ「Q-Band」に対応する周辺デバイス200がユーザデバイス202に現在接続されていないことを示すように陰影が付けられている。周辺デバイス200が、ユーザデバイス202に接続された後、通信サーバは、接続を通知され、周辺デバイスに対するアイコンの外観は、周辺デバイス200のアクティブオンラインステータスが現在接続されている状態であることを指示するように変化する。
図2Fは、ユーザが図2Eに示されている連絡先リスト内の周辺デバイス200のアイコンを呼び出したときに、ユーザデバイス202がソーシャルネットワークアイデンティティ「Q-Band」に関連付けられている周辺デバイス200をスキャンし、接続する接続プロセスを開始することを示している。いくつかの実施形態では、周辺デバイス200のメーカーおよびソーシャルネットワーキングクライアントアプリケーションのプロバイダは、特定の接続プロトコル(たとえば、Bluetooth(登録商標)もしくはBluetooth(登録商標) Low Energy、またはWiFi接続プロトコル)について合意しており、したがって、ソーシャルネットワーキングクライアントアプリケーションは、本明細書で説明されている方法を実装している周辺デバイスの種類を発見することができる。接続プロトコルに関するさらなる詳細は、本開示の後の方で取り上げられる。ユーザデバイス202が、スキャンプロセスを通じて周辺デバイス200の存在を発見したときに、検出された周辺デバイス200は、周辺デバイス200のソーシャルネットワークアイデンティティと照合され、ユーザに対してユーザデバイス202上に表示される。周辺デバイス200が、ユーザデバイス202に接続された後、通信サーバは、接続を通知され、周辺デバイスに対するアイコンの外観は、周辺デバイス200が現在接続されている状態であることを指示するように変化する(図示せず)。
図2Gは、周辺デバイス200およびユーザデバイス202がソーシャルネットワーキングクライアントアプリケーションにおいて接続を確立した後、チャットセッションが、2人のユーザの間でチャットセッションを確立するのと類似の方式で(たとえば、連絡先リスト中の周辺デバイス200を選択し、メッセージを周辺デバイス200に送信することを選択することによって)ユーザと周辺デバイス200との間で確立され得ることを示している。いくつかの実施形態では、周辺デバイス200とユーザ「Red207」の間のチャットセッションに対する会話インターフェースは、接続が最初に確立されたときに自動的に起動される。ユーザデバイス202上に表示される会話インターフェース212において、周辺デバイス200は、メッセージ214をユーザに送信している(たとえば、「
」)。このメッセージ214は、通信サーバによってユーザデバイス202に送られる。通信サーバがこのメッセージを取得するプロセスは、異なる実施形態では異なり得る。いくつかの実施形態では、ユーザデバイス202は、周辺デバイス200から受信された符号化されたメッセージ(たとえば、「Init OK」メッセージ)を通信サーバに転送し、通信サーバは、符号化されたメッセージをメッセージ214に自ら翻訳するか、または周辺デバイス200のサポートサービスプロバイダのサポートサーバに、符号化されたメッセージをメッセージ214に翻訳することを依頼するかのいずれかを行う。符号化されたメッセージが周辺デバイスからどのように送信されるか、ユーザデバイス、通信サーバ、および/またはサポートサーバによってどのように処理されるか、ユーザにどのように伝達されるか、および会話履歴中にどのように記憶されるかのさらなる詳細は、本開示の他の部分で取り上げられている。
図2Gは、現在のチャットセッションの会話インターフェース212が、適宜、ユーザがテキストメッセージ(たとえば、「Light the display」)を周辺デバイス200に入力する際に使用することができるメッセージ入力ボックス218を備えることも示している。会話インターフェース212は、適宜、周辺デバイス200の特定の一般に使用される機能を呼び出すための1つまたは複数のユーザインターフェースコントロールを備える。たとえば、会話インターフェース212は、適宜、周辺デバイス200の通信チャネルおよび機能をテストするため周辺デバイス200(たとえば、ヘルスモニタリングリストバンド)を点灯させるためのボタン216を備える。会話インターフェース212は、適宜、周辺デバイス200の他の機能を呼び出すための他のボタン(たとえば、「print data」ボタン)を備える。ユーザが、「Light」ボタン216を押したときに、ユーザが「Light」ボタン216を押したことを指示する信号が通信サーバに送信される。通信サーバは、周辺デバイス200に対する対応する符号化された命令を取得し、符号化された命令をユーザデバイス202に送り返す。次いで、ユーザデバイスは、ユーザデバイスと周辺デバイスとの間に確立されている接続を通じて符号化された命令を周辺デバイスに転送する。次いで、周辺デバイスは、符号化された命令の中のコマンドを解釈して実行し、適宜、符号化された応答(たとえば、要求されたタスクが正常に完了したことを指示する符号化された応答)を送り返す。
いくつかの実施形態では、ユーザインターフェースコントロールの開発は、周辺デバイス200のメーカーとソーシャルネットワーキングプラットフォームのプロバイダとの間の連携を通じて遂行され得る。いくつかの実施形態では、通信サーバは、メーカーがその製品(たとえば、周辺デバイス200)に対する会話インターフェースにどのような機能を含めることを好んでいるかのみを知ればよく、通信サーバは、ユーザデバイス202を通じてユーザおよび/または周辺デバイス202から受信されるコマンドおよびメッセージの実際の翻訳および/または解釈を実行する必要はない。たとえば、いくつかの実施形態では、通信サーバは、ユーザによって入力されたインスタントメッセージまたは機能ボタン押下から周辺デバイスをターゲットとする対応する符号化された命令への変換を実行する必要はない。その代わりに、通信サーバは、周辺デバイスに対するサポートサービスプロバイダのサポートサーバにユーザ要求機能を転送し、サポートサーバから対応する符号化された命令を受信する。通信サーバは、次に、ユーザデバイスを通じて符号化された命令を周辺デバイスに転送する。いくつかの実施形態では、通信サーバは、周辺デバイスから受信された符号化されたメッセージからユーザに対して示されるインスタントメッセージへの変換を実行する必要もない。その代わりに、通信サーバは、周辺デバイスに対するサポートサービスプロバイダのサポートサーバに符号化されたメッセージを転送し、符号化されたメッセージの対応する翻訳結果を受信する。通信サーバは、次いで、翻訳結果を周辺デバイスからユーザへのメッセージとしてユーザへのインスタントメッセージとして送信する。いくつかの実施形態では、通信サーバは、適宜、たとえば、自然言語メッセージ/ボタン押下と符号化された命令/メッセージとの間のマッピングテーブルを使用することで、変換を自ら実行する。
図2Hは、ユーザがテキストメッセージ(たとえば、「Light display」)を入力するか、または「Light」ボタン216を押した後に、対応する符号化された命令が、通信サーバからユーザデバイス202に送信され、次いで、ユーザデバイス202から周辺デバイス200に送信されることを示している。対応するインスタントメッセージ220は、会話インターフェース212内にユーザからQ-Bandへのメッセージとして表示される。周辺デバイス200が、要求された機能を実行した後、周辺デバイス200は、応答(たとえば、ヘルスモニタリングリストバンドのディスプレイを点灯するタスクの完了を指示する符号化された応答)をユーザに送信する。応答は、会話インターフェース212においてQ-Bandからユーザへのインスタントメッセージ222(たとえば、「Done! Display is lit」)として表示される。いくつかの実施形態では、周辺デバイス212が、ユーザにメッセージを送信することを望んでいるときに、メッセージは、符号化された形態をとる(たとえば、デバイスメーカーの専用フォーマットに従ってフォーマットされた)。符号化されたメッセージは、ユーザデバイス202に送信され、ユーザデバイス202は、それを通信サーバに転送する。通信サーバは、適宜、それをサポートサーバに転送し、符号化されたメッセージの翻訳結果をサポートサーバから取得する。次いで、通信サーバは、その翻訳結果をインスタントメッセージとしてユーザデバイス202に送信する。翻訳結果は、周辺デバイス「Q-Band」からユーザ「Red207」へのインスタントメッセージとしてユーザに対して提示される。
図2A〜図2Hに示されているユーザインターフェースおよびそれに関して説明されている特徴は、ただ単に可能な実施形態を示しているにすぎない。いくつかの実施形態では、会話インターフェースの単純バージョン上に表示されるコントロールを介して呼び出され得る拡張会話インターフェース内により多くの機能ボタンが含まれる。いくつかの実施形態では、ユーザは、ユーザが最もよく使用されるコマンドおよび命令に対してボタンをセットアップすることを可能にする構成インターフェースを提供される。いくつかの実施形態では、ソーシャルネットワーキングクライアントアプリケーションは、ユーザがテキスト入力ボックスまたは音声入力インターフェースを介して自然言語命令およびコマンドを入力することを可能にし、自然言語命令およびコマンドを受信した通信サーバは、適宜、ローカルまたはサードパーティの自然言語処理サービスを通じてユーザのコマンドの解釈を生成する。次いで、通信サーバは、符号化された命令の翻訳のために解釈を周辺デバイスのサポートサーバに転送する。通信アーキテクチャの異なる層(たとえば、サポートサーバ<-->通信サーバ<-->ユーザデバイス<-->ユーザおよび周辺デバイス)の間で命令および応答がどのように送信されるかについてさらなる詳細が、本開示の後の方で取り上げられる。
図2Iは、デバイスメーカーがソーシャルネットワーキングプラットフォームのプロバイダを通じてその周辺デバイスの1つまたは複数の種類に対するサポートを確立するプロセスを示す流れ図である。たとえば、メーカー(たとえば、周辺デバイスの機器開発者)は、サービスアカウント(たとえば、メーカーによって製作された周辺デバイスの種類に対するサポートサービスプロバイダのサポートサーバのアカウント)の要求をサブミットする(231)。いくつかの実施形態では、メーカーまたは機器開発者は、名前、モデル番号、基本機能、およびソーシャルネットワーキングプラットフォームのプロバイダにソーシャルネットワーキングプラットフォームによってサポートされるべき機能をサブミットする。ソーシャルネットワーキングプラットフォームのプロバイダは、その要求をレビューし、内部のまたはパブリッシュされたガイドラインにより要求を受け入れるかどうかを決定する(233)。ソーシャルネットワーキングプラットフォームのプロバイダが、要求を受け入れることを決定した場合、開発者はその受け入れを通知され、メーカーまたは機器開発者は、ソーシャルネットワーキングプラットフォームの通信サーバを通じて実装されるべき機能を開発することを続ける(235)。ソーシャルネットワーキングプラットフォームのプロバイダが、要求を受け入れない場合、機器開発者は、戻って、その要求を修正し、要求プロセスをサブミットするか、または終了することができる。
承認された機能が、機器開発者によって実装されるときに、それらの機能は、ソーシャルネットワーキングプラットフォームのプロバイダによって品質保証について審査される(237)。これらの機能がテストを通じて再び承認された後、要求で識別された周辺デバイスの種類に対するサポートは、一般大衆に正式にリリースされ、通信サーバは、これでこのサポートされている種類の周辺デバイスに対する登録要求を受け入れ、ソーシャルネットワーキングプラットフォーム上の周辺デバイスのサポートサーバに対するそれぞれのソーシャルネットワークアイデンティティを確立することになる。公開リリースの後、サポートされている周辺デバイスに対するメーカーおよび機器開発者は、周辺デバイスの製造および/またはエンドユーザへの販売を開始することができる(239)。いくつかの実施形態では、ソーシャルネットワーキングプラットフォームのプロバイダは、また、販売時点において製造されている周辺デバイスの買い手に提供され得る、周辺デバイスのサポートされている種類に対する一意的な識別子をサポートサーバに割り当てる。たとえば、識別子は、周辺デバイスまたはその包装に付けられている2Dバーコードとして提供されるか、または周辺デバイスに付属する一意的なシリアル番号として提供され得る。
図2Jは、エンドユーザがソーシャルネットワーキングプラットフォームの通信サーバとともにユーザデバイス(たとえば、モバイルデバイス)を使用して特定の周辺デバイスを登録するプロセスを示す簡略化されたプロセス流れ図である。図2Jに示されているように、エンドユーザがデバイス登録時にデバイスIDをユーザデバイスに付けるときに、ユーザデバイスは、ユーザによって付けられたデバイスIDを取り込む(たとえば、周辺デバイスに付けられている2Dバーコードを通じて、または直接テキスト入力を通じて)(241)。ユーザデバイスは、デバイスIDが正常に取り込まれたかどうかを決定する(243)。ユーザデバイスが、通信サーバに記憶されているデータベースを参照した後にデバイスIDを認識しない場合、プロセスは終了する。ユーザデバイスが、サポートされている周辺デバイスに対する正しいデバイスIDが取り込まれたと決定した場合、ユーザデバイスは、ソーシャルネットワーキングプラットフォームの通信サーバから周辺デバイスに対するアカウントを取得する(245)。たとえば、いくつかの実施形態では、ユーザデバイスは、デバイスIDを通信サーバに送信し、通信サーバは、デバイスIDおよびユーザの自IDに基づき周辺デバイスに対する適切なソーシャルネットワークアイデンティティを生成し、周辺デバイスに対するアカウントを作成する。周辺デバイスに対するアカウントも、通信サーバによってユーザの自アカウントに関連付けられる。アカウントが生成された後、通信サーバは、アカウント情報をユーザデバイスに送信する。ユーザデバイスは、周辺デバイスに対するアカウントが正常に生成されたかどうかを決定する(247)。もしそうであれば、ユーザデバイスは、情報(たとえば、命令および応答)を周辺デバイスとやり取りすることを開始する(249)ことができる。情報は、周辺デバイスのサポートサーバから発信され、通信サーバを通じてユーザデバイスに送信される符号化された命令、通信サーバから直接来る符号化された命令、サポートサーバ、通信サーバ、他のデバイス、および/またはユーザに向けられている周辺デバイスからの符号化された応答、などを含む。
図2K〜図2Tは、いくつかの実施形態によるソーシャルネットワーキングプラットフォームの上で周辺デバイスにアクセスし、コントロールすることを伴う様々な通信シナリオにおけるメッセージ翻訳および流れを示す図である。通信シナリオの異なる組合せは、発信パーティからターゲットパーティへの複数の通信を伴う会話で存在し得る。ユーザ、周辺デバイス、サポートサーバ、および通信サーバの各々は、特定の通信メッセージ(たとえば、符号化された命令、符号化されたメッセージ、またはインスタントメッセージ)の発信パーティ(「発信者」とも称される)またはターゲットパーティ(「ターゲット」とも称される)であってよい。ユーザデバイス、サポートサーバ、および通信サーバの各々は、他のパーティによって発信され、他のパーティをターゲットとする特定の通信メッセージの中間送信者として働き得る。いくつかの実施形態では、通信サーバへの直接メッセージ、たとえば、サポートサーバ、ユーザ、または周辺デバイスから発信された直接メッセージは、許されるが、通信サーバは通常チャットセッションにおける会話参加者の1人とみなされないので、これらのメッセージは本明細書では示されていない。本明細書で使用されているように、メッセージが特定のパーティに向けられている場合、メッセージは、図2K〜図2Tでは「@」そのパーティであると言われ、そのパーティは、メッセージがそのソースからターゲットへの移行時に1つまたは複数の他のパーティを通り得る場合であっても、メッセージのターゲットである。メッセージまたは命令を開始したパーティは、メッセージの開始が発信者によってすでに受信されている別のメッセージまたは命令に応答したものであっても、メッセージまたは命令の発信者である。
本明細書に示されているように、周辺デバイスから発信したメッセージは、「符号化されたメッセージ」と呼ばれ、符号化されたメッセージは、周辺デバイスのネイティブI/Oおよびデータフォーマットに従う。いくつかの実施形態では、いくつかの種類の周辺デバイスからの符号化されたメッセージは、人間が読み取れるものとしてよいが、そのようなことは必要ではない。いくつかの実施形態では、特定の周辺デバイスからの符号化されたメッセージが、人間のユーザに向けられた場合、最初に人間が読み取れるインスタントメッセージに翻訳されるべき符号化されたメッセージが周辺デバイスのサポートサーバに送信され、次いで、符号化されたメッセージの代わりに人間が読み取れるインスタントメッセージがユーザ(ユーザのユーザデバイスを介して)送信される。いくつかの実施形態では、特定のユーザからのインスタントメッセージが、周辺デバイスに向けられた場合、最初に周辺デバイスに対して符号化された命令に翻訳されるべきインスタントメッセージが周辺デバイスのサポートサーバに送信され、次いで、インスタントメッセージの代わりに符号化された命令が周辺デバイスに(ユーザのユーザデバイスを介して)送信される。いくつかの実施形態では、通信サーバは、オリジナルメッセージをサポートサーバに転送し、オリジナルメッセージのターゲットに適したオリジナルメッセージの翻訳を取得する。いくつかの実施形態では、オリジナルメッセージの少なくともサブセットについて、通信サーバは、サポートサーバに接続することなくローカルで翻訳を生成する。いくつかの実施形態では、サポートサーバが、メッセージまたは命令の発信者であるときに、サポートサーバは、メッセージのターゲットパーティに応じて正しいフォーマット(たとえば、インスタントメッセージとして、または符号化された命令として)でメッセージまたは命令を提供する。
図2Kは、ユーザデバイス104(たとえば、スマートフォン)上で実行されているソーシャルネットワーキングクライアントアプリケーション108によって提供されるユーザインターフェースにおいて、周辺デバイス118(たとえば、クライメートコントロールデバイス)をターゲットとする命令(たとえば、「Turn off air conditioner.」)を開始する通信シナリオを示している。この、および次の例示的なシナリオでは、ユーザは、すでに通信サーバ112の自分のアカウントにログインしており、周辺デバイス104は、サポートサーバ116のサポートされているデバイスであり、ユーザによって自分のアカウントの下に登録されており、周辺デバイスおよびユーザデバイスは、ソーシャルネットワーキングクライアントアプリケーションの下で接続を確立している。説明のために、ユーザのソーシャルネットワークアイデンティティは「User」であり、周辺デバイス118のソーシャルネットワーキングアイデンティティは、この例では「Peripheral」であると仮定する。
この例では、メッセージの流れは次の通りである。
(1)ユーザは、適宜、インスタントメッセージ「Turn off air conditioner」をタイプ入力するか、または「User」と「Peripheral」との間のチャットセッションに対する会話インターフェースに用意されている周辺デバイス118をオフにするためのユーザインターフェースコントロール(たとえば、「Turn Off」ボタン)を呼び出すことによって命令を入力する。一対一チャットセッションでは、一方の参加者からのメッセージは、自動的に、チャットセッションの他の参加者をターゲットとする。したがって、ユーザによって入力されたメッセージは、周辺デバイス108をターゲットとするインスタントメッセージである。いくつかの実施形態では、プリセットされたユーザインターフェースコントロールの呼び出しは、周辺デバイス108をターゲットとするインスタントメッセージに対応しており、そのようなものとして会話ログ中に表される。
(2)ユーザから発信され、周辺デバイス118をターゲットとするインスタントメッセージは、ユーザデバイス104から通信サーバ112に送信される。
(3)通信サーバ112は、インスタントメッセージを受信し、さらにそれを周辺デバイスのサポートサーバに送信する。通信サーバは、発信者からのユーザおよび周辺デバイスのアイデンティティと、インスタントメッセージのターゲットフィールドを取得する。周辺デバイスのアイデンティティに基づき、通信サーバは、周辺デバイスに対するサポートサーバのアイデンティティを決定する。
(4)サポートサーバ112は、インスタントメッセージを受信し、それが人間が読み取れるメッセージであると認識し、周辺デバイス118に受け入れ可能であるフォーマットに翻訳される必要がある。サポートサーバ112は、受信されたインスタントメッセージを解釈し、それを周辺デバイス118をターゲットとする符号化された命令にマップする。サポートサーバ112は、符号化された命令を通信サーバに送信し、符号化された命令は周辺デバイス118をターゲットとする。
(5)通信サーバ112は、サポートサーバ116から周辺デバイスをターゲットとする符号化された命令を受信し、それをユーザデバイス104に転送する。
(6)ユーザデバイス104は、周辺デバイス118をターゲットとする符号化された命令を受信し、それを周辺デバイス118に送信する。周辺デバイス118は、符号化された命令で要求されたタスクを読み取り、実行する。
しかしこの例の符号化された命令は、ユーザから開始された命令である。ユーザが周辺デバイスからの情報に対する前の要求に応答しているときにメッセージの同じ流れが適用される。たとえば、周辺デバイスがすでに、温度調節に対する好ましい省エネモードを与えるようにユーザに要求している場合、ユーザは、チャットインターフェースで周辺デバイスをターゲットとするインスタントメッセージ「Most Power Saving」または「Balanced between Power and Comfort」をタイプ入力することによって情報の要求に応えることができる。
図2Lは、ユーザデバイス104上で実行されているソーシャルネットワーキングクライアントアプリケーション108を通じてユーザをターゲットとするメッセージまたは要求(たとえば、「E01」、これは「Error 01=Light Sensor Blocked」を意味する)を周辺デバイス118が開始する通信シナリオを示している。この例では、メッセージの流れは次の通りである。
(1)周辺デバイス118は、ユーザをターゲットとする符号化されたメッセージ(たとえば、「E01」)を生成する。
(2)ユーザデバイス104は、符号化されたメッセージを受信し、それを通信サーバ112に転送する。
(3)通信サーバは、ユーザデバイスから符号化されたメッセージを受信し、「User」および「Peripheral」がそれぞれ符号化されたメッセージの発信者およびターゲットであることを認識する。通信サーバは、また、周辺デバイスに対するサポートサーバも識別し、符号化されたメッセージをサポートサーバに転送して人間が読み取れるインスタントメッセージに翻訳する。
(4)サポートサーバ116は、ユーザをターゲットとする符号化されたメッセージを受信し、それを人間が読み取れる形態(たとえば、インスタントメッセージ「The light sensor is blocked, please remove its cover」)に翻訳する。次いで、サポートサーバ116は、ユーザをターゲットとするインスタントメッセージを通信サーバに送信する。
(5)通信サーバは、ユーザをターゲットとするインスタントメッセージを受信し、それをユーザデバイスに転送する。
(6)ユーザデバイスは、ユーザをターゲットとするインスタントメッセージを受信し、そのインスタントメッセージを周辺デバイスから発信され、ユーザをターゲットとするインスタントメッセージとしてユーザに対して表示する。
しかしこの例の符号化されたメッセージは、周辺デバイスから開始された命令である。周辺デバイスがユーザからの情報に対する前の要求に応答しているときにメッセージの同じ流れが適用される。たとえば、ユーザがすでに、今日の天気予報データを提供するように周辺デバイスに要求している場合、周辺デバイスは、ユーザをターゲットとする符号化されたメッセージ(たとえば、「90RSW」、これは「Rainy, highest temperature = 90 degrees, Southwest wind」を意味する)で回答を送信することによって情報の要求に応えることができる。
図2M〜図2Nは、サポートサーバによってサポートされている周辺デバイスから独立してサポートサーバと通信することができることを示している。サポートサーバとユーザとの間の通信は、ソーシャルネットワーキングプラットフォーム上に備えられている通常のインスタントメッセージング機能を使用して実行することができる。サポートサーバ116のソーシャルネットワークアイデンティティが「Support」であると仮定する。ユーザは、「Support」をターゲットとするインスタントメッセージを送信することができ、サポートサーバは、「User」をターゲットとするインスタントメッセージを送信することができる。
図2Mに示されているように、メッセージの流れは次の通りである。
(1)サポートサーバをターゲットとするインスタントメッセージは、「User」および「Support」を含むチャットセッションの会話インターフェースにおいてユーザによってタイプ入力される。
(2)ユーザデバイスは、「Support」をターゲットとするインスタントメッセージを通信サーバに送信する。
(3)通信サーバは、インスタントメッセージがサポートサーバをターゲットとすることを認識し、インスタントメッセージをサポートサーバに送信する。インスタントメッセージは、UserからSupportへのインスタントメッセージとしてチャットセッションの会話ログに記録される。
図2Nに示されているように、メッセージの流れは次の通りである。
(1)ユーザをターゲットとするインスタントメッセージは、サポートサーバによって生成される(たとえば、機械生成されるか、またはサポートサーバの管理者によってタイプ入力される)。サポートサーバは、インスタントメッセージを通信サーバに送信する。
(2)通信サーバは、インスタントメッセージがユーザをターゲットとすることを認識し、インスタントメッセージをユーザに関連付けられているユーザデバイスに送信する。
(3)ユーザデバイスは、インスタントメッセージをユーザに対して表示し、インスタントメッセージは、SupportからUserへのインスタントメッセージとしてチャットセッションの会話ログに記録される。
様々な通信シナリオにおいて、サポートサーバからユーザへの直接通信は、サポート要員がユーザから直接何らかの情報を取得したいときに(たとえば、「Is the surface of the temperature control wet?」)、またはユーザに直接命令または情報を与えたいときに(たとえば、「Press the red button twice while holding the blue button」または「No, that is not an error. The blinking blue light means the unit is operating normally」)生じ得る。
様々な通信シナリオにおいて、ユーザからサポートサーバへの直接通信は、ユーザがサポートサーバの要員またはサポートサーバから直接何らかの情報を取得したいときに(たとえば、「How do I turn the unit off without erasing my last measurement.」)、またはサポート要員に直接命令または情報を与えたいときに(たとえば、「Can you reconfigure the unit remotely for me?」または「No, I never changed the filter before.」)生じ得る。
様々な通信シナリオにおいて、ユーザとサポートサーバとの間の直接通信は、一対一通信、または他のユーザおよび/もしくは周辺デバイスを伴うグループチャットセッションの一部であってよい。
図2Oは、サポートサーバ116がソーシャルネットワーキングプラットフォームの上で周辺デバイス118をターゲットとする符号化された命令を開始する例示的な通信シナリオを示している。この通信シナリオでは、ユーザは、少なくともサポートサーバ(「Support」として識別される)、ユーザ自身(「User」として識別される)、および周辺デバイス(「Peripheral」として識別される)を伴うグループ会話に従事する。そのような通信シナリオでは、周辺デバイスをターゲットとする符号化された命令(たとえば、「T01」、これは「Run diagnostic test 1.」を意味する)に加えて、サポートサーバは、符号化された命令のコンテンツに基づきインスタントメッセージ(たとえば、「@Peripheral: Run diagnostic test 1.」を意味する)も準備し、それにより、インスタントメッセージは、ソーシャルネットワーキングプラットフォームを介してユーザに送信され、現在のチャットセッションの会話ログに表示され得る。インスタントメッセージは、サポートサーバから発信され、周辺デバイスをターゲットとするインスタントメッセージとして会話ログ中に出現する。
いくつかの実施形態では、メッセージの流れは次の通りである。
(1)「Support」、「User」、および「Peripheral」を伴うグループチャットセッションでは、サポートサーバは、周辺デバイス118をターゲットとする符号化された命令を開始する。サポートサーバは、通信サーバによる使用のため符号化された命令のインスタントメッセージバージョンも生成する。サポートサーバは、通信サーバに、両方とも周辺デバイスをターゲットとする、符号化された命令を送信し(1-1)、インスタントメッセージを送信する(1-2)。
(2)通信サーバは、符号化された命令およびインスタントメッセージをサポートサーバから受信する。通信サーバは、符号化された命令をユーザデバイスに、周辺デバイスをターゲットとする符号化されたメッセージとして転送する(2-1)。通信サーバは、また、インスタントメッセージをユーザデバイスに、符号化されたメッセージの人間が読み取れる翻訳結果として転送する(2-1)。
(3)ユーザデバイスは、符号化された命令およびインスタントメッセージを通信サーバから受信する。ユーザデバイスは、符号化された命令を周辺デバイスに送信する(3-1)。ユーザデバイスは、インスタントメッセージをユーザに対して、現在のチャットセッションの会話ログ中に「Support」から「Peripheral」へのメッセージとして表示する(3-2)。
いくつかの実施形態では、サポートサーバは、ユーザの参加と無関係に周辺デバイスと通信することができる。そのような場合、インスタントメッセージが準備され、ユーザに送信される必要はなく、符号化された命令のみが、通信サーバおよびユーザデバイスを介して周辺デバイスに送信される。
図2Pは、周辺デバイス116がソーシャルネットワーキングプラットフォームの上でサポートサーバ116をターゲットとする符号化されたメッセージ(たとえば、「R01」、これは「Diagnostic Test 01 has completed normally.」を意味する)を開始する例示的な通信シナリオを示している。この通信シナリオでは、ユーザは、少なくともサポートサーバ(「Support」として識別される)、ユーザ自身(「User」として識別される)、および周辺デバイス(「Peripheral」として識別される)を伴うグループ会話に従事する。そのような通信シナリオでは、サポートサーバがそれ自体をターゲットとする符号化された命令を受信したときに、サポートサーバは、符号化されたメッセージのコンテンツに基づきインスタントメッセージも準備し、それにより、インスタントメッセージは、ソーシャルネットワーキングプラットフォームを介してユーザに送信され、現在のチャットセッションの会話ログに表示され得る。インスタントメッセージは、「Peripheral」から「Support」へのインスタントメッセージとして会話ログ中に出現する。
いくつかの実施形態では、メッセージの流れは次の通りである。
(1)「Support」、「User」、および「Peripheral」を伴うグループチャットセッションでは、周辺デバイスは、サポートサーバ116をターゲットとする符号化されたメッセージを開始する。周辺デバイスは、サポートサーバをターゲットとする符号化されたメッセージをユーザデバイスに最初に送信する。
(2)ユーザデバイスは、周辺デバイスから符号化されたメッセージを受信し、それを通信サーバに転送する。
(3)通信サーバは、ユーザデバイスからサポートサーバをターゲットとする符号化されたメッセージを受信する。通信サーバは、符号化されたメッセージをサポートサーバに転送する。
(4)サポートサーバは、符号化されたメッセージを受信し、しかるべく活動する(たとえば、記録を更新する、次の命令を準備する、またはそれを無視する)。サポートサーバは、符号化されたメッセージのコンテンツに基づき人間が読み取れるインスタントメッセージも準備する。人間が読み取れるインスタントメッセージは、周辺デバイスから発信され、サポートサーバをターゲットとするメッセージとしてユーザデバイス上に示される。サポートサーバは、サポートサーバをターゲットとするインスタントメッセージを通信サーバに送信する。
(5)通信サーバは、ユーザデバイスにサポートサーバをターゲットとするインスタントメッセージを送信する。
(6)ユーザデバイスは、サポートサーバをターゲットとするインスタントメッセージを受信し、現在のチャットセッションの会話ログにインスタントメッセージを表示する。インスタントメッセージは、「Peripheral」から「Support」に発信するメッセージとして表示される。
いくつかの実施形態では、サポートサーバは、ユーザの参加と無関係に周辺デバイスと通信することができる。そのような場合、インスタントメッセージが準備され、ユーザに送信される必要はない。
図2Qは、2つまたはそれ以上の周辺デバイス(たとえば、周辺デバイス118-aおよび118-b)がユーザデバイス104に接続されている例示的な通信シナリオを示している。周辺デバイス118-aは、「Peripheral A」としてユーザのアカウントの下に登録され、周辺デバイス118-bは、「Peripheral B」としてユーザのアカウントの下に登録される。2つの周辺デバイスは、同じ種類であることも異なる種類であることもあり得る。この例では、両方の周辺デバイスが、たとえば、それらが同じメーカーを有しているか、または同じもしくは関係するネイティブメッセージフォーマットを共有しているので、同じサポートサーバ116を有する。たとえば、周辺デバイス118-aは、クライメートコントロールデバイスであってよく、周辺デバイス118-bは、同じメーカーによって製作されたエネルギー監視デバイスであってよい。この例では、周辺デバイス118-bは、ソーシャルネットワーキングプラットフォームを通じて周辺デバイス118-aにアクセスするか、またはコントロールするために符号化された命令を送信する。この例では、少なくともユーザ(「User」として識別される)、周辺デバイス118-a(「Peripheral A」として識別される)、および周辺デバイス118-b(「Peripheral B」として識別される)が、グループチャットセッションに関与している。この例では、周辺デバイス118-aは、周辺デバイスAとも称され、周辺デバイス118-bは、周辺デバイスBとも称される。
この例示的なシナリオでは、メッセージの流れは次の通りである。
(1)周辺デバイスBは、周辺デバイスAをターゲットとする符号化されたメッセージ(たとえば、「QR0111032」、これは「Energy use has reached a preset limit, initiate energy saving mode.」を意味する)を生成する。周辺デバイスBは、周辺デバイスAをターゲットとする符号化されたメッセージをユーザデバイス104に送信する。
(2)ユーザデバイスは、周辺デバイスAをターゲットとする符号化されたメッセージを受信し、それを通信サーバ112に転送する。
(3)通信サーバ112は、周辺デバイスAをターゲットとする符号化されたメッセージを受信し、それをサポートサーバ116に転送する。
(4)サポートサーバは、周辺デバイスAをターゲットとする符号化されたメッセージを受信し、周辺デバイスAのフォーマット要求条件に従って受信された符号化されたメッセージを周辺デバイスAをターゲットとする別の符号化されたメッセージに翻訳する。この翻訳は、ソース周辺デバイス(たとえば、周辺デバイスB)およびターゲット周辺デバイス(たとえば、周辺デバイスA)が同じメッセージフォーマットを使用している場合には必要でない。サポートサーバは、周辺デバイスAをターゲットとする翻訳され符号化されたメッセージを通信サーバに送信する(4-1)。サポートサーバは、また、周辺デバイスAをターゲットとする受信され符号化されたメッセージを周辺デバイスAをターゲットとする人間が読み取れるインスタントメッセージに翻訳する。サポートサーバは、また、周辺デバイスAをターゲットとする翻訳されたインスタントメッセージを通信サーバに送信する(4-2)。
(5)通信サーバは、サポートサーバから周辺デバイスAをターゲットとする符号化されたメッセージを受信し、それをユーザデバイスに転送する(5-1)。通信サーバは、また、サポートサーバから周辺デバイスAをターゲットとする翻訳されたインスタントメッセージを受信し、それをユーザデバイスに転送する(5-2)。
(6)ユーザデバイスは、周辺デバイスAをターゲットとする符号化されたメッセージを受信し、それを周辺デバイスAに送信する(6-1)。次いで、周辺デバイスAは、受信された符号化されたメッセージに従って活動する、たとえば、省エネモードに切り替える。ユーザデバイスは、また、周辺デバイスAをターゲットとするインスタントメッセージを現在のチャットセッションの会話ログに表示し、インスタントメッセージは、「Peripheral B」から「Peripheral A」へのメッセージとして表示される。
いくつかの実施形態では、ユーザは、登録されている周辺デバイスが別の登録されている周辺デバイスのコントロールおよび/またはアクセスを行うことができるコントロール階層を確立し得る。いくつかの実施形態では、2つまたはそれ以上の登録された周辺デバイスを同じグループチャットセッションに含めることによって、ユーザは、各周辺デバイスが同じグループチャット内で他の周辺デバイスの各々と通信することを可能にする許可を与えたとみなされる。いくつかの実施形態では、既定のコントロール階層は、サポートサーバがサポートする異なる種類の周辺デバイスのサポートサーバによって実現される。
図2Rは、2人またはそれ以上のユーザ(たとえば、それぞれソーシャルネットワークアイデンティティ「User A」および「User B」を有する)が、そのそれぞれのユーザデバイス(たとえば、「ユーザデバイスA」とも称される、ユーザデバイス104a、および「ユーザデバイスB」とも称される、ユーザデバイス104b)を通じて同じ通信サーバにログオンする例示的な通信シナリオを示している。周辺デバイス118-a(この例では周辺デバイスAとも称される)は、ユーザAのアカウントの下で「Peripheral A」として登録されている。この例では、少なくとも「User A」、「Peripheral A」、および「User B」は、同じグループチャットセッションに関与している。この例示的なシナリオでは、User Bは、ソーシャルネットワーキングプラットフォームの上で周辺デバイスA(たとえば、ゲーム機)にアクセスし、コントロールするためにインスタントメッセージ(たとえば、「Turn off game after 20 minutes.」)を開始する。このインスタントメッセージは、サポートサーバによって周辺デバイスAに対する符号化された命令に翻訳され、符号化された命令は、通信サーバおよびユーザデバイスAを通じて周辺デバイスに届く。通信サーバは、また、オリジナルのインスタントメッセージをユーザデバイスに、周辺デバイスAをターゲットとするインスタントメッセージとして送信する。周辺デバイスAをターゲットとするオリジナルのインスタントメッセージは、「User B」から「Peripheral A」へのメッセージとして現在のチャットセッションの会話ログ中に表示される。
この例示的なシナリオでは、メッセージの流れは次の通りである。
(1)ユーザBは、ユーザデバイスB上に表示されているグループチャットセッションの会話インターフェースに周辺デバイスAをターゲットとするインスタントメッセージ(たとえば、「@Peripheral A: Exit game after 20 minutes.」)を入力する。
(2)ユーザデバイスBは、周辺デバイスAをターゲットとするインスタントメッセージを通信サーバに送信する。
(3)通信サーバは、周辺デバイスAをターゲットとするインスタントメッセージを受信し、それをサポートサーバ116に転送する。
(4)サポートサーバ116は、周辺デバイスAをターゲットとするインスタントメッセージを受信し、それを周辺デバイスAをターゲットとする符号化された命令に翻訳する。サポートサーバは、周辺デバイスAをターゲットとする符号化された命令を通信サーバに送信する。
(5)通信サーバは、周辺デバイスAをターゲットとする符号化されたメッセージを受信し、それをユーザデバイスAに転送する(5-1)。通信サーバは、また、周辺デバイスAをターゲットとするオリジナルのインスタントメッセージをユーザデバイスAに転送する(5-2)。
(6)ユーザデバイスAは、周辺デバイスAをターゲットとする符号化されたメッセージを受信し、それを周辺デバイスAに送信する(6-1)。次いで、周辺デバイスAは、受信された符号化されたメッセージに従って活動する、たとえば、20分後にゲームを終了する。ユーザデバイスは、周辺デバイスAをターゲットとするオリジナルのインスタントメッセージを受信し、現在のチャットセッションの会話ログに周辺デバイスAをターゲットとするインスタントメッセージを表示し(6-2)、インスタントメッセージは、「User B」から「Peripheral A」へのメッセージとして表示される。
いくつかの実施形態では、ユーザは、自分のアカウントの下に登録された周辺デバイスのサブセットまたはすべての機能のアクセスおよび/またはコントロールを共有することができる。コントロールおよび/またはアクセスのこの共有は、チャット毎に、または進行中になされ得る。いくつかの実施形態では、別のユーザを登録された周辺デバイスを伴う同じグループチャットセッションに含めることによって、ユーザは、他のユーザが周辺デバイスと通信することを可能にする許可を与えたとみなされる。これは、ペアレンタルコントロールコンテキストにおいて適用可能であるものとしてよく、ユーザBは、周辺デバイスAのコントロールパーティである。
図2Sは、2人またはそれ以上のユーザ(たとえば、それぞれソーシャルネットワークアイデンティティ「User A」および「User B」を有する)が、そのそれぞれのユーザデバイス(たとえば、「ユーザデバイスA」とも称される、ユーザデバイス104a、および「ユーザデバイスB」とも称される、ユーザデバイス104b)を通じて同じ通信サーバにログオンする例示的な通信シナリオを示している。周辺デバイス118-a(この例では周辺デバイスAとも称される)は、ユーザAのアカウントの下で「Peripheral A」として登録されている。この例では、少なくとも「User A」、「Peripheral A」、および「User B」は、同じグループチャットセッションに関与している。この例示的なシナリオでは、周辺デバイスAは、グループチャットセッションにおいてユーザBをターゲットとする符号化されたメッセージ(たとえば、「H120/L80/HR80/T97」、これは「Blood Pressure 120/80, Heart Rate 80 per minute, and Temperature 97degrees Fahrenheit.」を意味する)を開始する。符号化されたメッセージは、サポートサーバによってユーザBをターゲットとする人間が読み取れるインスタントメッセージに翻訳され、翻訳されたインスタントメッセージは、通信サーバを通じてユーザデバイスAおよびBに届く。ユーザBをターゲットとする翻訳されたインスタントメッセージは、「Peripheral A」から「User B」へのメッセージ(または全体として「Peripheral A」から会話グループへのメッセージ)として現在のチャットセッションの会話ログ中に表示される。
この例示的なシナリオでは、メッセージの流れは次の通りである。
(1)周辺デバイスAは、ユーザB(またはグループ全体)をターゲットとする符号化されたメッセージ(たとえば、「H120/L80/HR80/T97」、これは「Blood Pressure 120/80, Heart Rate 80 per minute, and Temperature 97degrees Fahrenheit.」を意味する)を生成する。周辺デバイスAは、符号化されたメッセージをユーザデバイスAに送信する。
(2)ユーザデバイスAは、ユーザB(またはグループ全体)をターゲットとする符号化されたメッセージを通信サーバに送信する。
(3)通信サーバは、ユーザB(またはグループ全体)をターゲットとする符号化されたメッセージを受信し、それをサポートサーバ116に転送する。
(4)サポートサーバ116は、ユーザB(またはグループ全体)をターゲットとする符号化されたメッセージを受信し、それをユーザB(またはグループ全体)をターゲットとするインスタントメッセージ(たとえば、「User A's blood Pressure is 120/80, heart rate is 80 per minute, and body temperature is 97degrees Fahrenheit.」)に翻訳する。サポートサーバは、ユーザB(またはグループ全体)をターゲットとする翻訳されたインスタントメッセージを通信サーバに送信する。
(5)通信サーバは、ユーザB(またはグループ全体)をターゲットとするインスタントメッセージを受信し、それをユーザデバイスAに転送する(5-1)。通信サーバは、また、ユーザB(またはグループ全体)をターゲットとするインスタントメッセージをユーザデバイスBに転送する(5-2)。
(6)ユーザデバイスAは、ユーザB(またはグループ全体)をターゲットとするインスタントメッセージを受信し、それをユーザAに対して、現在のチャットセッションの会話ログに表示し(6-1)、インスタントメッセージは、「Peripheral A」から「User B」(またはグループ全体)へのメッセージとして表示される。ユーザデバイスBは、ユーザB(またはグループ全体)をターゲットとするインスタントメッセージを受信し、それをユーザBに対して、現在のチャットセッションの会話ログに表示し(6-2)、インスタントメッセージは、「Peripheral A」から「User B」(またはグループ全体)へのメッセージとして表示される。
図2Tは、2人またはそれ以上のユーザ(たとえば、それぞれソーシャルネットワークアイデンティティ「User A」および「User B」を有する)が、そのそれぞれのユーザデバイス(たとえば、「ユーザデバイスA」とも称される、ユーザデバイス104a、および「ユーザデバイスB」とも称される、ユーザデバイス104b)を通じて同じ通信サーバにログオンする例示的な通信シナリオを示している。周辺デバイス118-a(この例では周辺デバイスAとも称される)は、ユーザAのアカウントの下で「Peripheral A」として登録されている。周辺デバイス118-b(この例では周辺デバイスBとも称される)は、ユーザBのアカウントの下で「Peripheral B」として登録されている。この例では、少なくとも「User A」、「Peripheral A」、「User B」、および「Peripheral B」は、同じグループチャットセッションに関与している。この例示的なシナリオでは、周辺デバイスBは、グループチャットセッションにおいて周辺デバイスAをターゲットとする符号化されたメッセージ(たとえば、「@Peripheral A: XT1」、これは「@Peripheral A: Bedroom light is on; Turn off down-stair heater.」を意味する)を開始する。符号化されたメッセージは、サポートサーバによってPeripheral Aをターゲットとする人間が読み取れるインスタントメッセージに翻訳され、翻訳されたインスタントメッセージは、通信サーバを通じてユーザデバイスAおよびユーザデバイスBに届く。周辺デバイスAをターゲットとする翻訳されたインスタントメッセージは、ユーザデバイスAとユーザデバイスBの両方において、たとえば、「Peripheral B」から「Peripheral A」へのメッセージとして、現在のチャットセッションの会話ログ中に表示される。サポートサーバは、また、周辺デバイスAをターゲットとするオリジナルの符号化されたメッセージを周辺デバイスAに対して受け入れ可能であるフォーマットの翻訳され符号化されたメッセージに翻訳する。周辺デバイスAをターゲットとする翻訳され符号化されたメッセージは、通信サーバおよびユーザデバイスAを通じて周辺デバイスAに届く。
この例示的なシナリオでは、メッセージの流れは次の通りである。
(1)周辺デバイスBは、周辺デバイスAをターゲットとする符号化されたメッセージ(たとえば、「@Peripheral A: XT1」、これは「@Peripheral A: Bedroom light is on; Turn off down-stair heater.」を意味する)を生成する。周辺デバイスBは、符号化されたメッセージをユーザデバイスBに送信する。
(2)ユーザデバイスBは、周辺デバイスAをターゲットとする符号化されたメッセージを通信サーバに送信する。
(3)通信サーバは、Peripheral Aをターゲットとする符号化されたメッセージを受信し、それをサポートサーバ116に転送する。
(4)サポートサーバ116は、Peripheral Aをターゲットとする符号化されたメッセージを受信し、それを周辺デバイスAに対して受け入れ可能なフォーマットの周辺デバイスAをターゲットとする符号化されたメッセージに翻訳する。サポートサーバ116は、周辺デバイスAをターゲットとする翻訳され符号化されたメッセージを通信サーバに送信する(4-1)。サポートサーバは、また、周辺デバイスAをターゲットとするオリジナルの符号化されたメッセージを周辺デバイスAをターゲットとするインスタントメッセージ(たとえば、「@Peripheral A: Bedroom light is on; Turn off down-stair heater」)に翻訳する。サポートサーバは、周辺デバイスAをターゲットとする翻訳されたインスタントメッセージを通信サーバに送信する(4-2)。
(5)通信サーバは、周辺デバイスAをターゲットとするインスタントメッセージ、および周辺デバイスAをターゲットとする翻訳され符号化されたメッセージを受信する。通信サーバは、周辺デバイスAをターゲットとする翻訳され符号化されたメッセージをユーザデバイスAに転送する(5-1)。通信サーバは、また、周辺デバイスAをターゲットとする翻訳されたインスタントメッセージをユーザデバイスBに転送する(5-2)。通信サーバは、また、周辺デバイスAをターゲットとする翻訳されたインスタントメッセージをユーザデバイスAに転送する(5-3)。
(6)ユーザデバイスAは、周辺デバイスAをターゲットとする翻訳され符号化されたメッセージを受信し、それを周辺デバイスAに送信する(6-1)。ユーザデバイスAは、また、周辺デバイスAをターゲットとする翻訳されたインスタントメッセージを受信し、それをユーザAに対して、現在のチャットセッションの会話ログに表示し(6-3)、インスタントメッセージは、「Peripheral B」から「Peripheral A」へのメッセージとして表示される。ユーザデバイスBは、また、周辺デバイスAをターゲットとするインスタントメッセージを受信し、それをユーザBに対して、現在のチャットセッションの会話ログに表示し(6-2)、インスタントメッセージは、「Peripheral B」から「Peripheral A」へのメッセージとして表示される。
通信構成の他の変更形態も可能であり、本明細書に示されている例から派生させることができる。
図3A〜図3Cは、いくつかの実施形態によりソーシャルネットワーキングプラットフォームの上で周辺デバイス(たとえば、周辺デバイス200)のコントロールをセットアップするための例示的なプロセス300に対する流れ図である。例示的なプロセス300は、ソーシャルネットワーキングプラットフォーム上のユーザのユーザアカウントの下で動作しているソーシャルネットワーキングクライアントアプリケーションを通じて周辺デバイスに接続されるべきユーザデバイス(たとえば、ユーザデバイス118または202)上で実行される。プロセス300の様々な態様が、図1Bおよび図2A〜図2Tならびに付属の説明において解説されている。
少なくともいくつかの実施形態では、この方法は、1つもしくは複数のプロセッサおよびメモリ、または電子デバイスの1つもしくは複数のコンポーネント(たとえば、図1Bのソーシャルネットワーキングクライアントアプリケーション108)を備えるユーザデバイス(たとえば、ユーザデバイス104または202)によって実行される。いくつかの実施形態では、この方法は、非一時的なコンピュータ可読記憶媒体に記憶され、電子デバイスの1つまたは複数のプロセッサ(たとえば、ユーザデバイス104のプロセッサ)によって実行される、命令によって制御される。
いくつかの実施形態では、1つまたは複数のプロセッサおよびメモリを有するユーザデバイスにおいて、ユーザデバイスは、ソーシャルネットワーキングプラットフォームのソーシャルネットワーキングクライアントアプリケーションを実行する(302)。ソーシャルネットワーキングクライアントアプリケーションは、ソーシャルネットワーキングプラットフォームの通信サーバと通信し、ソーシャルネットワーキングプラットフォームのユーザに利用可能な通信機能(たとえば、ログイン、ユーザ登録、連絡先関係を確立すること、グループを作成し、参加すること、他者に従うこと、フォロワーにメッセージをパブリッシュすること、一対一またはグループチャットセッションを作成すること、様々なフォーマットのメッセージを送受信すること、チャットメッセージまたはカスタマイズされたコントロールを通じて登録されている周辺デバイスをコントロールしアクセスすることなど)を提供する。
いくつかの実施形態では、ユーザデバイスは、ソーシャルネットワーキングクライアントアプリケーションを通じて、それぞれの種類の周辺デバイスに対するサポートサービスプロバイダを識別する入力を受信する(304)。たとえば、いくつかの実施形態では、それぞれの種類の周辺デバイスに対するサポートサービスプロバイダを識別する入力を受信するステップは、バーコードスキャナを介して、それぞれの種類の周辺デバイスに対するサポートサービスプロバイダに関連付けられているバーコードをスキャンするステップをさらに含む(306)。これは、図2A〜図2Dおよび付属の説明において解説されている。いくつかの実施形態では、ユーザは、適宜、テキスト入力として周辺デバイスまたはそのサポートサービスプロバイダの一意的なデバイス識別子(たとえば、デバイスのシリアル番号)を手動で入力する。
いくつかの実施形態では、ユーザデバイスは、それぞれの種類の周辺デバイスに対するサポートサービスプロバイダを識別する入力を受信したことに応答して、サポートサービスプロバイダのパブリックソーシャルネットワークアイデンティティをユーザデバイスに現在関連付けられているユーザアカウントの連絡先として登録するオペレーションと、ユーザデバイスの周辺領域内を探索して、それぞれの種類の周辺デバイスから周辺デバイスを特定するオペレーションとを実行する(308)。いくつかの実施形態では、周辺デバイスのサポートサービスプロバイダを識別するための情報を含む入力が、ユーザデバイスに提供されたときに、ユーザデバイスは、その情報を通信サーバに送信し、通信サーバは、その周辺デバイスに対するサポートサーバを識別し、サポートサーバに対するソーシャルネットワークアイデンティティを確立する。いくつかの実施形態では、機器のソーシャルネットワークアイデンティティは、この時点で他のユーザによって通信サーバにおいてすでに確立されている可能性があり、通信サーバは、単に、現在の周辺デバイスをサポートサーバのソーシャルネットワークアイデンティティに関連付けるだけである。いくつかの実施形態では、サポートサーバの個別のインスタンスが、特定の周辺デバイスにサービスを提供するように生成され、その個別のインスタンスは、それぞれの一意的なソーシャルネットワークアイデンティティを割り当てられる。通信サーバは、サポートサービスプロバイダのパブリックソーシャルネットワークアイデンティティをユーザデバイスおよび周辺デバイスに現在関連付けられているユーザアカウントの連絡先として登録する。通信サーバは、サポートサービスプロバイダに対するソーシャルネットワーク連絡先の名前をユーザデバイスに提供し、次いで、それをユーザに対して表示する。これは、図2Eに示されている(たとえば、ソーシャルネットワーク連絡先210「Q-Support」は、周辺デバイスQ-Bandのサポートサーバに割り当てられているソーシャルネットワークアイデンティティである)。いくつかの実施形態では、ユーザは、特に、サポートサーバをソーシャルネットワーク連絡先として追加することを要求し、ユーザデバイスは、その要求を通信サーバに転送する。いくつかの実施形態では、ユーザデバイスは、また、そのユーザアカウントをソーシャルネットワーキングプラットフォーム上のサポートサービスプロバイダの連絡先として登録する要求を送信する(318)。たとえば、周辺デバイスに対してサポートサービスを提供するサポートサーバ側では、サポートサーバの連絡先リストは、ユーザおよび周辺デバイスのソーシャルネットワークアイデンティティも含む。
いくつかの実施形態では、周辺デバイスに対するスキャンが、周辺デバイスがソーシャルネットワークプラットフォームの上でアクセスおよびコントロールを可能にするように構成されていることをユーザデバイスに指示する特別なプロトコルを使用して実行される。たとえば、Bluetooth(登録商標)プロトコルを介して接続が確立されるべきである場合、デバイス発見メッセージにおいて、周辺デバイスはソーシャルネットワーキングクライアントアプリケーションを事前定義されたメインサービス識別子(UUID)をブロードキャストし、それにより、ユーザデバイス上で実行されているソーシャルネットワーキングクライアントアプリケーションは、それが周辺デバイスからデバイス発見メッセージを受信したときに周辺デバイスを互換性のあるデバイスとして認識することができる。接続プロトコル(Bluetooth(登録商標)またはBluetooth(登録商標) Low Energy)および他の有線もしくはワイヤレスプロトコルのさらなる詳細は、本開示の後の方で説明される。
いくつかの実施形態では、ユーザデバイスの周辺領域内を探索して、それぞれの種類の周辺デバイスから周辺デバイスを特定するステップは、ユーザデバイスの周辺部領域内でそれぞれの周辺デバイスからデバイス発見メッセージを受信するステップと、デバイス発見メッセージがソーシャルネットワーキングクライアントアプリケーションによって提供されるメインサービスを表す所定のサービス識別子を含むかどうかを決定するステップと、デバイス発見メッセージが所定のサービス識別子を含むと決定した後、ユーザデバイスと周辺デバイスとの間の通信チャネルを確立するステップとをさらに含む(310)。これは、図2Fおよび付属の説明において解説されている。いくつかの実施形態では、通信チャネルは、ソーシャルネットワーキングクライアントアプリケーションに関連付けられている所定の通信プロトコル(たとえば、古典的なBluetooth(登録商標)または本明細書で提示されている開示に従って修正されたBLEプロトコル)に従うワイヤレス通信チャネルである。
いくつかの実施形態では、ユーザデバイスは、周辺デバイスに対するソーシャルネットワークアイデンティティを確立する要求を送信する(314)。たとえば、いくつかの実施形態では、ユーザデバイスがユーザデバイス上でアクティブになっているユーザアカウントにバインドされている周辺デバイスを見つけた後、ユーザデバイスは、周辺デバイスに対するそれぞれのソーシャルネットワーキングアイデンティティを取得する要求を通信サーバに送信する。いくつかの実施形態では、ユーザデバイスがユーザデバイス上でアクティブになっているユーザアカウントに周辺デバイスを正常にバインドできた後、ユーザデバイスは、周辺デバイスに対するそれぞれのソーシャルネットワーキングアイデンティティを取得する要求を通信サーバに送信する。いくつかの実施形態では、周辺デバイスに対するそれぞれのソーシャルネットワーキングアイデンティティは、周辺デバイスについて生成されたサポートサーバの一意的なインスタンスと同じである。いくつかの実施形態では、周辺デバイスに対するソーシャルネットワーキングアイデンティティの確立に成功した後、ユーザデバイスは、周辺デバイスをソーシャルネットワーキングクライアントアプリケーションのユーザインターフェースにおいてユーザアカウントのソーシャルネットワーク連絡先として提示する。これは、図2Eおよび付属の説明において解説されている。
いくつかの実施形態では、ユーザデバイスは、そのユーザアカウントをそれぞれの種類の周辺デバイスに対するサポートサービスプロバイダに関連付けられているオンラインコミュニティのそれぞれのメンバーとして登録する要求を送信する(320)。いくつかの実施形態では、ユーザアカウントをオンラインコミュニティのそれぞれのメンバーとして登録することに成功した後、ユーザデバイスは、オンラインコミュニティをソーシャルネットワーキングクライアントアプリケーションのユーザインターフェースにおいてユーザアカウントのソーシャルネットワークグループとして提示する。たとえば、いくつかの実施形態では、周辺デバイスのサポートサーバは、サポートサーバがサポートする種類の周辺デバイスを所有する多くのユーザを含むようにオンラインコミュニティを確立する。このオンラインコミュニティ内で、サポートサーバは、通知、メッセージ、ヒント、などをオンラインコミュニティに参加することに同意した(たとえば、それがサポートしている周辺デバイスの種類に対するサポートサーバのパブリックソーシャルネットワークアイデンティティに「従う」ことを選択した)各ユーザにブロードキャストすることができる。それに加えて、いくつかの実施形態では、オンラインコミュニティのメンバーは、また、互いから、またはオンラインコミュニティ全体からメッセージの投稿および受信も行える。いくつかの実施形態では、オンラインコミュニティは、適宜、サポートサーバがサポートする登録された周辺デバイスのそれぞれのソーシャルネットワーキングアイデンティティを備え、それにより、ユーザは、適宜、本明細書で説明されている実施形態に従って他者が自周辺デバイスにアクセスし、コントロールすることを可能にする。
いくつかの実施形態では、ユーザデバイスは、少なくともユーザアカウントのユーザおよび周辺デバイスを伴うグループチャットセッションの会話インターフェース内にサポートサービスプロバイダのサーバから発信されたインスタントメッセージを表示する(324)。いくつかの実施形態では、インスタントメッセージは、周辺デバイスをターゲットとする符号化された命令を記憶する。いくつかの実施形態では、インスタントメッセージは、会話インターフェース内にサポートサーバのパブリックソーシャルネットワークアイデンティティから発信された、「An instruction for resetting your B-Band has been sent to Q-Band" or "@Q-Band, Reset the system」などのメッセージとして出現する。いくつかの実施形態では、インスタントメッセージは、会話インターフェース内に周辺デバイスと異なる第2の周辺デバイスから発信されたメッセージとして出現する。いくつかの実施形態では、インスタントメッセージは、周辺デバイスから発信された符号化されたメッセージを記憶する。いくつかの実施形態では、インスタントメッセージは、周辺デバイスのソーシャルネットワークアイデンティティから発信され、サポートサービスプロバイダのパブリックソーシャルネットワークアイデンティティをターゲットとする、メッセージとして会話インターフェース内に出現する。いくつかの実施形態では、インスタントメッセージは、周辺デバイスのソーシャルネットワークアイデンティティから発信され、ユーザアカウントのそれぞれのソーシャルネットワークアイデンティティをターゲットとする、メッセージとして会話インターフェース内に出現する。いくつかの実施形態では、インスタントメッセージは、周辺デバイスのソーシャルネットワークアイデンティティから発信され、周辺デバイスと異なる第2の周辺デバイスのそれぞれのソーシャルネットワークアイデンティティをターゲットとする、メッセージとして会話インターフェース内に出現する。
この例示的なプロセスの特徴およびステップは、本開示の他の部分で説明されている特徴およびステップと組み合わされるものとしてよく、これらの他の特徴およびステップは、簡潔にするためここで繰り返されない。
図3D〜図3Eは、いくつかの実施形態による周辺デバイス(たとえば、周辺デバイス200)のアクセスおよびコントロールをセットアップするための例示的なプロセス350に対する流れ図である。例示的なプロセス350は、ソーシャルネットワーキングプラットフォーム上のユーザのユーザアカウントの下で動作しているソーシャルネットワーキングクライアントアプリケーションを通じて周辺デバイスに接続されるべきユーザデバイス(たとえば、ユーザデバイス118または202)上で実行される。プロセス300の様々な態様が、図1Bおよび図2A〜図2Tならびに付属の説明において解説されている。プロセス350では、周辺デバイスを識別する(たとえば、周辺デバイスのバーコードをスキャンする)入力は、ユーザデバイスが周辺デバイスに対するサポートサーバのソーシャルネットワークアイデンティティと無関係に、周辺デバイスに対するソーシャルネットワークアイデンティティを要求することを引き起こす。いくつかの実施形態では、周辺デバイスのソーシャルネットアイデンティティおよびサポートサーバのソーシャルネットワークアイデンティティは、両方とも、ユーザの連絡先リストに自動的に追加される。いくつかの実施形態では、周辺デバイスを識別する入力は、周辺デバイスがユーザアカウントの連絡先として追加されることを引き起こすのみであり、ユーザは、手動で、サポートサーバを連絡先として追加することができる。いくつかの実施形態では、サポートサーバは、ユーザが従うことができるパブリックソーシャルネットワークアイデンティティを提供せず、その代わりに、サポートサーバは、それがサポートする周辺デバイスのソーシャルネットワークアイデンティティを通じて通信をユーザに送信することができる。
少なくともいくつかの実施形態では、この方法は、1つもしくは複数のプロセッサおよびメモリ、または電子デバイスの1つもしくは複数のコンポーネント(たとえば、図1Bのソーシャルネットワーキングクライアントアプリケーション108)を備えるユーザデバイス(たとえば、ユーザデバイス104または202)によって実行される。いくつかの実施形態では、この方法は、非一時的なコンピュータ可読記憶媒体に記憶され、電子デバイスの1つまたは複数のプロセッサ(たとえば、ユーザデバイス104のプロセッサ)によって実行される、命令によって制御される。
いくつかの実施形態では、1つまたは複数のプロセッサおよびメモリを有するユーザデバイスにおいて、ユーザデバイスは、ユーザデバイス上でソーシャルネットワーキングプラットフォームのソーシャルネットワーキングクライアントアプリケーションを実行する(352)。ソーシャルネットワーキングクライアントアプリケーションは、ソーシャルネットワーキングプラットフォームの通信サーバと通信し、ソーシャルネットワーキングプラットフォームのユーザに利用可能な通信機能(たとえば、ログイン、ユーザ登録、連絡先関係を確立すること、グループを作成し、参加すること、他者に従うこと、フォロワーにメッセージをパブリッシュすること、一対一またはグループチャットセッションを作成すること、様々なフォーマットのメッセージを送受信すること、チャットメッセージまたはカスタマイズされたコントロールを通じて登録されている周辺デバイスをコントロールしアクセスすることなど)を提供する。
いくつかの実施形態では、ユーザデバイスは、ソーシャルネットワーキングクライアントアプリケーションを通じて、周辺デバイスを識別する入力を受信する(354)。いくつかの実施形態では、周辺デバイスを識別する入力を受信するステップは、バーコードスキャナを介して、周辺デバイスに関連付けられているバーコードをスキャンするステップをさらに含む(356)。これは、図2A〜図2Dおよび付属の説明において解説されている。いくつかの実施形態では、ユーザは、適宜、テキスト入力として周辺デバイスの一意的なデバイス識別子(たとえば、デバイスのシリアル番号)を手動で入力する。
いくつかの実施形態では、ユーザデバイスは、周辺デバイスを識別する入力を受信したことに応答して、周辺デバイスに対するソーシャルネットワーキングアイデンティティを確立する要求を送信するオペレーションと、周辺デバイスに対するソーシャルネットワーキングアイデンティティの確立に成功した後、周辺デバイスをソーシャルネットワーキングクライアントアプリケーションのユーザインターフェースにおいてユーザアカウントのソーシャルネットワーク連絡先として提示するオペレーションとを実行する(358)。これは、図2A〜図2Eに示されている。いくつかの実施形態では、ユーザデバイスは、周辺デバイスに対するソーシャルネットワークアイデンティティを確立する要求を送信する(314)。
いくつかの実施形態では、ユーザは、ユーザデバイスの周辺領域内を探索し(360)、登録されている周辺デバイスを特定する。いくつかの実施形態では、ユーザデバイスの周辺領域内を探索して周辺デバイスを特定するステップは、ユーザデバイスの周辺部領域内でそれぞれの周辺デバイスからデバイス発見メッセージを受信するステップと、デバイス発見メッセージがソーシャルネットワーキングクライアントアプリケーションによって提供されるメインサービスを表す所定のサービス識別子を含むかどうかを決定するステップと、デバイス発見メッセージが所定のサービス識別子を含むと決定した後、ユーザデバイスと周辺デバイスとの間の通信チャネルを確立するステップとをさらに含む(362)。これは、図2Fおよび付属の説明において解説されている。いくつかの実施形態では、通信チャネルは、ソーシャルネットワーキングクライアントアプリケーションに関連付けられている所定の通信プロトコル(たとえば、古典的なBluetooth(登録商標)または本明細書で提示されている開示に従って修正されたBLEプロトコル)に従うワイヤレス通信チャネルである(368)。
いくつかの実施形態では、ユーザデバイスは、そのユーザアカウントをソーシャルネットワーキングプラットフォーム上の周辺デバイスのサポートサービスプロバイダの連絡先として登録する要求を送信する(366)。いくつかの実施形態では、ユーザデバイスは、そのユーザアカウントを周辺デバイスに対するサポートサービスプロバイダに関連付けられているオンラインコミュニティのそれぞれのメンバーとして登録する要求を送信する(368)。いくつかの実施形態では、ユーザアカウントをオンラインコミュニティのそれぞれのメンバーとして登録することに成功した後、ユーザデバイスは、オンラインコミュニティをソーシャルネットワーキングクライアントアプリケーションのユーザインターフェースにおいてユーザアカウントのソーシャルネットワークグループとして提示する(370)。いくつかの実施形態では、ユーザデバイスは、周辺デバイスのサポートサービスプロバイダをユーザアカウントの連絡先として追加する要求を送信する(372)。たとえば、いくつかの実施形態では、周辺デバイスのサポートサーバは、サポートサーバがサポートする種類の周辺デバイスを所有する多くのユーザを含むようにオンラインコミュニティを確立する。このオンラインコミュニティ内で、サポートサーバは、通知、メッセージ、ヒント、などをオンラインコミュニティに参加することに同意した(たとえば、それがサポートしている周辺デバイスの種類に対するサポートサーバのパブリックソーシャルネットワークアイデンティティに「従う」ことを選択した)各ユーザにブロードキャストすることができる。それに加えて、いくつかの実施形態では、オンラインコミュニティのメンバーは、また、互いから、またはオンラインコミュニティ全体からメッセージの投稿および受信も行える。いくつかの実施形態では、オンラインコミュニティは、適宜、サポートサーバがサポートする登録された周辺デバイスのそれぞれのソーシャルネットワーキングアイデンティティを備え、それにより、ユーザは、適宜、本明細書で説明されている実施形態に従って他者が自周辺デバイスにアクセスし、コントロールすることを可能にする。
いくつかの実施形態では、ユーザデバイスは、少なくともユーザアカウントのユーザおよび周辺デバイスを伴うグループチャットセッションの会話インターフェース内にサポートサービスプロバイダのサーバから発信されたインスタントメッセージを表示する(374)。いくつかの実施形態では、インスタントメッセージは、周辺デバイスをターゲットとする符号化された命令を記憶する(376)。いくつかの実施形態では、インスタントメッセージは、会話インターフェース内にサポートサービスプロバイダのパブリックソーシャルネットワークアイデンティティから発信されたメッセージとして出現する。いくつかの実施形態では、インスタントメッセージは、会話インターフェース内に周辺デバイスと異なる第2の周辺デバイスから発信されたメッセージとして出現する。いくつかの実施形態では、インスタントメッセージは、周辺デバイスから発信された符号化されたメッセージを記憶する(378)。いくつかの実施形態では、インスタントメッセージは、周辺デバイスのソーシャルネットワークアイデンティティから発信され、サポートサービスプロバイダのパブリックソーシャルネットワークアイデンティティをターゲットとする、メッセージとして会話インターフェース内に出現する。いくつかの実施形態では、インスタントメッセージは、周辺デバイスのソーシャルネットワークアイデンティティから発信され、ユーザアカウントのそれぞれのソーシャルネットワークアイデンティティをターゲットとする、メッセージとして会話インターフェース内に出現する。いくつかの実施形態では、インスタントメッセージは、周辺デバイスのソーシャルネットワークアイデンティティから発信され、周辺デバイスと異なる第2の周辺デバイスのそれぞれのソーシャルネットワークアイデンティティをターゲットとする、メッセージとして会話インターフェース内に出現する。
この例示的なプロセスの特徴およびステップは、本開示の他の部分で説明されている特徴およびステップと組み合わされるものとしてよく、これらの他の特徴およびステップは、簡潔にするためここで繰り返されない。
図4A〜図4Dは、いくつかの実施形態によりソーシャルネットワーキングプラットフォームの上で周辺デバイスのアクセスおよびコントロールをそのサポートサービスプロバイダ(たとえば、サポートサービスプロバイダのサポートサーバ)を通じて提供するための例示的なプロセス400に対する流れ図である。
少なくともいくつかの実施形態では、この方法は、1つもしくは複数のプロセッサおよびメモリ、または電子デバイスの1つもしくは複数のコンポーネント(たとえば、ソーシャルネットワーキングサーバアプリケーションモジュール)を備える通信サーバ(たとえば、図1Bのソーシャルネットワーキングプラットフォームの通信サーバ112b)によって実行される。いくつかの実施形態では、この方法は、非一時的なコンピュータ可読記憶媒体に記憶され、電子デバイスの1つまたは複数のプロセッサ(たとえば、通信サーバ112bのプロセッサ)によって実行される、命令によって制御される。
図4Aに示されているように、いくつかの実施形態では、通信サーバは、サポートサービスプロバイダから、サポートサービスプロバイダによってサービスを提供されるべき周辺デバイスの種類を指定するサービス提供者登録要求を受信する(402)。サービス提供者登録要求に応答して、通信サーバは、サービス提供者登録要求に基づきサポートサービスプロバイダに対するパブリックソーシャルネットワークアイデンティティを確立する(404)。たとえば、サービス提供者登録は、その種類の周辺デバイスのメーカーがその種類の周辺デバイスを公売のためリリースする前に実行され得る。サービス提供者登録要求は、いくつかの実施形態では、図2Iに示されているアカウント登録プロセスの一部であってよい。
通信サーバは、第1のユーザから、第1のユーザによってコントロールされる第1の周辺デバイスを指定する第1の所有者登録要求を受信する(406)。たとえば、これは、図2A〜図2Hおよび図2Jならびに付属の説明に示されているデバイスバインドプロセスにおいて解説されている。いくつかの実施形態では、第1の周辺デバイスが、サービス提供者登録要求において指定された周辺デバイスの種類であると決定した後、通信サーバは、サポートサービスプロバイダのパブリックソーシャルネットワークアイデンティティと第1のユーザのそれぞれのソーシャルネットワークアイデンティティとの間のソーシャルネットワーク関係を確立する(408)。たとえば、通信サーバは、周辺デバイスの種類に対するサポートサーバ、周辺デバイス、および第1のユーザのソーシャルネットワークアイデンティティを互いのソーシャルネットワーク連絡先として関連付け、その関連付けに関して各々に通知する。いくつかの実施形態では、通信サーバは、第1の周辺デバイスをターゲットとする第1のそれぞれの通信メッセージ、および第1の周辺デバイスから発信された第2のそれぞれの通信メッセージを、第1のユーザのそれぞれのソーシャルネットワークアイデンティティとサポートサービスプロバイダの公開連絡先アイデンティティとの間のチャットセッションの会話インターフェースにおいてそれぞれのインスタントメッセージとして提供する(410)。たとえば、例示的な通信シナリオが、図2K〜図2Tおよび付属の説明で取り上げられている。
いくつかの実施形態では、通信サーバは、サポートサービスプロバイダから、第1の周辺デバイスを命令メッセージのターゲットとして識別する命令メッセージを受信する(412)。その命令メッセージを受信したことに応答して、通信サーバは、その命令メッセージを、第1のユーザデバイスを介して第1の周辺デバイスに転送する。命令メッセージは、周辺デバイスをターゲットとするサポートサーバによって生成される直接的な符号化された命令または別の命令の翻訳(たとえば、ユーザ、別の周辺デバイスからの命令)であってよい。
いくつかの実施形態では、命令メッセージを受信したことに応答して、通信サーバは、命令メッセージのコンテンツに基づき生成されたインスタントメッセージを取得し(416)、インスタントメッセージを第1のユーザデバイスに送信し、第1のユーザデバイスは、第1のユーザとサポートサービスプロバイダの公開連絡先アイデンティティとの間のチャットセッションの会話インターフェースにおいてインスタントメッセージをサポートサービスプロバイダの公開連絡先アイデンティティから第1のユーザへのメッセージとして提示する。たとえば、サポートサーバ「Q-Support」は、周辺デバイス「Q-Band」に対する符号化された命令を生成することができ、符号化された命令は、通信サーバおよび周辺デバイスに結合されたユーザデバイスを介して周辺デバイスに転送される。それに加えて、通信サーバは、サポートサーバからの命令のコンテンツに対応する人間が読み取れるインスタントメッセージを(たとえば、それをサポートサーバから受信するか、またはそれをローカルで生成するかのいずれかによって)取得する。
いくつかの実施形態では、命令メッセージのコンテンツに基づきインスタントメッセージを取得するステップは、サポートサービスプロバイダから命令メッセージの目的を記述した自然言語メッセージを受信するステップと、サポートサービスプロバイダのパブリックソーシャルネットワークアイデンティティを自然言語メッセージの送信者として、第1のユーザを自然言語メッセージの対象受信者として指定するステップとをさらに含む(418)。
いくつかの実施形態では、通信サーバは、第1のユーザデバイスを介して命令メッセージに対する、第1の周辺デバイスから発信された返信メッセージを受信し(420)、返信メッセージを受信したことに応答して、通信サーバは、第1の周辺デバイスから発信された返信メッセージをサポートサービスプロバイダに転送する(422)。たとえば、サポートサーバが符号化された命令を周辺デバイスに送信した後、周辺デバイスは、符号化された返信を提供することができる。たとえば、符号化された命令が、周辺デバイスが何らかの出力データを生成することである場合、符号化された返信は、符号化された命令を受信した後に周辺デバイスによって生成された出力データを含み得る。いくつかの実施形態では、返信メッセージをサポートサービスプロバイダに転送したことに応答して、通信サーバは、サポートサービスプロバイダから第2のインスタントメッセージを受信し(424)、第2のインスタントメッセージは、返信メッセージのコンテンツに基づきサポートサービスプロバイダによって生成されている。たとえば、要求された出力データを含む符号化されたメッセージを受信したサポートサーバは、それを、後でユーザに提示するために人間が読み取れる形態に翻訳する。通信サーバは、第2のインスタントメッセージを第1のユーザデバイスに転送し(426)、第1のユーザデバイスは、第1のユーザとサポートサービスプロバイダの公開連絡先アイデンティティとの間のチャットセッションの会話インターフェースにおいて第2のインスタントメッセージをサポートサービスプロバイダの公開連絡先アイデンティティから第1のユーザへのメッセージとして提示する。
たとえば、412〜426のステップは、Q-Supportがユーザ「Red207」の今日の健康データを出力するための命令をQ-Bandに送信し、Q-Bandは、健康データをQ-Supportに送信することによって応答する通信シナリオにおいて起こり得る。命令、および健康データを含む応答は両方とも、ユーザデバイスおよび通信サーバを通じて、サポートサーバQ-Supportと周辺デバイスQ-Bandとによって合意されたフォーマットで送信される。サポートサーバは、通信サーバが符号化された命令および応答の翻訳を準備するのを助け、それにより、サポートサーバと周辺デバイスとの間の通信は、少なくともQ-SupportとQ-Bandとの間のチャットセッションで人間が読み取れるインスタントメッセージとして会話ログ中に提示され得る。
いくつかの実施形態では、通信サーバは、符号化されたメッセージおよび命令の翻訳を提供するためにサポートサーバを使用しない。その代わりに、少なくともいくつかの単純な、および/または一般の命令およびメッセージについては、通信サーバは、翻訳をローカルで実行する。いくつかの実施形態では、返信メッセージを受信したことに応答して、通信サーバは、返信メッセージのコンテンツに基づき第2のインスタントメッセージを生成し(428)、第2のインスタントメッセージを第1のユーザデバイスに送信し、第1のユーザデバイスは、第1のユーザとサポートサービスプロバイダの公開連絡先アイデンティティとの間のチャットセッションの会話インターフェースにおいて第2のインスタントメッセージをサポートサービスプロバイダのそれぞれのソーシャルネットワークアイデンティティから第1のユーザへのメッセージとして提示する。
いくつかの実施形態では、通信サーバは、第3のインスタントメッセージをサポートサービスプロバイダから受信し(430)、第3のインスタントメッセージは第1のユーザを第3のインスタントメッセージのターゲットとして識別し、第1の周辺デバイス上でオペレーションを実行すること、または第1の周辺デバイスに関する特定の情報を提供することを第3のユーザに要求する。第3のインスタントメッセージを受信したことに応答して、通信サーバは、第1のユーザデバイスを介して第3のインスタントメッセージを第1のユーザに送信し(432)、第3のインスタントメッセージは、第1のユーザとサポートサービスプロバイダの公開連絡先アイデンティティとの間のチャットセッションの会話インターフェースにおいてサポートサービスプロバイダの公開連絡先アイデンティティから第1のユーザへのメッセージとして第1のユーザに対して提示される。たとえば、Q-Supportは、インスタントメッセージ(「@Red207: Press and hold both buttons on the Q-Band until it beeps.」)をユーザに送信し、Q-Band上で物理的オペレーションを実行し、オペレーションの結果を報告として送り返すようユーザに求めることができる。
いくつかの実施形態では、第3のインスタントメッセージを第1のユーザに送信したことに応答して、通信サーバは、第1のユーザデバイスを介して第1のユーザから第2の返信メッセージを受信し(434)、第2の返信メッセージはサポートサービスプロバイダのパブリックソーシャルネットワークアイデンティティをターゲットとしている。たとえば、ユーザRed207がQ-Supportからの第3のインスタントメッセージで要求されたオペレーションを実行した後、ユーザは、Q-Supportに、「I pressed the buttons for 30 seconds, and Q-Band did not beep, but flashed blue light.」という返信インスタントメッセージを送信することができる。いくつかの実施形態では、通信サーバは、第2の返信メッセージを受信したことに応答して、第2の返信メッセージをサポートサービスプロバイダに第3のインスタントメッセージへの返信として転送する(436)。
いくつかの実施形態では、サポートサービスプロバイダは、返信メッセージ中の情報と第2の返信メッセージ中の情報とを組み合わせて、第1の周辺デバイスへのその後の命令または第1のユーザへのその後のメッセージを準備する。たとえば、Q-SupportからRed207への第3のインスタントメッセージが「Did you eat breakfast this morning?」であり、Red207からQ-Supportへの第2の返信メッセージが「No, I didn't」である場合、サポートサーバは、適宜、第1の返信メッセージ中のQ-Bandから取得されたヘルスモニタリングデータとユーザの第2の返信メッセージ中に用意されている朝食情報とに基づき健康レポートまたはさらなる命令を生成する。
いくつかの実施形態では、第1のユーザから第1の所有者登録要求を受信するステップは、第1のユーザデバイスからスキャン結果の送信を受信するステップをさらに含み(440)、スキャン結果はそれぞれの種類の周辺デバイスに対するサポートサービスプロバイダに関連付けられているバーコードを含む。いくつかの実施形態では、通信サーバは、第1の周辺デバイスと第1のユーザとの間の関連付けを確立する要求を受信し(442)、ソーシャルネットワークプラットフォームのサーバおよび第1のユーザデバイスを介してサポートサービスプロバイダと第1の周辺デバイスとの間の通信チャネルを確立する(444)。これは、たとえば、図2A〜図2Hに示されている。
上記の例示的なプロセスに対する他の特徴および態様は、本開示の他の部分に取り上げられている。
図5A〜図5Cは、ソーシャルネットワーキングプラットフォームの上で1つまたは複数の周辺デバイスへのアクセスを提供するための例示的なプロセス500に対する流れ図である。周辺デバイスは、ソーシャルネットワーキングプラットフォーム上で人間のユーザのソーシャルネットワーク連絡先として取り扱われる。
いくつかの実施形態では、プロセス500は、ソーシャルネットワークプラットフォームのサーバ(たとえば、図1Bの通信サーバ112b)によって実行される。いくつかの実施形態では、通信サーバは、第1のユーザデバイスに結合された第1の周辺デバイスを、第1のユーザデバイスに関連付けられているユーザアカウントのそれぞれのソーシャルネットワーク連絡先として登録する(502)。たとえば、これは、図2A〜図2Hおよび付属の説明において解説されている。通信サーバは、第1のユーザデバイスにおいて実行されているソーシャルネットワーキングクライアントアプリケーションを介して第1の周辺デバイスへのユーザアクセスを提供し(504)、ソーシャルネットワーキングクライアントアプリケーションは、第1の周辺デバイスを第1のユーザデバイスに関連付けられているユーザアカウントのそれぞれのソーシャルネットワーク連絡先として認識する。
いくつかの実施形態では、第1のユーザデバイスにおいて実行されているソーシャルネットワーキングクライアントアプリケーションを介して第1のユーザデバイスに結合されている第1の周辺デバイスへのアクセスを提供するステップは、第1のユーザデバイスから第1のインスタントメッセージ要求を受信するステップであって、第1のインスタントメッセージ要求は第1のインスタントメッセージを含み、登録されている第1の周辺デバイスを第1のインスタントメッセージのターゲットとして識別するステップと、第1のユーザデバイスから第1のインスタントメッセージ要求を受信したことに応答して、第1のインスタントメッセージのコンテンツに基づき登録されている第1の周辺デバイスをターゲットとする符号化された命令を取得するステップと、第1のユーザデバイスを介して符号化された命令を登録されている第1の周辺デバイスに送信するステップとをさらに含む(506)。たとえば、第1のユーザデバイス(たとえば、スマートフォン)のユーザ(たとえば、ユーザ「Red207」)は、通信サーバに登録されており、またユーザのソーシャルネットワーク連絡先としてユーザのアカウントに関連付けられている第1の周辺デバイス(たとえば、Bluetooth(登録商標)対応パン焼き器)をコントロールすることを望んでいる。パン焼き器は、ユーザデバイスに接続され、ユーザの連絡先リスト内に「Red's Bread Machine」として表示される。ユーザがパン焼き器を後で(たとえば、午後4時に)起動したいときに、ユーザは、ユーザデバイス上で実行されているソーシャルネットワーククライアントアプリケーションを使用して「Red's Bread Machine」とのチャットセッションを開始することができ、第1のインスタントメッセージ「Start kneading at 4pm」を送信する。通信サーバは、ユーザのインスタントメッセージ要求を受信し、パン焼き器によって受け入れられる対応する符号化された命令(たとえば、バイナリコマンドシーケンス)を取得する。通信サーバは、適宜、パン焼き器のサポートサーバを使用して符号化された命令を取得する。次いで、通信サーバは、ユーザデバイスを介して符号化された命令をパン焼き器に送信し、パン焼き器は、命令メッセージによって命令された通りに適切なパン捏ねプログラムを起動する(たとえば、4pmに)。この通信シナリオは、図2Kおよび付属の説明においても示されている。
いくつかの実施形態では、第1のユーザデバイスにおいて実行されているソーシャルネットワーキングクライアントアプリケーションを介して第1のユーザデバイスに結合されている第1の周辺デバイスへのアクセスを提供するステップは、第1のユーザデバイスから第1の符号化されたメッセージを受信するステップであって、第1の符号化されたメッセージは第1の周辺デバイスによって開始されたメッセージであり、第1のユーザデバイスで実行されているソーシャルネットワーキングクライアントアプリケーションを介してサーバに転送されるステップと、第1のユーザデバイスから第1の符号化されたメッセージを受信したことに応答して、第1の符号化されたメッセージのコンテンツに基づき第2のインスタントメッセージを取得するステップと、第2のインスタントメッセージを第1のユーザデバイスに送信するステップとをさらに含み(508)、ソーシャルネットワーキングクライアントアプリケーションは、周辺デバイスを表すそれぞれのソーシャルネットワーク連絡先から第1のユーザデバイスに関連付けられているユーザアカウントへのインスタントメッセージとして第2のインスタントメッセージを提示する。たとえば、パン焼き器の上記の例を続ける。パン焼き器が、ユーザによって命令された通りに4pmにパン捏ねプログラムを起動した後に、パン焼き器は、パン生地がすでに選択されている種類のパンに対して乾燥しすぎている(たとえば、ユーザがパン焼き器に十分な水を入れていなかった場合)ことを検出すると想定すると、パン焼き器は、はじめに選択されていたパンの種類を修正する(たとえば、フランスパンからロシアパンに)許可を求める第1の符号化されたメッセージ(たとえば、「0014053434」)を生成する。第1の符号化されたメッセージは、ユーザデバイスを介してパン焼き器から通信サーバに送信され、通信サーバは、符号化されたメッセージのコンテンツに基づき第1の符号化されたメッセージの翻訳(たとえば、「The dough is too dry, requesting permission to change baking program from French Bread Mode to Russian Bread Mode.」)を取得する。通信サーバは、その翻訳結果を第2のインスタントメッセージとしてユーザに送信し、ユーザデバイスのソーシャルネットワーキングアプリケーションに示されている会話ログは、「Red's Bread Machine」から「Red207」への、「The dough is too dry, requesting permission to change baking program from French Bread Mode to Russian Bread Mode.」というインスタントメッセージを提示する。第2のインスタントメッセージを受信したユーザは、「No, proceed as programmed」または「OK, go ahead」という返信をパン焼き器に送信するオプションを有する。この通信シナリオは、図2Lおよび付属の説明にも示されている。
いくつかの実施形態では、第1のユーザデバイスにおいて実行されているソーシャルネットワーキングクライアントアプリケーションを介して第1の周辺デバイスへのアクセスを提供するステップは、ユーザアカウントのそれぞれのユーザと周辺デバイスを表すそれぞれのソーシャルネットワーキング連絡先との間の一対一チャットセッションを確立するステップをさらに含む(510)。
いくつかの実施形態では、第1のユーザデバイスにおいて実行されているソーシャルネットワーキングクライアントアプリケーションを介して第1の周辺デバイスへのアクセスを提供するステップは、ユーザアカウントのそれぞれのユーザと、第1の周辺デバイスを表すそれぞれのソーシャルネットワーキング連絡先と、ユーザアカウントの少なくとも1つの他のソーシャルネットワーク連絡先との間のグループチャットセッションを確立するステップをさらに含む。
いくつかの実施形態では、第1のユーザデバイスにおいて実行されているソーシャルネットワーキングクライアントアプリケーションを介して第1の周辺デバイスへのアクセスを提供するステップは、グループチャットセッションにおいて、ユーザアカウントの少なくとも1つの他のソーシャルネットワーク連絡先に第1の周辺デバイスのコントロールを認める許可をユーザアカウントのそれぞれのユーザから受信するステップと、許可を受信したことに応答して、グループチャットセッションでユーザアカウントの少なくとも1つの他のソーシャルネットワーク連絡先から第1の周辺デバイスのそれぞれのソーシャルネットワークアイデンティティへの通信を可能にするステップとをさらに含む(512)。たとえば、図2Rに関して説明されている通信シナリオに示されているように、1人のユーザ(たとえば、User A)が、ユーザAのアカウントの下で登録され、ユーザAのユーザデバイスに結合されている周辺デバイスをアクセスしおよび/またはコントロールする許可を自分のソーシャルネットワークに付与している。たとえば、ユーザA(たとえば、「Red207」)がユーザB(たとえば、「Reddog」)をユーザAと周辺デバイスA(たとえば、「Red's Bread Machine」)との間の現在のチャットセッションに追加したときに、ユーザAは、ユーザBによる周辺デバイスAへのアクセスを付与したとみなされる。ユーザBは、これで、インスタントメッセージを使用して同じグループチャットセッションにおいて周辺デバイスAと通信することができる。
いくつかの実施形態では、グループチャットセッションでユーザアカウントの少なくとも1つの他のソーシャルネットワーク連絡先から第1の周辺デバイスのそれぞれのソーシャルネットワークアイデンティティへの通信を可能にするステップは、ユーザアカウントの少なくとも1つの他のソーシャルネットワーク連絡先に関連付けられている第2のユーザデバイスから第2のインスタントメッセージ要求を受信するステップであって、第2のインスタントメッセージ要求は第3のインスタントメッセージを含み、登録されている第1の周辺デバイスを第3のインスタントメッセージのターゲット受信者として識別するステップと、第2のユーザデバイスから第2のインスタントメッセージ要求を受信したことに応答して、第3のインスタントメッセージのコンテンツに基づき登録されている第1の周辺デバイスへの第2の符号化された命令を取得するステップと、第2の符号化された命令および第3のインスタントメッセージを第1のユーザデバイスに送信するステップとをさらに含み(516)、ソーシャルネットワーキングクライアントアプリケーションは、第1のユーザデバイスに第3のインスタントメッセージを表示し、第2の符号化された命令を登録されている第1の周辺デバイスに転送する。たとえば、ユーザA「Red207」が、すでに選択されているパンの種類を変更するかどうかを決定することについてユーザB「Reddog' s」の補助を求めたいときに、ユーザAはユーザBを現在のチャットセッションに追加し、「Red207」、「Red's Bread Machine」、および「Reddog」を伴うグループチャットセッションを確立する。ユーザ「Red207」は、適宜、グループチャットセッションにおいて、「The bread machine says the dough is too try, should I switch the baking program from French to Russian?」というインスタントメッセージをユーザ「Reddog」に送信することができ、ユーザ「Reddog」は現在のパンの種類を維持するが、ベイキング時間を10分だけ延長している間にベイキング温度を10度だけ下げるようパン焼き器に命令することができる。この例では、ユーザ「Redog」は、第1のユーザ(たとえば、「Red207」)のソーシャル連絡先として働き、第2のユーザデバイス(たとえば、ユーザ「Reddog」のタブレットデバイス)からの第2のインスタントメッセージ要求を送信する。第2のインスタントメッセージ要求は、第3のインスタントメッセージ、たとえば、「@Red's Bread Machine: Don't switch bread type. Instead, lower baking temperature by 10 degrees, and extend baking time by 10 minutes」を含む。通信サーバは、第3のインスタントメッセージのコンテンツに基づき符号化された命令を取得し、その符号化された命令を第1のユーザデバイスを介してパン焼き器に送信する。この通信シナリオは、図2Rおよび付属の説明にも示されている。
いくつかの実施形態では、第1のユーザデバイスにおいて実行されているソーシャルネットワーキングクライアントアプリケーションを介して第1の周辺デバイスへのアクセスを提供するステップは、第1のユーザデバイスから第2の符号化されたメッセージを受信するステップであって、第2の符号化されたメッセージは第1のユーザデバイスに結合された第1の周辺デバイスによって開始されたメッセージであり、第1のユーザデバイスで実行されているソーシャルネットワーキングクライアントアプリケーションを介してサーバに送信されるステップと、第1のユーザデバイスから第2の符号化されたメッセージを受信したことに応答して、第2の符号化されたメッセージのコンテンツに基づき第4のインスタントメッセージを取得するステップと、第1のユーザデバイス、およびユーザアカウントの少なくとも1つの他のソーシャルネットワーク連絡先に関連付けられている第2のユーザデバイスに第4のインスタントメッセージを送信するステップであって、第4のインスタントメッセージは、第1のユーザデバイスおよび第2のユーザデバイスに、第1の周辺デバイスを表すそれぞれのソーシャルネットワーク連絡先から受信されたメッセージとして提示されるステップとをさらに含む(518)。上記のパン焼き器に関する例に従う。パン焼き器「Red's Bread Machine」は、ベイキング温度を下げるステップと、ベイキング時間を延長するステップとに関する符号化された命令を受信し、それが実現可能であると決定すると想定する。パン焼き器は、第2の符号化されたメッセージ(たとえば、「OK, program modification initiated, T=T+10, t=t+10.」)を生成する。第2の符号化されたメッセージは、ユーザAとユーザBの両方を含むグループ全体をターゲットとする。第2の符号化されたメッセージは、通信サーバに送信され、通信サーバは、第2の符号化されたメッセージのコンテンツに基づき、ユーザAとユーザBの両方をターゲットとする第4のインスタントメッセージを取得する。たとえば、第4のインスタントメッセージは、「OK」であってよく、これで、「Reddog」によって命令された通りにベイキングプログラムの修正を続ける。第4のインスタントメッセージは、パン焼き器「Red's Bread Machine」からの返信として両方のユーザのユーザデバイス上の会話ログ内に表示される。この通信シナリオは、図2Sおよび付属の説明に示されている。
上記の例示的なプロセスに対する他の特徴および態様は、本開示の他の部分に取り上げられている。
図6A〜図6Dは、いくつかの実施形態により周辺デバイスをソーシャルネットワーク内でソーシャルネットワーク連絡先として取り扱うことによって周辺デバイスのコントロールおよびアクセスを提供するための例示的なプロセス600に対する流れ図である。いくつかの実施形態では、周辺デバイスのコントロールおよびアクセスは、周辺デバイスに対するサポートサーバのソーシャルネットワークアイデンティティを通じて遂行される。いくつかの実施形態では、プロセスは、ソーシャルネットワーキングプラットフォームのサーバ(たとえば、図1Bの通信サーバ112b)によって実行される。
いくつかの実施形態では、通信サーバは、サポートサービスプロバイダから、サポートサービスプロバイダによってサービスを提供されるべき周辺デバイスの種類を指定するサービス提供者登録要求を受信する(602)。たとえば、パン焼き器のメーカーは、カスタマーサポート部門の要員にサービス提供者のアカウントを通信サーバに登録してもらうことができる。サービス提供者のアカウントは、ユーザがパブリックソーシャルネットワークアイデンティティの下でカスタマーサポート要員によるメッセージまたはパブリケーションへのサブスクライブに同意している限り多くのユーザのソーシャルネットワーク連絡先となり得るそのパブリックソーシャルネットワークアイデンティティを有する。通信サーバは、サービス提供者登録要求に基づきサポートサービスプロバイダに対するパブリックソーシャルネットワークアイデンティティを確立する(605)。たとえば、パブリックソーシャルネットワークアイデンティティは、カスタマーサポート部門がサポートサービスを提供する1つまたは複数の種類の周辺デバイスに関連付けられ得る。
いくつかの実施形態では、通信サーバは、第1のユーザから、第1のユーザによってコントロールされる第1の周辺デバイスを指定する第1の所有者登録要求を受信する(606)。第1の周辺デバイスが、サービス提供者登録要求において指定された周辺デバイスの種類であると決定した後、通信サーバは、ソーシャルネットワークプラットフォーム上で第1の周辺デバイスに対するそれぞれのソーシャルネットワークアイデンティティを作成し(608)、サポートサービスプロバイダのパブリックソーシャルネットワークアイデンティティ、第1のユーザ、および第1の周辺デバイスのそれぞれのソーシャルネットワークアイデンティティの間のソーシャルネットワーク関係を確立する。
いくつかの実施形態では、通信サーバは、サポートサービスプロバイダのパブリックソーシャルネットワークアイデンティティ、第1のユーザ、および第1の周辺デバイスのそれぞれのソーシャルネットワークアイデンティティの間でそれぞれのグループチャットセッションを確立する(610)。いくつかの実施形態では、通信サーバは、ユーザおよびサポートサーバは両方とも周辺デバイスにリンクされているという事実に基づきサポートサービスプロバイダ、ユーザ、および周辺デバイスに対するグループ会話を自動的に確立し、前者は周辺デバイスの現在の所有者であり、後者は周辺デバイスのサポートサービスプロバイダである。
いくつかの実施形態では、第1のユーザが第1のユーザデバイスを使用してソーシャルネットワークプラットフォームにログオンしている間に、通信サーバは、第1のユーザデバイスを介して第1の周辺デバイスからログオン要求を受信し(612)、第1のユーザデバイスを介して第1の周辺デバイスからログオン要求を受信したことに応答して、通信サーバは、第1の周辺デバイスの利用可能性についてサポートサービスプロバイダに通知する(614)。たとえば、第1の周辺デバイスが第1のユーザによって登録された後、第1の周辺デバイスが第1のユーザデバイス上で実行されているソーシャルネットワーククライアントアプリケーションのオペレーションを通じて第1のユーザの第1のユーザデバイスとの接続を確立するとすぐに、第1のユーザデバイスは、第1の周辺デバイスのアクティブなオンラインステータスを通信サーバに報告する。次いで、通信サーバは、第1の周辺デバイスのアクティブなオンラインステータスのサポートサーバを更新する。
いくつかの実施形態では、通信サーバは、サポートサービスプロバイダから、第1の周辺デバイスを命令メッセージのターゲットとして識別する命令メッセージを受信する(616)。その命令メッセージを受信したことに応答して、通信サーバは、その命令メッセージを、第1のユーザデバイスを介して第1の周辺デバイスに転送する(618)。いくつかの実施形態では、第1の周辺デバイスをターゲットとする命令メッセージを受信したことに応答して、通信サーバは、命令メッセージのコンテンツに基づき生成されているインスタントメッセージを取得し(620)、インスタントメッセージを第1のユーザデバイスに送信し、第1のユーザデバイスは、ソーシャルネットワーキングプラットフォームのグループ会話インターフェースにおいてサポートサービスプロバイダの公開連絡先アイデンティティから第1の周辺デバイスのそれぞれのソーシャルネットワークアイデンティティへのメッセージとしてインスタントメッセージを提示する。これは、図2Oの通信構成において示されている。たとえば、パン焼き器のサポートサービスプロバイダが、パン焼き器からパン焼き使用頻度データを収集することを望んでいる場合、サポートサーバは、パン焼き器「Red's Bread Machine」に、通信サーバおよび第1のユーザデバイスを介して要求された使用度データをサブミットする符号化された命令を送信する。通信サーバは、また、符号化された命令のコンテンツおよび/または目的を反映するインスタントメッセージ(たとえば、「@Red's Bread Machine: Please send me the usage data for last month.」)を(たとえば、サポートサーバから)取得し、それを第1のユーザデバイスに送信して、ユーザに対して、サポートサーバ、第1のユーザ、およびパン焼き器のソーシャルネットワークアイデンティティの間のグループチャットセッションの会話ログに表示する。
いくつかの実施形態では、インスタントメッセージを取得するステップは、サポートサービスプロバイダから命令メッセージの目的を記述した自然言語メッセージを取得するステップと、サポートサービスプロバイダの公開連絡先アイデンティティを自然言語メッセージの送信者として、第1の周辺デバイスのそれぞれのソーシャルネットワークアイデンティティを自然言語メッセージのターゲット受信者として指定するステップとをさらに含む(622)。
いくつかの実施形態では、通信サーバは、第1のユーザデバイスを介して第1の周辺デバイスから命令メッセージに対する第1の返信メッセージを受信する(624)。第1の返信メッセージを受信したことに応答して、通信サーバは、第1の返信メッセージをサポートサービスプロバイダに転送する(626)。たとえば、パン焼き器が、符号化されたメッセージで使用度データをサポートサーバにサブミットしたときに、符号化されたメッセージは、最初に、第1のユーザデバイスに届き、第1のユーザデバイスによって通信サーバに送信され、次いで、通信サーバはそれをサポートサーバに転送する。
いくつかの実施形態では、第1の返信メッセージを受信したことに応答して、通信サーバは、第1の返信メッセージのコンテンツに基づき生成されている第2のインスタントメッセージを取得し(628)、第2のインスタントメッセージを第1のユーザデバイスに送信し、第1のユーザデバイスは、ソーシャルネットワーキングプラットフォームのグループ会話インターフェースにおいて第1の周辺デバイスのそれぞれのソーシャルネットワークアイデンティティからサポートサービスプロバイダのパブリックソーシャルネットワークアイデンティティへのメッセージとして第2のインスタントメッセージを提示する。たとえば、サポートサーバが、第1の返信メッセージで符号化されたパン焼き器使用度データを受信した後、サポートサーバは、符号化された使用度データを人間が読み取れる形態(たとえば、リストまたは表)に翻訳し、それを第2のインスタントメッセージに含める。サポートサーバは、通信サーバが第1のユーザデバイスに送信すべき第2のインスタントメッセージを通信サーバに提供する。第1のユーザデバイスは、第2のインスタントメッセージを、パン焼き器「Red's Bread Machine」からサポートサーバのパブリックソーシャルネットワークアイデンティティへの返信として表示する。
いくつかの実施形態では、通信サーバは、第3のインスタントメッセージをサポートサービスプロバイダから受信し(630)、第3のインスタントメッセージは第1のユーザを第3のインスタントメッセージのターゲットとして識別し、第1の周辺デバイス上でオペレーションを実行すること、または第1の周辺デバイスに関する特定の情報を提供することを第3のユーザに要求する。第3のインスタントメッセージを受信したことに応答して、通信サーバは、第1のユーザデバイスを介して第3のインスタントメッセージを第1のユーザに送信し(632)、第3のインスタントメッセージは、ソーシャルネットワーキングプラットフォームのグループ会話インターフェースにおいてサポートサービスプロバイダの公開連絡先アイデンティティから第1のユーザへのメッセージとして第1のユーザに対して提示される。いくつかの実施形態では、第3のインスタントメッセージを第1のユーザに送信したことに応答して、通信サーバは、第1のユーザデバイスを介して第1のユーザから第2の返信メッセージを受信し(634)、第2の返信メッセージを受信したことに応答して、通信サーバは、第2の返信メッセージをサポートサービスプロバイダに第3のインスタントメッセージへの返信として転送する(636)。たとえば、上記のパン焼き器の例を続ける。サポートサーバは、パン焼き器について第1のユーザからの味の好みまたは使用体験に関する何らかの情報を提供することを第1のユーザに求める第3のインスタントメッセージを生成することができる。サポートサーバは、第3のインスタントメッセージ「Do you prefer your bread to be softer than those that have been made by Red's Bread Machine?」で述べることができる。サポートサーバは、通信サーバがユーザ「Red207」に転送すべき第3のインスタントメッセージを通信サーバに送信する。第3のインスタントメッセージがユーザ「Red207」に送信され、第1のユーザデバイスで表示された後、ユーザは、サポートサーバによって求められた質問に返信を送ることができる。たとえば、ユーザは、第2の返信メッセージをサポートサーバをターゲットとするインスタントメッセージとして提供することができ、この返信メッセージは「I prefer softer breads.」と述べるものである。第2の返信メッセージが、通信サーバに送信され、通信サーバは、第2の返信メッセージをサポートサーバに転送する。
いくつかの実施形態では、サポートサービスプロバイダは、第1の返信メッセージ内の情報(たとえば、パン焼き器「Red's Bread Machine」から受信された機械使用度データ)と、第2の返信メッセージ内の情報(たとえば、ユーザによって提供された味および質感の好み)を組み合わせて、第1の周辺デバイスへのその後の命令(たとえば、パン焼きプログラムのベースラインを調整するための符号化された命令)、および/または第1のユーザへのその後のメッセージ(たとえば、後でパン焼き器に水を少量加えるようユーザにアドバイスするインスタントメッセージ)を準備する。いくつかの実施形態では、符号化された命令および/または第1のユーザへのインスタントメッセージを記憶するインスタントメッセージが、現在のグループチャットセッションの会話ログ中に入力される。
いくつかの実施形態では、通信サーバは、複数のユーザから複数の所有者登録要求を受信し(640)、複数の所有者登録要求の各々はサービス提供者登録要求で指定された周辺デバイスの種類のそれぞれの周辺デバイスを指定する。複数の所有者登録要求に応えて、通信サーバは、複数の所有者登録要求で指定された複数の周辺デバイスの各々に対するそれぞれのソーシャルネットワークアイデンティティを作成する(642)。いくつかの実施形態では、通信サーバは、サポートサービスプロバイダのパブリックソーシャルネットワークアイデンティティ、複数のユーザ、および複数の周辺デバイスのそれぞれのソーシャルネットワークアイデンティティを含むソーシャルネットワークコミュニティを作成する。たとえば、通信サーバは、同じ種類のパン焼き器を登録したすべてのユーザに対してオンラインコミュニティを作成し、それらがソーシャルネットワークグループ内のそのそれぞれのデバイスとともに、ソーシャルネットワークグループに互いに通信させることを可能にすることができる。いくつかの実施形態では、通信サーバは、ブロードキャストメッセージをサポートサービスプロバイダから受信し(646)、ブロードキャストメッセージを受信したことに応答して、通信サーバは、それぞれのユーザデバイスを介して、ブロードキャストメッセージをサーバに現在ログオンしている複数の周辺デバイスの各々に送信する。たとえば、パン焼き器のサポートサーバは、オンラインコミュニティ内のすべての登録されているパン焼き器にブロードキャストメッセージ(たとえば、安全でないことが発見されたばかりの特徴を停止するための符号化されたメッセージ)を送信することができる。ブロードキャストメッセージを受信したすべてのパン焼き器は、そのブロードキャストメッセージ内の命令に従って活動し得る。
上記の例示的なプロセスに対する他の特徴および態様は、本開示の他の部分に取り上げられている。
図7A〜図7Cは、いくつかの実施形態によるソーシャルネットワークプラットフォームの上で周辺デバイス間のコントロールおよびアクセスを提供するための例示的なプロセス700に対する流れ図である。いくつかの実施形態では、プロセスは、ソーシャルネットワークプラットフォームの通信サーバによって実行される。
いくつかの実施形態では、通信サーバは、第1のユーザデバイスに結合された第1の周辺デバイスおよび第2の周辺デバイスを、第1のユーザデバイスに関連付けられているユーザアカウントのそれぞれのソーシャルネットワーク連絡先として登録する(702)。たとえば、ユーザRed207は、自分はアパートのクライメートコントロールデバイスおよび照明コントロールデバイスを通信サーバに登録することができる。通信サーバは、それぞれのソーシャルネットワークアイデンティティ「Red's Climate Master」および「Red's Lighting Master」をクライアントコントロールデバイスおよび照明コントロールデバイスに割り当てると想定する。デバイスは両方とも、ユーザデバイス上で実行されているソーシャルネットワーククライアントアプリケーションを介してユーザのユーザデバイス(たとえば、スマートフォン)に結合される。いくつかの実施形態では、通信サーバは、第1のユーザデバイスで実行されているソーシャルネットワーキングクライアントアプリケーションを介して第1の周辺デバイス(たとえば、照明コントロールデバイス)と第2の周辺デバイス(たとえば、クライメートコントロールデバイス)との間の通信を可能にする(704)。
いくつかの実施形態では、ソーシャルネットワーキングクライアントアプリケーションのグループチャットインターフェースにおいて、通信サーバは、ユーザアカウントのユーザと第1および第2の周辺デバイスを表すそれぞれのソーシャルネットワーク連絡先との間のグループ会話を提示し(708)、グループ会話は、第1の周辺デバイスと第2の周辺デバイスとの間の通信のコンテンツに対応する1つまたは複数のインスタントメッセージを含む。たとえば、通信サーバは、ユーザ「Red207」ならびに2つの周辺デバイス「Red's Climate Master」および「Red's Lighting Master」が、互いに通信メッセージをやり取りすることができるグループチャットセッションを提供し得る。グループチャットの会話ログでは、通信メッセージはすべて、パーティ間でやり取りされたオリジナルのメッセージが符号化されたメッセージまたは通常のインスタントメッセージであるかに関係なく人間のユーザによって読み取り可能であるインスタントメッセージとして示される。
いくつかの実施形態では、第1のユーザデバイスで実行されているソーシャルネットワーキングクライアントアプリケーションを介して第1の周辺デバイスと第2の周辺デバイスとの間の通信を可能にするステップは、第1のユーザデバイスを介して第1の周辺デバイスから第1のインスタントメッセージ要求を受信するステップと、第1のメッセージ要求に基づき、第2の周辺デバイスを第1のメッセージ要求の1つまたは複数のメッセージターゲットのうちでそれぞれのメッセージターゲットとして識別するステップと、第1のメッセージ要求のコンテンツに基づき第2の周辺デバイスに対する第1の符号化されたメッセージを取得するステップと、第1のユーザデバイスを介して第1の符号化されたメッセージを第2の周辺デバイスに送信するステップとをさらに含む(706)。たとえば、照明コントロールデバイスが、階下の居間のライトが消灯していること、および階上の寝室のライトが点灯していることを検出した場合、照明コントロールデバイスは、適宜、ユーザデバイスを介して第1のメッセージ要求を通信サーバに送信する。第1のメッセージ要求は、クライメートコントロールデバイスをターゲットとする少なくとも第1の符号化されたメッセージを含む。第1の符号化されたメッセージは、階下の空調をオフにし、階上の空調をオンにするクライメートコントロールデバイスに対する命令である。いくつかの実施形態では、クライメートコントロールデバイスをターゲットとするオリジナルのメッセージは、異なるフォーマットであってもよく、メッセージがユーザデバイスを介してクライアントコントロールデバイスに送信される前にクライメートコントロールデバイスによって受け入れ可能なフォーマットに変換され得る。
いくつかの実施形態では、通信サーバは、第2の周辺デバイスに対する第1の符号化されたメッセージのコンテンツに対応する第1のインスタントメッセージを取得し(710)、第1のインスタントメッセージを第1のユーザデバイスに送信し(712)、第1のインスタントメッセージは、第1の周辺デバイスを表すそれぞれのソーシャルネットワーク連絡先から第2の周辺デバイスを表すそれぞれのソーシャルネットワークへのインスタントメッセージとしてグループチャットインターフェース内に提示される。たとえば、第1のインスタントメッセージは、「@Red's Climate Master, Red207 has moved upstairs, please adjust the air conditioning accordingly.」というメッセージであるものとしてよい。第1のインスタントメッセージは、デバイス間で発生したものを理解しようとするユーザ向けであり、したがって、第1のインスタントメッセージは、2つの周辺デバイスの間で送信される符号化されたメッセージの逐語的な翻訳である必要はない。符号化されたメッセージの意味およびコンテンツを伝える他のカスタマイズされた、より自然な文が、通信サーバによって使用され得る。
いくつかの実施形態では、第1のメッセージ要求に基づき、通信サーバは、第1のメッセージ要求の1つまたは複数のメッセージターゲットのうちで追加のメッセージターゲットとしてユーザアカウントのユーザを識別する(714)。たとえば、照明コントロールデバイスは、適宜、複数の部分を含む第1のメッセージ要求を生成し、各部分はそれぞれのターゲットを含むそれぞれのメッセージを表す。クライメートコントロールデバイスをターゲットとする符号化された命令に加えて、第1のメッセージ要求は、適宜、ユーザRed207をターゲットとする別のメッセージを含む。いくつかの実施形態では、通信サーバは、第1のメッセージ要求のコンテンツに基づきユーザアカウントのユーザに対する第2のインスタントメッセージを生成し(716)、第2のインスタントメッセージを第2のユーザデバイスに送信し(718)、第2のインスタントメッセージは、第1の周辺デバイスを表すそれぞれのソーシャルネットワーク連絡先からユーザアカウントのユーザへのインスタントメッセージとしてグループチャットインターフェース内に提示される。たとえば、第2のインスタントメッセージは、「Red207, the light over the stove is still on, do you want to turn it off?」と言う照明コントロールデバイスからのメッセージであってよい。この第2のインスタントメッセージは、ユーザをターゲットとする符号化されたメッセージを含む第1のメッセージ要求の一部分に基づき生成される。たとえば、ユーザをターゲットとする符号化されたメッセージを含む第1のメッセージ要求の一部分は、無人ライト(「E01」)を表す例外コードおよび無人ライト(たとえば、「K5」)の場所コードを備えるメッセージであってよい。
いくつかの実施形態では、第1のユーザデバイスを介して第1の符号化されたメッセージ(たとえば、階上および階下の空調を変更するための符号化されたメッセージ)を第2の周辺デバイスに送信したことに応答して、通信サーバは、第1のユーザデバイスを介して第2の周辺デバイスから第1の符号化された応答(たとえば、「+1」、これは「OK」を意味する)を受信する(720)。第2のインスタントメッセージ(たとえば、「Red207, the light over the stove is still on, do you want to turn it off?」)を第1のユーザデバイスに送信したことに応答して、通信サーバは、第1のユーザデバイスを介してユーザアカウントのユーザから第1のインスタントメッセージ応答(たとえば、「@Red's Lighting Master: Turn that light off.」)を受信する(722)。
いくつかの実施形態では、通信サーバは、第1の周辺デバイスに対する第2の符号化されたメッセージを取得し(724)、第2の符号化されたメッセージは第2の周辺デバイスからの第1の符号化された応答の中の情報とユーザアカウントのユーザからの第1のインスタントメッセージ応答の中の情報とに基づき生成される。通信サーバは、第1のユーザデバイスを介して第2の符号化されたメッセージを第1の周辺デバイスに送信する(726)。たとえば、通信サーバは、照明コントロールデバイスに対する第2の符号化されたメッセージを取得し、第2の符号化された命令は、照明コントロールデバイスがオーブンの上の階下のライトを消灯した後にサスペンドモードに入るようにするための符号化された命令であるものとしてよい。
いくつかの実施形態では、通信サーバは、第2のユーザデバイスに結合された第3の周辺デバイスを、第2のユーザデバイスに関連付けられているユーザアカウントのそれぞれのソーシャルネットワーク連絡先として登録し(728)、第1のユーザデバイスで実行されているソーシャルネットワーキングクライアントアプリケーションおよび第2のユーザデバイスで実行されているソーシャルネットワーキングクライアントアプリケーションを介して第1の周辺デバイスと第3の周辺デバイスとの間の通信を可能にする(730)。たとえば、クライメートコントロールデバイス、およびRed207のユーザデバイスに接続されている照明コントロールデバイスに加えて、別のユーザ「Reddog」によってReddogのタブレットデバイスを通じてコントロールされる第3の周辺デバイス(たとえば、セキュリティ監視デバイス)は、グループチャットセッションに追加され、クライメートコントロールデバイスおよび/または照明コントロールデバイスと通信することができる。
いくつかの実施形態では、第1のメッセージ要求に基づき、通信サーバは、第1のメッセージ要求の1つまたは複数のメッセージターゲットのうちで別の追加のメッセージターゲットとして第3の周辺デバイスを識別する(732)。たとえば、第1のメッセージ要求は、第1のユーザのソーシャルネットワーク連絡先「Reddog」によって操作される第2のユーザデバイスに結合されているセキュリティ監視デバイスをターゲットとする符号化されたメッセージを含む追加の部分を含み得る。通信サーバは、第3の周辺デバイス(たとえば、セキュリティ監視システム)に対する第3の符号化されたメッセージ(たとえば、「EXESFG001」、これは「Turn on security monitoring of all gates.」を意味する)を取得し(734)、第3の符号化されたメッセージは、第1のメッセージ要求のコンテンツに基づき生成されている。通信サーバは、第2のユーザデバイス(たとえば、Reddogのタブレットデバイス)を介して第3の符号化されたメッセージを第3の周辺デバイスに送信する(736)。
いくつかの実施形態では、第3の符号化されたメッセージを第2のユーザデバイスを介して第3の周辺デバイスに送信したことに応答して、通信サーバは、第2のユーザデバイスを介して第3の周辺デバイスから第2の符号化された応答を受信する(738)。たとえば、セキュリティ監視デバイスは、すべての門に対するセキュリティ監視をオンにする符号化された命令を受信した後、照明コントロールデバイスに命令の確認応答を送信する。いくつかの実施形態では、通信サーバは、第1の周辺デバイスに対する第4の符号化されたメッセージを取得し(740)、第4の符号化されたメッセージは、第2の符号化された応答のコンテンツに基づき生成されている。通信サーバは、第1のユーザデバイスを介して第1の周辺デバイスに対する第4の符号化された応答を第1の周辺デバイスに送信する(742)。たとえば、照明コントロールデバイスおよびセキュリティ監視デバイスのネイティブメッセージフォーマットは、異なり得るので、第3の周辺デバイスから受信された第2の符号化された応答は、第1の周辺デバイスによって受け入れられるフォーマットに変換される必要がある。したがって、通信サーバは、第1の周辺デバイスに対する第4の符号化されたメッセージを取得し、第4の符号化されたメッセージは、第2の符号化された応答を第1の周辺デバイスのメッセージフォーマットに翻訳したメッセージである。
いくつかの実施形態では、第3の符号化されたメッセージを第2のユーザデバイスを介して第3の周辺デバイスに送信したことに応答して、通信サーバは、第2のユーザデバイスを介して第3の周辺デバイスから第2の符号化された応答を受信し(744)、通信サーバは、第1のユーザデバイスを介して第2の符号化されたメッセージを第1の周辺デバイスに送信する前に第2の符号化されたメッセージに第2の符号化された応答を含める(746)。たとえば、第2の符号化されたメッセージは、照明コントロールデバイスがオーブンの上の階下のライトを消灯した後にサスペンドモードに入るようにするためのメッセージである。第2の符号化された応答は、すべての門が安全であることを指示する、セキュリティ監視システムからの応答であり、したがって、照明コントロールデバイスに送信され組み合わされたメッセージは、単純に、オーブンのライトを消灯した後にスリープモードに入るというメッセージであるが、それは他のすべてのタスク(たとえば、空調を変更する、および門のセキュリティ監視をアクティブ化する)が、クライメートコントロールデバイスおよびセキュリティ監視デバイスによってそれぞれ管理されているからである。
上記の例示的なプロセスに対する他の特徴および態様は、本開示の他の部分に取り上げられている。
図8は、いくつかの実施形態により周辺デバイスおよびユーザデバイスによって実装される例示的なデバイス発見プロセスおよびその後の通信プロセスに対するタイミング要求条件を示すブロック図である。
上で説明されているように、ソーシャルネットワークプラットフォームを介した周辺デバイスのアクセスおよびコントロールは、周辺デバイスがデバイス上で実行されているソーシャルネットワーククライアントアプリケーションを通じてユーザデバイスに接続されることを必要とする。ユーザデバイスは、その上、ソーシャルネットワーククライアントアプリケーションを通じてソーシャルネットワークプラットフォームの通信サーバと通信する。ユーザデバイスと周辺デバイスとの間で、データ(たとえば、周辺デバイスをターゲットとする符号化された命令、および周辺デバイスから発信された符号化された応答)を周辺デバイスとの間で転送するために接続(たとえば、WiFi接続、USB接続、Bluetooth(登録商標)接続、Bluetooth(登録商標) Low Energy接続、超音波接続、Thunderbolt接続など)が使用される。
Bluetooth(登録商標)およびBluetooth(登録商標) Low Energyプロトコルは、周辺デバイスとユーザデバイスとを接続する上で使用しやすく、実装しやすい。一般的なBluetooth(登録商標)設計ガイドライン(たとえば、Bluetooth(登録商標)4.0設計ガイドライン、Apple(登録商標)製品と一緒に使用するためのApple(登録商標)のBluetooth(登録商標) Design Guideline)は、ソーシャルネットワーキングプラットフォームを介して周辺デバイスをコントロールするコンテキストに合わせて手直しされない。図8は、ユーザ体験を改善することを目指す一般的なBluetooth(登録商標)デバイス発見プロセスの何らかの精密化を示している。
図8に示されているように、Bluetooth(登録商標)対応周辺デバイスは、アドバタイズし(たとえば、デバイス発見メッセージをブロードキャストすることによって)、接続要求を待つスレーブとして働く。ユーザデバイスは、他のデバイスをスキャンするマスターとして働き、接続要求を発見された周辺デバイスに送信する。
図8に示されているように、接続効率を改善するために、周辺デバイスのブロードキャスト期間は、初期ブロードキャスト期間(たとえば、ブロードキャスト期間の最初の30秒)と、その後のブロードキャスト期間(たとえば、初期ブロードキャスト期間の後のブロードキャスト期間の一部分)とに分割される。初期ブロードキャスト期間において、周辺デバイスは、隣接デバイス発見メッセージの間(たとえば、隣接デバイス発見メッセージブロードキャストタイムスロットの開始エッジの間)のそれぞれの間隔を500ms以下としてデバイス発見メッセージを繰り返しブロードキャストする。初期ブロードキャスト期間の後、接続要求が受信されていない場合、周辺デバイスはブロードキャストを低速にし、デバイス発見メッセージが、3s以下の隣接デバイス発見メッセージの間繰り返し行われる。いくつかの実施形態では、周辺デバイスは、それが電源オンになったときにブロードキャスト期間を開始する。いくつかの実施形態では、ユーザは、周辺デバイスにブロードキャスト期間を開始する信号を与えることができる。
ブロードキャスト期間において、ユーザデバイスは、デバイス発見メッセージをスキャンし、ユーザデバイスが周辺デバイスからデバイス発見メッセージを検出したときに、ユーザデバイスは、周辺デバイスが本明細で説明されている方法を実装したデバイスかどうかを決定する。たとえば、いくつかの実施形態では、周辺デバイスは、ユーザデバイス上で実行されているソーシャルネットワーキングクライアントアプリケーションに関連付けられているソーシャルネットワーキングサービスについて指定された所定の識別子を含む。たとえば、所定の識別子が、あらかじめ周辺デバイスのメーカーにリリースされるものとしてよく、それにより、メーカーは、この識別子をデバイス発見メッセージ中のUUIDとしてブロードキャストするようにその周辺デバイスをプリセットする。この識別子は、ユーザデバイスが、本明細書で説明されている方法を実装するためにソーシャルネットワーキングクライアントアプリケーションと通信することができる周辺デバイスが存在しているかどうかをすばやく決定することを可能にする。
図8は、いくつかの実施形態において、接続が確立された後の2つの連続的な接続イベントの間のタイミングギャップは、30msにプリセットされることも示している。これは、伝送プロトコルが、業界標準に適合すること、それと同時に比較的高い通信速度を達成することを可能にする。いくつかの実施形態では、接続イベントに対するタイムアウトウィンドウは2sであり、これは、他の標準と比較して短く、また遅延接続のより高速な発見を確実にする。
図9A〜図9Aは、いくつかの実施形態により周辺デバイスおよびユーザデバイスによって実装される例示的なデータ転送プロセスに対する簡略化された流れ図である。
デバイス間でデータを転送するときに、ソーシャルネットワーククライアントアプリケーション(ユーザデバイス)とソーシャルネットワークプラットフォームの通信サーバとの間で送信されるデータパケットのフォーマットは、所定のフォーマットプロトコルに従い、それにより、通信サーバは、データパケットの性質、およびそのオリジナルソースおよび最終デスティネーション、およびデスティネーションパーティに転送されるべきデータパケットのペイロードを識別することができる。データパケットのペイロードは、可変長データ(たとえば、インスタントメッセージ、画像、音声、異なる種類の周辺デバイスからの符号化された命令など)を含む可能性が高いので、ユーザデバイスと周辺デバイスとの間で使用される接続の種類に応じて、またユーザデバイスと通信サーバとの間で使用される接続の種類に応じて、単一のデータパケットは、分割され、接続を介して複数のチャンクで送信され得る。
ユーザデバイスと周辺デバイスとの間の接続を一例として使用すると、接続が古典的なBluetooth(登録商標)接続である場合に、データ伝送は、固定長を持たないデータストリームで実行され得る。しかしながら、接続がBluetooth(登録商標) Low Energy接続である場合、データ長は、各データ転送オペレーション(たとえば、読み出し、書き込み、指示、または通知オペレーション)に対して最大限度(たとえば、20バイト)を有する。したがって、可変長データパケットを送信するために、データパケットは、チャンクに分割され、順に公開された特性に対する値として記憶され、または値に書き込まれる必要があり、ユーザデバイスおよび周辺デバイスは、各検出された値をデータの連続的ストリームの一部として解釈する必要があり、すべてのチャンクに対する値が取得された後にデータパケットを組み立て直す。言い換えれば、連続的データストリームをシミュレートするプロセスは、Bluetooth(登録商標) Low Energy接続(またはデータ転送オペレーションの短いバーストのみを許す他の種類の接続)の上で可変長データを転送するために実行される必要がある。
いくつかの実施形態では、古典的なBluetooth(登録商標)接続が使用されるときに、所定のrfcommサービス(たとえば、ソーシャルネットワーククライアントアプリケーションに関連付けられているサービスを指定する)に対する所定のUUID(または、0xFEC6)が、周辺デバイスによって公開される。ユーザデバイスは、デバイス発見プロセスを実行する、たとえば、図2Fおよび付属する説明において示されているプロセスとして実行するときにこの所定のUUIDをスキャンする。接続が確立された後、データは、データストリームにおけるBluetooth(登録商標)接続の上で送信される。各データパケットは、Request、Response to the Request、またはPush Requestのうちの1つを含む。プッシュ要求データパケットは、Push Requestを含み、Push Requestは、応答を必要としない。Push Requestは、サポートサーバまたは通信サーバから命令またはメッセージを送信し、ユーザデバイスまたは周辺デバイスをターゲットとするために使用される。Requestは、ユーザデバイスまたは周辺デバイスから要求またはメッセージを送信し、サポートサーバまたは通信サーバをターゲットとするために使用される。各Requestは、対応するResponseを必要とする。Requestおよびその対応するResponseは、同じシーケンス番号を共有することによってマッチングされる。各データパケットは、単一のRequest、Response、またはPush Requestを含み、各データパケットは、それぞれのデータストリームとして接続の上で送信される。
いくつかの実施形態では、各データパケットは、固定長ヘッダ部分と可変長本体部分とを含む。たとえば、いくつかの実施形態では、ヘッダ部分は、異なる固定フィールド、たとえば、ソーシャルネットワーキングサービスを表すマジックナンバー(たとえば、bMagicNumber=0xFE)、プロトコルバージョン番号(たとえば、bVer=1)、パケット全長(たとえば、ヘッダ+本体=45バイト)、コマンドID(たとえば、認証要求に対するコマンドID=3、データをサポートサーバに送信するコマンドID=5など)、パケットシーケンス番号(たとえば、Requestに対するシーケンス番号=非ゼロの数、Push Requestに対するシーケンス番号=0)を入力するためのそれぞれのフィールドを含み得る。
次は、例示的なデータパケットフォーマットである。
//データパケット//
//固定長ヘッダ//
Struct BpFixHead
{
unsigned char bMagicNumber;
unsigned char bVer;
unsigned short nLength;
unsigned short nCmdld;
unsigned short shortnSeq;
};
//可変長本体//
Protoalbuf //バイナリのデータ//
各データパケットは、Request、Response、またはPush Requestを含み、各Request、Response、およびPush Requestは、ソーシャルネットワークアプリケーションによって提供されるそれぞれの機能(たとえば、認証、連絡先リストを取る、チャットセッションを開始する、グループチャットセッションをセットアップする、メッセージを送信する、画像を送信する、音声メッセージを再生する、など)に対応するそれぞれのコマンドIDを含む。
データパケットが、可変長データパケットをサポートする接続の上で送信されるときに、データパケット長フィールドは、データパケット全体の終わりにいつ達したかを受信者が決定することを可能にする。ヘッダ情報の他のフィールドは、受信者がデータパケットの本体とともに含まれるデータを処理する仕方を知ること、たとえば、それをさらに転送すること、中に含まれているコマンドを解凍して実行すること、中に含まれているパラメータを使用して要求された機能を実行すること、または中にあるデータを異なるフォーマットに翻訳または変換すること、などを可能にする。
接続がBluetooth(登録商標) Low Energy接続である場合、データは、データの小さな部分のみが各データ転送オペレーションを通じて送信され得ることを意味する公開された特性を通じて送信される。特性によって設計されたデータサイズ限度よりも大きい可変長データパケットを送信するために、公開された特性を通じてデータ転送オペレーションを使用して連続的データストリームをシミュレートするための方法が必要である。
図9Aは、データパケット(たとえば、Request)が周辺デバイスからユーザデバイスに送信されるときに周辺デバイスおよびユーザデバイスによって実行されるオペレーションの簡略化された流れを示している。図9Bは、データパケット(たとえば、Push RequestまたはResponse)がユーザデバイスから周辺デバイスに送信されるときに周辺デバイスおよびユーザデバイスによって実行されるオペレーションの簡略化された流れを示している。Bluetooth(登録商標) Low Energy接続は、データ送信および受信が全二重方式で実行されることを可能にするので、図9Aおよび図9Bに示されているプロセスは、互いに干渉することなく多重化方式で実行され得る。
いくつかの実施形態では、周辺デバイスがBluetooth(登録商標) Low Energy接続を介してユーザデバイスに接続されるときに、周辺デバイスは、ソーシャルネットワーキングクライアントアプリケーションのサービスに対するプリセットされたUUID(たとえば、0xFEC6)、および2つの特性(たとえば、UUID:0xFEC7およびUUID:xFEC8)を公開する。一方の特性(たとえば、0xFEC7)は、ユーザデバイスからデータを受け付けるための特性であり(すなわち、データを読み出すための特性)、それは「write」プロパティを有効化している。他方の特性(たとえば、0xFEC8)は、データをユーザデバイスに送信するための特性であり(すなわち、データを書き込むための特性)、それは「indicate」プロパティを有効化している。ユーザデバイスは、周辺デバイスへの接続を確立したときにこれら2つの公開された特性を検出し、サブスクライブする。これは、それぞれ図9Aおよび図9Bにおいて第1のステップとして示されている。
図9Aに示されているように、データを周辺デバイスからユーザデバイスに送信するためのプロセスは、次を含む。
(1)周辺デバイスは、ユーザデバイスを介して別のパーティ(たとえば、ユーザ、通信サーバ、サポートサーバ、または別の周辺デバイス)に送信されるべきデータパケット(たとえば、Request)を取得する。データパケットは、上で説明されているフォーマットに従う。
(2)周辺デバイスは、データをユーザデバイスに送信するためにユーザデバイスに公開されている特性(たとえば、データを書き込むための特性0xFEC8)を決定する。
(3)周辺デバイスは、書き込みのための公開されている特性に含まれる値のサイズ限度を取得し、データパケットを1つまたは複数のフレームと残り部分とに分割する。特性に含まれる値の最大サイズ限度は、フレームサイズと称される。異なる特性は、その値に対する異なる最大サイズ限度を有する。典型的には、フレームに対するサイズ限度は20バイトであるが、データパケットは数百、数千バイトのサイズになり得る。
(4)周辺デバイスは、書き込みのための公開されている特性のサイズ限度に従ってデータパケットをフレームのシーケンスに分割する。たとえば、ヘルスモニタリングリストバンドが、1キロバイトのデータをユーザデバイスに送信する必要がある場合、データパケットは、1024バイトのサイズを有し、書き込みのための特性に対する値のサイズ限度は20バイトであり、次いで、データパケットは51個のフレームのシーケンスに分割され、フレームサイズは20バイトであり、末尾に4バイトの残り部分を有する。
(4)周辺デバイスは、残り部分をもしあればパディングして、安全なフレームにする。
(5)完全なフレームのシーケンス(パディングされた残り部分を含む)を送信するために、周辺デバイスは、書き込みのための公開されている特性の値として各フレームを1つずつ書き込み、次いで、更新された値をユーザデバイスに通知する。いくつかの実施形態では、特性は、「indicate」プロパティを有効化しており、したがって、毎回、周辺デバイスは新規値(たとえば、完全なフレームシーケンス内の次の未送信のフレーム)を書き込みのための特性に書き込み、新規値がユーザデバイスにプッシュされる。いくつかの実施形態では、書き込みのための特性に対する有効化されたプロパティとして「indicate」の代わりに「notify」を使用することも可能である。しかしながら、「indicate」モードは、確認を必要とし、確認は、周辺デバイスがシーケンス内の次の未送信のフレームをいつ送信するかを知ることを可能にする。
(6)ユーザデバイスの側では、ユーザデバイスは書き込みのための公開されている特性における更新された値の指示を受信する。
(7)ユーザデバイスが書き込みのための公開されている特性における現在値を取得した後、ユーザデバイスは、値(すなわち、現在フレーム)の受信に対するそれぞれの確認を送信する。
(8)周辺デバイスが書き込みのための公開されている特性における現在フレームが受信されていることの確認を受信した後、周辺デバイスは、書き込みのための特性に対する値として次の未使用のフレームを書き込み、指示モードを介して更新された値をユーザデバイスにプッシュする。
(9)ステップ6〜8は、周辺デバイスが完全なフレームのシーケンス内のすべてのフレームの送信を終了するまで繰り返される。
(10)ユーザデバイスが、完全なフレームのシーケンス内のフレームのすべてを受信したときに、ユーザデバイスは、データパケット(たとえば、Request)を組み立て直すことができる。
図9Bは、Bluetooth(登録商標) Low Energy接続を介してデータパケット(たとえば、Push RequestまたはResponse)がユーザデバイスから周辺デバイスにどのように送信され得るかを示している。
(1)ユーザデバイスは、周辺デバイスに送信されるべきデータパケット(たとえば、Push RequestまたはResponse)を取得する。データパケットは、上で説明されているフォーマットに従う。
(2)ユーザデバイスは、データをユーザデバイスから受信するためにユーザデバイスに公開されている特性(たとえば、データを読み出すための特性0xFEC7)を決定する。ユーザデバイスは、読み出しのための公開されている特性に含まれる値のサイズ限度を取得する。
(4)周辺デバイスは、読み出しのための公開されている特性のサイズ限度に従ってデータパケットをフレームのシーケンスに分割する。
(5)上記のフレーム分割から残り部分がある場合、周辺デバイスは残り部分をパディングして完全なフレームにする。フレーム分割および残り部分のパディングからの完全なフレームは、周辺デバイスに送信されるべきデータパケットに対する完全なフレームのシーケンスを形成する。
(5)完全なフレームのシーケンス(パディングされた残り部分を含む)を送信するために、ユーザデバイスは、読み出しのための公開されている特性の値として各フレームを1つずつ書き込む。読み出しのための公開されている特性における現在値が周辺デバイスによって確認応答されたときに、ユーザデバイスは、次の未送信のフレームを特性に書き込むステップを続けることができる。
(6)周辺デバイスの側では、周辺デバイスは、特性の値が更新されたという通知を受信し、値を読み出し、それを読み出しバッファに記憶する。周辺デバイスは、また、適宜、更新された値に対する確認応答を送信する。
(9)ステップ5〜6は、ユーザデバイスが完全なフレームのシーケンス内のすべてのフレームの送信を終了するまで繰り返される。
(10)周辺デバイスが、完全なフレームのシーケンス内のフレームのすべてを受信したときに、周辺デバイスは、データパケット(たとえば、Push RequestまたはResponse)を組み立て直すことができる。
いくつかの実施形態では、データパケット(たとえば、Requests、Responses、およびPush Requestsを含むデータパケット)が、ソーシャルネットワーク環境の異なるパーティ(たとえば、周辺デバイス、ユーザデバイス、通信サーバ、およびサポートサーバ)間で送信されるときに、データパケットは、順に送信されるものとしてよく、特定の実装に応じて順序通りでなく送信することもできる。いくつかの実施形態では、データパケットを送信するステップおよび受信するステップは、全二重方式で実行され得る。デバイスがデータパケット送信しているプロセスに入っているときに、デバイスは、いつでもデータパケットを受信し得る。
いくつかの実施形態では、周辺デバイスは、直前のデータパケットが受信されたときにのみ次のデータパケットをユーザデバイスに送信することができることが要求される。それに対応して、ユーザデバイスは、直前のデータパケットが周辺デバイスによって受信されたときにのみ次のデータパケットを周辺デバイスに送信することができることが要求される。周辺デバイスでは、発信データパケットに対するシーケンスがあり、また着信データパケットに対してもシーケンスがある。発信データパケットに対するシーケンスは、Requestsを含むパケットを含み、着信データパケットに対するシーケンスは、Push RequestsおよびResponsesを含むパケットを含む。
いくつかの実施形態では、ユーザデバイスと通信サーバとの間のデータパケット送信も全二重である。言い換えれば、ユーザデバイスがパケットを通信サーバに送信しているときに、ユーザデバイスは、いつでも通信サーバからデータパケットを受信することもできる。ユーザデバイスは、同時に複数のデータパケットを送信することができる。たとえば、ユーザデバイスは、画像をダウンロードする要求を伴うデータパケットを送信することができるが、要求に対する応答を含むデータパケットの前に、ユーザデバイスは、音声メッセージをダウンロードする要求を伴う別のデータパケットを送信することもできる。そのようなものとして、順序通りでないデータパケットを有するのは普通のことである。いくつかの実施形態では、順次的データ伝送は、適宜実装され、Requestを含むデータパケットが送信されるときに、ユーザデバイスは対応するResponseを含むデータパケットが来るのを待つ。次のRequestに対するデータパケットの送信は、直前のRequestに対するResponseが受信されるまで開始されない。
いくつかの実施形態では、Push Requestを含むデータパケットに対するシーケンス番号は、常に、ゼロに設定されるが、RequestsおよびResponsesを含むデータパケットに対するシーケンス番号は、決してゼロにならない。
いくつかの実施形態では、通信サーバおよびサポートサーバは、いつでも、Push Requestを送信することができる。いくつかの実施形態では、サポートサーバが、特定のPush Requestに対する応答を必要とする場合に、サポートサーバは、Push Requestの本体に応答に対する要求を含めることができ、それにより、Push Requestを受信する周辺デバイスは、その後のRequestで要求された応答を送信することができる。Requestの本体は、サポートサーバからすでに受信されているPush Requestを参照することができる。
図10A〜図10Cは、いくつかの実施形態による周辺デバイス、ユーザデバイス、通信サーバ、およびサポートサーバの間の例示的なデータ送信プロセスを示すブロック図である。
図10Aに示されているように、Request(AuthReq(seq=1))が周辺デバイスからユーザデバイスに送信され、ユーザデバイスによって通信サーバに転送される。Request(AuthReq(seq=1))へのResponseは、通信サーバによってユーザデバイスに送り返され、ユーザデバイスから周辺デバイスに転送される。
また、図10Aに示されているように、別のRequest(SendDataEquipSvrReq(seq=2))が周辺デバイスから送信され、ユーザデバイスおよび通信サーバを通じてサポートサーバに転送される。この第2のRequest(SendDataEquipSvrResp (seq=2))に対するResponseは、送信サーバおよびユーザデバイスを通じてサポートサーバによって周辺デバイスに送り返される。
また、図10Aに示されているように、通信サーバは、いつでもユーザデバイスを通じてPush Request(DataChangePushReq (seq=0))を周辺デバイスに送信することができる。
同様に、サポートサーバも、いつでも通信サーバおよびユーザデバイスを通じてPush Request(EquipSvrDataPushReq (seq=0))を周辺デバイスに送信することができる。
図10Bは、通信サーバは、いつでもPush Request(たとえば、DataChangePushReq (seq=0))を挿入することができ、Push Request(たとえば、DataChangePushReq(seq=0))は、すでに受信されているRequest(SendDataEquipSvr(seq=2))に対するResponse(たとえば、SendDatatoEquipSvrResp(seq=2))が周辺デバイスに送り返される前に周辺デバイスに(ユーザデバイスを介して)送信され得ることを示している。
図10Bは、また、通信サーバが、いつでもPush Request(たとえば、EquipSvrDataPushReq (seq=0))を挿入することができることを示している。Push Request(たとえば、EquipSvrDataPushReq (seq=0))は、通信サーバから受信されたPush Requestであってよく、通信サーバは、適宜、それをすでに受信されているRequest(SendDataEquipSvr(seq=2))に対するResponse(たとえば、SendDatatoEquipSvrResp(seq=2))が周辺デバイスに送り返される前に周辺デバイスに(ユーザデバイスを介して)送信し得る。
図10Cは、周辺デバイスから通信サーバおよびサポートサーバに送信されるRequestsを含む多数のデータパケットがあるときに、これらのデータパケットは、順序通りでなくサポートサーバに届き得る(たとえば、SendDatatoEquipSvrReq(seq=3)はSendDatatoEquipSvrReq (seq=2))の前にサポートサーバに届く)。その結果、順序通りでないRequestsに対するResponsesもまた順序通りでないものとしてよい(たとえば、SendDatatoEquipSvrResp(seq=3)はSendDatatoEquipSvrResp (seq=2)の前に通信サーバ、ユーザデバイス、および周辺デバイスに届く)。
図11Aは、いくつかの実施形態による周辺デバイスによって実行される例示的なBluetooth(登録商標)接続プロセス1100に対する流れ図である。
いくつかの実施形態では、Bluetooth(登録商標)接続を介して周辺デバイスをユーザデバイスに接続するための方法は、周辺デバイスによって実行される。いくつかの実施形態では、周辺デバイスは、ブロードキャストプロセスを開始し(1102)は、これはユーザデバイス上で実行されているソーシャルネットワーキングアプリケーションに関連付けられているソーシャルネットワーキングサービスについて指定された所定の識別子を含むデバイス発見メッセージをブロードキャストするステップを含む。周辺デバイスは、ユーザデバイスから、デバイス発見メッセージに対応する接続要求を受信する(1112)。ユーザデバイスから接続要求を受信したことに応答して、周辺デバイスは、ユーザデバイスへのBluetooth(登録商標)接続を確立する(1114)。
いくつかの実施形態では、ブロードキャストプロセスにおいて、周辺デバイスは、初期ブロードキャスト期間に一連の第1の送信タイムスロットのうちの各々の中でデバイス発見メッセージをブロードキャストし(1104)、初期ブロードキャスト期間においてデバイス発見メッセージに対応する接続要求が受信されない場合、初期ブロードキャスト期間に続くその後のブロードキャスト期間において一連の第2の送信タイムスロットの各々の中でデバイス発見メッセージをブロードキャストし、各第1の送信タイムスロットは、各第2の送信タイムスロットよりも短い。いくつかの実施形態では、周辺デバイスは、初期ブロードキャスト期間を30秒にプリセットする(1106)。いくつかの実施形態では、周辺デバイスは、各第1の送信タイムスロットを500ms以下にプリセットする(1108)。いくつかの実施形態では、周辺デバイスは、各第2の送信タイムスロットを3s以下にプリセットする(1110)。いくつかの実施形態では、周辺デバイスは、各第1の送信タイムスロットを500msにプリセットする。いくつかの実施形態では、周辺デバイスは、各第2の送信タイムスロットを3msにプリセットする。
いくつかの実施形態では、周辺デバイスは、周辺デバイスとユーザデバイスとの間の接続イベントのために2秒以下のタイムアウトウィンドウをプリセットする(1116)。いくつかの実施形態では、周辺デバイスは、2つの連続する接続イベントの間に30msのタイミングギャップをプリセットする。
いくつかの実施形態では、所定の識別子が、ソーシャルネットワーキングアプリケーションの一次サービスに対してソーシャルネットワーキングアプリケーションのサプライヤーによって指定される。
図11Aは、いくつかの実施形態によるユーザデバイスによって実行される例示的なBluetooth(登録商標)接続プロセス1120に対する流れ図である。プロセス1120は、プロセス1100に対応する。したがって、様々なタイミングパラメータに関して説明されている特徴もプロセス1120に適用される。
いくつかの実施形態では、ユーザデバイスは、デバイススキャンプロセスを開始し(1122)は、これは周辺デバイスからデバイス発見メッセージを検出するステップと、デバイス発見メッセージがユーザデバイス上で実行されているソーシャルネットワーキングアプリケーションに関連付けられているソーシャルネットワーキングサービスについて指定された所定の識別子を含むかどうかを決定するステップとを含む。デバイス発見メッセージがユーザデバイス上で実行されているソーシャルネットワーキングアプリケーションに関連付けられているソーシャルネットワーキングサービスについて指定された所定の識別子を含むと決定した後、ユーザデバイスは、周辺デバイスに、デバイス発見メッセージに対応する接続要求を送信し(1124)、周辺デバイスとのBluetooth(登録商標)接続を確立する(1126)。
上記の例示的なプロセスに対する他の特徴および態様は、本開示の他の部分に取り上げられている。
図12A〜図12Bは、いくつかの実施形態による周辺デバイスとユーザデバイスとの間でデータパケットを送信するための例示的なプロセス1200に対する流れ図である。プロセス1200は、Bluetooth(登録商標) Low Energy接続を介してユーザデバイスに接続されている周辺デバイスによって実行される。
いくつかの実施形態では、周辺デバイスは、シミュレートされたデータストリームでデータ(たとえば、Requestを含むデータパケット)をユーザデバイスに送信する(1202)。データをシミュレートされたデータストリームで送信するために、周辺デバイスは、データを書き込むための第1のBluetooth(登録商標)特性(たとえば、「indicate」プロパティが有効化されているBluetooth(登録商標)特性)を識別し(1204)、第1のBluetooth(登録商標)特性は現在の接続イベントで周辺デバイスによってユーザデバイスに公開されている。周辺デバイスは、ユーザデバイスに送信されるべきデータパケット(たとえば、合計1024バイト)をデータフレームのシーケンス(たとえば、51個のフレーム)とゼロまたは1つの残り部分とに分割し(1206)、各データフレームは識別された第1のBluetooth(登録商標)特性の所定のデータサイズ(たとえば、20バイト)に等しいそれぞれのサイズ(たとえば、20バイト)を有し、残り部分(たとえば、4バイト)は識別された第1のBluetooth(登録商標)特性の所定のデータサイズよりも小さいそれぞれのサイズを有する。
いくつかの実施形態では、データフレームのシーケンスのうちの各々について、周辺デバイスは、データフレームを識別された第1のBluetooth(登録商標)特性に対するそれぞれの値に書き込み(1028)、ユーザデバイスによる読み出しのために識別された第1のBluetooth(登録商標)特性をプッシュする。いくつかの実施形態では、ユーザデバイスによる読み出しのために識別された第1のBluetooth(登録商標)特性をプッシュするステップは、指示オペレーションを通じて識別された第1のBluetooth(登録商標)特性の更新された値を読み出すことをユーザデバイスに要求するステップをさらに含む(1210)。
いくつかの実施形態では、周辺デバイスは、残り部分(もしあれば)をパディングして識別された第1のBluetooth(登録商標)特性の所定のサイズ(たとえば、20バイト)に等しいそれぞれのサイズ(たとえば、20バイト)を有するパディングされた残り部分を取得する(1212)。周辺デバイスは、パディングされた残り部分を識別された第1のBluetooth(登録商標)特性に対するそれぞれの値に書き込む(1214)。周辺デバイスは、ユーザデバイスによる読み出しのために識別された第1のBluetooth(登録商標)特性をプッシュする。
いくつかの実施形態では、データフレームのシーケンスのうちの各々について、周辺デバイスは、ユーザデバイスから識別された第1のBluetooth(登録商標)特性の読み出しのためにそれぞれの確認を受信し(1216)、データフレームのシーケンスの中の次のデータフレームの書き込みおよびプッシュは、データパケット内に送信されるべきデータフレームまたは残り部分がなくなるまでそれぞれの確認を受信したことに応答して実行される。
いくつかの実施形態では、ユーザデバイスは、識別された第1のBluetooth(登録商標)特性から読み出されたそれぞれの値をデータパケットに組み立て直す。
いくつかの実施形態では、データパケットは、周辺デバイスから発信され、周辺デバイスのサポートサービスプロバイダをターゲットとするメッセージを含む。いくつかの実施形態では、データパケットは、周辺デバイスから発信され、ユーザデバイスのユーザをターゲットとするメッセージを含む。いくつかの実施形態では、データパケットは、周辺デバイスから発信され、ユーザデバイスのユーザのソーシャルネットワーク連絡先をターゲットとするメッセージを含む。いくつかの実施形態では、ユーザデバイスのユーザのソーシャルネットワーク連絡先は、別のユーザである。いくつかの実施形態では、ユーザデバイスのユーザのソーシャルネットワーク連絡先は、別の周辺デバイスである。
いくつかの実施形態では、周辺デバイスは、第2のシミュレートされたデータストリームでユーザデバイスからデータを受信する(1218)。第2のシミュレートされたデータストリームでユーザデバイスからデータを受信するために、周辺デバイスは、データを受信するための第2のBluetooth(登録商標)特性に書き込む書き込み要求のシーケンスをユーザデバイスから受信し(1220)、第2のBluetooth(登録商標)特性は現在の接続イベントで周辺デバイスによってユーザデバイスに公開されている。書き込み要求のシーケンスの各々を受信したことに応答して、周辺デバイスは、第2のBluetooth(登録商標)特性の中のそれぞれの値を読み出す(1222)。周辺デバイスの読み出しバッファに、周辺デバイスは、書き込み要求のシーケンスの各々に応答して読み出されたそれぞれの値を記憶する(1224)。周辺デバイスは、読み出しバッファに記憶されているそれぞれの値を第2のデータパケットに組み立て直す(1226)。
いくつかの実施形態では、第2のデータパケットは、周辺デバイスのサポートサービスプロバイダから発信され、周辺デバイスをターゲットとする命令である。いくつかの実施形態では、第2のデータパケットは、ユーザデバイス上で実行されているソーシャルネットワーククライアントアプリケーションの通信サーバから発信され、周辺デバイスをターゲットとする命令である。いくつかの実施形態では、第2のデータパケットは、周辺デバイスによって送信された以前の要求に対する応答である。
図13A〜図13Bは、いくつかの実施形態による周辺デバイスとユーザデバイスとの間でデータパケットを送信するための例示的なプロセス1300に対する流れ図である。プロセス1300は、Bluetooth(登録商標) Low Energy接続を介して周辺デバイスに接続されているユーザデバイスによって実行される。
いくつかの実施形態では、ユーザデバイスは、第2のシミュレートされたデータストリームでデータを周辺デバイスに送信する(1302)。シミュレートされたデータストリームでデータを送信するために、ユーザデバイスは、周辺デバイスにデータを送信するために第1のBluetooth(登録商標)特性(たとえば、書き込みプロパティが有効化されている特性)を識別し(1304)、第1のBluetooth(登録商標)特性は現在の接続イベントで周辺デバイスによってユーザデバイスに公開されている。ユーザデバイスは、周辺デバイスに送信されるべき第1のデータパケットをデータフレームのシーケンスとゼロまたは1つの残り部分とに分割し(1306)、各データフレームは識別された第1のBluetooth(登録商標)特性の所定のデータサイズに等しいそれぞれのサイズを有し、残り部分は識別された第1のBluetooth(登録商標)特性の所定のデータサイズよりも小さいそれぞれのサイズを有する。データフレームのシーケンスのうちの各々について、ユーザデバイスは、データフレームを識別された第1のBluetooth(登録商標)特性のそれぞれの値に書き込むそれぞれの書き込み要求を送信する(1308)。
いくつかの実施形態では、フレーム分割の後に残り部分がある場合に、ユーザデバイスは、残り部分をパディングして識別された第1のBluetooth(登録商標)特性の所定のサイズに等しいそれぞれのサイズを有するパディングされた残り部分を取得する(1310)。ユーザデバイスは、また、パディングされた残り部分を識別された第1のBluetooth(登録商標)特性のそれぞれの値に書き込むそれぞれの書き込み要求を送信する(1312)。
いくつかの実施形態では、データフレームのシーケンスのうちの各々について、ユーザデバイスは、データフレームに関連付けられているそれぞれの書き込み要求に対するそれぞれの確認応答を受信し(1314)、データフレームのシーケンスの中の次のデータフレームに対するそれぞれの書き込み要求は、第1のデータパケット内に送信されるべきデータフレームまたは残り部分がなくなるまでそれぞれの確認応答を受信したことに応答して送信される。
いくつかの実施形態では、周辺デバイスは、識別された第1のBluetooth(登録商標)特性に書き込まれたそれぞれのデータ値を第1のデータパケットに組み立て直す。いくつかの実施形態では、第1のデータパケットは、周辺デバイスのサポートサービスプロバイダから発信され、周辺デバイスをターゲットとする命令を含む。いくつかの実施形態では、第1のデータパケットは、周辺デバイス上で実行されているソーシャルネットワーキングクライアントアプリケーションの通信サーバから発信された命令を含む。
いくつかの実施形態では、ユーザデバイスは、第2のシミュレートされたデータストリームで周辺デバイスからデータを受信する(1316)。データを第2のシミュレートされたデータストリームで受信するために、ユーザデバイスは、第2のBluetooth(登録商標)特性(たとえば、indicateプロパティが有効化されている特性)を読み出す指示のシーケンスを周辺デバイスから受信し(1318)、第2のBluetooth(登録商標)特性は現在の接続イベントで周辺デバイスによってユーザデバイスに公開されている。指示のシーケンスのうちの各々を受信したことに応答して、ユーザデバイスは、第2のBluetooth(登録商標)特性におけるそれぞれの値を読み出し、それぞれの値を読み出すためにそれぞれの確認を送信し、ユーザデバイスの読み出しバッファにそれぞれの体を記憶する(1320)。ユーザデバイスは、読み出しバッファに記憶されているそれぞれの値を第2のデータパケットに組み立て直す(1322)。
いくつかの実施形態では、第2のデータパケットは、周辺デバイスから発信され、周辺デバイスのサポートサービスプロバイダをターゲットとするメッセージを含む。いくつかの実施形態では、第2のデータパケットは、周辺デバイスから発信され、ユーザデバイスのユーザをターゲットとするメッセージを含む。いくつかの実施形態では、第2のデータパケットは、周辺デバイスから発信され、ユーザデバイスのユーザのソーシャルネットワーク連絡先をターゲットとするメッセージである。
図12A〜図12Bおよび図13A〜図13Bに示されているプロセスの他の態様および特徴は、本開示の他の部分で説明されている。
図14A〜図14Bは、いくつかの実施形態によるソーシャルネットワーキングプラットフォームの上でアクセスに対するメッセージ(たとえば、それぞれのRequests、Responses、およびPush Requestsを含むデータパケット)を送信し、周辺デバイスをコントロールするための例示的なプロセス1400に対する流れ図である。
いくつかの実施形態では、プロセス1400は、周辺デバイスを含む周辺デバイスの種類に対するサポートサービスプロバイダのサーバ(たとえば、サポートサーバ)において実行される。
いくつかの実施形態では、サポートサーバは、ソーシャルネットワークプラットフォームのサーバに周辺デバイスに対するサポートサービスプロバイダとして登録する(1402)。サポートサーバは、命令を周辺デバイスに送信する通信イベントを開始し(1404)、この通信イベント開始するステップは命令に対するプッシュ要求データパケットを生成するステップであって、プッシュ要求データパケットは周辺デバイスを命令のターゲットとして識別する、ステップと、プッシュ要求データパケットを、ソーシャルネットワーキングプラットフォームのサーバと周辺デバイスに結合されたユーザデバイスとを介して周辺デバイスに送信するステップとを含む。いくつかの実施形態では、プッシュ要求データパケットは、命令のターゲットからの応答を必要とせず、この方法は、周辺デバイスからプッシュ要求データパケットに対する応答を受信することなく要求データパケットを送信した後に通信イベントを終了させるステップをさらに含む。
いくつかの実施形態では、サポートサーバは、要求データパケットを、周辺デバイスに結合されたユーザデバイスとソーシャルネットワーキングプラットフォームのサーバとを介して周辺デバイスから受信する(1406)。要求データパケットを周辺デバイスから受信したことに応答して、サポートサーバは、応答データパケットを、ソーシャルネットワーキングプラットフォームのサーバと周辺デバイスに結合されたユーザデバイスとを介して、周辺デバイスに送信する(1408)。
いくつかの実施形態では、プッシュ要求データパケット、要求データパケット、および応答データパケットは、固定長パケットヘッドと可変長パケット本体とを有する(1410)。いくつかの実施形態では、固定長パケットヘッダは、所定のコマンド識別子とそれぞれのパケットシーケンス番号とを含む。いくつかの実施形態では、応答データパケットは、要求データパケットに含まれる第2のパケットシーケンス番号とマッチする第1のパケットシーケンス番号を含み、プッシュ要求データパケットは、第1および第2のパケットシーケンス番号と異なる第3のパケットシーケンス番号を含む。
いくつかの実施形態では、所定のコマンド識別子は、ソーシャルネットワークプラットフォームのそれぞれの機能にアクセスするためのコマンドに対応する。いくつかの実施形態では、このコマンドは、ソーシャルネットワークプラットフォームのユーザ認証機能にアクセスするためのものであり、パケット本体でソーシャルネットワークプラットフォーム上の周辺デバイスに割り当てられるユーザアイデンティティの種類を指定する。いくつかの実施形態では、このコマンドは、ソーシャルネットワークプラットフォーム上の周辺デバイスに対する連絡先リスティングにアクセスするためのものであり、パケット本体でユーザ、サポートサービスプロバイダ、または別の周辺デバイスを表す少なくとも1つの連絡先を指定する。いくつかの実施形態では、このコマンドは、ソーシャルネットワークプラットフォーム上のメッセージング機能にアクセスするためのものであり、パケット本体でユーザ、サポートサービスプロバイダ、または別の周辺デバイスを表す少なくとも1つの連絡先をターゲットとするメッセージを指定する。いくつかの実施形態では、このコマンドは、ソーシャルネットワークプラットフォーム上のメッセージング機能にアクセスするためのものであり、パケット本体でユーザ、サポートサービスプロバイダ、または別の周辺デバイスを表す少なくとも1つの連絡先から発信されるメッセージを指定する。いくつかの実施形態では、このコマンドは、ソーシャルネットワークプラットフォーム上のメッセージング機能にアクセスするためのものであり、パケット本体でユーザ、サポートサービスプロバイダ、または別の周辺デバイスを表す少なくとも1つの連絡先をターゲットとするメッセージを指定する。いくつかの実施形態では、このコマンドは、ソーシャルネットワークプラットフォーム上のグループチャット機能にアクセスするためのものであり、パケット本体で、複数のユーザ、サポートサービスプロバイダ、および複数の他の周辺デバイスのうちの2つまたはそれ以上を含む、周辺デバイスと周辺デバイスの2つまたはそれ以上のそれぞれのソーシャルネットワーク連絡先との間のグループチャットセッションを指定する。いくつかの実施形態では、このコマンドは、ソーシャルネットワークプラットフォーム上の会話ログ機能にアクセスするためのものであり、パケット本体で、複数のユーザ、サポートサービスプロバイダ、および複数の他の周辺デバイスのうちの1つまたは複数を含む、周辺デバイスと周辺デバイスの1つまたは複数のそれぞれのソーシャルネットワーク連絡先との間のチャットセッションに対する会話ログを指定する。他の種類のコマンドは、本開示の他の部分で説明されているか、または本開示で取り上げられている使用例に照らして明らかになる場合がある。
図14A〜図14Bに示されているプロセスの他の態様および特徴は、本開示の他の部分で説明されている。
図15A〜図15Bは、いくつかの実施形態によるソーシャルネットワーキングプラットフォームの上でアクセスに対するメッセージ(たとえば、それぞれのRequests、Responses、およびPush Requestsを含むデータパケット)を送信し、周辺デバイスをコントロールするための例示的なプロセス1500に対する流れ図である。
いくつかの実施形態では、プロセス1500は、ソーシャルネットワークプラットフォームのサーバ(たとえば、通信サーバ)で実行される。
いくつかの実施形態では、通信サーバは、周辺デバイスを、周辺デバイスに結合されたユーザデバイスの関連付けられている周辺デバイスとして登録する(1502)。通信サーバは、第1のプッシュ要求データパケットを、周辺デバイスを含む周辺デバイスの種類に対するサポートサービスプロバイダから受信し、第1のプッシュ要求データパケットは、周辺デバイスを第1のプッシュ要求データパケットのターゲットとして識別する(1504)。第1のプッシュ要求データパケットを受信したことに応答して、通信サーバは、第1のプッシュ要求データパケットを、周辺デバイスに結合されたユーザデバイスを介して周辺デバイスに転送する(1506)。いくつかの実施形態では、第1のプッシュ要求データパケットは、命令のターゲットからの応答を必要としない。
いくつかの実施形態では、通信サーバは、命令を周辺デバイスに送信する通信イベントを開始し、通信イベント開始するステップは命令に対する第2のプッシュ要求データパケットを生成するステップであって、第2のプッシュ要求データパケットは周辺デバイスを命令のターゲットとして識別する、ステップと、第2のプッシュ要求データパケットを、周辺デバイスに結合されたユーザデバイスを介して周辺デバイスに送信するステップとを含む(1508)。いくつかの実施形態では、第2のプッシュ要求データパケットは、命令のターゲットからの応答を必要とせず、この方法は、周辺デバイスから第2のプッシュ要求データパケットに対する応答を受信することなく第2のプッシュ要求データパケットを送信した後に通信イベントを終了させるステップをさらに含む。
いくつかの実施形態では、通信サーバは、第2の要求データパケットを、周辺デバイスに結合されたユーザデバイスを介して周辺デバイスから受信し、第2の要求データパケットはサポートサービスプロバイダを第2の要求データパケットのターゲットとして識別する(1510)。周辺デバイスから第2の要求データパケットを受信したことに応答して、通信サーバは、第2の要求データパケットをサポートサービスプロバイダのサーバに転送する(1512)。いくつかの実施形態では、第2の要求データパケットをサポートサービスプロバイダのサーバに転送したことに応答して、通信サーバは、サポートサービスプロバイダのサーバから第2の応答データパケットを受信し、第2の応答データパケットは第2の要求データパケットに応答してサポートサービスプロバイダのサーバによって生成される。第2の応答データパケットを受信したことに応答して、通信サーバは、第2の応答データパケットを、周辺デバイスに結合されたユーザデバイスを介して周辺デバイスに転送する(1516)。
いくつかの実施形態では、プッシュ要求データパケット、要求データパケット、および応答データパケットは、固定長パケットヘッドと可変長パケット本体とを有する(1410)。いくつかの実施形態では、固定長パケットヘッダは、所定のコマンド識別子とそれぞれのパケットシーケンス番号とを含む。いくつかの実施形態では、応答データパケットは、要求データパケットに含まれる第2のパケットシーケンス番号とマッチする第1のパケットシーケンス番号を含み、プッシュ要求データパケットは、第1および第2のパケットシーケンス番号と異なる第3のパケットシーケンス番号を含む。
いくつかの実施形態では、所定のコマンド識別子は、ソーシャルネットワークプラットフォームのそれぞれの機能にアクセスするためのコマンドに対応する。いくつかの実施形態では、このコマンドは、ソーシャルネットワークプラットフォームのユーザ認証機能にアクセスするためのものであり、パケット本体でソーシャルネットワークプラットフォーム上の周辺デバイスに割り当てられるユーザアイデンティティの種類を指定する。いくつかの実施形態では、このコマンドは、ソーシャルネットワークプラットフォーム上の周辺デバイスに対する連絡先リスティングにアクセスするためのものであり、パケット本体でユーザ、サポートサービスプロバイダ、または別の周辺デバイスを表す少なくとも1つの連絡先を指定する。いくつかの実施形態では、このコマンドは、ソーシャルネットワークプラットフォーム上のメッセージング機能にアクセスするためのものであり、パケット本体でユーザ、サポートサービスプロバイダ、または別の周辺デバイスを表す少なくとも1つの連絡先をターゲットとするメッセージを指定する。いくつかの実施形態では、このコマンドは、ソーシャルネットワークプラットフォーム上のメッセージング機能にアクセスするためのものであり、パケット本体でユーザ、サポートサービスプロバイダ、または別の周辺デバイスを表す少なくとも1つの連絡先から発信されるメッセージを指定する。いくつかの実施形態では、このコマンドは、ソーシャルネットワークプラットフォーム上のメッセージング機能にアクセスするためのものであり、パケット本体でユーザ、サポートサービスプロバイダ、または別の周辺デバイスを表す少なくとも1つの連絡先をターゲットとするメッセージを指定する。いくつかの実施形態では、このコマンドは、ソーシャルネットワークプラットフォーム上のグループチャット機能にアクセスするためのものであり、パケット本体で、複数のユーザ、サポートサービスプロバイダ、および複数の他の周辺デバイスのうちの2つまたはそれ以上を含む、周辺デバイスと周辺デバイスの2つまたはそれ以上のそれぞれのソーシャルネットワーク連絡先との間のグループチャットセッションを指定する。いくつかの実施形態では、このコマンドは、ソーシャルネットワークプラットフォーム上の会話ログ機能にアクセスするためのものであり、パケット本体で、複数のユーザ、サポートサービスプロバイダ、および複数の他の周辺デバイスのうちの1つまたは複数を含む、周辺デバイスと周辺デバイスの1つまたは複数のそれぞれのソーシャルネットワーク連絡先との間のチャットセッションに対する会話ログを指定する。他の種類のコマンドは、本開示の他の部分で説明されているか、または本開示で取り上げられている使用例に照らして明らかになる場合がある。
図15A〜図15Bに示されているプロセスの他の態様および特徴は、本開示の他の部分で説明されている。
図16は、いくつかの実施形態によるソーシャルネットワーキングプラットフォームの上でアクセスに対するメッセージ(たとえば、それぞれのRequests、Responses、およびPush Requestsを含むデータパケット)を送信し、周辺デバイスをコントロールするための例示的なプロセス1600に対する流れ図である。
いくつかの実施形態では、プロセス1600は、周辺デバイスに結合されたユーザデバイスによって実行される。
いくつかの実施形態では、ユーザデバイスは、周辺デバイスをユーザデバイスの関連付けられている周辺デバイスとしてソーシャルネットワーキングプラットフォームのサーバに登録する(1602)。デバイスは、プッシュ要求データパケットをソーシャルネットワーキングプラットフォームのサーバから受信し(1604)、プッシュ要求データパケットは、周辺デバイスをプッシュ要求データパケットのターゲットとして識別する。いくつかの実施形態では、プッシュ要求データパケットは、プッシュ要求データパケットのターゲットからの応答を必要としない。ユーザデバイスは、プッシュ要求データパケットを周辺デバイスに転送する(1606)。いくつかの実施形態では、ユーザデバイスは、周辺デバイスから要求データパケットを受信し(1608)、周辺デバイスから要求データパケットを受信したことに応答して、ユーザデバイスは、応答データパケットを周辺デバイスに送信する(1610)。
図16に示されているプロセスの他の態様および特徴は、本開示の他の部分で説明されている。
図17〜図20いくつかの実施形態によるソーシャルネットワーキングプラットフォームにおいて動作する様々なデバイスおよびシステムのブロック図である。
図17は、いくつかの実施形態による、ユーザに関連付けられている代表的な周辺デバイス1700を示すブロック図である。周辺デバイス1700は、本開示で説明されている実施形態によりソーシャルネットワークプラットフォームを介してコントロールされアクセスされ得る周辺デバイス(たとえば、図1B、図2K〜図2T、図8、図9A〜図9B、図10A〜図10Cに示されている周辺デバイス118、および図2Aに示されている周辺デバイス200)として働くものとしてよい。周辺デバイスの例は、限定はしないが、スマートウォッチ、ヘルスモニタ(たとえば、心拍数モニタ、血圧計、ペースメーカー、ライフスタイル監視リストバンドなど)、音楽プレーヤー、クライメートコントロール(たとえば、天気モニタ、温度調節装置、暖房装置、空調、湿度コントロールなど)、照明コントロール、セキュリティ監視システム、スマートコーヒーメーカー、充電スタンド(たとえば、電気自動車または電子機器用の充電スタンドなど)、ナビゲーションシステム(たとえば、GPSシステム)、スポーツ機器(たとえば、スマートゴルフクラブ、スマート釣竿、スマートバスケットボールなど)、セットトップボックス(たとえば、オンラインストリーミングセットトップボックス、オンラインゲームデバイスなど)を含む。
周辺デバイス1700は、典型的には、1つまたは複数の処理ユニット(CPU)1702、1つまたは複数のネットワークインターフェース1704、メモリ1706、およびこれらのコンポーネントを相互接続するための1つまたは複数の通信バス1708を備える(ときにはチップセットとも呼ばれる)。周辺デバイス1700は、適宜、ユーザインターフェース1710も備える。ユーザインターフェース1710は、1つもしくは複数のスピーカーおよび/または1つもしくは複数の画像表示装置を備える、メディアコンテンツの提示を可能にする1つまたは複数の出力デバイス1712を備える。ユーザインターフェース1710は、また、キーボード、マウス、音声コマンド入力ユニットまたはマイクロフォン、タッチスクリーンディスプレイ、タッチセンサー入力パッド、ジェスチャーキャプチャカメラ、または他の入力ボタンもしくはコントロールなどのユーザ入力を円滑にするユーザインターフェースコンポーネントを含む、1つまたは複数の入力デバイス1714も備える。
メモリ1706は、DRAM、SRAM、DDR RAM、または他のランダムアクセスソリッドステートメモリデバイスなどの高速ランダムアクセスメモリを含み、適宜、1つまたは複数の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、または他の不揮発性ソリッドステート記憶デバイスなどの、不揮発性メモリを含む。メモリ1706は、適宜、CPU1702から離れた場所に配置されている1つまたは複数の記憶デバイスを含む。メモリ1706、または代替的にメモリ1706内の不揮発性メモリデバイスは、非一時的コンピュータ可読記憶媒体を含む。いくつかの実装では、メモリ1706、またはメモリ1706の不揮発性コンピュータ可読記憶媒体は、次に述べるプログラム、モジュール、およびデータ構造体、またはそれらのサブセットもしくはスーパーセットを記憶する。
・ 様々な基本システムサービスを処理し、ハードウェア依存タスクを実行するためのプロシージャを含むオペレーティングシステム1716、
・ 1つまたは複数のネットワークインターフェース1704(有線もしくはワイヤレス)(たとえば、Bluetooth(登録商標)インターフェイス、WiFi、Bluetooth(登録商標) Low Energy、USBなど)を介して周辺デバイス1700を他のコンピューティングデバイス(たとえば、ユーザデバイス104)に接続するためのネットワーク通信モジュール1718、
・ ユーザインターフェース1710に関連付けられている1つまたは複数の出力デバイス1712(たとえば、ディスプレイ、スピーカーなど)を介して周辺デバイス1700における情報の提示を可能にするための提示モジュール1720(たとえば、周辺デバイスを操作し、コンテンツおよび情報を表示するためのユーザインターフェース)、ならびに
・ 1つまたは複数の入力デバイス1714のうちの1つからの1つまたは複数のユーザ入力もしくはインタラクティブな操作を検出し、検出された入力またはインタラクティブな操作を解釈するための入力処理モジュール1722。
いくつかの実施形態では、メモリ1706は、また、周辺デバイスのネイティブオペレーション、さらには本明細書で説明されているようなソーシャルネットワークプラットフォームの上で他のデバイスおよび/またはユーザと通信することを必要とするオペレーションを実行するためのデータ処理を実行するための周辺デバイスモジュール1724も備える。いくつかの実施形態では、周辺デバイスモジュール1724は、限定はしないが、次のものを含む。
○ ソーシャルネットワーククライアントアプリケーションを実行するユーザデバイスとの接続をセットアップするように構成された接続モジュール1726。接続モジュールは、たとえば、ソーシャルネットワークアプリケーションに対するサービスIDをブロードキャストし、ユーザデバイスからの接続要求を受け入れるための本明細書で説明されている接続プロトコルを実装する。
○ ユーザデバイスに送信されるべきデータパケットを生成し、データパケットをユーザデバイスと周辺デバイスとの間のデータ伝送プロトコルの合意に従ってデータパケットを送信するように構成され、またユーザデバイスと周辺デバイスとの間のデータ伝送プロトコルの合意に従ってユーザデバイスからデータパケットを受信して組み立て直すように構成されたデータ伝送モジュール1728、
○ 他のユーザ、他の周辺デバイス、通信サーバ、サポートサーバなどをターゲットとする要求(たとえば、符号化された命令および符号化されたメッセージを含む)を準備するように構成されたメッセージ生成モジュール1730、
○ 受信された要求(たとえば、符号化された命令を含む)を解析して内部オペレーションに分けるように構成されたメッセージ解釈モジュール1732、
○ 受信された要求で要求されている機能またはタスクを実行するように構成された機能実行モジュール1734、ならびに
○ ソーシャルネットワークプラットフォーム上のインタラクティブな操作に関して本明細書で説明されている他の機能を実行するように構成された他のモジュール1736。
上記に特定された要素の各々は、すでに述べられているメモリデバイスのうちの1つまたは複数に記憶されるものとしてよく、上述の機能を実行するための命令セットに対応する。上記に特定されたモジュールまたはプログラム(つまり、命令セット)は、個別のソフトウェアプログラム、プロシージャ、モジュール、またはデータ構造体として実装される必要はなく、したがって様々な実装において、これらのモジュールの様々なサブセットが組み合わされるか、または他の何らかの方法で再配置構成され得る。いくつかの実装では、メモリ1706は、適宜、上記のモジュールおよびデータ構造体のサブセットを記憶する。さらに、メモリ1706は、適宜、上で説明されていない追加のモジュールおよびデータ構造体を記憶する。
図18は、いくつかの実施形態による、ユーザに関連付けられている代表的なユーザデバイス1800を示すブロック図である。ユーザデバイス1800は、本開示で説明されている実施形態により、ソーシャルネットワークプラットフォームを介して周辺デバイス(たとえば、ローカルで接続されている周辺デバイスまたは別のユーザデバイスに接続されている周辺デバイス)をコントロールしアクセスするために使用され得るユーザデバイス(たとえば、図1B、図2K〜図2T、図8、図9A〜図9B、図10A〜図10Cに示されているユーザデバイス104、および図2B〜図2Hに示されているユーザデバイス202)として働くものとしてよい。ユーザデバイスの例は、限定はしないが、スマートフォン、タブレットデバイス、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム機などを含む。
ユーザデバイス1800は、典型的には、1つまたは複数の処理ユニット(CPU)1802、1つまたは複数のネットワークインターフェース1804、メモリ1806、およびこれらのコンポーネントを相互接続するための1つまたは複数の通信バス1808を備える(ときにはチップセットとも呼ばれる)。ユーザデバイス1800は、適宜、ユーザインターフェース1810も備える。ユーザインターフェース1810は、1つもしくは複数のスピーカーおよび/または1つもしくは複数の画像表示装置を備える、メディアコンテンツの提示を可能にする1つまたは複数の出力デバイス1812を備える。ユーザインターフェース1810は、また、キーボード、マウス、音声コマンド入力ユニットまたはマイクロフォン、タッチスクリーンディスプレイ、タッチセンサー入力パッド、ジェスチャーキャプチャカメラ、または他の入力ボタンもしくはコントロールなどのユーザ入力を円滑にするユーザインターフェースコンポーネントを含む、1つまたは複数の入力デバイス1814も備える。
メモリ1806は、DRAM、SRAM、DDR RAM、または他のランダムアクセスソリッドステートメモリデバイスなどの高速ランダムアクセスメモリを含み、適宜、1つまたは複数の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、または他の不揮発性ソリッドステート記憶デバイスなどの、不揮発性メモリを含む。メモリ1806は、適宜、CPU1802から離れた場所に配置されている1つまたは複数の記憶デバイスを含む。メモリ1806、または代替的にメモリ1806内の不揮発性メモリデバイスは、非一時的コンピュータ可読記憶媒体を含む。いくつかの実装では、メモリ1806、またはメモリ1806の不揮発性コンピュータ可読記憶媒体は、次に述べるプログラム、モジュール、およびデータ構造体、またはそれらのサブセットもしくはスーパーセットを記憶する。
・ 様々な基本システムサービスを処理し、ハードウェア依存タスクを実行するためのプロシージャを含むオペレーティングシステム1816、
・ 1つまたは複数のネットワークインターフェース1804(有線もしくはワイヤレス)(たとえば、Bluetooth(登録商標)インターフェイス、WiFi、Bluetooth(登録商標) Low Energy、USBなど、Ethernet、LAN、WANなど)を介して周辺デバイス1800を他のコンピューティングデバイス(たとえば、周辺デバイス118または通信サーバ112)に接続するためのネットワーク通信モジュール1818、
・ ユーザインターフェース1810に関連付けられている1つまたは複数の出力デバイス1812(たとえば、ディスプレイ、スピーカーなど)を介してユーザデバイス1800における情報の提示を可能にするための提示モジュール1820(たとえば、ユーザデバイスを操作し、コンテンツおよび情報を表示するためのユーザインターフェース)、ならびに
・ 1つまたは複数の入力デバイス1814のうちの1つからの1つまたは複数のユーザ入力もしくはインタラクティブな操作を検出し、検出された入力またはインタラクティブな操作を解釈するための入力処理モジュール1822。
いくつかの実施形態では、メモリ1806は、本明細書で説明されているようなソーシャルネットワークプラットフォームの上で周辺デバイスのアクセスおよびコントロールを可能にするために必要なオペレーションを含む、ソーシャルネットワークプラットフォームのプロバイダによって提供されているソーシャルネットワークプラットフォーム上の様々な機能を実行するためのデータ処理を実行するためのソーシャルネットワーククライアントモジュール1824も備える。いくつかの実施形態では、ソーシャルネットワーククライアントモジュール1824は、限定はしないが、
○ 周辺デバイスをユーザデバイスおよびユーザデバイス上で実行されているソーシャルネットワーククライアントアプリケーション内で現在アクティブであるユーザアカウントにバインドするように構成されたバインドモジュール1826、
○ ユーザデバイスにバインドされている周辺デバイスとの接続をセットアップするように構成された接続モジュール1828。接続モジュールは、たとえば、ソーシャルネットワークアプリケーションに対するサービスIDを検出し、周辺デバイスへの接続要求を開始するための本明細書で説明されている接続プロトコルを実装する。
○ ユーザデバイスと通信サーバとの間のデータ伝送プロトコルの合意に従って通信サーバにデータパケットを送信し、通信サーバからデータパケットを受信するように構成され、またユーザデバイスと周辺デバイスとの間のデータ伝送プロトコルの合意に従って周辺デバイスにデータパケットを送信し、周辺デバイスからデータパケットを受信するように構成されたデータ伝送モジュール1830、
○ 一対一会話、およびグループチャットセッションを確立し、受信されたメッセージ(たとえば、インスタント)を解析し、メッセージを対応するチャットセッションの会話ログ内に提示するように構成された会話モジュール1832、
○ 周辺デバイスを表す連絡先を含む、アクティブなユーザアカウントの連絡先を管理するように構成された連絡先管理モジュール1834、ならびに
○ ソーシャルネットワークプラットフォーム上のインタラクティブな操作に関して本明細書で説明されている他の機能を実行するように構成された他のモジュール1836。
上記に特定された要素の各々は、すでに述べられているメモリデバイスのちの1つまたは複数に記憶されるものとしてよく、上述の機能を実行するための命令セットに対応する。上記に特定されたモジュールまたはプログラム(つまり、命令セット)は、個別のソフトウェアプログラム、プロシージャ、モジュール、またはデータ構造体として実装される必要はなく、したがって様々な実装において、これらのモジュールの様々なサブセットが組み合わされるか、または他の何らかの方法で再配置構成され得る。いくつかの実装では、メモリ1706は、適宜、上記のモジュールおよびデータ構造体のサブセットを記憶する。さらに、メモリ1706は、適宜、上で説明されていない追加のモジュールをおよびデータ構造体を記憶する。
図19は、いくつかの実施形態による、例示的なソーシャルネットワークプラットフォームに対する代表的なサーバシステム1900を示すブロック図である。サーバシステム1900は、本開示において説明されている実施形態によりユーザおよび周辺デバイスのためにソーシャルネットワーキングサービスを提供する通信サーバ(たとえば、図1Bに示されている通信サーバ112b、図10A〜図10Cに示されている通信サーバ112)として働き得る。サーバシステム1900は、仮想および物理リソースを含む1つまたは複数のコンピュータシステムによって実現され得る。
サーバシステム1900は、典型的には、1つまたは複数の処理ユニット(CPU)1902、1つまたは複数のネットワークインターフェース1904、メモリ1906、およびこれらのコンポーネントを相互接続するための1つまたは複数の通信バス1908を備える(ときにはチップセットとも呼ばれる)。サーバシステム1900は、適宜、ユーザインターフェース1910も備える。ユーザインターフェース1910は、1つもしくは複数のスピーカーおよび/または1つもしくは複数の画像表示装置を備える、メディアコンテンツの提示を可能にする1つまたは複数の出力デバイス1912を備える。ユーザインターフェース1910は、また、キーボード、マウス、音声コマンド入力ユニットまたはマイクロフォン、タッチスクリーンディスプレイ、タッチセンサー入力パッド、ジェスチャーキャプチャカメラ、または他の入力ボタンもしくはコントロールなどのユーザ入力を円滑にするユーザインターフェースコンポーネントを含む、1つまたは複数の入力デバイス1914も備える。
メモリ1906は、DRAM、SRAM、DDR RAM、または他のランダムアクセスソリッドステートメモリデバイスなどの高速ランダムアクセスメモリを含み、適宜、1つまたは複数の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、または他の不揮発性ソリッドステート記憶デバイスなどの、不揮発性メモリを含む。メモリ1906は、適宜、CPU1902から離れた場所に配置されている1つまたは複数の記憶デバイスを含む。メモリ1906、または代替的にメモリ1906内の不揮発性メモリデバイスは、非一時的コンピュータ可読記憶媒体を含む。いくつかの実装では、メモリ1906、またはメモリ1906の不揮発性コンピュータ可読記憶媒体は、次に述べるプログラム、モジュール、およびデータ構造体、またはそれらのサブセットもしくはスーパーセットを記憶する。
・ 様々な基本システムサービスを処理し、ハードウェア依存タスクを実行するためのプロシージャを含むオペレーティングシステム1916、
・ 1つまたは複数のネットワークインターフェース1904(有線もしくはワイヤレス)(たとえば、WiFi、Ethernet、LAN、WANなど)を介してネットワーク106の上で他のコンピューティングデバイス(たとえば、ユーザデバイス104またはサポートサーバ116)に接続するためのネットワーク通信モジュール1918、
・ ユーザインターフェース1910に関連付けられている1つまたは複数の出力デバイス1912(たとえば、ディスプレイ、スピーカーなど)を介してサーバシステム1900における情報の提示を可能にするための提示モジュール1920(たとえば、サーバシステムを操作し、コンテンツおよび情報を表示するためのユーザインターフェース)、ならびに
・ 1つまたは複数の入力デバイス1914のうちの1つからの1つまたは複数のユーザ入力もしくはインタラクティブな操作を検出し、検出された入力またはインタラクティブな操作を解釈するための入力処理モジュール1922。
いくつかの実施形態では、メモリ1906は、本明細書で説明されているようなソーシャルネットワークプラットフォームの上で周辺デバイスのアクセスおよびコントロールを可能にするために必要なオペレーションを含む、ソーシャルネットワークプラットフォーム上の様々なユーザおよびバックエンド機能をサポートするためのデータ処理を実行するためのソーシャルネットワークサーバモジュール1924も備える。いくつかの実施形態では、ソーシャルネットワークサーバモジュール1924は、限定はしないが、次のものを含む。
○ 周辺デバイスを対応するユーザアカウントにバインドするように構成されたバインドモジュール1926、
○ ユーザ、サポートサービスプロバイダ、および周辺デバイスを登録し、それぞれのソーシャルネットワークアイデンティティを登録されたユーザ、サポートサービスプロバイダ、および周辺デバイスに割り当てるように構成されたユーザ管理モジュール1920、
○ ユーザ、および周辺デバイス、およびサポートサーバに送信されるべきメッセージ(たとえば、Push Requestsにおけるメッセージおよび命令)を準備するように構成され、受信された要求を解釈し、受信された要求をサポートサーバに転送し、受信された応答を周辺デバイスおよび/またはユーザデバイスに転送するように構成された通信モジュール1930、
○ 一対一会話、およびグループチャットセッションを確立し、対応するチャットセッションに対する会話ログを管理するように構成された会話モジュール1932、ならびに
○ ソーシャルネットワークプラットフォーム上のインタラクティブな操作に関して本明細書で説明されている他の機能を実行するように構成された他のモジュール1934。
上記に特定された要素の各々は、すでに述べられているメモリデバイスのちの1つまたは複数に記憶されるものとしてよく、上述の機能を実行するための命令セットに対応する。上記に特定されたモジュールまたはプログラム(つまり、命令セット)は、個別のソフトウェアプログラム、プロシージャ、モジュール、またはデータ構造体として実装される必要はなく、したがって様々な実装において、これらのモジュールの様々なサブセットが組み合わされるか、または他の何らかの方法で再配置構成され得る。いくつかの実装では、メモリ1906は、適宜、上記のモジュールおよびデータ構造体のサブセットを記憶する。さらに、メモリ1906は、適宜、上で説明されていない追加のモジュールをおよびデータ構造体を記憶する。
図20は、いくつかの実施形態による1つまたは複数の種類の周辺デバイスに対するサポートを提供するサポートサービスプロバイダの代表的なサーバシステム2000を示すブロック図である。サーバシステム2000は、本開示において説明されている実施形態によりユーザおよび周辺デバイスのためにサポートサービスを提供するサポートサーバ(たとえば、図1Bおよび図10A〜図10Cに示されているサポートサーバ116)として働き得る。サポートサーバは、人間のユーザに提示するために符号化された命令およびメッセージの、通常のインスタントメッセージへの、また通常のインスタントメッセージからの翻訳も実行する。サーバシステム2000は、仮想および物理リソースを含む1つまたは複数のコンピュータシステムによって実現され得る。
サーバシステム2000は、典型的には、1つまたは複数の処理ユニット(CPU)2002、1つまたは複数のネットワークインターフェース2004、メモリ2006、およびこれらのコンポーネントを相互接続するための1つまたは複数の通信バス2008を備える(ときにはチップセットとも呼ばれる)。サーバシステム2000は、適宜、ユーザインターフェース2010も備える。ユーザインターフェース2010は、1つもしくは複数のスピーカーおよび/または1つもしくは複数の画像表示装置を備える、メディアコンテンツの提示を可能にする1つまたは複数の出力デバイス2012を備える。ユーザインターフェース2010は、また、キーボード、マウス、音声コマンド入力ユニットまたはマイクロフォン、タッチスクリーンディスプレイ、タッチセンサー入力パッド、ジェスチャーキャプチャカメラ、または他の入力ボタンもしくはコントロールなどのユーザ入力を円滑にするユーザインターフェースコンポーネントを含む、1つまたは複数の入力デバイス2014も備える。
メモリ2006は、DRAM、SRAM、DDR RAM、または他のランダムアクセスソリッドステートメモリデバイスなどの高速ランダムアクセスメモリを含み、適宜、1つまたは複数の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、または他の不揮発性ソリッドステート記憶デバイスなどの、不揮発性メモリを含む。メモリ2006は、適宜、CPU2002から離れた場所に配置されている1つまたは複数の記憶デバイスを含む。メモリ2006、または代替的にメモリ2006内の不揮発性メモリデバイスは、非一時的コンピュータ可読記憶媒体を含む。いくつかの実装では、メモリ2006、またはメモリ2006の不揮発性コンピュータ可読記憶媒体は、次に述べるプログラム、モジュール、およびデータ構造体、またはそれらのサブセットもしくはスーパーセットを記憶する。
・ 様々な基本システムサービスを処理し、ハードウェア依存タスクを実行するためのプロシージャを含むオペレーティングシステム2016、
・ 1つまたは複数のネットワークインターフェース2004(有線もしくはワイヤレス)(たとえば、WiFi、Ethernet、LAN、WANなど)を介してネットワーク106の上で他のコンピューティングデバイス(たとえば、ユーザデバイス104または通信サーバ112)に接続するためのネットワーク通信モジュール2018、
・ ユーザインターフェース2010に関連付けられている1つまたは複数の出力デバイス2012(たとえば、ディスプレイ、スピーカーなど)を介してサーバシステム2000における情報の提示を可能にするための提示モジュール2020(たとえば、サーバシステムを操作し、コンテンツおよび情報を表示するためのユーザインターフェース)、ならびに
・ 1つまたは複数の入力デバイス2014のうちの1つからの1つまたは複数のユーザ入力もしくはインタラクティブな操作を検出し、検出された入力またはインタラクティブな操作を解釈するための入力処理モジュール2022。
いくつかの実施形態では、メモリ2006は、周辺デバイスをコントロールするための符号化された命令を送るステップ、および本明細書で説明されているように人間のユーザに提示するために符号化されたメッセージのインスタントメッセージへの翻訳を行うステップを含む、ソーシャルネットワークプラットフォーム上の様々なサポート機能(たとえば、機器診断を実行するステップ、カスタマーサポートを提供するステップなど)をサポートするためのデータ処理を実行するためのサポートサーバモジュール2024も備える。いくつかの実施形態では、サポートサーバモジュール2024は、限定はしないが、次のものを含む。
○ サービスアカウントを通信モジュールに登録するように構成された登録モジュール2026、
○ ソーシャルネットワークプラットフォームの機能を使用して登録ユーザおよび周辺デバイスとのソーシャルネットワーク関係を管理するように構成されたデバイス管理モジュール2020、
○ ユーザ、および周辺デバイス、およびサポートサーバに送信されるべきメッセージ(たとえば、Push Requestsにおけるメッセージおよび命令)を準備するように構成され、受信された要求を解釈し、受信された要求をサポートサーバに転送し、受信された応答を周辺デバイスおよび/またはユーザデバイスに転送するように構成された通信モジュール2030、
○ 一対一会話、ならびにユーザおよび周辺デバイスとのグループチャットセッションを確立するように構成された会話モジュール2032、ならびに
○ ソーシャルネットワークプラットフォーム上のインタラクティブな操作に関して本明細書で説明されている他の機能を実行するように構成された他のモジュール2034。
上記で特定された要素の各々は、すでに述べられているメモリデバイスのちの1つまたは複数に記憶されるものとしてよく、上述の機能を実行するための命令セットに対応する。上記に特定されたモジュールまたはプログラム(つまり、命令セット)は、個別のソフトウェアプログラム、プロシージャ、モジュール、またはデータ構造体として実装される必要はなく、したがって様々な実装において、これらのモジュールの様々なサブセットが組み合わされるか、または他の何らかの方法で再配置構成され得る。いくつかの実装では、メモリ2006は、適宜、上記のモジュールおよびデータ構造体のサブセットを記憶する。さらに、メモリ2006は、適宜、上で説明されていない追加のモジュールをおよびデータ構造体を記憶する。
図21〜図24は、いくつかの実施形態によるソーシャルネットワーキングプラットフォームにおいて動作する様々なデバイスおよびシステムのブロック図である。
図21は、いくつかの実施形態による、ユーザに関連付けられている代表的な周辺デバイス2100を示すブロック図である。周辺デバイス2100は、本開示で説明されている実施形態によりソーシャルネットワークプラットフォームを介してコントロールされアクセスされ得る周辺デバイス(たとえば、図1B、図2K〜図2T、図8、図9A〜図9B、図10A〜図10Cに示されている周辺デバイス118、および図2Aに示されている周辺デバイス200)として働くものとしてよい。周辺デバイスの例は、限定はしないが、スマートウォッチ、ヘルスモニタ(たとえば、心拍数モニタ、血圧計、ペースメーカー、ライフスタイル監視リストバンドなど)、音楽プレーヤー、クライメートコントロール(たとえば、天気モニタ、温度調節装置、暖房装置、空調、湿度コントロールなど)、照明コントロール、セキュリティ監視システム、スマートコーヒーメーカー、充電スタンド(たとえば、電気自動車または電子機器用の充電スタンドなど)、ナビゲーションシステム(たとえば、GPSシステム)、スポーツ機器(たとえば、スマートゴルフクラブ、スマート釣竿、スマートバスケットボールなど)、セットトップボックス(たとえば、オンラインストリーミングセットトップボックス、オンラインゲームデバイスなど)を含む。
いくつかの実施形態では、周辺デバイスは、また、周辺デバイスのネイティブオペレーション、さらには本明細書で説明されているようなソーシャルネットワークプラットフォームの上で他のデバイスおよび/またはユーザと通信することを必要とするオペレーションを実行するためのデータ処理を実行するための周辺デバイスモジュール2124も備える。いくつかの実施形態では、周辺デバイスモジュール2124は、限定はしないが、ソーシャルネットワーククライアントアプリケーションを実行するユーザデバイスとの接続をセットアップするように構成された接続ユニット2126を含む。接続モジュールは、たとえば、ソーシャルネットワークアプリケーションに対するサービスIDをブロードキャストし、ユーザデバイスからの接続要求を受け入れるための本明細書で説明されている接続プロトコルを実装する。また、周辺デバイスモジュール2124は、ユーザデバイスに送信されるべきデータパケットを生成し、データパケットをユーザデバイスと周辺デバイスとの間のデータ伝送プロトコルの合意に従ってデータパケットを送信するように構成され、またユーザデバイスと周辺デバイスとの間のデータ伝送プロトコルの合意に従ってユーザデバイスからデータパケットを受信して組み立て直すように構成される、データ伝送ユニット2128、他のユーザ、他の周辺デバイス、通信サーバ、サポートサーバなどをターゲットとする要求(たとえば、符号化された命令および符号化されたメッセージを含む)を準備するように構成されたメッセージ生成ユニット2130、受信された要求(たとえば、符号化された命令を含む)を解析して内部オペレーションに分けるように構成されたメッセージ解釈ユニット2132、受信された要求で要求されている機能またはタスクを実行するように構成された機能実行ユニット2134、およびソーシャルネットワークプラットフォーム上のインタラクティブな操作に関して本明細書で説明されている他の機能を実行するように構成された他のユニット2136を含む。
図22は、いくつかの実施形態による、ユーザに関連付けられている代表的なユーザデバイス2200を示すブロック図である。ユーザデバイス2200は、本開示で説明されている実施形態により、ソーシャルネットワークプラットフォームを介して周辺デバイス(たとえば、ローカルで接続されている周辺デバイスまたは別のユーザデバイスに接続されている周辺デバイス)をコントロールしアクセスするために使用され得るユーザデバイス(たとえば、図1B、図2K〜図2T、図8、図9A〜図9B、図10A〜図10Cに示されているユーザデバイス104、および図2B〜図2Hに示されているユーザデバイス202)として働くものとしてよい。ユーザデバイスの例は、限定はしないが、スマートフォン、タブレットデバイス、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム機などを含む。
いくつかの実施形態では、ユーザデバイス2200は、本明細書で説明されているようなソーシャルネットワークプラットフォームの上で周辺デバイスのアクセスおよびコントロールを可能にするために必要なオペレーションを含む、ソーシャルネットワークプラットフォームのプロバイダによって提供されているソーシャルネットワークプラットフォーム上の様々な機能を実行するためのデータ処理を実行するためのソーシャルネットワーククライアントモジュール2224も備える。いくつかの実施形態では、ソーシャルネットワーククライアントモジュール2224は、限定はしないが、周辺デバイスをユーザデバイスおよびユーザデバイス上で実行されているソーシャルネットワーククライアントアプリケーション内で現在アクティブであるユーザアカウントにバインドするように構成されたバインドユニット2226、ユーザデバイスにバインドされている周辺デバイスとの接続をセットアップするように構成された接続ユニット2228を含む。接続モジュールは、たとえば、ソーシャルネットワークアプリケーションに対するサービスIDを検出し、周辺デバイスへの接続要求を開始するための本明細書で説明されている接続プロトコルを実装する。また、ソーシャルネットワーククライアントモジュール2224はユーザデバイスと通信サーバとの間のデータ伝送プロトコルの合意に従って通信サーバにデータパケットを送信し、通信サーバからデータパケットを受信するように構成され、ユーザデバイスと周辺デバイスとの間のデータ伝送プロトコルの合意に従って周辺デバイスにデータパケットを送信し、周辺デバイスからデータパケットを受信するように構成されたデータ伝送ユニット2230、一対一会話、およびグループチャットセッションを確立し、受信されたメッセージ(たとえば、インスタント)を解析し、メッセージを対応するチャットセッションの会話ログ内に提示するように構成された会話ユニット2232、周辺デバイスを表す連絡先を含む、アクティブなユーザアカウントの連絡先を管理するように構成された連絡先管理ユニット2234、およびソーシャルネットワークプラットフォーム上のインタラクティブな操作に関して本明細書で説明されている他の機能を実行するように構成された他のユニット2236を含む。
図23は、いくつかの実施形態による、例示的なソーシャルネットワークプラットフォームに対する代表的なサーバシステム2300を示すブロック図である。サーバシステム2300は、本開示において説明されている実施形態によりユーザおよび周辺デバイスのためにソーシャルネットワーキングサービスを提供する通信サーバ(たとえば、図1Bに示されている通信サーバ112b、図10A〜図10Cに示されている通信サーバ112)として働き得る。サーバシステム2300は、仮想および物理リソースを含む1つまたは複数のコンピュータシステムによって実現され得る。
いくつかの実施形態では、サーバシステム2300は、本明細書で説明されているようなソーシャルネットワークプラットフォームの上で周辺デバイスのアクセスおよびコントロールを可能にするために必要なオペレーションを含む、ソーシャルネットワークプラットフォーム上の様々なユーザおよびバックエンド機能をサポートするためのデータ処理を実行するためのソーシャルネットワークサーバモジュール2324を備える。いくつかの実施形態では、ソーシャルネットワークサーバモジュール2324は、限定はしないが、周辺デバイスを対応するユーザアカウントにバインドするように構成されたバインドユニット2326、ユーザ、サポートサービスプロバイダ、および周辺デバイスを登録し、それぞれのソーシャルネットワークアイデンティティを登録されたユーザ、サポートサービスプロバイダ、および周辺デバイスに割り当てるように構成されたユーザ管理ユニット2320、ユーザ、および周辺デバイス、およびサポートサーバに送信されるべきメッセージ(たとえば、Push Requestsにおけるメッセージおよび命令)を準備するように構成され、受信された要求を解釈し、受信された要求をサポートサーバに転送し、受信された応答を周辺デバイスおよび/またはユーザデバイスに転送するように構成された通信ユニット2330、一対一会話、およびグループチャットセッションを確立し、対応するチャットセッションに対する会話ログを管理するように構成された会話ユニット2332、およびソーシャルネットワークプラットフォーム上のインタラクティブな操作に関して本明細書で説明されている他の機能を実行するように構成された他のユニット2334を含む。
図24は、いくつかの実施形態による1つまたは複数の種類の周辺デバイスに対するサポートを提供するサポートサービスプロバイダの代表的なサーバシステム2400を示すブロック図である。サーバシステム2400は、本開示において説明されている実施形態によりユーザおよび周辺デバイスのためにサポートサービスを提供するサポートサーバ(たとえば、図1Bおよび図10A〜図10Cに示されているサポートサーバ116)として働き得る。サポートサーバは、人間のユーザに提示するために符号化された命令およびメッセージの、通常のインスタントメッセージへの、また通常のインスタントメッセージからの翻訳も実行する。サーバシステム2400は、仮想および物理リソースを含む1つまたは複数のコンピュータシステムによって実現され得る。
いくつかの実施形態では、サーバシステム2400は、周辺デバイスをコントロールするための符号化された命令を送るステップ、および本明細書で説明されているように人間のユーザに提示するために符号化されたメッセージのインスタントメッセージへの翻訳を行うステップを含む、ソーシャルネットワークプラットフォーム上の様々なサポート機能(たとえば、機器診断を実行するステップ、カスタマーサポートを提供するステップなど)をサポートするためのデータ処理を実行するためのサポートサーバモジュール2424を備える。いくつかの実施形態では、サポートサーバモジュール2424は、限定はしないが、サービスアカウントを通信モジュールに登録するように構成された登録ユニット2426、ソーシャルネットワークプラットフォームの機能を使用して登録ユーザおよび周辺デバイスとのソーシャルネットワーク関係を管理するように構成されたデバイス管理ユニット2420、ユーザ、および周辺デバイス、およびサポートサーバに送信されるべきメッセージ(たとえば、Push Requestsにおけるメッセージおよび命令)を準備するように構成され、受信された要求を解釈し、受信された要求をサポートサーバに転送し、受信された応答を周辺デバイスおよび/またはユーザデバイスに転送するように構成された通信ユニット2430、一対一会話、ならびにユーザおよび周辺デバイスとのグループチャットセッションを確立するように構成された会話ユニット2432、およびソーシャルネットワークプラットフォーム上のインタラクティブな操作に関して本明細書で説明されている他の機能を実行するように構成された他のユニット2434を含む。
特定の実施形態が上で説明されているが、それは本発明をこれらの特定の実施形態に限定することを意図されていないことは理解されるであろう。それどころか、本発明は、付属の請求項の精神と範囲内に収まる代替的形態、修正形態、および等価形態を含む。本明細書に提示されている発明対象を完全に理解できるように、多数の具体的詳細が述べられている。しかし、当業者には、これらの具体的詳細がなくても主題が実施され得ることは明らかであろう。他の場合には、よく知られている方法、手順、コンポーネント、および回路については、本発明の態様をいたずらにわかりにくくしないために、細部にわたって説明することはしていない。