dldl/chatbot-platform

聊天机器人平台交换器

dev-master 2017-09-04 09:11 UTC

This package is not auto-updated.

Last update: 2024-09-25 02:19:20 UTC


README

Build Status

该平台未经充分测试,仅为一个概念验证。欢迎任何贡献。

ChatbotPlatform 是一个 PHP 库,允许使用多个动作提供者和多个来源构建多个聊天机器人平台。

当前的实现允许基本的 Ajax 交互或 Facebook Messenger 对话。它很容易扩展。

安装

使用 Composer 安装库

composer require dldl/chatbot-platform

基本用法

ChatbotPlatform 可以作为一个独立的项目使用,也可以集成到任何框架或 CMS 的现有应用中。

对于基本的独立使用,创建一个 index.php 文件,包含以下代码

<?php

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Dotenv\Dotenv;
use dLdL\ChatbotPlatform\ChatbotPlatform;
use dLdL\ChatbotPlatform\Handler\FacebookMessageHandler;
use dLdL\ChatbotPlatform\Handler\AjaxMessageHandler;
use dLdL\ChatbotPlatform\Action\RepeatMessageAction;
use dLdL\ChatbotPlatform\Action\APIAIAction;

require __DIR__.'/vendor/autoload.php';

(new Dotenv())->load(__DIR__.'/.env'); // Requires a .env file at project root to load configuration (see an example on .env.dist file)

$request = Request::createFromGlobals();
$chatbotPlatform = new ChatbotPlatform([
    new FacebookMessageHandler(), // Enables discussion through Facebook messenger (configuration required in .env file)
    new AjaxMessageHandler(), // Enables discussion through basic HTTP requests
], [
    [new APIAIAction(), 10], // Enables API.AI support (configuration required in .env file)
    new RepeatMessageAction(), // Enables a bot repeating anything you said (useful for testing)
]);

$response = $chatbotPlatform->handleRequest($request);
$response->send();

如你所见,你可以传递一个动作实例或一个包含动作实例及其优先级的数组。

然后你可以启动一个服务器,将请求重定向到这个文件,并从 FacebookAjax 脚本发送请求。

对于 Facebook 使用,请参阅 Facebook 开发者 文档。对于 Ajax 支持,你必须向你的服务器发送以下内容的 POST 请求

{
	"message": "Hello world!",
	"sender": "sender-id",
	"recipient": "recipient-id",
	"discussion_id": "12345"
}

回复将立即返回。还支持使用标签的异步回复。启用 AsynchronousMessageAction 并在您的正文中添加 tags: ['ASYNC_GET']tags: ['ASYNC_SAVE'] 以获取或保存消息。消息在阅读后会从 SQLite 数据库中删除。这可以与您自己的动作结合使用,在需要时向消息添加所需的标签。

提供的功能

ChatbotPlatform 可以轻松扩展。它默认提供一些消息处理器和动作提供者。

查看 ChatbotPlatform/Handler 了解可用的消息处理器。查看 ChatbotPlatform/Action 了解可用的动作。

可扩展性

你可以通过实现 MessageHandlerInterface 并将其提供给 ChatbotPlatform 实例来添加自己的消息处理器。

你还应该通过实现 MessageActionInterface 来添加自己的动作,以便在接收到消息时执行自定义操作(例如生成回复或将任务委托给任何外部 API)。