Skip to content

Latest commit

 

History

History
87 lines (59 loc) · 4.85 KB

File metadata and controls

87 lines (59 loc) · 4.85 KB

SkillDialog

Bot Framework v4 Skills with Dialogs sample.

This bot has been created using the Bot Framework; it shows how to use a skill dialog from a root bot.

Prerequisites

  • Node.js version 10.14 or higher.

    # Determine node version.
    node --version

Key concepts in this sample

The solution uses dialogs, within both a parent bot (DialogRootBot) and a skill bot (DialogSkillBot). It demonstrates how to post activities from the parent bot to the skill bot and return the skill responses to the user.

  • DialogRootBot: this project shows how to consume a skill bot using a SkillDialog. It includes:

    • A root dialog that can call different actions on a skill using a SkillDialog:
      • To send events activities.
      • To send message activities.
      • To cancel a SkillDialog using CancelAllDialogsAsync that automatically sends an EndOfConversation activity to remotely let a skill know that it needs to end a conversation.
    • A sample AllowedSkillsClaimsValidator class that shows how to validate that responses sent to the bot are coming from the configured skills.
    • A Logger Middleware that shows how to handle and log activities coming from a skill.
    • A SkillConversationIdFactory used to create and maintain conversation IDs to interact with a skill.
    • A SkillsConfiguration class that can load skill definitions from the .env file.
  • DialogSkillBot: this project shows a modified CoreBot that acts as a skill. It receives event and message activities from the parent bot and executes the requested tasks. This project includes:

    • An ActivityRouterDialog that handles Event and Message activities coming from a parent and performs different tasks.

      • Event activities are routed to specific dialogs using the parameters provided in the values property of the activity.
      • Message activities are sent to LUIS if configured and trigger the desired tasks if the intent is recognized.
    • A sample activityHandler that uses the runDialog method on ActivityRouterDialog.

      Note: Starting in Bot Framework 4.8, the runDialog helper method adds support to automatically send EndOfConversation with return values when the bot is running as a skill and the current dialog ends. It also handles reprompt messages to resume a skill where it left of.

    • A sample AllowedCallersClaimsValidator that shows how to validate that the skill is only invoked from a list of allowed callers

    • A sample skill manifest that describes what the skill can do.

To try this sample

  • Clone the repository.

    git clone https://github.com/microsoft/botbuilder-samples.git
  • Create a bot registration in the azure portal for the dialogSkillBot and update dialogSkillBot/.env with the AppId and password.

  • Create a bot registration in the azure portal for the dialogRootBot and update dialogRootBot/.env with the AppId and password.

  • Update the BotFrameworkSkills section in dialogRootBot/.env with the AppId for the skill you created in the previous step.

  • (Optional) Configure the LuisAppId, LuisAPIKey and LuisAPIHostName section in the dialogSkillBot/.env if you want to run message activities through LUIS.

For each bot directory, dialogSkillBot and dialogRootBot as <botDirectory>:

  • In a terminal, navigate to samples/javascript_nodejs/81.<botDirectory>

    cd samples/javascript_nodejs/81.<botDirectory>
  • Install modules

    npm install
  • Start the bot

    npm start

Testing the bot using Bot Framework Emulator

Bot Framework Emulator is a desktop application that allows bot developers to test and debug their bots on localhost or running remotely through a tunnel.

  • Install the Bot Framework Emulator version 4.9.0 or greater from here

Connect to the bot using Bot Framework Emulator

  • Launch Bot Framework Emulator
  • File -> Open Bot
  • Enter a Bot URL of http://localhost:3978/api/messages, the MicrosoftAppId and MicrosoftAppPassword for the DialogRootBot

Deploy the bots to Azure

To learn more about deploying a bot to Azure, see Deploy your bot to Azure for a complete list of deployment instructions.