功能简介
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>"]}'常见错误
| 现象 | 处理建议 |
|---|---|
| 消息已创建但未送达 | 查看 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.phpbackend-candidate:tests/e2e/Services/Messaging/MessagingBase.phpfrontend-candidate:console/src/lib/components/sidebar.sveltefrontend-candidate:packages/sdks/console-web/src/services/messaging.ts
Appwrite taxonomy 仅作信息架构参考:https://appwrite.io/docs/products/messaging。上游页面不是 AppBase 实现证据。