ScreenshotNeo

BlogComparisons

Chatbot Development Frameworks for Web Developers

Compare Rasa, Botpress, Amazon Lex V2, and Microsoft Bot Framework by architecture, control, integrations, operations, and team fit.

By the ScreenshotNeo team29 September 202610 min read

Chatbot Development Frameworks for Web Developers

Direct answer: choose a chatbot framework by operating model and integration needs. Pick Rasa when deployment control, auditability, model flexibility, or regulated workflows matter. Pick Botpress when you need a fast visual workflow and a TypeScript-friendly development path. Pick Amazon Lex V2 for AWS-native text and voice bots with Lambda-backed logic. Pick Microsoft Bot Framework when your team is already invested in Microsoft and Azure tooling, Composer, SDK dialogs, and persisted state.

A framework is the development foundation that interprets user input, runs dialogue logic, and connects to external systems. A platform adds deployment controls, monitoring, governance, and collaboration features. The distinction matters: an SDK can help you build a bot while leaving hosting and operations to you; a managed service can provide runtime, scaling, channels, and administration. Many products include both layers, but they impose different responsibilities on your team.

What a chatbot framework provides

Most production bots have the same logical parts, even when the products use different names:

A production chatbot connects the channel, framework runtime, model layer, state, business APIs, and operations.
A production chatbot connects the channel, framework runtime, model layer, state, business APIs, and operations.
Browser or messaging channel
          |
          v
 Webchat adapter / channel connector
          |
          v
 Framework runtime ----> NLU or LLM layer
          |
          +----> Dialogue state store
          +----> Business APIs and custom actions
          +----> Authentication and authorization
          +----> Logs, traces, metrics, and evaluation
          |
          v
 Deployment target: your cloud, private cloud, on-premises, or managed service

The framework usually handles intent or message interpretation, conversation turns, prompts, interruptions, retries, tool calls, and channel integration. Your application still owns authentication, authorization, data retention, backend integration, testing, abuse controls, and failure handling. Treat those as application architecture rather than features you automatically receive from a bot SDK.

Seven criteria for choosing

  1. Architecture and extensibility: Can you add custom actions, APIs, domain workflows, and new channels without brittle workarounds?
  2. Data control and deployment: Do you require on-premises or private-cloud operation for security or compliance?
  3. Model flexibility: Can you change NLU or LLM providers without rebuilding orchestration?
  4. Integration ecosystem: Are maintained connectors available for webchat, messaging, CRM, analytics, and internal systems?
  5. State and dialogue control: How are multi-turn context, prompts, interruptions, retries, and persistence represented?
  6. Operations: What testing, observability, governance, deployment, and collaboration tools are included?
  7. Team fit: Does the stack match your languages, cloud provider, and operational skills?

Rasa: maximum deployment and model control

Rasa is the strongest fit for complex, regulated, or self-hosted deployments. Its architecture is LLM-agnostic and supports orchestration, conversation repair, custom actions, integrations, observability, and auditability. Rasa can run on-premises, in a private cloud, or in a hybrid architecture, which gives security and platform teams control over where conversation data and models operate. Rasa’s own comparison defines a chatbot framework as “a development foundation that defines how an AI agent interprets user input, executes logic, and connects with external systems.” Read the Rasa comparison for its current feature descriptions.

When Rasa is the right choice

  • Your compliance requirements restrict hosted processing.
  • You need a provider-neutral NLU or LLM architecture.
  • Auditable dialogue paths and explicit recovery behavior are more important than a quick prototype.
  • Your team can own deployment, upgrades, monitoring, and model operations.

Tradeoffs

Rasa gives you control, but that control means more engineering ownership. Plan for runtime operations, model lifecycle management, integration testing, and production observability. It is a poor fit when your priority is a plug-and-play hosted bot with minimal platform work.

Botpress: visual workflows with a TypeScript path

Botpress is a strong choice for rapid web prototypes and teams that prefer TypeScript. Its visual flow editor, LLM support, knowledge bases, Webchat, SDK, integrations, and plugins let a team start in a graphical environment and add code where needed. The Botpress SDK documentation describes four primary component types: integrations, interfaces, bots, and plugins. Integrations connect services such as Slack, WhatsApp, Telegram, Dropbox, Google Drive, and custom APIs.

Botpress supports bots-as-code through its SDK rather than Studio. That path is intended for experienced developers who need flexibility or version-control integration. Studio is the recommended starting point for most users, while the SDK is useful when workflows must be generated, reviewed, and released like application code.

