Bixby Developer Center


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 (with a video tutorial to help you understand these requirements) 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 Developers' Guide, the NL Categories reference, and the capsule-categories reference page.


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 locales only.

Supported NL Categories

The following table lists the NL categories that 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.


Category names are case-sensitive. You must use the category name exactly as listed in the category reference page.

CategoryMarketplace Display NameSupported Locales
AstrologyAstrologyen-US, ko-KR
AudioBookAudiobooksen-US, ko-KR
CoffeeOrderCoffee Orderingko-KR
CookingNRecipeRecipesen-US, ko-KR
CurrencyConversionCurrency Conversionko-KR
DeliveryNTakeoutFood Deliveryen-US, ko-KR
EmailEmailen-US, ko-KR
FlightBookingFlight Bookingen-US
FlightInfoFlight Statusen-US
HomeServicesHome Servicesen-US
HotelsHotelsen-US, ko-KR
LanguageLearningLanguage Learningen-US, ko-KR
LocalBusinessesLocal Businessesen-US
LotteryLotteryen-US, ko-KR
MovieTicketsMovie Ticketsen-US, ko-KR
NewsNewsen-US, ko-KR
PodcastPodcastsen-US, ko-KR
RadioRadioen-US, ko-KR
RealEstateReal Estateen-US, ko-KR
RideShareRidesharesen-US, ko-KR
ShoppingListShopping Listsen-US
SleepSoundsSleep Soundsen-US
SportsScoreSports Scoresen-US
StockInfoStock Quotesen-US, ko-KR
TranslatorsTranslationen-US, ko-KR

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.

Video Tutorial: Natural Language Categories

The following video describes how to set up your capsule to use natural language categories.

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
    export function BookTaxiNoAction(input) {
    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

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.