首页 » 博客 » 加拿大短信最佳实践、合规性和功能

加拿大短信最佳实践、合规性和功能

加拿大短信市场概览

区域设置名称: 加拿大
ISO 代码: 加州
地区 北美
移动国家代码 (MCC) 302
拨号代码 +1

市场状况:加拿大拥有成熟的移动市场,Rogers、Bell 和 Telus 等主要运营台湾 whatsapp 数据商的短信采用率很高。虽然 WhatsApp 和 Facebook Messenger 等 OTT 消息应用程序很受欢迎,但短信仍然是一个重要的沟通渠道,尤其是对于商业消息和通知而言。市场上 Android 和 iOS 设备之间的差距相对均衡,两个平台都为消息服务提供了良好的支持。


加拿大的主要短信功能和能力

加拿大提供全面的短信功能,包括双向消息、串联消息和 MMS 支持,并且所有主要提供商都拥有强大的运营商基础设施。

双向短信支持

加拿大全面支持所有主要运营商的双向短信服务。除了标准合规要求和适当的选择加入程序外,没有其他具体限制。

串联消息(分段短信)

支持:是的,加拿大运营商完全支持串联。
消息长度规则

  • GSM 3.38 编码:每段 136 个字符 日本短信最佳实践、合规性和功能
  • Unicode(UCS-2):每段 70 个字符
    编码注意事项:消息默认对标准 ASCII 字符使用 GSM-7 编码,而对于包含特殊字符或非拉丁字母的消息则自动应用 UCS-2。

MMS 支持

加拿大所有运营商都完全支持 MMS。企业可以发送图片、短视频和其他多媒体内容,每条消息的大小通常限制在 1MB 左右。最佳做法包括优化媒体文件以供移动设备查看,并为不受支持的设备提供后备短信链接。

收件人电话号码兼容性

号码可携性

加拿大提供号码可携性,允许用户在更换运营商时保留自己领导孟加拉国搜索引擎优化的电话号码。此功能完全受支持,并且不会对消息传递或路由产生重大影响,因为运营商会维护更新的路由表。

向固定电话发送短信

可以向固定电话发送短信,但不能保证。尝试发送时,一些运营商会将短信转换为文本转语音的语音通话,而其他运营商可能无法发送。建议在发送之前验证号码类型,并重点关注手机号码以确保可靠发送。

加拿大短信合规与监管指南

加拿大的短信营销主要受加拿大反垃圾邮件法 (CASL) 的监管,并由加拿大广播电视和电信委员会 (CRTC) 监督。所有商业电子信息都必须符合 CASL 的要求,这是全球最严格的反垃圾邮件法之一。

明确同意要求:

  • 发送商业信息前必须获得明确的书面同意
  • 同意必须专门针对短信(不能与其他渠道捆绑)
  • 必须明确说明要发送的信息的目的和类型
  • 包括公司身份和联系信息

文档的最佳实践:

  • 保存何时以及如何获得同意的详细记录
  • 存储选择加入日期、来源和使用的具体同意语言
  • 在最后一条消息发出后至少保留 3 年的同意证明

HELP/STOP 和其他命令

必填关键字:

  • STOP, ARRET(法语)- 必须立即停止发送信息
  • HELP, AIDE(法语)- 必须提供援助信息
  • INFO – 必须提供项目信息

语言要求:

  • 支持英语和法语命令
  • 在发给新订阅者的第一条消息中包含关键字信息
  • 用用户使用的语言响应命令

请勿致电/请勿打扰登记

加拿大设有由加拿大广播电视和电信委员会 (CRTC) 管理的全国禁止致电名单 (DNCL)。虽然主要针对语音通话,但最佳做法包括:

  • 在发送营销信息之前,根据 DNCL 检查号码
  • 维护内部禁止发送消息列表
  • 立即处理退出请求
  • 在所有活动中保持抑制列表更新

时区敏感度

时间限制:

  • 避免在收件人当地时区上午 9:00 之前或晚上 9:00 之后发送消息
  • 安排活动时考虑加拿大的六个时区
  • 例外情况:紧急消息(例如安全警报、预约提醒)可能会在这些时间之外发送

加拿大的电话号码选项和短信发件人类型

字母数字发件人 ID

运营商网络能力:不支持加拿大
注册要求:N/A
发件人ID保存:N/A

长代码

国内与国际

  • 全面支持国内长代码
  • 不建议用于 A2P 消息传递的国际长代码

发件人 ID 保存:是,原始发件人 ID 被保存
配置时间:立即至 24 小时
用例

  • 人与人之间的沟通
  • 低容量商业信息
  • 客户支持
  • 双重身份验证

短代码

支持:全面支持所有加拿大运营商
配置时间:批准和激活需 12-16 周
用例

  • 大规模营销活动
  • 群发通知
  • 双重身份验证
  • 客户忠诚度计划

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

禁止内容:

  • 高风险金融服务(发薪日贷款、加密货币)
  • 赌博和抽奖
  • 成人内容和色情内容
  • 管制物质(烟草、电子烟、大麻)
  • 欺骗性营销行为
  • 仇恨言论和粗言秽语

内容过滤

运营商过滤规则:

  • 包含禁用关键字的消息将被自动屏蔽
  • URL 必须来自批准的域
  • 高频消息传递可能会触发垃圾邮件过滤器

