イベントを送受信して会話を充実させる

ビジネス メッセージの会話では、イベントでメッセージ以外のコンテンツを伝え、ユーザーとエージェントの会話エクスペリエンスを強化および向上させることができます。ユーザーにとっては、イベントが会話内に通知として表示され、ユーザーが行う可能性のあるさまざまなアクションに基づいてトリガーされます。エージェントは Webhook でイベントを受信し、API 呼び出しでイベントを送信します。

エージェントは、ユーザーが開始したイベントを認識し、それに適切に応答できるようにする必要があります。たとえば、ユーザーが人間のエージェントをリクエストしても、エージェントがそのリクエストに対して肯定的または否定的に反応できない場合は、ユーザー エクスペリエンスが低下します。

イベントタイプ

各イベントは、それぞれ特定のタイプに属します。

  • 人間のエージェントによるリクエスト イベントは、ユーザーがライブ対応のエージェントと直接話したいことを示します。

    エージェントが会話を人間の担当者に遷移させることができる場合は、代表者参加イベントを送信し、その後の人間の代表者からメッセージを送信します。

    エージェントが会話を人間の担当者に移行できない場合は、メッセージを送信して人間のエージェントが利用可能になったときにユーザーに通知します。

  • 代表的な参加/左側イベントは、ライブ エージェントが会話に参加または終了したタイミングをユーザーに知らせます。これらのイベントによって会話に通知が表示され、ユーザーの反応や質問の種類に関するユーザーの期待値が設定しやすくなります。

    代表者の参加/退出

  • 入力中イベントは、ユーザーまたはエージェントが入力中であることを示しています。

    ユーザー向けに、ブール値 isTyping が入力ステータスを示します。ステータスが変更されるたびに、新しいイベントがトリガーされます。

    エージェントは、TYPING_STARTED イベントと TYPING_STOPPED イベントを送信して、会話内に入力インジケーターを表示できます。エージェントからイベントを入力すると、人間の担当者がレスポンスを作成している、またはバックエンドの自動化で質問やリクエストが処理されていることをお客様に伝えます。

    入力中インジケーター

イベントを送信する

イベントを送信するには、次のコマンドを実行します。次のアイテムを置き換えます。

  • CONVERSATION_ID は、アンケートを送信する会話の識別子に置き換えます。
  • EVENT_ID: イベントの一意の ID に置き換えます。
  • PATH_TO_SERVICE_ACCOUNT_KEY は、マシン上のサービス アカウント キーのパスに置き換えます。
  • EVENT_TYPEEventType の値に置き換えます。
  • REPRESENTATIVE_NAME は、イベントを作成するライブ エージェントまたは自動化の名前を表示します。
  • REPRESENTATIVE_TYPERepresentativeType の値に置き換えます。
curl -X POST "https://businessmessages.googleapis.com/v1/conversations/CONVERSATION_ID/events?eventId=EVENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/business-messages" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY businessmessages`" \
-d "{
  'eventType': 'EVENT_TYPE',
  'representative': {
    'avatarImage': 'REPRESENTATIVE_AVATAR_URL',
    'displayName': 'REPRESENTATIVE_NAME',
    'representativeType': 'REPRESENTATIVE_TYPE',
  },
}"

形式と値のオプションについては、conversations.events をご覧ください。

例: 結合された代表的なイベントを送信する

# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at

#     https://www.apache.org/licenses/LICENSE-2.0

# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# This code sends a REPRESENTATIVE_JOINED event to the user.
# Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/events#send

# Replace the __CONVERSATION_ID__ with a conversation id that you can send messages to
# Make sure a service account key file exists at ./service_account_key.json

curl -X POST "https://businessmessages.googleapis.com/v1/conversations/__CONVERSATION_ID__/events?eventId=6a0af2c6-787d-4097-870d-93fe20351747" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/business-messages" \
-H "$(oauth2l header --json ./service_account_key.json businessmessages)" \
-d "{
  'eventType': 'REPRESENTATIVE_JOINED',
  'representative': {
    'avatarImage': 'https://developers.google.com/identity/images/g-logo.png',
    'displayName': 'Chatbot',
    'representativeType': 'HUMAN'
  }
}"

イベントを受信する

ユーザーがデバイスでイベントをトリガーすると、エージェントは Webhook でイベントを受け取ります。メッセージの受信と同じ方法でイベントを受信して処理します。

ユーザー開始イベントの形式は次のとおりです。

{
  "agent": "brands/BRAND_ID/agents/AGENT_ID",
  "requestId": "REQUEST_ID",
  "conversationId": "CONVERSATION_ID",
  "customAgentId": "CUSTOM_AGENT_ID",
  "sendTime": "SEND_TIME",
  "userStatus": {
    "isTyping": "BOOLEAN",
    "requestedLiveAgent": "BOOLEAN",
    "createTime": "CREATION_TIME",
  }
}

形式と値のオプションについては、UserMessage をご覧ください。