Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Fb Message Laravel Package

mortezamasumi/fb-message

A Laravel package that makes it easy to send Facebook Messenger messages through the Graph API. It offers a simple, configurable interface for integrating Facebook messaging into your PHP applications, with straightforward setup and seamless Laravel integration.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

What this is (inferred scope). mortezamasumi/fb-message is a community Laravel package that wraps Meta's Messenger Platform / Graph API for sending Facebook Messenger messages from a Laravel application — typically a service provider, publishable config, a facade or client class, and a fluent message builder covering text, attachments, buttons, and templates. The v5.2.0 release is a compatibility release: it adds Laravel 13 support and contains no other feature or fix entries.

Architecture fit. The package sits as a thin outbound adapter over an external HTTP API, which is a natural fit for Laravel's service container and facade conventions. It does not touch persistence, so it imposes no schema or domain-model coupling. If it ships a Notification channel, it slots into the existing Notification pipeline cleanly; if it is facade-only, it should be called from a queued job rather than a controller. Either way the blast radius on application architecture is small, provided we front it with an internal interface (e.g. MessengerSender) so the vendor package is replaceable.

Integration feasibility. Low-to-moderate. Engineering effort is a composer install, config publish, and a page access token in env. The real work is on Meta's side, not in PHP: a Facebook app, a Page, pages_messaging permission, Business Verification, app review for anything beyond your own pages, and a webhook endpoint with verification-token and signature handling. Teams consistently underestimate this and schedule the whole task as an afternoon of Laravel work.

Technical risk.

  • Bus factor. Single-maintainer package with no visible commercial backing. Assume no SLA and no guaranteed response to security reports.
  • Version churn. Reaching v5.x implies four prior major bumps. Minor releases have been non-breaking by declaration, but we have no changelog for v4→v5 in hand and must assume earlier majors carried breaking changes.
  • Unverified compatibility claim. v5.2.0 is a one-commit change ("support Laravel 13"). We do not know from the release notes whether it widened the illuminate/* constraint, dropped support for older Laravel versions, or bumped the PHP floor. A minor release should not narrow the support matrix — verify before trusting it.
  • Platform-side deprecation risk. Messenger Platform API versions are retired on a fixed cadence. The package's pinned Graph API version, not its Laravel version, is the likeliest thing to break in production.
  • Policy risk. The 24-hour standard messaging window, message tags, and per-page rate limits are business-rule constraints the package cannot abstract away. A technically successful integration can still be non-compliant.

Key questions for the maintainer / spike.

  1. Which Graph API version is pinned, and is it configurable?
  2. Does it verify X-Hub-Signature-256 on inbound webhooks, or is that left to us?
  3. Does it map Graph API error codes and subcodes (190 token expiry, 613 rate limit, 10 policy violation) into typed exceptions?
  4. What is the CI matrix and test coverage after v5.2.0 — is Laravel 13 actually tested or only declared in composer.json?
  5. How are long-lived page tokens refreshed, and does it support multiple pages per app?
  6. Is the message builder complete enough for our templates, or will we drop to raw payloads?

Integration Approach

Stack fit. Presumed target is Laravel 10–13 with PHP 8.2+. It coexists with queues, notifications, and HTTP clients without conflict. Confirm the support matrix from composer.json rather than the release note — adding Laravel 13 should widen the illuminate/support constraint, and if it narrowed it, that is effectively a breaking change for anyone on Laravel 10/11 and would need a major version.

Migration path. Two cases:

  • Greenfield Messenger integration: adopt directly, but wrap it behind our own MessengerSender contract and a FakeMessenger test double from day one. This costs a day and buys us a one-file swap if the package is abandoned or Meta changes shape.
  • Replacing hand-rolled Graph API calls: port call sites behind the same contract, run the package and legacy path in parallel on a low-traffic page, and diff payloads before cutting over. Do not migrate and add new message types in the same change.

Compatibility.

  • Verify v5.2.0 against our actual Laravel and PHP versions in a scratch branch before committing to the upgrade; a compatibility release that has never run our test suite is a hypothesis, not a fact.
  • Check that the Laravel 13 bump did not silently raise the PHP requirement past our runtime.
  • Pin the package to a caret range (^5.2) and commit the lockfile; avoid dev-main.

Sequencing.

  1. Spike (2–3 days): send a text message to a test Page from a staging app; confirm error handling and logging shape.
  2. Meta prerequisites (parallel, longest lead time): app creation, Business Verification, permission grants, webhook endpoint with signature verification.
  3. Contract + adapter: internal interface, fake implementation, unit tests around payload construction.
  4. Outbound in staging: queued job, retry policy with backoff on 613, dead-letter on 190.
  5. Inbound webhooks: idempotent handling keyed on mid, since Meta retries deliveries.
  6. Production: one Page, one message type, then expand.

Operational Impact

Maintenance. Low code churn but non-zero attention: watch the repo's release feed, and — more importantly — subscribe to Meta's Graph API changelog. Budget roughly a day per quarter for dependency review and a half-day per Graph API version retirement. Pin the Graph API version explicitly in config so a package bump cannot silently move it.

Support. No vendor SLA. We are the support tier. Nominate a named owner for the integration; an unowned third-party adapter is the classic way a channel quietly stops delivering. Keep an internal README covering token rotation and the escalation path to Meta's App Dashboard.

Scaling. Outbound sends are I/O-bound, so throughput is a queue-and-rate-limiter problem, not a PHP problem. Messenger enforces per-Page rate limits and a per-user messaging window; a single Page is a shared bottleneck across all our use cases. If we expect fan-out (broadcasts, high-volume notifications), we need multiple Pages or a queued sender with concurrency caps and 613-aware backoff, plus alerting on queue depth and on the ratio of 613s to sends.

Failure modes to instrument.

  • Expired or revoked page token (error 190) — silent outage until a send fails; alert on it.
  • User blocked the Page or deleted the thread — expected, must not be retried.
  • Rate limiting (613) — retry with jitter, never tight-loop.
  • Policy rejection (outside the 24-hour window, invalid message tag) — a product-logic bug masquerading as an API error.
  • Attachment size/type limits and payload size ceilings — reject at build time, not at send time.
  • Webhook delivery retries causing duplicate processing — enforce idempotency on message ID.
  • Graph API version retirement — hard failure across all sends; track the sunset date as a calendar item.

Ramp-up. A Laravel developer can send their first message in under an hour. Realistic time-to-competence is closer to two weeks: one to two days on the package itself, the remainder on Meta's app configuration, permissions, review, and messaging policy — which is where teams actually get stuck. Plan onboarding around the Meta side and treat the package as the easy part.

Assessment of the release. v5.2.0 is a routine forward-compatibility update and does not change our overall posture. It is a mild positive signal — the maintainer is tracking the Laravel release train rather than letting the package rot — but it is one commit and does not address the structural risks above (bus factor, Graph API versioning, error mapping). Proceed with a time-boxed spike and the adapter-wrapper approach; do not adopt without it.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource