BotMan integration for Symfony

Installs: 18

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 9


0.4.1 2021-10-09 18:37 UTC

This package is auto-updated.

Last update: 2024-04-10 00:06:44 UTC


BotMan integration for Symfony

As the author scored the project, it was decided to develop fork.

This is a bundle to use BotMan framework in Symfony.

Supported drivers

Only the marked drivers are supported. See the official driver documentation to have more information:

  • Amazon Alexa
  • Cisco Spark
  • Facebook Messenger
  • Hangouts Chat
  • HipChat
  • Microsoft Bot Framework
  • Nexmo
  • Slack
  • Telegram
  • Twilio
  • Web
  • WeChat


Step 1: Download the bundle

Install the library via Composer by running the following command:

composer require nek/botman-bundle

Step 2: Enable the bundle

You can skip this step if you are using Symfony Flex.

Enable the bundle in your app/AppKernel.php file:

// app/AppKernel.php

public function registerBundles()
    $bundles = array(
        // ...
        new Nek\Bundle\BotmanBundle\BotmanBundle(),
        // ...

Step 3: Configure the bundle

You can see a template of config file by running console config:dump-reference botman.

                token: ~
                token: ~
                app_secret: ~
                verification: ~
                start_button_payload: ~         # Optional
                greeting:                       # Optional
                    # Array of
                        locale:               ~ # Required
                        text:                 ~ # Required
                whitelisted_domains:  []        # Optional

You only must add the drivers than you want to use.

Step 4: Configure the webhook

Add the router configuration for the webhook in your routing.yaml:

    resource: .
    type: extra

The webhook path is /botman by default, but we recommend to change it by security issues.

    path:                 /botman57637357-65ce-4faf-a9d9-ee2c13011d87

Now, you must create the webhook controller class. By default is configured as App\Controller\WebhookController:

// file: src/Controller/WebhookController.php


namespace App\Controller;

use BotMan\BotMan\BotMan;
use Symfony\Component\HttpFoundation\Response;

class WebhookController
    public function __invoke(BotMan $bot): Response
        // Add your logic here
        // Echo bot example
        $bot->fallback(function (BotMan $bot): void {

        // Stop touching

        return new Response('', Response::HTTP_OK);

If you want to change the controller class or you are not using Symfony Flex, you will need to specify the controller class in the config file:

    controller:           AppBundle\Controller\WebhookController

To know more about how to listen or send messages read the official documentation.


This bundle configure the Symfony container in the BotMan instance. So, you can inject dependencies via constructor in Conversations classes.

In you want to use BotMan instance in your services, you can inject BotMan\BotMan\BotMan class or botman alias.

Drivers command

Some driver will have commands to help to configure it:


The next commands are available:

Command Description
botman:facebook:greeting Configure greeting message from driver configuration
botman:facebook:info Retrieve the current values of Messenger Profile Properties
botman:facebook:start-button Configure Messenger Get started button from driver configuration
botman:facebook:whitelist-domains Configure Messenger whitelisted domains from driver configuration


Command Description
botman:telegram:info Retrieve the current values of Telegram bot and its webhook status
botman:telegram:webhook Configure the system webhook to be used by Telegram bot


Please read for details on our code of conduct, and the process for submitting pull requests to us.


We use SemVer for versioning. For the versions available, see the tags on this repository. However, this project is in very alpha status and config file format can change very quickly.


This project is licensed under the MIT License - see the file for details