Skip to content

Example

Casper Lai edited this page Nov 6, 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);

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