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

Ding Notice Laravel Package

wangju/ding-notice

A Laravel package for sending notifications to DingTalk group robots. Configure webhooks and secrets, then push text, markdown, link, action card, or feed card messages via a simple fluent API. Supports signed requests, @mentions, and alerts for deployments, monitoring, and team updates.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Notification channel roadmap — "do we support DingTalk?" This package is the cheapest possible answer to that question. If your roadmap already includes an outbound notification layer (or you're evaluating one), this is a scoping input: the DingTalk transport is a solved, ~200-line problem, so the real roadmap cost is the abstraction around it (channel registry, templating, routing, retries), not the integration itself.
  • Build vs. buy vs. wrap. Given the package's surface area (sign a payload, POST JSON to a webhook, map message types), the honest build estimate is under a day of engineering for an equivalent internal helper. This package is a wrap candidate — adopt to validate demand in a sprint, then either fork it into your codebase or replace it once the channel proves it has users. Release 1.0.10 does not change this math; it changes only how easily the wrap installs.
  • Incident-response and ops tooling prioritization. DingTalk group robots are the dominant alerting surface for teams inside the Alibaba ecosystem (CI results, deploy notices, on-call pages, approval-card actions). If your ICP is Chinese-market engineering orgs, "DingTalk alerts work out of the box" is a checkbox that unblocks deals; if it isn't, this is dead weight.
  • Feature-level use cases worth shipping: deploy/build status pings, monitoring thresholds, daily digest reports, approval action cards with buttons, @-mention routing to on-call owners. Each of these is a small, independently shippable feature — this package lets you ship the first one without waiting on platform work.
  • Platform standardization decision. If you're consolidating on Slack/Teams/Feishu, adding DingTalk is a breadth bet. This package's existence lowers the marginal cost of that bet to near zero, which changes the calculus — breadth becomes cheap enough to test rather than debate.
  • Dependency risk register. 1.0.10 (Guzzle 7 support) is the first release since 2020-11-05 — a heartbeat, not a maintenance commitment. It removes the most common install-time conflict (Laravel 7+ ships Guzzle 7), which makes the package easier to try and slightly harder to dismiss on compatibility grounds alone. It does not add tests, CI, a security-response path, or a maintainer with a track record. The PM decision this forces is unchanged: do we accept an effectively unmaintained dependency in a production notification path, and if so, what's the containment plan (vendor the source, pin the version, own the fork)? The new release arguably makes containment more attractive than dependency adoption — you get the Guzzle 7 fix without the open-ended exposure.

When to Consider This Package

Consider it when:

  • You're on Laravel/PHP and your organization (or your customer's) already standardizes on DingTalk for internal comms.
  • You need outbound-only, one-way notifications — text, markdown, link, actionCard, feedCard to a group robot webhook.
  • You want the webhook signing (timestamp + HMAC-SHA256 secret) and @-mention handling done for you rather than re-deriving it from the DingTalk docs.
  • You need the integration to coexist with a modern Guzzle-based Laravel app. 1.0.10 adds Guzzle 7 support, so the historical dependency conflict with Laravel 7+ is resolved — this is now a plausible composer require, though still not a supported one.
  • You're validating demand or shipping an MVP where a two-hour integration beats a two-week platform build.
  • Notification volume is modest and best-effort delivery is acceptable — failures surface as a missing message, not a broken workflow.

Look elsewhere (or build in-house) when:

  • You need verified PHP 8.2+/Laravel 10–12 support. One Guzzle constraint bump is not a compatibility statement: there are no tests, no CI, and no dependents exercising the package, so assume nothing until you've pinned and tested it on your target runtime.
  • You need inbound traffic — DingTalk callbacks, interactive bot conversations, approval-event subscriptions, or enterprise-app APIs (org directory, calendars, work notifications). This package covers the group-robot webhook only, which is the smallest slice of the DingTalk surface.
  • You need delivery guarantees: queued sends, retry/backoff, rate-limit handling (DingTalk enforces per-robot message caps), dead-letter handling, or templated message governance.
  • You need a multi-channel abstraction — Slack + Teams + Feishu + email behind one interface. Adopting a single-channel package as your notification layer is a decision you'll unwind later.
  • You're subject to audit, SOC2, or data-residency review that demands a maintained dependency with a security-response path. One release in five years is a finding, not a footnote — and a dependency bump is not evidence of a security process.
  • You're building for a Western-market customer base where DingTalk is not in the stack — the integration is pure carrying cost.

Realistic verdict: the high opportunity score reflects an unmaintained niche, not a hidden gem. 1.0.10 is a forward-port of one HTTP client constraint — welcome, and it removes the most common install blocker, but it does not resurrect the project. The right move is still usually to lift the signing and payload-shaping logic into your own DingTalkChannel class, keep the dependency out of your production tree, and revisit a fork only if multi-tenant DingTalk support becomes a product requirement. If anything, 1.0.10 makes the lift cheaper: vendor from this tag rather than the 2020 one, and you inherit Guzzle 7 compatibility for free.

How to Pitch It (Stakeholders)

For executives (one paragraph): DingTalk is Alibaba's enterprise messaging platform and the default internal-comms tool for a large share of Chinese tech companies. This small open-source PHP package sends automated messages — build alerts, monitoring warnings, approval cards, daily digests — into DingTalk group chats from a Laravel application. It's a low-cost way to test whether DingTalk support unlocks demand from Chinese-market customers without committing platform engineering time: days of effort, not weeks. A new version landed this cycle, but it's a single dependency-compatibility fix after five years of silence and there are still no downstream users — so we'd treat it as reference code we own rather than a dependency we rely on. Recommend a timeboxed spike if DingTalk appears in active deal conversations; otherwise defer.

For engineering (the ask):

  • Treat the repo as a specification, not a dependency. Vendor the webhook-signing and message-payload logic into a first-party DingTalkChannel (~1 day), behind our existing notification interface if we have one. Branch from tag 1.0.10, not the old 2020 code — it carries the Guzzle 7 fix.
  • Scope is strictly outbound group-robot webhooks: oapi.dingtalk.com/robot/send, message types text/markdown/link/actionCard/feedCard, signature security mode, and @-mentions. Nothing inbound.
  • Still do not add it to composer.json for anything long-lived. 1.0.10 resolves the Guzzle 7 constraint, which means it will now install on a modern app — but with no tests, no CI, no security process, and zero dependents, installability is not support. We'd own the breakage either way, with less control.
  • Build in what the package omits: queued dispatch, retry with backoff, rate-limit awareness, and a template layer so message copy isn't scattered across call sites.
  • Success criterion for the spike: one real DingTalk group receiving deploy and incident alerts, with failures observable. If that doesn't materialize in a sprint, we drop the channel and lose a day.
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.
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk