Skip to content

laravel-notification-channels/facebook

Repository files navigation

Facebook Notifications Channel for Laravel 5.3 [WIP]

Latest Version on Packagist Software License Build Status StyleCI SensioLabsInsight Quality Score Total Downloads

This package makes it easy to send notifications using Facebook with Laravel 5.3.

Contents

Installation

You can install the package via composer:

composer require laravel-notification-channels/facebook

You must install the service provider:

// config/app.php 'providers' => [ NotificationChannels\Facebook\FacebookServiceProvider::class, ];

Setting up your Facebook Bot

Follow the Getting Started guide and get a page token.

Then, configure your Facebook Page Token:

// config/services.php 'facebook' => [ 'page-token' => env('FACEBOOK_PAGE_TOKEN', 'YOUR BOT TOKEN HERE') ]

Usage

You can now use the channel in your via() method inside the Notification class.

use NotificationChannels\Facebook\FacebookChannel; use NotificationChannels\Facebook\FacebookMessage; use NotificationChannels\Facebook\Attachment\Button; use NotificationChannels\Facebook\NotificationType; use Illuminate\Notifications\Notification; class InvoicePaid extends Notification { public function via($notifiable) { return [FacebookChannel::class]; } public function toFacebook($notifiable) { $url = url('/invoice/' . $this->invoice->id); return FacebookMessage::create() ->to($this->user->fb_messenger_user_id) // Optional ->text('One of your invoices has been paid!') ->notificationType(NotificationType::REGULAR) // Optional ->buttons([ Button::create('View Invoice', $url)->isTypeWebUrl(), Button::create('Call Us for Support!', '+1(212)555-2368')->isTypePhoneNumber(), Button::create('Start Chatting', ['invoice_id' => $this->invoice->id])->isTypePostback() // Custom payload sent back to your server ]); // Buttons are optional as well. } }

Here's a screenshot preview of the above notification on Facebook Messenger:

Laravel Facebook Notification Example

Routing a message

You can either send the notification by providing with the page-scoped user id (PSID) of the recipient to the to($userId) method like shown in the above example or add a routeNotificationForFacebook() method in your notifiable model:

... /**  * Route notifications for the Facebook channel.  *  * @return int  */ public function routeNotificationForFacebook() { return $this->fb_messenger_user_id; } ...

Available Message methods

  • to($userIdOrPhoneNumber): (string) Recipient's page-scoped User ID or Phone number of with the format +1(212)555-2368. NOTE: Sending a message to phone numbers requires the pages_messaging_phone_number permission. Refer docs for more information.
  • text(''): (string) Notification message.
  • buttons($buttons = []): (array) An array of "Call to Action" buttons (Created using NotificationChannels\Facebook\Attachment\Button::create()). You can add up to 3 buttons of one of the following types: web_url, postback or phone_number. See Button methods below for more details.
  • notificationType(''): (string) Push Notification type: REGULAR will emit a sound/vibration and a phone notification; SILENT_PUSH will just emit a phone notification, NO_PUSH will not emit either. You can make use of NotificationType::REGULAR, NotificationType::SILENT_PUSH and NotificationType::NO_PUSH to make it easier to work with the type. This is an optional method, defaults to REGULAR type.

Available Button methods

  • title(''): (string) Button Title.
  • data(''): (string) Button Data - It can be a web url, postback data or a formated phone number.
  • type(''): (string) Button Type - web_url, postback or phone_number.
  • isTypeWebUrl(): Helper method to create a web_url type button.
  • isTypePhoneNumber(): Helper method to create a phone_number type button.
  • isTypePostback(): Helper method to create a postback type button.

Contributing

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information.