nek / botman-bundle
BotMan integration for Symfony
Installs: 19
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 9
Type:symfony-bundle
Requires
- php: ^7.4
- ext-curl: *
- ext-json: *
- botman/botman: ^2.6
- illuminate/support: ^8.63
- php-http/client-common: ^2.4
- php-http/guzzle6-adapter: ^2.0
- php-http/httplug-bundle: ^1.23
- symfony/cache: ^5.3
- symfony/config: ^5.3
- symfony/console: 5.3.*
- symfony/dependency-injection: ^5.3
- symfony/http-foundation: ^5.3
- symfony/http-kernel: ^5.3
- symfony/routing: ^5.3
- tightenco/collect: ^5.6
Requires (Dev)
- botman/driver-facebook: ^1.11
- botman/driver-telegram: ^1.6
- matthiasnoback/symfony-config-test: ^4.3
- matthiasnoback/symfony-dependency-injection-test: ^4.3
- phpstan/phpstan: ^0.12
- phpstan/phpstan-phpunit: ^0.12
- phpstan/phpstan-symfony: ^0.12
- phpunit/phpunit: ^9.5
- symplify/easy-coding-standard: ^9.4
Suggests
- botman/driver-telegram: ^1.5
README
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
Installation
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:
<?php // 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
.
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.
Step 4: Configure the webhook
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.
Services
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:
Telegram
Contributing
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
Versioning
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.
License
This project is licensed under the MIT License - see the LICENSE.md file for details