Skip to content

Example

Casper Lai edited this page Nov 19, 2016 · 16 revisions

Example only show handle method

Text Message

use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage;
use Casperlaitw\LaravelFbMessenger\Messages\Text;
...
public function handle(ReceiveMessage $message)
{
    $this->send(new Text($message->getSender(), "Your Messages"));
}

Attachment Message

Support reusable in the v2.0

use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage;
use Casperlaitw\LaravelFbMessenger\Messages\Image;
...
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'] ; 
}
...

Attachment Reuseable

If my attachment_id = 1379437372074251

use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage;
use Casperlaitw\LaravelFbMessenger\Messages\Image;
...
public function handle(ReceiveMessage $message)
{
   $image = new Image($message->getSender(), null);
   $image->setAttachmentId(1379437372074251);
   $this->send($image);
}
...

Button Template Message

Default

use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage;
use Casperlaitw\LaravelFbMessenger\Messages\ButtonTemplate;
...
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

Call button only use by itself.

use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage;
use Casperlaitw\LaravelFbMessenger\Messages\ButtonTemplate;
...
public function handle(ReceiveMessage $message)
{
    $button = new ButtonTemplate($message->getSender(), 'Default text');
    $button
        ->setText('Choose')
        ->addCallButton('title', '+15105551234');
    $this->send($button);
}

Generic Template Message

Share button only use in the Generic Template Message

use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage;
use Casperlaitw\LaravelFbMessenger\Messages\GenericTemplate;
...
    $generic = new GenericTemplate($message->getSender());
    $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);

Account Link

use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage;
use Casperlaitw\LaravelFbMessenger\Messages\GenericTemplate;
...
    $generic = new GenericTemplate($message->getSender());
    $generic
        ->addElement('First item', 'description')
        ->buttons()
        ->addPostBackButton('First Button')
        ->addAccountLinkButton('My auth url');
    $this->send($generic);

List Template

use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage;
use Casperlaitw\LaravelFbMessenger\Messages\ListTemplate;
use Casperlaitw\LaravelFbMessenger\Messages\UrlButton;
...
    $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);

Postback Handler

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"));
    }
}

Quick Reply

use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage;
use Casperlaitw\LaravelFbMessenger\Messages\Text;
use Casperlaitw\LaravelFbMessenger\Messages\QuickReply;

...
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);
}

Quick reply image

User click your quick reply, Webhook will receive Postback object. So You should use PostbackHandler processed.

Get User Info

Get user info from sender id.

Response columns reference docs

use Casperlaitw\LaravelFbMessenger\Messages\ReceiveMessage;
use Casperlaitw\LaravelFbMessenger\Messages\User;

...
public function handle(ReceiveMessage $message)
{
    // response will get user info array.
    $response = $this->send(new User($message->getSender());
    
}
Clone this wiki locally