首页 » 博客 » 印度尼西亚短信最佳实践、合规性和功能

印度尼西亚短信最佳实践、合规性和功能

印度尼西亚短信市场概览

区域设置名称: 印度尼西亚
ISO 代码: ID
地区 亚洲
移动国家代码 (MCC) 510
拨号代码 +62

市场状况:印度尼西亚是亚洲最大的移葡萄牙 whatsapp 数据动市场之一,短信使用率很高,同时还有 WhatsApp 和 LINE 等流行的 OTT 消息应用程序。市场由 Telkomsel、Indosat Ooredoo 和 XL Axiata 等主要运营商主导。Android 设备占据约 92% 的市场份额,而 iOS 设备约占 8%。短信仍然是商业通信的重要渠道,尤其是用于身份验证、通知和营销信息。


印度尼西亚的主要短信功能和能力

印度尼西亚支持大多数标准短信功能,包括串联消息和字专业服务的数字营销母数字发件人 ID,但大多数提供商不提供双向短信功能。

双向短信支持

印度尼西亚的主要短信提供商不支持双向短信。需要交互式短信功能的企业应考虑其他通信渠道或专门的本地提供商。

串联消息(分段短信)

支持:是的,支持串联,但可用性可能因发件人 ID 类型而异。
消息长度规则:使用 GSM-7 编码时,在拆分之前消息限制为 160 个字符。
编码注意事项:GSM-7 是标准编码格式。UCS-2 编码仅支持国际注册发件人 ID,不支持国内发件人 ID。

MMS 支持

MMS 消息会自动转换为带有内嵌 URL 链接的 SMS。这确泰国号码保了所有设备的兼容性,同时仍允许通过基于 Web 的界面共享丰富的媒体内容。

收件人电话号码兼容性

号码可携性

印度尼西亚不提供号码可携性。这意味着电话号码仍与原来的移动网络运营商绑定。

向固定电话发送短信

在印度尼西亚,无法向固定电话号码发送短信。尝试通过大多数 SMS API 向固定电话号码发送消息会导致 400 响应错误(代码 21614),并且此类消息将不会被处理或从发送者的帐户中扣除费用。

印度尼西亚短信合规与监管指南

印度尼西亚的短信通信受通信和信息技术部 (Kominfo) 监管。所有短信提供商和企业都必须遵守当地的电信法和数据隐私法规,包括 2022 年实施的《个人数据保护法》(UU PDP)。

向印度尼西亚移动用户发送任何营销或促销信息之前,必须获得明确同意。同意管理的最佳做法包括:

  • 保留关于何时以及如何获得同意的清晰记录
  • 提供有关消息频率和内容类型的透明信息
  • 对营销列表使用双重选择加入验证
  • 保存同意文件至少 5 年
  • 在选择加入过程中包含明确的条款和条件

HELP/STOP 和其他命令

  • 所有短信活动必须支持英语和印尼语的标准退出关键字:
    • 停止/贝尔亨蒂
    • 帮助/帮助
    • 取消/巴塔尔
  • 信息应包含印尼语退出说明
  • 退出确认必须以收件人的首选语言发送

请勿致电/请勿打扰登记

虽然印度尼西亚没有设立集中式“禁止致电”登记处,但企业必须:

  • 维护自己的抑制名单
  • 24 小时内尊重退出请求
  • 实施系统以防止向选择退出的号码发送消息
  • 定期清理和更新联系人列表

时区敏感度

印度尼西亚横跨三个时区(WIB、WITA 和 WIT)。最佳实践包括:

  • 在当地时间 08:00 至 20:00 之间发送消息
  • 尊重宗教仪式,特别是在斋月期间
  • 仅在这些时间之外发送紧急消息(如 OTP)
  • 根据收件人的当地时区安排活动

印度尼西亚的电话号码选项和短信发件人类型

字母数字发件人 ID

运营商网络能力:完全支持
注册要求:国内和国际发件人均需预先注册
发件人 ID 保存:是,正确注册后保存

  • 国内注册大约需要 3 周
  • 国际注册大约需要 4 周
  • 邮件正文中必须包含品牌名称
  • 限制为 11 个字母数字字符

长代码

国内与国际

  • 不支持国内长代码
  • 支持国际长代码,但有限制 发件人 ID 保存:否,通常会被覆盖 配置时间:国内 N/A,国际立即 配置 用例:不建议用于主要消息传递;请改用字母数字发件人 ID

短代码

支持:目前不支持印度尼西亚 配置时间:N/A 用例:N/A

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

