# yoctol/bottender

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/yoctol-bottender).**

4,278 stars · 336 forks · TypeScript · MIT

## Links

- GitHub: https://github.com/Yoctol/bottender
- Homepage: https://bottender.js.org
- awesome-repositories: https://awesome-repositories.com/repository/yoctol-bottender.md

## Topics

`bot` `chatbot` `framework` `line` `messaging` `messenger` `slack` `telegram` `viber`

## Description

Bottender is a conversational UI framework and cross-platform bot orchestrator designed to build interactive chat interfaces. It functions as a routing system that maps user messages and events to specific handler functions to manage interaction paths and connects a single backend to various third-party messaging channels through a unified interface.

The framework includes an integration gateway for connecting external natural language understanding services to extract intent and labels from user input. It also features a slot filling interface to gather specific pieces of information from users to complete required data sets.

The system supports state management through persistent user session storage and conversation state tracking. It provides tools for multi-channel interface design, including support for platform-specific native features, request batching to minimize network overhead, and a stateless runtime compatible with serverless deployment. 

Development is supported by a local terminal-based simulation for testing and a hot-reload workflow for immediate logic iteration.

## Tags

### Networking & Communication

- [Cross-Platform](https://awesome-repositories.com/f/networking-communication/chat-bots/cross-platform.md) — Connects a single backend to multiple messaging apps like Slack, Teams, and Discord using a unified adapter.
- [Bot-Integrated Chat Platforms](https://awesome-repositories.com/f/networking-communication/bot-integrated-chat-platforms.md) — Enables a single bot backend to integrate with multiple messaging platforms using a standardized interface. ([source](https://bottender.js.org/blog))
- [Message Handling Systems](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/communication-platforms/messaging-middleware/message-handling-systems.md) — Implements core logic for processing incoming user text and dispatching responses back to the conversation. ([source](https://bottender.js.org/docs/1.1.0/))
- [Channel Message Processing](https://awesome-repositories.com/f/networking-communication/messaging-channel-management/channel-message-processing.md) — Processes incoming text from a user and sends a corresponding reply through the messaging channel. ([source](https://bottender.js.org/docs/1.3.0/))
- [Bot Pattern Routing](https://awesome-repositories.com/f/networking-communication/messaging-channel-management/pub-sub-subscriptions/pattern-based-routing/bot-pattern-routing.md) — Directs incoming user messages to specific handler functions by matching text against defined rules or patterns.
- [Conversation Path Routing](https://awesome-repositories.com/f/networking-communication/messaging-channel-management/pub-sub-subscriptions/pattern-based-routing/conversation-path-routing.md) — Routes incoming messages to specific conversational flow handlers based on defined rules for complex paths. ([source](https://bottender.js.org/blog))
- [Text Message Transmission](https://awesome-repositories.com/f/networking-communication/text-message-transmission.md) — Transmits formatted text messages and interactive elements across all supported communication channels. ([source](https://bottender.js.org/docs))

### Artificial Intelligence & ML

- [Conversation State Management](https://awesome-repositories.com/f/artificial-intelligence-ml/context-aware-retrieval/context-aware-conversation-managers/conversation-state-management.md) — Implements systems for maintaining dialogue history and context across stateless user interactions.
- [Conversation Flow Design](https://awesome-repositories.com/f/artificial-intelligence-ml/conversation-state-management/conversation-flow-design.md) — Defines the paths, logic, and transitions of multi-turn interactions based on user events and application states. ([source](https://bottender.js.org/))
- [Dialog Flow Engines](https://awesome-repositories.com/f/artificial-intelligence-ml/conversation-state-management/conversation-flow-design/dialog-flow-engines.md) — Provides a runtime engine for executing multi-turn conversational paths and mapping events to handlers.
- [Conversational State Managers](https://awesome-repositories.com/f/artificial-intelligence-ml/conversational-state-managers.md) — Manages session data using shallow merges to track user progress and context across multi-turn interactions. ([source](https://bottender.js.org/docs/api-context))
- [Conversation Slot Filling](https://awesome-repositories.com/f/artificial-intelligence-ml/natural-language-interfaces/conversational-dialogue-systems/conversation-slot-filling.md) — Tracks missing required information within a conversation session until all necessary data slots are collected.
- [NLU Gateways](https://awesome-repositories.com/f/artificial-intelligence-ml/artificial-intelligence-tooling/language-model-integrations/llm-tooling-integrations/integration-gateways/nlu-gateways.md) — Provides a bridge for connecting external NLU services to extract intent and labels from user input.
- [Natural Language Intent Processing](https://awesome-repositories.com/f/artificial-intelligence-ml/natural-language-intent-processing.md) — Provides integration gateways to external NLU services to parse user input into structured intents and labels. ([source](https://bottender.js.org/blog))

### Part of an Awesome List

- [Conversational Input Routing](https://awesome-repositories.com/f/awesome-lists/ai/natural-language-understanding/conversational-input-routing.md) — Routes user utterances to the appropriate logic handlers based on identified intents or patterns. ([source](https://bottender.js.org/))
- [Bot Development Frameworks](https://awesome-repositories.com/f/awesome-lists/devtools/bot-development-frameworks.md) — Flexible framework for building bots.

### Security & Cryptography

- [Session Storage Backends](https://awesome-repositories.com/f/security-cryptography/identity-access-management/session-management/stateful-session-persistence/agentic-session-persistence/interaction-session-persisters/http-session-persisters/session-storage-backends.md) — Provides customizable storage backends to store and retrieve persistent user session data across interactions. ([source](https://bottender.js.org/blog))
- [State Merging Strategies](https://awesome-repositories.com/f/security-cryptography/identity-access-management/session-management/stateful-session-persistence/agentic-session-persistence/interaction-session-persisters/http-session-persisters/session-storage-backends/state-merging-strategies.md) — Updates persistent user context by merging new state data into existing session records using a customizable backend.

### Software Engineering & Architecture

- [Conversation Event Routing](https://awesome-repositories.com/f/software-engineering-architecture/event-flow-control/conversation-event-routing.md) — Maps incoming user events and application states to handler functions to manage chat flow. ([source](https://bottender.js.org))
- [Messaging Platform Adapters](https://awesome-repositories.com/f/software-engineering-architecture/messaging-platform-adapters.md) — Implements an abstraction layer that translates various platform-specific message formats into a unified internal representation.
- [Unified Backend Abstractions](https://awesome-repositories.com/f/software-engineering-architecture/unified-backend-abstractions.md) — Connects a single backend to multiple messaging services to manage interactions across different communication apps. ([source](https://cdn.jsdelivr.net/gh/yoctol/bottender@master/README.md))
- [Outgoing Request Batching](https://awesome-repositories.com/f/software-engineering-architecture/outgoing-request-batching.md) — Groups multiple outgoing responses into single network calls to minimize overhead and avoid platform rate limits. ([source](https://bottender.js.org))

### User Interface & Experience

- [Conversational UI Frameworks](https://awesome-repositories.com/f/user-interface-experience/conversational-ui-frameworks.md) — Offers a comprehensive framework for building interactive chat interfaces with routing and state management.
- [Multi-Channel Interface Design](https://awesome-repositories.com/f/user-interface-experience/multi-channel-interface-design.md) — Allows creating user experiences across different messaging platforms by matching bot capabilities to each specific channel. ([source](https://bottender.js.org))

### Development Tools & Productivity

- [Application Hot Reloading](https://awesome-repositories.com/f/development-tools-productivity/application-hot-reloading.md) — Allows iterating on bot logic in real-time with edits reflected immediately without restarting the application.

### DevOps & Infrastructure

- [Serverless Deployment](https://awesome-repositories.com/f/devops-infrastructure/serverless-deployment.md) — Enables hosting of conversational logic on serverless platforms to scale automatically without server management. ([source](https://bottender.js.org/blog))
- [Serverless Runtimes](https://awesome-repositories.com/f/devops-infrastructure/serverless-runtimes.md) — Provides a stateless execution model compatible with auto-scaling serverless cloud functions.
