Skip to content

Example

Casper Lai edited this page Oct 12, 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"));
}

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.

Clone this wiki locally