LogoLogo
Changelog
18.5
18.5
  • Welcome
    • Welcome to Airkit 👋
    • Quickstart
  • Concepts
    • Sessions
      • Linking to Sessions
    • Actors
      • Conversations with Actors
  • Tutorials
    • Building A Contact Form
      • Building the Web UI
      • Building the Database
      • Finalizing the App
      • Connecting Forms to Salesforce
    • Styles, Themes, and Templates
      • Changing the header
      • Changing the Theme
      • Using a custom font
      • Using Animations
    • Multi-Page Form
      • Creating the App Object in AirData
      • Building the Form’s UI
      • Creating the Data Flow to insert data
      • Connecting the Data Flow to the UI
      • Previewing and Publishing the app
    • Scheduling and Follow-Up App
      • Collecting Contact Information
      • Creating Appointment Times
      • Saving Appointment Information
      • Scheduling Appointment Reminder
      • Automating Proactive Follow-Up
      • Requesting Feedback
    • Custom Integrations (Petfinder App)
      • Querying the Petfinder API
      • Displaying Petfinder Data
  • Platform
    • Console
      • Apps
      • Activity
      • App Health
      • Datastores
      • Integrations
      • Conversations
      • Resources
      • API
      • Settings
    • Studio
      • Builder Bar
        • Triggers Builder
        • Web Flows Builder
        • Chat Bots Builder
        • Answer Flows Builder
        • Voice Bots Builder
        • Connections Builder
        • Notifications Builder
        • AirData Builder
        • Media Library
        • Theme Builder
        • Schedules Builder
        • Settings
      • App Preview
      • Data Flows
      • Variable Tree
      • Data Model Editor
      • Events
        • Session Started Events
        • Trigger Events
        • Control Events
        • Session Events
        • Activity Group Events
        • Action Chains
  • Data and Integrations
    • Working with Data
      • Variable Namespaces
      • Standard Session Data
      • AirData
        • AirData App Objects
        • Datastores
        • Identity Objects
        • Place Objects
        • Schedule Objects
      • Airscript Quickstart
        • Working with Dates and Times
        • Working with Missing Values
        • Working with URLs and Base64
      • Pull Values from Lists and Objects
        • Path Expressions
        • Query Expressions
      • Making Forms from Data Models
    • Integrations
      • First Party Integrations
        • Creating A Salesforce Lead
        • Creating a Zendesk Ticket
        • Creating SFTP Credentials
        • Swagger Schema Validation
        • First Party Integration Reference
          • Airtable Integration
          • Genesys Widget Integration
          • Google Integration
          • Guidewire Integration
          • Hubspot Integration
          • Kustomer Integration
          • MX Integration
          • Plaid Integration
          • Salesforce Integration
          • SendGrid Integration
          • SFTP Integration
          • Shopify Integration
          • Stripe Integration
          • Twilio Integration
          • Zendesk Integration
      • Custom Integrations
        • OAuth 2.0
        • API Token
        • HTTP Basic Auth
        • Custom Token
        • SFTP
        • Examples: Twitter and Giphy
      • App APIs
        • Building an App API
      • Subscriptions (Web Hooks)
  • Texts, Calls and Emails
    • SMS
      • SMS Notification Basics
      • Chat Bot Basics
      • Texting Journey Links
      • Data from Inbound Calls/SMS
      • Connecting Twilio Numbers
    • Emails
      • Email Notification Basics
      • Sending Emails by Data Operation
      • Connecting Email Addresses
    • Voice Bots
      • Voice Bot Basics
    • Conversation Chat Bots
      • Setting Up Answer Groups
      • Configuring Conversation Chat Bots
        • Salesforce Relays
        • Kustomer Relays
  • Web Apps
    • Forms
      • Displaying Controls Dynamically
      • Repeating Elements
      • Prefilling Forms
      • Validation of User Data
      • Capture Secure User Data
      • Progress Bars
      • Dropdown Menus
      • Electronic Signatures
    • Calendars
      • Customizing Schedule Availability
      • Using Availability Schedules
      • Rescheduling Deflected Calls
      • Integrating to External Calendars
    • Maps and Addresses
      • Maps
      • Addresses
      • User's Current Location
      • Address Search Map Binding
    • Payments
      • Creating a Stripe Integration
    • Timers and Reminders
      • Setting Timers
      • Setting up Periodic Tasks
    • PDFs
      • Creating a PDF
      • Working with Existing PDFs
      • Adding Assets to PDF
    • Assets and Media
      • Using the File Upload Web Control
      • Working with Files and Media
      • Assets and Data Operations
      • Sending Assets to Remote Servers
    • Styling Overview
      • Web Control Styling Properties
        • Animations
      • Themes and Control Variants
        • Importing and Exporting Themes
      • Working with Custom Assets
      • Page Layouts
        • Creating an App Header
    • Publishing
      • Publish and Manage Deployments
      • Configure Application Resources
      • Editing an Application
      • Importing/Exporting Apps
      • Tying Variables to Deployments
    • Advanced
      • Custom Controls
      • Creating Custom Functions
    • Accessibility
      • Accessibility in Airkit
      • Connecting Labels to Input Controls
  • Authentication
    • SAML Authentication
    • OAuth 2.0 - Google
    • OAuth 2.0 - Okta
    • OAuth 2.0 - Auth0
    • Azure AD B2C
    • Authentication Apps and Secure Apps
  • Embeds
    • SDK Overview
      • SDK Quickstart
      • SDK Authentication
      • Passing Data
      • Configuration
      • Configuration Examples
      • Airkit Lightning Component (Salesforce)
  • Analytics and Administration
    • Airkit Organizations
    • Adding Users to Airkit
    • User Roles
      • Working with Custom Roles
    • JIT Provisioning for an Organization
    • SAML SSO for an Organization
    • Managing the Application Lifecycle
    • Environments
      • Environmental Governance
    • Getting Application Metadata
    • Custom Domains
    • Analytics Overview
      • App Events to Splunk
      • App Events to AWS S3 Buckets
      • Audit Logs to AWS S3 Buckets
      • View Data in Activity Explorer
      • Snowflake Analytics Schema
      • Power BI
      • Heap and GTM Integrations
        • Setting up Analytics with GTM
        • Setting up Analytics with Heap
    • Error Management
      • Logging Errors
      • Setting up Email Notifiers
      • Integrating Error Notifiers to Slack
  • Security and Compliance
    • App Security FAQ
    • Data Masking and Auditing
    • IP Ranges
    • Encrypting Data
    • SSL Auth
    • TCPA
    • Cookie Policies
    • Supported Browsers
    • Realms
  • Reference Docs
    • Reference Documentation Overview
    • Airscript
      • Text Functions
        • CAPITALIZE
        • CONCAT
        • ISSTRING
        • LOWERCASE
        • PADSTRING
        • REPLACE
        • REPT
        • SPLIT
        • STRING_COMPARE
        • STRING_FIND
        • STRIP
        • SUBSTITUTE
        • SUBSTRING
        • TITLECASE
        • TRIM
        • UPPERCASE
      • DateTime Functions
        • ADD_TO_DATE
        • ADD_TO_DATETIME
        • DATE
        • DATETIME
        • DATETIME_DELTA
        • DATETIME_FROM_FORMAT
        • DATETIME_FROM_TIMESTAMP
        • DATE_DELTA
        • DATE_FROM_DATETIME
        • DATE_FROM_FORMAT
        • DAY
        • DAYS
        • FORMAT_DATE
        • FORMAT_DATETIME
        • FORMAT_TIME
        • HOUR
        • ISO_WEEK
        • MINUTE
        • MONTH
        • NOW
        • SECOND
        • SUBTRACT_FROM_DATE
        • SUBTRACT_FROM_DATETIME
        • TIME
        • TIMESTAMP_FROM_DATETIME
        • TIME_DELTA
        • TIME_FROM_DATETIME
        • TIME_FROM_FORMAT
        • TODAY
        • UPDATE_DATE
        • UPDATE_DATETIME
        • UPDATE_DAY
        • UPDATE_HOUR
        • UPDATE_MILLISECOND
        • UPDATE_MINUTE
        • UPDATE_MONTH
        • UPDATE_SECOND
        • UPDATE_TIME
        • UPDATE_TIMEZONE
        • UPDATE_YEAR
        • WEEK
        • WEEKDAY
        • YEAR
      • List Functions
        • CONTAINS
        • FIRST
        • FLAT
        • JOIN
        • LAST
        • LENGTH
        • REMOVE_EMPTY
        • REVERSE
        • SHUFFLE
      • Object Functions
        • KEYS
        • MERGE_OBJECTS
        • OBJECT_TO_SOAP
        • OBJECT_TO_XML
        • SOAP_TO_OBJECT
        • SOAP_HEADER_TO_OBJECT
        • VALUES
        • XML_TO_OBJECT
      • Math Functions
        • ABS
        • ACOS
        • ACOSH
        • ACOT
        • ACOTH
        • ASIN
        • ASINH
        • ATAN
        • ATAN2
        • ATANH
        • CEILING
        • COMBIN
        • COMBINA
        • COS
        • COSH
        • COT
        • COTH
        • CSC
        • CSCH
        • DEGREES
        • EVEN
        • EXP
        • FACT
        • FACTDOUBLE
        • FLOOR
        • GCD
        • ISEVEN
        • ISNUMBER
        • ISODD
        • LATLNGDISTANCE
        • LCM
        • LN
        • LOG
        • MAX
        • MIN
        • MROUND
        • MULTINOMIAL
        • ODD
        • PI
        • POWER
        • PRODUCT
        • RADIANS
        • RANDOM
        • RANGE
        • ROUND
        • ROUNDDOWN
        • ROUNDUP
        • SEC
        • SECH
        • SIGN
        • SIN
        • SINH
        • SQRT
        • SQRTPI
        • SUM
        • SUMSQ
        • TAN
        • TANH
        • TRUNC
      • Conditional Functions
        • EQUAL
        • IF
        • ISEMPTY
        • ISNOTEMPTY
        • NOT
      • Currency Functions
        • CURRENCY
        • FORMAT_CURRENCY
        • PARSE_CURRENCY
      • Phone Functions
        • FORMAT_PHONE
        • ISPHONE
        • PARSE_PHONE
      • Email Functions
        • ISEMAIL
      • Number Formatting Functions
        • ARABIC
        • FORMAT_NUMBER
        • PARSE_NUMBER
        • ROMAN
      • Data Type Functions
        • FROM_JSON
        • TO_JSON
        • TYPEOF
      • Asset Functions
        • ASSET_SIZE
        • ASSET_STATE
        • ASSET_THUMBNAIL_URL
        • ASSET_TO_URI
        • ASSET_TYPE
        • URI_TO_ASSET
      • Encoding Functions
        • BASE
        • BASE64_DECODE
        • BASE64_ENCODE
        • HMAC_MD5
        • HMAC_SHA1
        • HMAC_SHA256
        • MD5
        • SHA1
        • SHA256
        • URL_DECODE
        • URL_ENCODE
        • UUID
        • VALUE_OF
      • Error Handling Functions
        • THROW
        • TRY
      • Form and Validation Functions
        • FIRST_VALIDATION
        • RUN_VALIDATIONS
      • Arithmetic Operators
        • Addition (+)
        • Subtraction (-)
        • Multiplication (*)
        • Division (/)
        • Remainder (%)
      • Comparison Operators
        • Equality (=)
        • Inequality (<>, !=)
        • Ordering (<, <=, > , >=)
      • Logical Operators
        • AND
        • OR
        • XOR
        • Null Coalescing Operator (??)
      • Advanced Expressions
        • LET...IN
        • User Defined Functions
    • Web Controls
      • Button
      • Checkbox
      • Chat
      • Simple Checkbox List
      • Container
      • Container List
      • Credit Card
      • Currency Input
      • Date Input
      • Date Picker
      • Dropdown List
      • Email Input
      • Embedded External Content (iFrame)
      • Fieldset Container
      • File Upload
      • Form
      • Hyperlink
      • Image
      • Inline Container
      • Label
      • Map
      • Markdown
      • Number Input
      • Payment Request Button
      • Phone Input
      • Place Search Input
      • Progress Bar
      • QR Code
      • Radio Button
      • Simple Radio List
      • Scheduler
      • Secure String Input
      • Selectable Container
      • Signature Input
      • Text Area
      • Text Input
      • Time Input
      • Web Flow
      • Web Page
    • Voice and Chat Controls
      • Decision Menu
      • Forward Call
      • Secure Touchtone Capture
      • Text Response Capture
      • Touchtone Capture
    • Data Operations
      • AirData Request
        • DELETE
        • PUT
        • INSERT
        • PATCH
        • QUERY
        • DEPRECATED_QUERY
      • Calendar Search
      • Close Conversation
      • Conversation Transcript
      • Create File
      • Delete Assets
      • Download Encoded Asset
      • Early Return
      • Fetch Agent Information
      • Fetch Asset Details
      • Fetch Routing Flow Stats
      • Find Conversations by Customer Identifier
      • Fill PDF Form
      • Google
      • HTML to PDF
      • HTTP Request
        • Using an API With Paging
      • JWT Generation
      • Merge PDF
      • Move Conversation to Routing Flow
      • Opt Out Search
      • Opt Out List
      • Run Data Flow
      • Run Event in Journey
      • Salesforce
      • Secure Value Retrieval
      • Send Email
      • Send Message to Conversation
      • SFTP
      • Start Journey
      • Swagger Schema Validation
      • Transform
      • Update Customer Identifier
      • Wait
      • XML to JSON
      • Zendesk
      • ZIP File
    • Actions
      • Analytics Identify
      • Analytics Send Event
      • Close Modal
      • Condition
      • End Session
      • Extend Session Expiration Time
      • Initialize Actor
      • Log Custom Event
      • Metric: Count
      • Metric: Field
      • Metric: Start Timer
      • Metric: Statistic
      • Metric: Stop Timer
      • Navigate To Web Flow
      • Navigate to Web Page
      • Open Modal
      • Run Data Flow
      • Run Data Flow Repeatedly
      • Run Embedded Outgoing Event
      • Run Event
      • Send Email
      • Send SMS
      • Set Authentication
      • Set Identifier
      • Set Variable
      • Start Chat Bot
      • Start Voice Bot
      • Start Timer
      • Stop Timer
      • Throw
      • Trigger Form Validation
      • Try
    • Conversation Actions
      • Ask A Question
      • Capture User Response
      • Close Conversation
      • Move Customer to Resource
      • Move Conversation to Routing Flow
      • Quick Replies
      • Run Answer Flow
      • Start Conversation Chat Bot
      • Start Conversation
      • Send Link
      • Text Answer
      • Update Customer Identifier
    • Primitive Data Types
      • Any (JSON)
      • Asset
        • Detailed Asset
      • Boolean
      • Currency
      • Date
      • DateTime
      • Email
      • List
      • Null
      • Number
      • Phone
      • Text
      • Time
  • Transportation Products Catalog
    • The Transportation Products API
      • GET products
      • GET product-by-id
  • Release Notes
    • CXR Overview
    • CXR Upgrades and Migrations
