首页 » 博客 » 科威特短信最佳实践、合规性和功能

科威特短信最佳实践、合规性和功能

科威特短信市场概况

区域设置名称: 科威特
ISO 代码: 千瓦
地区 中东和非洲
移动国家代码 (MCC) 419
拨号代码 +965

市场状况:科威特拥有高度发达的移动市场,短信使秘鲁 whatsapp数据用十分广泛。该国的主要移动运营商包括 Zain Kuwait、Ooredoo 和 VIVA Kuwait。虽然 WhatsApp 和 Facebook Messenger 等 OTT 消息应用程序很受欢迎,但短信对于企业通信和身份验证仍然至关重要。市场上 Android 和 iOS 设备的比例相对均衡,富裕用户略微偏爱 iOS。


科威特的主要短信功能和能力

科威特支持大多数标准短信功能,包括串联消息和字母数字发件人 ID,但双向短信功能有限,且彩信需要转换为带有 URL 链接的短信。

双向短信支持

科威特不支持 A2P(应用程序到个人)消息传递的双向短信。企业应围绕单向通信流程设计消息传递策略。

串联消息(分段短信)

支持:是的,支持串联,但可用性可能因发件人 ID 类型而异。
消息长度规则:使用 GSM-7 编码,每段消息标准 160 个字符。
编码注意事项:使用 GSM-7 编码的消息允许 160 个字符,而 UCS-2 编码(用于专业服务数字营销的关键指标阿拉伯语和特殊字符)允许每段 70 个字符。

MMS 支持

MMS 消息会自动转换为 SMS,并嵌入多媒体内容的 URL 链接。这确保了所有设备的兼容性,同时保持了共享丰富媒体内容的能力。

收件人电话号码兼容性

号码可携性

科威特提供号码可携性,允许用户在保留电话号码的同时更换运营商。此功能​​不会对短信递送或路由产生很大影响,因为短信会自动路由到正确的运营商。

向固定电话发送短信

科威特不支持向固定电话号码发送短信。尝试向固定电话号码发送消息将导致发送失败,并且可能会触发消息传递 API 的 400 响应错误(代码 21614)。

科威特短信合规与监管指南

科威特对短信通信有严格的规定,由通信和信息技术监管局 (CITRA) 监督。所有短信营销活动都必须遵守当地的电信法律和隐私法规。

明确同意要求

  • 发送任何营销信息之前必须获得书面或电子同意 泰国号码
  • 必须保留同意记录并方便获取
  • 在选择加入时必须明确说明沟通目的
  • 建议在营销活动中使用双重选择

文档的最佳实践

  • 存储同意时间戳和方法
  • 维护选择加入来源的详细记录
  • 定期审核同意数据库
  • 实施选择加入请求的验证流程

HELP/STOP 和其他命令

  • 所有营销信息必须包含明确的退出说明
  • STOP 命令必须支持英语和阿拉伯语
  • 必须遵守的常用关键字:
    • STOP/停止
    • 退订/取消订阅
    • 帮助/帮助
  • 对这些命令的响应必须是立即的,并且使用与请求相同的语言

请勿致电/请勿打扰登记

科威特拥有由 CITRA 管理的“请勿打扰” (DND) 注册表。

合规要求

  • 定期检查国防部登记处
  • 立即从营销名单中删除 DND 号码
  • 维护内部抑制名单
  • 退出请求的记录
  • 建议对联系人名单进行季度审核

时区敏感度

科威特遵循阿拉伯标准时间 (AST/UTC+3)

建议的发送窗口

  • 工作日(周日至周四):上午 9:00 – 晚上 8:00(AST)
  • 周末(周五至周六):上午 10:00 – 下午 6:00 AST
  • 避免在祷告时间发送
  • 尊重斋月时间调整

科威特的电话号码选项和短信发件人类型

字母数字发件人 ID

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

  • 需要预先注册
  • 4 周审批流程
  • 需要公司文件
  • 需提供 NOC 证明

发件人ID保存:是,显示为已注册

长代码

国内与国际

  • 国内:不支持
  • 国际:有限支持

发件人 ID 保存:否,国际号码可能会被覆盖 配置时间:N/A 使用案例:不推荐用于科威特市场

短代码

支持:目前不支持科威特 配置时间:N/A 使用案例:N/A

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

禁止内容

  • 赌博和博彩
  • 成人内容
  • 政治信息
  • 宗教内容
  • 加密货币促销

受监管行业

  • 金融服务需要额外批准
  • 医疗保健信息必须符合卫生部的指导方针
  • 教育机构需要部委验证

内容过滤

已知承运人规则

  • 包含特定关键字的邮件可能会被屏蔽
  • URL 必须来自批准的域
  • 邮件内容屏蔽禁用术语

最佳实践

  • 避免使用 URL 缩短器
  • 使用批准的发件人 ID
  • 保持内容专业且清晰
  • 避免过多标点
  • 在消息中包含公司名称

在科威特发送短信的最佳做法

