Home>Article>Backend Development> AIML based PHP chatbot

AIML based PHP chatbot

藏色散人
藏色散人 forward
2020-01-11 15:28:45 3125browse

chatbot: PHP chatbot based on AIML

This article introduces a small chatbot program implemented in PHP, using knowledge related to PHP operating dom and mysql database, which can be used for learning. The code can be downloaded fromhttps://github.com/kompasim/chatbot.

0. Reminder

This chat robot is written with reference to AIML 2.5 and Program-P. The aiml tags implemented by this chat robot and the standard aiml tags are determined by certain gap, so the aiml corpus you downloaded from the Internet may not work properly. Suitable for UTF-8 encoded languages where word suffixes change according to different tenses. Interested friends can do their own research and study.

1. Introduction

This is an aiml parser written in PHP. It can currently run normally in the PHP5.4 environment.

2. Database configuration

This program uses a MySQL database. You need to pour the chatbot.sql file into your database, and then add it to chatbot/Config.php Modify the relevant database configuration variables in the file.

4. aiml corpus resources

You can directly edit the aiml/chatbot.aiml file or create a new aiml file and then The aiml/chatbot.aiml file introduces it with the include tag.

5. About aiml file

aiml must be placed in the aiml directory.

chatbot.aiml is the entry file, and the aiml tag in it Can contain multiple category tags, a default tag and multiple include tags.

The other aiml files you add must contain a topic tag in the root aiml tag. This topic tag can contain multiple category tags and a default tag (other aiml files here cannot write include tags, include Tags can only appear in the chatbot.aiml file).

6. Test the chatbot

You can open index.php to chat with the robot for testing.

7. Call the chatbot

If you want to call the chatbot in your own application, we can call its api like this api.php?requestType=talk&input=Hello

8. About matching rules

Matching rules after modification:

* ---> (\S+) # ---> \S+ _ ---> .* = ---> \S*

9. About AIML tags

The aiml tag of this chat robot is different from the standard aiml tag. I have personalized the tags according to my needs. We can find more tags supported by this chat robot in the AIML.MD file.

10. About the return data of api.php

{ "status": "success", "type": "talk", "message": "haha ...", "data": { "arr1": { "name11": "value11", "name12": "value12" }, "arr2": { "name21": "value21", "name22": "value22" } } }

When you access api.php?requestType=talk&userInput=haha, you can get the above json data.

 haha  

11. About userId

When you send a request to api.php in GET mode with the userId parameter, this parameter will be used as the user's unique identifier. If you do not give this parameter, the program will use the user's IP as the unique identifier.

$userId = isset($_REQUEST['userId']) ? $_REQUEST['userId'] : $_SERVER['REMOTE_ADDR'];

12. About multiple chatbots

If you set multiChatbot in the 'chatbot/Config.php' file to false, all users will share a default chatbot. When you set it to true, each user will have an independent chatbot. These chatbots will use userId as the unique identifier. Each user sets attributes such as name, gender, age, etc. for his or her chatbot. Multiple chatbot functionality is especially useful when you are writing a voice assistant or the like, because users can set names for their own voice assistants.

$user = $this->getUser($this->_unique); if ($this->_config->multiChatbot){ $bot = $this->getBot($this->_unique); } else { $bot = $this->getBot("default"); }

13. About userInfo and botInfo

userInfo and botInfo refer to some attributes of users and chatbots, such as name, age, gender, etc. Users can change these attributes. Of course, this is achieved through some tags when we write the aiml corpus. We can learn set, get, del, user, bot and other related tags from AIML.MD.

 my name is *    what is my name  

14. About the database

log is a table that stores logs.

property is a table that stores user and bot related attributes, which is equivalent to our The head of the chatbot helps us remember some attributes. Tags such as set, get, del, user, bot are used to operate this table. The

data table is used to store user input, robot replies, input, that, topic and other tags will operate Parser:: $_data array, each time the program starts running, the program will load data from this table into this array, and then store it in this table when the program ends. The only identifier of the table is userId.

Source code

https://github.com/kompasim/chatbot

The above is the detailed content of AIML based PHP chatbot. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:segmentfault.com. If there is any infringement, please contact admin@php.cn delete