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

Laravel Chatwork Laravel Package

sun-asterisk/laravel-chatwork

Laravel Chatwork integration by Sun Asterisk for sending messages through the Chatwork API. Includes a notification channel, facade, and simple configuration so Laravel apps can deliver alerts and updates to Chatwork rooms.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. sun-asterisk/laravel-chatwork is a thin SDK wrapper around the Chatwork REST API exposed through Laravel's idiomatic patterns (a service provider, a facade, and a publishable config file for the API token). That is the right shape for Laravel: it slots into the container as a singleton, resolves config from config/chatwork.php / .env, and lets application code call room, message, member, file, and task endpoints without hand-rolling Guzzle clients. For a TPM, the key framing is that this is an outbound integration primitive, not a chat platform. It is appropriate for one-way operational use cases — CI/CD build notifications, ops alerts into a room, task creation from a workflow — and not appropriate as the backbone for a bidirectional chat feature, since Chatwork's API and webhook surface are limited relative to Slack/Teams.

Integration feasibility. Low effort on paper: composer require, publish config, set CHATWORK_API_TOKEN, inject the facade. A single Laravel engineer should reach a working "post a message to a room" call in under a day. The real feasibility question is not effort but compatibility surface — verify composer.json constraints against your Laravel and PHP versions before committing, because a small research-org package often lags current framework majors.

Technical risk. This is the dominant concern. Signals that must be read together: 17 stars, 0 dependents, a composite score of 0.435, and a research-org namespace (sun-asterisk-research) that suggests an internal utility open-sourced as a byproduct. The high opportunity sub-score (10.97) reflects genuine unmet demand for Chatwork-in-Laravel tooling — which is exactly the condition under which low-adoption packages get adopted anyway and then become orphaned. Concrete risks:

  • Bus factor of effectively one. No evidence of a maintainer rotation or release cadence.
  • Unverified test coverage. No dependents means no downstream CI exercising it; regressions surface only in your app.
  • Auth model is API-token-only. No OAuth flow, so multi-tenant or per-user-delegated scenarios (a plausible product requirement) are out of scope.
  • Thin error semantics. SDK wrappers of this size frequently return raw decoded arrays and let 4xx/429 bubble as generic exceptions — confirm before building retry logic on top.

Key questions to resolve before a go decision.

  1. What Laravel and PHP versions are declared and actually tested in CI?
  2. Is X-ChatWorkToken injection, timeout, and retry configuration exposed, or hardcoded?
  3. How are API errors modeled — typed exceptions, or null/array returns?
  4. Is there any webhook/incoming-event support, or is it strictly request/response?
  5. Commit history: active, or a single 2021-era dump? Are open issues answered?
  6. Are all Chatwork rate-limit headers (429 / Retry-After) surfaced to the caller?

Integration Approach

Stack fit. Best fit is a Laravel 8–10 monolith on PHP 8.x where Chatwork is already the org's chat tool (typical for Japan/SEA-headquartered companies). It is a poor fit for multi-tenant SaaS, for event-driven architectures needing inbound webhooks, or for any Laravel version outside the declared constraint range.

Migration path. Do not call the facade directly from controllers, jobs, and models. Introduce a one-method-deep anti-corruption layer — e.g. App\Contracts\ChatNotifier with a ChatworkNotifier implementation — and bind it in a service provider. This costs roughly half a day and converts the vendor risk from "rewrite on abandonment" to "swap one binding." If you already have raw Guzzle/cURL calls to Chatwork scattered through the codebase, this package is a reasonable consolidation vehicle: route existing call sites through the new interface first, then decide per-endpoint whether to delegate to the SDK or keep bespoke HTTP.

Compatibility. Confirm three things concretely: the illuminate/support constraint against your framework version, package auto-discovery working (or manual provider registration if not), and PHP version floor. If the constraint excludes your Laravel major, pinning with --ignore-platform-reqs is the wrong answer — fork, bump the constraint, run the test suite, and vendor the fork under your org's namespace. At 17 stars and zero dependents, forking carries no meaningful community cost.

Sequencing. Stage the rollout to keep blast radius small:

  1. Spike (1–2 days): post to a sandbox room, verify error and rate-limit behavior empirically rather than from docs.
  2. Non-critical path: wire ops/CI notifications through the abstraction. Failures here are cosmetic, so this is where you learn the package's real behavior in production.
  3. Business-adjacent path: task creation, scheduled digests — anything where a dropped message is recoverable.
  4. Only then consider user-facing or workflow-blocking usage, and only with queueing and dead-letter handling in place.

Operational Impact

Maintenance. Treat this as a vendored dependency with an assumed-abandoned posture. Pin the exact version in composer.json, disable or tightly scope automated dependency bumps for this package, and record the fork procedure in your runbook. Budget a standing ~2 hours/quarter for a health check (last commit, open issues, Chatwork API changelog). The MIT license means forking is legally clean — the cost is engineering attention, not legal review.

Support. Community-only, no SLA, no vendor contact. Support questions about Chatwork's API itself will land on Japanese-language documentation, which is a real ramp-up factor for non-Japanese-speaking teams and should be factored into on-call expectations. Internal ownership must be assigned to a named engineer or team; "the framework team" is not an owner.

Scaling. Two ceilings, neither in the package itself:

  • Chatwork's API rate limits — outbound sends must go through queued jobs with backoff and jitter, not synchronous calls in request handlers. The package will not do this for you.
  • Connection behavior — synchronous HTTP inside a web request adds latency and a new failure dependency to your request path. Every send should be dispatch()ed.

Message volume is unlikely to be the constraint; concurrency during incidents (alert storms) absolutely will be, so batch and deduplicate at the notifier layer.

Failure modes to instrument for.

  • Token rotation/expiry → silent 401s; alert on auth failures explicitly.
  • Rate limiting (429) → dropped notifications unless retried with Retry-After honored.
  • Wrong or stale room ID → 4xx that a thin wrapper may swallow; validate room IDs at config load, not at send time.
  • Unchecked responses → the classic thin-SDK failure where a non-2xx returns an array the caller ignores. Enforce a wrapper that throws.
  • Upstream API change → no maintainer to patch; your fork absorbs it.
  • Alert-path circularity → if Chatwork is your incident channel and this package fails, you lose the channel and the notifier. Keep a secondary alert path.

Ramp-up. Low for the happy path — a Laravel developer reads the facade and ships within hours, which is the package's core value. The hidden ramp is elsewhere: Chatwork API semantics, Japanese docs, and the operational discipline (queueing, retries, alerting) the package does not provide. Net recommendation: adopt with an anti-corruption layer and a pinned version, scoped to non-critical notifications first, and treat the abandonment scenario as the planning baseline rather than the exception.

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.
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle