如何在 Salesforce Apex 中通过 Web Service 发送 Twilio SMS



我想从Twilio发送短信,注意到他们有为Java,.Net,Node等构建的库,以便我们可以在使用这些技术时使用它们。

但我想从Salesforce Apex做同样的事情,并试图弄清楚如何构建Http参数来进行授权。

我尝试使用 Twilio 文档中给出的 cURL 示例进行映射,但找不到身份验证令牌的标头键。

下面是我当前的代码,正在寻找如何设置身份验证参数。

req.setEndpoint(baseURL + '/2010-04-01/Accounts/account_sid/Messages.json');
req.setMethod('POST');                
req.setHeader('to', EncodingUtil.urlEncode('+to_number', 'UTF-8'));
req.setHeader('from', EncodingUtil.urlEncode('+from_number', 'UTF-8'));
Http ht = new Http();
HttpResponse res = ht.send(req);

更新的请求 :

Blob headerValue = Blob.valueOf('my-twilio-account-sid:my-twilio-auth-token');
String authorizationHeader = 'BASIC ' + EncodingUtil.base64Encode(headerValue);
req.setHeader('Authorization', authorizationHeader);
req.setHeader('Content-Type', 'application/x-www-form-urlencoded');
String body = EncodingUtil.urlEncode('From=+from_number&To=+to_number&Body=Sample text from twilio', 'UTF-8');
req.setBody(body);
Http ht = new Http();
HttpResponse res = ht.send(req);

回应说

错误请求:需要"发件人"电话号码。

电话号码不在标题中。

对于您需要的标头

Content-Type: "application/x-www-form-urlencoded"

然后,您将需要另一个标头进行授权

Authorization: auth-string

其中auth-string是字符串Basic后跟一个空格后跟 base64 编码的组合twilio-account-sid:twilio-auth-token(替换为由冒号连接的 Twilio 凭据(,因此标头看起来像

Authorization: "Basic ABCiDEdmFGHmIJKjLMN2OPQwR2S3TUVzABliCDE3FGc1HIo2JKL2MjNwOPcxQRSwTUc1Vzc0XmYhZAB3CDElFGH1Jw=="

POST 请求的body应该包含键、ToFromBody的值对,类似于

"From=" + twilio-phone-number + "&To=" + to-number + "&Body=" + message-body(替换为电话号码和消息的字符串值(。


我希望这有帮助。

最新更新