You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求从旧版Twilio API迁移至Salesforce托管包的方案参考

Salesforce旧Twilio集成迁移至新版托管包说明

我们公司自2015年起使用TwilioRestClient、TwilioMessage实现Salesforce消息集成,因Salesforce将停用旧API,计划迁移至新版Twilio托管包。迁移中发现类名未变但新增TwilioSF命名空间,无法直接引用,同时对新版API的addUrlPart()作用、以及StatusCallback的处理方式存在疑问,以下是迁移相关的核心说明:

旧版实现代码

TwilioRestClient client;
client = new TwilioRestClient(accountSid, authToken);
// 创建参数Map
Map<String, String> params = new Map<String, String> {
        'To'    => callTo,
        'From'  => callFrom,
        'Body'  => msg,
        'StatusCallback' => 'salesforceMessageResponseURL'
};
TwilioMessage twiMsg = client.getAccount().getMessages().create(params);
String msgId = twiMsg.getSid();

新版实现示例代码

TwilioSF.TwilioApiClient client = new TwilioSF.TwilioApiClient();
// 开关:是否在请求失败时抛出异常
// client.setThrowExceptionsOnFailedResponses();
client.addUrlPart('Accounts');
client.addUrlPart('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
client.addUrlPart('Messages.json');

client.addParam('To','+15017122661');
client.addParam('From','+15558675310');
client.addParam('Body','Here is my message');

TwilioSF.TwilioApiClientResponse response = client.doPut();
system.debug(response.hasError());
system.debug(response.getErrorMessage());

迁移核心要点

1. 命名空间前缀

所有原Twilio相关类必须添加TwilioSF命名空间前缀,比如TwilioRestClient替换为TwilioSF.TwilioApiClient,原链式调用的资源操作(如getAccount().getMessages().create())改为手动拼接API路径+参数的方式。

2. addUrlPart()的作用

这个方法用来手动拼接Twilio API的请求路径。旧版通过链式方法(getAccount().getMessages())封装了API端点的路径,新版则需要通过addUrlPart()逐个拼接路径片段,最终组成完整的API请求地址:

  • 示例中addUrlPart('Accounts') + addUrlPart('你的Account SID') + addUrlPart('Messages.json'),最终拼接成/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages.json,对应Twilio发送短信的官方API端点。

3. StatusCallback的处理区别

旧版是将StatusCallback作为参数放入Map中,新版依然是通过client.addParam('StatusCallback', '你的回调URL')添加该参数,逻辑本质完全一致,只是参数传递方式从Map改为addParam()方法。

对应旧版代码的新版迁移示例

TwilioSF.TwilioApiClient client = new TwilioSF.TwilioApiClient();
// 可选:开启后请求失败会抛出异常,默认不开启
// client.setThrowExceptionsOnFailedResponses();

// 拼接API请求路径
client.addUrlPart('Accounts');
client.addUrlPart(accountSid); // 替换为你的Account SID
client.addUrlPart('Messages.json');

// 添加请求参数,包含StatusCallback
client.addParam('To', callTo);
client.addParam('From', callFrom);
client.addParam('Body', msg);
client.addParam('StatusCallback', 'salesforceMessageResponseURL');

// 创建短信需使用POST请求(注意:新版示例中的doPut()是错误用法,Twilio创建消息用POST)
TwilioSF.TwilioApiClientResponse response = client.doPost();

// 处理响应获取消息SID
if (!response.hasError()) {
    Map<String, Object> responseData = (Map<String, Object>)JSON.deserializeUntyped(response.getResponseText());
    String msgId = (String)responseData.get('sid');
} else {
    // 错误处理
    System.debug('Twilio请求错误:' + response.getErrorMessage());
}

注意事项

  • 新版创建短信必须使用doPost()方法,示例中的doPut()用于更新资源,不符合创建消息的API规范。
  • 旧版TwilioMessage对象的封装被移除,需要手动解析响应JSON获取所需字段(如消息SID)。

内容的提问来源于stack exchange,提问作者Duncan Stewart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 16:12:29