Skip to main content
Feedback

Creating a Sales Meeting Preparation agent with OAuth 2.0

The Customer Meeting Preparation agent uses delegated authorization to review upcoming customer meetings and gather opportunity information to help the sales team prepare for meetings and close deals. It analyzes the deal stage and opportunity information to provide suggestions on how to engage effectively with the client. 

You’ll use the following service in the Boomi Platform to build an AI agent:

  • icon Agentstudio

Prerequisites

Ensure you have the following services before building the agent:

  • a Calendar API, such as Google Calendar
  • a CRM (Customer Relationship Management) system with opportunity data, such as Salesforce

Agent overview

You can create AI agents that leverage delegated authorization, enabling agents to access personal data for productivity workflows when a user grants permission. 

In this example, you can build an AI agent that:

  • Analyzes your calendar events, including any customer meetings for the current day
  • Queries your CRM and pulls opportunities
  • Provides details on opportunities for any customers you are meeting with that day
  • Provides suggestions for next steps based on the current deal stage

diagram showing three steps to build the agent

Step 1: Configure OAuth Client ID and Secret for an External Client App in Salesforce

  1. In the Salesforce Setup menu, add an External Client App. Refer to Salesforce documentation on creating an external app.
  2. Configure settings for your app. In this example, we've applied the following settings:
    • Plugin policies: Set to All users can self-authorize.
    • OAuth Flows and External Client App Enhancements: Select Enable Client Credentials Flow.
    • Callback URL: Set to https://ai-agent-garden.datalake-prod.boomi.com/api/v1/oauth/callback.
    • OAuth Scopes: Set the following scopes:
      • Manage user data via APIs (api)
      • Perform requests at any time (refresh_token, offline_access)
      • Access Headless Registration API (user_registration_api)
      • Access the Salesforce API Platform (sfap_api)
    • Flow Enablement:
      • Select Enable Client Credentials Flow.
      • Select Enable Authorization Code and Credentials Flow.
    • Security:
      • Select Require secret for Web Server Flow
      • Select Require Secret for Refresh Token Flow
      • Select Require Proof Key for Code Exchange extension for Supported Authorization Flows
  3. Copy the Client ID and Secret to enter later in the API tool in Agentstudio.

Step 2: Configure OAuth Client ID and Secret for Google Calendar

  1. In Google Cloud Console, create a project for your AI agent. Refer to Google documentation on creating projects.
  2. Enable the Calendar API for your project. Refer to Enable APIs.
  3. Configure the OAuth consent screen and choose scopes. Refer to Configure OAuth Consent. In this example, we're using the following scopes:
    • /calendar.events.freebusy
    • /calendar.freebusy
    • /calendar.calendarlist.readonly
    • /calendar.readonly
    • /calendar.calendarlist
    • /calendar.calendars.readonly
    • /calendar.events.readonly
  4. Create an OAuth 2.0 Client ID as a Web application type. Refer to Create credentials.
  5. In Authorized Javascript origins, enter https://ai-agent-garden.datalake-prod.boomi.com.
  6. In Authorized redirect URIs, enter https://ai-agent-garden.datalake-prod.boomi.com/api/v1/oauth/callback.
  7. Copy the Client ID and Secret to enter in the API tool in Agentstudio.

