发布于 2026-01-06 0 阅读
0

庆祝 Novu 粉丝突破 2 万!

庆祝 Novu 粉丝突破 2 万!

并非每天都能看到 GitHub 代码库获得超过 2 万颗星。因此,我非常自豪地宣布,截至撰写本文时,我们的代码库已经获得了20.2 万颗星!

庆祝两万颗星

我们衷心感谢开发者社区对 Novu 的大力支持,他们给予了 Novu 诸多喜爱、反馈、PR、星标和改进。正因如此,Novu 才成为全球开发者久经考验、值得信赖的多渠道通知服务!

Novu 是一个开源的通知基础设施,专为工程团队构建,旨在帮助他们构建丰富的产品通知体验,而无需不断重复造轮子。

无需赘言,我再次重申,我们将致力于确保您在测试和将 Novu 集成到您的 Web 应用程序时拥有绝佳的开发体验。

探索我们的演示。

我们创建了一些示例应用程序,展示了如何使用 Novu 设置应用内通知和电子邮件通知。

Next.js 通知中心
https://notification-center-demo.vercel.app

通知中心视图 3
https://novu-notifications-vue3.vercel.app

通知中心 - Angular
https://angular-novu.vercel.app

欢迎在 GitHub 上查看代码

更快地与 Novu SDK 集成

我们努力确保开发者能够使用他们选择的语言,通过流畅且富有表现力的界面与 Novu 的 API 进行交互。

Novu 提供以下语言的原生 SDK:GoNode.jsPHPRubyKotlinPython


import (
      "context"
      "fmt"
      novu "github.com/novuhq/go-novu/lib"
      "log"
    )

subscriberID := "<UNIQUE_SUBSCRIBER_IDENTIFIER>"
apiKey := "<NOVU_API_KEY>"
eventId := "<NOTIFICATION_TEMPLATE_TRIGGER_ID>"

ctx := context.Background()
to := map[string]interface{}{
  "lastName":     "Doe",
  "firstName":    "John",
  "subscriberId": subscriberID,
  "email":        "john@doemail.com",
}

payload := map[string]interface{}{
  "name": "Hello World",
  "organization": map[string]interface{}{
    "logo": "https://happycorp.com/logo.png",
  },
}

data := novu.ITriggerPayloadOptions{To: to, Payload: payload}
novuClient := novu.NewAPIClient(apiKey, &novu.Config{})

resp, err := novuClient.EventApi.Trigger(ctx, eventId, data)
if err != nil {
  log.Fatal("novu error", err.Error())
  return
}

fmt.Println(resp)
Enter fullscreen mode Exit fullscreen mode

Go SDK:向订阅者触发通知

Node.js

  import { Novu } from '@novu/node';

const novu = new Novu(process.env.NOVU_API_KEY);

await novu.trigger('<NOTIFICATION_TEMPLATE_TRIGGER_ID>',
  {
    to: {
      subscriberId: '<UNIQUE_SUBSCRIBER_IDENTIFIER>',
      email: 'john@doemail.com',
      firstName: 'John',
      lastName: 'Doe',
    },
    payload: {
      name: "Hello World",
      organization: {
        logo: 'https://happycorp.com/logo.png',
      },
    },
  }
);
Enter fullscreen mode Exit fullscreen mode

Node SDK:向订阅者触发通知

PHP

use Novu\SDK\Novu;

$novu = new Novu(<NOVU_API_KEY>);

$novu->triggerEvent([
  'name' => '<NOTIFICATION_TEMPLATE_TRIGGER_ID>',
  'payload' => [
    'name' => 'Hello World',
    'organization' => [
            'logo': 'https://happycorp.com/logo.png',
        ],
  ],
  'to' => [
      'subscriberId' => '<UNIQUE_SUBSCRIBER_IDENTIFIER>',
      'phone' => '07983882186',
      'email' => 'john@doemail.com',
      'firstName' => 'John',
      'lastName'  => 'Doe',
  ]
]);
Enter fullscreen mode Exit fullscreen mode

PHP SDK:向订阅者触发通知

红宝石

require 'novu';

client = Novu::Client.new('NOVU_API_KEY')

body = {
  name: "<NOTIFICATION_TEMPLATE_TRIGGER_ID>",
  payload: {
    name: "Hello World",
    organization: {
      logo: "https://happycorp.com/logo.png",
    },
  },
  to: {
    firstName: "John",
    lastName: "Doe",
    email: "john@doemail.com",
    phone: "07983882199",
  },
}.to_json

client.trigger_event(body)
Enter fullscreen mode Exit fullscreen mode

Ruby SDK:向订阅者触发通知

Kotlin

import co.novu.Novu
import co.novu.extensions.subscribers
import co.novu.dto.request.TriggerEventRequest
import co.novu.dto.request.SubscriberRequest

fun main() {
    val novu = Novu(apiKey = "NOVU_API_KEY")

    novu.trigger(TriggerEventRequest.Companion.invoke
        ( 
            name = "<NOTIFICATION_TEMPLATE_TRIGGER_ID>",
            to = SubscriberRequest(
                    subscriberId = "harry_potter"
                    firstName = "Harry",
                    lastName = "Potter",
                    phone = "97X98XX98X1",
                    email = "email@email.com",
                    loacal = "locale",
                    avatar = "avatar",
            ),
            payload = mapOf("name" to "Hello World")
        )
    )
} 
Enter fullscreen mode Exit fullscreen mode

Kotlin SDK:向订阅者触发通知

注意: Java 应用程序可以使用它。

Python

from novu.API import EventApi

event_api = EventApi("https://api.novu.co/api/", "<NOVU_API_KEY>")
event_api.trigger(
    name="<NOTIFICATION_TEMPLATE_TRIGGER_ID>",
    recipients="<YOUR_SUBSCRIBER_ID>",
    payload={
      'name': 'Hello World',
      'organization': {
        'logo': 'https://happycorp.com/logo.png'
      }
    },
)
Enter fullscreen mode Exit fullscreen mode

Python SDK:向订阅者触发通知

Novu 通知中心 - UI 组件

Novu 提供了一系列 UI 组件,可用于创建丰富且可定制的通知中心体验。此外,您还可以使用我们现成的 UI。

它具有部分可更换皮肤的功能,也就是说,您可以在一定程度上自定义用户界面。

Novu 通知中心
通知中心已作为组件集成到您常用的前端框架中:

Novu 通知中心 - 无头模式

你是否曾经引入第三方 UI 组件后发现,为了使 UI 与你的应用程序设计保持一致,需要对 UI 进行大量调整?有时,这会令人沮丧。

我们理解这一点,并决定发布一个新的无头库,以进一步普及通知功能。

此版本为用户提供接近裸机、轻量级、无需渲染的软件,用于将通知功能集成到 Web 应用中。您可以将其用于任何框架,也可以通过利用提供的 API 方法将其集成到纯 JavaScript 应用中。

您可以根据自己的应用需求,将其封装成任何您认为合适的 UI 或设计!

结论

有句谚语说:“不要计算日子,要让每一天都过得有意义!”这仅仅是我们构建世界一流通知基础设施的第一天,该基础设施既强大又易于集成。

我们为开发者准备了很多东西,并将尽可能频繁地发布更新。

立即开始使用 Novu管理您的通知,并在评论区或GitHub上告诉我们您的使用体验

顺便一提,我们的0.14 版本正在开发中。敬请期待后续更新!

文章来源:https://dev.to/novu/celebating-novu-20k-stars-14dk