Powered by GitBook
On this page
  • Capturing Addresses in a Form
  • Capturing addresses in a Chat Bot
  • Working with Different Address Formats
  • Getting different address formats using the Place Search Input control

Was this helpful?

  1. Web Apps
  2. Maps and Addresses

Addresses

PreviousMapsNextUser's Current Location

Last updated 1 year ago

Was this helpful?

There are multiple channels to collect an address from a user, from using a simple form or even through SMS. The addresses can be captured and written back into AirData or other external systems after they are collected. This article will walk through different ways to capture addresses, using the Place Search Input Control, text input controls, and through SMS.

Capturing Addresses in a Form

Forms provide a way to manually input an address during a journey. A simple form can be used as a manual entry process where the application has input fields for Address, City, State, and Zip Code. The place search input control can also be used within an application to auto-populate address fields or pass a formatted address to provide a more automated experience. This section will walk through how to create a simple form to capture addresses as well as show how to use the place search input control within a form as well.

Capturing addresses with a simple form

A simple form is a common way to capture a user's information. If looking to dive deeper on creating simple forms, see .

Prerequisites:

  • created in AirData named UserAddress with the following properties:

    • Text: address_line_1

    • Text: address_line_2

    • Text: city

    • Text: state

    • Text: zip

Capturing address with the Place Search input control

