首页 » 博客 » 摩洛哥短信最佳实践、合规性和功能

摩洛哥短信最佳实践、合规性和功能

摩洛哥短信市场概况

区域设置名称: 摩洛哥
ISO 代码: 马萨诸塞州
地区 中东和非洲
移动国家代码 (MCC) 604
拨号代码 +212

市场状况:摩洛哥拥有活跃的移动通信市场,主要有三美国 whatsapp 数据家运营商:Maroc Telecom、Orange Morocco 和 Inwi(前身为 Wana)。尽管 WhatsApp 和 Facebook Messenger 等消息应用程序越来越受欢迎,但短信仍然是企业和消费者的重要沟通渠道。Android 设备占据市场主导地位,约占移动设备的 85%,而 iOS 设备则占剩余份额。


摩洛哥的主要短信功能和能力

摩洛哥提供强大的短信功能,支持连接消息和字母数字发件人 ID,但双向短信功能有限。

双向短信支持

在摩洛哥,大多数提供商都不支持双向短信。这意味着企业无法通过标准 A2P 渠道收到短信回复。

串联消息(分段短信)

支持:是的,大多数网络都支持串联,但支持情况印度尼西亚短信最佳实践、合规性和功能可能因发件人 ID 类型而异。
消息长度规则:GSM-7 编码的标准短信长度为 160 个字符,Unicode (UCS-2) 编码的标准短信长度为 70 个字符。
编码注意事项:支持 GSM-7 和 UCS-2 编码。阿拉伯语文本需要 UCS-2 编码,将每个段的字符限制减少到 70 个。

MMS 支持

摩洛哥不直接支持彩信。尝试发送彩信时,信息将自动转换为短信,并嵌入 URL 链接,收件人可以查看多媒体内容。这可确保信息传递,同时保持与所有网络的兼容性。

收件人电话号码兼容性

号码可携性

摩洛哥提供号码可携性,允许用户在移动运营商之间切换时保留自己的电话号码。此功能不会对短信发送或路由产生重大影响,因为短信会正确路由到当前运营商。

向固定电话发送短信

在摩洛哥,无法向固定电话号码发送短信。尝试向固定电话号码发送消息将导致发送失败,通常会生成 400 响应,错误代码为 21614。这些消息不会出现在日志中,并且不会因失败的尝试而向帐户收取费用。

摩洛哥短信合规与监管指南

摩洛哥的短信通信受国家电信管理局 (ANRT) 监管。公司必须遵守当地电信法和数据保护法规,包括有关个人数据处理方面个人保护的 09-08 号法律。

明确同意要求

  • 在发送营销信息之前获得明确、有记录的选择加入同意 领导孟加拉国搜索引擎优化
  • 保存何时以及如何获得同意的详细记录
  • 在同意请求中包括公司名称和宗旨
  • 提供有关消息频率和内容的明确条款和条件

收集同意的最佳做法

  • 对营销列表使用双重选择加入验证
  • 记录同意时间戳、来源和 IP 地址
  • 保存同意记录至少 2 年
  • 定期同意数据库维护和更新

HELP/STOP 和其他命令

  • 所有短信活动都必须支持标准退出关键字:
    • 停止、逮捕、取消订阅(英语/法语)
    • توقف(阿拉伯语)
  • HELP/AIDE 命令必须提供服务信息
  • 对命令的响应应该使用与收到的关键字相同的语言
  • 所有命令响应必须对用户免费

请勿致电/请勿打扰登记

摩洛哥没有设立集中式“谢绝来电”登记处。但是,企业应该:

  • 维护自己的抑制名单
  • 24 小时内尊重退出请求
  • 定期清理联系人列表
  • 实施自动退出处理
  • 记录所有退出请求和处理日期

时区敏感度

