Агенты обычно имеют мало информации о пользователях, с которыми они общаются, за исключением информации, которую пользователи предоставляют во время разговора. Однако агенты могут аутентифицировать пользователей с помощью OAuth, чтобы подтвердить личность пользователя, персонализировать разговоры и выполнять действия от имени пользователей.
В этом потоке разговора пользователь решает добавить кредиты в свою учетную запись, и агент предлагает пользователю войти в систему, чтобы подтвердить личность пользователя, получить известную информацию о пользователе и разместить заказ на кредиты.
- Пользователь начинает разговор с агентом.
Как только пользователь начинает вводить ответ, он отправляет агенту событие ввода.
{
"agent": "brands/1111/agents/2222",
"conversationId": "3333",
"customAgentId": "oauth",
"requestId": "1234567890",
"userStatus": {
"isTyping": "true",
"createTime": "2020-10-02T15:01:23.045123456Z",
},
"sendTime": "2020-10-02T15:01:24.045123456Z",
}Пользователь отправляет сообщение «Привет, я хотел бы добавить 5 кредитов на свой счет».
{
"agent": "brands/1111/agents/2222",
"conversationId": "3333",
"customAgentId": "oauth",
"requestId": "123123123",
"message": {
"messageId": "4444",
"name": "conversations/12345/messages/67890",
"text": "Hi, I'd like to add 5 credits to my account",
"createTime": "2020-10-02T15:05:23.045123456Z",
},
"context": {
"entryPoint": "PLACESHEET",
"userInfo": {
"displayName": "Michael",
"userDeviceLocale": "en",
},
"resolvedLocale": "en",
}
"sendTime": "2020-10-02T15:05:24.045123456Z",
}Агент отправляет сообщение: «Я могу вам с этим помочь. Войдите в свою учетную запись, чтобы продолжить». вместе с предложением запроса аутентификации.
clientId
иscopes
определяются поставщиком OAuth. Агент генерирует значениеcodeChallenge
в соответствии с требованиями провайдера OAuth.curl -X POST "https://businessmessages.googleapis.com/v1/conversations/3333/messages" \
-H "Content-Type: application/json" \
-H "`oauth2l header --json path/to/service/account/key.json businessmessages`" \
-d "{
'messageId': '5555',
'text': 'I can help you with that. Sign into your account to continue.',
'suggestions': [
{
'AuthenticationRequest': {
'clientId': 'oauth_client_id_1234567890',
'codeChallenge': 'code_challenge',
'scopes': [
'account',
'billing',
],
},
},
],
'representative': {
'avatarImage': 'https://oauth.agent/bot-avatar.jpg',
'displayName': 'OAuth Agent',
'representativeType': 'BOT'
}
}"Пользователь получает сообщение, нажимает на предложение запроса аутентификации и входит в свою учетную запись.
Агент получает сообщение с кодом авторизации OAuth в поле
authenticationResponse.code
.{
"agent": "brands/1111/agents/2222",
"conversationId": "3333",
"customAgentId": "oauth",
"requestId": "1234567895",
"authenticationResponse": {
"code": "fkhoe541658sfk684d135j186mngkjdrt5425415a2s1dfa68s4edf",
},
}
"sendTime": "2020-10-02T15:01:24.045123456Z",
}Агент связывается с провайдером OAuth, обменивая код авторизации на токен доступа и получая информацию об учетной записи пользователя.
Агент отправляет сообщение: «Спасибо за вход. В настоящее время у вас есть 2 кредита. Для подтверждения вы хотите, чтобы я добавил 5 кредитов в вашу учетную запись и выставил счет с помощью метода оплаты по умолчанию?» в виде сообщения с «Да» и «Нет» в качестве предлагаемых ответов.
curl -X POST "https://businessmessages.googleapis.com/v1/conversations/3333/messages" \
-H "Content-Type: application/json" \
-H "`oauth2l header --json path/to/service/account/key.json businessmessages`" \
-d "{
'messageId': '7777',
'text': 'Thanks for signing in. You currently have 2 credits. To confirm, you'd like to me to add 5 credits to your account and bill your default payment method?',
'suggestions': [
{
'reply': {
'text': 'Yes',
'postbackData': 'process-transaction',
},
},
{
'reply': {
'text': 'No',
'postbackData': 'cancel-transaction',
},
},
],
'representative': {
'avatarImage': 'https://oauth.agent/bot-avatar.jpg',
'displayName': 'OAuth Agent',
'representativeType': 'BOT'
}
}"Пользователь нажимает на предложенный ответ «Да».
{
"agent": "brands/1111/agents/2222",
"conversationId": "3333",
"customAgentId": "oauth",
"requestId": "1234567898",
"suggestionResponse": {
"message": "conversations/333/messages/8888",
"postbackData": "process-transaction",
"createTime": "2020-10-02T15:01:26.045123456Z",
"text": "Yes",
"suggestionType": "REPLY",
}
"sendTime": "2020-10-02T15:01:27.045123456Z",
}Агент обрабатывает транзакцию, используя токен доступа OAuth, а затем отправляет сообщение «Отлично. Я только что добавил 5 кредитов на ваш счет. Чем еще я могу вам помочь?».
curl -X POST "https://businessmessages.googleapis.com/v1/conversations/3333/messages" \
-H "Content-Type: application/json" \
-H "`oauth2l header --json path/to/service/account/key.json businessmessages`" \
-d "{
'messageId': '9999',
'text': 'Great. I just added 5 credits to your account. Is there anything else I can help you with?',
'representative': {
'avatarImage': 'https://oauth.agent/bot-avatar.jpg',
'displayName': 'OAuth Agent',
'representativeType': 'BOT'
}
}"Пользователь отправляет «Нет, спасибо».
{
"agent": "brands/1111/agents/2222",
"conversationId": "3333",
"customAgentId": "oauth",
"requestId": "123123133",
"message": {
"messageId": "4444",
"name": "conversations/12345/messages/101010",
"text": "No, thanks",
"createTime": "2020-10-02T15:05:23.045123456Z",
},
"context": {
"entryPoint": "PLACESHEET",
"userInfo": {
"displayName": "Michael",
"userDeviceLocale": "en",
},
"resolvedLocale": "en",
}
"sendTime": "2020-10-02T15:05:28.045123456Z",
}Агент отправляет сообщение: «Спасибо, что связались с нами. Хорошего дня!»
curl -X POST "https://businessmessages.googleapis.com/v1/conversations/3333/messages" \
-H "Content-Type: application/json" \
-H "`oauth2l header --json path/to/service/account/key.json businessmessages`" \
-d "{
'messageId': '11111111',
'text': 'Thanks for contacting us. Have a great day!',
'representative': {
'avatarImage': 'https://oauth.agent/bot-avatar.jpg',
'displayName': 'OAuth Agent',
'representativeType': 'BOT'
}
}"