notify-channel-copilot

Configures and troubleshoots Nightingale notify channels for DingTalk, Feishu, WeCom, email, SMS, and webhooks.

13.3k|1.8k|Updated Mar 3, 2020
One-click install
npx skills add https://github.com/ccfos/nightingale --skill notify-channel-copilot
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: notify-channel-copilot
Source: https://github.com/ccfos/nightingale/tree/main/aiagent/skill/embedded/builtin/notify-channel-copilot
Command: npx skills add https://github.com/ccfos/nightingale --skill notify-channel-copilot

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Configuring Nightingale (n9e) notification channels involves many platform-specific pitfalls—DingTalk keyword validation, Feishu 9499 Bad Request errors, SMS template parameter mismatches, and alerts that test fine but never reach real recipients. This Skill guides you through modifying, creating, and debugging notify_channel configurations at the correct layer.

Core Features & Use Cases

  • Channel Configuration Guidance: Provides field-level instructions for HTTPRequestConfig, SMTPRequestConfig, and app-based configs across 20+ built-in idents including DingTalk, Feishu, WeCom, Telegram, Slack, PagerDuty, and Flashduty.
  • Troubleshooting Playbooks: Diagnoses common failures like Feishu backslash JSON errors, DingTalk signature mismatches, SMTP TLS handshake failures, and the classic "test works but real alerts don't go out" sendtos resolution problem.
  • Template Context Reference: Documents the six template variables ($event, $events, $sendtos, $sendto, $params, $tpl) available when rendering URLs, headers, and request bodies.
  • Use Case: When a user asks "why does my Feishu webhook return 9499 Bad Request", the Skill identifies unescaped backslashes in label values and recommends wrapping them with jsonMarshal in the body template.

Quick Start

Ask how to configure or fix a Nightingale notify channel, for example: "How do I integrate a DingTalk group robot webhook and fix the keyword validation error?"

Frequently Asked Questions about notify-channel-copilot

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I configure a DingTalk webhook notify channel in Nightingale?

Create a notify channel with ident dingtalk and request_type http, then set the URL to the group robot webhook, Method to POST, and Content-Type to application/json. The message text must contain the keyword configured on the robot, since the built-in provider only supports keyword validation, not signing.

Why does my Feishu webhook return 9499 Bad Request?

Feishu 9499 Bad Request usually means the request body JSON is invalid, most often caused by backslashes in label values like Windows paths breaking JSON escaping. Wrap label values with jsonMarshal in the body template, for example {{$labels.path | jsonMarshal}}, to produce valid JSON strings.

Why does the notify channel test succeed but real alerts never send?

The test button uses recipients typed into the form, while real alerts resolve sendtos from each user's contact_info field matching the channel's ContactKey. If users lack that contact_info field or the notify_rule selects no users, sendtos is empty and nothing is sent.

Does Nightingale support DingTalk or Feishu signature validation?

The built-in DingTalk and Feishu providers do not natively sign requests with timestamp and sign parameters. Use keyword or IP allowlist validation instead, or route through a script channel that computes the signature before calling the webhook.

Can I use a custom webhook ident not in the built-in list?

Yes, any custom ident works if request_type is one of http, script, smtp, flashduty, or pagerduty. The provider registry falls back by request type, so a custom ident with request_type http is handled by the generic callback provider.

How do I debug what request body Nightingale actually sent?

Query the notification_record table for status and error_message, noting the details field truncates at 2048 characters. For the full request and response, set the center log level to debug and grep for 'send http request:' or 'send_http: failed' in n9e-center.log.