我想从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
应该包含键、To
、From
和Body
的值对,类似于
"From=" + twilio-phone-number + "&To=" + to-number + "&Body=" + message-body
(替换为电话号码和消息的字符串值(。
我希望这有帮助。