Workplace用ボット

グループとチャットのWorkplace用ボットを構築する

概要

Workplaceのカスタム統合により、グループおよびチャットの参加者とやり取りできる便利なボットを作成できるようになりました。

自動でコンテンツをグループに投稿したり、追加情報を使用して質問に応答したり、投稿のコメントでメンションされたときにアクションを実行したりするボットを構築できます。また、ワークチャットの参加者と会話したり、リアルタイムで情報を提供したり、クイック返信や固定メニューなどの構造化された会話要素を使用してリクエストを処理したりできるボットも構築できます。

コミュニティ用のボットを構築するには、システム管理者の役割が必要です。

Workplaceコミュニティの管理者でない場合、ボットを構築するには管理者の協力を得る必要があります。

ページとしてのボット

Workplaceでは、Messengerプラットフォームと同様に、ボットはページとして表現されます。カスタム統合アプリを作成すると、自動的にページが作成されます。Workplaceコミュニティの参加者は、このページでボットを見つけてやり取りできます。

ボットページは組織内で公開されるため、Workplaceコミュニティのメンバーは誰でもボットの表示、タグ付け、メッセージ送信を行うことができます。ただし、ボットの作成時に選択したアクセス許可レベルによっては、Workplace上のコンテンツの一部を表示または操作できない場合があります。

例えば、ボットにグループコンテンツの読み取りアクセス許可がある場合は、グループ内のコンテンツを表示できます。ボットにグループへの投稿アクセス許可がない場合は、どのグループのコンテンツにも返信できません。

また、利用者がワークチャットでボットを見つけてメッセージを送信できるのは、ボットがメンバーとのメッセージのやり取りのアクセス許可を持っている場合のみです。

グループのボット

グループでは、ボットは利用者ができることの大半を実行できます。つまり、新しいコンテンツを投稿したり、新しい情報を使用してコンテンツにコメントしたり、投稿に「いいね!」して認知や同意を示したりするボットを構築できます。

ボットは、利用者の注意を引くために@メンションすることも、@メンションされて特定のワークフローを開始したり質問したりすることもできます。

最後に、ボットはグループおよび@メンションWebhookをサブスクリプション登録できます。これにより、コンテンツをモニタリングして柔軟な方法でユーザーと対話することが可能になります。

チャットのボット

グループ内のボットは、利用者のグループで非同期的に情報を取得したり共有したりできます。チャット内のボットは、1人の利用者または定義済みの利用者グループとのリアルタイムの直接的なやり取りに適しています。

たとえば、チャットボットを使用すると、面接や会議などのイベント予定に基づいて、重要なリマインダーや通知を利用者に送信できます。また、ワークチャットボットを使用すると、会話を通してユーザーとエンゲージし、受け取ったフィードバックに応じてフォローアップアクションを実行できます。

このインタラクションモデルは、Messengerプラットフォームで使用されているのと同じコンセプトに基づいています。そのため、ワークチャットボットは、固定メニュークイック返信テンプレートなどの機能を使用して、ユーザーエクスペリエンスを向上させることができます。

ボットとユーザー間のチャット

ボットが任意のメンバーへのメッセージ送信アクセス許可を持っている場合、利用者のメールアドレスまたはWorkplace IDを使用して、Messenger送信APIによりWorkplaceの利用者にダイレクトメッセージを送信できます。

新規メッセージ自動入力のボット

任意のメンバーへのメッセージ送信アクセス許可がある場合は、ボットをWorkplaceチャット画面の自動入力に表示することもできます。

新規メッセージ自動入力のボット

ページメッセージWebhookをサブスクリプション登録すると、ユーザーがボットにメッセージを送信したときに、ボットは通知を受け取ります。これにより、送信と受信を組み合わせて会話フローを構築することが可能になります。

ボットとユーザー間の会話

ボットとグループ間のチャット

任意のメンバーへのメッセージ送信アクセス許可とグループチャットボットアクセス許可を持つボットは、参加者が複数のグループチャットスレッドを作成し管理することができ、そのスレッドに参加することもできます。ボットは、受信者のリストを指定することにより、新しいグループスレッドを作成できます。また、スレッドの名前を変更して、特定のトピックに関する特定の参加者とのチャットディスカッションを作成できます。

ボットによって作成された、特定の参加者からなる名前付きスレッド。

グループチャットのサポートを有効にすると、既存のグループチャットスレッドの[メンバーを追加]自動入力にボットが表示されます。これにより、ボットはそのスレッド内で利用者から送信されたメッセージごとにWebhookを受信し、thread IDを使用してそのスレッドに返信できます。

グループチャットにボットを追加し、続いてボットに@メンションする

新しい名前付きスレッドを作成する

特定の受信者からなる新しいスレッドを作成するには、次のように、recipient IDsの配列と初期messageペイロードを指定して、/me/messagesエンドポイントにPOSTリクエストを送信します:

POST /me/messages
{
  "recipient": {
    "ids": [<user_ids>]
  },
  "message": <message_payload>
}

フォローアップメッセージで使用できるthread IDを含む応答ペイロードが返されます。

もう一度同じ受信者リストを指定して同じエンドポイントを使用すると、新しいスレッドが作成されます。作成済みのスレッドにフォローアップメッセージを送信するには、次のように、recipientペイロード内のthread_idを使用して/me/messagesエンドポイントにPOSTリクエストを送信します:

