如何在Salesforce Apex中通过Web服务发送Twilio短信
我想从Twilio发短信,注意到他们有为Java、.Net、Node等构建的库,所以如果我们熟悉这些技术,我们可以使用它们 但是我想在SalesforceApex上做同样的事情,并试图找出如何构建Http参数来进行授权 我尝试使用Twilio文档中给出的cURL示例进行映射,但找不到Auth令牌的头键 下面是我的当前代码,正在查找如何设置身份验证参数如何在Salesforce Apex中通过Web服务发送Twilio短信,salesforce,twilio,apex,Salesforce,Twilio,Apex,我想从Twilio发短信,注意到他们有为Java、.Net、Node等构建的库,所以如果我们熟悉这些技术,我们可以使用它们 但是我想在SalesforceApex上做同样的事情,并试图找出如何构建Http参数来进行授权 我尝试使用Twilio文档中给出的cURL示例进行映射,但找不到Auth令牌的头键 下面是我的当前代码,正在查找如何设置身份验证参数 req.setEndpoint(baseURL + '/2010-04-01/Accounts/account_sid/Messages.json
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);
回应说
请求错误:需要“发件人”电话号码
电话号码不在标题中 对于您需要的标题
内容类型:“应用程序/x-www-form-urlencoded”
然后您将需要另一个头进行授权
授权:验证字符串
其中,auth string
是字符串Basic
的组合,后面是一个空格,后面是一个base64编码的twilio帐户sid:twilio auth token
(替换为您的twilio凭证,并用冒号连接),因此标头看起来像
Authorization:“基本ABCIDDEDFGHMIjLmn2oPQWR2S3tuvzablicde3FGC1HIO2JKL2MJNWOPCxQRSWTUC1VZC0XMYHZAB3delfgh1JW=”
POST请求的正文
应该包含至
、自
和正文
的键、值对,类似于
“From=“+twilio phone number+”&To=“+To number+”&Body=“+消息正文”
(替换为电话号码和消息的字符串值)
我希望这能有所帮助。谢谢您的指导。我想通过应用这些变化,我把你的答案提升到了一个新的层次。然而,我得到了400个错误的请求作为响应。我已经用更新的Http请求更新了OP。你能看看哪里出了什么问题吗?谢谢你的及时回复。实际上,我正在设置主体字符串本身的数字。只需将它们替换为
from_number
和'to_number',以便在此处发布(无实际数字),这类似于EncodingUtil.urlEncode('from=+188888888&to=+155555555&Body=来自twilio的示例文本,'UTF-8')代码>在真实代码中是的,这是我代码中的twilio编号,我从API explorer的成功调用中获得。不是评论或帖子中的数字。让我们来看看。问题是“&”似乎是在什么时候被编码的。当使用以下字符串作为正文(仅编码“+”)时,请求成功<代码>'From=%2B18888888&To=%2B1555555&Body=来自twilio的示例文本'