The Place Search Input control can be used to capture an address and can even be used to auto-populate form fields to allow for further editing. This example will walk through how to get a formatted address from the place search input control as well as use other outputs to add to form fields.

Pre-Requisites:

First, build out a Place app object and an addressComponents app object to use as variable types. Add a Place Object in AirData and name it 'Place'.

Add an app object in AirData and name it 'addressComponents'. Add the following fields as text fields: address, city, state, zip, country. The app object should look like this:

Then add the addressComponent field in the Place app object and rename the field to addressComponents.

The Place app object should look like this:

Note: Building out the app object for the search results and location is an optional step, as the example will still work by simply using the variable type Any for the variables created. By building out the app object manually, this facilitates the use of the typeahead functionality.

Add a Place Search Input control to the web page.

Change the searchType property on the control to from nearby to autocomplete.

On the web page, add two variables of the type 'Any' and name one location and the other search_results. This is where the search results are going to be stored from the place search input control.

[  
  {  
    "latitude": 37.4285713,  
    "longitude": -122.1434025,  
    "formattedAddress": "200 California Ave, Palo Alto, CA 94306, USA",  
    "addressComponents": {  
      "address": "200 California Ave",  
      "city": "Palo Alto",  
      "state": "CA",  
      "zip": "94306",  
      "country": "US"  
    },  
  "identifier": "<identifier>",  
  "name": "200 California Ave",  
  "icon": "https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/geocode-71.png"  
  }  
] 

