Nutzer authentifizieren

Agents haben normalerweise wenig Einblick in die Nutzer, mit denen sie kommunizieren, abgesehen von Informationen, die Nutzer während einer Unterhaltung zur Verfügung stellen. Agents können jedoch Nutzer mit OAuth authentifizieren, um die Nutzeridentität zu bestätigen, Unterhaltungen zu personalisieren und Aktionen im Namen von Nutzern auszuführen.

In diesem Unterhaltungsablauf entscheidet der Nutzer, seinem Konto Guthabenpunkte hinzuzufügen. Der Agent fordert den Nutzer auf, sich anzumelden, um die Identität des Nutzers zu validieren, bekannte Informationen zum Nutzer abzurufen und eine Bestellung für das Guthaben aufzugeben.

  1. Der Nutzer beginnt die Unterhaltung mit dem Agent.
  2. Sobald der Nutzer beginnt, eine Antwort einzugeben, sendet er ein Eingabeereignis an den Agent.

    {
      "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",
    }
    
  3. Der Nutzer sendet als Nachricht 5 Gutschriften zu meinem Konto.

    {
      "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",
    }
    
  4. Der Kundenservicemitarbeiter sendet eine Nachricht, wobei ich Ihnen helfen kann. Melden Sie sich in Ihrem Konto an, um fortzufahren und einen Vorschlag für eine Authentifizierungsanfrage zu erhalten.

    clientId und scopes werden vom OAuth-Anbieter definiert. Der Agent generiert den Wert codeChallenge gemäß den Anforderungen des OAuth-Anbieters.

    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'
      }
    }"
    
  5. Der Nutzer erhält die Nachricht, tippt auf den Vorschlag für die Authentifizierungsanfrage und meldet sich in seinem Konto an.

  6. Der Agent erhält eine Nachricht mit dem OAuth-Autorisierungscode im Feld authenticationResponse.code.

    {
      "agent": "brands/1111/agents/2222",
      "conversationId": "3333",
      "customAgentId": "oauth",
      "requestId": "1234567895",
      "authenticationResponse": {
        "code": "fkhoe541658sfk684d135j186mngkjdrt5425415a2s1dfa68s4edf",
        },
      }
      "sendTime": "2020-10-02T15:01:24.045123456Z",
    }
    
  7. Der Agent kommuniziert mit dem OAuth-Anbieter, tauscht den Autorisierungscode gegen ein Zugriffstoken aus und ruft die Kontoinformationen des Nutzers ab.

  8. Der Kundenservicemitarbeiter sendet "Vielen Dank für die Anmeldung. Sie haben derzeit 2 Guthabenpunkte. Zur Bestätigung möchten wir Ihrem Konto 5 Guthabenpunkte hinzufügen und Ihre Standardzahlungsmethode als Rechnung mit den Antwortvorschlägen "Ja" und "Nein" in Rechnung stellen.

    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'
      }
    }"
    
  9. Der Nutzer tippt auf die Antwort mit „Ja“.

    {
      "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",
    }
    
  10. Der Agent verarbeitet die Transaktion mit dem OAuth-Zugriffstoken und sendet dann die Nachricht ‚Sehr gut‘. Ich habe Ihrem Konto gerade 5 Guthabenpunkte hinzugefügt. Gibt es noch etwas, bei dem ich Ihnen helfen kann?

    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'
      }
    }"
    
  11. Der Nutzer sendet „Nein, danke“.

    {
      "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",
    }
    
  12. Der Kundenservicemitarbeiter sendet eine Nachricht, dass Sie sich mit uns in Verbindung gesetzt haben. Viele Grüße

    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'
      }
    }"