In this article, we will integrate the Botman chatbot with Laravel 9. Botman is a package for composers. It will automatically provide the chat interface and its internal functionality once installed.
What is a chatbot?
A bot is a software program that will perform automated tasks. In other words, a bot is a computer program designed to communicate with users. The most natural definition of a chatbot is – a developed program that can have a discussion/conversation with a human. For example, any user could ask the bot an inquiry or a statement, and the bot will respond or perform an activity as appropriate.
Table of Contents
1. Laravel Installation
2. Install Botman And Botman Driver
3. Create a Configuration File
4. Create a Controller
5. Create Route
6. Create Blade File
Laravel Installation
Make sure you have Composer installed on your computer, and if not, install it from https://getcomposer.org/download/ because we will create a Laravel project using Composer.
composer create-project laravel/laravel example-app
Start Laravel Development Server with this command:
php artisan serve
You can open the website with this URL http://127.0.0.1:8000 , open the project in a terminal, and run this command:
composer require botman/botman
After installing this package, run this command to install the Botman driver:
composer require botman/driver-web
Create Configuration File (Optional)
These actions are not required. But here are the driver and cache configuration files.
Let’s make a botman folder in the /config directory.
In the /config/botman directory, create two files:
• config.php
• web.php
Open file /config/botman/config.php and write this code:
<?php
return [
'conversation_cache_time' => 40,
'user_cache_time' => 30,
];
Open file /config/botman/web.php and write this code։
<?php
return [
'matchingData' => [
'driver' => 'web',
],
];
Create Controller
Open the project in a terminal and run this artisan command to generate a controller class:
php artisan make:controller BotManController
After that, the BotManController.php file was created in the /app/Http/Controllers folder, open this BotManController.php file and write this code:
<?php
namespace App\Http\Controllers;
use BotMan\BotMan\BotMan;
use Illuminate\Http\Request;
use BotMan\BotMan\Messages\Incoming\Answer;
class BotManController extends Controller
{
/**
* Place your BotMan logic here.
*/
public function handle()
{
$botman = app('botman');
$botman->hears('{message}', function ($botman, $message) {
if ($message == 'hi') {
$this->askName($botman);
} else {
$botman->reply("write 'hi' for testing...");
}
});
$botman->listen();
}
/**
* Place your BotMan logic here.
*/
public function askName($botman)
{
$botman->ask('Hello! What is your Name?', function (Answer $answer) {
$name = $answer->getText();
$this->say('Nice to meet you ' . $name);
});
}
}
Add Route
Open file routes/web.php and write this code:
use App\Http\Controllers\BotManController; // ...... Route::match(['get', 'post'], '/botman', [BotManController::class, 'handle']);
Create Blade File
Any view file from your application can be opened and used. In this case, I run the default view file welcome.blade.php. open file resources/views/welcome.blade.php and write this code:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" c initial-scale=1">
<title>Botman Chatbot in Laravel - Real Programmer</title>
<link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
</head>
<body>
</body>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/botman-web-widget@0/build/assets/css/chat.min.css">
<script>
var botmanWidget = {
aboutText: 'Write Something',
introMessage: "✋ Hi! I am a real programmer created by Davit Grigoryan"
};
</script>
<script src='https://cdn.jsdelivr.net/npm/botman-web-widget@0/build/js/widget.js'></script>
</html>
Application Testing
So now we can test our chatbot since we have compiled the "php artisan serve" command, and all we have to do is visit http://127.0.0.1:8000/ and see what we have done․
This is all the code. For more information, you can check out my codes in my GitHub repository.
