quangtam / messenger
组件,允许您的应用与聊天机器人进行通信。
Requires
- php: >=5.5.0
- guzzlehttp/guzzle: ^6.2
- illuminate/support: >=5.2.0
Requires (Dev)
- mockery/mockery: 0.9.*
- orchestra/database: ~3.2
- orchestra/testbench: ~3.2
- phpunit/phpunit: ~4.5
This package is auto-updated.
Last update: 2024-09-23 07:48:16 UTC
README
Facebook Messenger
本仓库包含一些用于处理Facebook聊天机器人和laravel/lumen的工具。本仓库适用于Facebook聊天机器人的beta版本。肯定会有一些重大变化,但我相信这可以帮到您。
目录
##Laravel的安装
composer required distilleries/messenger
将服务提供商添加到 bootstrap/app.php
$app->register(Distilleries\Messenger\MessengerLumenServiceProvider::class);
##Lumen的安装
composer required distilleries/messenger
将服务提供商添加到 config/app.php
'providers' => [ \Distilleries\Messenger\MessengerServiceProvider::class, ]
并且在外观(也在 config/app.php
)中替换laravel外观 Mail
'aliases' => [ 'Messenger' => 'Distilleries\Messenger\Facades\Messenger' ]
实现合约
为了方便地在您的应用中实现功能,我创建了一个 Distilleries\Messenger\Contracts\MessengerReceiverContract
。
更改服务提供商
要更改类,请访问 app/Providers/MessengerServiceProvider.php
并更改share函数中的类。
$this->app->singleton('Distilleries\Messenger\Contracts\MessengerReceiverContract', function ($app) { return new MyMessengerClass(); });
聊天合约实现示例
class MyMessengerClass implements MessengerContract { public function receivedAuthentication($event) { $senderID = $event->sender->id; Messenger::sendTextMessage($senderID, "Authentication successful"); } public function receivedMessage($event) { $senderID = $event->sender->id; Messenger::sendTextMessage($senderID, 'Test'); Messenger::sendImageMessage($senderID, env('APP_URL') . '/assets/images/logo.png');, Messenger::sendCard($senderID, [ 'template_type' => 'generic', 'elements' => [ [ "title" => "Messenger Boilerplate", "image_url" => env('APP_URL') . '/assets/images/logo.png', "subtitle" => "example subtitle", 'buttons' => [ [ 'type' => "web_url", 'url' => "https://github.com/Distilleries/lumen-messenger-boilerplate", 'title' => "Come download it!" ] ] ] ] ]); } public function receivedDeliveryConfirmation($event) { $senderID = $event->sender->id; Messenger::sendTextMessage($senderID, 'Test'); } public function receivedPostback($event) { $senderID = $event->sender->id; Messenger::sendTextMessage($senderID, 'Test'); } }
创建应用
按照聊天文档创建应用 https://developers.facebook.com/docs/messenger-platform/quickstart。
- 对于webhook uri使用
/webhook
- 对于
VALIDATION_TOKEN
,生成一个随机密钥
在创建应用和页面并关联后,将 .env.example
复制到 .env
VALIDATION_TOKEN=
PAGE_ACCESS_TOKEN=
托管您的应用
您必须托管您的应用才能使用它。Facebook无法向您发送本地webhook。因此,在开始开发之前,请确保您已准备好托管。
默认情况下,您的机器人处于沙盒状态。只有拥有应用权限的人才能与其交谈。
外观
发送文本消息
Messenger::sendTextMessage($senderID, "Authentication successful");
发送图片消息
Messenger::sendImageMessage($senderID, env('APP_URL') . '/assets/images/logo.png');
获取当前用户资料
Messenger::getCurrentUserProfile($senderID);
发送卡片
Messenger::sendCard($senderID, [ 'template_type' => 'generic', 'elements' => [ [ "title" => "Messenger Boilerplate", "image_url" => env('APP_URL') . '/assets/images/logo.png', "subtitle" => "example subtitle", 'buttons' => [ [ 'type' => "web_url", 'url' => "https://github.com/Distilleries/lumen-messenger-boilerplate", 'title' => "Come download it!" ] ] ] ] ]);
示例
在这个聊天类中,您可以说 hi
,机器人会像这样回答
Hi First name Last name
发送带有右下角图标的图片
我为您定制了个人资料图片。您喜欢吗?