POST /me/messages
{
  "recipient": {
    "thread_key": <thread_id>
  },
  "message": <message_payload>
}

ボットによって作成されたスレッドの名前を変更するには、次のように、/{thread}/threadnameエッジにPOSTリクエストを送信します:

POST /t_<thread_id>/threadname
{
  "name": "new name"
}

エッジのパスのthread_idの前に「t_」を付ける必要があることに注意してください。

次のように、/{thread}/participantsエッジにPOSTリクエストを送信してスレッドに参加者を追加したり、DELETEリクエストを送信してスレッドから参加者を削除したりすることもできます。

POST t_<thread_id>/participants
{
  "to": [<user_ids>]
}

DELETE t_<thread_id>/participants
{
  "to": [<user_ids>]
}

/{thread}/participantsエッジでの操作は、統合によって作成されたスレッドでのみ実行できます。

スレッドでメンションされる

メッセージでボットがメンションされると、次のペイロードのように、そのメッセージでタグ付けされたメンバーのリストがWebhooksから送信されます。

{
    "object":"page",
    "entry":[{
        "id":"746230239054322",
        "time":1539281406974,
        "messaging":[{
            ...
            "message":{
                "mid":"<message id>",
                "seq":2192,
                "text":"@Edu Gomes @Example Bot What's 2+2?"
            },
            "mentions":[{
                "offset":0,
                "length":10,
                "id":"100017376437045"
            },
            {
                "offset":11,
                "length":12,
                "id":"746230239054322"
            }]
        }]
    }]
} 

ボットプラットフォームパートナー

Workplaceには、Workplaceでのボットのサポートをすでに構築しているボットプラットフォームパートナーが数多く存在します。そうしたパートナーのリストは、こちらで確認できます。これらのプラットフォームのいずれかを利用すると、コードを1行も記述せずに強力なボットを構築できます。

ベストプラクティス

適切なチャネルを使用する

ボットでグループでのインタラクションとチャットでのインタラクションのどちらを構築するかを決定する際は、ボットがどのような場合に最も役立つかを検討することが重要です。

  • 複数の人が同時にやり取りする可能性があるボット、または複数の人が見ることができるコンテンツを投稿するボットを構築する場合は、グループに投稿し、グループ内の投稿へのコメントとメンションに応答するボットを構築するのが適切です。
  • 緊急の情報、迅速なフォローアップが必要な投稿、非公開でやり取りする必要がある会話について誰かにアラートを送る必要があるボットを構築する場合は、ボットでワークチャットの会話をサポートする必要があります。

単一のアプリでこれらのチャネルの両方を処理できます。たとえばヘルプデスクボットは、あるときはワークチャットでメッセージを受信し、別のときはグループに投稿して返信を受け取る必要があります。

ボットへのディープリンク

https://w.m.me/{page-id}のリンクフォーマットを使って、Workplace上のチャットボットに直接リンクします。現在、Workplaceチャットでは、ウェブ、Android、iOSを使用している場合のみこの機能がサポートされています。Workplaceチャットアプリがインストールされたモバイルプラットフォームの場合、アプリ内で直接リンクが開きます。

リファーラルパラメーター

リファーラルパラメーターを使用して、リンクにより多くの情報を盛り込むこともできます。これにより、ユーザーがどのユーザーをクリックしてボットにたどり着いたかに基づいて、ボットにカスタムアクションを実行させる、といったことが可能になります。

この機能を使用するには、https://w.m.me/{page-id}?ref={referral_parameter}のリンクフォーマットを利用してください。この機能は、Messengerプラットフォームと同様の方法で実装されます。詳しくは、Messengerドキュメントをご覧ください。

関連するWebhookフィールドはmessaging_referralsであり、新しいサブスクリプションが必要になります。以前、WorkplaceアプリはこのWebhookフィールドを使用できませんでしたが、今では通常の方法でサブスクリプション登録できるようになりました。

Webhookペイロードは、WorkplaceではページスコープIDではなくアプリスコープIDを使用するという従来の相違点を除いて、Messengerと同じフォーマットになります。さらにWorkplaceは、WebhookにコミュニティIDを指定できるコミュニティフィールドも提供します。

グループでのインタラクション

アプリがWebhookをサブスクリプション登録すると、グループの投稿またはコメントでメンションされたときに、ボットは通知を受け取ります。ボットがメンションに対してタイムリーに応答することが重要です。ボットが返信する前にリクエストを処理する必要がある場合は、コメントに「いいね!」して、メンションされたことをボットが認識していることを相手に知らせるのが効果的です。

次に、コメントでメンションされた後に情報を提供する場合は、スレッド化された返信を追加してその後のグループの会話の流れが途切れないようにします。

ボットが元の投稿者に情報を提供する必要がある場合は、投稿自体にコメントを追加して、投稿者にも通知が届くようにします。

チャットでのインタラクション

ワークチャット内のボットのインタラクションでは、Messengerプラットフォームと同様の機能がサポートされます。そうした機能には、ボットの会話に決定木を実装するのに役立つクイック返信ボタンとテンプレートがあります。

これらを利用すると、便利なワークフローを非常に簡単に構築でき、必要な作業量が削減されます。高度な自然言語処理は不要です。したがって、グローバルな社員向けボットを構築する場合、国際化が大幅に簡素化されます。