(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-30
(54)【発明の名称】非同期分散モジュラ関数呼び出し
(51)【国際特許分類】
H04L 67/02 20220101AFI20240123BHJP
H04L 67/14 20220101ALI20240123BHJP
【FI】
H04L67/02
H04L67/14
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023543240
(86)(22)【出願日】2021-01-19
(85)【翻訳文提出日】2023-07-18
(86)【国際出願番号】 US2021013987
(87)【国際公開番号】W WO2022159080
(87)【国際公開日】2022-07-28
(32)【優先日】2021-01-19
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】322001222
【氏名又は名称】スラック テクノロジーズ, エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ブレブールト,マイケル
(72)【発明者】
【氏名】ウッド,スティーヴン
(72)【発明者】
【氏名】フェリック,アレン,ジェイムズ
(72)【発明者】
【氏名】ハリス,ブラッド
(72)【発明者】
【氏名】ニューウェル,レスリー
(72)【発明者】
【氏名】クアット,メリッサ
(57)【要約】
グループベースの通信システム内の関数を呼び出すためのコンピュータ可読媒体、方法、及びシステム。関数は、トリガ条件に従って開始され得、引数及び戻り値に関連付けられている。この関数を実行するために、HTTP要求を生成してHTTPサーバに送信し、HTTPサーバはグループベースの通信システムサーバにHTTPコールバックを送信する。HTTPコールバックは、関数の正常な完了又はエラーのいずれかを示す戻り値を含み得る。
【特許請求の範囲】
【請求項1】
プロセッサによって実行されると、グループベースの通信システム内の関数を呼び出すための方法を実行するコンピュータ実行可能命令を格納する、1つ以上の非一時的コンピュータ可読媒体であって、前記方法が、
前記関数のトリガに応答して、グループベースの通信システム内のイベントチャネルを介して、指示を受信するステップと、
前記関数の1つ以上の引数を受信するステップと、
前記関数の識別子及び前記関数の前記1つ以上の引数を含む非同期要求を生成するステップと、
前記関数の1つ以上の戻り値を含むコールバックを受信するステップと、
前記関数の前記1つ以上の戻り値が前記関数の正常な完了を示しているとの判定に応答して、前記グループベースの通信システム内の前記イベントチャネルで成功イベントを生成するステップと、を含む、1つ以上の非一時的コンピュータ可読媒体。
【請求項2】
前記関数の1つ以上の引数を受信することが、前記関数の前記1つ以上の引数を示す、対話型ユーザセッションを介してユーザからの応答を受信することを含む、請求項1に記載のコンピュータ可読媒体。
【請求項3】
前記関数が、前記トリガに応答して自動的に開始され、前記関数の1つ以上の引数を受信することが、前記1つ以上の引数の1つ以上の所定のデフォルト値を受信することを含む、請求項1に記載のコンピュータ可読媒体。
【請求項4】
前記トリガの少なくとも1つのトリガパラメータが、前記関数を定義するために使用されるインターフェースから独立しているトリガ構成インターフェースを介して、ユーザによって定義される、請求項3に記載のコンピュータ可読媒体。
【請求項5】
前記トリガが、トリガイベント及び少なくとも1つのトリガ条件を含み、前記関数が、前記トリガイベントが発生した後に、前記少なくとも1つのトリガ条件が満たされるとの判定に応答して開始される、請求項1に記載のコンピュータ可読媒体。
【請求項6】
前記関数の前記1つ以上の引数に少なくとも部分的に基づいて、持続性テーブル内の値を更新するステップを更に含む、請求項1に記載のコンピュータ可読媒体。
【請求項7】
前記関数を実行するために、関数許可が必要であり、前記関数許可が、関数許可構成ユーザインターフェースを介して、ユーザによって定義される、請求項1に記載のコンピュータ可読媒体。
【請求項8】
グループベースの通信システム内で関数を呼び出すための方法であって、
前記関数のトリガに応答して、グループベースの通信システム内のイベントチャネルを介して、指示を受信するステップと、
前記関数の1つ以上の引数を受信するステップと、
前記関数の識別子及び前記関数の前記1つ以上の引数を含む非同期要求を生成するステップと、
前記関数の1つ以上の戻り値を含むコールバックを受信するステップと、
前記関数の前記1つ以上の戻り値が前記関数の正常な完了を示しているとの判定に応答して、前記グループベースの通信システム内の前記イベントチャネルで成功イベントを生成するステップと、を含む、方法。
【請求項9】
前記関数の1つ以上の引数を受信することが、前記関数の前記1つ以上の引数を示す、対話型ユーザセッションを介してユーザからの応答を受信することを含む、請求項8に記載の方法。
【請求項10】
前記関数が、前記トリガに応答して自動的に開始され、前記関数の1つ以上の引数を受信することが、前記1つ以上の引数の1つ以上の所定のデフォルト値を受信することを含む、請求項8に記載の方法。
【請求項11】
前記トリガの少なくとも1つのトリガパラメータが、前記関数を定義するために使用されるインターフェースから独立しているトリガ構成インターフェースを介して、ユーザによって定義される、請求項10に記載の方法。
【請求項12】
前記トリガが、トリガイベント及び少なくとも1つのトリガ条件を含み、前記関数が、前記トリガイベントが発生した後に、前記少なくとも1つのトリガ条件が満たされるとの判定に応答して開始される、請求項8に記載の方法。
【請求項13】
前記関数の前記1つ以上の引数に少なくとも部分的に基づいて、持続性テーブル内の値を更新するステップを更に含む、請求項8に記載の方法。
【請求項14】
前記関数を実行するために、関数許可が必要であり、前記関数許可が、関数許可構成ユーザインターフェースを介して、ユーザによって定義される、請求項8に記載の方法。
【請求項15】
グループベースの通信システムのための関数呼び出しシステムであって、
データストアと、
グループベースの通信システム内で関数を呼び出すための方法を実行するようにプログラムされたプロセッサと、を備え、前記方法が、
前記関数のトリガに応答して、グループベースの通信システム内のイベントチャネルを介して、指示を受信するステップと、
前記関数の1つ以上の引数を受信するステップと、
前記関数の識別子及び前記関数の前記1つ以上の引数を含む非同期要求を生成するステップと、
前記関数の1つ以上の戻り値を含むコールバックを受信するステップと、
前記関数の前記1つ以上の戻り値が前記関数の正常な完了を示しているとの判定に応答して、前記グループベースの通信システム内の前記イベントチャネルで成功イベントを生成するステップと、を含む、関数呼び出しシステム。
【請求項16】
前記関数の1つ以上の引数を受信することが、前記関数の前記1つ以上の引数を示す、対話型ユーザセッションを介してユーザからの応答を受信することを含む、請求項15に記載のシステム。
【請求項17】
前記関数が、前記トリガに応答して自動的に開始され、前記関数の1つ以上の引数を受信することが、前記1つ以上の引数の1つ以上の所定のデフォルト値を受信することを含む、請求項15に記載のシステム。
【請求項18】
前記トリガの少なくとも1つのトリガパラメータが、前記関数を定義するために使用されるインターフェースから独立しているトリガ構成インターフェースを介して、ユーザによって定義される、請求項17に記載のシステム。
【請求項19】
前記トリガが、トリガイベント及び少なくとも1つのトリガ条件を含み、前記関数が、前記トリガイベントが発生した後に、前記少なくとも1つのトリガ条件が満たされるとの判定に応答して開始される、請求項15に記載のシステム。
【請求項20】
前記関数の前記1つ以上の引数に少なくとも部分的に基づいて、持続性テーブル内の値を更新するステップを更に含む、請求項15に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、関数を呼び出すことに関する。より具体的には、本発明の実施形態は、グループベースの通信システム内の関数を呼び出すことに関する。
【0002】
典型的には、グループベースの通信システムは、エンドユーザが後で他の人によって共有又は呼び出され得るカスタム関数を格納する方法を提供することはない。したがって、関数の呼び出し及び合成のアクションは、高度な開発者ユーザに限定され得る。更に、いくつかのグループベースの通信システムは、外部アプリケーション内で通信及び動作を実行するために、他者によって容易に再利用可能又はアクセス可能であるカスタム関数を提供することはない。その結果、そのようなグループベースの通信システム内のモジュール性が低減され得る。
【0003】
必要なものは、グループベースの通信システム内の関数呼び出し規則であり、これにより、標準エンドユーザ及び上級開発者ユーザの両方が関数を呼び出して合成することを許容し、グループベースの通信システム内でそれらを共有して再利用することができる。
【発明の概要】
【0004】
本発明の実施形態は、グループベースの通信システム内に関数呼び出し規則を提供することによって、上記の問題を解決する。具体的には、本発明の実施形態は、グループベースの通信システム内で関数を呼び出すためのコンピュータ可読媒体、方法、及びシステムを提供する。
【0005】
本発明の第1の実施形態は、プロセッサによって実行されると、グループベースの通信システム内の関数を呼び出すための方法を実行するコンピュータ実行可能命令を格納する、1つ以上の非一時的コンピュータ可読媒体であって、方法が、関数のトリガに応答して、グループベースの通信システム内のイベントチャネルを介して、指示を受信するステップと、関数の1つ以上の引数を受信するステップと、関数の識別子及び関数の1つ以上の引数を含む非同期要求を生成するステップと、関数の1つ以上の戻り値を含むコールバックを受信するステップと、関数の1つ以上の戻り値が関数の正常な完了を示しているとの判定に応答して、グループベースの通信システム内のイベントチャネルで成功イベントを生成するステップと、を含む、1つ以上の非一時的コンピュータ可読媒体を対象としている。
【0006】
本発明の第2の実施形態は、グループベースの通信システム内で関数を呼び出すための方法であって、関数のトリガに応答して、グループベースの通信システム内のイベントチャネルを介して、指示を受信するステップと、関数の1つ以上の引数を受信するステップと、関数の識別子及び関数の1つ以上の引数を含む非同期要求を生成するステップと、関数の1つ以上の戻り値を含むコールバックを受信するステップと、関数の1つ以上の戻り値が関数の正常な完了を示しているとの判定に応答して、グループベースの通信システム内のイベントチャネルで成功イベントを生成するステップと、を含む、方法を対象としている。
【0007】
本発明の第3の実施形態は、グループベースの通信システムのための関数呼び出しシステムであって、データストアと、グループベースの通信システム内で関数を呼び出すための方法を実行するようにプログラムされたプロセッサと、を備え、方法が、関数のトリガに応答して、グループベースの通信システム内のイベントチャネルを介して、指示を受信するステップと、関数の1つ以上の引数を受信するステップと、関数の識別子及び関数の1つ以上の引数を含む非同期要求を生成するステップと、関数の1つ以上の戻り値を含むコールバックを受信するステップと、関数の1つ以上の戻り値が関数の正常な完了を示しているとの判定に応答して、グループベースの通信システム内のイベントチャネルで成功イベントを生成するステップと、を含む、関数呼び出しシステムを対象としている。
【0008】
本発明の追加の実施形態は、エンドユーザがユーザ定義関数を創出することを許容するエンドユーザインターフェースと、上級ユーザがユーザ定義関数を創出することを許容する開発者インターフェースと、を提供することを対象としている。
【0009】
更に、実施形態は、グループベースの通信システムサーバと、HTTPサーバと、外部アプリケーションと間の通信を対象としている。
【0010】
本要約は、以下の詳細な説明で更に説明される概念の選択を、簡素化された形態で導入するために提供される。本要約は、特許請求された主題の主要な特徴又は本質的な特徴を特定することを意図するものではなく、また、特許請求された主題の範囲を限定するために使用されることを意図するものでもない。本発明の他の態様及び利点は、以下の実施形態の詳細な説明及び添付の図面から明らかになるであろう。
【図面の簡単な説明】
【0011】
本発明の実施形態を、添付の図面を参照して以下に詳細に説明する。
【0012】
【
図1A】本発明の特定の実施形態のための例示的なハードウェアプラットフォームを描写する。
【
図1B】本発明の実施形態を実施するためのシステムのコンポーネントを例解する例示的な図を描写する。
【
図2】本発明のいくつかの実施形態に関する関数呼び出しシステムを描写する。
【
図3A】本発明のいくつかの実施形態に関する例示的な関数を描写する。
【
図3B】本発明のいくつかの実施形態に関する例示的な関数オブジェクトを描写する。
【
図4】本発明のいくつかの実施形態に関する一連の関数を描写する。
【
図5A】本発明のいくつかの実施形態に関する関数を開始するためのユーザインターフェースを描写する。
【
図5B】本発明のいくつかの実施形態に関する関数を開始するためのユーザインターフェースを描写する。
【
図5C】本発明のいくつかの実施形態に関する関数のトリガを描写する。
【
図6】本発明のいくつかの実施形態に関するグループベースの通信システム内の関数を呼び出すためのコンポーネント責任フローを例解するスイムレーン図を描写する。
【
図7A】本発明のいくつかの実施形態に関するエンドユーザインターフェースを例解する例示的なスクリーンショットを描写する。
【
図7B】本発明のいくつかの実施形態に関する開発者インターフェースを例解する例示的なスクリーンショットを描写する。
【
図8】本発明のいくつかの実施形態に関する関数を定義するための方法を描写する。
【
図9A】本発明のいくつかの実施形態に関する関数許可構成ユーザインターフェースを描写する。
【
図9B】本発明のいくつかの実施形態に関する関数許可構成ユーザインターフェースを描写する。
【0013】
これらの図面は、本発明を、本明細書に開示及び記載された特定の実施形態に限定するものではない。図面は必ずしも縮尺通りではなく、代わりに本発明の原理を明確に示すことに重点が置かれる。
【発明を実施するための形態】
【0014】
以下の詳細な説明は、本発明を実施することができる特定の実施形態を例解する添付の図面を参照する。これらの実施形態は、当業者が本発明を実施できるよう十分に詳細にわたって本発明の態様を説明することを意図している。本発明の範囲から逸脱することなく、他の実施形態を利用することができ、変更を加えることができる。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではない。本発明の範囲は、添付の特許請求の範囲によってのみ、そのような特許請求の範囲が権利を有する等価物の全範囲とともに定義される。
【0015】
この説明において、「一実施形態」、「1つの実施形態」又は「複数の実施形態」への言及は、言及される特徴又は複数の特徴が、技術の少なくとも1つの実施形態に含まれることを意味する。この説明における「一実施形態」、「1つの実施形態」又は「複数の実施形態」への別個の言及は、必ずしも同じ実施形態を指すわけではなく、また、そのように記載されていない限り、及び/又は説明から当業者に容易に明らかである場合を除いて、相互に排他的でもない。例えば、一実施形態に記載された特徴、構造、動作などは、他の実施形態にも含まれ得るが、かといって必ずしも含まれるものでもない。したがって、本技術は、本明細書に記載される実施形態の様々な組み合わせ及び/又は統合を含むことができる。
【0016】
まず
図1Aを参照すると、本発明の特定の実施形態のための例示的なハードウェアプラットフォームが描写されている。コンピュータ102は、デスクトップコンピュータ、ラップトップコンピュータ、サーバコンピュータ、スマートフォン又はタブレットなどのモバイルデバイス、又は汎用又は専用コンピューティングデバイスの任意の他のフォームファクターとすることができる。コンピュータ102には、説明のためにいくつかのコンポーネントが示されている。いくつかの実施形態では、特定のコンポーネントは、異なって配置されてもよく、又は存在しなくてもよい。追加のコンポーネントが存在してもよい。コンピュータ102にはシステムバス104が含まれており、それによってコンピュータ102の他のコンポーネントは互いにコミュニケーションをとることができる。特定の実施形態では、複数のバス又はコンポーネントが互いに直接コミュニケーションをとってもよい。システムバス104には、中央処理装置(CPU)106が接続される。また、システムバス104には、1つ以上のランダムアクセスメモリ(RAM)モジュール108が接続される。また、システムバス104には、グラフィックスカード110が接続される。いくつかの実施形態では、グラフィックスカード110は、物理的に別個のカードではなくてもよく、むしろマザーボード又はCPU106に統合されてもよい。いくつかの実施形態では、グラフィックスカード110は、別個のグラフィックス処理ユニット(GPU)112を有し、これは、グラフィックス処理又は汎用コンピューティング(GPGPU)のために使用できる。また、グラフィックスカード110上には、GPUメモリ114がある。グラフィックスカード110には、ユーザの相互作用のためのディスプレイ116が(直接的又は間接的に)接続される。いくつかの実施形態では、ディスプレイは存在しないが、他の実施形態では、ディスプレイはコンピュータ102内に統合される。同様に、キーボード118及びマウス120などの周辺機器は、システムバス104に接続される。ディスプレイ116と同様に、これらの周辺機器は、コンピュータ102に統合されてもよく、又は存在しなくてもよい。また、システムバス104に接続されているのはローカルストレージ122であり、これは任意の形態のコンピュータ可読媒体であってもよく、コンピュータ102に内部的にインストールされてもよく、又は外部的に取り外し可能な形態で取り付けられてもよい。
【0017】
コンピュータ可読媒体は、揮発性及び不揮発性媒体の両方、取り外し可能及び取り外し不能媒体の両方を含み、データベースによって読み取り可能な媒体を意図する。例えば、コンピュータ可読媒体は、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)、ホログラフィック媒体又は他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、及び他の磁気ストレージデバイス(ただし、これらに限定されない)を含む。これらの技術は、データを一時的又は永続的に格納できる。しかし、特に明記されていない限り、「コンピュータ可読媒体」という用語は、無線放送、ワイヤーを通じた電気信号、又は光ファイバーケーブルを通じた光パルスなどの物理的ではあるが一時的な信号伝送の形態を含むと解釈されるべきではない。格納された情報の実施例には、コンピュータ使用可能命令、データ構造、プログラムモジュール、及び他のデータ表現が含まれる。
【0018】
最後に、ネットワークインターフェースカード(NIC)124はまたシステムバス104に接続され、コンピュータ102をネットワーク126などのネットワーク上でコミュニケーションできるようにする。NIC124は、Ethernet、ATM、ファイバ、Bluetooth、又はWi-Fi(すなわち、IEEE802.11ファミリーの規格)など、当技術分野で知られている任意の形態のネットワークインターフェースとすることができる。NIC124は、コンピュータ102をローカルネットワーク126に接続し、これはまた、コンピュータ128などの1つ以上の他のコンピュータ、及びデータストア130などのネットワークストレージを含んでもよい。一般に、データストア130などのデータストアは、情報を格納し、必要に応じて取り出すことができる任意のリポジトリであってもよい。データストアの実施例としては、リレーショナル又はオブジェクト指向のデータベース、スプレッドシート、ファイルシステム、フラットファイル、LDAP及びActive Directoryなどのディレクトリサービス、電子メールストレージシステムなどが挙げられる。データストアは、複雑なAPI(例えば、構造化照会言語など)、読み取り、書き込み、及び検索の動作のみを提供する単純なAPI、又はその間の任意のレベルの複雑さを介してアクセス可能であってもよい。いくつかのデータストアは、バックアップ又はバージョニングなどの、そこに格納されたデータセットのための管理機能を更に提供してもよい。データストアは、コンピュータ128などの単一のコンピュータに対してローカルであり得、ローカルネットワーク126などのローカルネットワーク上でアクセス可能であり得、又はインターネット132上で、リモートでアクセス可能であり得る。ローカルネットワーク126は、次に、ローカルネットワーク126、リモートネットワーク134、又はコンピュータ136などの直接接続されたコンピュータなどの多くのネットワークを接続するインターネット132に接続される。いくつかの実施形態では、コンピュータ102自体をインターネット132に直接接続することができる。
【0019】
次に
図1Bに目を向けると、本発明の実施形態を実施するためのシステム150の要素を例解するシステム図が描写されている。システム150は、クライアントデバイス152、クライアントデバイス154、及びクライアントデバイス156などの任意の数のクライアントデバイスを備える。
図1Bに描写されるように、クライアントデバイス152、154、及び156は、デスクトップコンピュータ、ラップトップコンピュータ、携帯電話、タブレット、又はユーザがグループベースの通信システムにアクセスすることを許容するのに好適な任意の他のデバイスのいずれかであり得る。ユーザはまた、1つのクライアントデバイスから別のクライアントデバイスに切り替えてもよく、複数のデバイスを介してグループベースの通信システムに同時にアクセスしてもよい。グループベースのコミュニケーションシステムは、クライアントデバイスの専用ソフトウェアを介して、又はクライアントデバイスのウェブブラウザを介してアクセス可能であってもよい。いくつかの実施形態では、チャネル管理者は、任意のクライアントデバイスを介して管理機能にアクセスすることができる。他の実施形態では、管理機能は、クライアントデバイスの限定されたサブセットからのみ(例えば、クライアントデバイス152を介してのみ)アクセスすることができる。いくつかの実施例では、グループベースの通信ンシステムは、ユーザを選択するのに利用できる複数のメッセージングチャネルを有するチャネルベースのメッセージングプラットフォームである。
【0020】
システム150は、グループベースの通信システムのホストとして機能するグループベースの通信システムサーバ158を更に備える。グループベースの通信システムサーバ158は、専用サーバ、共有サーバ、又は
図1Aに関して上述した任意の他の形態のコンピューティングデバイスであり得る。単一のグループベースの通信システムサーバ158が図示されているが、複数のそのようなグループベースの通信システムサーバを有する実施形態も、グループベースのコミュニケーションシステムの異なるインスタンス間のスケール、冗長性及び/又は分離を提供するように企図される。例えば、グループベースの通信システムを使用する特定の組織は、セキュリティ上の理由から、競合他社のグループベースの通信システムと同じサーバでホストされることを望まない場合がある。グループベースの通信システムサーバ158は、ネットワーク160を介して、クライアントデバイス152、154、及び156に通信可能に結合される。ネットワーク160は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、仮想プライベートネットワーク(VPN)、又はインターネットであってもよい。大まかに言えば、システム150の様々なコンポーネント間のコミュニケーションを提供するための任意のタイプのネットワークが考えられる。グループベースの通信システムサーバ158は、ウェブベースのクライアントを可能にするためのウェブサーバ機能と、専用アプリを使用するクライアントを可能にするための非ウェブサーバ機能とを提供してもよい。代替的に、ウェブベースのクライアント及び専用アプリケーションクライアントの両方は、単一のウェブサーバを使用する可能性もあれば、ウェブサーバが専用アプリケーションサーバへのウェブベースのアクセスを提供するゲートウェイである可能性もある。様々なタイプのクライアントアプリケーション間の通信を可能にする他の技法も企図される。
【0021】
本明細書で言及されるグループベースの通信システムが、複数のユーザのための通信プラットフォームを提供し得ることを理解されたい。いくつかの実施形態では、複数のユーザの各ユーザは、特定の組織に関連付けられ得る。前述の特定の組織は、中小企業、法人、又は同様のもの、並びに任意の他のユーザグループであり得る。グループベースの通信システムは、ユーザの任意の組み合わせに通信サービスを提供するように動作可能である。例えば、いくつかの実施形態では、通信サービスは、単一の組織からの複数のユーザ、並びに複数の組織からの複数のユーザに提供することができる。いくつかの実施形態では、複数のチャネルが、グループベースの通信システム内に存在する。各チャネルにユーザを追加し得、それによって、チャネルのうちの1つ内のユーザはそのチャネル内で投稿されたメッセージ及びファイルにアクセスできるようになる。更に、チャネル内のユーザは、チャネル内にメッセージを投稿し、ファイルをアップロードする能力を有している。いくつかの実施形態では、ユーザは、特定の組織内の管理者などの管理者によって特定のチャネルに追加され得る。代替的に、いくつかの実施形態では、ユーザは、チャネル内の任意のユーザによって追加され得る。更に、いくつかの実施形態では、ユーザを追加できる人などのチャネルパラメータは、チャネルクリエータによって設定され得る。例えば、特定の組織によって創出されたチャネルは、管理者のみが特定のチャネルにユーザを追加できる、その組織のセキュリティポリシーに従い得る。
【0022】
グループベースの通信システムデータストア162は、グループベースの通信システムサーバ158にコミュニケーション可能なように接続される。図示されるように、グループベースの通信システムデータストア162は、グループベースの通信システムサーバ158に直接接続されるが、任意の形態のコミュニケーション接続(例えば、ネットワーク接続ストレージ(NAS)、ネットワークファイルシステム(NFS)、又はクラウドベースのストレージ)を使用することができる。大まかに言えば、グループベースの通信システムデータストア162は、グループベースの通信システムサーバ158によって使用される情報の全てを格納する。例えば、グループベースの通信システムデータストア162は、全てのメッセージを、それらの関連するチャネル、特定のチャネルにアップロードされた文書及び画像、チャネルメンバーシップ情報、及び/又はユーザ情報とともに格納することができる。前述したように、複数のグループベースの通信システムサーバは、システム150内に存在してもよい。そのような実施形態では、各グループベースの通信システムサーバは、グループベースの通信システムデータストア162の独自のコピーを有することができる。代替的に、複数のグループベースの通信システムサーバは、単一のネットワーク接続されたグループベースの通信システムデータストアを共有してもよい。代替的又は追加的に、これらの実施形態のいずれかにおいて、データは、複数のグループベースの通信システムデータストアにわたってシャーディングされ得る。
【0023】
クライアントデバイス152、154、及び156のいずれか、並びにグループベースの通信システムサーバ158は、
図1Aに関して説明されるCPU106などのプロセッサを備え得ることを理解されたい。プロセッサに関して本明細書に説明される動作のいずれも、本明細書に説明されるデバイスのいずれか内のプロセッサによって実行され得る。例えば、いくつかの実施形態では、グループベースの通信システムサーバ158内のプロセッサは、第1の動作を実行し得、クライアントデバイス内のプロセッサは、第2の動作を実行する。
【0024】
ここで
図2に目を向けると、いくつかの実施形態に関する関数呼び出しシステム200が描写されている。関数呼び出しシステム200は、
図1Bのグループベースの通信システムサーバ158のプロセッサ、又はクライアントデバイス152、154、及び156のうちの1つ上のプロセッサであり得るプロセッサ202を含む。プロセッサ202は、示されるように、HTTP要求204をHTTPサーバ206に通信する。いくつかの実施形態では、HTTP要求204は、関数の識別子と、関数の1つ以上の引数と、を含む。HTTPサーバ206は、HTTPコールバック208をプロセッサ202に通信する。いくつかの実施形態では、プロセッサ202とHTTPサーバ206との間の通信は、APIエンドポイントを介して確立される。いくつかの実施形態では、HTTPサーバ206は、ネットワーク160などのネットワークを介して通信するウェブサーバである。
【0025】
いくつかの実施形態では、HTTP要求は、HTTPサーバ206からの応答を待つのとは対照的に、プロセッサが要求を出した後に実行を継続する非同期HTTP要求である。「HTTP要求」、「HTTPサーバ」、及び「HTTPコールバック」という用語が、具体性のために使用されるが、加えて、本発明の実施形態は、グループベースの通信システムと、関数ロジックを実装するための外部サーバとの間の通信のための任意のタイプのネットワークプロトコルを企図することを理解されたい。
【0026】
いくつかの実施形態では、HTTPサーバ206は、外部アプリケーション210と通信し得る。外部アプリケーション210は、開発者アプリケーション又はグループベースの通信システムに関連付けられた他のアプリケーションであり得る。例えば、いくつかの実施形態では、外部アプリケーション210は、関数内で参照されるサードパーティアプリケーションである。いくつかの実施形態では、プロセッサ202は、サードパーティアプリケーション内でのみ関数を実行するために、HTTPサーバ206と通信し得る。代替的に、いくつかの実施形態では、関数の少なくとも一部分は、グループベースの通信システム内で実行され得る。いくつかの実施形態では、外部アプリケーション210は、外部アプリケーション210に関連付けられた外部サーバ上で実装される。したがって、関数の少なくとも一部分は、外部アプリケーション210上で実行され得る。例えば、情報は、HTTPサーバ206との通信を通して外部アプリケーション210から書き込まれるか、又は取得され得、情報取得の場合、取得された情報は、HTTPコールバック208を介してプロセッサ202に戻され得る。
【0027】
ここで
図3Aに目を向けると、いくつかの実施形態に関する例示的な関数300が描写されている。関数300は、入力302を受信し、これらの入力302に応答して、エラー304又は出力306のいずれかを生成する。入力302は、関数の1つ以上の引数、関数の名称、及び関数300を実行するために使用される他の好適な情報のいずれかを含み得る。エラー304は、関数300の失敗に応答して生成され得る。例えば、必要な引数が入力302内に提供されない場合、関数300は失敗し、エラー304を生成し得る。エラー304は、グループベースの通信システムサーバ158に返され、クライアントデバイス152、154、及び156のうちの1つ上にエラーメッセージとして表示され得る。代替的に、出力306は、関数300の成功に応答して、関数300によって生成され得る。いくつかの実施形態では、出力306(及び/又はエラー304)は、グループベースの通信システムのイベントチャネル上で成功イベント(又は、エラーの場合、失敗イベント)を生成し、ユーザ又は自動化されたプロセスが結果を得ることを許容し得る。以下で説明するように、これにより、イベントチャネル上のイベントを別の関数のトリガ条件として機能させることによって、関数を構成することも許容される。代替的に又は追加的に、いくつかのインスタンスでは、出力306又はエラー304のいずれかは、
図4を参照して以下で追加の詳細で説明されるように、後続の関数のための入力引数として後続の関数に直接送信され得る。
【0028】
いくつかの実施形態では、入力302は、関数300の引数として受信され得る。更に、入力302は、グループベースの通信システムからメッセージ情報として受信され得る。いくつかの実施形態では、データのアンダーカレントは、グループベースの通信システムの特定のチャネルに関連付けられ得る。データのアンダーカレントは、例えば、チャネル内に投稿されたメッセージのメタデータ、チャネルに追加されたユーザに関連付けられたユーザ情報、及びチャネル名及びチャネルパラメータなどのチャネル情報など、グループベースの通信チャネルに関連付けられた様々な情報を含む。したがって、データのアンダーカレントからの情報のいずれかは、関数の引数として送信され得る。例えば、ユーザ名及びメッセージの時刻は、どのユーザがメッセージを送信したか、及びメッセージが送信された時刻を示す関数の引数として使用され得る。したがって、チャネル内にメッセージを投稿する最後のユーザを識別する関数が企図される。
【0029】
いくつかの実施形態では、関数300のためにグループベースの通信チャネルに関連付けられた既存のリソースを利用することが好ましい場合がある。例えば、アクセス制御、データスコープ、サブスクリプション、API、データ損失防止統合、暗号化鍵管理、及び国際的なデータ常駐化統合などのチャネル関連情報及び特徴は、関数を開始するための引数又はトリガイベントを提供するために関数によって呼び出され得る。したがって、既存のグループベースの通信チャネルは、関数のイベントチャネルとして使用され得、チャネル内のイベントは、例えば、メッセージの送信、ユーザの追加、又はメッセージへの反応などの関数をトリガし得る。いくつかの実施形態では、グループベースの通信チャネルに公開された任意のコンテンツは、関数に引数をトリガ及び供給するために使用され得る。
【0030】
いくつかの実施形態では、イベントは、グループベースの通信システムのチャネル内でイベントメッセージとして公開され、各イベントメッセージは、イベントを記載するメタデータを含む。したがって、関数は、チャネル内のイベントに基づいて、並びにイベントメッセージが反応又はコメントされるときにトリガされることができる。そのようないくつかの実施形態では、イベントメッセージに関連付けられたメタデータが、関数に情報を開始及び供給するために使用され得るように、イベントメッセージを公開することが望ましい場合がある。代替的に、いくつかの実施形態では、ユーザが不必要な情報を受け取りすぎるような、全てのイベントをイベントメッセージとしてチャネル内で公開することが望ましくない場合がある。したがって、イベントメッセージは、特定のタイプのイベントのみがイベントメッセージとして公開されるようにフィルタリングされ得る。代替的に、イベントメッセージは、チャネル内でユーザに見えることなく、チャネルのためのデータのアンダーカレントに公開され得る。
【0031】
いくつかの実施形態では、関数300は、オブジェクト指向プログラミング環境内のオブジェクトなどのグループベースの通信システムのコンテキストにおけるオブジェクトである。したがって、関数300は、グループベースの通信システムデータストア162などのメモリ内に格納され、関数300を識別するために使用される識別子に関連付けられ得る。更に、いくつかの実施形態では、関数300は、プロセッサ202、HTTPサーバ206、又は外部アプリケーション210のいずれかによって認証され得る。いくつかの実施形態では、関数300は、プロセッサ202、HTTPサーバ206、及び外部アプリケーション210の各々の認証要件を満たす1つの認証ステップで認証され得る。加えて、関数300は、関数を開始したユーザとともに認証され得る。したがって、実施形態は、ユーザがグループベースの通信システムによって認証され、ユーザがHTTPサーバ206及び外部アプリケーション210によって認証されるための更なるアクションを実行する必要がない場合に企図される。ここで、ユーザ認証に関する情報は、関数の引数として送信され得る。したがって、ユーザがグループベースの通信システム内で認証されている場合、ユーザは、HTTPサーバ206又は外部アプリケーション210内で関数を実行することができる。
【0032】
いくつかの実施形態では、出力306は、グループベースの通信システム内の少なくとも1つの変数を定義するか、又は更新することを含み得る。例えば、成功した関数は、グループベースの通信システムデータストア162に保存された変数を更新し得る。したがって、特定のチャネルの各ユーザがそのチャネル内でメッセージを送信するたびに、各ユーザのカウンタを更新することによって、そのチャネル内で送信したメッセージ数を記録する関数が企図される。
【0033】
本発明の実施形態の利点は、関数が最初に創出された方法とは無関係に関数を実装し得、関数を再利用して様々な異なるコンテキストに合うように変更し得ることである。したがって、関数を定義するためのインターフェースは、関数がエラーを返すことなく様々なコンテキストで再利用され得るように、比較的安定であることが好ましい。更に、関数がどのように実装されるかについては、柔軟性が維持されるべきである。例えば、一意のユーザ識別子を引数として受け取り、そのユーザの表示名を返す関数を宣言し得る。この関数の最初の実装では、グループベースの通信システムのユーザ名を受け取り、ユーザデータベース内で表示名を検索することができる。その関数インターフェースは、電子メールアドレスを受け取り、LDAPディレクトリ内の表示名を検索するために再利用することができる。将来の時点で、関数を再び実装して、種々の異なるタイプの一意の識別子を取り出し、ユーザ識別子のタイプ及び対応するディレクトリを自動的に判定し、任意のタイプのユーザ識別子の表示名を返すことができる。これにより、バックエンドの実装に関係なく、既存の関数を、変更することなく、継続して使用して機能し続けることが許容される。
【0034】
一実施例では、関数300は、テーブル又はスプレッドシート内の値を埋めるために使用されるテーブル創出関数であり得る。ここで、入力302は、グループベースの通信システム又は外部アプリケーション210のいずれかからの変数又は他のパラメータであり得る。したがって、関数300の出力306は、テーブル内の特定の場所内に埋められた変数を含む情報のテーブルを含み得る。例えば、グループベースの通信システム内の特定のチャネルに、ある期間、例えば、過去1か月に追加されたユーザの電子メールアドレスを返す関数が企図される。ここでは、過去1か月間に追加されたユーザを示す変数をグループベースの通信システムから取得し、これらの変数を、関数がテーブルを埋めるための入力302として使用する。
【0035】
データの書き込み、データの読み出し、データの挿入、データの更新、及びデータの削除など、テーブル、リスト、スプレッドシート、又は他のデータ構造に関する動作を実行するための様々な関数が企図されることを理解されたい。したがって、実施形態は、関数がテーブル、リスト、又はスプレッドシートなどの格納されたデータ構造と対話するために使用されるデータ駆動アプリケーションのために企図される。更に、いくつかの実施形態では、そのようなデータ構造への変更は、関数を開始するためのトリガイベントに関連付けられ得る。したがって、ユーザがフォーム、テーブル、若しくはリストを更新するか、又は文書内のテキストに変更を加える際に、関数がトリガされるような実施形態が想定される。前述のデータ構造が、グループベースの通信システムデータストア162に格納され得るか、又はそうでなければ、外部アプリケーションに格納され得ることを理解されたい。
【0036】
いくつかの実施形態では、テーブルを創出して、関数に持続性能力を提供し得る。したがって、持続性テーブルは、引数及びイベントデータを格納するために所与の関数が初期化されたときに、創出され得る。イベントデータは、それが後続の関数によって取得可能であるように格納され得る。したがって、複数の関数が持続性テーブルに格納された情報を取得及び更新する実施形態が企図される。更に、いくつかの実施形態では、イベントデータは、関数のエラー追跡を支援するためにユーザによって取得可能であり得る。
【0037】
ここで
図3Bに目を向けると、関数300は、本発明のいくつかの実施形態に関連する関数オブジェクトとして描写される。そのようないくつかの実施形態では、関数300のインスタンスは、上述したように、グループベースの通信システムデータストア162内の関数オブジェクトのインスタンスとして格納され得る。関数300は、関数ID308及び関数名310を含む。ここで、関数ID308及び関数名310を使用して、関数を識別し得る。例えば、いくつかの実施形態では、関数ID308及び関数名310は、関数300を呼び出すために使用される。したがって、以下で考察されるように、別の関数の出力306内から追加の関数が呼び出される実施形態が、企図される。例えば、第1の関数は、第2の関数が第1の関数によって呼び出されるように、出力として第2の関数の関数ID又は関数名を含み得る。いくつかの実施形態では、関数300は、関数300がユーザセッションを必要とするかどうかを示すセッション要求識別子312を更に含む。セッション要求識別子312は、真又は偽のようなブール変数を含み得、真はユーザセッションが必要であることを示し、偽はユーザセッションが不要であることを示す。
【0038】
本明細書に記載されるユーザセッションは、関数の引数又は入力302として使用され得るユーザ入力を取得するために、ユーザとの対話型セッション(例えば、現在アクティブなインフォーカスユーザセッション)を含み得る。例えば、モーダルダイアログは、ユーザが関数のために(直接的又は間接的に)1つ以上の必要なパラメータを供給することを許容するユーザに提示され得る。いくつかの実施形態では、セッション要求識別子312が真である場合、ユーザセッションは、関数300のトリガ時に開始され得る。他の実施形態では、関数を必要とする関数が非対話型セッションで呼び出される場合、関数は失敗し得る。代替的に、いくつかの実施形態では、セッション要求識別子312が偽に設定されている場合、ユーザセッションは開始されないか、又はユーザセッションは任意選択であり得る。ユーザセッションが任意選択である場合、関数が非対話的なコンテキストで呼び出されるのであれば、引数の少なくとも一部分は、デフォルト値で満たされ得、デフォルト値は、関数オブジェクトとともにグループベースの通信システムデータストア162に格納された事前定義されたデフォルト値であり得る。
【0039】
ここで
図4に目を向けると、一連の関数400が、いくつかの実施形態に関するワークフローに描写されている。ここで、一連の関数400は、第1の関数402(関数_a())、第2の関数404(関数_b())、第nの関数406(関数_c())などの複数のn関数を含む。そのようないくつかの実施形態では、複数の関数の各関数は、関数のそれぞれの失敗又は成功に基づいて、エラー304又は出力306のいずれかを生成し得る。いくつかの実施形態では、出力306は、示されるように、後続の関数に渡され得る。いくつかの実施形態では、一連の関数400は、グループベースの通信システム内でワークフローとして実行される。いくつかの実施形態では、一連の関数400の各関数は、異なるアクションを実行し、異なる出力306を生成する。いくつかの実施形態では、n番目の関数406は、最後の関数であり得る。ここで、n番目の関数406の出力306は、戻り値のセットとしてグループベースの通信システムサーバ158に送り返される。いくつかの実施形態では、
図7A及び
図7Bに関して以下に説明されるように、関数は、それらが創出されるときに構成され得る。
【0040】
値は、直接的に、又はグループベースの通信システムのイベントチャネルに投稿された成功及び/又はエラーメッセージを介して、関数間で渡され得る。いくつかの実施形態では、構成された関数の成功メッセージは、呼び出される後続の関数を示す追加情報を含み得、関数呼び出し自体の外で状態を維持する必要性を排除することができる。いくつかの実施形態では、イベントチャネルは、グループベースの通信システムの従来のチャネルのように動作し、ユーザが他のチャネルのようにイベントチャネルに参加して、成功及びエラーメッセージを監視することによって、関数をデバッグすることができる。他の実施形態では、イベントチャネルは、関数が呼び出される通常のグループベースの通信チャネルの隠しデータ層であり得る。
【0041】
いくつかの実施形態では、関数402、404、及び406の各々は、グループベースの通信システムに組み込まれた事前定義された関数、又はエンドユーザによって創出されたカスタムのユーザ定義関数のいずれかであり得る。したがって、ユーザが既存の関数のセットから選択することによって一連の関数400を創出する、実施形態が企図される。更に、いくつかの実施形態では、関数402、404、及び406は、グループベースの通信システムのワークフローアプリケーションによって実行される自動化されたワークフローから呼び出され得る。したがって、グループベースの通信システム内で複雑なタスクのセットを実行するために複数の関数を呼び出す自動ワークフローが企図される。
【0042】
いくつかの実施形態では、サードパーティアプリケーションでサービスにサインアップしたユーザに関連する情報を格納するためのテーブルを提供する例示的な自動化されたワークフローが企図される。ここで、自動ワークフローは、テーブルを創出する第1の関数、新しいユーザが追加されるたびにサービスのサインアップをユーザに促す第2の関数、ユーザがサービスにサインアップするたびにテーブル上の情報を更新する第3の関数を呼び出し得る。加えて、サードパーティサービスに誰がサインアップしたかをユーザが確認できるように、テーブルに格納された特定の値を返す関数を提供し得る。
【0043】
いくつかの実施形態では、引数は、グループベースの通信システムデータストア162から収集される。例えば、引数は、ユーザ情報、グループベースの通信チャネルのステータス情報、外部リソースからの外部情報、又はそれらの任意の組み合わせのいずれかを含み得る。他のソース及びタイプの引数も企図されていることを理解されたい。
【0044】
いくつかの実施形態についての本発明の動作を例解する例示的なシナリオを次に説明する。実施例のために、ユーザ情報をフォームに自動入力するための関数を定義している。前述の関数は、グループベースの通信システム内でフォームが共有されるたびにトリガされる。したがって、第1のユーザは、グループベースの通信チャネルで第2のユーザが記入すべきフォームを共有し、共有されているファイルに応答して、トリガ指示が受信される。トリガ指示を受信した後、引数が収集される。実施例のために、収集された引数は、例えば、ユーザ名、ユーザジョブタイトル、及び他のユーザ情報などの、グループベースの通信データストアから取得されたユーザ情報のセットを含む。
【0045】
HTTP要求が生成され、HTTPサーバ206に送信される。HTTP要求は、取得されたユーザ情報、記入されるフォームに関連する情報、及びHTTPサーバ206に送信される追加の関数関連情報を含む。HTTPサーバ206は、この例では、フォームの少なくとも1つの入力フィールドをユーザ情報で自動的に満たすことを含む関数を実行する。したがって、自動入力されたフォーム及び関数の正常な完了の指示を含むHTTPコールバックが受信される。次に、受信した指示に基づいて関数が成功すると判定され、成功イベントが生成される。代替的に、関数が正常に完了していない場合(例えば、フォームに自動的に記入される情報にアクセスできなかった場合)、エラーメッセージが返されてもよく、又は情報が手動で提供されなければならないことをユーザに通知するメッセージを返し得る。上述したように、関数の成功又は失敗により、成功又は失敗イベントメッセージがイベントチャネル(又は適切な専用の成功チャネル又は失敗チャネル)に投稿され得る。
【0046】
ここで
図5Aに目を向けると、いくつかの実施形態に関して、関数を開始するためのグループベースの通信システムの例示的なユーザインターフェース500が描写されている。ユーザインターフェース500は、関数ショートカット502を含む。いくつかの実施形態では、関数ショートカット502は、関数を開始するトリガ指示に関連付けられている。いくつかの実施形態では、関数ショートカット502は、示されるように、グループベースの通信システム上でユーザに提示される提案されたショートカット504のセットからアクセスされ得る。加えて、ショートカットは、ショートカット検索バー506を使用して検索され得る。したがって、ユーザが検索バー506を使用して特定の関数を検索することができる実施形態が企図される。いくつかの実施形態では、どの関数が関数ショートカット502に対応するかを指示するために、関数名310がユーザインターフェース500内に表示される。いくつかの実施形態では、複数の関数は、関数に関連しない場合がある追加のショートカットとともに、提案されたショートカットのセット内でユーザに提示され得る。
【0047】
いくつかの実施形態では、関数ショートカット502は、示されるように、ユーザインターフェース500内のポップアップウィンドウの一部として含まれ得る。代替的に、いくつかの実施形態では、関数ショートカット502は、グループベースの通信システムのテキストエントリボックス内にスラッシュコマンドを入力することによってアクセスされ得る。例えば、開発者ユーザは、典型的にはメッセージを構成するために使用されるグループベースの通信システムのテキスト入力フィールド内の関数のための名称又は他の識別子に続くスラッシュを入力することによって、関数を呼び出し得る。
【0048】
ここで
図5Bに目を向けると、いくつかの実施形態に関して、関数を開始するためのグループベースの通信システムの例示的なユーザインターフェース500が描写されている。いくつかの実施形態では、ユーザインターフェース500は、関数を開始するための関数ボタン510を含む。ここで、関数ボタン510は、所与の関数のトリガ指示であり得る。そのような実施形態では、関数ボタン510は、関数を開始するグループベースの通信システム内でユーザが関数ボタン510をクリック又はタップすることによって選択され得る。
【0049】
いくつかのそのような実施形態では、関数ボタン510は、示されるように、グループベースの通信システム内のメッセージ512内に含まれ得る。したがって、ユーザが、グループベースの通信システムのチャネル内でメッセージ512に関数ボタン510を付けることによって、他のユーザと関数を共有することができる、実施形態が企図される。代替的に、関数ボタン510は、グループベースの通信システム内の他の場所に提示され得る。いくつかの実施形態では、
図5Cを参照して以下に詳細に説明するように、ユーザがボタンを手動でクリックするか、又は関数ショートカットを選択することなく、関数が自動的に開始され得ることを理解されたい。
【0050】
ここで
図5Cに目を向けると、本発明のいくつかの実施形態に関する例示的な自動トリガ520が描写される。いくつかの実施形態では、トリガ520は、トリガイベント522及び少なくとも1つのトリガ条件524を含む。したがって、トリガイベント522が発生すると、トリガ条件524がチェックされ、トリガ条件524が満たされると、関数が開始される。いくつかの実施形態では、関数は、種々のトリガイベントが関数を開始することができるように、複数のトリガイベント522に関連付けられ得ることを理解されたい。更に、いくつかの実施形態では、トリガイベント522は、グループベースの通信システム内又は外部アプリケーション内のイベントであり得る。同様に、トリガ条件524に関連する情報は、グループベースの通信システムから、又は外部アプリケーションから取得され得る。例えば、いくつかの実施形態では、トリガ条件524は、グループベースの通信システムデータストア162内に格納された変数に関連付けられる。いくつかの実施形態では、新しいユーザがグループベースの通信システムの特定のチャネルに参加すると、新規ユーザにフォームを提示するための関数が含まれ得る。そのような関数を、以下で詳細に説明する。
【0051】
一実施例では、組織の管理者ユーザは、例えば、W4フォームなどの初期雇用書類事務に関連するフォームに記入するように新規ユーザに自動的に促す関数を定義している。そのような実施例では、管理者ユーザは、採用時に組織の全メンバが追加される人事チャネルに対して、関数をアクティブにするように設定している。したがって、管理者ユーザは、新しいユーザが人事チャネルに追加されるたびにアクティブ化される関数のトリガイベントを定義し得る。管理者ユーザは、関数を通常の営業時間内にのみ実行し、フォームへの記入を促すプロンプトが送信されたときに新規ユーザがアクティブになっていることを確実にすることを望み得る。したがって、管理者ユーザは、トリガイベントの時間が月曜日から金曜日の午前7時~午後7時であるときに満たされる関数のトリガ条件を定義し得る。そのような実施形態では、新規ユーザがフォームに記入するプロンプトを依然として受信することを確実にするために、最初のトリガイベントがこれらの時間外にアクティブ化された場合、これらの時間内に行われる後続のトリガイベントをスケジュールすることが更に好ましい場合がある。
【0052】
上述の手動及び自動トリガに加えて、
図4を参照して説明されるように、関数は、別の関数からの呼び出しによってもトリガされ得る。加えて、いくつかの実施形態では、単一の関数は、種々の異なるタイプのトリガによって開始され得る。例えば、スプレッドシートに電子メールアドレスを格納するための関数は、新規連絡先からの電子メールを受信することによって自動的にトリガされ得、又はユーザが関数を検索して選択することによって手動でトリガされ得る。更に、関数は、自動化されたワークフローを実行するグループベースの通信システムのワークフローアプリケーションによって呼び出され得る。ここで、関数の名称又はIDは、自動化されたワークフローのための命令のセット、例えば、グループベースの通信システムデータストア162に格納され得、それによって、自動化されたワークフローは、実行時に関数を呼び出してトリガする。
【0053】
次に
図6に目を向けると、いくつかの実施形態に関連して、グループベースの通信システム内の関数を呼び出すためのコンポーネント責任フローを例解するスイムレーン図が描写されており、概ね参照番号600によって参照されている。ステップ602では、トリガ指示は、グループベースの通信システムサーバ158によって受信される。このようなトリガ指示は、上述した手動又は自動の関数開始シナリオのいずれか1つに関連付けられ得る。例えば、トリガ指示は、ユーザが関数ショートカット502を選択することに応答して、ユーザが関数ボタン510を選択することに応答して、又はトリガ条件が満たされたトリガイベントに自動的に応答して、受信され得る。加えて、いくつかの実施形態では、上記のように、関数は、自動化されたワークフローによって、又は以前に実行された関数によってトリガされ得る。いくつかの実施形態では、トリガ指示は、1つ以上のトリガ条件が満たされたという指示であり得る。いくつかの実施形態では、指示は、グループベースの通信システムのイベントチャネルを介して受信される。トリガ条件指示は、トリガ条件が満たされていることに関連付けられ得る。例えば、トリガ条件が、グループベースの通信システム内の特定のチャネルに追加されている新しいメンバに関連付けられている場合、新しいメンバがチャネルに参加するときにトリガ条件が満たされ得る。そのような場合、指示は、トリガ条件が満たされていることに応答して、イベントチャネル上で送信され得る。代替的に、トリガ条件が別の関数の正常な完了である場合、適切な成功イベントがイベントチャネルに投稿されたときにトリガ条件が満たされ得る。
【0054】
いくつかの実施形態では、トリガ条件は、ユーザ定義又は事前定義されたトリガから選択され得る。例えば、トリガ条件は、グループベースの通信システムの特定のチャネル内でメッセージを送信するユーザに関連付けられ得る。したがって、そのチャネル内でメッセージが送信されると、トリガ条件が満たされる。種々のタイプのトリガ条件が企図されることを理解されたい。例えば、トリガ条件は、チャネルに参加する追加のユーザ、創出されている新しいチャネル、チャネルに参加する追加の組織、メッセージへの反応、又はグループベースの通信システム内の別のイベントに関連付けられ得る。大まかに言えば、トリガは、事前定義された条件に一致する任意のイベントであり得る。これらのイベントは、ユーザアクション(ユーザが、ユーザインターフェースのボタンをクリックするか、又はメッセージでスラッシュコマンドを呼び出すこと)、自動化されたシステムアクション(例えば、定期的にスケジュールされた反復イベント)、又はカスタムアクション(例えば、サードパーティの統合によって呼び出されるウェブフック)によって発生し得る。トリガのイベントは、トリガされた関数の引数として含める場合がある。例えば、トリガ条件が特定のチャネルに参加するユーザである場合、ユーザ識別子及びチャネル識別子は、関数への引数として渡され得る。
【0055】
トリガ指示の受信に応答して、グループベースの通信システムサーバ158は、ステップ604でHTTP要求を生成し、ステップ606でHTTP要求をHTTPサーバ206に送信する。HTTP要求は、関数を識別する情報、関数の引数を識別する情報、関数のアクションを識別する情報、認証情報、並びに他の関数関連情報などの種々の情報を含み得る。
【0056】
HTTPサーバ206は、ステップ608でHTTP要求を受信する。いくつかの実施形態では、HTTPサーバ206は、ステップ608で受信されたHTTP要求に基づいて、ステップ610で外部アプリケーション210にメッセージを送信する。いくつかの実施形態では、メッセージは、外部アプリケーション210内で実行されるアクションに関連する情報、外部アプリケーション内の関数を認証するための認証情報、又は他の関数関連情報などの種々の情報を含む。外部アプリケーション210は、ステップ612で前述のメッセージを受信し、ステップ614で動作又はアクションのセットを実行する。いくつかの実施形態では、メッセージは、外部アプリケーション210内で動作を実行する命令を含み得る。例えば、一実施形態では、外部アプリケーション210はスプレッドシートソフトウェアであり、HTTPサーバ206からのメッセージは、スプレッドシート内の特定のセルに値を書き込む、及び/又は別のセルから値を読み出す命令を包含する。ステップ616において、外部アプリケーション210は、応答をHTTPサーバ206に送り返す。いくつかの実施形態では、応答は、動作がステップ614で実行されたことの確認又は戻り値などの情報を含む。例えば、スプレッドシートから読み出された値は、応答でHTTPサーバ206に返され得る。
【0057】
ステップ620において、HTTPサーバ206は、グループベースの通信システムサーバ158にコールバックを送信する。いくつかの実施形態では、HTTPサーバ206は、外部アプリケーション210と通信しない場合があることを理解されたい。したがって、ステップ610~618は、そのような実施形態ではスキップされ、HTTPサーバ206による処理のステップに置き換えられ得る。ここで、HTTPサーバ206は、関数に関連付けられた動作を実行し得る。
【0058】
ステップ622において、コールバックは、グループベースの通信システムサーバ158によって受信される。いくつかの実施形態では、コールバックは、関数に関連付けられた1つ以上の戻り値を含む。コールバック内で成功指示を受信することに応答して、成功イベントは、ステップ624で、グループベースの通信システムサーバ158によって生成される。いくつかの実施形態では、1つ以上の戻り値は、関数の正常な完了を示す。代替的に、コールバックでエラーが返される場合、成功イベントの代わりに、ステップ624でエラーイベントが生成され得る。そのようなエラーイベントは、上で考察されたように、グループベースの通信システム内にエラーメッセージを表示することを含み得る。
【0059】
ここで
図7Aに目を向けると、いくつかの実施形態に関連して、グループベースの通信システムのエンドユーザインターフェース702の例示的なスクリーンショットが描写されている。エンドユーザインターフェース702は、クライアントデバイス152、154、又は156のうちの1つ上でユーザに表示され得る。エンドユーザインターフェース702は、経験豊富な開発者ではない新規ユーザ及びエンドユーザにとって特に好ましい場合がある。したがって、エンドユーザインターフェース702は、ユーザがコードを記述するか、又は高度なソフトウェア技法を使用することを要求することなく、ユーザがグループベースの通信システム内で関数を定義又は編集することを許容し得る。
【0060】
いくつかの実施形態では、エンドユーザインターフェース702は、ユーザが関数のパラメータを選択するための単純なインターフェースを提供する、複数のクリック可能なボタン704を含む。いくつかの実施形態では、ドロップダウンメニュー706は、ユーザが複数のボタン704のうちの1つをクリックすることに応答して、選択的に表示され得る。ドロップダウンメニュー706は、ユーザが選択するための複数のオプションを表示し得る。グループベースの通信システムは、例えば、モバイルデバイスのタッチスクリーン上に表示され得ることを理解されたい。ここでは、ユーザが画面に触れることは、ユーザがアイテムをクリックすることに匹敵する。したがって、いくつかの実施形態では、ドロップダウンメニュー706は、ユーザがマウスを使用してボタン704をクリックするか、又はクライアントデバイス152、154、又は156のうちの1つのタッチスクリーンディスプレイ上のボタン704をタップするかのいずれかに応答して表示され得る。
【0061】
いくつかの実施形態では、エンドユーザインターフェース702は、ユーザが変数を選択するためのプロンプトを含み得る。ここで、変数は、関数の入力として使用することができるグループベースの通信システム内でアクセス可能なパラメータであり得る。例えば、ユーザは、関数の入力として使用される変数として電子メールアドレスを選択し得る。したがって、ユーザが、関数の入力として使用される変数として関数を呼び出すために使用された電子メールアドレスを選択する状況が企図される。ここでは、関数を呼び出したユーザの電子メールアドレスを返す関数を創出する場合がある。例えば、関数は、グループベースの通信システム内のメッセージに応答するユーザによってトリガされ得る。ここで、例示的な関数を使用して、ユーザが応答したユーザアカウントに関連付けられた電子メールアドレスを返すことができる。
【0062】
いくつかの実施形態では、エンドユーザインターフェース702は、ユーザが事前定義された関数及び保存されたユーザ定義関数のセットから選択することを許容する。したがって、ユーザがユーザインターフェース702と対話し、事前定義された関数又はユーザ定義関数のセットから既存の関数を選択することによって、
図4の一連の関数400と同様の関数のセットを定義する実施形態が企図される。
【0063】
ここで
図7Bに目を向けると、いくつかの実施形態に関する、グループベースの通信システムの開発者インターフェース720が描写される。開発者インターフェース720は、高度なユーザがコードを使用してグループベースの通信システム内の関数を定義することを許容することが好ましい場合がある。したがって、開発者インターフェース720は、グループベースの通信システム上でホストされ得る種々のコーディング言語と互換性があり得る。例えば、開発者インターフェース720内には、ユーザが関数を定義するためのコードを入力することを許容するコマンドウィンドウ722が提供される場合がある。いくつかの実施形態では、開発者インターフェース720は、ユーザが外部開発者アプリケーションにコードを記述することによって関数を創出することを許容するために、外部開発者アプリケーションとインターフェースし得る。
【0064】
いくつかの実施形態では、開発者インターフェース720は、ユーザがコマンドウィンドウ722内の関数を定義するために、外部リポジトリから情報をインポートすることを許容し得る。したがって、関数は、ユーザ間で容易に共有され得る。例えば、関数テンプレートを格納しているオンラインリポジトリへのリンクをコピーして、コマンドウィンドウ内にペーストすることによって、オンラインリポジトリにアクセスし、関数テンプレートを取得し得る。
【0065】
エンドユーザインターフェース702及び開発者インターフェース720の両方が、複数の異なるユーザが、グループベースの通信システム内で関数を創出し、定義することを許容する実施形態が含まれることが企図されることを理解されたい。したがって、ユーザは、関数を定義するときに、エンドユーザインターフェース702又は開発者インターフェース720のいずれかを選択する能力を与えられ得る。加えて、いくつかの実施形態では、エンドユーザインターフェース702又は開発者インターフェース720のいずれかは、グループベースの通信システムデータストア162内に格納されたユーザに関連付けられたユーザ情報に基づいて、ユーザに自動的に表示され得る。例えば、ユーザがグループベースの通信システム内のユーザの役割に基づいて高度なソフトウェア開発者であることが既知である場合、開発者インターフェース720は、ユーザが新しい関数を定義したいときに自動的に表示され得る。代替的に、ユーザが標準ユーザである場合、エンドユーザインターフェース702は、新規関数を定義しつつ自動的にユーザに表示され得る。
【0066】
更に、単一のユーザが、関数を定義するために、開発者インターフェース720及びエンドユーザインターフェース702の両方を使用し得る実施形態が企図される。例えば、ユーザは、コードをタイプ入力するか又はペーストすることによって、開発者インターフェース720内で関数を定義し得る。次に、関数は、関数がエンドユーザインターフェース702からアクセスできるように、グループベースの通信システム内に格納又は登録され得る。ここで、同じユーザ又は別のユーザは、エンドユーザインターフェース702から関数にアクセスし得る。したがって、高度なユーザが、エンドユーザインターフェース702を介してエンドユーザによって呼び出すことができる開発者インターフェース720を使用して複雑な関数を定義する実施形態が企図される。
【0067】
いくつかの実施形態では、関数ディレクトリが含まれ得、これは、グループベースの通信システムデータストア162に格納され得る。関数ディレクトリは、ユーザ及び外部アプリケーションによってインストールされることが可能な複数の関数を含み得る。いくつかの実施形態では、ユーザ及び外部アプリケーションは、関数が他の組織の他のユーザによってインストールされ得るように、関数ディレクトリに関数を公開し得る。したがって、有用な関数が第1の組織によって創出される場合、第1の組織は、第2の組織が関数ディレクトリから関数をインストールし得るように関数を公開し得る。
【0068】
次に
図8に目を向けると、いくつかの実施形態に関連して、グループベースの通信システム内の関数を定義するための方法が描写されており、概ね参照番号800によって参照されている。ステップ802において、関数のための1つ以上のトリガ条件がユーザから受信される。いくつかの実施形態では、関数のトリガ条件は、エンドユーザインターフェース702又は開発者インターフェース720のうちの1つを介して受信され得ることを理解されたい。代替的に、いくつかの実施形態では、トリガ条件は、関数のトリガを設定するための別個のトリガ構成インターフェースを介して受信され得る。したがって、ユーザは、トリガ構成インターフェースを操作して、トリガを関数に割り当て得る。ここで、ユーザは、所与の関数に対してアクティブであるべきトリガを選択し得る。例えば、ユーザはトリガ設定インターフェースを操作して、グループベースの通信システムのチャネルに新規ユーザが追加されたときの自動トリガイベントを割り当て得る。更に、ユーザは、
図5Aの関数ショートカット502について説明したように、他のユーザがショートカットを選択することによって、グループベースの通信システム内で関数を手動で開始し得るように、関数の手動ショートカットトリガを割り当て得る。
【0069】
ステップ804において、関数の1つ以上の引数のタイプ及び名称を、ユーザから受信する。ステップ806において、関数の1つ以上の戻り値のタイプ及び名称を、ユーザから受信する。いくつかの実施形態では、トリガ条件、並びに引数及び戻り値の各々のタイプと名称は、それぞれ
図7A及び
図7Bに示すように、エンドユーザインターフェース702又は開発者インターフェース720のうちの1つを通じてユーザから受信される。ステップ808において、ユーザ定義関数が格納される。いくつかの実施形態では、トリガ条件、並びに引数及び戻り値の各々のタイプと名前を含むユーザ定義関数は、グループベースの通信システムデータストア162に格納される。
【0070】
いくつかの実施形態では、ステップ808で格納されたユーザ定義関数を取得し、グループベースの通信システム内で使用することができる。いくつかの実施形態では、ユーザ定義関数は、グループベースの通信システム内のユーザ間及び組織間で共有することができる。したがって、例えば、第1の組織の第1のユーザは、フォームにユーザ情報を自動記入するためのユーザ定義関数を創出し、関数を第1の組織の他のユーザ並びに第2の組織のユーザと共有し得る。
【0071】
本明細書に説明される実施例の関数は、ほんのいくつかの実施例であり、グループベースの通信システム内の特定のシナリオに応じるために、本明細書では説明しない異なるパラメータを有する様々な追加的な関数も企図されることを理解されたい。
【0072】
ここで
図9A及び
図9Bに目を向けると、本発明のいくつかの実施形態に関する関数許可構成ユーザインターフェース900が描写されている。いくつかの実施形態では、機密データが共有されるか、又は失われるのを防ぐために、特定の関数へのアクセスを制限することが好ましい場合がある。例えば、いくつかの実施形態では、特定の組み込み関数は、グループベースの通信システムデータストア162に格納された機密ユーザ情報へのアクセスを有し得る。したがって、関数許可に基づいて関数を制限することが好ましい場合がある。例えば、関数許可は、グループベースの通信システムの特定のユーザにのみ、又は例えば外部アプリケーション210などの特定の外部アプリケーションにのみ付与され得る。ここで、関数は、関数許可に基づいて許容又は拒否され得る。加えて、いくつかの実施形態では、関数の特定のコンテキストに基づいて関数を制限することが好ましい場合がある。例えば、管理者ユーザは、ユーザBによってトリガされる自動化されたワークフローから呼び出されるときに常に許容されるように、ユーザAのデータにアクセスするように組み込み関数を設定し得る。更に、管理者ユーザは、外部アプリケーション210から呼び出されるときに常に拒否されるように、同じ組み込み関数を設定し得る。
【0073】
いくつかの実施形態では、関数許可構成ユーザインターフェース900は、
図9Aに示されるように、例示的な関数名902などの関数名を含む。関数名902は、現在許可が設定されている関数を指示している。いくつかの実施形態では、関数許可構成ユーザインターフェース900は、常時許容ボタン904、一度許容ボタン906、及び非許容ボタン908を更に備える。したがって、ユーザは、これらのボタンのうちの1つを選択して、関数の対応する許可を設定することができる。例えば、ユーザがユーザデータ取得関数のアクセス許可を編集しており、その関数を常時許容することを望む場合、ユーザは、常時許容ボタン904を選択し得る。代替的に、ユーザが、関数が現在の実行のためだけに許容されることを望む場合、ユーザは、関数が許容されるように、一度許容ボタン906を選択し得るが、関数の後続の実行が許容されなくてもよく、又は関数許可構成ユーザインターフェース900への追加のプロンプトをトリガし得る。更に、ユーザが関数を決して実行しないことを望む場合、非許容ボタン908を選択し得る。
【0074】
いくつかの実施形態では、
図9Aに描写されるように、関数許可構成ユーザインターフェース900は、関数が現在許容されていない場合、関数の実行時にユーザに提示され、それによって、ユーザに関数の許可設定を編集するように促すことができることを理解されたい。しかしながら、いくつかの実施形態では、プロンプトは、関数の最初の実行に対してのみアクティブ化され得、後続の実行は、プロンプトを提示することはない。
【0075】
いくつかの実施形態では、コンテキストメタデータは、関数が許容されるべきかどうかを判定するために使用され得る。そのような実施形態では、コンテキストメタデータは、許可、発呼者タイプ、発呼者ID、関数ID、ユーザID、トリガタイプ、トリガID、又は他の関数関連情報、例えば、チャネルIDを含み得る。したがって、管理者ユーザ又はアクセス権を有するユーザが、コンテキストメタデータに基づいて、特定のコンテキストにおける関数を許容及び拒否するために関数許可を構成できるように、関数許可構成ユーザインターフェース900を提供することが好ましい場合がある。
【0076】
加えて、いくつかの実施形態では、関数は、ユーザの役割に基づいて、又はユーザ間ベースで更に制限され得る。例えば、ユーザAは、第1及び第2の関数にアクセスし得、一方、ユーザBは、第1の関数にのみアクセスすることができる。ここで、管理者ユーザ又はアクセス権を有するユーザは、特定のユーザ、ユーザロール、又はユーザの他のグループに対する関数へのアクセスを許可又は取り消すために、関数許可構成ユーザインターフェース900上で関数許可を構成し得る。
【0077】
いくつかの実施形態では、関数許可を設定するためのより細かいアプローチが好ましい場合がある。したがって、
図9Bに示されるように、関数許可構成ユーザインターフェース900は、ユーザに提示され得る。そのような実施形態では、関数許可構成ユーザインターフェース900は、例えば、示されるように、「関数許可コンテキストを設定する」と読み得るテキスト記述910を含む。関数許可構成ユーザインターフェース900は、更に、ユーザによって定義され得るコンテキストメタデータのリストを含み得る。したがって、ユーザは、グループベースの通信システム内の特定のコンテキストに基づいて関数許可を設定し得る。
【0078】
いくつかの実施形態では、関数は、関数の実行中にアクセスを要求し得る。例えば、関数がユーザAの機密データを取得するようにトリガされる場合、関数は、関数がトリガされるときに、ユーザAから機密データへのアクセスを要求し得る。したがって、ユーザAは、関数へのアクセスを許容するか拒否するかのいずれかを選択し得る。ここで、関数は、ユーザAから応答が受信されるまで実行を一時停止し得、ユーザAが許容する場合、関数は、機密情報を継続して取得する。代替的に、ユーザAが関数を拒否する場合、関数は停止され得るか、又はエラーを返し得る。
【0079】
本発明は、添付の図面図に示された実施形態を参照して説明されたが、特許請求の範囲に記載された本発明の範囲から逸脱することなく、本明細書において等価物を採用し、置換することができることに留意されたい。
【0080】
このように本発明の様々な実施形態を説明してきたが、新規なものとして主張され、特許用語によって保護されることが望まれるものには、以下のものが含まれる。
【国際調査報告】