首页 » 博客 » 卡塔尔短信最佳实践、合规性和功能

卡塔尔短信最佳实践、合规性和功能

卡塔尔短信市场概况

区域设置名称: 卡塔尔
ISO 代码: 质量保证
地区 中东和非洲
移动国家代码 (MCC) 427
拨号代码 +974

市场状况:卡塔尔拥有高度发达的移动市场,智能手机普巴基斯坦 whatsapp 数据及率几乎达到全球平均水平。主要移动运营商是 Ooredoo 和 Vodafone Qatar。虽然 WhatsApp 和 Telegram 等 OTT 消息应用程序在个人通信中很受欢迎,但短信对于商业通信仍然至关重要,尤其是用于身份验证和通知。市场显示出消费者对 iOS 设备的强烈偏好,尽管 Android 在商业领域仍占有重要地位。


卡塔尔短信服务的主要特点和功能

卡塔尔支持大多数标准短信功能,包括串联消息和字母数字发件人 ID,但双向消息传递功能有限,并且 MMS 需要转换为基于 URL 的传送。

双向短信支持

卡塔尔的标准渠道不支持双向短信。需要交互式消息传递功能的企业应考虑其他通信方式或使用基于 Web 的响应机制实施单向消息传递。

串联消息(分段短信)

支持:是的,大多数发件人 ID 类型都支持串联,但支持情况可能因运营商和发件人类型而异。
消息长度规则:使用 GSM-7 编码,每段消息标准 160 个字符。酒店营销计划是什么样的?
编码注意事项:使用 GSM-7 编码的消息允许 160 个字符,而 UCS-2 编码(用于阿拉伯语或特殊字符)允许每段 70 个字符。

MMS 支持

MMS 消息会自动转换为 SMS,并嵌入指向媒体内容的 URL 链接。这可确保所有设备之间的兼容性,同时保持共享丰富媒体内容的能力。最佳做法是使用简短的 URL,并在消息正文中包含清晰的上下文。

收件人电话号码兼容性

号码可携性

卡塔尔不提供号码可携性。这简化了消息路由,因为号码泰国号码仍与原运营商绑定。

向固定电话发送短信

卡塔尔不支持向固定电话号码发送短信。尝试通过 API 向固定电话号码发送消息将导致 400 响应错误(代码 21614),不会发送消息,也不会收费。

卡塔尔短信合规与监管指南

卡塔尔对短信通信有严格的规定,由通信监管局 (CRA) 监督。所有短信营销活动都必须遵守卡塔尔的电信法和数据保护法规,并特别强调用户隐私和同意。

明确同意要求:

      • 发送任何营销信息之前必须获得书面或电子同意
      • 必须保留同意记录并方便获取
      • 在选择加入时必须明确说明沟通目的
      • 不同类型的通信需要分别征得同意

同意的最佳做法:

      • 实施双重选择加入验证
      • 维护详细的同意日志,包括时间戳、来源和范围
      • 定期更新同意记录
      • 在选择加入过程中提供明确的条款和条件

HELP/STOP 和其他命令

      • 所有短信活动必须支持英语和阿拉伯语的“帮助”和“停止”关键字
      • 标准关键字包括:
        • STOP/停止
        • 帮助/帮助
        • 取消订阅/???_???
      • 对这些命令的响应必须是立即的,并且使用与请求相同的语言

请勿致电/请勿打扰登记

尽管卡塔尔没有设立集中式 DND 注册中心,但企业必须:

      • 维护自己的抑制名单
      • 24 小时内尊重退出请求
      • 实施适当的筛选机制来过滤选择退出的号码
      • 定期审核和更新禁止名单

时区敏感度

消息发送时间:

      • 仅限卡塔尔时间 (GMT+3) 上午 8 点至晚上 9 点
      • 仅允许关键服务通知例外
      • 尊重周末时间(卡塔尔为周五至周六)
      • 避免在祷告时间发送

卡塔尔的电话号码选项和短信发件人类型

字母数字发件人 ID

运营商网络能力:全面支持
注册要求

      • 必须预先注册
      • 两周审批流程
      • 需要公司文件
      • 不允许动态使用

发件人 ID 保存:是的,注册 ID 会在网络上保存

长代码

国内与国际

      • 不支持国内长代码
      • 支持国际长代码但有限制

发件人 ID 保存:否,国际号码可能会被修改 配置时间:不适用于国内 用例:主要用于交易消息传递和 2FA

短代码

支持:目前在卡塔尔不可用 配置时间:不适用 用例:不适用于标准消息传递


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

禁止内容:

      • 成人内容
      • 赌博
      • 政治信息
      • 宗教内容
      • 冒充政府
      • 加密货币促销

受监管行业:

      • 金融服务需要额外验证
      • 医疗保健信息必须遵守隐私法规
      • 保险服务需特别批准

内容过滤

运营商过滤规则:

      • 包含限制关键字的消息将被自动屏蔽
      • URL 必须来自批准的域
      • 邮件内容屏蔽禁用术语

最佳实践:

      • 尽可能避免使用 URL 缩短器
      • 对于敏感行业请使用认可的模板
      • 保持一致的发件人 ID
      • 保持内容专业且清晰

在卡塔尔发送短信的最佳做法