摩洛哥遵守西欧时间 (WET/GMT+1)。虽然对短信没有严格的法律时间限制:

  • 建议发送时间:当地时间上午 9:00 至晚上 8:00
  • 宗教注意事项:避免在祈祷时间发送
  • 节日意识:尊重斋月和其他宗教仪式
  • 紧急例外:紧急消息可能会在建议时间之外发送

摩洛哥的电话号码选项和短信发件人类型

字母数字发件人 ID

运营商网络能力:全面支持各大网络
注册要求:需要预先注册,大约需要 3 周
发件人 ID 保存:是,在除 Inwi 之外的所有网络上保存
字符限制:最多 11 个字符,仅限字母数字

长代码

国内与国际

  • 不支持国内长代码
  • 支持国际长代码但有限制
  • Maroc Telecom 和 Wana Telecom 不支持数字发件人 ID

发件人 ID 保存:否,国际号码可能会被通用字母数字 ID 覆盖
用例:不建议用于营销活动;更适合交易消息

短代码

支持:目前不支持摩洛哥
替代方案:改用预先注册的字母数字发件人 ID

受限制的短信内容、行业和用例

禁止内容

  • 赌博和博彩服务
  • 成人内容或露骨内容
  • 未经适当授权的政治信息
  • 宗教内容
  • 非法物质或服务
  • 仇恨言论或歧视内容

受监管行业

  • 金融服务需要额外文件
  • 医疗保健信息必须遵守隐私法规
  • 追债服务面临严格限制

内容过滤

已知运营商过滤器

  • 来自未知域名的 URL 可能会被阻止
  • 包含与受限内容相关的特定关键字的邮件
  • 多个感叹号或全大写文本

避免过滤的最佳实践

  • 使用已注册并获批准的发件人 ID
  • 避免使用 URL 缩短器
  • 保持内容专业且清晰
  • 对于敏感行业请使用认可的模板
  • 保持一致的发送模式

在摩洛哥发送短信的最佳做法

信息传递策略

  • 尽可能将消息控制在 160 个字符以内
  • 包含明确的号召性用语
  • 慎重使用个性化标记
  • 保持一致的品牌声音
  • 在消息中包含公司名称

发送频率和时间

  • 每位收件人每月最多可发送 4-5 条消息
  • 尊重斋月送信时间
  • 避免在周五祈祷期间发送
  • 分散批量活动以防止网络拥塞

本土化

  • 支持阿拉伯语、法语和当地达里贾方言
  • 对阿拉伯文本使用适当的字符编码
  • 考虑内容中的文化敏感性
  • 提供语言偏好选择

退出管理

  • 24 小时内处理退出
  • 维护集中退出数据库
  • 在消息中包含退出说明
  • 定期审核选择退出合规性

测试和监控

  • 在所有主要运营商上进行测试(Maroc Telecom、Orange、Inwi)
  • 监控承运商的运送费率
  • 跟踪退出率和模式
  • 定期内容和合规性审核
  • A/B 测试消息时间和内容

摩洛哥的 SMS API 集成

Twilio

Twilio 提供了强大的 REST API,用于向摩洛哥发送短信。身份验证使用帐户 SID 和身份验证令牌。

import { Twilio } from 'twilio';

// Initialize client with your credentials
const client = new Twilio(
  process.env.TWILIO_ACCOUNT_SID,
  process.env.TWILIO_AUTH_TOKEN
);

// Function to send SMS to Morocco
async function sendSMSToMorocco(
  to: string,
  message: string,
  senderId: string
): Promise<void> {
  try {
    // Ensure proper formatting for Morocco numbers (+212)
    const formattedNumber = to.startsWith('+212') ? to : `+212${to.slice(-9)}`;

    const response = await client.messages.create({
      body: message,
      from: senderId, // Pre-registered alphanumeric sender ID
      to: formattedNumber,
      // Optional parameters for delivery tracking
      statusCallback: 'https://your-webhook.com/status'
    });

    console.log(`Message sent successfully! SID: ${response.sid}`);
  } catch (error) {
    console.error('Error sending message:', error);
    throw error;
  }
}

