【问题标题】:How to send Twilio SMS via Web Service in Salesforce Apex如何在 Salesforce Apex 中通过 Web 服务发送 Twilio SMS
【发布时间】:2018-08-13 07:27:40
【问题描述】:

我想从 Twilio 发送 SMS,注意到他们有为 Java、.Net、Node 等构建的库,因此如果我们掌握这些技术,我们可以使用它们。

但我想从 Salesforce Apex 做同样的事情,并试图弄清楚如何构建 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);

回应说

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

【问题讨论】:

    标签: salesforce twilio apex


    【解决方案1】:

    电话号码不在标题中。

    对于您将需要的标题

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

    那么你将需要另一个标题来授权

    Authorization: auth-string

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

    Authorization: "Basic ABCiDEdmFGHmIJKjLMN2OPQwR2S3TUVzABliCDE3FGc1HIo2JKL2MjNwOPcxQRSwTUc1Vzc0XmYhZAB3CDElFGH1Jw=="

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

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


    我希望这有帮助。

    【讨论】:

    • 感谢您的指导。我想我通过应用这些更改将您的答案提升到了一个新的水平。但是我收到 400 Bad request 作为响应。我已经用我更新的 Http 请求更新了 OP。你能看看那里有什么问题吗?
    • 感谢您的及时回复。实际上,我是在正文字符串本身中设置数字。只需将它们替换为from_number 和“to_number”,以便在此处发布(没有实际数字)它类似于EncodingUtil.urlEncode('From=+18888888888&To=+15555555555&Body=Sample text from twilio', 'UTF-8'); 的实际代码
    • 是的,这是我从 API 资源管理器的成功调用中获得的代码中的 twilio 编号。不是评论或帖子中的数字。
    • 问题似乎是“&”被编码时。当使用以下字符串作为正文(仅编码“+”)请求成功。 'From=%2B18888888888&To=%2B15555555555&Body=Sample text from twilio'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 2017-10-12
    • 2018-08-08
    相关资源
    最近更新 更多