最佳实践:

  • 避免使用 URL 缩短器
  • 使用批准的发件人 ID
  • 保持一致的发送模式
  • 包括明确的退出说明

在加拿大发送短信的最佳做法

信息传递策略

  • 尽可能将消息控制在 160 个字符以内
  • 包含明确的行动号召
  • 使用订阅者数据进行个性化
  • 保持一致的品牌

发送频率和时间

  • 每位用户每月最多可发送 2-4 条消息
  • 尊重时区差异
  • 避免在重大节假日期间发送
  • 间隔发送消息以防止疲劳

本土化

  • 提供英语和法语两种语言选项
  • 允许在选择加入时选择语言偏好
  • 维护单独的特定语言活动
  • 考虑区域文化差异

退出管理

  • 24 小时内处理退出
  • 维护集中退出数据库
  • 最后一条消息确认退出
  • 定期审核退出名单

测试和监控

  • 在所有加拿大主要运营商上进行测试
  • 监控承运商的运送费率
  • 跟踪参与度指标
  • 定期对消息内容进行 A/B 测试

加拿大的 SMS API 集成

Twilio

Twilio 提供强大的 SMS API,全面支持加拿大消息传递要求。集成需要帐户 SID 和身份验证令牌进行身份验证。

关键参数:

  • from:您的 Twilio 电话号码(必须为 E.164 格式)
  • to:收件人电话号码(加拿大必须包含 +1)
  • body:邮件内容(支持UTF-8编码)
import { Twilio } from 'twilio';

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

async function sendSMS(to: string, message: string) {
  try {
    // Send message with proper Canadian formatting
    const response = await client.messages.create({
      from: process.env.TWILIO_PHONE_NUMBER, // Must be in +1XXXXXXXXXX format
      to: `+1${to.replace(/\D/g, '')}`, // Sanitize and format number
      body: message,
      // Optional parameters for Canadian requirements
      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 提供开发人员友好的 API,具有针对加拿大市场的特定功能。身份验证使用服务计划 ID 和 API 令牌。

import { SinchClient } from '@sinch/sdk-core';

class SinchSMSService {
  private client: SinchClient;

  constructor() {
    this.client = new SinchClient({
      servicePlanId: process.env.SINCH_SERVICE_PLAN_ID,
      apiToken: process.env.SINCH_API_TOKEN,
      region: 'ca-central-1'
    });
  }

  async sendBatchSMS(recipients: string[], message: string) {
    try {
      const response = await this.client.sms.batches.send({
        from: process.env.SINCH_NUMBER,
        to: recipients.map(num => `+1${num.replace(/\D/g, '')}`),
        body: message,
        // Canadian compliance parameters
        deliveryReport: 'summary',
        parameters: {
          campaign_id: 'CANADA_CAMPAIGN'
        }
      });

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

信息鸟

MessageBird 为加拿大市场提供全面的短信功能,并实现直接的集成。

import { MessageBirdClient } from 'messagebird';

class MessageBirdService {
  private client: MessageBirdClient;

  constructor() {
    this.client = new MessageBirdClient(
      process.env.MESSAGEBIRD_API_KEY
    );
  }

  async sendMessage(to: string, message: string) {
    const params = {
      originator: process.env.MESSAGEBIRD_NUMBER,
      recipients: [`+1${to.replace(/\D/g, '')}`],
      body: message,
      // Canadian market specifics
      datacoding: 'auto',
      reportUrl: 'https://your-domain.com/delivery-reports'
    };

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

普利沃

Plivo 提供可靠的 SMS 功能,并具有满足加拿大合规要求的特定功能。

import { Client } from 'plivo';

class PlivoSMSService {
  private client: Client;

  constructor() {
    this.client = new Client(
      process.env.PLIVO_AUTH_ID,
      process.env.PLIVO_AUTH_TOKEN
    );
  }

  async sendSMS(to: string, message: string) {
    try {
      const response = await this.client.messages.create({
        src: process.env.PLIVO_NUMBER, // Your Plivo number
        dst: `+1${to.replace(/\D/g, '')}`,
        text: message,
        // Canadian specific parameters
        powerpack_uuid: process.env.PLIVO_POWERPACK_ID,
        log: true
      });

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

API 速率限制和吞吐量

提供商的速率限制:

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

吞吐量管理策略:

  • 实现重试逻辑的指数退避算法
  • 使用队列系统(Redis、RabbitMQ)进行大容量发送
  • 尽可能批量发送消息(每个请求最多 100 个收件人)
  • 监控吞吐量指标并调整发送模式

错误处理和报告

最佳实践:

  • 实施全面的错误日志记录
  • 设置错误阈值的自动警报
  • 存储送货收据以确保合规性
  • 定期监测送货率
// Example error handling implementation
interface SMSError {
  code: string;
  message: string;
  timestamp: Date;
  recipient: string;
}

class SMSErrorHandler {
  async logError(error: SMSError): Promise<void> {
    // Log to monitoring system
    await logger.error('SMS_DELIVERY_ERROR', {
      ...error,
      market: 'CANADA'
    });

    // Alert if error threshold exceeded
    if (await this.errorThresholdExceeded()) {
      await this.triggerAlert();
    }
  }
}

回顾和其他资源

关键要点:

  • 始终保持符合 CASL 规定
  • 实施适当的选择加入/选择退出处理
  • 支持英语和法语交流
  • 监控交付率和错误模式。
滚动至顶部