字母数字发件人 ID
运营商网络能力:支持
注册要求:无需预先注册
发件人 ID 保存:出于安全目的,运营商可能会覆盖发件人 ID
长代码
国内与国际:
- 不支持国内长代码
- 支持国际长代码但可能会被覆盖
发件人 ID 保存:否,国际号码通常用本地格式替换 配置时间:国际号码立即 可用 用例:
- 事务性消息 洪都拉斯 whatsapp 数据
- 客户支持
- 帐户通知
短代码
支持:可通过主要运营商获得 配置时间:典型批准时间为 8-12 周 用例:
- 大规模营销活动
- 双重身份验证
- 紧急警报 评估和优化页面速度
- 客户服务
受限制的短信内容、行业和用例
限制行业:
- 赌博和博彩服务 美国数据库
- 成人内容
- 未经授权的药品销售
- 未经适当授权的政治活动
受监管行业:
- 金融服务需要额外的免责声明
- 医疗保健信息必须维护患者隐私
- 保险服务需要明确的条款和条件
内容过滤
已知运营商过滤器:
- 来自未知域的 URL
- 多个感叹号
- 全大写消息
- 过多特殊字符
避免过滤的最佳实践:
- 使用注册的 URL 缩短服务
- 保持一致的发件人 ID
- 避免垃圾邮件触发词
- 保持消息格式简单
在哥斯达黎加发送短信的最佳做法
信息传递策略
- 尽可能将消息控制在 160 个字符以内
- 包含明确的行动号召
- 慎重使用个性化
- 保持一致的品牌
发送频率和时间
- 每位收件人每周最多可发送 2-4 条消息
- 尊重当地节日和文化活动
- 根据高峰营业时间安排
- 分散批量广告活动
本土化
- 主要语言:西班牙语
- 考虑在旅游区提供双语信息
- 使用本地日期/时间格式
- 尊重文化差异
退出管理
- 立即处理退出
- 维护集中退出数据库
- 通过最后一条消息确认退出
- 定期清理数据库
测试和监控
- 在所有主要运营商上进行测试(Kolbi、Movistar、Claro)
- 监控承运商的运送费率
- 跟踪参与度指标
- 定期对消息内容进行 A/B 测试
哥斯达黎加的 SMS API 集成
Twilio
Twilio 提供强大的 SMS API,全面支持哥斯达黎加。集成需要账户 SID 和身份验证令牌进行身份验证。
import { Twilio } from 'twilio';
// Initialize client with environment variables
const client = new Twilio(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN
);
// Function to send SMS to Costa Rica
async function sendSMSToCostaRica(
to: string,
message: string
): Promise<void> {
try {
// Format number to Costa Rica format (+506)
const formattedNumber = to.startsWith('+506') ? to : `+506${to}`;
const response = await client.messages.create({
body: message,
to: formattedNumber,
from: process.env.TWILIO_PHONE_NUMBER,
// Optional statusCallback URL for delivery updates
statusCallback: 'https://your-callback-url.com/status'
});
console.log(`Message sent successfully! SID: ${response.sid}`);
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
辛奇
Sinch 提供了一个简单的 API 用于发送短信到哥斯达黎加,并支持传递报告和批量发送。
import { SinchClient } from '@sinch/sdk-core';
class SinchSMSService {
private client: SinchClient;
constructor() {
this.client = new SinchClient({
projectId: process.env.SINCH_PROJECT_ID,
apiToken: process.env.SINCH_API_TOKEN
});
}
async sendMessage(to: string, message: string): Promise<void> {
try {
const response = await this.client.sms.batches.send({
to: [to],
from: process.env.SINCH_SENDER_ID,
body: message,
// Enable delivery report
deliveryReport: 'summary'
});
console.log('Message batch ID:', response.id);
} catch (error) {
console.error('Sinch SMS error:', error);
throw error;
}
}
}
信息鸟
MessageBird 为哥斯达黎加提供可靠的短信传递服务,并支持 Unicode 消息和传递追踪。
import { MessageBird } from 'messagebird';
class MessageBirdService {
private client: MessageBird;
constructor() {
this.client = new MessageBird(process.env.MESSAGEBIRD_API_KEY);
}
async sendSMS(
to: string,
message: string,
options: { reference?: string } = {}
): Promise<void> {
try {
const params = {
originator: process.env.MESSAGEBIRD_ORIGINATOR,
recipients: [to],
body: message,
reference: options.reference,
reportUrl: 'https://your-webhook-url.com/delivery-reports'
};
await this.client.messages.create(params);
} catch (error) {
console.error('MessageBird error:', error);
throw error;
}
}
}
普利沃
Plivo 提供支持哥斯达黎加的高级短信功能,包括消息排队和详细的传递报告。
import { Client } from 'plivo';
class PlivoSMSService {
private client: Client;
constructor() {
this.client = new Client(
process.env.PLIVO_AUTH_ID,
process.env.PLIVO_AUTH_TOKEN
);
}
async sendSMS(
to: string,
message: string,
options = { dlrUrl?: string }
): Promise<void> {
try {
const response = await this.client.messages.create({
src: process.env.PLIVO_SOURCE_NUMBER,
dst: to,
text: message,
url: options.dlrUrl,
method: 'POST'
});
console.log('Message UUID:', response.messageUuid);
} catch (error) {
console.error('Plivo error:', error);
throw error;
}
}
}
API 速率限制和吞吐量
- 默认速率限制因提供商而异(通常为每秒 1-10 条消息)
- 实现重试逻辑的指数退避算法
- 使用队列系统(Redis、RabbitMQ)进行大容量发送
- 考虑批量消息的批处理 API
错误处理和报告
- 实施全面的错误日志记录
- 通过 webhook 监控送达回执
- 跟踪常见错误代码:
- 数字格式无效
- 网络错误
- 超出速率限制
- 存储消息状态更新以供分析。