Step 3: Build a meeting preparation agent

  1. Navigate to Agentstudio > Agent Garden > Agent Designer.

  2. Import the Meeting Preparation agent using a YAML file. This imports all the settings for the agent, including tools, personality, temperature, tasks, instructions, and guardrails. You can edit as needed to fit your business requirements. Refer to Importing an agent. Here is the YAML configuration to create the YAML file:

    Agent YAML for import
    metadata:
    exported_at: '2025-10-28T18:58:46Z'
    schema_version: '1.0'
    agents:
    - objective: Correlate calendar events with Salesforce opportunities to provide sales reps
    with comprehensive meeting preparation insights
    name: SalesSync
    personality_traits:
    voice_tone: Professional
    creativity: 50
    decisiveness: 90
    clarity: 95
    confidence: 85
    engagement: 88
    profile_picture:
    role: Default
    colour: Sunset
    image_id: img_location
    conversation_starters:
    - Can you help me prepare for my upcoming customer meetings?
    - What Salesforce opportunities are related to my today's calendar events?
    - Show me the details of potential deals for my scheduled meetings
    - What revenue potential exists for my current prospect meetings?
    tasks:
    - name: Retrieve Calendar Events
    objective: Fetch user's calendar events for the current day
    instructions:
    - Access user's calendar system
    - Extract all meetings scheduled for today
    - Collect customer names and meeting details
    tools:
    - name: CalendarEventsFinder
    type: OpenAPI
    requires_approval: false
    response_passthrough: false
    unique_name: calendareventsfinder_8186
    - name: Query Salesforce Opportunities
    objective: Retrieve open Salesforce opportunities
    instructions:
    - Connect to Salesforce CRM system
    - Filter opportunities to show only open/active deals
    - Extract account names, opportunity details, and potential revenue
    tools:
    - name: 'Get Salesforce Opportunity Info '
    type: OpenAPI
    requires_approval: false
    response_passthrough: false
    unique_name: get_salesforce_opportunity_info_copy_8187
    - name: Correlate Calendar and Opportunities
    objective: Match calendar meetings with corresponding Salesforce opportunities
    instructions:
    - Compare calendar customer names with Salesforce account names
    - Identify matching opportunities for each meeting
    - Gather detailed opportunity information
    tools: []
    - name: Prepare Meeting Insights
    objective: Generate comprehensive meeting preparation report
    instructions:
    - Compile opportunity details for each matched meeting
    - Include potential revenue information
    - Summarize key opportunity insights
    - Present a concise preparation brief for the sales representative
    tools: []
    guardrails:
    blocked_message: 'Sorry, I can only provide your calendar meeting information, customer
    account information, and opportunity sales information, including potential revenue. '
    system: false
    policies:
    - name: Legal Advice
    type: denied_topic
    configuration:
    description: Legal advice about contracts and sales agreements. Information about
    laws and what is legal or illegal.
    sample_phrases:
    - Can you draft a legal document or contract for me?
    - Can you draft a legally binding contract for me?
    - Can you provide a detailed legal strategy for my case?
    - Can you tell me if this specific action would be considered legal?
    agent_mode: conversational
    custom_variables:
    inference_configuration:
    performance_config:
    processing_mode: standard
    agent_io_schema_version: 1
    unique_name: salessync_6968
    tools:
    OpenAPI:
    - name: CalendarEventsFinder
    description: Retrieve Google Calendar events for a specific date with OAuth authentication
    input_parameters:
    - name: timeMin
    description: 'Start time for calendar events (format: YYYY-MM-DDTHH:MM:SSZ)'
    required: true
    type: string
    - name: timeMax
    description: 'End time for calendar events (format: YYYY-MM-DDTHH:MM:SSZ)'
    required: true
    type: string
    base_url: https://www.googleapis.com/calendar/v3
    path: /calendars/primary/events
    method: GET
    query_parameters:
    - name: timeMin
    input_parameter_name: timeMin
    - name: timeMax
    input_parameter_name: timeMax
    - name: singleEvents
    static_value: 'true'
    - name: orderBy
    static_value: startTime
    path_parameters: []
    headers: []
    authentication:
    type: oauth
    config:
    grant_type: authorization_code
    authorization_server_url: https://accounts.google.com/o/oauth2/v2/auth
    authorization_server_request_params: []
    access_token_url: https://oauth2.googleapis.com/token
    access_token_request_params: []
    client_id: ''
    client_secret: ''
    scopes: https://www.googleapis.com/auth/calendar
    unique_name: calendareventsfinder_8186
    - name: 'Get Salesforce Opportunity Info '
    description: 'Get Salesforce opportunity information using OAuth 2.0 authentication. '
    input_parameters: []
    base_url: https://enteryourinstancehere.my.salesforce.com/services/data/v64.0
    path: /query/
    method: GET
    query_parameters:
    - name: q
    static_value: SELECT+Id, Name, Account.Name, StageName, Amount, CloseDate FROM Opportunity
    WHERE IsClosed = false ORDER BY CloseDate DESC LIMIT 200
    path_parameters: []
    headers: []
    authentication:
    type: oauth
    config:
    grant_type: authorization_code
    authorization_server_url: https://enteryourinstancehere.my.salesforce.com/services/oauth2/authorize
    authorization_server_request_params: []
    access_token_url: https://enteryourinstancehere.my.salesforce.com/services/oauth2/token
    access_token_request_params: []
    client_id: ''
    client_secret: ''
    unique_name: get_salesforce_opportunity_info_copy_8187
    sources: {}
  3. In Tasks, edit the existing attached API tools by adding your OAuth Client ID and Secret.

  4. Test your agent in the test window with a conversation starter. For example, enter 'Can you help me prepare for my upcoming customer meetings?' The agent will ask you to sign in to your Google Calendar account and Salesforce account.

  5. Click Save & Continue.

  6. Select Deploy Agent. Start using the agent in the conversational user interface.

Here's an example of a possible output:

chat screen showing user input and output from agent

On this Page