信息传递策略

      • 尽可能将消息控制在 160 个字符以内
      • 包含明确的号召性用语
      • 始终使用批准的发件人 ID
      • 适当个性化消息

发送频率和时间

      • 每位收件人每周最多可收到 3-4 条消息
      • 尊重当地节日和斋月时间
      • 避开高峰时段,确保更好的配送
      • 分散批量广告活动

本土化

      • 支持阿拉伯语和英语
      • 阿拉伯语的从右到左文本格式
      • 考虑当地文化敏感性
      • 使用本地日期和时间格式

退出管理

      • 24 小时内处理退出
      • 保留清晰的退出记录
      • 在每条消息中都包含退出说明
      • 定期审核选择退出合规性

测试和监控

      • 在 Ooredoo 和 Vodafone 网络上进行测试
      • 监控承运商的运送费率
      • 跟踪参与度指标
      • 定期测试选择退出功能

卡塔尔的 SMS API 集成

Twilio

Twilio 通过其 REST API 为卡塔尔提供强大的 SMS 功能。身份验证需要您的帐户 SID 和身份验证令牌。

import { Twilio } from 'twilio';

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

// Function to send SMS to Qatar
async function sendSMSToQatar(
  message: string,
  recipientNumber: string,
  senderId: string
) {
  try {
    // Ensure number is in E.164 format for Qatar (+974)
    const formattedNumber = recipientNumber.startsWith('+974') 
      ? recipientNumber 
      : `+974${recipientNumber}`;

    const response = await client.messages.create({
      body: message,
      from: senderId,  // Must be pre-registered for Qatar
      to: formattedNumber,
      // Optional parameters for delivery tracking
      statusCallback: 'https://your-callback-url.com/status'
    });

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

辛奇

Sinch 在卡塔尔提供直接运营商连接,并支持 Unicode 消息。

import axios from 'axios';

class SinchSMSService {
  private readonly apiToken: string;
  private readonly serviceId: string;
  private readonly baseUrl: string;

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

  async sendSMS(message: string, recipient: string, senderId: string) {
    try {
      const response = await axios.post(
        `${this.baseUrl}/${this.serviceId}/batches`,
        {
          from: senderId,
          to: [recipient],
          body: message,
          // Qatar-specific parameters
          encoding: 'AUTO',  // Handles Arabic text automatically
          delivery_report: 'summary'
        },
        {
          headers: {
            'Authorization': `Bearer ${this.apiToken}`,
            'Content-Type': 'application/json'
          }
        }
      );

      return response.data;
    } catch (error) {
      console.error('Sinch SMS Error:', error);
      throw error;
    }
  }
}

信息鸟

MessageBird(以前称为“Bird”)在卡塔尔提供短信服务,并且送达率很高。

import { MessageBird } from 'messagebird';

class MessageBirdService {
  private client: MessageBird;

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

  async sendSMS(
    message: string, 
    recipient: string, 
    senderId: string
  ): Promise<any> {
    return new Promise((resolve, reject) => {
      this.client.messages.create({
        originator: senderId,
        recipients: [recipient],
        body: message,
        // Qatar-specific options
        datacoding: 'unicode',  // For Arabic support
        reportUrl: 'https://your-domain.com/delivery-reports'
      }, (err, response) => {
        if (err) {
          reject(err);
        } else {
          resolve(response);
        }
      });
    });
  }
}

普利沃

Plivo 为卡塔尔提供可靠的短信传递服务,并支持大容量短信传递。

import plivo from 'plivo';

class PlivoSMSService {
  private client: plivo.Client;

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

  async sendSMS(message: string, recipient: string, senderId: string) {
    try {
      const response = await this.client.messages.create({
        src: senderId,  // Registered sender ID
        dst: recipient, // Qatar number in E.164 format
        text: message,
        // Qatar-specific parameters
        url_strip_query_params: false,
        powerpack_id: 'your_powerpack_id'  // If using Powerpack
      });

      return response;
    } catch (error) {
      console.error('Plivo SMS Error:', error);
      throw error;
    }
  }
}

API 速率限制和吞吐量

      • 默认速率限制因提供商而异(通常为每秒 1-10 条消息)
      • 实现重试逻辑的指数退避算法
      • 使用队列系统(Redis、RabbitMQ)进行大容量发送
      • 考虑批量消息的批处理 API

错误处理和报告

// Common error handling implementation
interface SMSError {
  code: string;
  message: string;
  timestamp: Date;
  provider: string;
}

class SMSErrorHandler {
  static handleError(error: any, provider: string): SMSError {
    return {
      code: error.code || 'UNKNOWN',
      message: error.message,
      timestamp: new Date(),
      provider
    };
  }

  static async logError(error: SMSError): Promise<void> {
    // Implement your logging logic here
    console.error(`SMS Error [${error.provider}]:`, error);
  }
}

回顾和其他资源

关键要点

    1. 合规重点
      • 预先注册所有发件人 ID
      • 遵守时间限制(卡塔尔时间上午 8 点至晚上 9 点)
      • 维护适当的退出机制
    2. 技术考虑
      • 支持阿拉伯语文本的 Unicode
      • 实施适当的错误处理
      • 监控配送率。
滚动至顶部