浏览全部文档 · 22/37

功能简介

Messaging 的 API 与 SDK 可以管理 Provider、Topic、Subscriber,并创建 Email、SMS 和 Push 消息;实际发送依赖已配置且可用的外部 Provider。当前 Console 项目导航没有公开完整入口,因此不能把后端 API 存在写成完整 Console 体验。

当前支持范围

  • 消息触达(PARTIAL):API 与 SDK 可管理 Provider、Topic、Subscriber,并发送邮件、短信和推送;当前 Console 导航隐藏入口,实际发送还依赖外部 Provider。

适用场景

  • 向用户发送事务邮件、短信或 Push。
  • 用 Topic 管理订阅人群。
  • 从受信服务端或 Function 触发通知。

前置条件

  • 实例已配置对应 Email/SMS/Push Provider。
  • 目标用户已有可用 Target 或 Topic Subscription。
  • 服务端 Key 仅授予 messages/providers/topics 所需 Scope。

Console 操作路径

当前 Console 导航隐藏 Messaging 入口。不要向读者承诺可通过 Console 完成 Provider、Topic 和 Message 全流程;使用服务端 SDK/REST,并由运维确认 Provider 配置。

SDK 示例

SDK · TypeScript
import { Client, Messaging } from 'appbase-node-sdk';

const client = new Client()
  .setEndpoint('https://<APPBASE_HOST>/v1')
  .setProject('<PROJECT_ID>')
  .setKey('<API_KEY>');
const messaging = new Messaging(client);

await messaging.createEmail({
  messageId: '<MESSAGE_ID>',
  subject: 'Account notice',
  content: 'Your requested operation completed.',
  users: ['<USER_ID>']
});

REST 示例

REST · Bash
curl 'https://<APPBASE_HOST>/v1/messaging/messages/email' \
  -X POST \
  -H 'X-Appwrite-Project: <PROJECT_ID>' \
  -H 'X-Appwrite-Key: <API_KEY>' \
  -H 'Content-Type: application/json' \
  --data '{"messageId":"<MESSAGE_ID>","subject":"Account notice","content":"Your requested operation completed.","users":["<USER_ID>"]}'

权限模型

Provider 管理和服务端发送要求相应 API Key Scope;终端用户不能获得 Provider Secret。Topic/Subscriber 操作还需遵循目标资源权限和用户 Target 状态。

常见错误

现象处理建议
消息已创建但未送达查看 Message 状态和 Provider 错误;API 接受不代表外部渠道成功。
Provider unavailable检查外部服务凭据、网络和配额。
Target 不存在或失效让用户重新注册 Email/Phone/Push Target。
403检查 messages.write 与 Provider/Topic 管理 Scope。

当前限制

  • 当前 Console 导航未公开完整入口。
  • 发送依赖外部 Provider、网络、模板和目标地址质量。
  • 不承诺 exactly-once 投递;业务侧需要幂等和状态跟踪。

Appwrite 兼容说明

Provider、Topic、Target 与 Message 分类保持兼容;AppBase 是否能实际投递由本实例 Provider 配置决定。

AppBase 增强说明

AppBase 可由 Functions、Auth 流程和业务服务组合 Messaging,但未把外部渠道成功包装成平台保证。

发布状态和验证 Commit

origin/main 条件支持。验证 Commit:0363062a1c7ea08741975bb5ba0c3361663c9353;使用前必须同时满足本页“当前限制”。

权威来源文件列表

  • backend-candidate:app/controllers/api/messaging.php
  • backend-candidate:tests/e2e/Services/Messaging/MessagingBase.php
  • frontend-candidate:console/src/lib/components/sidebar.svelte
  • frontend-candidate:packages/sdks/console-web/src/services/messaging.ts

Appwrite taxonomy 仅作信息架构参考:https://appwrite.io/docs/products/messaging。上游页面不是 AppBase 实现证据。

继续阅读