Next, change the values property on each of the address input controls to the proper addressComponent property. For example, for Address Line 1, change the value to location.addressComponents.address.

Continue the process with the City input, State input, and Zip Code input:

  • City: location.addressComponents.city

  • State: location.addressComponents.state

  • Zip Code: location.addressComponents.zip

Save the application and go to App Preview. The address lines should get auto populated after typing in an address in the place search!

Capturing addresses in a Chat Bot

Another method to capture addresses is through a chat bot. Although it is recommended to send a user a link to direct them to a web experience when capturing addresses, using a chat bot to capture information is possible as well. This example will walk through capturing individual fields of an address and storing them in a variable using a chat bot.

In Web Flows Builder, go to Chat Bots in the tree and select 'My First Chat Bot'. In the inspector, add the following variables:

  • Text: address

  • Text: city

  • Text: state

  • Text: zip

Then remove 'My First Chat Prompt' and add four Text Response Capture controls, one for each address field. Rename the Text Response captures accordingly.

Select 'My First Chat Bot' and in the inspector, select 'Address Text Response Capture' as the Initial Chat Prompt.

Next, select 'Address Text Response Capture' and change the message text to "Please enter your address:" or any other text that is preferable. Then go to the inspector and under the Text Response Capture event, enter address to the Variable Binding.