When Botpress is the right choice

  • You need a usable web chatbot quickly and want visual flow editing.
  • Your team is comfortable with TypeScript and JavaScript integrations.
  • You value packaged connectors and a Webchat experience.
  • Designers, support staff, or product managers need to inspect and collaborate on flows.

Tradeoffs

Evaluate enterprise integrations and backend customization against your specific requirements. The Rasa comparison identifies those areas as potential limitations relative to a more hands-on, self-managed architecture. Confirm that every connector you need is maintained and that the deployment model matches your data policies.

Amazon Lex V2: AWS-native text and voice

Amazon Lex V2 is the natural fit for applications already centered on AWS. AWS describes it as “an AWS service for building conversational interfaces for applications using voice and text.” Lex V2 provides a test console, versions and aliases, web and messaging channel deployment, Lambda integration for business logic, and automatic scaling. See the Amazon Lex V2 documentation for the service model and deployment details.

When Lex V2 is the right choice

  • Your identity, logging, networking, and business APIs already run in AWS.
  • You need both voice and text interfaces.
  • Lambda is an acceptable boundary for validation, fulfillment, and backend actions.
  • You want managed infrastructure and AWS scaling rather than operating a bot runtime.

Tradeoffs

AWS integration reduces glue code but increases ecosystem coupling. Review portability, regional requirements, IAM design, Lambda latency, and how you will migrate if your organization later changes cloud strategy. Use versions and aliases deliberately so testing and production traffic do not share an untracked bot revision.

Microsoft Bot Framework: dialogs and persisted state for Microsoft teams

Microsoft Bot Framework fits teams invested in Microsoft and Azure. The SDK v4 provides dialogs, prompts, component and waterfall dialogs, skills, and persisted dialog state. Microsoft describes dialogs as a central SDK concept for managing a long-running conversation; dialogs can span turns, pause, resume, and return collected information. State must be retrieved and saved on each turn so the bot remembers its position and collected data. Microsoft recommends Composer for authoring new conversational dialogs. Start with the Microsoft dialog documentation.

When Microsoft Bot Framework is the right choice

  • Your organization standardizes on C#, .NET, Azure, or Microsoft identity.
  • You need explicit multi-turn dialogs, prompts, and reusable dialog components.
  • Composer helps non-developers and developers collaborate on conversation authoring.
  • Persisted state and Microsoft channel integrations are central to the product.

Tradeoffs and a retired component

State and dialog design require discipline. Define storage, expiration, concurrency, and recovery behavior before adding more turns. Do not select QnA Maker for a new project: Microsoft retired it on 31 March 2025. Replace that design with a supported retrieval or knowledge approach in your chosen architecture.

Comparison table

Framework/service Best fit Strengths Main tradeoff
Rasa Regulated, complex, self-hosted On-premises/private cloud, model flexibility, orchestration, auditability More engineering and operations ownership
Botpress Fast web bots and TypeScript teams Visual editor, Webchat, SDK, integrations, plugins Check enterprise integrations and backend depth
Amazon Lex V2 AWS text and voice applications Lambda, test console, versions, channels, managed scaling AWS coupling and service configuration
Microsoft Bot Framework Microsoft/Azure enterprise teams Composer, SDK dialogs, prompts, skills, persisted state Careful state and dialogue design required

A practical selection process

  1. Write deployment constraints first. Mark whether on-premises, private cloud, a specific region, or a specific cloud is mandatory.
  2. Map your channels. List browser Webchat, voice, Teams, Slack, WhatsApp, or internal clients and verify maintained connectors.
  3. Define state ownership. Decide what is transient conversation context, durable customer data, and sensitive data that must be deleted.
  4. Prototype one difficult workflow. Include authentication, an API failure, a user interruption, a retry, and a handoff. A greeting demo hides the important differences.
  5. Measure operations you will actually run. Specify logs, traces, test conversations, redaction, deployment approvals, rollback, and model evaluation.
  6. Price the whole system. Include runtime, model or NLU usage, storage, observability, channels, engineering time, and support.
A clean capture removes consent UI, popups, and chat widgets before saving the page image.
A clean capture removes consent UI, popups, and chat widgets before saving the page image.

Building a web chatbot safely

Regardless of framework, implement these boundaries:

  • Authenticate the user at your application edge; never treat a chat message as proof of identity.
  • Authorize every tool or backend action on the server, using the user and tenant context.
  • Validate tool arguments and impose timeouts, retries, idempotency keys, and rate limits.
  • Persist only the state required to resume a conversation, with explicit retention and deletion rules.
  • Redact secrets and personal data from logs. Keep model prompts, tool calls, and outcomes traceable for incident review.
  • Test unhappy paths: timeouts, malformed input, duplicate events, provider outages, expired sessions, and handoffs.