信息传递策略

  • 尽可能将消息控制在 160 个字符以内
  • 包含明确的号召性用语
  • 明智地使用个性化令牌
  • 保持一致的发件人 ID

发送频率和时间

  • 每位收件人每月最多可收到 4-6 条消息
  • 尊重宗教和文化活动
  • 避免在斋月斋戒期间发送
  • 考虑周末时间差异

本土化

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

退出管理

  • 24 小时内处理退出
  • 维护集中退出数据库
  • 提供多种退出渠道
  • 向用户确认退出状态

测试和监控

  • 在所有主要运营商上进行测试(Zain、Ooredoo、VIVA)
  • 监控承运商的运送费率
  • 跟踪参与度指标
  • 定期测试选择退出功能

科威特的 SMS API 集成

Twilio

Twilio 提供了强大的 SMS API,并特别考虑了科威特消息传递。

身份验证和设置

import { Twilio } from 'twilio';

// Initialize Twilio client with credentials
const client = new Twilio(
  process.env.TWILIO_ACCOUNT_SID,    // Your Account SID
  process.env.TWILIO_AUTH_TOKEN      // Your Auth Token
);

// Function to send SMS to Kuwait
async function sendSMSToKuwait(
  to: string,
  message: string,
  senderId: string
): Promise<void> {
  try {
    // Ensure Kuwait number format: +965XXXXXXXX
    const formattedNumber = to.startsWith('+965') ? to : `+965${to}`;
    
    const response = await client.messages.create({
      body: message,
      from: senderId,        // Pre-registered Sender ID
      to: formattedNumber,
      // Optional parameters for Kuwait
      statusCallback: 'https://your-callback-url.com/status',
      provideFeedback: true
    });
    
    console.log(`Message sent successfully! SID: ${response.sid}`);
  } catch (error) {
    console.error('Error sending message:', error);
    throw error;
  }
}

辛奇

Sinch 在科威特提供直接运营商连接,并支持 Unicode 消息。

import axios from 'axios';

interface SinchSMSConfig {
  apiToken: string;
  servicePlanId: string;
  senderId: string;
}

class SinchSMSService {
  private readonly baseUrl: string;
  private readonly config: SinchSMSConfig;

  constructor(config: SinchSMSConfig) {
    this.config = config;
    this.baseUrl = 'https://sms.api.sinch.com/xms/v1';
  }

  async sendSMS(to: string, message: string): Promise<void> {
    try {
      const response = await axios.post(
        `${this.baseUrl}/${this.config.servicePlanId}/batches`,
        {
          from: this.config.senderId,
          to: [to],
          body: message,
          encoding: 'AUTO'  // Handles Arabic text automatically
        },
        {
          headers: {
            'Authorization': `Bearer ${this.config.apiToken}`,
            'Content-Type': 'application/json'
          }
        }
      );
      
      console.log('Message sent:', response.data.id);
    } catch (error) {
      console.error('Sinch SMS error:', error);
      throw error;
    }
  }
}

信息鸟

MessageBird 在科威特提供可靠的短信传递服务,并支持阿拉伯语内容。

import messagebird from 'messagebird';

class MessageBirdService {
  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,
        type: 'unicode',  // Required for Arabic text
        datacoding: 'unicode'
      };

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

普利沃

Plivo 在科威特提供短信功能,并提供详细的发送报告。

import plivo from 'plivo';

class PlivoSMSService {
  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,
        dst: to,
        text: message,
        // Kuwait-specific parameters
        url_strip_query_params: false,
        method: 'POST',
        log: true
      });
      
      console.log('Message sent:', response.messageUuid);
    } catch (error) {
      console.error('Plivo error:', error);
      throw error;
    }
  }
}

API 速率限制和吞吐量

速率限制

  • Twilio:每秒 100 条消息
  • Sinch:每秒 30 条消息
  • MessageBird:每秒 60 条消息
  • Plivo:每秒 50 条消息

吞吐量管理

// Example rate limiting implementation
import { RateLimiter } from 'limiter';

const limiter = new RateLimiter({
  tokensPerInterval: 30,
  interval: 'second'
});

async function sendBulkSMS(messages: Message[]): Promise<void> {
  for (const message of messages) {
    await limiter.removeTokens(1);
    await sendSMS(message);
  }
}

错误处理和报告

interface SMSError {
  code: string;
  message: string;
  timestamp: Date;
  recipient: string;
}

class SMSErrorHandler {
  static handleError(error: any): SMSError {
    // Common Kuwait-specific error codes
    const errorMap: Record<string, string> = {
      '21614': 'Invalid number format for Kuwait',
      '30007': 'Blocked by carrier',
      '30008': 'Message content restricted'
    };

    return {
      code: error.code,
      message: errorMap[error.code] || error.message,
      timestamp: new Date(),
      recipient: error.recipient
    };
  }
}

回顾和其他资源

关键要点

  1. 合规第一:始终确保发件人 ID 注册和内容合规
  2. 技术要求:支持阿拉伯文本和正确的数字格式
  3. 监控:实施强大的错误处理和交付跟踪。
滚动至顶部