botbook/src/04-gbui/apps/designer.md

407 lines
9.5 KiB
Markdown
Raw Normal View History

2025-12-03 19:56:35 -03:00
# Designer - Visual Builder
> **Your no-code bot building studio**
<img src="../../assets/suite/designer-screen.svg" alt="Designer Interface Screen" style="max-width: 100%; height: auto;">
---
## Overview
Designer is the visual bot builder in General Bots Suite. Create conversation flows, design user interfaces, and build automations without writing code. Designer uses a drag-and-drop interface that makes bot development accessible to everyone.
---
## Features
### Creating a New Flow
**Step 1: Open Designer**
1. Click the apps menu (⋮⋮⋮)
2. Select **Designer**
3. Click **+ New Flow**
**Step 2: Configure Flow**
| Setting | Description |
|---------|-------------|
| **Flow Name** | Descriptive title (e.g., "Customer Support") |
| **Description** | Brief explanation of what the flow does |
| **Start from** | Blank canvas, Template, or Import from file |
**Step 3: Add Components**
Drag components from the left panel onto the canvas.
**Step 4: Connect Components**
Click and drag from one component's output to another's input.
---
### Component Types
#### Communication Components
| Component | Icon | Purpose |
|-----------|------|---------|
| **Talk** | 💬 | Send a message to the user |
| **Hear** | 👂 | Wait for user input |
| **Ask** | ❓ | Ask a question and capture response |
| **Show** | 🖼️ | Display an image, card, or media |
| **Menu** | 📋 | Show clickable options |
**Talk Component Options:**
- Message text with variations (AI picks randomly)
- Use AI to personalize
- Include typing indicator
- Delay before sending
**Ask Component Options:**
- Question text
- Variable name to save response
- Expected type: Text, Number, Email, Phone, Date, Yes/No, Multiple Choice
- Validation message for invalid input
---
#### Logic Components
| Component | Icon | Purpose |
|-----------|------|---------|
| **Branch** | 🔀 | Conditional logic (if/else) |
| **Loop** | 🔄 | Repeat actions |
| **Switch** | 🔃 | Multiple conditions |
| **Wait** | ⏱️ | Pause execution |
| **End** | 🏁 | End the flow |
**Branch Configuration:**
- Set condition using variable comparisons
- Add multiple AND/OR conditions
- TRUE and FALSE output paths
---
#### Action Components
| Component | Icon | Purpose |
|-----------|------|---------|
| **Action** | ⚡ | Execute a BASIC keyword |
| **API Call** | 🌐 | Call external API |
| **Database** | 🗄️ | Query or update data |
| **Email** | ✉️ | Send an email |
| **Set Variable** | 📝 | Store a value |
**Action Error Handling:**
- Stop flow and show error
- Continue to error path
- Retry N times
---
#### AI Components
| Component | Icon | Purpose |
|-----------|------|---------|
| **AI Chat** | 🤖 | Natural language conversation |
| **Search KB** | 🔍 | Search knowledge base |
| **Generate** | ✨ | Generate text with AI |
| **Classify** | 🏷️ | Categorize user input |
| **Extract** | 📤 | Extract data from text |
**Classify Example Categories:**
- `support` - Customer needs help with a problem
- `sales` - Customer interested in buying
- `billing` - Payment or invoice questions
- `feedback` - Customer giving feedback
- `other` - Anything else
---
### Working with the Canvas
#### Navigation
| Action | How To |
|--------|--------|
| **Pan** | Click and drag on empty space |
| **Zoom in** | Scroll up or click [+] |
| **Zoom out** | Scroll down or click [-] |
| **Fit to screen** | Click [⌖] or press `F` |
| **Select multiple** | Hold Shift and click |
| **Box select** | Hold Ctrl and drag |
#### Canvas Controls
| Control | Purpose |
|---------|---------|
| **[+] [-]** | Zoom in/out |
| **[⌖]** | Fit to view |
| **Grid** | Show/hide grid |
| **Snap** | Snap to grid |
| **Auto** | Auto-arrange components |
---
### Using Variables
Variables store information during the conversation.
**System Variables (read-only):**
| Variable | Description |
|----------|-------------|
| `{{user.name}}` | User's display name |
| `{{user.email}}` | User's email address |
| `{{user.phone}}` | User's phone number |
| `{{channel}}` | Current channel (web, whatsapp, etc) |
| `{{today}}` | Today's date |
| `{{now}}` | Current date and time |
| `{{botName}}` | Name of this bot |
**Flow Variables:** Variables you create using Ask or Set Variable components.
Reference variables with double curly braces: `{{variableName}}`
---
### Testing Your Flow
**Preview Mode:**
1. Click **Preview** button
2. A chat window opens
3. Test the conversation
4. Watch the flow highlight active steps
The Preview panel shows:
- Flow visualization with active step highlighted
- Test conversation area
- Current variable values
- Clear and Reset buttons
---
### Deploying Your Flow
When your flow is ready:
1. Click **Deploy**
2. Choose deployment options:
- **Production** or **Staging only**
- **Immediate** or **Scheduled**
3. Configure triggers:
- Specific phrases (e.g., "help", "support")
- As default fallback
- On schedule
4. Review changes since last deploy
5. Confirm deployment
---
### Templates
Start faster with pre-built templates:
| Template | Description |
|----------|-------------|
| **📋 FAQ Bot** | Answer common questions from knowledge base |
| **🎫 Support** | Ticket creation and tracking |
| **💰 Sales** | Lead capture and qualification |
| **📅 Appointment** | Schedule meetings and appointments |
| **📝 Feedback** | Collect customer feedback |
| **🚀 Onboarding** | New user welcome and setup guide |
---
## Keyboard Shortcuts
### Canvas
| Shortcut | Action |
|----------|--------|
| `Space + Drag` | Pan canvas |
| `Ctrl + +` | Zoom in |
| `Ctrl + -` | Zoom out |
| `Ctrl + 0` | Reset zoom |
| `F` | Fit to screen |
| `G` | Toggle grid |
| `Delete` | Delete selected |
| `Ctrl + D` | Duplicate selected |
| `Ctrl + Z` | Undo |
| `Ctrl + Y` | Redo |
### Components
| Shortcut | Action |
|----------|--------|
| `T` | Add Talk component |
| `H` | Add Hear component |
| `A` | Add Ask component |
| `B` | Add Branch component |
| `E` | Edit selected component |
| `Ctrl + C` | Copy component |
| `Ctrl + V` | Paste component |
| `Ctrl + X` | Cut component |
### Flow
| Shortcut | Action |
|----------|--------|
| `Ctrl + S` | Save flow |
| `Ctrl + P` | Preview flow |
| `Ctrl + Enter` | Deploy flow |
| `Ctrl + E` | Export flow |
| `Ctrl + I` | Import flow |
---
## Tips & Tricks
### Design Tips
💡 **Keep flows simple** - Break complex flows into smaller sub-flows
💡 **Use descriptive names** - "Ask for Email" is better than "Step 3"
💡 **Add comments** - Right-click any component to add notes
💡 **Test often** - Preview after every few changes
### Organization Tips
💡 **Use folders** to organize related flows
💡 **Version your flows** - Save before major changes
💡 **Use templates** for consistent starting points
💡 **Color-code paths** - Use colors for different intents
### Performance Tips
💡 **Minimize API calls** - Cache results when possible
💡 **Use AI classification early** - Route users quickly
💡 **Set timeouts** - Don't let flows hang indefinitely
💡 **Handle errors** - Always add error paths
---
## Troubleshooting
### Flow not triggering
**Possible causes:**
1. Flow not deployed
2. Trigger words not matching
3. Another flow has priority
**Solution:**
1. Click Deploy and confirm it's active
2. Check trigger configuration
3. Review flow priority in settings
4. Test with exact trigger phrases
---
### Variables not working
**Possible causes:**
1. Typo in variable name
2. Variable not set yet in flow
3. Wrong scope
**Solution:**
1. Check spelling matches exactly (case-sensitive)
2. Ensure variable is set before being used
3. Use Preview mode to watch variable values
4. Check the Variables panel for current values
---
### Component errors
**Possible causes:**
1. Missing required configuration
2. Invalid connection
3. Action failed
**Solution:**
1. Click the red error icon for details
2. Fill in all required fields
3. Check that connections make logical sense
4. Review error logs in Preview mode
---
### Preview not matching production
**Possible causes:**
1. Changes not deployed
2. Different data in production
3. External service differences
**Solution:**
1. Deploy latest changes
2. Test with same data as production
3. Check API connections are identical
4. Review production logs
---
## BASIC Integration
Designer flows generate BASIC code. You can view and customize it.
### View Generated Code
Right-click any component and select "View Code":
```botserver/docs/src/chapter-04-gbui/apps/designer-generated.basic
' Generated from "Customer Support" flow
TALK "Hello! How can I help you today?"
HEAR userMessage AS TEXT
intent = CLASSIFY userMessage INTO ["support", "sales", "billing", "other"]
IF intent = "support" THEN
TALK "I'm sorry to hear you're having issues!"
HEAR orderNumber AS TEXT "What's your order number?"
result = SEARCH KB "order " + orderNumber
TALK result.answer
ELSE IF intent = "sales" THEN
' ... sales flow
END IF
```
### Mix Designer and Code
Use the **Code** component to add custom BASIC:
```botserver/docs/src/chapter-04-gbui/apps/designer-custom.basic
' Custom calculation
discount = 0
IF userType = "premium" THEN
discount = orderTotal * 0.15
ELSE IF orderTotal > 100 THEN
discount = orderTotal * 0.05
END IF
finalPrice = orderTotal - discount
```
---
## See Also
- [Sources App](./sources.md) - Manage prompts and templates
- [Chat App](./chat.md) - Test your flows
- [How To: Write Your First Dialog](../how-to/write-first-dialog.md)
- [BASIC Keywords Reference](../../chapter-06-gbdialog/keywords-reference.md)