Sana Assistant (online)
Table of Contents

AddressAutocompleteExtension reference

All address autocomplete extensions have to be inherited from the AddressAutocompleteExtension class which, in turn, inherits from the core Sana Commerce Cloud Extension class.

Class

Methods

FindSuggestionsAsync

Finds address suggestions for the specified part of address. This method will be called when the user enters the address. The method should return a list of suggestions based on the data from AddressAutocompleteContext.

public override Task<IReadOnlyList<AddressAutocompleteSuggestion>> FindSuggestionsAsync(AddressAutocompleteContext context, CancellationToken cancellationToken)
{
    var addressSuggestions = /* retrieve suggestions from 3rd party service */;
    IReadOnlyList<AddressAutocompleteSuggestion> suggestions = addressSuggestions
        .Select(address => new AddressAutocompleteSuggestion
        (
            Id: address.Id,
            FormattedAddress: address.FormattedAddress,
            Type: address.Type
        )).ToList();

    return Task.FromResult(suggestions);
}

RetrieveContainerSuggestionsAsync

Retrieves address suggestions from container suggestion. Some services can return suggestions with the type 'Container'. Such suggestions contain a list of nested address suggestions. An extra service API call is needed to retrieve the list of address suggestions from container suggestion. This method will be called when the user selects the 'Container' suggestion. The method should return a list of suggestions based on the data from AddressAutocompleteContainerSuggestionsContext.

public override Task<IReadOnlyList<AddressAutocompleteSuggestion>> RetrieveContainerSuggestionsAsync(AddressAutocompleteContainerSuggestionsContext containerContext, CancellationToken cancellationToken)
{
    var addressContainerSuggestions = /* retrieve suggestions from container */;
    IReadOnlyList<AddressAutocompleteSuggestion> containerSuggestions = addressContainerSuggestions
        .Select(address => new AddressAutocompleteSuggestion
        (
            Id: address.Id,
            FormattedAddress: address.FormattedAddress,
            Type: AddressAutocompleteSuggestionType.Address
        )).ToList();

    return Task.FromResult(containerSuggestions);
}

RetrieveAddressAsync

Retrieves full address details based on address suggestion identifier. The method can return null if address details cannot be retrieved by provided suggestion identifier. It will be called when the user selects a suggestion with the type 'Address'.

public override Task<AutocompleteAddress?> RetrieveAddressAsync(AddressAutocompleteSuggestionContext suggestionContext, CancellationToken cancellationToken)
{
    var address = /* retrieve address from 3rd party service */;
    return Task.FromResult<AutocompleteAddress?>(new(
        Address: address.Address,
        Address2: address.Address2,
        ZipCode: address.ZipCode,
        City: address.City,
        CountryId: address.CountryId,
        State: address.State));
}