- Notifications
You must be signed in to change notification settings - Fork 26
Example
Casper Lai edited this page Aug 9, 2017 · 16 revisions
Example only show handle method
namespace App; use Casperlaitw\LaravelFbMessenger\Contracts\BaseHandler; use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage; use Casperlaitw\LaravelFbMessenger\Messages\Text; class TextHandler extends BaseHandler { public function handle(ReceiveMessage $message) { $this->send(new Text($message->getSender(), "Your Messages")); } }Support reusable in the v2.0
namespace App; use Casperlaitw\LaravelFbMessenger\Contracts\BaseHandler; use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage; use Casperlaitw\LaravelFbMessenger\Messages\Image; class ImageHandler extends BaseHandler { public function handle(ReceiveMessage $message) { $image = new Image($message->getSender(), 'https://petersapparel.parseapp.com/img/shirt.png'); // If you want to reusable. $image->enableReuse(); $response = $this->send($image); // You can store attachment_id to reusable $attachmentId = $response->getResponse()['attachment_id'] ; } }If my attachment_id = 1379437372074251
namespace App; use Casperlaitw\LaravelFbMessenger\Contracts\BaseHandler; use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage; use Casperlaitw\LaravelFbMessenger\Messages\Image; class AttachmentReUseableHandler extends BaseHandler { public function handle(ReceiveMessage $message) { $image = new Image($message->getSender(), null); $image->setAttachmentId(1379437372074251); $this->send($image); } }namespace App; use Casperlaitw\LaravelFbMessenger\Contracts\BaseHandler; use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage; use Casperlaitw\LaravelFbMessenger\Messages\ButtonTemplate; class ButtonTemplateHandler extends BaseHandler { public function handle(ReceiveMessage $message) { $button = new ButtonTemplate($message->getSender(), 'Default text'); $button ->setText('Choose') ->addPostBackButton('First Bbutton') ->addPostBackButton('Second Button') ->addPostBackButton('Third button'); $this->send($button); } }Call button only use by itself.
namespace App; use Casperlaitw\LaravelFbMessenger\Contracts\BaseHandler; use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage; use Casperlaitw\LaravelFbMessenger\Messages\ButtonTemplate; class CallButtonHandler extends BaseHandler { public function handle(ReceiveMessage $message) { $button = new ButtonTemplate($message->getSender(), 'Default text'); $button ->setText('Choose') ->addCallButton('title', '+15105551234'); $this->send($button); } }Share button only use in the Generic Template Message
namespace App; use Casperlaitw\LaravelFbMessenger\Contracts\BaseHandler; use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage; use Casperlaitw\LaravelFbMessenger\Messages\GenericTemplate; class GenericTemplateHandler extends BaseHandler { public function handle(ReceiveMessage $message) { $generic = new GenericTemplate($message->getSender()); $defaultButton = new UrlButton(null, 'https://developers.facebook.com/docs/messenger-platform/send-api-reference/list-template'); $generic ->addElement('First item', 'description') ->buttons() ->addPostBackButton('First Button') ->addWebButton('facebook', 'https://facebook.com'); $generic->addElement('Second item', 'description') ->buttons() ->addPostBackButton('Second Button') ->addWebButton('google', 'http://www.google.com') ->addShareButton(); $this->send($generic); } }Support in v2.0
namespace App; use Casperlaitw\LaravelFbMessenger\Contracts\BaseHandler; use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage; use Casperlaitw\LaravelFbMessenger\Messages\GenericTemplate; class AccountLinkHandler extends BaseHandler { public function handle(ReceiveMessage $message) { $generic = new GenericTemplate($message->getSender()); $generic ->addElement('First item', 'description') ->buttons() ->addPostBackButton('First Button') ->addAccountLinkButton('My auth url'); $this->send($generic); } }namespace App; use Casperlaitw\LaravelFbMessenger\Contracts\BaseHandler; use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage; use Casperlaitw\LaravelFbMessenger\Messages\ListTemplate; use Casperlaitw\LaravelFbMessenger\Messages\UrlButton; class ListTemplateHandler extends BaseHandler { public function handle(ReceiveMessage $message) { $template = new ListTemplate($message->getSender()); $template->setButton(new Button(Button::TYPE_POSTBACK, 'Read More', 'GET_MORE_LIST')); $defaultButton = new UrlButton(null, 'https://developers.facebook.com/docs/messenger-platform/send-api-reference/list-template'); $template->addElement('Moving list', 'Help you to check all of them', 'http://www.mk-sokolovi.com/wp/wp-content/uploads/2013/07/T-shirt-Vector.jpg') ->setDefaultAction($defaultButton) ->buttons() ->addWebButton('View', 'https://developers.facebook.com/docs/messenger-platform/send-api-reference/list-template'); $template->addElement('Cleaning list', 'Help you to check all of them', 'http://www.mk-sokolovi.com/wp/wp-content/uploads/2013/07/T-shirt-Vector.jpg') ->setDefaultAction($defaultButton) ->buttons() ->addWebButton('View', 'https://developers.facebook.com/docs/messenger-platform/send-api-reference/list-template'); $this->send($template); } }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'; /** * Handle the chatbot message * * @param ReceiveMessage $message * * @return mixed */ public function handle(ReceiveMessage $message) { $this->send(new Text($message->getSender(), "I got your payload")); } }If you want to get payload equals MORE 1 ~ MORE 99 or more...
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 `MORE 1` or `MORE (\d+)` will run this postback handler protected $payload = '^MORE\s(?P<id>[0-9]*)$'; /** * Handle the chatbot message * * @param ReceiveMessage $message * * @return mixed */ public function handle(ReceiveMessage $message) { $id = $this->getId($message->getPostback()); $this->send(new Text($message->getSender(), "I got your payload. Your id: {$id}")); } /** * @param $payload * @return string */ protected function getId($payload) { preg_match("/{$this->payload}/", $payload, $matches); return $matches['id']; } }namespace App; use Casperlaitw\LaravelFbMessenger\Contracts\BaseHandler; use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage; use Casperlaitw\LaravelFbMessenger\Messages\Text; use Casperlaitw\LaravelFbMessenger\Messages\QuickReply; class QuickReplyHandler extends BaseHandler { public function handle(ReceiveMessage $message) { $text = new Text($message->getSender(), "Default Handler: {$message->getMessage()}"); $text->addQuick(new QuickReply('Red', 'PAYLOAD_RED')) ->addQuick(new QuickReply('Green', 'PAYLOAD_GREEN')); $this->send($text); } }
User click your quick reply, Webhook will receive Postback object. So You should use PostbackHandler processed.
Get user info from sender id.
Response columns reference docs
namespace App; use Casperlaitw\LaravelFbMessenger\Contracts\BaseHandler; use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage; use Casperlaitw\LaravelFbMessenger\Messages\User; class UserInfoHandler extends BaseHandler { public function handle(ReceiveMessage $message) { // response will get user info array. $response = $this->send(new User($message->getSender()); } }