我目前正在集成twilio rest api,需要对用户的电话号码执行检查,以确定该用户是否已将自己列入黑名单。我几乎没有使用这个api的经验,我浏览了所有的文档,google没有找到任何东西。
在我们的应用程序中,我们将有一个通知中心,如果用户将自己列入黑名单,我不想让他们有能力打开他们的短信通知。用户可能会打开短信通知,但twilio会阻止任何消息。我知道,当短信排队显示用户被列入黑名单(https://www.twilio.com/docs/api/rest/message)时,有能力从twilio获取状态代码。但是,我不会在通知屏幕上发送消息,我需要一种直接的方法(如果可能的话)来检查twilio,以确定某个号码是否被列入黑名单。任何帮助都是非常感谢的。如果更多的信息对我们有帮助,请告诉我。
发布于 2015-10-27 05:59:45
来自Twilio的梅根。
我很好奇您是否尝试过自己的变通方法。但我想为处于类似情况的其他人指出,如何捕获黑名单错误,然后随心所欲地处理它。
在Ruby中,它看起来像这样:
require 'rubygems'
require 'twilio-ruby'
account_sid = 'YOUR_ACCOUNT_SID'
auth_token = 'YOUR_AUTH_TOKEN'
@client = Twilio::REST::Client.new account_sid, auth_token
begin
@message = @client.messages.create(
from: 'TWILIO_NUMBER',
to: 'USER_NUMBER',
body: 'Howdy!'
)
rescue Twilio::REST::RestError => e
if e.code == 21610
# User is blacklisted
# Store info however you choose
puts e.message
end
end我们特别使用代码'21610‘检查黑名单。有关错误的更多信息,请访问reference page。
希望这能有所帮助!
发布于 2019-12-24 00:20:29
Twilio建议开发人员将opt-out/in状态存储在自己的一侧。我已经把它存储在数据库中了。有两种方式可以收集未订阅用户列表。
1)使用短信webhook。您可以了解如何配置您的Twilio号码以接收webhook事件here
@PostMapping(value = "/twilio", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
produces = MediaType.APPLICATION_ATOM_XML_VALUE)
public String twilioConsumer(TwilioEventDTO twilioEventDTO) {
// twilioEventDTO.getBody() => returns the body of the SMS user replied.
twilioService.consume(twilioEventDTO);
return new MessagingResponse.Builder().build().toXml();
}2)由于我后来实现了webhooks,所以我必须收集已经取消订阅的用户。当您向已选择退出的号码发送短信时,Twilio API会抛出状态号为21610的异常。您可以捕获它并将号码存储在数据库中。
try {
Message result = Message.creator(
new PhoneNumber(toPhoneNumber),
new PhoneNumber(fromPhoneNumber),
messageBody)
.create();
response = result.getStatus().name();
} catch (ApiException e) {
if (e.getCode().equals(21610))
updateSubscription(toPhoneNumber, false);
logger.warn("Error on sending SMS: {}", e.getMessage());
}附注:用Java - Spring Boot框架编写的示例。
https://stackoverflow.com/questions/25254499
复制相似问题