@faiber/faiber-送信员
已键入通知管理,接收收件箱,频道组,模板,提供商,移动/网络推码注册,集成元数据.
npm install @faiber/faiber-messenger
import { FaiberClient, MemoryTokenProvider } from "@faiber/sdk-core";
import { MessengerApi } from "@faiber/faiber-messenger";
const tokens = new MemoryTokenProvider();
const api = new MessengerApi(new FaiberClient("messenger", {
domains: { messenger: process.env.FAIBER_MESSENGER_URL! },
tokenProvider: tokens,
axios: { timeout: 15_000, withCredentials: true },
}));
const inbox = await api.myInboxPage({ "page[number]": 1, "page[size]": 20 });
const first = inbox.data.data.data[0];
if (first) await api.markMyNotificationRead(first.id);
使用配置 TokenProvider 用于熊鼠认证,或 withCredentials 有安全的 Http 唯一的饼干会话。 在可能的情况下,在记忆中保留符号. 呼叫份额 FaiberClient包括拦截器和信号刷新器 需要自动收件箱操作 notification:self:read 在国内流离失所者中 message 命名空间(后端也接受所记录的别名)和一个非无名演员UUID. 行政赠款不能取代明确的收件箱许可检查.
完整 API
api.operations 曝光所有47个挂载的HTTP操作;输出输入,查询,响应,路径,方法和权限类型. 经审查的后端来源是 c65ae75c6cbed3f07b13a58887e3bf4842f22d22来源审查没有确定一个部署的个案是否采纳或当地基础设施是否接受.
| 能力 | 业务 |
|---|---|
| 频道组和订阅 | 6个 |
| 库存盘点 | 1个 |
| 整合元数据 | 3个 |
| 通知管理、接收信箱和实时 | 10个 |
| 持久受援者流/数 | 2个 |
| 移动推进注册 | 2个 |
| 供应商服务和准备状态 | 第7条 |
| 模板和频道特定内容 | 第8条 |
| 网络推 | 页:1 |
| 健康和原始开放API | 3个 |
已挂载的 OpenAPI 处理器注释列表不完整 。 使用命名为 SDK 的操作进行全程盘点.
管理和排队
频道组使用数字ID和 {name}模板 {name, fa_name, params?, channel_id?}; 内容使用 {channel, text, options?}。内容渠道是 sms, (中文(简体) ), sms-otp, (中文(简体) ), email,或 push_notification。模板、频道组和提供者列表返回内部未绘制的数组 status/message/data。 。 。 .
const template = await api.templates.create({
name: "welcome", fa_name: "Welcome", params: ["name"],
});
await api.createTemplateContent(template.data.data.id, {
channel: "email", text: "Welcome {{name}}",
});
const queued = await api.send({
template_id: template.data.data.id,
channel: "email",
recipients: ["[email protected]"],
params: { name: "Learner" },
});
console.log(queued.data.data.notification_ids);
这个例子要求适当的模板管理赠款和调度服务授权。 无空 recipients 数组优先于单数 recipient发送和发送 api.notifications.create 返回 HTTP 200 键 {notification_ids},而不是行政通知记录. scheduled_at 调度; options.correlation_id 允许本地更新/重新使用行为 。 排队接受不能证明提供者交货.
模板补丁 channel_id: null 清除群;遗漏保留了群。 努尔模板名称/fa name/params和内容文本/选项保存被存储的值. 频道重命名需要非空的修饰名 。 Template/channel删除软去除后返回404;提供者删除为一元硬去除. 所有三个返回 HTTP 200 与 data: {}。 。 。 .
提供方服务投入的使用 {name, provider, channel, options, priority?} 小写提供者名称 smtp, (中文(简体) ), ghasedak, (中文(简体) ), armaghan, (中文(简体) ), pusher,或 firebase选项是后端加密的针对提供者的动态 JSON;每个提供者读取/创建/更新响应返回 options: null。输入/零补丁选项保存证书。 优先级是被签名的16位整数. 设置报告序列化提供者的 enum 标签为 Smtp, (中文(简体) ), Ghasedak, (中文(简体) ), Armaghan, (中文(简体) ), Pusher,或 Firebase。 。 。 .
行政通知的内容包括提供者诊断和路径领域。 他们的列表使用 { "page[number]": 2, "page[size]": 30, recipient?: "user-id" } 元数据嵌入 response.data.data.meta。默认为第1页大小为20;大小为1.100;分页为1。 记录按更新时间排序,然后ID下降. markAllNotificationsRead({recipient}) 需要非空收件人;其结果是 {updated}。 。 。 .
个人收件箱状态
使用 myInboxPage({important:true}) 用于单独的被钉住的部分 important:false 剩下的钱. setMyNotificationState(id,{important:true}) 只改变收件人的重要性. {read:false} 恢复未读状态; {read:true} 标记它读取。 任意一个字段都可以独立更新,也可以一起更新. 现有 markMyNotificationRead(id) 保持兼容。 丢失或被删除的属于另一个收件人的记录和记录返回404.
收货人交付
myInboxPage 和兼容 myInbox({params}) 返回减少的收件人记录。 可忽略标题、描述、路径、目的地、工作 项目 id和事件字段始终存在. description 是收件人信件副本。 提供者诊断、原始接收者路径、参数和提供者选项除外。 目的地是本地动态JSON:在导航前验证一个被识别的形状.
初始化光标为 api.delivery.events() 在此之前 装入收件箱快照,然后用 events({cursor})每页最多包含100个事件、光标和 has_more开放 wait_seconds 等了25秒后再回来 方便和犬事都称默认为35秒的运输超时;明确的选项将它覆盖. 已过期/ 未来光标返回 410 , 需要新快照; 负光标返回 400 。 持久活动包括: cursor 财务报告和审定财务报表 event_id;历史错误的通知ID/时间戳可能无效. 遗留的套接字基载荷没有可持久的光标.
api.delivery.unreadCount() 返回权威收件人通知数,与聊天未读信件分开. registerDevice({application_id, installation_id, platform, token, locale}) 登记Android/iOS的安装。 当令牌旋转并注销后, 重新使用它的非零安装 UUID 。 Tokens必须是20.4096个字符和地址,最多32个;每个应用程序允许每个用户使用10个设备. 未知的注册字段拒绝 。 账户切换可以将一个安装/切换到当前角色.
Web Push Canonical 操作暴露出可用性,注册/移除,实际测试排队以及交付状态. 从用户动作中请求浏览器权限;通过浏览器端点和URL-安全无加码的base64键. 端点必须在端口443上使用经批准的FCM,Mozilla或Apple HTTPS主机. 一个测试只能为当前演员的订阅而排队,最多每分钟排一次(否则排队429个). provider_status 无效,不证明显示或读取。 取消订阅和移动吊销返回成功去除的旗帜,即使缺席或其他用户的ID. 背景传送需要配置的提供者和OS/浏览器权限. 恢复、重新连接或账户更改后调和收件箱状态.
实时配置用途 notificationRealtimeConfig· ; notificationRealtimeAuth 返回原始内容 {auth} 用于当前接收者精确的私人频道。 使用 subscribeRealtime 从 @faiber/sdk-core;在重新连接时重新装入持续收件箱记录,在登录时关闭订阅. 保留 Sockudo 服务器端的秘密 。 见 核心订阅实例。 。 。 .
权力、准备状态和错误
行政路线补助出现在JSDoc的运作中. 调度、明确的用户/频道订阅和流程集成元数据没有处理器权限宏;其实际访问取决于网关/部署政策。 SDK转发器也为这些通话配置了证书. 接受者操作产生自己的角色,不接受任意接受者. 土著行政资料库不通过租户查询场确定租户隔离.
serviceSetupCheckPost() 需求 admin:service:read它不发出通知,但可以与SMTP/Ghasedak证书和API模板联系。 内容 {configured, providerVerified, channels, providers, checkedAt} 报告描述准备状态与HTTP成功分开。 仅限服务器 serviceReadinessPost({headers:{"x-website-otp-token": token}}) 使用部署密钥并返回原始 {ready}; 缺少的令牌配置为503个,错误的令牌为401个. 永远不要把这个秘密放入浏览器代码中.
所有方法都返回 Axios 的完整响应,保存状态,信头和请求ID. 通过普通 Axios 选项,包括 signal, (中文(简体) ), timeout,标题和适配器,作为最后论据. Axios 错误保留后端状态/ 机构 。 本地应用程序错误 {error: string};提取器出错可能具有不同的正体. 错误的查询/路径输入被拒绝,受保护的呼叫可以返回401/403,没有范围行返回404,注册冲突409,没有可用的交付存储/配置503.
const controller = new AbortController();
const pending = api.myInboxPage(undefined, { signal: controller.signal, timeout: 5_000 });
controller.abort();
try { await pending; } catch (error) {
// Handle Axios cancellation or inspect response.status for service failures.
}
使用 @faiber/faiber-ts-sdk 用于一个配置下的多个 Faiber 服务.