如何在 Salesforce Apex 中通过 Web 服务发送 Twilio SMS
How to send Twilio SMS via Web Service in Salesforce Apex
我想从 Twilio 发送 SMS,注意到他们有为 Java、.Net、Node 等构建的库,以便我们在掌握这些技术时可以使用它们。
但我想从 Salesforce Apex 做同样的事情,并试图找出如何构建 Http 参数来进行授权。
我尝试使用 Twilio 文档中给出的 cURL 示例进行映射,但找不到 Auth 令牌的 header 键。
下面是我当前的代码,正在寻找如何设置身份验证参数。
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);
回复说
Bad Request : A 'From' phone number is required.
phone 数字不在 header 中。
对于 header,您将需要
Content-Type: "application/x-www-form-urlencoded"
然后你需要另一个header授权
Authorization: auth-string
其中 auth-string
是字符串 Basic
后跟 space 后跟 twilio-account-sid:twilio-auth-token
的 base64 编码的组合(替换为您的 Twilio 凭据加入冒号)所以 header 看起来像
Authorization: "Basic ABCiDEdmFGHmIJKjLMN2OPQwR2S3TUVzABliCDE3FGc1HIo2JKL2MjNwOPcxQRSwTUc1Vzc0XmYhZAB3CDElFGH1Jw=="
POST 请求的 body
应该包含 To
、From
和 Body
的键值对,例如
"From=" + twilio-phone-number + "&To=" + to-number + "&Body=" + message-body
(替换为 phone 号码和消息的字符串值)。
希望对您有所帮助。
我想从 Twilio 发送 SMS,注意到他们有为 Java、.Net、Node 等构建的库,以便我们在掌握这些技术时可以使用它们。
但我想从 Salesforce Apex 做同样的事情,并试图找出如何构建 Http 参数来进行授权。
我尝试使用 Twilio 文档中给出的 cURL 示例进行映射,但找不到 Auth 令牌的 header 键。
下面是我当前的代码,正在寻找如何设置身份验证参数。
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);
回复说
Bad Request : A 'From' phone number is required.
phone 数字不在 header 中。
对于 header,您将需要
Content-Type: "application/x-www-form-urlencoded"
然后你需要另一个header授权
Authorization: auth-string
其中 auth-string
是字符串 Basic
后跟 space 后跟 twilio-account-sid:twilio-auth-token
的 base64 编码的组合(替换为您的 Twilio 凭据加入冒号)所以 header 看起来像
Authorization: "Basic ABCiDEdmFGHmIJKjLMN2OPQwR2S3TUVzABliCDE3FGc1HIo2JKL2MjNwOPcxQRSwTUc1Vzc0XmYhZAB3CDElFGH1Jw=="
POST 请求的 body
应该包含 To
、From
和 Body
的键值对,例如
"From=" + twilio-phone-number + "&To=" + to-number + "&Body=" + message-body
(替换为 phone 号码和消息的字符串值)。
希望对您有所帮助。