能量武器/laravel-fb-messenger

一个用于集成Facebook Messenger API的Laravel包

1.0.0 2023-03-27 06:11 UTC

This package is auto-updated.

Last update: 2024-09-27 09:37:33 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 数组中

'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。请将 MESSENGER_APP_SECRET 添加到 .env 文件中,并在所有调用上启用证明。如果您不知道如何获取秘密令牌并启用证明,请参阅 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许可证 许可。