以下内容类型是严格禁止的:

  • 枪支和武器
  • 赌博和博彩
  • 成人内容
  • 政治信息
  • 宗教内容
  • 管制物质
  • 大麻产品
  • 与酒精相关的内容
  • 邮件正文中的电话号码

内容过滤

运营商过滤规则

  • 消息必须包含品牌名称或服务计划标识符
  • URL 应来自批准的域
  • 内容必须使用印尼语或英语
  • 建议每个片段最多 160 个字符

避免阻塞的提示

  • 避免使用 URL 缩短器
  • 不要在一条消息中包含多个链接
  • 保持内容专业且与业务相关
  • 避免使用过多标点符号或全大写文字

在印度尼西亚发送短信的最佳做法

信息传递策略

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

发送频率和时间

  • 每位收件人每月最多可发送 4-5 条消息
  • 尊重宗教和文化习俗
  • 避免在重大节假日期间发送
  • 间隔发送消息以防止疲劳

本土化

  • 主要语言应该是印度尼西亚语
  • 考虑特定地区的方言
  • 使用正式的印尼语进行商务沟通
  • 包括国际品牌的英文翻译

退出管理

  • 24 小时内处理退出
  • 发送退出完成确认
  • 维护集中退出数据库
  • 定期审核选择退出合规性

测试和监控

  • 在所有主要运营商(Telkomsel、Indosat、XL)上进行测试
  • 监控承运商的运送费率
  • 跟踪退出率和模式
  • 定期测试选择退出功能

印度尼西亚的 SMS API 集成

Twilio

Twilio 通过其 REST API 为印度尼西亚提供强大的 SMS 功能。身份验证使用帐户 SID 和身份验证令牌凭据。

import { Twilio } from 'twilio';

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

// Function to send SMS to Indonesia
async function sendSMSToIndonesia(
  to: string,
  message: string,
  senderId: string
) {
  try {
    // Ensure phone number is in E.164 format for Indonesia
    const formattedNumber = to.startsWith('+62') ? to : `+62${to}`;
    
    const response = await client.messages.create({
      body: `${senderId}: ${message}`, // Include brand name as required
      from: senderId, // Your registered alphanumeric sender ID
      to: formattedNumber,
    });
    
    console.log(`Message sent successfully: ${response.sid}`);
    return response;
  } catch (error) {
    console.error('Error sending message:', error);
    throw error;
  }
}

辛奇

Sinch 提供通过 REST 端点进行的 SMS API 访问,并需要 API 令牌认证。

import axios from 'axios';

class SinchSMSClient {
  private readonly apiToken: string;
  private readonly serviceId: string;
  private readonly baseUrl: string = 'https://sms.api.sinch.com/xms/v1';

  constructor(apiToken: string, serviceId: string) {
    this.apiToken = apiToken;
    this.serviceId = serviceId;
  }

  async sendSMS(to: string, message: string, senderId: string) {
    try {
      const response = await axios.post(
        `${this.baseUrl}/${this.serviceId}/batches`,
        {
          from: senderId,
          to: [to],
          body: message,
          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 通过 RESTful API 访问提供 SMS 功能。

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) => {
      this.client.messages.create({
        originator: senderId,
        recipients: [to],
        body: message,
        datacoding: 'auto' // Automatically handles character encoding
      }, (err: any, response: any) => {
        if (err) {
          reject(err);
        } else {
          resolve(response);
        }
      });
    });
  }
}

普利沃

Plivo 通过其 REST API 提供带有身份验证 ID 和令牌身份验证的 SMS 集成。

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) {
    try {
      const response = await this.client.messages.create({
        src: senderId, // Your registered sender ID
        dst: to, // Destination number
        text: message,
        url_strip_query_params: false
      });
      
      return response;
    } catch (error) {
      console.error('Plivo SMS Error:', error);
      throw error;
    }
  }
}

API 速率限制和吞吐量

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

大规模发送策略

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

错误处理和报告

  • 实施全面日志记录:
interface SMSLog {
  messageId: string;
  timestamp: Date;
  recipient: string;
  status: string;
  errorCode?: string;
  errorMessage?: string;
}

function logSMSEvent(log: SMSLog): void {
  // Log to your preferred system (e.g., CloudWatch, ELK Stack)
  console.log(JSON.stringify(log));
}

回顾和其他资源

关键要点

  1. 合规重点
    • 注册字母数字发件人 ID
    • 在消息中包含品牌名称
    • 尊重退出请求
    • 维护同意记录
  2. 最佳实践
    • 在工作时间内发送
    • 使用正确的字符编码
    • 实施适当的错误处理
    • 监控配送率。
滚动至顶部