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


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
AudioBookAudio Booksen-US
DeliveryNTakeoutFood Ordering Servicesen-US
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
LanguageLearningLanguage Lessonsen-US
LocalBusinessesLocal Business Searchen-US
MovieTicketsMovie Showtimes and Ticketsen-US
NewsNews Feeds and Streaming Servicesen-US, ko-KR
PodcastPodcast Servicesen-US, ko-KR
RadioRadio Streaming Servicesen-US, ko-KR
RealEstateReal Estate Searchen-US
RestaurantSearchRestaurant Search and Bookingen-US
RideShareRideshare Servicesen-US
SleepSoundsSleep Sounds and White Noiseen-US
SportsScoreSports scoresen-US
StockInfoStocks and Marketsen-US
TranslatorsTranslation Servicesen-US, ko-KR
TriviaTrivia Gamesen-US
VideosVideo Clipsen-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 handle all the required use cases in that NL category. If you do not handle all 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 the required use case is outside the scope of your capsule, we recommend that you handle the utterance anyway, so that the request is less likely to get fulfilled by an incorrect alternative action. 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.
    • Consider not adding the NL category from your capsule until you are able to support all the use cases within 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. We recommend that you handle the utterance by informing the user that you can't handle that action yet by creating a "no action" handler, so that the request is less likely to get fulfilled by an incorrect alternative action.

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

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.