botserver/docs/src/chapter-06-gbdialog/universal-messaging.md

131 lines
3.4 KiB
Markdown

# Universal Messaging & Multi-Channel
BotServer automatically handles conversations across different channels (Web, WhatsApp, Email, etc.) using the same BASIC scripts. Write once, deploy everywhere.
## How It Works
Your BASIC scripts don't need to know which channel they're running on. The same `TALK` and `HEAR` commands work universally:
```basic
TALK "Hello! How can I help you?"
HEAR response
TALK "You said: " + response
```
This script works identically whether the user is:
- Chatting via web browser
- Messaging on WhatsApp
- Sending emails
- Using Microsoft Teams
## Supported Channels
### Web (Default)
The primary channel. Users access via browser at `http://localhost:8080`.
### WhatsApp Business
Requires WhatsApp Business API configuration. Messages are automatically formatted for WhatsApp's constraints.
### Email
Bots can receive and respond to emails. Each email thread becomes a conversation session.
### Microsoft Teams
Deploy bots directly to Teams channels and direct messages.
## Channel Detection
BotServer automatically detects the channel based on the session context. No special code needed:
```basic
' This works on ALL channels
TALK "Welcome to our service!"
TALK "What's your name?"
HEAR name
TALK "Nice to meet you, " + name
```
## Channel-Specific Formatting
While your code stays the same, BotServer automatically handles channel-specific formatting:
### Web
- Full HTML support
- Rich formatting
- Images and media
- Interactive elements
### WhatsApp
- Plain text with emoji
- Media as attachments
- Quick reply buttons
- 1024 character limit per message
### Email
- HTML email format
- Subject line handling
- Attachments
- Proper threading
### Teams
- Adaptive cards
- @mentions
- Channel vs DM detection
- Teams-specific formatting
## Media Handling
Send files and media universally:
```basic
' Works on all channels that support files
SEND FILE "report.pdf"
TALK "I've sent you the report."
```
Each channel handles files appropriately:
- Web: Download link
- WhatsApp: Document attachment
- Email: Email attachment
- Teams: File card
## Session Management
Each channel maintains its own session handling:
- **Web**: Cookie-based sessions
- **WhatsApp**: Phone number as session ID
- **Email**: Thread ID as session
- **Teams**: User/channel context
## Configuration
Channel configuration is done in the bot's `config.csv`:
```csv
channel-web,enabled
channel-whatsapp,enabled
channel-email,enabled
channel-teams,disabled
```
## Best Practices
1. **Keep messages concise** - Some channels have length limits
2. **Use simple formatting** - Not all channels support rich text
3. **Test on target channels** - Ensure your bot works well on each
4. **Handle media gracefully** - Not all channels support all file types
5. **Consider response times** - Email is async, chat is real-time
## Channel Limitations
| Channel | Message Length | Media Support | Rich Text | Real-time |
|---------|---------------|---------------|-----------|-----------|
| Web | Unlimited | Full | Yes | Yes |
| WhatsApp | 1024 chars | Images, Docs | Limited | Yes |
| Email | Unlimited | Attachments | HTML | No |
| Teams | 28KB | Full | Adaptive Cards | Yes |
## Summary
Universal messaging means your BASIC scripts work across all channels without modification. BotServer handles the complexity of channel-specific formatting and delivery, letting you focus on the conversation logic.