IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ トゥイリオ インコーポレイテッドの特許一覧

特許7439300メッセージ・ルーティング最適化システム
<>
  • 特許-メッセージ・ルーティング最適化システム 図1
  • 特許-メッセージ・ルーティング最適化システム 図2
  • 特許-メッセージ・ルーティング最適化システム 図3
  • 特許-メッセージ・ルーティング最適化システム 図4
  • 特許-メッセージ・ルーティング最適化システム 図5
  • 特許-メッセージ・ルーティング最適化システム 図6
  • 特許-メッセージ・ルーティング最適化システム 図7
  • 特許-メッセージ・ルーティング最適化システム 図8
  • 特許-メッセージ・ルーティング最適化システム 図9
  • 特許-メッセージ・ルーティング最適化システム 図10
  • 特許-メッセージ・ルーティング最適化システム 図11
  • 特許-メッセージ・ルーティング最適化システム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-16
(45)【発行日】2024-02-27
(54)【発明の名称】メッセージ・ルーティング最適化システム
(51)【国際特許分類】
   H04L 45/851 20220101AFI20240219BHJP
【FI】
H04L45/851
【請求項の数】 19
(21)【出願番号】P 2022565738
(86)(22)【出願日】2021-03-12
(65)【公表番号】
(43)【公表日】2023-06-26
(86)【国際出願番号】 US2021070269
(87)【国際公開番号】W WO2021222914
(87)【国際公開日】2021-11-04
【審査請求日】2022-06-29
(31)【優先権主張番号】63/017,359
(32)【優先日】2020-04-29
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/130,831
(32)【優先日】2020-12-22
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】511212217
【氏名又は名称】トゥイリオ インコーポレイテッド
【氏名又は名称原語表記】TWILIO INC.
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】オショーネシー、ジェイミー
(72)【発明者】
【氏名】キカス、リーボ
(72)【発明者】
【氏名】キツェメッツ、カーレル
【審査官】大石 博見
(56)【参考文献】
【文献】特開2006-197306(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 45/851
(57)【特許請求の範囲】
【請求項1】
第1のメッセージを活用のために割り振ることを決定することに応じて、
ルーティング・プロバイダのランク付けのセットに基づいて、第1のルーティング・プロバイダが最適なルーティング・プロバイダであることを決定する工程と、
配信されることになる前記第1のメッセージを、前記第1のルーティング・プロバイダに対して割り振る工程と、
第2のメッセージを探索のために割り振ることを決定することに応じて、
前記ルーティング・プロバイダのセットの前記ランク付けに基づいて、前記第1のルーティング・プロバイダを含まないセカンダリ・ルーティング・プロバイダのセットを識別する工程と、
前記第2のメッセージを、前記セカンダリ・ルーティング・プロバイダのセットのうちのセカンダリ・ルーティング・プロバイダに対して割り振る工程と
を含み、
活用のために割り振るメッセージは、探索のために割り振るメッセージよりも多い、方法。
【請求項2】
前記第1のルーティング・プロバイダが前記最適なルーティング・プロバイダであることを決定する工程が、
前記ルーティング・プロバイダのセットの前記ランク付けに基づいて、前記第1のルーティング・プロバイダが最も高くランク付けされることを決定する工程
を含む、請求項1に記載の方法。
【請求項3】
第3のメッセージを送信する第3の要求を受信する工程と、
前記第3のメッセージを活用のために割り振ることを決定することに応じて、
前記ルーティング・プロバイダのセットの更新されたランク付けに基づいて、第2のルーティング・プロバイダが前記最適なルーティング・プロバイダであることを決定する工程と、
前記第3のメッセージを、前記第2のルーティング・プロバイダに対して割り振る工程と、
をさらに含む、請求項1に記載の方法。
【請求項4】
第1のメッセージを活用のために割り振ることを決定することに応じて、
ルーティング・プロバイダのランク付けのセットに基づいて、第1のルーティング・プロバイダが最適なルーティング・プロバイダであることを決定する工程と、
配信されることになる前記第1のメッセージを、前記第1のルーティング・プロバイダに対して割り振る工程と、
第2のメッセージを探索のために割り振ることを決定することに応じて、
前記ルーティング・プロバイダのセットの前記ランク付けに基づいて、前記第1のルーティング・プロバイダを含まないセカンダリ・ルーティング・プロバイダのセットを識別する工程と、
前記第2のメッセージを、前記セカンダリ・ルーティング・プロバイダのセットのうちのセカンダリ・ルーティング・プロバイダに対して割り振る工程と
を含み、
前記ルーティング・プロバイダのセットの前記ランク付けが、各ルーティング・プロバイダのための利用可能なフィードバック・データに基づいて決定される信頼上限推定値に基づいている、方法。
【請求項5】
第1のメッセージを活用のために割り振ることを決定することに応じて、
ルーティング・プロバイダのランク付けのセットに基づいて、第1のルーティング・プロバイダが最適なルーティング・プロバイダであることを決定する工程と、
配信されることになる前記第1のメッセージを、前記第1のルーティング・プロバイダに対して割り振る工程と、
第2のメッセージを探索のために割り振ることを決定することに応じて、
前記ルーティング・プロバイダのセットの前記ランク付けに基づいて、前記第1のルーティング・プロバイダを含まないセカンダリ・ルーティング・プロバイダのセットを識別する工程と、
前記第2のメッセージを、前記セカンダリ・ルーティング・プロバイダのセットのうちのセカンダリ・ルーティング・プロバイダに対して割り振る工程と、
前記ルーティング・プロバイダのセットのメッセージ配信性能について記述するフィードバック・データを受信する工程と、
前記フィードバック・データに基づいて、前記ルーティング・プロバイダのセット内の各ルーティング・プロバイダのための個々の変換レートを決定する工程と
を含、方法。
【請求項6】
前記フィードバック・データが、前記ルーティング・プロバイダのセットに対して割り振られたメッセージを送信するときのメッセージ配信性能について記述するライブ・フィードバックと、前記ルーティング・プロバイダのセットによって提供されるルートを使用してテスト・メッセージを送信するときのメッセージ配信性能について記述するテスティング・フィードバック・データとを含む、請求項5に記載の方法。
【請求項7】
第1のメッセージを活用のために割り振ることを決定することに応じて、
ルーティング・プロバイダのランク付けのセットに基づいて、第1のルーティング・プロバイダが最適なルーティング・プロバイダであることを決定する工程と、
配信されることになる前記第1のメッセージを、前記第1のルーティング・プロバイダに対して割り振る工程と、
第2のメッセージを探索のために割り振ることを決定することに応じて、
前記ルーティング・プロバイダのセットの前記ランク付けに基づいて、前記第1のルーティング・プロバイダを含まないセカンダリ・ルーティング・プロバイダのセットを識別する工程と、
前記第2のメッセージを、前記セカンダリ・ルーティング・プロバイダのセットのうちのセカンダリ・ルーティング・プロバイダに対して割り振る工程と、
所定のメッセージ割り振りパーセンテージに基づく、前記第1のメッセージを活用メッセージとして割り振ることを決定する工程
を含、方法。
【請求項8】
第1のメッセージを活用のために割り振ることを決定することに応じて、
ルーティング・プロバイダのランク付けのセットに基づいて、第1のルーティング・プロバイダが最適なルーティング・プロバイダであることを決定する工程と、
配信されることになる前記第1のメッセージを、前記第1のルーティング・プロバイダに対して割り振る工程と、
第2のメッセージを探索のために割り振ることを決定することに応じて、
前記ルーティング・プロバイダのセットの前記ランク付けに基づいて、前記第1のルーティング・プロバイダを含まないセカンダリ・ルーティング・プロバイダのセットを識別する工程と、
前記第2のメッセージを、前記セカンダリ・ルーティング・プロバイダのセットのうちのセカンダリ・ルーティング・プロバイダに対して割り振る工程と
を含み、
探索のための複数のメッセージは、前記セカンダリ・ルーティング・プロバイダのセットにおいて等しく分けられる、方法。
【請求項9】
1つまたは複数のコンピュータ・プロセッサと、
命令を記憶する1つまたは複数のコンピュータ可読媒体と、を備えるシステムであって、前記命令は、前記1つまたは複数のコンピュータ・プロセッサによって実行されるとき、
第1のメッセージを活用のために割り振ることを決定することに応じて、
ルーティング・プロバイダのランク付けのセットに基づいて、第1のルーティング・プロバイダが最適なルーティング・プロバイダであることを決定する工程と、
配信されることになる前記第1のメッセージを、前記第1のルーティング・プロバイダに対して割り振る工程と、
第2のメッセージを探索のために割り振ることを決定することに応じて、
前記ルーティング・プロバイダのセットの前記ランク付けに基づいて、前記第1のルーティング・プロバイダを含まないセカンダリ・ルーティング・プロバイダのセットを識別する工程と、
前記第2のメッセージを、前記セカンダリ・ルーティング・プロバイダのセットのうちのセカンダリ・ルーティング・プロバイダに対して割り振る工程と
を含む動作を前記システムに実行させ
活用のために割り振るメッセージは、探索のために割り振るメッセージよりも多い、
システム。
【請求項10】
前記動作が、
第3のメッセージを送信する第3の要求を受信する工程と、
前記第3のメッセージを活用のために割り振ることを決定することに応じて、
前記ルーティング・プロバイダのセットの更新されたランク付けに基づいて、第3のルーティング・プロバイダが前記最適なルーティング・プロバイダであることを決定する工程と、
前記第3のメッセージを、前記第3のルーティング・プロバイダに対して割り振る工程と、
をさらに含む、請求項に記載のシステム。
【請求項11】
1つまたは複数のコンピュータ・プロセッサと、
命令を記憶する1つまたは複数のコンピュータ可読媒体と、を備えるシステムであって、前記命令は、前記1つまたは複数のコンピュータ・プロセッサによって実行されるとき、
第1のメッセージを活用のために割り振ることを決定することに応じて、
ルーティング・プロバイダのランク付けのセットに基づいて、第1のルーティング・プロバイダが最適なルーティング・プロバイダであることを決定する工程と、
配信されることになる前記第1のメッセージを、前記第1のルーティング・プロバイダに対して割り振る工程と、
第2のメッセージを探索のために割り振ることを決定することに応じて、
前記ルーティング・プロバイダのセットの前記ランク付けに基づいて、前記第1のルーティング・プロバイダを含まないセカンダリ・ルーティング・プロバイダのセットを識別する工程と、
前記第2のメッセージを、前記セカンダリ・ルーティング・プロバイダのセットのうちのセカンダリ・ルーティング・プロバイダに対して割り振る工程と
を含む動作を前記システムに実行させ、
前記ルーティング・プロバイダのセットの前記ランク付けが、各ルーティング・プロバイダのための利用可能なフィードバック・データに基づいて決定される信頼上限推定値に基づいている、システム。
【請求項12】
1つまたは複数のコンピュータ・プロセッサと、
命令を記憶する1つまたは複数のコンピュータ可読媒体と、を備えるシステムであって、前記命令は、前記1つまたは複数のコンピュータ・プロセッサによって実行されるとき、
第1のメッセージを活用のために割り振ることを決定することに応じて、
ルーティング・プロバイダのランク付けのセットに基づいて、第1のルーティング・プロバイダが最適なルーティング・プロバイダであることを決定する工程と、
配信されることになる前記第1のメッセージを、前記第1のルーティング・プロバイダに対して割り振る工程と、
第2のメッセージを探索のために割り振ることを決定することに応じて、
前記ルーティング・プロバイダのセットの前記ランク付けに基づいて、前記第1のルーティング・プロバイダを含まないセカンダリ・ルーティング・プロバイダのセットを識別する工程と、
前記第2のメッセージを、前記セカンダリ・ルーティング・プロバイダのセットのうちのセカンダリ・ルーティング・プロバイダに対して割り振る工程と、
前記ルーティング・プロバイダのセットのメッセージ配信性能について記述するフィードバック・データを受信する工程と、
前記フィードバック・データに基づいて、前記ルーティング・プロバイダのセット内の各ルーティング・プロバイダのための個々の変換レートを決定する工程と
を含む動作を前記システムに実行させる
システム。
【請求項13】
前記フィードバック・データが、前記ルーティング・プロバイダのセットに対して割り振られたメッセージを送信するときのメッセージ配信性能について記述するライブ・フィードバックと、前記ルーティング・プロバイダのセットによって提供されるルートを使用してテスト・メッセージを送信するときのメッセージ配信性能について記述するテスティング・フィードバック・データとを含む、請求項12に記載のシステム。
【請求項14】
1つまたは複数のコンピュータ・プロセッサと、
命令を記憶する1つまたは複数のコンピュータ可読媒体と、を備えるシステムであって、前記命令は、前記1つまたは複数のコンピュータ・プロセッサによって実行されるとき、
第1のメッセージを活用のために割り振ることを決定することに応じて、
ルーティング・プロバイダのランク付けのセットに基づいて、第1のルーティング・プロバイダが最適なルーティング・プロバイダであることを決定する工程と、
配信されることになる前記第1のメッセージを、前記第1のルーティング・プロバイダに対して割り振る工程と、
第2のメッセージを探索のために割り振ることを決定することに応じて、
前記ルーティング・プロバイダのセットの前記ランク付けに基づいて、前記第1のルーティング・プロバイダを含まないセカンダリ・ルーティング・プロバイダのセットを識別する工程と、
前記第2のメッセージを、前記セカンダリ・ルーティング・プロバイダのセットのうちのセカンダリ・ルーティング・プロバイダに対して割り振る工程と、
定のメッセージ割り振りパーセンテージに基づく、前記第1のメッセージを活用メッセージとして割り振ることを決定する工程
を含む動作を前記システムに実行させる
システム。
【請求項15】
1つまたは複数のコンピュータ・プロセッサと、
命令を記憶する1つまたは複数のコンピュータ可読媒体と、を備えるシステムであって、前記命令は、前記1つまたは複数のコンピュータ・プロセッサによって実行されるとき、
第1のメッセージを活用のために割り振ることを決定することに応じて、
ルーティング・プロバイダのランク付けのセットに基づいて、第1のルーティング・プロバイダが最適なルーティング・プロバイダであることを決定する工程と、
配信されることになる前記第1のメッセージを、前記第1のルーティング・プロバイダに対して割り振る工程と、
第2のメッセージを探索のために割り振ることを決定することに応じて、
前記ルーティング・プロバイダのセットの前記ランク付けに基づいて、前記第1のルーティング・プロバイダを含まないセカンダリ・ルーティング・プロバイダのセットを識別する工程と、
前記第2のメッセージを、前記セカンダリ・ルーティング・プロバイダのセットのうちのセカンダリ・ルーティング・プロバイダに対して割り振る工程と
を含む動作を前記システムに実行させ、
探索のための複数のメッセージは、前記セカンダリ・ルーティング・プロバイダのセットにおいて等しく分けられる、システム。
【請求項16】
1つまたは複数のコンピューティング・デバイスの1つまたは複数のコンピュータ・プロセッサによって実行されるとき、
第1のメッセージを活用のために割り振ることを決定することに応じて、
ルーティング・プロバイダのランク付けのセットに基づいて、第1のルーティング・プロバイダが最適なルーティング・プロバイダであることを決定する工程と、
配信されることになる前記第1のメッセージを、前記第1のルーティング・プロバイダに対して割り振る工程と、
第2のメッセージを探索のために割り振ることを決定することに応じて、
前記ルーティング・プロバイダのセットの前記ランク付けに基づいて、前記第1のルーティング・プロバイダを含まないセカンダリ・ルーティング・プロバイダのセットを識別する工程と、
前記第2のメッセージを、前記セカンダリ・ルーティング・プロバイダのセットのうちのセカンダリ・ルーティング・プロバイダに対して割り振る工程と
を含む動作を前記1つまたは複数のコンピューティング・デバイスに実行させる命令を記憶する非一時的なコンピュータ可読媒体であって、
活用のために割り振るメッセージは、探索のために割り振るメッセージよりも多い、非一時的なコンピュータ可読媒体
【請求項17】
前記第1のルーティング・プロバイダが前記最適なルーティング・プロバイダであることを決定する工程が、
前記ルーティング・プロバイダのセットの前記ランク付けに基づいて、前記第1のルーティング・プロバイダが最も高くランク付けされることを決定する工程
を含む、請求項16に記載の非一時的なコンピュータ可読媒体。
【請求項18】
前記動作が、
第3のメッセージを送信する第3の要求を受信する工程と、
前記第3のメッセージを活用のために割り振ることを決定することに応じて、
前記ルーティング・プロバイダのセットの更新されたランク付けに基づいて、第3のルーティング・プロバイダが前記最適なルーティング・プロバイダであることを決定する工程と、
前記第3のメッセージを、前記第3のルーティング・プロバイダに対して割り振る工程と、
をさらに含む、請求項16に記載の非一時的なコンピュータ可読媒体。
【請求項19】
1つまたは複数のコンピューティング・デバイスの1つまたは複数のコンピュータ・プロセッサによって実行されるとき、
第1のメッセージを活用のために割り振ることを決定することに応じて、
ルーティング・プロバイダのランク付けのセットに基づいて、第1のルーティング・プロバイダが最適なルーティング・プロバイダであることを決定する工程と、
配信されることになる前記第1のメッセージを、前記第1のルーティング・プロバイダに対して割り振る工程と、
第2のメッセージを探索のために割り振ることを決定することに応じて、
前記ルーティング・プロバイダのセットの前記ランク付けに基づいて、前記第1のルーティング・プロバイダを含まないセカンダリ・ルーティング・プロバイダのセットを識別する工程と、
前記第2のメッセージを、前記セカンダリ・ルーティング・プロバイダのセットのうちのセカンダリ・ルーティング・プロバイダに対して割り振る工程と
を含む動作を前記1つまたは複数のコンピューティング・デバイスに実行させる命令を記憶する非一時的なコンピュータ可読媒体であって、
前記第1のメッセージを活用のために割り振ることを決定する工程が、所定のメッセージ割り振りパーセンテージに基づく、非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本主題の一実施形態は、一般に、メッセージ・ルーティングに関し、より詳細には、メッセージ・ルーティング最適化に関する。
【背景技術】
【0002】
ルーティング・プロバイダは、顧客に対してメッセージ配信機能を提供する。たとえば、ルーティング・プロバイダは、ルーティング・プロバイダによって意図された受信者に対してルーティング・プロバイダによって配信される各メッセージに対する料金を顧客に請求する。顧客は、ルーティング・プロバイダによって提供される性能に基づいて、どのルーティング・プロバイダを使用するべきかを選択してよい。たとえば、顧客は、ルーティング・プロバイダによって送信されるメッセージがその意図された受信者に対して首尾よく配信される可能性がどれくらいあるかに基づいて、ルーティング・プロバイダを選択してよい。
【発明の概要】
【発明が解決しようとする課題】
【0003】
現在、ルーティング・プロバイダを選択するプロセスは、手動で実施される。たとえば、人間レビューアは、利用可能なルーティング・プロバイダの性能を示すデータを分析するとともに、性能を最適化するためのルーティング・プロバイダの使用を調整する。この手動プロセスは、人間レビューアがデータを監視することと調整をすることの両方をすることから、低速であるとともにリソース集約的である。したがって、改善が必要とされる。
【課題を解決するための手段】
【0004】
メッセージ・ルーティング最適化システムは、複数のルーティング・プロバイダの性能を監視し、ルーティング・プロバイダに対してメッセージを割り振って、メッセージ・ルーティング性能を最適化する。たとえば、メッセージ・ルーティング最適化システムは、各ルーティング・プロバイダに関して決定される個々の変換レートを含む変換レート指標に基づいて、ルーティング・プロバイダに対してメッセージを割り振る。各変換レートは、ルーティング・プロバイダに対して割り振られたメッセージがその意図された受信者に対して首尾よく配信される推定尤度を示すことなどによって、ルーティング・プロバイダの性能レベルを示す。メッセージ・ルーティング最適化システムは、最も高い変換レートをもつルーティング・プロバイダに対してメッセージを割り振ることなどによって、変換レート指標に基づいてルーティング・プロバイダに対してメッセージを割り振る。したがって、メッセージは、最も高いレベルまたは性能を提供するために決定されたルーティング・プロバイダに対して割り振られ、それによって、メッセージ・ルーティング性能を最適化する。
【0005】
メッセージ・ルーティング最適化システムは、各ルーティング・プロバイダのためのフィードバック・データに基づいて各変換レートを計算する。フィードバック・データは、ライブ・フィードバック・データと、テスティング・フィードバック・データの両方を含み得る。ライブ・フィードバックは、メッセージ・ルーティング最適化システムによってルーティング・プロバイダに対して割り振られているメッセージを配信する各ルーティング・プロバイダの性能について記述する。たとえば、ライブ・フィードバック・データは、ルーティング・プロバイダが、割り振られたメッセージをその意図された受信者に対して送信したかどうか、メッセージがその意図された受信者によって首尾よく受信されたかどうか、メッセージが受信者によって指定されたアクションをもたらしたかどうか、メッセージがルーティング・プロバイダによって送信されるまで経過した時間の量、メッセージが受信者によって受信されるまで経過した時間の量などについて記述するデータを含むことができる。
【0006】
テスティング・フィードバック・データは、ルーティング・プロバイダのテストされた性能について記述する。たとえば、ルーティング・プロバイダのネットワークのテストは、ルーティング・プロバイダによって提供されるルートを使用してテスト・メッセージおよび/または総合的メッセージが送信される間に遂行可能である。テスティング・フィードバック・データは、テスト・メッセージが送信されたかどうか、受信されたかどうか、および/または指定された応答をもたらしたかどうか、ならびにテスト・メッセージが送信および/または受信される経過時間などの、テスト・メッセージの追跡された性能について記述する。
【0007】
メッセージ・ルーティング最適化システムは、ルーティング・プロバイダのためのフィードバック・データに基づいて、各ルーティング・プロバイダのための変換レートを計算する。結果として生じる変換レートは、ルーティング・プロバイダに対して割り振られたメッセージがその意図された受信者に対して首尾よく配信される尤度を示すことなどによって、ルーティング・プロバイダの性能レベルを示す。
【0008】
最も高い変換レートをもつルーティング・プロバイダを選択することは、最適化された性能を提供するために不可欠であるが、個々のルーティング・プロバイダの性能は、経時的に変動し、最適な性能を維持するために継続的に再評価されるべきである。したがって、メッセージ・ルーティング最適化システムは、変換レート指標に基づいて最も良い性能を提供するために決定された最適なルーティング・プロバイダの活用と、変換レート指標に基づいてより劣る性能(たとえば、最適なルーティング・プロバイダよりも低い)を提供することが決定されたセカンダリ・ルーティング・プロバイダの探索の両方を達成するという混合された目標とともに、ルーティング・プロバイダに対してメッセージを割り振る。探索目的でメッセージを割り振ることは、変換レートを更新し、どのルーティング・プロバイダが最も良く実施しているかを決定するために使用される更新されたフィードバック・データを提供する。
【0009】
メッセージ・ルーティング最適化システムは、最適化されたメッセージ・ルーティング性能を提供するために探索および活用目的でメッセージの割り振りを均衡させる。たとえば、メッセージ・ルーティング最適化システムは、最適なルーティング・プロバイダに対して割り振られるメッセージの数を最大化することを試行するが、また、ルーティング・プロバイダの適切な性能評価を可能にするのに十分なメッセージをセカンダリ・ルーティング・プロバイダに対して割り振る。
【0010】
このために、メッセージ・ルーティング最適化システムは、最適なルーティング・プロバイダによって提供されるより高い性能を活用するように、最適なルーティング・プロバイダに対してメッセージの一部分を割り振り、セカンダリ・ルーティング・プロバイダによって提供される性能を探索するために、セカンダリ・ルーティング・プロバイダに対してメッセージの別の部分を割り振る。たとえば、メッセージ・ルーティング最適化システムは、探索目的でセカンダリ・ルーティング・プロバイダの各々に対してメッセージのあるパーセンテージを割り振ることがあり、残りのメッセージは、最適なルーティング・プロバイダに対して割り振られる。たとえば、メッセージ・ルーティング最適化システムは、探索目的で各セカンダリ・ルーティング・プロバイダに対してメッセージの3%を割り振ることがある。したがって、合計5つのルーティング・プロバイダがある場合、メッセージの3%は、4つのセカンダリ・ルーティング・プロバイダの各々に対して割り振られ(たとえば、合計12%)、メッセージの残りの88%は、最適なルーティング・プロバイダに対して割り振られる。
【0011】
探索をさらに促すために、メッセージ・ルーティング最適化システムは、ルーティング・プロバイダのための変換レートの信頼上限推定値に基づいてルーティング・プロバイダに対してメッセージを割り振ることがある。信頼上限推定値は、フィードバック・データが利用可能な量に基づいて、ルーティング・プロバイダのための最も楽観的な変換レートなどの、各ルーティング・プロバイダの性能の楽観的推定値を提供する。信頼上限推定値は利用可能なフィードバック・データに基づくので、限られたフィードバック・データをもつルーティング・プロバイダに関する信頼上限推定値は、フィードバック・データが利用可能な限られた量により増幅される。たとえば、限られたフィードバックをもつルーティング・プロバイダに関する信頼上限推定値は、最初は非常に高く始まることがあるが、追加のフィードバック・データが収集されるにつれて低下し始める。信頼上限推定値を使用することによって、メッセージ・ルーティング最適化システムは、限られたフィードバック・データをもつルーティング・プロバイダに対してメッセージを割り振り、各ルーティング・プロバイダの性能に関して、より良い推定値をもたらす。
【0012】
必ずしも一定の縮尺で描かれるとは限らない図面では、同じ数字は、異なるビューにおける類似の構成要素について説明することがある。異なる添え字を有する同じ数字は、類似の構成要素の異なるインスタンスを表すことがある。いくつかの実施形態は、限定ではなく例として、添付の図面の図に図解される。
【図面の簡単な説明】
【0013】
図1】いくつかの例示的な実施形態による、メッセージ・ルーティング最適化のためのシステムを図示する図。
図2】いくつかの例示的な実施形態による、メッセージ・ルーティング最適化システムのブロック図。
図3】いくつかの例示的な実施形態による、変換レート決定エンジンのブロック図。
図4】いくつかの例示的な実施形態による、メッセージ・ルーティング最適化のためのシステム内での通信を図示する図。
図5】いくつかの例示的な実施形態による、顧客基準に基づいてメッセージを配信するためにルーティング・プロバイダを選択するためのメッセージ・ルーティング最適化システム内での通信を図示する図。
図6】いくつかの例示的な実施形態による、変換レート指標を生成するためのメッセージ・ルーティング最適化システム内での通信を図示する図。
図7】いくつかの例示的な実施形態による、メッセージ・ルーティング最適化のための方法を図示するフローチャート。
図8】いくつかの例示的な実施形態による、最適なルーティング・プロバイダを決定するための方法を図示するフローチャート。
図9】いくつかの例示的な実施形態による、セカンダリ・ルーティング・プロバイダを決定するための方法を図示するフローチャート。
図10】いくつかの例示的な実施形態による、変換レート指標を決定するための方法を図示するフローチャート。
図11】機械可読媒体(たとえば、機械可読記憶媒体)から命令を読み出し、本明細書において論じられる方法論のうちの任意の1つまたは複数を実施することが可能である、いくつかの例示的な実施形態による、機械の構成要素を図解するブロック図。
図12】機械可読媒体(たとえば、機械可読記憶媒体)から命令を読み出し、本明細書において論じられる方法論のうちの任意の1つまたは複数を実施することが可能である、いくつかの例示的な実施形態による、機械の構成要素を図解するブロック図。
【発明を実施するための形態】
【0014】
以下の説明では、解説の目的で、いくつかの例示的な実施形態の完全な理解を提供するためにさまざまな詳細が記載される。しかしながら、本主題は、これらの具体的な詳細なしに実践されてもよいし、わずかな改変を伴って実践されてもよいことは、当業者には明らかであろう。
【0015】
本明細書における「一実施形態(one embodiment)」または「一実施形態(an embodiment)」への言及は、その実施形態に関連して説明される特定の特徴、構造、または特性が本主題の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体を通じてさまざまな箇所において出現する「一実施形態では(in one embodiment)」 または「一実施形態では(in an embodiment)」という句の出現は、必ずしも同じ実施形態を参照しているとは限らない。
【0016】
解説の目的で、本主題の完全な理解を提供するために、具体的な構成および詳細が記載される。しかしながら、説明される主題の実施形態は、本明細書において提示される具体的な詳細なしに実践されてもよいし、本明細書において説明されるようにさまざまな組み合わせで実践されてもよいことは、当業者には明らかであろう。そのうえ、よく知られている特徴は、説明される実施形態を曖昧にしないように、省略または簡略化されてよい。本明細書全体を通じて、さまざまな例が与えられ得る。これらは、具体的な実施形態の説明に過ぎない。請求項の範囲または意味は、所与の例に対して限定されない。
【0017】
メッセージ・ルーティング最適化のためのシステム、方法、および非一時的なコンピュータ可読媒体が開示される。メッセージ・ルーティング最適化システムは、複数のルーティング・プロバイダの性能を監視し、ルーティング・プロバイダに対してメッセージを割り振って、メッセージ・ルーティング性能を最適化する。たとえば、メッセージ・ルーティング最適化システムは、各ルーティング・プロバイダに関して決定される個々の変換レートを含む変換レート指標に基づいて、ルーティング・プロバイダに対してメッセージを割り振る。各変換レートは、ルーティング・プロバイダに対して割り振られたメッセージがその意図された受信者に対して首尾よく配信される推定尤度を示すことなどによって、ルーティング・プロバイダの性能レベルを示す。メッセージ・ルーティング最適化システムは、最も高い変換レートをもつルーティング・プロバイダに対してメッセージを割り振ることなどによって、変換レート指標に基づいてルーティング・プロバイダに対してメッセージを割り振る。したがって、メッセージは、最も高いレベルまたは性能を提供するために決定されたルーティング・プロバイダに対して割り振られ、それによって、メッセージ・ルーティング性能を最適化する。
【0018】
メッセージ最適化のためのメッセージ・ルーティング最適化システムの使用は、いくつかの技術的利益を提供する。たとえば、メッセージ・ルーティングの最適化は、全体的なメッセージ変換レートを増加させる。言い換えれば、メッセージ・ルーティング最適化システムは、意図された受信者に対して首尾よく配信されるメッセージのパーセンテージの増加を引き起こす。その結果、データ通信性能が増加される。変換レートを改善することによって、再送信されるメッセージの数も減少し、それによって、基盤となるコンピューティング・システム・リソース使用率も減少する。
【0019】
図1は、いくつかの例示的な実施形態による、メッセージ・ルーティング最適化のためのシステム100を図示する。図示されるように、複数のデバイス(すなわち、クライアント・デバイス102、クライアント・デバイス104、顧客コンピューティング・システム106、ルーティング・プロバイダ108、およびメッセージ・ルーティング最適化システム110)は、通信ネットワーク112に対して接続され、通信ネットワーク112の使用を通じて互いと通信するように構成される。通信ネットワーク112は、イントラネットなどのローカル・エリア・ネットワーク(LAN)、インターネットなどのワイド・エリア・ネットワーク(WAN)、セルラー・ネットワークなどの電話およびモバイル・デバイス・ネットワーク、またはそれらの任意の組み合わせを含む、任意のタイプのネットワークである。さらに、通信ネットワーク112は、パブリック・ネットワークであってもよいし、プライベート・ネットワークであってもよいし、それらの組み合わせであってもよい。通信ネットワーク112は、1つもしくは複数のワイヤード通信リンク、1つもしくは複数のワイヤレス通信リンク、またはそれらの任意の組み合わせを含む、1つまたは複数のサービス・プロバイダと関連づけられた任意の数の通信リンクを使用して、実装される。追加的に、通信ネットワーク112は、任意の数のプロトコルを使用してフォーマットされたデータの送信をサポートするように構成される。
【0020】
複数のコンピューティング・デバイスは、通信ネットワーク112に対して接続されることが可能である。コンピューティング・デバイスは、他のコンピューティング・デバイスとのネットワーク通信が可能である任意のタイプの汎用コンピューティング・デバイスである。たとえば、コンピューティング・デバイスは、デスクトップもしくはワークステーションなどのパーソナル・コンピューティング・デバイス、ビジネス・サーバ、またはラップトップ、スマートフォン、もしくはタブレット・パーソナル・コンピュータ(PC)などのポータブル・コンピューティング・デバイスであってよい。コンピューティング・デバイスは、図12に図示される機械1200の特徴、構成要素、および周辺機器のうちのいくつかまたはすべてを含むことができる。
【0021】
他のコンピューティング・デバイスとの通信を促進するために、コンピューティング・デバイスは、コンピューティング・デバイスとのネットワーク通信において別のコンピューティング・デバイスから要求、データなどの通信を受信するように構成された通信インタフェースを含み、コンピューティング・デバイス上で稼働する適切なモジュールに対して通信を通過させる。通信インタフェースはまた、コンピューティング・デバイスとのネットワーク通信において別のコンピューティング・デバイスに対して通信を送る。
【0022】
顧客コンピューティング・システム106は、メッセージ・ルーティング最適化システム110の顧客と関連づけられた1つまたは複数のコンピューティング・デバイスである。顧客は、個人、ビジネス、企業、および/またはメッセージ・ルーティング最適化システム110によって提供されるサービスを使用して意図された受信者に対して通信メッセージを送信する他の任意のタイプのエンティティであってよい。通信メッセージは、クライアント・デバイス102のディスプレイ上で表示されることなどによって、クライアント・デバイス102のユーザに対して提示されるという目的で受信側クライアント・デバイス102に対して送信されるさまざまなタイプのメッセージのいずれかであってよい。たとえば、通信メッセージは、ショート・メッセージ・サービス(SMS)メッセージなどのテキスト・ベース・メッセージ、マルチメディア・メッセージ・サービス(MMS)メッセージなどのマルチメディア・ベース・メッセージなどであってよい。
【0023】
顧客は、メッセージ・ルーティング最適化システム110の機能を、顧客によって提供されるサービスの一部として使用することがある。顧客は、銀行業務サービス、旅行サービス、小売サービスなどの任意のタイプのサービスを提供してよい。サービスは、オンライン・サービスおよび/またはオフライン・サービスであってよい。すなわち、サービスは、オンライン小売業者など、オンラインのみで利用可能であってもよいし、実小売業者など、オフラインのみで利用可能であってもよいし、ウェブサイトまたはアプリケーションならびに実小売店舗を提供する小売店など、オンラインとオフラインの両方で利用可能であってもよい。
【0024】
顧客コンピューティング・システム106は、相乗りサービス、予約サービス、小売サービス、ニュース・サービスなどの、オンラインで提供される顧客の任意のサービスを促進し得る。これらのタイプの実施形態では、ユーザは、顧客コンピューティング・システム106と相互作用して、顧客によって提供されるオンライン・サービスを利用し得る。ユーザは、直接的な通信および/または間接的な通信によって通信ネットワーク112に対して接続されるクライアント・デバイス102および104を使用することによって、顧客コンピューティング・システム106と通信し、顧客コンピューティング・システム106の機能を利用する。しかしながら、顧客コンピューティング・システム106は、ユーザに対してアクセス可能であるオンライン・サービスを提供する必要はない。すなわち、顧客コンピューティング・システム106は単に、任意のタイプの機能を実施するために顧客によって使用されるコンピューティング・システムであってよい。
【0025】
図示されるシステム100は、2つのクライアント・デバイス102、104と、1つの顧客コンピューティング・システム106のみを含むが、これは、解説を簡単にするためであり、限定的であることは意味されていない。当業者は、システム100が任意の数のクライアント・デバイス102、104および/または顧客コンピューティング・システム106を含むことができることを諒解するであろう。さらに、各顧客コンピューティング・システム106は同時に、任意の数のクライアント・デバイス102、104から通信を受け入れ、通信メッセージを開始するおよび/または任意の数のクライアント・デバイス102、104と相互作用し、デスクトップ・コンピュータ;モバイル・コンピュータ;モバイル通信デバイス、たとえば、携帯電話、スマートフォン、タブレット;多機能テレビ;セット・トップ・ボックス;および/または他の任意のネットワーク対応コンピューティング・デバイスなどの、さまざまな異なるタイプのクライアント・デバイス102、104からの接続をサポートしてよい。したがって、クライアント・デバイス102および104は、変化するタイプ、能力、オペレーティング・システムなどであってよい。
【0026】
ユーザは、クライアント・デバイス102および104上にインストールされたクライアント・サイド・アプリケーションを介して、顧客コンピューティング・システム106と相互作用する。いくつかの実施形態では、クライアント・サイド・アプリケーションは、顧客コンピューティング・システム106に特有の構成要素を含む。たとえば、構成要素は、スタンドアロン・アプリケーション、1つまたは複数のアプリケーション・プラグイン、および/またはブラウザ拡張機能であってよい。しかしながら、ユーザは、クライアント・デバイス102および104上にあり顧客コンピューティング・システム106と通信するように構成される、ウェブ・ブラウザまたはメッセージング・アプリケーションなどのサード・パーティ・アプリケーションを介して、顧客コンピューティング・システム106とも相互作用することがある。いずれの場合にも、クライアント・サイド・アプリケーションは、ユーザが顧客コンピューティング・システム106と相互作用するためのユーザ・インタフェース(UI)を提示する。たとえば、ユーザは、ファイル・システムと統合されたクライアント・サイド・アプリケーションを介して、またはウェブ・ブラウザ・アプリケーションを使用して表示されるウェブページを介して、顧客コンピューティング・システム106と相互作用する。
【0027】
顧客は、顧客コンピューティング・システム106を使用して、意図された受信者への通信メッセージ(たとえば、SMSメッセージ)の送信を引き起こすことができる。たとえば、顧客コンピューティング・システム106は、顧客コンピューティング・システム106のユーザが顧客のエージェントおよび/または他のユーザに対してメッセージを送信することを可能にするオンライン機能を提供することがある。別の例として、顧客コンピューティング・システム106は、2要素認証、パスワード・リセット、更新、コンテンツへのリンク、プロモーションなどをユーザに提供するために、ユーザに対してメッセージを送信することがある。
【0028】
ルーティング・プロバイダ108は、メッセージ配信機能を提供する。たとえば、ルーティング・プロバイダ108は、メッセージをそれらの意図された受信者クライアント・デバイス102、104に対して送信するために使用され得る通信ルートを維持する。ルーティング・プロバイダ108は、ルーティング・プロバイダ108によって配信される顧客の各メッセージに対する料金を顧客に請求することがある。
【0029】
システム100は、任意の数のルーティング・プロバイダ108を含んでよく、その各々は、変化するレベルの性能を提供してよい。たとえば、メッセージが首尾よく配信される尤度は、ルーティング・プロバイダ108ならびにルーティング・プロバイダ108によって提供される個々のルートにより変化することがある。さらに、各ルーティング・プロバイダ108の性能は、経時的に変化することがある。したがって、メッセージが首尾よく配信される尤度は、メッセージを配信するために選択されるルーティング・プロバイダ108および/またはルートに基づいて変化する。したがって、性能に基づいてルーティング・プロバイダ108の選択を変化させることによって、メッセージが首尾よく配信されるより高い全体的な尤度を提供し得る。
【0030】
メッセージ・ルーティング最適化システム110は、メッセージ・ルーティング性能を最適化する機能を顧客に提供する。たとえば、メッセージ・ルーティング最適化システム110は、複数のルーティング・プロバイダ108の性能を監視し、ルーティング・プロバイダ108に対してメッセージを割り振り、メッセージ・ルーティング性能を最適化する。たとえば、メッセージ・ルーティング最適化システム110は、各ルーティング・プロバイダ108に関して決定される個々の変換レートを含む変換レート指標に基づいて、ルーティング・プロバイダ108に対してメッセージを割り振る。各変換レートは、ルーティング・プロバイダ108に対して割り振られたメッセージがその意図された受信者に対して首尾よく配信される推定尤度を示すことなどによって、ルーティング・プロバイダ108の性能レベルを示す。メッセージ・ルーティング最適化システム110は、最も高い変換レートをもつルーティング・プロバイダ108に対してメッセージを割り振ることなどによって、変換レート指標に基づいてルーティング・プロバイダ108に対してメッセージを割り振る。したがって、メッセージは、最も高いレベルまたは性能を提供するために決定されたルーティング・プロバイダ108に対して割り振られ、それによって、メッセージ・ルーティング性能を最適化する。
【0031】
メッセージ・ルーティング最適化システム110は、各ルーティング・プロバイダ108のためのフィードバック・データに基づいて各変換レートを計算する。フィードバック・データは、ライブ・フィードバック・データと、テスティング・フィードバック・データの両方を含み得る。ライブ・フィードバックは、メッセージ・ルーティング最適化システム110によってルーティング・プロバイダ108に対して割り振られているメッセージを配信する各ルーティング・プロバイダ108の性能について記述する。たとえば、ライブ・フィードバック・データは、ルーティング・プロバイダ108が、割り振られたメッセージをその意図された受信者に対して送信したかどうか、メッセージがその意図された受信者によって首尾よく受信されたかどうか、メッセージが受信者によって指定されたアクションをもたらしたかどうか、メッセージがルーティング・プロバイダ108によって送信されるまで経過した時間の量、メッセージが受信者によって受信されるまで経過した時間の量などについて記述するデータを含むことができる。
【0032】
テスティング・フィードバック・データは、ルーティング・プロバイダ108のテストされた性能について記述する。たとえば、ルーティング・プロバイダ108のネットワークのテストは、ルーティング・プロバイダ108によって提供されるルートを使用してテスト・メッセージおよび/または総合的メッセージが送信される間に遂行可能である。テスティング・フィードバック・データは、テスト・メッセージが送信されたかどうか、受信されたかどうか、および/または指定された応答をもたらしたかどうか、ならびにテスト・メッセージが送信および/または受信される経過時間などの、テスト・メッセージの追跡された性能について記述する。
【0033】
メッセージ・ルーティング最適化システム110は、ルーティング・プロバイダ108のためのフィードバック・データに基づいて、各ルーティング・プロバイダ108のための変換レートを計算する。結果として生じる変換レートは、ルーティング・プロバイダ108に対して割り振られたメッセージがその意図された受信者に対して首尾よく配信される尤度を示すことなどによって、ルーティング・プロバイダ108の性能レベルを示す。
【0034】
最も高い変換レートをもつルーティング・プロバイダ108を選択することは、最適化された性能を提供するために不可欠であるが、個々のルーティング・プロバイダ108の性能は、経時的に変動し、最適な性能を維持するために継続的に再評価されるべきである。したがって、メッセージ・ルーティング最適化システム110は、変換レート指標に基づいて最も良い性能を提供するために決定された最適なルーティング・プロバイダ108の活用と、変換レート指標に基づいてより劣る性能(たとえば、最適なルーティング・プロバイダ108よりも低い)を提供することが決定されたセカンダリ・ルーティング・プロバイダの108の探索の両方を達成するという混合された目標とともに、ルーティング・プロバイダ108に対してメッセージを割り振る。探索目的でメッセージを割り振ることは、変換レートを更新し、どのルーティング・プロバイダ108が最も良く実施しているかを決定するために使用される更新されたフィードバック・データを提供する。
【0035】
メッセージ・ルーティング最適化システム110は、最適化されたメッセージ・ルーティング性能を提供するために探索および活用目的でメッセージの割り振りを均衡させる。たとえば、メッセージ・ルーティング最適化システム110は、最適なルーティング・プロバイダ108に対して割り振られるメッセージの数を最大化することを試行するが、また、ルーティング・プロバイダ108の適切な性能評価を可能にするのに十分なメッセージをセカンダリ・ルーティング・プロバイダ108に対して割り振る。
【0036】
このために、メッセージ・ルーティング最適化システム110は、最適なルーティング・プロバイダ108によって提供されるより高い性能を活用するように、最適なルーティング・プロバイダ108に対してメッセージの一部分を割り振り、セカンダリ・ルーティング・プロバイダ108によって提供される性能を探索するために、セカンダリ・ルーティング・プロバイダ108に対してメッセージの別の部分を割り振る。たとえば、メッセージ・ルーティング最適化システム110は、探索目的でセカンダリ・ルーティング・プロバイダ108の各々に対してメッセージのあるパーセンテージを割り振ることがあり、残りのメッセージは、最適なルーティング・プロバイダ108に対して割り振られる。たとえば、メッセージ・ルーティング最適化システム110は、探索目的で各セカンダリ・ルーティング・プロバイダ108に対してメッセージの3%を割り振ることがある。したがって、合計5つのルーティング・プロバイダ108がある場合、メッセージの3%は、4つのセカンダリ・ルーティング・プロバイダ108の各々に対して割り振られ(たとえば、合計12%)、メッセージの残りの88%は、最適なルーティング・プロバイダ108に対して割り振られる。セカンダリ・ルーティング・プロバイダ108に対して割り振られたメッセージの3%は、単なる一例であり、限定的であることを意味されていない。メッセージ・ルーティング最適化システム110は、そのような1%、2%など、メッセージの任意のパーセンテージをセカンダリ・ルーティング・プロバイダ108に対して割り振ってよい。
【0037】
探索をさらに促すために、メッセージ・ルーティング最適化システム110は、ルーティング・プロバイダ108のための変換レートの信頼上限推定値に基づいてルーティング・プロバイダ108に対してメッセージを割り振ることがある。信頼上限推定値は、フィードバック・データが利用可能な量に基づいて、ルーティング・プロバイダ108のための最も楽観的な変換レートなどの、各ルーティング・プロバイダ108の性能の楽観的推定値を提供する。信頼上限推定値は利用可能なフィードバック・データに基づくので、限られたフィードバック・データをもつルーティング・プロバイダ108に関する信頼上限推定値は、フィードバック・データが利用可能な限られた量により増幅されるであろう。たとえば、限られたフィードバックをもつルーティング・プロバイダ108に関する信頼上限推定値は、最初は非常に高く始まることがあるが、追加のフィードバック・データが収集されるにつれて低下し始める。信頼上限推定値を使用することによって、メッセージ・ルーティング最適化システム110は、限られたフィードバック・データをもつルーティング・プロバイダに対してメッセージを割り振り、各ルーティング・プロバイダ108の性能においてより良い推定値をもたらす。
【0038】
図2は、いくつかの例示的な実施形態による、メッセージ・ルーティング最適化システム110のブロック図である。不必要な詳細により本発明の主題を曖昧にすることを避けるために、本発明の主題の理解を伝えることと密接な関係がないさまざまな機能構成要素(たとえば、モジュール)は、図2から省略されている。しかしながら、当業者は、本明細書において具体的に説明されない追加の機能を促進するためにさまざまな追加の機能構成要素がメッセージ・ルーティング最適化システム110によってサポートされ得ることを直ちに認識するであろう。そのうえ、図2において描かれるさまざまな機能モジュールは、単一のコンピューティング・デバイス上にあってもよいし、クラウド・ベース・アーキテクチャにおいて使用される配置などのさまざまな配置においていくつかのコンピューティング・デバイスにわたって分散されてもよい。
【0039】
図示されるように、メッセージ・ルーティング最適化システム110は、変換レート決定エンジン202と、要求取り込みモジュール204と、ルーティング・プロバイダ決定モジュール206と、メッセージ最適化エンジン208と、メッセージ割り振りモジュール210と、ルーティング・プロバイダ記憶部212と、フィードバック・データ記憶部214と、変換レート指標記憶部216とを含む。さらに、メッセージ最適化エンジン208は、メッセージ均衡化モジュール218と、変換レート指標・アクセシング・モジュール220と、ルーティング・プロバイダ選択モジュール222とを含む。
【0040】
変換レート決定エンジン202は、ルーティング・プロバイダ108の性能を示す変換レート指標を生成および更新する。変換レート指標は、各ルーティング・プロバイダ108に関して決定される個々の変換レートを含む。各変換レートは、ルーティング・プロバイダ108に対して割り振られたメッセージがその意図された受信者に対して首尾よく配信される推定尤度を示すことなどによって、ルーティング・プロバイダ108の性能レベルを示す。
【0041】
変換レート決定エンジン202は、ルーティング・プロバイダ108のためのフィードバック・データに基づいて、ルーティング・プロバイダ108の各々のための変換レートを計算する。フィードバック・データは、ライブ・フィードバック・データと、テスティング・フィードバック・データの両方を含み得る。ライブ・フィードバックは、メッセージ・ルーティング最適化システム110によってルーティング・プロバイダ108に対して割り振られているメッセージを配信する各ルーティング・プロバイダ108の性能について記述する。たとえば、ライブ・フィードバック・データは、ルーティング・プロバイダ108が、割り振られたメッセージをその意図された受信者に対して送信したかどうか、メッセージがその意図された受信者によって首尾よく受信されたかどうか、メッセージが受信者によって指定されたアクションをもたらしたかどうか、メッセージがルーティング・プロバイダによって送信されるまで経過した時間の量、メッセージが受信者によって受信されるまで経過した時間の量などについて記述するデータを含むことができる。
【0042】
テスティング・フィードバック・データは、ルーティング・プロバイダ108のテストされた性能について記述する。たとえば、ルーティング・プロバイダのネットワークのテストは、ルーティング・プロバイダ108によって提供されるルートを使用してテスト・メッセージおよび/または総合的メッセージが送信される間に遂行可能である。テスティング・フィードバック・データは、テスト・メッセージが送信されたかどうか、受信されたかどうか、および/または指定された応答をもたらしたかどうか、ならびにテスト・メッセージが送信および/または受信される経過時間などの、テスト・メッセージの追跡された性能について記述する。
【0043】
変換レート決定エンジン202は、フィードバック・データ記憶部214からフィードバック・データを収集する。いくつかの実施形態では、変換レート決定エンジン202は、利用可能なフィードバック・データのすべてまたはフィードバック・データのサブセットを使用して、ルーティング・プロバイダ108のための変換レートを計算することがある。たとえば、変換レート決定エンジン202は、利用可能なフィードバック・データのスライディング・ウィンドウを利用することがある。スライディング・ウィンドウは、過去72時間、過去36時間などの、動く時間フレームを規定し得る。変換レート決定エンジン202は、スライディング・ウィンドウに含まれるフィードバック・データのサブセットを収集し、これは、ルーティング・プロバイダ108のための変換レートを計算するために使用される。時間に基づいてスライディング・ウィンドウを使用することは、ルーティング・プロバイダ108のために計算された変換レートは、古くなったデータではなく最近のデータに基づき、したがって、各ルーティング・プロバイダ108の現在の性能を表すことを保証する。
【0044】
別の例として、スライディング・ウィンドウは、特定のルーティング・プロバイダを使用して送られた過去5,000のメッセージなどの、最も最近のメッセージの数を規定することがある。このタイプの実施形態では、各ルーティング・プロバイダのためのフィードバック・データによって表される時間フレームは、それぞれのルーティング・プロバイダによって送信されたメッセージの量に基づいて変化され得る。このタイプのスライディング・ウィンドウは、それぞれのルーティング・プロバイダのための変換レートを計算するために使用されるルーティング・データの量の均衡を提供するが、古くなったフィードバック・データの使用も限定する。
【0045】
変換レート決定エンジン202は、収集されたフィードバック・データを使用して、各ルーティング・プロバイダ108のための変換レートを計算する。変換レート決定エンジン202は、さまざまなアルゴリズムのいずれかを使用して、変換レートを計算してよい。たとえば、ルーティング・プロバイダ108のための変換レートは、首尾よく配信されたルーティング・プロバイダ108によって送信されるメッセージのパーセンテージに基づいてよい。このタイプの実施形態では、変換レート決定エンジン202は、各ルーティング・プロバイダ108のためのフィードバック・データを使用して、ルーティング・プロバイダ108に対して割り振られたメッセージの総数およびルーティング・プロバイダ108によって首尾よく配信されたメッセージの総数を決定し、この決定された値を使用して、ルーティング・プロバイダ108によって首尾よく配信された割り振られたメッセージのパーセンテージを計算し得る。
【0046】
いくつかの実施形態では、各ルーティング・プロバイダ108に関して決定される変換レートが信頼上限推定値であることがある。信頼上限推定値は、フィードバック・データが利用可能な量に基づいて、各ルーティング・プロバイダ108の性能の楽観的な推定値(たとえば、最も楽観的な変換レート)を提供する。信頼上限推定値は利用可能なフィードバック・データに基づくので、限られたフィードバック・データをもつルーティング・プロバイダ108に関する信頼上限推定値は、フィードバック・データが利用可能な限られた量により増幅されるであろう。たとえば、限られたフィードバックをもつルーティング・プロバイダ108に関する信頼上限推定値は、最初は非常に高く始まることがあるが、追加のフィードバック・データが収集されるにつれて正規化する。
【0047】
メッセージは、限られたフィードバック・データをもつルーティング・プロバイダ108に対して割り振られ、経時的に各ルーティング・プロバイダ108の性能におけるより良い推定値をもたらすので、信頼上限推定値を使用することは、メッセージ・ルーティング最適化システム110による探索を促す。
【0048】
変換レート決定エンジン202は、各ルーティング・プロバイダ108のための、ならびにルーティング・プロバイダ108によって提供される個々のルートのための、変換レートを計算し得る。たとえば、変換レート決定エンジン202は、各提供されたルートに関連するフィードバック・データのサブセットを使用して、ルートのための変換レートを計算することがある。ルートのための変換レートを計算することは、性能を最適化するためにメッセージを割り振るとき、より大きいレベルの粒度を提供する。たとえば、メッセージ・ルーティング最適化システム110は、ルーティング・プロバイダ108の全体的な性能ではなく、ルーティング・プロバイダ108によって使用できる指定されたルートの性能に基づいて、メッセージを割り振ることがある。
【0049】
変換レート指標は、変換レート指標記憶部216内に記憶される。したがって、変換レート決定エンジン202は、ルーティング・プロバイダ108のために計算された変換レートに基づいて変換レート指標を更新するために、変換レート指標記憶部216と通信する。いくつかの実施形態では、変換レート決定エンジン202は、5分ごと、10分ごとなどの規則的な時間間隔で、変換レート指標を更新し得る。変換レート指標を更新することは、フィードバック・データを収集することと、ルーティング・プロバイダ108のための変換レートを計算することと、変換レート指標中の変換レートを更新するために変換レート指標記憶部216と通信することとを含む。その結果、変換レート指標は、ルーティング・プロバイダ108の性能の正確な表現を提供するために継続的に更新されるであろう。
【0050】
変換レート決定エンジン202の機能は、以下で図3に関連してより詳細に論じられる。
要求取り込みモジュール204は、顧客のためのメッセージを配信する要求を受信する。たとえば、要求取り込みモジュール204は、顧客コンピューティング・システム106から要求を受信することがある。要求は、顧客コンピューティング・システム106によって提供されるオンライン機能をユーザが利用したことの結果として送信されることがある。たとえば、ユーザは、クライアント・デバイス102を使用して、顧客コンピューティング・システム106と通信し、顧客コンピューティング・システム106の機能を利用することがあるが、これは、メッセージの送信を伴うことがある。たとえば、ユーザは、アカウントへのログインを要求し、2要素認証を提供するためにメッセージの送信をもたらすことがある。別の例として、ユーザは、顧客のエージェントまたは別のユーザに対してメッセージを送信し開始することがある。代替的に、要求は、オンライン・サービスのユーザ使用に対して直接応答しない機能を提供するために顧客コンピューティング・システム106によって送信されることがある。たとえば、要求は、ユーザに対して販促資料または更新を提供するために、顧客コンピューティング・システム106によって送信されることがある。
【0051】
要求は、顧客を識別するデータ、意図された受信者を識別するデータ、および/またはメッセージのペイロードを含んでよい。たとえば、要求は、メッセージ・ルーティング最適化システム110を用いて顧客および/または顧客のアカウントに割り当てられた一意の識別子を含むことがある。要求は、受信者クライアント・デバイス102と関連づけられた電話番号、受信者などと関連づけられたメッセージ・ルーティング最適化システム110のアカウントなどの、メッセージの受信者のための識別子も含むことがある。ペイロードは、テキスト、画像、データのリッチ・メディア・フォーマット、および/またはデータ・フォーマットの任意の組み合わせを含むが、受信者に対して提供されるメッセージ内に含まれる上記のフォーマットに対して限定されない、さまざまなタイプのデータのいずれかを含んでよい。
【0052】
ルーティング・プロバイダ決定モジュール206は、メッセージをその意図された受信者に対してルーティングするために利用可能なルーティング・プロバイダ108および/またはルートのセットを決定する。異なるルーティング・プロバイダ108は、指定された地理的領域内の宛先ネットワークなどの宛先ネットワークの限られたセットに対してメッセージ配信サービスを提供してよい。したがって、ルーティング・プロバイダ決定モジュール206は、受信された要求と関連づけられたデータを使用して、要求されたメッセージを受信者の宛先ネットワークに対してルーティングするために利用可能なルーティング・プロバイダ108および/またはルートのセットを識別する。
【0053】
ルーティング・プロバイダ決定モジュール206は、メッセージの意図された受信者と関連づけられた電話番号または他の識別子を使用して、意図された受信者の宛先ネットワークを識別する。各宛先ネットワークは、具体的な宛先ネットワークを識別するモバイル国コード(MCC)/モバイル・ネットワーク・コード(MNC)ペアが割り当てられることがある。
【0054】
ルーティング・プロバイダ決定モジュール206は、メッセージの意図された受信者と関連づけられた電話番号を使用して、宛先ネットワークを識別するMCC/MNCペアを探す。たとえば、ルーティング・プロバイダ決定モジュール206は、各電話番号に対応するMCC/MNCペアをリストするMCC/MNCディレクトリを使用するMCC/MNCペアを決定する。いくつかの実施形態では、MCC/MNCディレクトリは、ルーティング・プロバイダ記憶部212内に記憶されることがある。代替的に、MCC/MNCディレクトリは、何らかの他のネットワーク・アクセス可能場所において記憶されることがある。いずれの場合にも、ルーティング・プロバイダ決定モジュール206は、メッセージの意図された受信者と関連づけられた電話番号を使用して、MCC/MNCディレクトリに問い合わせ、対応する宛先ネットワークを識別するMCC/MNCペアを識別する。
【0055】
ルーティング・プロバイダ決定モジュール206は、MCC/MNCディレクトリから取り出されたMCC/MNCペアを使用して、MCC/MNCペアによって識別される宛先ネットワークに対してメッセージを配信するために利用可能なルーティング・プロバイダ108およびルートを識別する。たとえば、ルーティング・プロバイダ記憶部212は、メッセージ・ルーティング最適化システム110によってサービスされる各MCC/MNCペアと、各MCC/MNCペアとともに使用するために利用可能な対応するルーティング・プロバイダ108およびルートとをリストするルーティング・プロバイダ・ディレクトリを含むことがある。すなわち、ルーティング・プロバイダ・ディレクトリは、ルーティング・プロバイダ・ディレクトリ内でリストされた各MCC/MNCペアによって識別される宛先ネットワークに対してメッセージを配信するためにメッセージ・ルーティング最適化システム110にとって利用可能であるルーティング・プロバイダおよびルートをリストする。したがって、ルーティング・プロバイダ決定モジュール206は、MCC/MNCペアを使用して、ルーティング・プロバイダ・ディレクトリを検索し、要求されたメッセージを配信するために利用可能なルーティング・プロバイダ108とルートのセットを識別する。ルーティング・プロバイダ決定モジュール206は、このデータをメッセージ最適化エンジン208に対して提供する。
【0056】
メッセージ最適化エンジン208は、全体的なメッセージ・ルーティング性能を最適化するように各メッセージを配信するために、ルーティング・プロバイダを選択する。図示されるように、メッセージ最適化エンジン208は、メッセージ均衡化モジュール218と、変換レート指標・アクセシング・モジュール220と、ルーティング・プロバイダ選択モジュール222とを含む。
【0057】
メッセージ均衡化モジュール218は、メッセージが活用目的で割り振られるべきか探索目的で割り振られるべきかを決定する。以前に解説されたように、メッセージの割り振りは、最適化されたメッセージ・ルーティング性能を提供するために探索目的と活用目的との間で均衡される。たとえば、最適なルーティング・プロバイダ108に対して割り振られるメッセージの数が最大にされるが、ルーティング・プロバイダ108の適切な性能評価を可能にするのに十分なメッセージがセカンダリ・ルーティング・プロバイダ108に対して割り振られることも可能にする。
【0058】
メッセージ均衡化モジュール218は、最適なルーティング・プロバイダ108によって提供されるより高い性能を活用するために最適なルーティング・プロバイダ108に対してメッセージのうちのいくつかを割り振り、セカンダリ・ルーティング・プロバイダ108によって提供される性能を探索するためにセカンダリ・ルーティング・プロバイダ108に対してメッセージの別の部分を割り振ることによって、活用と探索とのこの均衡を管理する。たとえば、メッセージ均衡化モジュール218は、探索目的でセカンダリ・ルーティング・プロバイダ108の各々に対してメッセージのあるパーセンテージを割り振り、残りのメッセージが最適なルーティング・プロバイダ108に対して割り振られることがある。たとえば、メッセージ均衡化モジュール218は、探索目的で各セカンダリ・ルーティング・プロバイダ108に対してメッセージの3%を割り振ることがある。したがって、合計5つのルーティング・プロバイダ108がある場合、メッセージの3%は、4つのセカンダリ・ルーティング・プロバイダ108の各々に対して割り振られ(たとえば、合計12%)、メッセージの残りの88%は、最適なルーティング・プロバイダ108に対して割り振られる。
【0059】
メッセージ均衡化モジュール218は、あらかじめ規定された割り振りパーセンテージを満たすように、メッセージが最適なルーティング・プロバイダ108によって送信されるべきかセカンダリ・ルーティング・プロバイダ108によって送信されるべきかを選択する。すなわち、メッセージ均衡化モジュール218は、あらかじめ規定された割り振りパーセンテージを使用して、メッセージ要求は最適なルーティング・プロバイダ108が割り振られるべきかセカンダリ・ルーティング・プロバイダ108が割り振られるべきかを選択する。たとえば、上記の場合が与えられると、メッセージ均衡化モジュール218は、メッセージの12%をセカンダリ・ルーティング・プロバイダに対して、メッセージの残りの88%を最適なルーティング・プロバイダ108に対して割り振る。
【0060】
メッセージ均衡化モジュール218は、さまざまな手段のいずれかで、あらかじめ規定された割り振りパーセンテージに従ってメッセージを割り振ってよい。たとえば、メッセージ均衡化モジュール218は、最適なルーティング・プロバイダ108に対して割り振られるように連続して88のメッセージを、これに続いて、セカンダリ・メッセージ・プロバイダ108に対して割り振られる12のメッセージを選択することなどによって、セット・チャンク内の最適なルーティング・プロバイダ108およびセカンダリ・ルーティング・プロバイダ108の各々のためのあらかじめ規定された割り振りパーセンテージを満足させることがある。代替的に、メッセージ均衡化モジュール218は、8つまたは9つのメッセージのうち1つをセカンダリ・ルーティング・プロバイダ108に対して割り振ることなどによって、最適なルーティング・プロバイダ108に対して割り振られたメッセージの全体にわたって、セカンダリ・ルーティング・プロバイダ108に対して割り振られたメッセージを均等に散在させることがある。
【0061】
メッセージ均衡化モジュール218は、メッセージが最適なルーティング・プロバイダ108に対して割り振られるべきかセカンダリ・ルーティング・プロバイダ108のうちの1つに対して割り振られるべきかを示す命令をルーティング・プロバイダ選択モジュール222に対して提供する。
【0062】
ルーティング・プロバイダ選択モジュール222は、各メッセージが割り振られるべきである具体的なルーティング・プロバイダ108を選択する。たとえば、ルーティング・プロバイダ選択モジュール222は、最適なルーティング・プロバイダ108およびセカンダリ・ルーティング・プロバイダ108を決定し、メッセージ均衡化モジュール218から受信された命令に基づいてルーティング・プロバイダ108を選択する。たとえば、命令が、メッセージがセカンダリ・ルーティング・プロバイダ108に対して割り振られるべきであることを示す場合、ルーティング・プロバイダ選択モジュール222は、具体的なセカンダリ・ルーティング・プロバイダ108を選択する。命令が、メッセージが最適なルーティング・プロバイダ108に対して割り振られるべきであることを示す場合、ルーティング・プロバイダ選択モジュール222は、最も良い現在の性能を有するルーティング・プロバイダ108を選択する。
【0063】
ルーティング・プロバイダ選択モジュール222は、各ルーティング・プロバイダ108のための変換レートに基づいて、最適なルーティング・プロバイダ108およびセカンダリ・ルーティング・プロバイダ108を決定する。変換レート指標・アクセシング・モジュール220は、ルーティング・プロバイダ選択モジュール222に対して変換レート指標を提供する。たとえば、変換レート指標・アクセシング・モジュール220は、変換レート指標記憶部216から変換レート指標にアクセスし、ルーティング・プロバイダ選択モジュール222に対して変換レート指標を提供する。変換レート指標・アクセシング・モジュール220は、指定された時間間隔で、この機能を実施し得る。たとえば、変換レート指標・アクセシング・モジュール220は、いつ変換レート指標が変換レート決定エンジン202によって更新されたかに基づいて、指定された時間間隔で変換レート指標にアクセスすることがある。代替的に、変換レート指標・アクセシング・モジュール220は、メッセージ最適化エンジン208によって受信される各要求のための変換レート指標にアクセスすることがある。
【0064】
ルーティング・プロバイダ選択モジュール222は、変換レート指標を使用して、最適なルーティング・プロバイダ108を識別する。たとえば、ルーティング・プロバイダ選択モジュール222は、変換レート指標内に含まれる変換レートに基づいて、ルーティング・プロバイダ108をランク付けすることがある。最も高くランク付けされるルーティング・プロバイダ108(たとえば、最も高い変換レートをもつルーティング・プロバイダ108)は、最適なルーティング・プロバイダ108であることが決定されるが、他のルーティング・プロバイダ108は、セカンダリ・ルーティング・プロバイダ108であることが決定される。場合によっては、複数のルーティング・プロバイダ108は、最も高い変換レートを有することがある。このタイプの状況では、ルーティング・プロバイダ選択モジュール222は、最も高い変換レートをもつルーティング・プロバイダ108の各々を、最適なルーティング・プロバイダ108であると識別することがある。
【0065】
ルーティング・プロバイダ選択モジュール222は、具体的なセカンダリ・ルーティング・プロバイダ108を、または、複数の最適なルーティング・プロバイダ108がある場合は、各メッセージのための具体的な最適なルーティング・プロバイダ108を選択する。たとえば、ルーティング・プロバイダ選択モジュール222は、ラウンド・ロビン・オーダ、ランダム・オーダなどを使用することなどのさまざまな様式のいずれかで、セカンダリ・プロバイダ108または最適なルーティング・プロバイダ108から選択することがある。
【0066】
ルーティング・プロバイダ選択モジュール222は、選択されたルーティング・プロバイダ108に対してメッセージを割り振るようにメッセージ割り振りモジュール210に命令する。次に、メッセージ割り振りモジュール210は、配信のためのメッセージを割り振るために、選択されたルーティング・プロバイダ108と通信する。たとえば、メッセージ割り振りモジュール210は、メッセージ(たとえば、メッセージ・ペイロード)、意図された受信者を識別するデータ(たとえば、電話番号)、および/または使用のために選択された具体的なルートを、ルーティング・プロバイダに提供することがある。
【0067】
メッセージ割り振りモジュール210は、ルーティング・プロバイダ108に対して割り振られた各メッセージのための記録を生成することもある。たとえば、メッセージ割り振りモジュール210は、各割り振られたメッセージに関してフィードバック・データ記憶部214内の記録を生成することがある。記録は、メッセージを識別するデータ、意図された受信者、メッセージが割り振られたルーティング・プロバイダ108、メッセージが割り振られた時間、メッセージを送信するために選択されたルートなどを含んでよい。記録されたデータは、ルーティング・プロバイダ108の性能を評価するためのフィードバック・データとして使用される。
【0068】
図3は、いくつかの例示的な実施形態による、変換レート決定エンジン202のブロック図である。不必要な詳細により本発明の主題を曖昧にすることを避けるために、本発明の主題の理解を伝えることと密接な関係がないさまざまな機能構成要素(たとえば、モジュール)は、図3から省略されている。しかしながら、当業者は、本明細書において具体的に説明されない追加の機能を促進するためにさまざまな追加の機能構成要素が変換レート決定エンジン202によってサポートされ得ることを直ちに認識するであろう。そのうえ、図3において描かれるさまざまな機能モジュールは、単一のコンピューティング・デバイス上にあってもよいし、クラウド・ベース・アーキテクチャにおいて使用される配置などのさまざまな配置においていくつかのコンピューティング・デバイスにわたって分散されてもよい。
【0069】
図示されるように、変換レート決定エンジン202は、フィードバック・データ受信モジュール302と、データ収集モジュール304と、変換レート計算モジュール306とを含む。
【0070】
フィードバック・データ受信モジュール302は、ルーティング・プロバイダ108のための変換レートを計算するために使用されるフィードバック・データを受信する。フィードバック・データは、ライブ・フィードバック・データと、テスティング・フィードバック・データの両方を含んでよい。ライブ・フィードバックは、メッセージ・ルーティング最適化システム110によってルーティング・プロバイダ108に対して割り振られているメッセージを配信する各ルーティング・プロバイダ108の性能について記述する。たとえば、ライブ・フィードバック・データは、ルーティング・プロバイダ108が、割り振られたメッセージをその意図された受信者に対して送信したかどうか、メッセージがその意図された受信者によって首尾よく受信されたかどうか、メッセージが受信者によって指定されたアクションをもたらしたかどうか、メッセージがルーティング・プロバイダによって送信されるまで経過した時間の量、メッセージが受信者によって受信されるまで経過した時間の量などについて記述するデータを含むことができる。
【0071】
テスティング・フィードバック・データは、ルーティング・プロバイダ108のテストされた性能について記述する。たとえば、ルーティング・プロバイダのネットワークのテストは、ルーティング・プロバイダ108によって提供されるルートを使用してテスト・メッセージおよび/または総合的メッセージが送信される間に遂行可能である。テスティング・フィードバック・データは、テスト・メッセージが送信されたかどうか、受信されたかどうか、および/または指定された応答をもたらしたかどうか、ならびにテスト・メッセージが送信および/または受信される経過時間などの、テスト・メッセージの追跡された性能について記述する。
【0072】
フィードバック・データ受信モジュール302は、顧客コンピューティング・システム106、ルーティング・プロバイダ108から、およびまたはクライアント・デバイス102受信者から直接的に、ライブ・フィードバック・データを受信してよい。たとえば、顧客コンピューティング・システム106は、顧客がメッセージを送ったクライアント・デバイス102、104から肯定応答を引き出すことがある。肯定応答は、クライアント・デバイス102に対して送信されたメッセージが受信されたことを示す。顧客コンピューティング・システム106は、このライブ・フィードバック・データをメッセージ・ルーティング最適化システム110に対して提供することがあり、これは、フィードバック・データ受信モジュール302によって受信される。ルーティング・プロバイダ108は同様に、ルーティング・プロバイダ108によって送信されるメッセージに関連してライブ・フィードバック・データを引き出すことがあり、ルーティング・プロバイダは、メッセージ・ルーティング最適化システム110に対してデータを提供することがある。
【0073】
フィードバック・データ受信モジュール302はまた、メッセージが宛てられた受信者クライアント・デバイス102、104から直接的にライブ・フィードバック・データを受信することがある。たとえば、クライアント・デバイス102、104は、クライアント・デバイス102がメッセージを受信したことを示す肯定応答メッセージを、メッセージ・ルーティング最適化システム110に対して直接的に送信することがある。クライアント・デバイス102、104は、メッセージ・ルーティング最適化システム110によって提供されるアプリケーション・プログラミング・インタフェース(API)コマンドを使用して肯定応答を送信することがある。このタイプのフィードバックAPIは、ライブ・フィードバック・データが、ルーティング・プロバイダ108および/または顧客コンピューティング・システム106などの中間システムを通じてではなく、クライアント・デバイス102、104からメッセージ・ルーティング最適化システム110に対して直接的に送信されることを可能にする。
【0074】
フィードバック・データ受信モジュール302は、受信されたライブ・フィードバック・データに基づいて、フィードバック・データ記憶部214を更新する。たとえば、フィードバック・データ受信モジュール302は、メッセージ割り振りモジュール210によって生成されたフィードバック・データ記憶部214内の記録を更新することがある。メッセージ割り振りモジュール210は、配信のためにルーティング・プロバイダ108に対してメッセージ割り振りモジュール210によって割り振られた各メッセージを記録するフィードバック・データ記憶部214内の記録を生成する。フィードバック・データ受信モジュール302は、送信されたメッセージがその意図された受信者によって首尾よく受信されたかどうかを示すように、受信されたライブ・フィードバック・データに基づいて記録を更新する。
【0075】
フィードバック・データ受信モジュール302は、テスティング・システム(図示せず)からテスティング・フィードバック・データを受信することがある。テスティング・システムは、ルーティング・プロバイダ108によって提供されるさまざまなルートを使用してテストおよび/または総合的メッセージが送信される、ルーティング・プロバイダ108ネットワークのテストを稼働する。テスティング・システムは、テスト・メッセージが送信されたかどうか、受信されたかどうか、および/または指定された応答をもたらしたかどうか、テスト・メッセージが送信および/または受信される経過時間などの、テスト・メッセージの性能を追跡する。テスティング・システムは、テストの追跡された性能に基づいてテスティング・フィードバック・データを生成し、生成されたテスティング・フィードバック・データをメッセージ・ルーティング最適化システム110に対して提供する。フィードバック・データ受信モジュール302は、テスティング・フィードバック・データをフィードバック・データ記憶部214内に記憶する。
【0076】
データ収集モジュール304は、ルーティング・プロバイダ108のための変換レートを計算するために使用されるフィードバック・データを収集する。データ収集モジュール304は、フィードバック・データ記憶部214からフィードバック・データを収集する。データ収集モジュール304は、所与の実装形態に基づいて、利用可能なフィードバック・データのすべてまたはフィードバック・データのサブセットを収集し得る。たとえば、いくつかの実装形態では、利用可能なフィードバック・データのすべてではなく、利用可能なフィードバック・データのスライディング・ウィンドウが、使用されることがある。スライディング・ウィンドウは、過去72時間、過去36時間などの、動く時間フレームを規定する。このタイプの実施形態では、データ収集モジュール304は、スライディング・ウィンドウ内に含まれる利用可能なフィードバック・データのサブセットを収集する。スライディング・ウィンドウを使用することは、ルーティング・プロバイダ108に関して計算される変換レートが、古くなったフィードバック・データではなく、最近のフィードバック・データに基づくことを保証する。
【0077】
変換レート計算モジュール306は、データ収集モジュール304によって収集されたフィードバック・データを使用して、ルーティング・プロバイダ108のための変換レートを計算する。変換レート計算モジュール306は、変換レートを計算するために、さまざまなアルゴリズムのいずれかを使用してよい。たとえば、ルーティング・プロバイダ108のための変換レートは、首尾よく配信されたルーティング・プロバイダ108によって送信されるメッセージのパーセンテージに基づくことがある。このタイプの実施形態では、変換レート計算モジュール306は、各ルーティング・プロバイダ108のためのフィードバック・データを使用して、ルーティング・プロバイダ108に対して割り振られたメッセージの総数およびルーティング・プロバイダ108によって首尾よく配信されたメッセージの総数を決定し、この決定された値を使用して、ルーティング・プロバイダ108によって首尾よく配信された割り振られたメッセージのパーセンテージを計算し得る。
【0078】
いくつかの実施形態では、各ルーティング・プロバイダ108に関して決定される変換レートが信頼上限推定値であることがある。信頼上限推定値は、フィードバック・データが利用可能な量に基づいて、各ルーティング・プロバイダ108の性能の楽観的な推定値(たとえば、最も楽観的な変換レート)を提供する。信頼上限推定値は利用可能なフィードバック・データに基づくので、限られたフィードバック・データをもつルーティング・プロバイダ108に関する信頼上限推定値は、フィードバック・データが利用可能な限られた量により増幅されるであろう。たとえば、限られたフィードバックをもつルーティング・プロバイダ108に関する信頼上限推定値は、最初は非常に高く始まることがあるが、追加のフィードバック・データが収集されるにつれて正規化する。
【0079】
メッセージは、限られたフィードバック・データをもつルーティング・プロバイダ108に対して割り振られ、経時的に各ルーティング・プロバイダ108の性能におけるより良い推定値をもたらすので、信頼上限推定値を使用することは、メッセージ・ルーティング最適化システム110による探索を促す。
【0080】
変換レート計算モジュール306は、各ルーティング・プロバイダ108のための、ならびにルーティング・プロバイダ108によって提供される個々のルートのための、変換レートを計算し得る。たとえば、変換レート計算モジュール306は、各提供されたルートに関連するフィードバック・データのサブセットを使用して、ルートのための変換レートを計算することがある。ルートのための変換レートを計算することは、性能を最適化するためにメッセージを割り振るとき、より大きいレベルの粒度を提供する。
【0081】
変換レート計算モジュール306は、更新された変換レートに基づいて、変換レート指標を更新する。変換レート指標は、変換レート指標記憶部216内に記憶される。したがって、変換レート計算モジュール306は、ルーティング・プロバイダ108のために計算された変換レートに基づいて変換レート指標を更新するために、変換レート指標記憶部216と通信する。
【0082】
図4は、いくつかの例示的な実施形態による、メッセージ・ルーティング最適化のためのシステム400内での通信を図示する。不必要な詳細により本発明の主題を曖昧にすることを避けるために、本発明の主題の理解を伝えることと密接な関係がないさまざまな機能構成要素(たとえば、モジュール、デバイス、データベースなど)は、図4から省略されている。しかしながら、当業者は、本明細書において具体的に説明されない追加の機能を促進するためにさまざまな追加の機能構成要素がシステム400によってサポートされ得ることを直ちに認識するであろう。そのうえ、図4において描かれるさまざまな機能構成要素は、単一のコンピューティング・デバイス上にあってもよいし、クラウド・ベース・アーキテクチャにおいて使用される配置などのさまざまな配置においていくつかのコンピューティング・デバイスにわたって分散されてもよい。
【0083】
図示されるように、ユーザ402は、クライアント・デバイス102上にインストールされたクライアント・サイド・アプリケーション404を使用して、顧客コンピューティング・システム106の機能を利用する。顧客は、銀行業務サービス、旅行サービス、小売サービスなどの任意のタイプのサービスを提供してよい。サービスは、オンライン・サービスおよび/またはオフライン・サービスであってよい。すなわち、サービスは、オンライン小売業者など、オンラインのみで利用可能であってもよいし、実小売業者など、オフラインのみで利用可能であってもよいし、ウェブサイトまたはアプリケーションならびに実小売店舗を提供する小売店など、オンラインとオフラインの両方で利用可能であってもよい。
【0084】
顧客コンピューティング・システム106は、その提供されるサービスの一部として、メッセージを送信することがある。たとえば、顧客コンピューティング・システム106は、ユーザ402が顧客のエージェントに対してメッセージを送信すること、他のユーザ402に対してメッセージを送信すること、メッセージが情報を提供するためにクライアント・デバイス102に送信されることを要求すること、パスワード・リセットなどを可能にすることがある。顧客コンピューティング・システム106は、ユーザ402によって作成された要求に対して応答しないメッセージを送信することもある。たとえば、顧客コンピューティング・システム106は、通知、販促資料などをユーザ402に提供するメッセージを送信することがある。
【0085】
顧客は、メッセージ・ルーティング最適化システム110の機能を使用して、最適化されたメッセージ・ルーティング性能に対して提供し得る。メッセージ・ルーティング最適化システム110は、ルーティング・プロバイダ108の決定された性能に基づいてルーティング・プロバイダ108に対してメッセージを割り振ることによって、最適化されたメッセージ・ルーティング性能を提供する。たとえば、メッセージ・ルーティング最適化システム110は、各ルーティング・プロバイダ108に関して決定される個々の変換レートを含む変換レート指標に基づいて、ルーティング・プロバイダ108に対してメッセージを割り振る。各変換レートは、ルーティング・プロバイダに対して割り振られたメッセージがその意図された受信者に対して首尾よく配信される推定尤度を示すことなどによって、ルーティング・プロバイダ108の性能レベルを示す。メッセージ・ルーティング最適化システム110は、最も高い変換レートをもつルーティング・プロバイダ108に対してメッセージを割り振ることなどによって、変換レート指標に基づいてルーティング・プロバイダ108に対してメッセージを割り振る。
【0086】
メッセージ・ルーティング最適化システム110の機能を利用するために、顧客コンピューティング・システム106は、メッセージ・ルーティング最適化システム110に対して要求を送信する。要求は、メッセージ・ルーティング最適化システム110が意図された受信者に対してメッセージを送信することを要求し、メッセージの受信者を識別するデータを含んでよい。たとえば、要求は、受信者と関連づけられた電話番号または他の連絡先識別子を含むことがある。
【0087】
要求は、メッセージ・ルーティング最適化システム110の要求取り込みモジュール204によって受信される。要求取り込みモジュール204は、受信された要求をルーティング・プロバイダ決定モジュール206に対して提供する。ルーティング・プロバイダ決定モジュール206は、メッセージをその意図された受信者に対してルーティングするために利用可能なルーティング・プロバイダ108および/またはルートのセットを決定する。
【0088】
ルーティング・プロバイダ決定モジュール206は、メッセージの意図された受信者と関連づけられた電話番号または他の連絡先識別子を使用して、意図された受信者の宛先ネットワークを識別する。たとえば、ルーティング・プロバイダ決定モジュール206は、メッセージの意図された受信者と関連づけられた電話番号を使用して、意図された受信者に対応する宛先ネットワークを識別するMCC/MCNペアのためのMCC/MNCディレクトリを検索する。いくつかの実施形態では、MCC/MNCディレクトリは、ルーティング・プロバイダ記憶部212内に記憶されることがある。代替的に、MCC/MNCディレクトリは、何らかの他のネットワーク・アクセス可能場所において記憶されることがある。いずれの場合にも、ルーティング・プロバイダ決定モジュール206は、メッセージの意図された受信者と関連づけられた電話番号を使用して、MCC/MNCディレクトリに問い合わせ、対応する宛先ネットワークを識別するMCC/MNCペアを識別する。
【0089】
ルーティング・プロバイダ決定モジュール206は、MCC/MNCディレクトリから取り出されたMCC/MNCペアを使用して、MCC/MNCペアによって識別される宛先ネットワークに対してメッセージを配信するために利用可能なルーティング・プロバイダ108およびルートを識別する。たとえば、ルーティング・プロバイダ記憶部212は、メッセージ・ルーティング最適化システム110によってサービスされる各MCC/MNCペアと各MCC/MNCペアとともに使用するために利用可能な対応するルーティング・プロバイダ108およびルートとをリストするルーティング・プロバイダ・ディレクトリを含むことがある。すなわち、ルーティング・プロバイダ・ディレクトリは、ルーティング・プロバイダ・ディレクトリ内でリストされた各MCC/MNCペアによって識別される宛先ネットワークに対してメッセージを配信するためにメッセージ・ルーティング最適化システム110にとって利用可能であるルーティング・プロバイダおよびルートをリストする。したがって、ルーティング・プロバイダ決定モジュール206は、MCC/MNCペアを使用して、ルーティング・プロバイダ・ディレクトリを検索し、要求されたメッセージを配信するために利用可能なルーティング・プロバイダ108とルートのセットを識別する。ルーティング・プロバイダ決定モジュール206は、このデータをメッセージ最適化エンジン208に対して提供する。
【0090】
メッセージ最適化エンジン208は、ルーティング・プロバイダ108の決定された性能に基づいてルーティング・プロバイダ108に対してメッセージを割り振ることによって、最適化されたメッセージ・ルーティング性能を提供する。たとえば、メッセージ最適化エンジン208は、最も高い変換レートをもつルーティング・プロバイダ108に対してメッセージを割り振ることなどによって、各ルーティング・プロバイダの性能を示す変換レート指標に基づいてルーティング・プロバイダ・ベースド108を選択する。変換レート指標は、変換レート指標記憶部216から変換レート指標にアクセスし得る。
【0091】
メッセージ最適化エンジン208は、最適化されたメッセージ・ルーティング性能を提供するために探索および活用目的でメッセージの割り振りを均衡させる。たとえば、メッセージ最適化エンジン208は、最適なルーティング・プロバイダ108に対して割り振られるメッセージの数を最大化することを試行するが、また、ルーティング・プロバイダ108の適切な性能評価を可能にするのに十分なメッセージをセカンダリ・ルーティング・プロバイダ108に対して割り振る。
【0092】
したがって、メッセージ最適化エンジン208は、メッセージが最適なルーティング・プロバイダ108に対して割り振られるべきかセカンダリ・ルーティング・プロバイダ108に対して割り振られるべきかを選択する。メッセージ最適化エンジン208はまた、前の選択に基づいて具体的なルーティング・プロバイダ108を決定する。たとえば、メッセージがセカンダリ・ルーティング・プロバイダ108に対して割り振られるべきである場合、メッセージ最適化エンジン208は、具体的なセカンダリ・ルーティング・プロバイダ108を選択する。代替的に、メッセージが最適なルーティング・プロバイダ108に対して割り振られるべきである場合、メッセージ最適化エンジン208は、最も良い現在の性能を有するルーティング・プロバイダ108を選択する。
【0093】
メッセージ最適化エンジン208は、選択されたルーティング・プロバイダ108に対してメッセージを割り振るようにメッセージ割り振りモジュール210に命令する。メッセージ最適化エンジン208の機能は、図5に関連してより詳細に説明される。
【0094】
メッセージ割り振りモジュール210は、メッセージ最適化エンジン208によって選択されるルーティング・プロバイダ108に対して各メッセージを割り振る。メッセージ割り振りモジュール210は、配信のためのメッセージを割り振るために、選択されたルーティング・プロバイダ108と通信する。たとえば、メッセージ割り振りモジュール210は、メッセージ(たとえば、メッセージ・ペイロード)、意図された受信者を識別するデータ(たとえば、電話番号)、および/または使用のために選択された具体的なルートを、ルーティング・プロバイダに提供することがある。
【0095】
メッセージ割り振りモジュール210は、ルーティング・プロバイダ108に対して割り振られた各メッセージのための記録を生成することもある。たとえば、メッセージ割り振りモジュール210は、各割り振られたメッセージに関してフィードバック・データ記憶部214内の記録を生成することがある。記録は、メッセージを識別するデータ、意図された受信者、メッセージが割り振られたルーティング・プロバイダ108、メッセージが割り振られた時間、メッセージを送信するために選択されたルートなどを含んでよい。記録されたデータは、ルーティング・プロバイダ108の性能を評価するためのフィードバック・データとして使用される。
【0096】
図5は、いくつかの例示的な実施形態による、顧客基準に基づいてメッセージを配信するためにルーティング・プロバイダを選択するためのメッセージ・ルーティング最適化システム110内での通信を図示する。不必要な詳細により本発明の主題を曖昧にすることを避けるために、本発明の主題の理解を伝えることと密接な関係がないさまざまな機能構成要素(たとえば、モジュール、デバイス、データベースなど)は、図5から省略されている。しかしながら、当業者は、本明細書において具体的に説明されない追加の機能を促進するためにさまざまな追加の機能構成要素がシステム500によってサポートされ得ることを直ちに認識するであろう。そのうえ、図5において描かれるさまざまな機能構成要素は、単一のコンピューティング・デバイス上にあってもよいし、クラウド・ベース・アーキテクチャにおいて使用される配置などのさまざまな配置においていくつかのコンピューティング・デバイスにわたって分散されてもよい。
【0097】
図示されるように、要求取り込みモジュール204は、メッセージを配信する要求を受信する。たとえば、要求は、顧客コンピューティング・システム106から受信されることがある。要求取り込みモジュール204は、受信された要求をルーティング・プロバイダ決定モジュール206に対して提供する。
【0098】
要求取り込みモジュール204は、受信された要求をルーティング・プロバイダ決定モジュール206に対して提供する。ルーティング・プロバイダ決定モジュール206は、メッセージをその意図された受信者に対してルーティングするために利用可能なルーティング・プロバイダ108および/またはルートのセットを決定する。
【0099】
ルーティング・プロバイダ決定モジュール206は、メッセージの意図された受信者と関連づけられた電話番号または他の連絡先識別子を使用して、意図された受信者の宛先ネットワークを識別する。たとえば、ルーティング・プロバイダ決定モジュール206は、メッセージの意図された受信者と関連づけられた電話番号を使用して、意図された受信者に対応する宛先ネットワークを識別するMCC/MCNペアのためのMCC/MNCディレクトリを検索する。いくつかの実施形態では、MCC/MNCディレクトリは、ルーティング・プロバイダ記憶部212内に記憶されることがある。代替的に、MCC/MNCディレクトリは、何らかの他のネットワーク・アクセス可能場所において記憶されることがある。いずれの場合にも、ルーティング・プロバイダ決定モジュール206は、メッセージの意図された受信者と関連づけられた電話番号を使用して、MCC/MNCディレクトリに問い合わせ、対応する宛先ネットワークを識別するMCC/MNCペアを識別する。
【0100】
ルーティング・プロバイダ決定モジュール206は、MCC/MNCディレクトリから取り出されたMCC/MNCペアを使用して、MCC/MNCペアによって識別される宛先ネットワークに対してメッセージを配信するために利用可能なルーティング・プロバイダ108およびルートを識別する。たとえば、ルーティング・プロバイダ記憶部212は、メッセージ・ルーティング最適化システム110によってサービスされる各MCC/MNCペアと各MCC/MNCペアとともに使用するために利用可能な対応するルーティング・プロバイダ108およびルートとをリストするルーティング・プロバイダ・ディレクトリを含むことがある。すなわち、ルーティング・プロバイダ・ディレクトリは、ルーティング・プロバイダ・ディレクトリ内でリストされた各MCC/MNCペアによって識別される宛先ネットワークに対してメッセージを配信するためにメッセージ・ルーティング最適化システム110にとって利用可能であるルーティング・プロバイダおよびルートをリストする。したがって、ルーティング・プロバイダ決定モジュール206は、MCC/MNCペアを使用して、ルーティング・プロバイダ・ディレクトリを検索し、要求されたメッセージを配信するために利用可能なルーティング・プロバイダ108とルートのセットを識別する。ルーティング・プロバイダ決定モジュール206は、このデータをメッセージ最適化エンジン208に対して提供する。
【0101】
メッセージ最適化エンジン208は、全体的なメッセージ・ルーティング性能を最適化するように各メッセージを配信するために、ルーティング・プロバイダを選択する。図示されるように、メッセージ最適化エンジン208は、メッセージ均衡化モジュール218と、変換レート指標・アクセシング・モジュール220と、ルーティング・プロバイダ選択モジュール222とを含む。
【0102】
メッセージは、最初は、メッセージ均衡化モジュール218によって受信される。メッセージ均衡化モジュール218は、メッセージが活用目的で割り振られるべきか探索目的で割り振られるべきかを決定する。以前に解説されたように、メッセージの割り振りは、最適化されたメッセージ・ルーティング性能を提供するために探索目的と活用目的との間で均衡される。たとえば、最適なルーティング・プロバイダ108に対して割り振られるメッセージの数が最大にされるが、ルーティング・プロバイダ108の適切な性能評価を可能にするのに十分なメッセージがセカンダリ・ルーティング・プロバイダ108に対して割り振られることも可能にする。
【0103】
メッセージ均衡化モジュール218は、最適なルーティング・プロバイダ108によって提供されるより高い性能を活用するために最適なルーティング・プロバイダ108に対してメッセージのうちのいくつかを割り振り、セカンダリ・ルーティング・プロバイダ108によって提供される性能を探索するためにセカンダリ・ルーティング・プロバイダ108に対してメッセージの別の部分を割り振ることによって、活用と探索とのこの均衡を管理する。たとえば、メッセージ均衡化モジュール218は、探索目的でセカンダリ・ルーティング・プロバイダ108の各々に対してメッセージのあるパーセンテージを割り振り、残りのメッセージが最適なルーティング・プロバイダ108に対して割り振られることがある。たとえば、メッセージ均衡化モジュール218は、探索目的で各セカンダリ・ルーティング・プロバイダ108に対してメッセージの3%を割り振ることがある。したがって、合計5つのルーティング・プロバイダ108がある場合、メッセージの3%は、4つのセカンダリ・ルーティング・プロバイダ108の各々に対して割り振られ(たとえば、合計12%)、メッセージの残りの88%は、最適なルーティング・プロバイダ108に対して割り振られる。
【0104】
メッセージ均衡化モジュール218は、あらかじめ規定された割り振りパーセンテージを満たすように、メッセージが最適なルーティング・プロバイダ108によって送信されるべきかセカンダリ・ルーティング・プロバイダ108によって送信されるべきかを選択する。すなわち、メッセージ均衡化モジュール218は、あらかじめ規定された割り振りパーセンテージを使用して、メッセージ要求は最適なルーティング・プロバイダ108が割り振られるべきかセカンダリ・ルーティング・プロバイダ108が割り振られるべきかを選択する。たとえば、上記の場合が与えられると、メッセージ均衡化モジュール218は、メッセージの12%をセカンダリ・ルーティング・プロバイダに対して、メッセージの残りの88%を最適なルーティング・プロバイダ108に対して割り振る。
【0105】
メッセージ均衡化モジュール218は、さまざまな手段のいずれかであらかじめ規定された割り振りパーセンテージに従って、メッセージを割り振ってよい。たとえば、メッセージ均衡化モジュール218は、最適なルーティング・プロバイダ108に対して割り振られるように連続して88のメッセージを、これに続いて、セカンダリ・メッセージ・プロバイダ108に対して割り振られる12のメッセージを選択することなどによって、セット・チャンク内の最適なルーティング・プロバイダ108およびセカンダリ・ルーティング・プロバイダ108の各々のためのあらかじめ規定された割り振りパーセンテージを満足させることがある。代替的に、メッセージ均衡化モジュール218は、8つまたは9つのメッセージのうち1つをセカンダリ・ルーティング・プロバイダ108に対して割り振ることなどによって、最適なルーティング・プロバイダ108に対して割り振られたメッセージの全体にわたって、セカンダリ・ルーティング・プロバイダ108に対して割り振られたメッセージを均等に散在させることがある。
【0106】
メッセージ均衡化モジュール218は、メッセージが最適なルーティング・プロバイダ108に対して割り振られるべきかセカンダリ・ルーティング・プロバイダ108のうちの1つに対して割り振られるべきかを示す命令をルーティング・プロバイダ選択モジュール222に対して提供する。
【0107】
ルーティング・プロバイダ選択モジュール222は、各メッセージが割り振られるべきである具体的なルーティング・プロバイダ108を選択する。たとえば、ルーティング・プロバイダ選択モジュール222は、最適なルーティング・プロバイダ108およびセカンダリ・ルーティング・プロバイダ108を決定し、メッセージ均衡化モジュール218から受信された命令に基づいてルーティング・プロバイダ108を選択する。たとえば、命令が、メッセージがセカンダリ・ルーティング・プロバイダ108に対して割り振られるべきであることを示す場合、ルーティング・プロバイダ選択モジュール222は、具体的なセカンダリ・ルーティング・プロバイダ108を選択する。命令が、メッセージが最適なルーティング・プロバイダ108に対して割り振られるべきであることを示す場合、ルーティング・プロバイダ選択モジュール222は、最も良い現在の性能を有するルーティング・プロバイダ108を選択する。
【0108】
ルーティング・プロバイダ選択モジュール222は、各ルーティング・プロバイダ108のための変換レートに基づいて、最適なルーティング・プロバイダ108およびセカンダリ・ルーティング・プロバイダ108を決定する。変換レート指標・アクセシング・モジュール220は、ルーティング・プロバイダ選択モジュール222に対して変換レート指標を提供する。たとえば、変換レート指標・アクセシング・モジュール220は、変換レート指標記憶部216から変換レート指標にアクセスし、ルーティング・プロバイダ選択モジュール222に対して変換レート指標を提供する。
【0109】
変換レート指標・アクセシング・モジュール220は、指定された時間間隔で、この機能を実施し得る。たとえば、変換レート指標・アクセシング・モジュール220は、いつ変換レート指標が変換レート決定エンジン202によって更新されたかに基づいて、指定された時間間隔で変換レート指標にアクセスすることがある。代替的に、変換レート指標・アクセシング・モジュール220は、メッセージ最適化エンジン208によって受信される各要求のための変換レート指標にアクセスすることがある。たとえば、メッセージ均衡化モジュール218は、ルーティング・プロバイダ選択モジュール222に対して変換レート指標を提供するように変換レート指標・アクセシング・モジュール220に命令することがある。別の例として、ルーティング・プロバイダ選択モジュール222は、変換レート指標を要求するために変換レート指標・アクセシング・モジュール220と通信することがある。
【0110】
ルーティング・プロバイダ選択モジュール222は、変換レート指標を使用して、最適なルーティング・プロバイダ108を識別する。たとえば、ルーティング・プロバイダ選択モジュール222は、変換レート指標内に含まれる変換レートに基づいて、ルーティング・プロバイダ108をランク付けすることがある。最も高くランク付けされるルーティング・プロバイダ108(たとえば、最も高い変換レートをもつルーティング・プロバイダ108)は、最適なルーティング・プロバイダ108であることが決定されるが、他のルーティング・プロバイダ108は、セカンダリ・ルーティング・プロバイダ108であることが決定される。場合によっては、複数のルーティング・プロバイダ108は、最も高い変換レートを有することがある。このタイプの状況では、ルーティング・プロバイダ選択モジュール222は、最も高い変換レートをもつルーティング・プロバイダ108の各々を、最適なルーティング・プロバイダ108であると識別することがある。
【0111】
ルーティング・プロバイダ選択モジュール222は、具体的なセカンダリ・ルーティング・プロバイダ108を、または、複数の最適なルーティング・プロバイダ108がある場合は、各メッセージのための具体的な最適なルーティング・プロバイダ108を選択する。たとえば、ルーティング・プロバイダ選択モジュール222は、ラウンド・ロビン・オーダ、ランダム・オーダなどを使用することなどのさまざまな様式のいずれかで、セカンダリ・プロバイダ108または最適なルーティング・プロバイダ108から選択することがある。
【0112】
ルーティング・プロバイダ選択モジュール222は、選択されたルーティング・プロバイダ108に対してメッセージを割り振るようにメッセージ割り振りモジュール210に命令する。次に、メッセージ割り振りモジュール210は、配信のためのメッセージを割り振るために、選択されたルーティング・プロバイダ108と通信する。たとえば、メッセージ割り振りモジュール210は、メッセージ(たとえば、メッセージ・ペイロード)、意図された受信者を識別するデータ(たとえば、電話番号)、および/または使用のために選択された具体的なルートを、ルーティング・プロバイダに提供することがある。
【0113】
メッセージ割り振りモジュール210は、ルーティング・プロバイダ108に対して割り振られた各メッセージのための記録を生成することもある。たとえば、メッセージ割り振りモジュール210は、各割り振られたメッセージに関してフィードバック・データ記憶部214内の記録を生成することがある。記録は、メッセージを識別するデータ、意図された受信者、メッセージが割り振られたルーティング・プロバイダ108、メッセージが割り振られた時間、メッセージを送信するために選択されたルートなどを含んでよい。記録されたデータは、ルーティング・プロバイダ108の性能を評価するためのフィードバック・データとして使用される。
【0114】
図6は、いくつかの例示的な実施形態による、変換レート指標を生成するためのメッセージ・ルーティング最適化システム110内での通信を図示する。図示されるように、変換レート決定エンジン202は、フィードバック・データ受信モジュール302と、データ収集モジュール304と、変換レート計算モジュール306とを含む。
【0115】
フィードバック・データ受信モジュール302は、ルーティング・プロバイダ108のための変換レートを計算するために使用されるフィードバック・データを受信する。フィードバック・データは、ライブ・フィードバック・データと、テスティング・フィードバック・データの両方を含んでよい。ライブ・フィードバックは、メッセージ・ルーティング最適化システム110によってルーティング・プロバイダ108に対して割り振られているメッセージを配信する各ルーティング・プロバイダ108の性能について記述する。たとえば、ライブ・フィードバック・データは、ルーティング・プロバイダ108が、割り振られたメッセージをその意図された受信者に対して送信したかどうか、メッセージがその意図された受信者によって首尾よく受信されたかどうか、メッセージが受信者によって指定されたアクションをもたらしたかどうか、メッセージがルーティング・プロバイダによって送信されるまで経過した時間の量、メッセージが受信者によって受信されるまで経過した時間の量などについて記述するデータを含むことができる。
【0116】
テスティング・フィードバック・データは、ルーティング・プロバイダ108のテストされた性能について記述する。たとえば、ルーティング・プロバイダのネットワークのテストは、ルーティング・プロバイダ108によって提供されるルートを使用してテスト・メッセージおよび/または総合的メッセージが送信される間に遂行可能である。テスティング・フィードバック・データは、テスト・メッセージが送信されたかどうか、受信されたかどうか、および/または指定された応答をもたらしたかどうか、ならびにテスト・メッセージが送信および/または受信される経過時間などの、テスト・メッセージの追跡された性能について記述する。
【0117】
フィードバック・データ受信モジュール302は、顧客コンピューティング・システム106、ルーティング・プロバイダ108から、およびまたは受信者クライアント・デバイス102から直接的に、ライブ・フィードバック・データを受信してよい。たとえば、顧客コンピューティング・システム106は、顧客がメッセージを送ったクライアント・デバイス102、104から肯定応答を引き出すことがある。肯定応答は、クライアント・デバイス102に対して送信されたメッセージが受信されたことを示す。顧客コンピューティング・システム106は、このライブ・フィードバック・データをメッセージ・ルーティング最適化システム110に対して提供することがあり、これは、フィードバック・データ受信モジュール302によって受信される。ルーティング・プロバイダ108は同様に、ルーティング・プロバイダ108によって送信されるメッセージに関連してライブ・フィードバック・データを引き出すことがあり、ルーティング・プロバイダは、メッセージ・ルーティング最適化システム110に対してデータを提供することがある。
【0118】
フィードバック・データ受信モジュール302はまた、メッセージが宛てられた受信者クライアント・デバイス102、104から直接的にライブ・フィードバック・データを受信することがある。たとえば、クライアント・デバイス102、104は、クライアント・デバイス102がメッセージを受信したことを示す肯定応答メッセージを、メッセージ・ルーティング最適化システム110に対して直接的に送信することがある。クライアント・デバイス102、104は、メッセージ・ルーティング最適化システム110によって提供されるアプリケーション・プログラミング・インタフェース(API)コマンドを使用して肯定応答を送信することがある。このタイプのフィードバックAPIは、ライブ・フィードバック・データが、ルーティング・プロバイダ108および/または顧客コンピューティング・システム106などの中間システムを通じてではなく、クライアント・デバイス102、104からメッセージ・ルーティング最適化システム110に対して直接的に送信されることを可能にする。
【0119】
フィードバック・データ受信モジュール302は、受信されたライブ・フィードバック・データに基づいて、フィードバック・データ記憶部214を更新する。たとえば、フィードバック・データ受信モジュール302は、メッセージ割り振りモジュール210によって生成されたフィードバック・データ記憶部214内の記録を更新することがある。メッセージ割り振りモジュール210は、配信のためにルーティング・プロバイダ108に対してメッセージ割り振りモジュール210によって割り振られた各メッセージを記録するフィードバック・データ記憶部214内の記録を生成する。フィードバック・データ受信モジュール302は、送信されたメッセージがその意図された受信者によって首尾よく受信されたかどうかを示すように、受信されたライブ・フィードバック・データに基づいて記録を更新する。
【0120】
フィードバック・データ受信モジュール302は、テスティング・システム602からテスティング・フィードバック・データを受信することがある。テスティング・システム602は、ルーティング・プロバイダ108によって提供されるさまざまなルートを使用してテストおよび/または総合的メッセージが送信される、ルーティング・プロバイダ108ネットワークのテストを稼働する。テスティング・システム602は、テスト・メッセージが送信されたかどうか、受信されたかどうか、および/または指定された応答をもたらしたかどうか、テスト・メッセージが送信および/または受信される経過時間などの、テスト・メッセージの性能を追跡する。テスティング・システム602は、テストの追跡された性能に基づいてテスティング・フィードバック・データを生成し、生成されたテスティング・フィードバック・データをメッセージ・ルーティング最適化システム110に対して提供する。フィードバック・データ受信モジュール302は、テスティング・フィードバック・データをフィードバック・データ記憶部214内に記憶する。
【0121】
データ収集モジュール304は、ルーティング・プロバイダ108のための変換レートを計算するために使用されるフィードバック・データを収集する。データ収集モジュール304は、フィードバック・データ記憶部214からフィードバック・データを収集する。データ収集モジュール304は、所与の実装形態に基づいて、利用可能なフィードバック・データのすべてまたはフィードバック・データのサブセットを収集し得る。たとえば、いくつかの実装形態では、利用可能なフィードバック・データのすべてではなく、利用可能なフィードバック・データのスライディング・ウィンドウが、使用されることがある。スライディング・ウィンドウは、過去72時間、過去36時間などの、動く時間フレームを規定する。このタイプの実施形態では、データ収集モジュール304は、スライディング・ウィンドウ内に含まれる利用可能なフィードバック・データのサブセットを収集する。スライディング・ウィンドウを使用することは、ルーティング・プロバイダ108に関して計算される変換レートが、古くなったフィードバック・データではなく、最近のフィードバック・データに基づくことを保証する。
【0122】
変換レート計算モジュール306は、データ収集モジュール304によって収集されたフィードバック・データを使用して、ルーティング・プロバイダ108のための変換レートを計算する。変換レート計算モジュール306は、変換レートを計算するために、さまざまなアルゴリズムのいずれかを使用してよい。たとえば、ルーティング・プロバイダ108のための変換レートは、首尾よく配信されたルーティング・プロバイダ108によって送信されるメッセージのパーセンテージに基づくことがある。このタイプの実施形態では、変換レート計算モジュール306は、各ルーティング・プロバイダ108のためのフィードバック・データを使用して、ルーティング・プロバイダ108に対して割り振られたメッセージの総数およびルーティング・プロバイダ108によって首尾よく配信されたメッセージの総数を決定し、この決定された値を使用して、ルーティング・プロバイダ108によって首尾よく配信された割り振られたメッセージのパーセンテージを計算し得る。
【0123】
いくつかの実施形態では、各ルーティング・プロバイダ108に関して決定される変換レートが信頼上限推定値であることがある。信頼上限推定値は、フィードバック・データが利用可能な量に基づいて、各ルーティング・プロバイダ108の性能の楽観的な推定値(たとえば、最も楽観的な変換レート)を提供する。信頼上限推定値は利用可能なフィードバック・データに基づくので、限られたフィードバック・データをもつルーティング・プロバイダ108に関する信頼上限推定値は、フィードバック・データが利用可能な限られた量により増幅されるであろう。たとえば、限られたフィードバックをもつルーティング・プロバイダ108に関する信頼上限推定値は、最初は非常に高く始まることがあるが、追加のフィードバック・データが収集されるにつれて正規化する。
【0124】
メッセージは、限られたフィードバック・データをもつルーティング・プロバイダ108に対して割り振られ、経時的に各ルーティング・プロバイダ108の性能におけるより良い推定値をもたらすので、信頼上限推定値を使用することは、メッセージ・ルーティング最適化システム110による探索を促す。
【0125】
変換レート計算モジュール306は、各ルーティング・プロバイダ108のための、ならびにルーティング・プロバイダ108によって提供される個々のルートのための、変換レートを計算し得る。たとえば、変換レート計算モジュール306は、各提供されたルートに関連するフィードバック・データのサブセットを使用して、ルートのための変換レートを計算することがある。ルートのための変換レートを計算することは、性能を最適化するためにメッセージを割り振るとき、より大きいレベルの粒度を提供する。
【0126】
変換レート計算モジュール306は、更新された変換レートに基づいて、変換レート指標を更新する。変換レート指標は、変換レート指標記憶部216内に記憶される。したがって、変換レート計算モジュール306は、ルーティング・プロバイダ108のために計算された変換レートに基づいて変換レート指標を更新するために、変換レート指標記憶部216と通信する。
【0127】
図7は、いくつかの例示的な実施形態による、メッセージ・ルーティング最適化のための方法700を図示するフローチャートである。方法700は、方法700の動作がメッセージ・ルーティング最適化システム110によって部分的にまたは全体的に実施され得るように、1つまたは複数のプロセッサによる実行のためのコンピュータ可読命令内で具現化され得る。したがって、方法700は、以下でそれを例として参照しながら説明される。しかしながら、方法700の動作のうちの少なくともいくつかは、さまざまな他のハードウェア構成上で展開されてよく、方法700は、メッセージ・ルーティング最適化システム110に対して限定されることを意図されたものではないことが、諒解されるものとする。
【0128】
動作702では、要求取り込みモジュール204が、受信者デバイスに対してメッセージを送信する要求を受信する。たとえば、要求取り込みモジュール204は、顧客コンピューティング・システム106から要求を受信することがある。要求は、顧客コンピューティング・システム106によって提供されるオンライン機能をユーザが利用したことの結果として送信されることがある。たとえば、ユーザは、クライアント・デバイス102を使用して、顧客コンピューティング・システム106と通信し、顧客コンピューティング・システム106の機能を利用することがあるが、これは、メッセージの送信を伴うことがある。たとえば、ユーザは、アカウントへのログインを要求し、2要素認証を提供するためにメッセージの送信をもたらすことがある。別の例として、ユーザは、顧客または別のユーザのエージェントに対してメッセージを送信し開始することがある。代替的に、要求は、オンライン・サービスのユーザ使用に対して直接応答しない機能を提供するために顧客コンピューティング・システム106によって送信されることがある。たとえば、要求は、ユーザに対して販促資料または更新を提供するために、顧客コンピューティング・システム106によって送信されることがある。
【0129】
要求は、顧客を識別するデータ、意図された受信者を識別するデータ、および/またはメッセージのペイロードを含んでよい。たとえば、要求は、メッセージ・ルーティング最適化システム110を用いて顧客および/または顧客のアカウントに割り当てられた一意の識別子を含むことがある。要求は、受信者クライアント・デバイス102と関連づけられた電話番号、受信者などと関連づけられたメッセージ・ルーティング最適化システム110のアカウントなどの、メッセージの受信者のための識別子も含むことがある。ペイロードは、テキスト、画像、データのリッチ・メディア・フォーマット、および/またはデータ・フォーマットの任意の組み合わせを含むが、受信者に対して提供されるメッセージに含まれる上記のフォーマットに限定されない、さまざまなタイプのデータのいずれかを含んでよい。
【0130】
動作704では、メッセージ均衡化モジュール218が、メッセージを最適なルーティング・プロバイダ108に対して送信するべきかセカンダリ・ルーティング・プロバイダ108に対して送信するべきかを決定する。言い換えれば、メッセージ均衡化モジュール218は、メッセージが活用目的で割り振られるべきか探索目的で割り振られるべきかを決定する。以前に解説されたように、メッセージの割り振りは、最適化されたメッセージ・ルーティング性能を提供するために探索目的と活用目的との間で均衡される。たとえば、最適なルーティング・プロバイダ108に対して割り振られるメッセージの数が最大にされるが、ルーティング・プロバイダ108の適切な性能評価を可能にするのに十分なメッセージがセカンダリ・ルーティング・プロバイダ108に対して割り振られることも可能にする。
【0131】
メッセージ均衡化モジュール218は、最適なルーティング・プロバイダ108によって提供されるより高い性能を活用するために最適なルーティング・プロバイダ108に対してメッセージのうちのいくつかを割り振り、セカンダリ・ルーティング・プロバイダ108によって提供される性能を探索するためにセカンダリ・ルーティング・プロバイダ108に対してメッセージの別の部分を割り振ることによって、活用と探索とのこの均衡を管理する。たとえば、メッセージ均衡化モジュール218は、探索目的でセカンダリ・ルーティング・プロバイダ108の各々に対してメッセージのあるパーセンテージを割り振り、残りのメッセージが最適なルーティング・プロバイダ108に対して割り振られることがある。たとえば、メッセージ均衡化モジュール218は、探索目的で各セカンダリ・ルーティング・プロバイダ108に対してメッセージの3%を割り振ることがある。したがって、合計5つのルーティング・プロバイダ108ある場合、メッセージの3%は、4つのセカンダリ・ルーティング・プロバイダ108の各々に対して割り振られ(たとえば、合計12%)、メッセージの残りの88%は、最適なルーティング・プロバイダ108に対して割り振られる。
【0132】
メッセージ均衡化モジュール218は、あらかじめ規定された割り振りパーセンテージを満たすように、メッセージが最適なルーティング・プロバイダ108によって送信されるべきかセカンダリ・ルーティング・プロバイダ108によって送信されるべきかを選択する。すなわち、メッセージ均衡化モジュール218は、あらかじめ規定された割り振りパーセンテージを使用して、メッセージ要求は最適なルーティング・プロバイダ108が割り振られるべきかセカンダリ・ルーティング・プロバイダ108が割り振られるべきかを選択する。たとえば、上記の場合が与えられると、メッセージ均衡化モジュール218は、メッセージの12%をセカンダリ・ルーティング・プロバイダに対して、メッセージの残りの88%を最適なルーティング・プロバイダ108に対して割り振る。
【0133】
メッセージ均衡化モジュール218は、さまざまな手段のいずれかであらかじめ規定された割り振りパーセンテージに従って、メッセージを割り振ってよい。たとえば、メッセージ均衡化モジュール218は、最適なルーティング・プロバイダ108に対して割り振られるように連続して88のメッセージを、これに続いて、セカンダリ・メッセージ・プロバイダ108に対して割り振られる12のメッセージを選択することなどによって、セット・チャンク内の最適なルーティング・プロバイダ108およびセカンダリ・ルーティング・プロバイダ108の各々のためのあらかじめ規定された割り振りパーセンテージを満足させることがある。代替的に、メッセージ均衡化モジュール218は、8つまたは9つのメッセージのうち1つをセカンダリ・ルーティング・プロバイダ108に対して割り振ることなどによって、最適なルーティング・プロバイダ108に対して割り振られたメッセージの全体にわたって、セカンダリ・ルーティング・プロバイダ108に対して割り振られたメッセージを均等に散在させることがある。
【0134】
メッセージ均衡化モジュール218は、メッセージが最適なルーティング・プロバイダ108に対して割り振られるべきかセカンダリ・ルーティング・プロバイダ108のうちの1つに対して割り振られるべきかを示す命令をルーティング・プロバイダ選択モジュール222に対して提供する。次に、ルーティング・プロバイダ選択モジュール222は、各メッセージが割り振られるべきである具体的なルーティング・プロバイダ108を選択する。たとえば、メッセージ均衡化モジュール218が、メッセージは最適なルーティング・プロバイダ108に対して割り振られるべきであることを決定する場合、動作706では、ルーティング・プロバイダ選択モジュール222が、最適なルーティング・プロバイダ108を決定する。代替的に、メッセージ均衡化モジュール218が、メッセージはセカンダリ・ルーティング・プロバイダ108に対して割り振られるべきであることを決定する場合、動作708では、ルーティング・プロバイダ選択モジュール222が、第2のルーティング・プロバイダ108を決定する。
【0135】
いずれの場合にも、ルーティング・プロバイダ選択モジュール222は、選択されたルーティング・プロバイダ108に対してメッセージを割り振るようにメッセージ割り振りモジュール210に命令する。したがって、動作710では、メッセージ割り振りモジュール210が、選択されたルーティング・プロバイダ108に対してメッセージを割り振る。たとえば、メッセージ割り振りモジュール210は、配信のためのメッセージを割り振るために、選択されたルーティング・プロバイダ108と通信する。たとえば、メッセージ割り振りモジュール210は、メッセージ(たとえば、メッセージ・ペイロード)、意図された受信者を識別するデータ(たとえば、電話番号)、および/または使用のために選択された具体的なルートを、ルーティング・プロバイダに提供することがある。
【0136】
メッセージ割り振りモジュール210は、ルーティング・プロバイダ108に対して割り振られた各メッセージのための記録を生成することもある。たとえば、メッセージ割り振りモジュール210は、各割り振られたメッセージに関してフィードバック・データ記憶部214内の記録を生成することがある。記録は、メッセージを識別するデータ、意図された受信者、メッセージが割り振られたルーティング・プロバイダ108、メッセージが割り振られた時間、メッセージを送信するために選択されたルートなどを含んでよい。記録されたデータは、ルーティング・プロバイダ108の性能を評価するためのフィードバック・データとして使用される。
【0137】
図8は、いくつかの例示的な実施形態による、最適なルーティング・プロバイダ108を決定するための方法800を図示するフローチャートである。方法800は、方法800の動作がメッセージ・ルーティング最適化システム110によって部分的にまたは全体的に実施され得るように、1つまたは複数のプロセッサによる実行のためのコンピュータ可読命令内で具現化され得る。したがって、方法800は、以下でそれを例として参照しながら説明される。しかしながら、方法800の動作のうちの少なくともいくつかは、さまざまな他のハードウェア構成上で展開されてよく、方法800は、メッセージ・ルーティング最適化システム110に対して限定されることを意図されたものではないことが、諒解されるものとする。
【0138】
動作802では、変換レート指標・アクセシング・モジュール220が、ルーティング・プロバイダ108のための変換レートを含む変換レート指標にアクセスする。たとえば、変換レート指標・アクセシング・モジュール220は、変換レート指標記憶部216から変換レート指標にアクセスし、ルーティング・プロバイダ選択モジュール222に対して変換レート指標を提供する。変換レート指標・アクセシング・モジュール220は、指定された時間間隔で、この機能を実施し得る。たとえば、変換レート指標・アクセシング・モジュール220は、いつ変換レート指標が変換レート決定エンジン202によって更新されたかに基づいて、指定された時間間隔で変換レート指標にアクセスすることがある。代替的に、変換レート指標・アクセシング・モジュール220は、メッセージ最適化エンジン208によって受信される各要求のための変換レート指標にアクセスすることがある。
【0139】
動作804では、ルーティング・プロバイダ選択モジュール222が、変換レートに基づいて、ルーティング・プロバイダ108をランク付けする。たとえば、ルーティング・プロバイダ選択モジュール222は、最も高い変換レートをもつルーティング・プロバイダ108から最も低い変換レートをもつルーティング・プロバイダ108まで、ルーティング・プロバイダ108をランク付けすることがある。
【0140】
動作806では、ルーティング・プロバイダ選択モジュール222が、最も高いランクをもつルーティング・プロバイダ108を決定する。最も高いランクをもつルーティング・プロバイダ108は、最も高い変換レートと関連づけられる。したがって、このルーティング・プロバイダ108は、変換指標に基づいた最適なルーティング・プロバイダ108である。
【0141】
図9は、いくつかの例示的な実施形態による、セカンダリ・ルーティング・プロバイダ108を決定するための方法900を図示するフローチャートである。方法900は、方法900の動作がメッセージ・ルーティング最適化システム110によって部分的にまたは全体的に実施され得るように、1つまたは複数のプロセッサによる実行のためのコンピュータ可読命令内で具現化され得る。したがって、方法900は、以下でそれを例として参照しながら説明される。しかしながら、方法900の動作のうちの少なくともいくつかは、さまざまな他のハードウェア構成上で展開されてよく、方法900は、メッセージ・ルーティング最適化システム110に対して限定されることを意図されたものではないことが、諒解されるものとする。
【0142】
動作902では、変換レート指標・アクセシング・モジュール220が、ルーティング・プロバイダ108のための変換レートを含む変換レート指標にアクセスする。たとえば、変換レート指標・アクセシング・モジュール220は、変換レート指標記憶部216から変換レート指標にアクセスし、ルーティング・プロバイダ選択モジュール222に対して変換レート指標を提供する。変換レート指標・アクセシング・モジュール220は、指定された時間間隔で、この機能を実施し得る。たとえば、変換レート指標・アクセシング・モジュール220は、いつ変換レート指標が変換レート決定エンジン202によって更新されたかに基づいて、指定された時間間隔で変換レート指標にアクセスすることがある。代替的に、変換レート指標・アクセシング・モジュール220は、メッセージ最適化エンジン208によって受信される各要求のための変換レート指標にアクセスすることがある。
【0143】
動作904では、ルーティング・プロバイダ選択モジュール222が、変換レートに基づいて、ルーティング・プロバイダ108をランク付けする。たとえば、ルーティング・プロバイダ選択モジュール222は、最も高い変換レートをもつルーティング・プロバイダ108から最も低い変換レートをもつルーティング・プロバイダ108まで、ルーティング・プロバイダ108をランク付けすることがある。
【0144】
動作906では、ルーティング・プロバイダ選択モジュール222が、最も高いランクを有さないルーティング・プロバイダ108のサブセットを決定する。ルーティング・プロバイダ108のサブセットは、セカンダリ・ルーティング・プロバイダ108のセットである。たとえば、ルーティング・プロバイダ108のサブセットは、最適なルーティング・プロバイダ108を含まない。
【0145】
図10は、いくつかの例示的な実施形態による、変換レート指標を決定するための方法1000を図示するフローチャートである。方法1000は、方法1000の動作がメッセージ・ルーティング最適化システム110によって部分的にまたは全体的に実施され得るように、1つまたは複数のプロセッサによる実行のためのコンピュータ可読命令内で具現化され得る。したがって、方法1000は、以下でそれを例として参照しながら説明される。しかしながら、方法1000の動作のうちの少なくともいくつかは、さまざまな他のハードウェア構成上で展開されてよく、方法1000は、メッセージ・ルーティング最適化システム110に対して限定されることを意図されたものではないことが、諒解されるものとする。
【0146】
動作1002では、フィードバック・データ受信モジュール302が、ルーティング・プロバイダのセットのメッセージ配信性能について記述するフィードバックを受信する。フィードバック・データは、ライブ・フィードバック・データと、テスティング・フィードバック・データの両方を含んでよい。ライブ・フィードバックは、メッセージ・ルーティング最適化システム110によってルーティング・プロバイダ108に対して割り振られているメッセージを配信する各ルーティング・プロバイダ108の性能について記述する。たとえば、ライブ・フィードバック・データは、ルーティング・プロバイダ108が、割り振られたメッセージをその意図された受信者に対して送信したかどうか、メッセージがその意図された受信者によって首尾よく受信されたかどうか、メッセージが受信者によって指定されたアクションをもたらしたかどうか、メッセージがルーティング・プロバイダによって送信されるまで経過した時間の量、メッセージが受信者によって受信されるまで経過した時間の量などについて記述するデータを含むことができる。
【0147】
テスティング・フィードバック・データは、ルーティング・プロバイダ108のテストされた性能について記述する。たとえば、ルーティング・プロバイダのネットワークのテストは、ルーティング・プロバイダ108によって提供されるルートを使用してテスト・メッセージおよび/または総合的メッセージが送信される間に遂行可能である。テスティング・フィードバック・データは、テスト・メッセージが送信されたかどうか、受信されたかどうか、および/または指定された応答をもたらしたかどうか、ならびにテスト・メッセージが送信および/または受信される経過時間などの、テスト・メッセージの追跡された性能について記述する。
【0148】
フィードバック・データ受信モジュール302は、顧客コンピューティング・システム106、ルーティング・プロバイダ108から、およびまたは受信者クライアント・デバイス102から直接的に、ライブ・フィードバック・データを受信してよい。たとえば、顧客コンピューティング・システム106は、顧客がメッセージを送ったクライアント・デバイス102、104から肯定応答を引き出すことがある。肯定応答は、クライアント・デバイス102に対して送信されたメッセージが受信されたことを示す。顧客コンピューティング・システム106は、このライブ・フィードバック・データをメッセージ・ルーティング最適化システム110に対して提供することがあり、これは、フィードバック・データ受信モジュール302によって受信される。ルーティング・プロバイダ108は同様に、ルーティング・プロバイダ108によって送信されるメッセージに関連してライブ・フィードバック・データを引き出すことがあり、ルーティング・プロバイダは、メッセージ・ルーティング最適化システム110に対してデータを提供することがある。
【0149】
フィードバック・データ受信モジュール302はまた、メッセージが宛てられた受信者クライアント・デバイス102、104から直接的にライブ・フィードバック・データを受信することがある。たとえば、クライアント・デバイス102、104は、クライアント・デバイス102がメッセージを受信したことを示す肯定応答メッセージを、メッセージ・ルーティング最適化システム110に対して直接的に送信することがある。クライアント・デバイス102、104は、メッセージ・ルーティング最適化システム110によって提供されるアプリケーション・プログラミング・インタフェース(API)コマンドを使用して肯定応答を送信することがある。このタイプのフィードバックAPIは、ライブ・フィードバック・データが、ルーティング・プロバイダ108および/または顧客コンピューティング・システム106などの中間システムを通じてではなく、クライアント・デバイス102、104からメッセージ・ルーティング最適化システム110に対して直接的に送信されることを可能にする。
【0150】
フィードバック・データ受信モジュール302は、テスティング・システムからテスティング・フィードバック・データを受信することがある。テスティング・システムは、ルーティング・プロバイダ108によって提供されるさまざまなルートを使用してテストおよび/または総合的メッセージが送信される、ルーティング・プロバイダ108ネットワークのテストを稼働する。テスティング・システムは、テスト・メッセージが送信されたかどうか、受信されたかどうか、および/または指定された応答をもたらしたかどうか、テスト・メッセージが送信および/または受信される経過時間などの、テスト・メッセージの性能を追跡する。テスティング・システムは、テストの追跡された性能に基づいてテスティング・フィードバック・データを生成し、生成されたテスティング・フィードバック・データをメッセージ・ルーティング最適化システム110に対して提供する。
【0151】
動作1004では、フィードバック・データ受信モジュール302が、受信されたフィードバック・データに基づいて、フィードバック・データ記憶部214を更新する。たとえば、フィードバック・データ受信モジュール302は、ライブ・フィードバック・データおよび/またはテスティング・フィードバック・データに基づいて、フィードバック・データ記憶部214を更新し得る。ライブ・フィードバック・データに基づいてフィードバック・データ記憶部214を更新するために、フィードバック・データ受信モジュール302は、メッセージ割り振りモジュール210によって生成されたフィードバック・データ記憶部214内の記録を更新し得る。メッセージ割り振りモジュール210は、配信のためにルーティング・プロバイダ108に対してメッセージ割り振りモジュール210によって割り振られた各メッセージを記録するフィードバック・データ記憶部214内の記録を生成する。フィードバック・データ受信モジュール302は、送信されたメッセージがその意図された受信者によって首尾よく受信されたかどうかを示すように、受信されたライブ・フィードバック・データに基づいて記録を更新する。フィードバック・データ受信モジュール302は、フィードバック・データ記憶部214内にテスティング・フィードバック・データを記憶することによって、テスティング・フィードバック・データに基づいてフィードバック・データ記憶部214を更新する。
【0152】
動作1006では、変換レート計算モジュール306が、フィードバック・データ記憶部内のフィードバック・データに基づいて変換指標を計算する。変換レート計算モジュール306は、変換レートを計算するために、さまざまなアルゴリズムのいずれかを使用してよい。たとえば、ルーティング・プロバイダ108のための変換レートは、首尾よく配信されたルーティング・プロバイダ108によって送信されるメッセージのパーセンテージに基づくことがある。このタイプの実施形態では、変換レート計算モジュール306は、各ルーティング・プロバイダ108のためのフィードバック・データを使用して、ルーティング・プロバイダ108に対して割り振られたメッセージの総数およびルーティング・プロバイダ108によって首尾よく配信されたメッセージの総数を決定し、この決定された値を使用して、ルーティング・プロバイダ108によって首尾よく配信された割り振られたメッセージのパーセンテージを計算し得る。
【0153】
いくつかの実施形態では、各ルーティング・プロバイダ108に関して決定される変換レートが信頼上限推定値であることがある。信頼上限推定値は、フィードバック・データが利用可能な量に基づいて、各ルーティング・プロバイダ108の性能の楽観的な推定値(たとえば、最も楽観的な変換レート)を提供する。信頼上限推定値は利用可能なフィードバック・データに基づくので、限られたフィードバック・データをもつルーティング・プロバイダ108に関する信頼上限推定値は、フィードバック・データが利用可能な限られた量により増幅されるであろう。たとえば、限られたフィードバックをもつルーティング・プロバイダ108に関する信頼上限推定値は、最初は非常に高く始まることがあるが、追加のフィードバック・データが収集されるにつれて正規化する。
【0154】
メッセージは、限られたフィードバック・データをもつルーティング・プロバイダ108に対して割り振られ、経時的に各ルーティング・プロバイダ108の性能におけるより良い推定値をもたらすので、信頼上限推定値を使用することは、メッセージ・ルーティング最適化システム110による探索を促す。
【0155】
変換レート計算モジュール306は、各ルーティング・プロバイダ108のための、ならびにルーティング・プロバイダ108によって提供される個々のルートのための、変換レートを計算し得る。たとえば、変換レート計算モジュール306は、各提供されたルートに関連するフィードバック・データのサブセットを使用して、ルートのための変換レートを計算することがある。ルートのための変換レートを計算することは、性能を最適化するためにメッセージを割り振るとき、より大きいレベルの粒度を提供する。
【0156】
変換レート計算モジュール306は、更新された変換レートに基づいて、変換レート指標を更新する。変換レート指標は、変換レート指標記憶部216内に記憶される。したがって、変換レート計算モジュール306は、ルーティング・プロバイダ108のために計算された変換レートに基づいて変換レート指標を更新するために、変換レート指標記憶部216と通信する。
【0157】
ソフトウェア・アーキテクチャ
図11は、本明細書において説明されるさまざまなハードウェア・アーキテクチャに関連して使用され得る例示的なソフトウェア・アーキテクチャ1106を図解するブロック図である。図11は、ソフトウェア・アーキテクチャ1106の非限定的な例であり、本明細書において説明される機能を促進するために多くの他のアーキテクチャが実装されてよいことが諒解されよう。ソフトウェア・アーキテクチャ1106は、とりわけプロセッサ1204とメモリ1214と(入力/出力)I/O構成要素1218とを含む図12の機械1200などのハードウェア上で実行し得る。代表的なハードウェア層1152が図解されており、たとえば、図12の機械1200を表すことができる。代表的なハードウェア層1152は、関連づけられた実行可能命令1104を有する処理ユニット1154を含む。実行可能命令1104は、本明細書において説明される方法、構成要素などの実装形態を含むソフトウェア・アーキテクチャ1106の実行可能命令を表す。ハードウェア層1152は、同じく実行可能命令1104を有するメモリおよび/または記憶モジュール1156も含む。ハードウェア層1152は、他のハードウェア1158も備えてよい。
【0158】
図11の例示的なアーキテクチャでは、ソフトウェア・アーキテクチャ1106は、各層が特定の機能を提供する層のスタックとして概念化されてよい。たとえば、ソフトウェア・アーキテクチャ1106は、オペレーティング・システム1102、ライブラリ1120、フレームワーク/ミドルウェア1118、アプリケーション1116、およびプレゼンテーション層1114などの層を含んでよい。動作上、アプリケーション1116および/または層内の他の構成要素は、ソフトウェア・スタックを通じてアプリケーション・プログラミング・インタフェース(API)呼び出し1108を起動し、API呼び出し1108に応答してメッセージ1112などの応答を受信し得る。図解される層は、本質的に代表的であり、すべてのソフトウェア・アーキテクチャがすべての層を有するとは限らない。たとえば、いくつかのモバイル・オペレーティング・システムまたは特殊目的オペレーティング・システムは、フレームワーク/ミドルウェア1118を提供しないことがあり、他のものは、そのような層を提供することがある。他のソフトウェア・アーキテクチャは、追加の層または異なる層を含むことがある。
【0159】
オペレーティング・システム1102は、ハードウェア・リソースを管理し、共通サービスを提供し得る。オペレーティング・システム1102は、たとえば、カーネル1122と、サービス1124と、ドライバ1126とを含んでよい。カーネル1122は、ハードウェアと他のソフトウェア層との間の抽象化層として作用し得る。たとえば、カーネル1122は、メモリ管理、プロセッサ管理(たとえば、スケジューリング)、構成要素管理、ネットワーク、セキュリティ設定などを担当し得る。サービス1124は、他のソフトウェア層のための他の共通サービスを提供し得る。ドライバ1126は、基盤となるハードウェアを制御するまたはこれとインタフェースすることを担当する。たとえば、ドライバ1126には、ハードウェア構成に応じて、ディスプレイ・ドライバ、カメラ・ドライバ、Bluetooth(登録商標)ドライバ、フラッシュメモリ・ドライバ、シリアル通信ドライバ(たとえば、ユニバーサル・シリアル・バス(USB)ドライバ)、Wi-Fi(登録商標)ドライバ、オーディオ・ドライバ、電力管理ドライバなどがある。
【0160】
ライブラリ1120は、アプリケーション1116ならびに/または他の構成要素および/もしくは層によって使用される共通インフラストラクチャを提供する。ライブラリ1120は、他のソフトウェア構成要素が基盤となるオペレーティング・システム1102機能(たとえば、カーネル1122、サービス1124、および/またはドライバ1126)と直接的にインタフェースすることよりも簡単なやり方でタスクを実施することを可能にする機能を提供する。ライブラリ1120は、メモリ割り振り関数、文字列操作関数、数学関数などの関数を提供し得るシステム・ライブラリ1144(たとえば、C標準ライブラリ)を含んでよい。加えて、ライブラリ1120は、メディア・ライブラリ(たとえば、MPEG4、H.264、MP3、AAC、AMR、JPG、PNGなどのさまざまなメディア・フォーマットの提示および操作をサポートするライブラリ)、グラフィックス・ライブラリ(たとえば、ディスプレイ上のグラフィック・コンテンツ内で2Dおよび3Dをレンダリングするために使用されることがあるOpenGLフレームワーク)、データベース・ライブラリ(たとえば、さまざまなリレーショナル・データベース関数を提供し得るSQLite)、ウェブ・ライブラリ(たとえば、ウェブ・ブラウジング機能を提供し得るウェブキット)などの、APIライブラリ1146を含んでよい。ライブラリ1120は、アプリケーション1116および他のソフトウェア構成要素/モジュールに対して多くの他のAPIを提供するために多種多様の他のライブラリ1148も含んでよい。
【0161】
フレームワーク/ミドルウェア1118(ミドルウェアと呼ばれることもある)は、アプリケーション1116および/または他のソフトウェア構成要素/モジュールによって使用され得るより高いレベルの共通インフラストラクチャを提供する。たとえば、フレームワーク/ミドルウェア1118は、さまざまなグラフィカル・ユーザ・インタフェース(GUI)機能、高レベル・リソース管理、高レベル場所サービスなどを提供することがある。フレームワーク/ミドルウェア1118は、アプリケーション1116および/または他のソフトウェア構成要素/モジュールによって使用され得る広範囲の他のAPIを提供することがあり、これらのうちいくつかは、特定のオペレーティング・システム1102またはプラットフォームに特有であってよい。
【0162】
アプリケーション1116は、内蔵アプリケーション1138および/またはサード・パーティ・アプリケーション1140を含む。代表的な内蔵アプリケーション1138の例には、限定されるものではないが、連絡先アプリケーション、ブラウザ・アプリケーション、ブック・リーダ・アプリケーション、場所アプリケーション、メディア・アプリケーション、メッセージング・アプリケーション、および/またはゲーム・アプリケーションがある。サード・パーティ・アプリケーション1140は、特定のプラットフォームのベンダ以外のエンティティによってANDROID(登録商標)またはIOS(商標)ソフトウェア開発キット(SDK)を使用して開発されたアプリケーションを含み、IOS(商標)、ANDROID(登録商標)、WINDOWS(登録商標)電話、または他のモバイル・オペレーティング・システムなどのモバイル・オペレーティング・システム上で稼働するモバイル・ソフトウェアであってよい。サード・パーティ・アプリケーション1140は、本明細書において説明される機能を促進にするためにモバイル・オペレーティング・システム(オペレーティング・システム1102など)によって提供されるAPI呼び出し1108を起動し得る。
【0163】
アプリケーション1116は、内蔵オペレーティング・システム機能(たとえば、カーネル1122、サービス1124、および/またはドライバ1126)、ライブラリ1120、およびフレームワーク/ミドルウェア1118を使用して、システムのユーザと相互作用するUIを作成してよい。代替的に、または追加的に、いくつかのシステムでは、ユーザとの相互作用は、プレゼンテーション層1114などのプレゼンテーション層を通じて発生することがある。これらのシステムでは、「論理」というアプリケーション/構成要素は、ユーザと相互作用するアプリケーション/構成要素の態様から分離可能である。
【0164】
図12は、機械可読媒体(たとえば、機械可読記憶媒体)から命令1104を読み出し、本明細書において論じられる方法論のうちの任意の1つまたは複数を実施することが可能である、いくつかの例示的な実施形態による、機械1200の構成要素を図解するブロック図である。具体的には、図12は、コンピュータ・システムの例示的な形での機械1200の図式表現を図示し、その中で、本明細書において論じられる方法論のうちの任意の1つまたは複数を機械1200に実施させるための命令1210(たとえば、ソフトウェア、プログラム、アプリケーション、アプレット、アプリ、または他の実行可能コード)が実行されることが可能である。したがって、命令1210は、本明細書において説明されるモジュールまたは構成要素を実装するために使用されてよい。命令1210は、一般的な、プログラムされていない機械1200を、説明された様式で説明および図解された機能を行うようにプログラムされた特定の機械1200へと変える。代替実施形態では、機械1200は、スタンドアロンデバイスとして動作する、または他の機械に対して結合(たとえば、ネットワーク化)されてよい。ネットワーク展開では、機械1200は、サーバ・クライアント・ネットワーク環境ではサーバ・マシンまたはクライアント・マシンの能力で動作してもよいし、ピア・ツー・ピア(または分散)ネットワーク環境ではピア・マシンとして動作してもよい。機械1200は、限定されるものではないが、サーバ・コンピュータ、クライアント・コンピュータ、PC、タブレット・コンピュータ、ラップトップ・コンピュータ、ネットブック、セット・トップ・ボックス(STB)、携帯情報端末(PDA)、エンターテインメント・メディア・システム、セルラー電話、スマートフォン、モバイル・デバイス、ウェアラブル・デバイス(たとえば、スマート・ウォッチ)、スマート・ホーム・デバイス(たとえば、スマート・アプライアンス)、他のスマート・デバイス、ウェブ・アプライアンス、ネットワーク・ルータ、ネットワーク・スイッチ、ネットワーク・ブリッジ、または機械1200によって取られるべきアクションを指定する命令1210を順次もしくは別の仕方で実行することが可能である任意の機械1200を備えてよい。さらに、単一の機械1200のみが図解されているが、「機械」という用語はまた、本明細書において論じられる方法論のうちの任意の1つまたは複数を実施するように命令1210を個々にまたは共同で実行する機械の集合を含むように取られるものとする。
【0165】
機械1200は、プロセッサ1204と、メモリ/記憶部1206と、I/O構成要素1218とを含んでよく、これらは、バス1202などを介して互いと通信するように構成されてよい。メモリ/記憶部1206は、主メモリなどのメモリ1214、または他のメモリ記憶部と、記憶ユニット1216とを含んでよく、両方とも、バス1202などを介してプロセッサ1204にとってアクセス可能である。記憶ユニット1216およびメモリ1214は、本明細書において説明される方法論または機能のうちの任意の1つまたは複数を具現化する命令1210を記憶する。命令1210は、機械1200によるその実行中、完全にまたは部分的に、メモリ1214内に、記憶ユニット1216内に、プロセッサ1204の少なくとも1つの中(たとえば、プロセッサのキャッシュ・メモリ内)に、またはそれらの任意の適切な組み合わせで、あってよい。したがって、メモリ1214、記憶ユニット1216、およびプロセッサ1204のメモリは、機械可読媒体の例である。
【0166】
I/O構成要素1218は、入力を受信する、出力を提供する、出力を生じる、情報を送信する、情報を交換する、測定値を補足するなどのために、多種多様の構成要素を含んでよい。特定の機械1200内に含まれる具体的なI/O構成要素1218は、機械のタイプに依存するであろう。たとえば、携帯電話などのポータブル機械は、タッチ入力デバイスまたは他のそのような入力機構を含む可能性が高いが、ヘッドレス・サーバ・マシンは、そのようなタッチ入力デバイスを含まない可能性が高い。I/O構成要素1218は、図12に図示されない多くの他の構成要素を含んでよいことが諒解されるであろう。I/O構成要素1218は、単に以下の議論を単純化するために機能に従ってグループ化され、グループ化は、なんら限定しない。さまざまな例示的な実施形態では、I/O構成要素1218は、出力構成要素1226と、入力構成要素1228とを含んでよい。出力構成要素1226は、視覚的構成要素(たとえば、プラズマ・ディスプレイ・パネル(PDP)、発光ダイオード(LED)ディスプレイ、液晶ディスプレイ(LCD)、プロジェクタ、または陰極線管(CRT)などのディスプレイ)、音響的構成要素(たとえば、スピーカ)、ハプティック構成要素(たとえば、振動モータ、抵抗機構)、他の信号発生器などを含んでよい。入力構成要素1228は、英数字入力構成要素(たとえば、キーボード、英数字入力を受信するように構成されたタッチ・スクリーン、フォト・オプティカル・キーボード、または他の英数字入力構成要素)、ポイント・ベース入力構成要素(たとえば、マウス、タッチパッド、トラックボール、ジョイスティック、モーション・センサ、または他のポインティング機器)、触覚的入力構成要素(たとえば、物理的ボタン、タッチまたはタッチ・ジェスチャの場所および/もしくは力を提供するタッチ・スクリーン、または他の触覚的入力構成要素)、音響的入力構成要素(たとえば、マイクロホン)などを含んでよい。
【0167】
さらなる例示的な実施形態では、I/O構成要素1218は、豊富な他の構成要素の中でもバイオメトリック構成要素1230、モーション構成要素1234、環境構成要素1236、または位置構成要素1238を含んでよい。たとえば、バイオメトリック構成要素1230は、表情(たとえば、手の表情、顔の表情、音声の表情、身体のジェスチャ、または視標追跡)を検出し、生体信号(たとえば、血圧、心拍数、体温、発汗、または脳波)を測定し、人物を識別する(たとえば、音声識別、網膜識別、顔の識別、指紋識別、または脳電図ベースの識別)などのために構成要素を含んでよい。モーション構成要素1234は、加速度センサ構成要素(たとえば、加速度計)、重力センサ構成要素、回転センサ構成要素(たとえば、ジャイロスコープ)などを含んでよい。環境構成要素1236は、たとえば、照明センサ構成要素(たとえば、光度計)、温度センサ構成要素(たとえば、周囲温度を検出する1つまたは複数の温度計)、湿度センサ構成要素、圧力センサ構成要素(たとえば、気圧計)、音響センサ構成要素(たとえば、バックグラウンド・ノイズを検出する1つまたは複数のマイクロホン)、近接センサ構成要素(たとえば、近くの物体を検出する赤外線センサ)、ガス・センサ(たとえば、安全のために有毒ガスの濃度を検出するまたは空中の汚染物質を測定するガス検出センサ)、または周辺の物理的環境に対応する標識、測定値、もしくは信号を提供し得る他の構成要素を含んでよい。位置構成要素1238は、場所センサ構成要素(たとえば、GPS受信機構成要素)、高度センサ構成要素(たとえば、高度が導き出され得る気圧を検出する、高度計または気圧計)、方角センサ構成要素(たとえば、磁力計)などを含んでよい。
【0168】
通信は、多種多様の技術を使用して実装されてよい。I/O構成要素1218は、それぞれ結合1224および結合1222を介して機械1200をネットワーク1232またはデバイス1220に結合するように動作可能な通信構成要素1240を含んでよい。たとえば、通信構成要素1240は、ネットワーク・インタフェース構成要素を含んでもよいし、ネットワーク1232とインタフェースする他の適切なデバイスを含んでもよい。さらなる例では、通信構成要素1240は、ワイヤード通信構成要素、ワイヤレス通信構成要素、セルラー通信構成要素、近距離通信(NFC)構成要素、Bluetooth(登録商標)構成要素(たとえば、Bluetooth(登録商標)低エネルギー)、Wi-Fi(登録商標)構成要素、および他のモダリティを介して通信を提供する他の通信構成要素を含んでよい。デバイス1220は、別の機械であってもよいし、多種多様の周辺デバイスのいずれか(たとえば、USBを介して結合された周辺デバイス)であってもよい。
【0169】
さらに、通信構成要素1240は、識別子を検出してもよいし、識別子を検出するように動作可能な構成要素を含んでもよい。たとえば、通信構成要素1240は、無線周波数識別(RFID)タグ・リーダ構成要素、NFCスマート・タグ検出構成要素、光学式リーダ構成要素(たとえば、統一商品コード(UPC)バーコードなどの一次元バーコード、クイック・レスポンス(QR)コードなどの多次元バーコード、Aztecコード、データ行列、Dataglyph、MaxiCode、PDF417、ウルトラ・コード、UCC RSS-2Dバーコード、および他の光学的コードを検出する光センサ)、または音響検出構成要素(たとえば、タグ付けされた音声信号を識別するマイクロホン)を含んでよい。加えて、インターネット・プロトコル(IP)ジオロケーションを介する場所、Wi-Fi(登録商標)信号三角測量を介する場所、特定の場所を示し得るNFCビーコン信号を検出することを介する場所などの、さまざまな情報が、通信構成要素1240を介して導き出されることがある。
【0170】
用語集
この文脈における「搬送波信号」は、機械1200による実行のために命令1210を記憶、符号化、または搬送することが可能である任意の無形媒体を指し、そのような命令1210の通信を促進するデジタル通信信号またはアナログ通信信号または他の無形媒体を含む。命令1210は、ネットワーク・インタフェース・デバイスを介して送信媒体を使用して、およびいくつかの既知の転送プロトコルのいずれか1つを使用して、ネットワーク1232上で送信または受信されてよい。
【0171】
この文脈における「クライアント・デバイス」は、1つもしくは複数のサーバ・システムまたは他のクライアント・デバイス102、104からリソースを取得するために通信ネットワーク1232に対してインタフェースする任意の機械1200を指す。クライアント・デバイス102、104は、限定されるものではないが、携帯電話、デスクトップ・コンピュータ、ラップトップ、PDA、スマートフォン、タブレット、ウルトラ・ブック、ネットブック、ラップトップ、マルチ・プロセッサ・システム、マイクロプロセッサ・ベースもしくはプログラマブルな家電、ゲーム・コンソール、STB、またはネットワーク1232にアクセスするためにユーザが使用し得る他の任意の通信デバイスであってよい。
【0172】
この文脈における「通信ネットワーク」は、アド・ホック・ネットワーク、イントラネット、エクストラネット、仮想プライベート・ネットワーク(VPN)、LAN、ワイヤレスLAN(WLAN)、WAN、ワイヤレスWAN(WWAN)、メトロポリタン・エリア・ネットワーク(MAN)、インターネット、インターネットの一部分、公衆交換電話網(PSTN)の一部分、基本電話サービス(POTS)ネットワーク、セルラー電話ネットワーク、ワイヤレス・ネットワーク、Wi-Fi(登録商標)ネットワーク、別のタイプのネットワーク、または2つ以上のそのようなネットワークの組み合わせを含む、ネットワーク1232の1つまたは複数の部分を指す。たとえば、ネットワーク1232またはネットワーク1232の一部分は、ワイヤレス・ネットワークまたはセルラー・ネットワークを含んでよくは、結合は、符号分割多元接続(CDMA)接続、Global System for Mobile communications(GSM(登録商標))接続、または他のタイプのセルラー結合もしくはワイヤレス結合であってよい。この例では、結合は、シングル・キャリア無線送信技術(lxRTT)、Evolution-Data Optimized(EVDO)技術、汎用パケット無線サービス(GPRS)技術、Enhanced Data rates for GSM Evolution(EDGE)技術、3Gを含む第3世代パートナーシップ・プロジェクト(3GPP(登録商標))、第4世代ワイヤレス(4G)ネットワーク、ユニバーサル移動体通信システム(UMTS)、高速パケット・アクセス(HSPA)、Worldwide Interoperability for Microwave Access(WiMAX)、ロング・ターム・エボリューション(LTE)標準、さまざまな標準設定団体によって規定されたその他のもの、他の長距離プロトコル、または他のデータ転送技術などのさまざまなタイプのデータ転送技術の任意のものを実装する。
【0173】
この文脈における「機械可読媒体」は、命令1210およびデータを一時的または永続的に記憶することが可能な構成要素、デバイス、または他の有形媒体を指し、限定するものではないが、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、バッファ・メモリ、フラッシュメモリ、光媒体、磁気媒体、キャッシュ・メモリ、他のタイプの記憶部(たとえば、消去可能プログラマブル読み出し専用メモリ(EEPROM))、および/またはそれらの任意の適切な組み合わせを含んでよい。「機械可読媒体」という用語は、命令1210を記憶することが可能な単一の媒体または複数の媒体(たとえば、集中型データベースもしくは分散データベース、または関連づけられたキャッシュおよびサーバ)を含むように取られるべきである。「機械可読媒体」という用語はまた、命令1210が、機械1200の1つまたは複数のプロセッサ1204によって実行されるとき、本明細書において説明される方法論のうちの任意の1つまたは複数を機械1200に実施させるように、機械1200による実行のための命令1210(たとえば、コード)を記憶することが可能である、任意の媒体、または複数の媒体の組み合わせを含むように取られるものとする。したがって、「機械可読媒体」は、単一の記憶装置またはデバイス、ならびに複数の記憶装置またはデバイスを含む「クラウド・ベース」・ストレージ・システムまたは記憶ネットワークを指す。「機械可読媒体」という用語は、信号自体は除外する。
【0174】
この文脈における「構成要素」は、デバイス、物理エンティティ、または関数もしくはサブルーチン呼び出し、分岐点、API、もしくは特定の処理もしくは制御機能の分割もしくはモジュール化を提供する他の技術によって規定された境界を有する論理を指す。構成要素は、機械プロセスを行うために他の構成要素とのインタフェースを介して組み合わされてよい。構成要素は、他の構成要素とともに使用するために設計されたパッケージ化された機能ハードウェア・ユニットおよび通常関係する機能のうちの特定の機能を実施するプログラムの一部であってよい。構成要素は、ソフトウェア構成要素(たとえば、機械可読媒体上で具現化されたコード)またはハードウェア構成要素のどちらかを構成してよい。「ハードウェア構成要素」は、ある動作を実施することが可能である有形ユニットであり、ある物理的な様式で構成または配置されてよい。さまざまな例示的な実施形態では、1つまたは複数のコンピュータ・システム(たとえば、スタンドアロン・コンピュータ・システム、クライアント・コンピュータ・システム、またはサーバ・コンピュータ・システム)またはコンピュータ・システムの1つもしくは複数のハードウェア構成要素(たとえば、プロセッサまたはプロセッサ1204のグループ)は、本明細書において説明されるある動作を実施するように動作するハードウェア構成要素としてソフトウェア(たとえば、アプリケーション1116またはアプリケーション部分)によって構成されてよい。ハードウェア構成要素はまた、機械的に実装されてもよいし、電子的に実装されてもよいし、それらの任意の適切な組み合わせであってもよい。たとえば、ハードウェア構成要素は、ある動作を実施するように永続的に構成された専用回路または論理を含んでよい。ハードウェア構成要素は、フィールド・プログラマブル・ゲート・アレイ(FPGA)または特定用途向け集積回路(ASIC)などの特殊目的プロセッサであってよい。ハードウェア構成要素は、ある動作を実施するためにソフトウェアによって一時的に構成されるプログラマブル論理または回路も含んでよい。たとえば、ハードウェア構成要素は、汎用プロセッサ1204または他のプログラマブル・プロセッサ1204によって実行されるソフトウェアを含んでよい。そのようなソフトウェアによって構成されると、ハードウェア構成要素は、構成された機能を実施するように一意に調節される特殊な機械1200(または機械1200の具体的な構成要素)になり、もはや汎用プロセッサ1204ではない。専用の永続的に構成された回路内で、または一時的に構成された回路(たとえば、ソフトウェアによって構成された)内で、機械的にハードウェア構成要素を実装する判断は、コストおよび時間の考慮事項によって推進され得ることが諒解されるであろう。したがって、「ハードウェア構成要素」(または「ハードウェアにより実装された構成要素」)は、有形エンティティを包含する、ある様式で動作するようにまたは本明細書において説明されるある動作を実施する物理的に構築された、永続的に構成された(たとえば、ハードワイヤードされた)、または一時的に構成された(たとえば、プログラムされた)エンティティであると理解されるべきである。ハードウェア構成要素が一時的に構成された(たとえば、プログラムされた)実施形態を考慮すると、ハードウェア構成要素の各々は、適時に任意の1つのインスタンスで構成またはインスタンス化される必要はない。たとえば、ハードウェア構成要素が、特殊目的プロセッサになるようにソフトウェアによって構成された汎用プロセッサ1204を備える場合、汎用プロセッサ1204は、異なる時間に、それぞれ異なる特殊目的プロセッサ(たとえば、異なるハードウェア構成要素を備える)として構成されてよい。したがって、ソフトウェアは、たとえば、時間のあるインスタンスでは特定のハードウェア構成要素を構成するように、および時間の異なるインスタンスでは異なるハードウェア構成要素を構成するように、特定のプロセッサまたはプロセッサ1204を構成する。ハードウェア構成要素は、他のハードウェア構成要素に対して情報を提供し、これから情報を受信することができる。したがって、説明されるハードウェア構成要素は、通信可能に結合されるとみなされてよい。複数のハードウェア構成要素が同時に存在する場合、通信は、ハードウェア構成要素のうちの2つ以上の間で信号送信を通じて(たとえば、適切な回路およびバス1202上で)達成され得る。複数のハードウェア構成要素が異なる時間に構成またはインスタンス化される実施形態では、そのようなハードウェア構成要素間の通信は、たとえば、複数のハードウェア構成要素がアクセスするメモリ構造内での情報の記憶および取り出しを通じて、達成され得る。たとえば、1つのハードウェア構成要素は、動作を実施し、その動作の出力を、通信可能に結合されたメモリ・デバイス内に記憶することがある。次いで、さらなるハードウェア構成要素が、後で、記憶された出力を取り出して処理するためにメモリ・デバイスにアクセスする。ハードウェア構成要素は、入力デバイスまたは出力デバイスとの通信を開始することもあり、リソース(たとえば、情報の集合)に対して動作することができる。本明細書において説明される例示的な方法のさまざまな動作は、少なくとも部分的に、関係動作を実施するように一時的に構成された(たとえば、ソフトウェアによって)または永続的に構成された1つまたは複数のプロセッサ1204によって実施されることがある。一時的に構成されようと永続的に構成されようと、そのようなプロセッサ1204は、本明細書において説明される1つまたは複数の動作または機能を実施するように動作する、プロセッサにより実装される構成要素を構成し得る。本明細書で使用されるとき、「プロセッサにより実装される構成要素」は、1つまたは複数のプロセッサ1204を使用して実装されるハードウェア構成要素を指す。同様に、本明細書において説明される方法は、少なくとも部分的にプロセッサにより実装されてよく、特定のプロセッサまたはプロセッサ1204はハードウェアの一例である。たとえば、方法の動作のうちの少なくともいくつかは、1つまたは複数のプロセッサ1204またはプロセッサにより実装される構成要素によって実施されてよい。さらに、1つまたは複数のプロセッサ1204は、「クラウド・コンピューティング」環境内で、または「サービスとしてのソフトウェア」(SaaS)として、関係する動作の実施をサポートするように動作してもよい。たとえば、動作のうちの少なくともいくつかは、(プロセッサ1204を含む機械1200の例として)コンピュータのグループによって実施されてよく、これらの動作は、ネットワーク1232(たとえば、インターネット)を介して、および1つまたは複数の適切なインタフェース(たとえば、API)を介して、アクセス可能である。動作のうちのいくつかの実施は、単一の機械1200内にあるだけでなく、いくつかの機械1200にわたって展開される、プロセッサ1204の間で分散されてよい。いくつかの例示的な実施形態では、プロセッサ1204またはプロセッサにより実装される構成要素は、単一の地理的場所内(たとえば、自宅環境、オフィス環境、またはサーバ・ファーム内)に設置されてよい。他の例示的な実施形態では、プロセッサ1204またはプロセッサにより実装される構成要素は、いくつかの地理的場所にわたって分散されてよい。
【0175】
この文脈における「プロセッサ」は、制御信号(たとえば、「コマンド」、「演算コード」、「機械コード」など)に従ってデータ値を操作し、機械1200を動作させるために印加される対応する出力信号を生じる任意の回路または仮想回路(実際のプロセッサ1204上で実行する論理によってエミュレートされる物理的回路)を指す。プロセッサ1204は、たとえば、中央処理ユニット(CPU)、縮小命令セット・コンピューティング(RISC)プロセッサ、複合命令セット・コンピューティング(CISC)プロセッサ、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、ASIC、無線周波数集積回路(RFIC)、またはそれらの任意の組み合わせであってよい。プロセッサ1204はさらに、同時に命令1210を実行し得る2つ以上の独立したプロセッサ1204(「コア」と呼ばれることがある)を有するマルチコア・プロセッサであってよい。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12