Then in the next message, select the City Text Response Capture to go to the next response and capture the city from the user.

Repeat these steps for the City response capture, State response capture, and Zip response capture. For each particular field, bind the corresponding variable to the text response capture. So for the city response capture, bind the variable to city. For the state response capture, bind the variable to state. And lastly for the zip response capture, bind the variable to zip. Once all of the text response captures are configured, save the application and go to App Preview. Click on the chat icon at the bottom of the preview to open up a chat preview experience.

Working with Different Address Formats

When connecting an application with other external systems to write back addresses, oftentimes there will be specific address formats that are accepted. The location components provide a few different outputs of addresses that can be used throughout the journey, to either be used as a variable or written back to other external systems like Salesforce. They can also be used to auto populate form fields that require separate address fields as well. Below are some of the different address formats the are retrievable:

Latitude and Longitude

{   
  "latitude": 37.42854870000001,   
  "longitude": -122.1420041   
}

formattedAddress:

200 California Ave, Palo Alto, CA 94306, USA
SPLIT(formattedAddress,",")

addressComponents:

"addressComponents": {   
  "address": "200 California Ave",   
  "city": "Palo Alto",   
  "state": "CA",   
  "zip": "94306",   
  "country": "US"   
}

Getting different address formats using the Place Search Input control

