Bixby Developer Center

Guides
References

Natural Language Categories

This page contains the reference pages for all the Natural Language categories (NL categories) available for capsules and an explanation on what is required in order for a capsule to be allowed in an NL category.

For more information on what NL categories are, why you need to add them, and the use cases that are required, see Categorize Your Capsule in the Preparing for Release developer guide, the NL Categories topic reference, and the capsule-categories reference page.

Note

Keep in mind that subscribing to an NL category for your capsule does not replace proper training for your capsule. You still need to handle the natural language scope of any NL categories that you enable support for. If your capsule doesn't support a particular utterance related to that NL category and that use case is not required, your capsule should at least tell the user it cannot support that action.

Even though we list example utterances for each use case, you should add utterances that not only make sense to the NL category's use case but are also appropriate to your capsule's content.

The list of use cases and their requirement levels are evolving and subject to change in a future date. Make sure your capsule is up to date with these use cases, or your capsule might be pulled from the Marketplace in the future.

These listed use cases are either for the en-US or ko-KR targets only.

Supported NL Categories

The following NL categories are currently supported. Click on an NL category to learn more about it, including example use cases for that NL category, example utterances that users are likely to say with that use case, and whether that particular use case is required.

CategoryDescriptionSupported Locales
AstrologyAstrologyen-US, ko-KR
AudioBookAudio Booksen-US, ko-KR
CoffeeOrderCoffee Order Servicesko-KR
CookingNRecipesRecipesen-US, ko-KR
CurrencyConversionCurrency Conversionko-KR
DeliveryNTakeoutFood Ordering Servicesen-US, ko-KR
EventsEvents and Tickets Search and Bookingen-US
FlightBookingFlight Booking Servicesen-US
FlightInfoFlight Statusen-US
FlowersFlower Delivery Servicesen-US
GiftsGift Delivery Servicesen-US
HomeServicesHome Servicesen-US
HotelsHotel Search and Bookingen-US, ko-KR
JobSearchCareers and Networkingen-US
LanguageLearningLanguage Lessonsen-US, ko-KR
LocalBusinessesLocal Business Searchen-US
LotteryLotteryen-US, ko-KR
MeditationMeditationen-US
MovieTicketsMovie Showtimes and Ticketsen-US, ko-KR
NewsNews Feeds and Streaming Servicesen-US, ko-KR
PodcastPodcast Servicesen-US, ko-KR
RadioRadio Streaming Servicesen-US, ko-KR
RealEstateReal Estate Searchen-US, ko-KR
RestaurantSearchRestaurant Search and Bookingen-US
RideShareRideshare Servicesen-US, ko-KR
SleepSoundsSleep Sounds and White Noiseen-US
SportsScoreSports scoresen-US
StockInfoStocks and Marketsen-US, ko-KR
TranslatorsTranslation Servicesen-US, ko-KR
TriviaTrivia Gamesen-US
VideosVideo Clipsen-US
WeatherWeatheren-US

What Is Required

By subscribing to an NL category, any utterances that are related to the use cases of that NL category are directed to your capsule. This means that your capsule needs to satisfy the required use cases in that NL category. If you do not handle the required use cases appropriately, your capsule will be rejected for the Marketplace.

  • For the Required use cases, this means that your capsule should be able to execute an action related to the utterance in a satisfactory manner. If you cannot fulfill the use case, consider not subscribing to that NL category.
  • For the Optional use cases, we would prefer if your capsule had an associated action with the case. However, if your capsule doesn't have an action for that use case, you should expect users might still use utterances related to these use cases. You can do one of the following to gracefully handle the situation:
    • Throw an error. This is appropriate if you can't handle inputs for a request, such as being unable to handle a location input.
    • Inform the user that you can't handle that action yet by creating a "no action" handler with models and dialog.

Create a No Action Handler

If you want Bixby to still understand the full utterance, but are not currently able to handle the user's request, you can create a "No Action" set of models, which you can match to a dialog that informs the user of an issue, and then add a training example with that utterance that has the goal of that "No Action" model. For example, you can develop a RideShare capsule, but cannot currently book a specific type of ride, like a taxi:

  1. Create a "No Action" action model.

    // BookTaxiNoAction.model.bxb
    action (BookTaxiNoAction) {
    description (A no-action for utterances that try to book taxis)
    collect {
    input (searchTerm) {
    type (SearchTerm)
    min (Optional) max (One)
    }
    }
    output (BookTaxiNoActionResult)
    }
  2. Create a "No Action Result" concept model, for the output of that action:

    // BookTaxiNoActionResult.model.bxb
    text (BookTaxiNoActionResult) {
    description (A 'no-action' result for booking taxis)
    }
  3. Create an associated JavaScript file that does nothing:

    // BookTaxiNoAction.s=js
    module.exports.function = function BookTaxiNoAction(searchTerm) {
    return "";
    };
  4. Create a dialog and match it to the "No Action Result" model:

    // BookTaxiNoActionResult.dialog.bxb
    dialog (Result) {
    match: BookTaxiNoActionResult
    template("I can’t book a taxi right now, but I’m working on it.")
    }
  5. Add a training entry for the unsupported utterance (For example, "Book a taxi") and set the goal to the action (BookTaxiNoAction). This is what the aligned NL would look like:

    [g:BookTaxiNoAction] Book a taxi
Note

You should still annotate your training examples with appropriate information. For example, if there are dates or times in the utterance, you should import the viv.time library capsule and annotate with DateTime concepts.