BotMan integration for Symfony
This is a bundle to use BotMan framework in Symfony.
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
Install the library via Composer by running the following command:
composer require sgomez/botman-bundle
You can skip this step if you are using Symfony Flex.
Enable the bundle in your app/AppKernel.php
file:
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new Sgomez\Bundle\BotmanBundle\BotmanBundle(),
// ...
);
}
You can see a template of config file by running console config:dump-reference botman
.
botman:
drivers:
telegram:
parameters:
token: ~
facebook:
parameters:
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.
Add the router configuration for the webhook in your routing.yaml:
BotmanBundle:
resource: .
type: extra
The webhook path is /botman
by default, but we recommend to change it by security issues.
botman:
path: /botman57637357-65ce-4faf-a9d9-ee2c13011d87
Now, you must create the webhook controller class. By default is configured as App\Controller\WebhookController
:
<?php
// file: src/Controller/WebhookController.php
declare(strict_types=1);
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 {
$bot->reply($bot->getMessage()->getText());
});
// Stop touching
$bot->listen();
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:
botman:
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.
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 CONTRIBUTING.md 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 LICENSE.md file for details