First, add a Place Object in AirData and name it Place.

Then add a variable of the type 'Place' on the web page. Click on the '+' icon next to variables in the inspector, go to objects, and select Place. Name the variable location. Add another variable with the type 'List of Place' and name it search_results. This example will give the option to surface to location data objects.

Once the variables are added, add the Place Search Input control on the web page.

Then select the Place Search Input control, and under the General tab in the inspector, change the searchType to autocomplete.

Now that search_results is bound to event.value, this will provide the ability to search for an address and bind the selected address that is searched to the search_results variable. To see the output, save the application and go to App Preview and search for an address. The output will look similar to the below. This output includes the latitude/longitude, formattedAddress, and the addressComponents and can be used to pass to other systems.

[  
  {  
    "latitude": 37.4285713,  
    "longitude": -122.1434025,  
    "formattedAddress": "200 California Ave, Palo Alto, CA 94306, USA",  
    "addressComponents": {  
      "address": "200 California Ave",  
      "city": "Palo Alto",  
      "state": "CA",  
      "zip": "94306",  
      "country": "US"  
    },  
  "identifier": "<identifier>",  
  "name": "200 California Ave",  
  "icon": "https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/geocode-71.png"  
  }  
] 

Additional: If there was a requirement to get the formattedAddress and bind it to a variable, use the Set Variable action under results changed and bind the location variable to search_results[0].formattedAddress.

Lastly, to get the value of the place search input control to change to the selected address, add another Set variable action after the above action and bind place_search_inputvariable (auto bound variable for the place search input control) to the location variable.

Have a simple form built to capture address as shown in .

Select the Place Search Input control and go to the actions tab in the inspector. Under the Search Results Changed event, add a action and set search_results to event.value. Add an additional Set Variable action and set location to search_results[0].

With the location variable set to search_results[0], whenever a user searches and selects an address, the results can be surfaced through the location variable. For more information on how to capture addresses in a variable, see . The place search input control provides both a formatted address as well as a parsed address that can be retrieved by addressComponents. The output looks like the below:

To invoke the chat bot, type in a message like 'hello'. There is also the option to add a on the Journey start so that is invoked when the journey starts. After sending the first message, the chat bot should respond by asking "Please enter your address:". After entering in an address, the chat bot will go through the actions and then ask the city, state, and zip. Each address field is then stored in their respective variable and can be used throughout the journey, like storing it in AirData or passing it to another system.

Note: To split the formattedAddress into different address components (i.e. Address line, City, State, Zip Code), the Airscript function can be used to break the address apart.

The can provide the three different types of address formats based off of what address is searched. The maps control can get the latitude/longitude and formattedAddress of a location, but does not provide addressComponents. For information on how to use the maps control and store the location as a variable, see .

The place search input control, built on top of the by Google, can be used to search for specific addresses, places by categories, points of interest, and more. When configured, the control will provide the latitude, longitude, formatted address, addressComponents, identifier, name, and icon.

Go to the Actions tab in the inspector, and under the 'Search Results Changed' event, add the and bind search_results to event.value.

Set Variable
Working with the Users Current Location
Start Chat Bot action
SPLIT()
Place Search Input control
Working with the Users Current Location
Places API
Set Variable action
Capturing addresses with a simple form
Creating a Simple Form
App object