科特迪瓦短信市场概况
区域设置名称: | 科特迪瓦 |
---|---|
ISO 代码: | CI |
地区 | 中东和非洲 |
移动国家代码 (MCC) | 612 |
拨号代码 | +225 |
市场状况:科特迪瓦拥有充满活力的移动市场,主要由三泰国 whatsapp 数据家运营商主导:Orange (07)、MTN (05) 和 Moov/Etisalat (01)。该国最近在 2021 年进行了一次重大编号方案更新,将电话号码从 8 位数字过渡到 10 位数字,以适应日益增长的移动普及。虽然 OTT 消息应用程序在城市地区越来越受欢迎,但短信仍然是一个重要的沟通渠道,尤其是对于企业对消费者的通信和身份验证服务而言。
科特迪瓦的主要短信功能和能力
科特迪瓦支持大多数标准短信功能,包括串联消息和字母数字发件人 ID,但目前不提供双向短信功能。
双向短信支持
目前,科特迪瓦不支持双向短信。企业应围绕单向通信流程设计短信策略。
串联消息(分段短信)
支持:是的,对于超出标准长度限制的消息,支持连接,但支持可能因发件人 ID 类型而异。
消息长度规则:消息按照标准短信字符限制进行拆分:
- GSM-7 编码为 160 个字符 意大利短信最佳实践、合规性和功能
- UCS-2 编码为 70 个字符
编码注意事项:支持 GSM-7 和 UCS-2 编码。包含特殊字符或非拉丁字母的消息需要 UCS-2。
MMS 支持
MMS 消息会自动转换为 SMS,并嵌入 URL 链接以访问多媒体内容。这确保了所有设备的兼容性,同时仍支持丰富的媒体共享功能。
收件人电话号码兼容性
号码可携性
科特迪瓦不提供号码可携性。手机号码仍与原网络运营商绑定,这样更容易确保消息路由准确。
向固定电话发送短信
科特迪瓦不支持向固定电话号码发送短信。尝试通过 REST API 向固定电话号码发送消息将导致 400 响应错误(代码 21614),不会发送任何消息,也不会向帐户收取任何费用。
科特迪瓦短信合规与监管指南
科特迪瓦的短信通信受科特迪瓦电信监管局 (ARTCI) 监管。虽然具体的短信营销法规仍在制定中,但企业必须遵守一般电信准则和数据隐私要求。
同意和选择加入
明确同意要求:
- 发送营销信息前必须获得书面或电子同意 领导孟加拉国搜索引擎优化
- 保存何时以及如何获得同意的详细记录
- 在选择加入期间明确传达消息的目的和频率
收集同意的最佳做法:
- 对营销名单使用双重选择加入流程
- 在注册时提供明确的条款和条件
- 记录同意时间戳、来源和范围
- 在注册时启用简单的退出方法
HELP/STOP 和其他命令
- 所有短信活动必须支持标准 STOP 命令
- 应能识别法语和英语的 HELP 和 STOP 关键字
- 常见的法语关键词包括:ARRETER、STOP、DESABONNER
- 对帮助/停止命令的响应应立即且免费
请勿致电/请勿打扰登记
尽管科特迪瓦没有设立官方的“禁止致电”登记处,但企业应该:
- 维护自己的抑制名单
- 24 小时内尊重退出请求
- 保留退出号码记录至少 12 个月
- 定期清理联系人列表以删除未订阅的号码
时区敏感度
时间限制:
- 避免在当地时间晚上 10 点至早上 6 点之间发送消息
- 限制每位订阅者每天发送的消息数量为 3 条
- 例外情况:紧急或请求的消息可以在这些时间之外发送
科特迪瓦的电话号码选项和短信发件人类型
字母数字发件人 ID
运营商网络能力:全面支持所有主流网络
注册要求:需要预先注册;不允许动态使用
发送者 ID 保存:是,注册 ID 会在网络中保存
配置时间:注册审批大约需要 3 周
长代码
国内与国际:
- 国内长代码:支持,但无法通过国际提供商获得
- 国际长代码:支持,但受限于 MTN 网络
发件人 ID 保存:否,国际长代码可能会被运营商修改
用例:推荐用于交易消息和 2FA
短代码
支持:可通过主要运营商
获得 配置时间:批准和设置需 8-12 周
用例:适用于:
- 大规模营销活动
- 双重身份验证
- 客户服务互动
受限制的短信内容、行业和用例
限制行业:
- 赌博和博彩服务
- 成人内容或服务
- 加密货币促销
- 未经适当授权的政治信息
内容过滤
运营商过滤规则:
- 包含特定关键字的邮件可能会被屏蔽
- URL 应来自批准的域
- 消息内容应为法语或英语
避免过滤的最佳实践:
- 避免过多标点
- 不要全部使用大写字母
- 限制营销信息中的 URL 使用
- 保持内容清晰、专业
在科特迪瓦发送短信的最佳做法
信息传递策略
- 尽可能将消息控制在 160 个字符以内
- 包含明确的号召性用语
- 使用订阅者姓名或相关详细信息个性化消息
- 在各个活动中保持一致的发件人 ID
发送频率和时间
- 每位订阅者每天最多发送 3 条消息
- 尊重宗教节日和周日
- 高峰互动时间:当地时间上午 9 点至下午 6 点
- 间隔发送活动信息以避免收件人不知所措
本土化
- 主要语言:法语
- 考虑使用双语信息进行重要沟通
- 使用本地日期和时间格式
- 尊重内容中的文化敏感性
退出管理
- 24 小时内处理退出
- 发送退出成功的确认信息
- 在所有广告活动中维护统一的退出列表
- 定期审核选择退出合规性
测试和监控
- 在三大运营商 (Orange、MTN、Moov) 上进行测试
- 监控承运商的运送费率
- 跟踪参与度指标和退出率
- 定期测试帮助/停止功能
科特迪瓦的 SMS API 集成
Twilio
Twilio 提供了强大的 SMS API,专门支持科特迪瓦的消息传递需求。
身份验证和设置:
- 需要帐户 SID 和 Auth Token
- 建议预先注册字母数字发件人 ID
- E.164 数字格式强制 (+225)
import { Twilio } from 'twilio';
// Initialize Twilio client
const client = new Twilio(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN
);
// Function to send SMS to Ivory Coast
async function sendSMSToIvoryCoast(
to: string,
message: string,
senderId: string
) {
try {
// Validate phone number format
if (!to.startsWith('+225')) {
throw new Error('Invalid Ivory Coast phone number format');
}
const response = await client.messages.create({
body: message,
from: senderId, // Pre-registered alphanumeric sender ID
to: to,
// Optional parameters for delivery tracking
statusCallback: 'https://your-callback-url.com/status'
});
console.log(`Message sent successfully: ${response.sid}`);
return response;
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
辛奇
Sinch 在科特迪瓦提供直接运营商连接,并支持大容量消息传递。
import { SinchClient } from '@sinch/sdk';
// Initialize Sinch client
const sinchClient = new SinchClient({
apiKey: process.env.SINCH_API_KEY,
apiSecret: process.env.SINCH_API_SECRET
});
async function sendBatchSMS(
recipients: string[],
message: string
) {
try {
const batch = await sinchClient.sms.batches.create({
from: 'YOUR_SENDER_ID',
to: recipients.map(num => num.startsWith('+225') ? num : `+225${num}`),
body: message,
// Delivery report configuration
deliveryReport: 'summary'
});
return batch;
} catch (error) {
console.error('Batch sending failed:', error);
throw error;
}
}
MessageBird(鸟)
MessageBird 为科特迪瓦市场提供特定功能,包括交付优化。
import { MessageBird } from 'messagebird';
// Initialize MessageBird client
const messagebird = new MessageBird(process.env.MESSAGEBIRD_API_KEY);
interface SMSResponse {
id: string;
status: string;
recipients: {
total: number;
delivered: number;
};
}
async function sendMessageBirdSMS(
recipient: string,
message: string
): Promise<SMSResponse> {
return new Promise((resolve, reject) => {
messagebird.messages.create({
originator: 'YOUR_SENDER_ID',
recipients: [recipient],
body: message,
// Ivory Coast specific parameters
datacoding: 'auto', // Handles special characters
type: 'premium' // For guaranteed delivery
}, (err, response) => {
if (err) {
reject(err);
return;
}
resolve(response);
});
});
}
API 速率限制和吞吐量
提供商的速率限制:
- Twilio:每秒 100 条消息
- Sinch:250 条消息/秒
- MessageBird:每秒 150 条消息
吞吐量管理策略:
// Example rate limiting implementation
import { RateLimiter } from 'limiter';
const limiter = new RateLimiter({
tokensPerInterval: 100,
interval: 'second'
});
async function sendBulkSMS(messages: Array<{to: string, body: string}>) {
const results = [];
for (const msg of messages) {
await limiter.removeTokens(1);
try {
const result = await sendSMSToIvoryCoast(msg.to, msg.body);
results.push(result);
} catch (error) {
console.error(`Failed to send to ${msg.to}:`, error);
results.push({ error, to: msg.to });
}
}
return results;
}
错误处理和报告
常见错误情况:
- 电话号码格式无效
- 未注册的发件人 ID
- 网络超时
- 承运商拒绝
记录最佳实践:
interface SMSLog {
timestamp: Date;
recipient: string;
status: string;
error?: any;
provider: string;
messageId?: string;
}
async function logSMSActivity(log: SMSLog): Promise<void> {
// Implement your logging logic here
console.log(JSON.stringify(log, null, 2));
// Example: Store in database
await db.smsLogs.insert(log);
}
回顾和其他资源
关键要点:
- 始终使用预先注册的发件人 ID
- 实施适当的速率限制
- 监控承运商的运送费率
- 保持全面日志记录
- 遵守时间窗口限制
下一步:
- 向所选提供商注册发件人 ID
- 实施配送追踪
- 设置监控和警报
- 在扩大规模之前先进行小规模测试。