donmarkus / chatbot
此软件包使您能够轻松地用PHP开始构建聊天机器人
Requires
- php: >=7.0
- iboldurev/api-ai-php: ^0.2.5
- monolog/monolog: ^1.22
- pimax/fb-messenger-php: ^1.0
- tgallice/wit-php: ^0.3.1
- vlucas/phpdotenv: ^2.4
Requires (Dev)
- phpunit/phpunit: ^6.0
This package is not auto-updated.
Last update: 2024-09-18 20:49:45 UTC
README
此软件包使您能够轻松地用PHP开始构建聊天机器人。
如果您想用PHP开始构建聊天机器人,那么这个模板是一个完美的起点。它包括您需要知道的一切,以将您的应用程序连接到消息平台。您将找到简单的示例来回复聊天消息。(目前仅支持Facebook Messenger)
此外,此模板还支持如 api.ai 和 wit.ai 这样的聊天机器人平台。这将帮助您处理和理解用户的意图。
此软件包使用 PSR-1 和 PSR-2,如果您注意到合规性疏忽,请通过拉取请求发送补丁。
要求
-
= PHP 7
- Composer
支持的聊天平台
- Facebook Messenger
- 更多即将到来
涵盖
- 创建FB聊天应用
- 创建FB页面
- 设置Chatbot PHP模板
- 创建webhook
- 将Facebook应用连接到Facebook页面
未涵盖
- 如何使用api.ai
- 如何使用wit.ai
安装
创建FB页面
首先登录Facebook,并在创建Facebook页面。页面不需要是公开的。选择最适合您的聊天机器人的设置,但测试时并不重要。
创建FB聊天应用
转到开发者应用页面。点击“添加新应用”并填写基本应用字段。
在“产品设置”页面选择聊天机器人并点击“开始”。
现在我们需要创建一个令牌,以便我们的应用能够访问我们的Facebook页面。选择创建的页面,授予权限并复制生成的令牌。我们稍后会用到它。
设置Chatbot PHP模板
首先克隆仓库并删除现有的git文件夹。
git clone https://github.com/donmarkus/chatbot-php-boilerplate.git chatbot-boilerplate
cd chatbot-boilerplate
rm -rf .git
现在我们需要安装Composer依赖项
composer install
此模板使用.env
文件(环境)。所有敏感数据,如密钥,都存储在此处。此文件应列入您的.gitignore
文件。这是因为这些数据不应包含在您的存储库中。此外,您能够在不同的环境中使用不同的密钥。(例如,在本地环境中使用测试聊天机器人平台帐户)
在此模板中包含了一个名为.env.example
的示例文件。将其重命名以使用它。
mv .env.example .env
接下来查看此文件。目前有两个值需要考虑。第一个是WEBHOOK_VERIFY_TOKEN
,这是一个您可以在此处定义的令牌。现在填写一些内容,我们稍后会用到它。第二个值是PAGE_ACCESS_TOKEN
,这是我们之前从聊天机器人应用中获得的。在此处填写它。完美!
为聊天机器人应用创建webhook
在我们的PHP应用程序中,我们需要有一个webhook。这意味着一个公开的URL,Facebook可以与之通信。每次用户在FB聊天中写入消息时,FB都会将其发送到该URL,这是进入我们PHP应用程序的入口点。在此模板中,它是index.php文件。
因此,我们需要指向index.php文件的公开URL,这里有两个选项供您选择。
使其生效(独立)
如果您有服务器,可以将代码推送到那里,您将拥有对它的公共访问权限。URL可能看起来像这样:https://yourserver.com/chatbot/examples/index.php
。
本地执行
测试时,如果您不需要将每个更改推送到实时服务器以进行测试,那就简单多了。这就是我为什么使用本地公共URL的原因。现在有多个服务可以生成指向您本地服务器的公共URL。请查看ngrok,或者使用Laravel Valet Sharing,这是我的选择,因为我已经在使用Valet。 (Laravel Valet也是在底层使用ngrok)
无论您如何操作,只需确保有一个指向index.php
文件的公共安全URL。 (https!) 这是我的URL:https://7def2gH4.ngrok.io/examples/index.php
将Facebook应用连接到您的应用程序
现在我们需要设置webhook。回到您的Facebook应用设置,在Webhooks部分点击设置Webhooks
。
填写公共URL,从.env
文件中的WEBHOOK_VERIFY_TOKEN
,勾选所有订阅字段,然后点击验证并保存
。
如果您一切操作正确,那么现在您已经有了正在运行的webhook。如果不正确,您将在webhook URL字段看到错误图标。这通常是因为URL或令牌不正确。
将Facebook应用连接到Facebook页面
现在,安装的最后一步将确保我们的Facebook应用已连接到Facebook页面。为此,您的Webhooks设置页面中有一个下拉菜单。在这里选择您的页面,然后点击订阅
。
测试它
所以我们最终可以测试整个设置。转到您的Facebook页面,点击消息按钮以发送消息。键入Hi
并按回车键。现在您应该看到这个回答:Define your own logic to reply to this message: Hi
如果您看到这个,那么恭喜您。您成功了!您已成功安装了Chatbot PHP样板,并收到了您的第一条回复。
如果您没有收到回复,那么可能出了点问题 =( 检查您服务器的日志文件以获取更多信息。此外,您还可以使用内置的Monolog Logger来调试应用程序。
用法
示例1:静态消息
在您的index.php
文件中,您会找到这样一行代码
$replyMessage = $chatbotHelper->getAnswer($message);
在这里,用户的消息被用来获取一个答案。在这种情况下,消息在ChatbotAi
方法的getAnswer
中进行分析。它只是返回带有原始消息的静态文本。如以下所述,您可以定义自己的逻辑来响应消息。也常用PHP的preg_match
函数在消息中查找单词。在这个例子中,如果消息包含hi
、hey
或hello
,该方法将返回一些问候文本。
示例2:外汇汇率
这里使用公共API向用户返回外汇汇率。用户可以输入货币如EUR
、USD
、CHF
等。这是一个简单的例子,但可以看到如何处理外部API。
示例3:使用机器人平台
机器人平台可以帮助您分析用户消息的意图。目前仅支持api.ai和wit.ai。
API.ai
要使用api.ai,您只需将参数apiapi
添加到getAnswer
方法中。在您的index.php
文件中也有一个示例。
// Example 3: If you want to use a bot platform like api.ai try // Don't forget to provide your api.ai token in the .env file $replyMessage = $chatbotHelper->getAnswer($message, 'apiai');
Wit.ai
要使用wit.ai,您只需将参数witai
添加到getAnswer
方法中。在您的index.php
文件中也有一个示例。
// Example 4: If you want to use a bot platform like wit.ai // Don't forget to place your Wit.ai Client access token in the .env file (WITAI_TOKEN) $replyMessage = $chatbotHelper->getAnswer($message, 'witai');
Wit.ai将分析用户的消息。此示例实现将仅发送用户的意图。
完整示例 examples/index.php
<?php use DonMarkus\ChatbotHelper; require_once __DIR__ . '/../vendor/autoload.php'; // Create the chatbot helper instance $chatbotHelper = new ChatbotHelper(); // Facebook webhook verification $chatbotHelper->verifyWebhook($_REQUEST); // Get the fb users data $senderId = $chatbotHelper->getSenderId(); if ($senderId && $chatbotHelper->isMessage()) { // Get the user's message $message = $chatbotHelper->getMessage(); // Example 1: Get a static message back $replyMessage = $chatbotHelper->getAnswer($message); // Example 2: Get foreign exchange rates // $replyMessage = $chatbotHelper->getAnswer($message, 'rates'); // Example 3: If you want to use a bot platform like api.ai // Don't forget to place your Api.ai Client access token in the .env file // $replyMessage = $chatbotHelper->getAnswer($message, 'apiai'); // Example 4: If you want to use a bot platform like wit.ai // Don't forget to place your Wit.ai Client access token in the .env file (WITAI_TOKEN) // $replyMessage = $chatbotHelper->getAnswer($message, 'witai'); // Send the answer back to the Facebook chat $chatbotHelper->send($senderId, $replyMessage); }
当然,您需要在Wit.ai应用程序中添加一个故事,如下所示
包含的包
- tgallice/wit-php 用于Wit.ia集成
- pimax/fb-messenger-php 用于Facebook Messenger Bot API
- monolog/monolog 用于日志记录
- vlucas/phpdotenv 用于加载配置
- iboldurev/api-ai-php 用于Api.ia集成
特别感谢
许可证
MIT许可证(MIT)。