辛奇

Sinch 为摩洛哥短信提供了带有 JWT 认证的简单 REST API。

import axios from 'axios';

class SinchSMSClient {
  private readonly baseUrl: string;
  private readonly apiToken: string;
  private readonly servicePlanId: string;

  constructor(servicePlanId: string, apiToken: string) {
    this.baseUrl = 'https://sms.api.sinch.com/xms/v1';
    this.apiToken = apiToken;
    this.servicePlanId = servicePlanId;
  }

  async sendSMS(to: string, message: string, senderId: string): Promise<void> {
    try {
      const response = await axios.post(
        `${this.baseUrl}/${this.servicePlanId}/batches`,
        {
          from: senderId,
          to: [to],
          body: message,
          delivery_report: 'summary'
        },
        {
          headers: {
            'Authorization': `Bearer ${this.apiToken}`,
            'Content-Type': 'application/json'
          }
        }
      );

      console.log('Message sent:', response.data.id);
    } catch (error) {
      console.error('Sinch SMS error:', error);
      throw error;
    }
  }
}

信息鸟

MessageBird 提供了功能丰富的 API,支持摩洛哥的特定要求。

import messagebird from 'messagebird';

class MessageBirdClient {
  private client: any;

  constructor(apiKey: string) {
    this.client = messagebird(apiKey);
  }

  sendSMS(
    to: string,
    message: string,
    senderId: string
  ): Promise<any> {
    return new Promise((resolve, reject) => {
      // Configure message parameters
      const params = {
        originator: senderId,
        recipients: [to],
        body: message,
        // Morocco-specific parameters
        datacoding: 'unicode', // For Arabic support
        type: 'premium' // For business messaging
      };

      this.client.messages.create(params, (err: any, response: any) => {
        if (err) {
          reject(err);
        } else {
          resolve(response);
        }
      });
    });
  }
}

普利沃

Plivo 提供了可靠的 API,具有针对摩洛哥消息传递的特定功能。

import plivo from 'plivo';

class PlivoSMSClient {
  private client: any;

  constructor(authId: string, authToken: string) {
    this.client = new plivo.Client(authId, authToken);
  }

  async sendSMS(
    to: string,
    message: string,
    senderId: string
  ): Promise<void> {
    try {
      const response = await this.client.messages.create({
        src: senderId, // Your registered sender ID
        dst: to, // Destination number in E.164 format
        text: message,
        // Morocco-specific parameters
        url_strip_domain: false, // Preserve full URLs
        powerpack_id: 'your_powerpack_id' // If using Powerpack
      });

      console.log('Message sent:', response.messageUuid);
    } catch (error) {
      console.error('Plivo error:', error);
      throw error;
    }
  }
}

API 速率限制和吞吐量

  • 默认速率限制因提供商而异:
    • Twilio:每秒 100 条消息
    • Sinch:每秒 30 条消息
    • MessageBird:每秒 60 条消息
    • Plivo:50 条消息/秒

大规模发送策略

  • 实现队列系统(Redis/RabbitMQ)
  • 尽可能使用批处理 API
  • 实施指数退避重试
  • 监控吞吐量并调整发送速率

错误处理和报告

  • 实施全面日志记录
  • 监控送货回执
  • 跟踪常见错误代码
  • 设置故障阈值的自动警报
  • 维护错误日志以确保合规性

回顾和其他资源

关键要点

  1. 合规第一
    • 预先注册字母数字发件人 ID
    • 维护选择加入记录
    • 及时尊重退出请求
  2. 技术考虑
    • 支持阿拉伯语文本的 Unicode
    • 实施适当的错误处理
    • 监控配送率
  3. 最佳实践
    • 尊重当地时区
    • 使用适当的语言选项
    • 保持信息简洁且相关。
滚动至顶部