Capturing webchat and documentation screenshots

For a do-it-yourself capture, launch a browser automation tool such as Playwright, navigate to the page, wait for the webchat widget and network activity, dismiss consent UI, and save a full-page image. Use a stable viewport and authenticated test account when the bot is behind a login. Hide transient notifications and record the exact URL, viewport, browser version, and test data so screenshots are reproducible.

Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server. Its clean-shot pipeline accepts cookie and consent banners like a visitor, then removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Only clean shots are billed: bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and the response identifies the result with X-Page-Verdict and X-Billed headers. An MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.

Use the API with the ScreenshotNeo documentation:

curl -G "https://api.screenshotneo.com/v1/shot" \
  -d access_key=YOUR_API_KEY \
  --data-urlencode url=https://stripe.com \
  -o shot.webp
import requests

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
    timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({
  access_key: 'YOUR_API_KEY',
  url: 'https://stripe.com'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const image = Buffer.from(await res.arrayBuffer());
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', image));

The service also supports PNG, JPEG, WebP, and PDF output; full-page capture with lazy images, CSS element selection, dark mode, device presets or custom viewports, retina scale, custom CSS and JavaScript, clicks, selector or network-idle waits, blocked ads and resource types, headers, cookies, user agents, Authorization, timezone, geolocation, transparent backgrounds, resizing, TTL caching, signed links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, usage reporting, and an OpenAPI specification. Parameter names used by other screenshot APIs also work, which helps with migrations.

There is a free plan with 1,000 screenshots per month and no card. Paid plans start at $5 for 3,000 shots; yearly billing provides two months free, and every feature is included on every plan. Create a free ScreenshotNeo account.

Troubleshooting checklist

Symptom Likely cause Fix
The bot forgets earlier turns State is not loaded or saved on every turn Retrieve state at the start of each turn, save it after the dialog advances, and define expiration.
Actions run twice Retries or duplicate channel events Use idempotency keys, persist event IDs, and make backend operations safe to repeat.
Webchat works locally but not in production Origin, identity, CORS, or channel configuration differs Verify allowed origins, callback URLs, credentials, environment variables, and production channel settings.
Responses are slow Model, Lambda, or backend calls are on the critical path Set explicit timeouts, stream where supported, cache safe lookups, and move long work to an asynchronous job.
Screenshot contains a popup or chat widget Capture occurs before cleanup or the selector is not covered Wait for the element, hide its selector, or use ScreenshotNeo’s consent and popup cleanup options.
Screenshot is blank or times out Bot check, failed load, blocked resource, or insufficient wait Inspect verdict headers, increase a selector or network-idle wait, allow required resources, and retry with bounded backoff.

Performance, reliability, and cost notes

Keep conversations responsive by separating quick validation from long-running fulfillment. Bound every external call and return a useful status when work continues asynchronously. Load-test the complete path, including the model provider, state store, tools, and channel adapter; framework throughput alone does not predict user-visible latency. For reliability, design for duplicate events, provider errors, partial tool success, and resumable handoffs. For cost, count model tokens, NLU requests, function invocations, storage, logs, and channel fees, then compare that total with the engineering effort of self-hosting.

FAQ

Is a chatbot framework the same as an AI agent framework?

They overlap. A chatbot framework emphasizes conversation channels, dialogue state, and user-facing turns. An agent framework usually emphasizes planning, tool use, and task execution. A production system may use both.

Should a web developer choose visual tooling or code first?

Choose visual tooling when many people must review flows quickly. Choose code first when workflows need version control, automated tests, shared libraries, or complex backend logic. Botpress supports both Studio and an SDK path.

Can I move from one framework later?

Yes, if you keep channel adapters, domain services, state schemas, and evaluation cases separate from framework-specific dialogue code. Export transcripts and test cases before migration.

Which option is best for voice?

Amazon Lex V2 is the clearest fit among these choices when voice and text are both required, especially in an AWS-centered architecture.

What should I document before launch?

Document supported intents, state fields, tool permissions, retention, failure behavior, escalation paths, model versions, channel configuration, and rollback steps.

Decision summary

Your situation Start with
Private deployment, auditability, and model choice Rasa
Fast visual web bot with TypeScript extensibility Botpress
AWS-native text and voice with Lambda Amazon Lex V2
Microsoft stack, Composer, and persisted dialogs Microsoft Bot Framework

Prototype the hardest authenticated workflow, measure its failure modes, and select the framework whose operating model your team can maintain for years.