mangoweb / messenger
Facebook Messenger PHP 接口
v1.2.0
2016-11-11 13:58 UTC
Requires
- php: >=7.0
- guzzlehttp/guzzle: ^6.2
- nette/utils: ~2.4
Requires (Dev)
- nette/bootstrap: ~2.4
- nette/tester: ~1.7
- tracy/tracy: ~2.4
This package is not auto-updated.
Last update: 2024-09-14 19:47:36 UTC
README
安装
使用 composer
$ composer require mangoweb/messenger
使用方法
PAGE_ACCESS_TOKEN
必须是 Facebook 页面的 access_token
,并具有 pages_messaging
权限。 RECIPIENT_ID
对于每个 Facebook App、页面和用户都不同。
发送消息
use Mangoweb\Messenger\Page; use Mangoweb\Messenger\PageSender; use Mangoweb\Messenger\Message; use Mangoweb\Messenger\CardElement; use Mangoweb\Messenger\Button; use Mangoweb\Messenger\QuickReply; $page = new Page(PAGE_ACCESS_TOKEN); $sender = new PageSender($page); // Sending simple text message $textMessage = Message::text('Hello world!'); $sender->send(RECIPIENT_ID, $textMessage); // Sending an image attachment $imageMessage = Message::image('https://unsplash.it/400/300'); $sender->send(RECIPIENT_ID, $imageMessage); // Sending complex message with two cards and some button $cardButtons = [ Button::url('Github', 'https://github.com/manGoweb/Messenger') ]; $cards = [ CardElement::create('Lorem', 'ipsum dolor', 'https://github.com/manGoweb/Messenger', 'https://unsplash.it/400/300?random', $cardButtons), CardElement::create('Foo', NULL, NULL, 'https://unsplash.it/400/300?random') ]; $messageWithCards = Message::generic($cards); $sender->send(RECIPIENT_ID, $messageWithCards);
线程管理
use Mangoweb\Messenger\Page; use Mangoweb\Messenger\Greeting; use Mangoweb\Messenger\GetStartedButton; use Mangoweb\Messenger\PersistentMenu; use Mangoweb\Messenger\Button; $page = new Page(PAGE_ACCESS_TOKEN); // Detect if page is already hooked to your Facebook App echo ($page->isHookedToApp(APP_ID) ? 'already hooked' : 'not yet hooked') . "\n"; // Load basic info about a Page $info = $page->loadInfo(); echo $info['name'] . "\n"; // Load info about user as the Page can see them $profile = $page->loadProfile(RECIPIENT_ID); echo $profile['first_name'] . ' ' . $profile['last_name'] . "\n"; // Set greeting text $page->setGreeting(Greeting::text('Hello world')); // Set "get started" button payload $page->setGetStartedButton(GetStartedButton::payload('1')); // Set persistent menu buttons $page->setPersistentMenu(PersistentMenu::buttons([ Button::postback('Help', 'help'), Button::postback('Sign in', 'sign-in'), ]));
接收消息
use Mangoweb\Messenger\Receiver; $receiver = new Receiver(); // Define event hooks $receiver->onMessage[] = function($message) { echo "Someone sent us a message" . "\n"; var_dump($message); }; $receiver->onPostback[] = function($postback) { echo "Someone clicked on a postback button" . "\n"; var_dump($postback); }; // Load JSON payload from Messenger request $httpBody = file_get_contents('php://input'); /* $httpBody = '{ "object":"page", "entry":[ { "id":"PAGE_ID", "time":1458692752478, "messaging":[ { "sender":{ "id":"USER_ID" }, "recipient":{ "id":"PAGE_ID" }, "timestamp":1458692752478, "message":{ "mid":"mid.1458696618141:b4ef9d19ec21086067", "seq":51, "attachments":[ { "type":"image", "payload":{ "url":"IMAGE_URL" } } ] } } ] } ] }'; */ $payload = json_decode($httpBody, TRUE); // Process the payload $receiver->processBody($payload);
测试
添加 tests/php.ini
(您可以使用模板 php-unix.ini
或 php-win.ini
)。
在 tests/local.php
中,您可以定义测试真实 API 调用的常量(您可以使用模板 local.sample.php
)
$ ./vendor/bin/tester -c tests/php.ini tests
许可证
MIT。查看完整的 许可证。