我目前正在整合到twilio rest api中,需要对用户的电话号码进行检查,以确定该用户是否已将自己列入黑名单。我对这个api的经验很少,并且通过文档搜索并且google没有任何结果。
在我们的应用程序中,我们将有一个通知中心,如果用户已将自己列入黑名单,我不想让他们打开他们的短信通知。用户可能有SMS通知,但twilio会阻止任何消息。我知道当SMS排队时,有能力从twilio获取状态代码,显示用户被列入黑名单(https://www.twilio.com/docs/api/rest/message)。但是,我不会在通知屏幕上发送消息,并且需要直接(如果可能的话)检查twilio以确定某个号码是否被列入黑名单。任何帮助深表感谢。如果有更多信息会有帮助,请告诉我。
答案 0 :(得分:10)
我很想知道你是否尝试过自己的解决方法。但我想在其他类似情况下注意如何抓住黑名单错误,然后用它做任何你想做的事情。
在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。
希望这有帮助!
答案 1 :(得分:0)
Twilio建议开发人员将退出/退出状态存储在自己的身边。我已经将其存储在数据库中。有两种收集未订阅用户列表的方法。
1)使用SMS Webhooks。您可以找到如何配置您的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());
}
P.S .:用Java-Spring Boot框架编写的示例。