蒸馏厂 / 信使
组件,允许信使机器人和您的应用程序之间的通信。
Requires
- php: >=5.5.0
- guzzlehttp/guzzle: ^6.2
- illuminate/support: 5.2.*
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:19:03 UTC
README
Facebook 信使
此存储库包含一些用于处理 Facebook 信使机器人和 laravel/lumen 的工具。此存储库在 Facebook 信使的测试版上运行。肯定会带来一些重大变化,但我猜这可能对你有帮助。
目录
## 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 首名姓
发送带有右下角图标的图片
我为您自定义了个人资料图片。您喜欢吗?