casperlaitw/laravel-fb-messenger

Laravel 包,用于集成 Facebook Messenger API

v3.0.0 2021-10-27 02:42 UTC

README

Build Status Coverage Status StyleCI Latest Stable Version Latest Unstable Version Total Downloads Monthly Downloads

这是一个用于 Facebook Messenger 平台 API 的 Laravel 包。

轻松制作您的 Facebook Messenger 聊天机器人。

安装

Composer

composer require casperlaitw/laravel-fb-messenger

Laravel

添加提供者

在您的 config/app.php 文件中将 Casperlaitw\LaravelFbMessenger\LaravelFbMessengerServiceProvider::class 添加到提供者数组中

'providers' => [
    ...
    Casperlaitw\LaravelFbMessenger\LaravelFbMessengerServiceProvider::class,
    ...
],

'alias => [
    ...
    'Menu' => Casperlaitw\LaravelFbMessenger\Facades\MessengerMenu::class,
    ...
],

发布配置

php artisan vendor:publish --provider="Casperlaitw\LaravelFbMessenger\LaravelFbMessengerServiceProvider" --tag="config"

发布菜单配置

支持在文件中定义持久菜单。

像 Laravel 路由一样定义持久菜单。

文档

php artisan vendor:publish --provider="Casperlaitw\LaravelFbMessenger\LaravelFbMessengerServiceProvider" --tag="menu"

配置

安全

几乎每个 API 请求都需要 access_token,如果您想提高您应用程序的安全性,您可以使用 appsecret_proof。请在 .env 文件中添加 MESSENGER_APP_SECRET 并在所有调用上启用证明。 如果您不知道如何获取密钥和启用证明,请查看 Graph Api

.env

MESSENGER_APP_SECRET="APP SECRET TOKEN"

令牌

将您的令牌添加到 .env 文件或修改 fb-messenger.php 配置。

如果您不知道如何获取令牌,请查看 Facebook 开发者

.env

...
MESSENGER_VERIFY_TOKEN="By You Writing"
MESSENGER_APP_TOKEN="Page Access Token"
...

自定义 URL

如果您想自定义 URL,请将 /webhook 替换为您想要的。

最后,您可以通过运行 php artisan route:list 来检查。

 return [
     'verify_token' => env('MESSENGER_VERIFY_TOKEN'),
     'app_token' => env('MESSENGER_APP_TOKEN'),
     'auto_typing' => true,
     'handlers' => [App\DefaultHandler::class],
     'custom_url' => '/chatbot', // like this
     'postbacks' => [],
 ];

自定义处理程序

DefaultHandler 将对用户回复相同的话语。

您可以查看 DefaultHandler

处理程序 必须 继承 BaseHandler

<?php

namespace App;

use Casperlaitw\LaravelFbMessenger\Contracts\BaseHandler;
use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage;
use Casperlaitw\LaravelFbMessenger\Messages\Text;

class DefaultHandler extends BaseHandler
{
    /**
     *  handle method is required. 
     */
    public function handle(ReceiveMessage $message)
    {
        $this->send(new Text($message->getSender(), "Default Handler: {$message->getMessage()}"));
    }
}

Postback 处理程序

创建您的 postback 处理程序

$payload 是您设置 fb:get-start 命令或 按钮消息的 postback 按钮等。

$payload 支持正则表达式或字符串。

<?php

namespace App;

use Casperlaitw\LaravelFbMessenger\Contracts\PostbackHandler;
use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage;
use Casperlaitw\LaravelFbMessenger\Messages\Text;

class StartupPostback extends PostbackHandler
{
    // If webhook get the $payload is `USER_DEFINED_PAYLOAD` will run this postback handler
    protected $payload = 'USER_DEFINED_PAYLOAD'; // You also can use regex!

    /**
     * Handle the chatbot message
     *
     * @param ReceiveMessage $message
     *
     * @return mixed
     */
    public function handle(ReceiveMessage $message)
    {
        $this->send(new Text($message->getSender(), "I got your payload"));
    }
}

添加到 fb-messenger.php 配置

return [
    'verify_token' => env('MESSENGER_VERIFY_TOKEN'),
    'app_token' => env('MESSENGER_APP_TOKEN'),
    'auto_typing' => true,
    'handlers' => [App\YourHandler::class],
    'postbacks' => [
        App\StartupPostback::class,
    ],
];

示例

调试路由

使用 Pusher 调试路由

debug-route

安装 Pusher

请遵循 Laravel 广播 文档来安装 Pusher 包。

配置您的 .env

  APP_DEBUG=true
  BROADCAST_DRIVER=pusher
  PUSHER_APP_ID=
  PUSHER_APP_KEY=
  PUSHER_APP_SECRET=

发布脚本

如果包已更新,您需要再次运行此脚本。确保您的 JavaScript 是最新的

php artisan vendor:publish --provider="Casperlaitw\LaravelFbMessenger\LaravelFbMessengerServiceProvider" --tag="public" --force

打开浏览器

http://[your-site]/fb-messenger/debug

API

API 文档

命令

查看 文档

许可证

本软件包采用 MIT 许可证 许可。