אימות המשתמש

לסוכנים בדרך כלל יש מעט תובנות על המשתמשים שאיתם הם מתקשרים מהמידע שמשתמשים מספקים במהלך שיחה. אבל הנציגים יכולים אימות משתמשים באמצעות OAuth כדי לאשר את זהות המשתמשים, להתאים אישית שיחות ולבצע פעולות בשם המשתמשים של משתמשים.

בתהליך השיחה הזה, המשתמשים בוחרים להוסיף קרדיטים לחשבון. הסוכן מבקש מהמשתמש להיכנס כדי לאמת את זהות המשתמש, לאחזר ידוע על המשתמש, ולבצע הזמנה של הזיכויים.

  1. המשתמש מתחיל את השיחה עם הנציג.
  2. ברגע שהמשתמש מתחיל להקליד תשובה, הוא שולח אירוע הקלדה נציג של Google.

    {
      "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. המשתמש שולח הודעה: "היי, אני רוצה להוסיף 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",
    }
    
  4. הנציג ישלח לך את ההודעה "אוכל לעזור לך בכך. עליך להיכנס לחשבון שלך כדי המשך". יחד עם הצעה לבקשת אימות.

    ההגדרות clientId ו-scopes מוגדרות על ידי ספק ה-OAuth. הנציג יוצר את הערך codeChallenge בהתאם בדרישות שלנו.

    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. המשתמש מקבל את ההודעה, מקיש על ההצעה לבקשת אימות. ונכנסים לחשבון.

  6. הנציג יקבל הודעה עם קוד ההרשאה של OAuth שדה authenticationResponse.code.

    {
      "agent": "brands/1111/agents/2222",
      "conversationId": "3333",
      "customAgentId": "oauth",
      "requestId": "1234567895",
      "authenticationResponse": {
        "code": "fkhoe541658sfk684d135j186mngkjdrt5425415a2s1dfa68s4edf",
        },
      }
      "sendTime": "2020-10-02T15:01:24.045123456Z",
    }
    
  7. הנציג מתקשר עם ספק ה-OAuth ומחליף את ההרשאה לאסימון גישה, ולאחזר את פרטי החשבון של המשתמש.

  8. הנציג שולח את ההודעה 'תודה שנכנסת לחשבון. יש לך כרגע 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'
      }
    }"
    
  9. המשתמש מקיש על 'כן'. הצעה לתשובה.

    {
      "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. הנציג מעבד את הטרנזקציה באמצעות אסימון הגישה ל-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'
      }
    }"
    
  11. המשתמש שולח את ההודעה 'לא, תודה'.

    {
      "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. הנציג ישלח לנו את ההודעה "תודה שפנית אלינו. שיהיה לך יום מצוין!"

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