# start.bas Template The `start.bas` template is the entry point dialog that runs when a user begins a conversation with the bot. It sets up the initial context, loads bot memories, and presents the user with options. ## Overview The start dialog typically performs these tasks: 1. Loads bot memories containing important context 2. Sets up context collections for the LLM 3. Clears and configures suggestion buttons 4. Presents an initial greeting to the user ## Example: Announcements Bot Here's the `start.bas` template from the announcements bot: ```basic resume1 = GET BOT MEMORY "resume" resume2 = GET BOT MEMORY "auxiliom" resume3 = GET BOT MEMORY "toolbix" SET CONTEXT "general" AS resume1 SET CONTEXT "auxiliom" AS resume2 SET CONTEXT "toolbix" AS resume3 CLEAR SUGGESTIONS ADD_SUGGESTION "general" AS "Show me the weekly announcements" ADD_SUGGESTION "auxiliom" AS "Explain Auxiliom to me" ADD_SUGGESTION "auxiliom" AS "What does Auxiliom provide?" ADD_SUGGESTION "toolbix" AS "Show me Toolbix features" ADD_SUGGESTION "toolbix" AS "How can Toolbix help my business?" TALK resume1 TALK "You can ask me about any of the announcements or circulars." ``` ## Breaking Down the Script ### Loading Bot Memories ```basic resume1 = GET BOT MEMORY "resume" resume2 = GET BOT MEMORY "auxiliom" resume3 = GET BOT MEMORY "toolbix" ``` Bot memories are persistent key-value pairs stored in the database. They typically contain: - Introduction text - System prompts - Important context that should always be available ### Setting Context ```basic SET CONTEXT "general" AS resume1 SET CONTEXT "auxiliom" AS resume2 SET CONTEXT "toolbix" AS resume3 ``` The `SET_CONTEXT` keyword adds text to named context collections that the LLM can access. This ensures the bot has relevant information when answering questions. ### Configuring Suggestions ```basic CLEAR_SUGGESTIONS; ADD_SUGGESTION "general" AS "Show me the weekly announcements" ADD_SUGGESTION "auxiliom" AS "Explain Auxiliom to me" ``` Suggestions appear as clickable buttons in the chat interface, helping users understand what the bot can do. ### Initial Greeting ```basic TALK resume1 TALK "You can ask me about any of the announcements or circulars." ``` The bot speaks the introduction text and provides guidance on how to interact. ## Simple Start Template For a minimal bot, a start template might be: ```basic intro = GET BOT MEMORY "introduction" SET CONTEXT "main" AS intro TALK "Hello! I'm your assistant." TALK "How can I help you today?" ``` ## Start Template with Authentication For bots requiring login: ```basic user_id = GET BOT MEMORY "current_user" IF user_id = "" THEN TALK "Welcome! Please log in to continue." RUN "auth.bas" ELSE welcome = "Welcome back, " + user_id + "!" TALK welcome TALK "What would you like to do today?" END IF ``` ## Start Template with Knowledge Base For knowledge-focused bots: ```basic USE KB "policies" USE KB "procedures" USE KB "faqs" intro = GET BOT MEMORY "assistant_role" SET CONTEXT "role" AS intro TALK "I have access to company policies, procedures, and FAQs." TALK "Ask me anything about our documentation!" ``` ## Best Practices 1. **Load Essential Context**: Always load critical bot memories at startup 2. **Set Clear Expectations**: Tell users what the bot can do 3. **Provide Suggestions**: Help users get started with example queries 4. **Keep It Brief**: Don't overwhelm users with too much text initially 5. **Handle Errors**: Check if memories exist before using them ## Configuration The start dialog is specified in the bot's `config.csv`: ```csv name,value Start Dialog,start ``` This tells BotServer to run `start.bas` when a conversation begins. ## Common Patterns ### Multi-Purpose Bot ```basic CLEAR_SUGGESTIONS; ADD_SUGGESTION "support" AS "I need help with a problem" ADD_SUGGESTION "sales" AS "Tell me about your products" ADD_SUGGESTION "docs" AS "Show me the documentation" TALK "I can help with support, sales, or documentation." TALK "What brings you here today?" ``` ### Personalized Greeting ```basic hour = HOUR(NOW()) greeting = "" IF hour < 12 THEN greeting = "Good morning!" ELSE IF hour < 17 THEN greeting = "Good afternoon!" ELSE greeting = "Good evening!" END IF TALK greeting TALK "How may I assist you?" ``` ### Context-Aware Start ```basic last_topic = GET BOT MEMORY "last_topic" IF last_topic <> "" THEN msg = "Last time we discussed " + last_topic + "." TALK msg TALK "Would you like to continue that conversation?" ELSE TALK "Welcome! What would you like to know?" END IF ``` ## Summary The `start.bas` template sets the tone for the entire conversation. It should be welcoming, informative, and guide users toward productive interactions. By loading context, setting suggestions, and providing clear instructions, you create a smooth onboarding experience for users engaging with your bot.