Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Salesforce Apex中通过Web服务发送Twilio短信_Salesforce_Twilio_Apex - Fatal编程技术网

如何在Salesforce Apex中通过Web服务发送Twilio短信

如何在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

我想从Twilio发短信,注意到他们有为Java、.Net、Node等构建的库,所以如果我们熟悉这些技术,我们可以使用它们

但是我想在SalesforceApex上做同样的事情,并试图找出如何构建Http参数来进行授权

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

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

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的示例文本'