如何解决Twilio经典功能,如何使用标签和SMS?
Twilio函数问题:标签无法按预期工作。
我正在尝试为将SMS'keyword1','keyword2','keyword3'等添加到我的电话号码的用户创建唯一的SMS订阅列表。
我是通过经典功能拦截“传入消息”事件的。
我想轮询关键字,然后在我向用户订阅列表时为其分配标签。
然后,当我广播SMS时,我希望只能发送给那些用我的关键字标记的用户。
例如,要捕获关键字“ test”并将标签“ test”分配给用户,我正在使用下面的代码。
然后使用标签“ test”向所有用户发送消息,我正在使用“ sendtest”命令。
我可以广播“全部”标签,并且可以正常工作,但是如果我只想发送带有标签['test']的用户,则不会报告任何错误,并且系统会告诉我它成功了,但是没有订阅者会收到任何消息。
我想知道在尝试定义标签的方式上是否存在问题?看来数据格式应该是某种类型的STRING []数组,我猜是['test','two','three']。 (如果我可以确认这是正确的)。但是我注意到,按照twilio提供的工作示例,如果我将通知参数设置为字符串IE:tags: 'all',
,则此语法可以向所有标签广播。但是,其他所有内容都将无法正常工作。
是否有一些技巧可以使标记起作用,或者在尝试通过经典功能界面过滤通知时它们根本不起作用?
class TestCommand extends Command {
run(callback) {
// Create a new SMS Notify binding for this user's phone number
//and try to tag the user with keyword 'test'
notify.bindings.create({
identity: this.fromNumber,bindingType: 'sms',address: this.fromNumber,tags: ['test']
}).then((response) => {
callback(null,'test Message success')
}).catch(err => {
callback(err,'test message fail')
})
}
}
class BroadcastTestCommand extends Command {
run(callback) {
// Check if sender is in list of admins,stored in the system environment
// as a comma-separated string
if (adminNumbers.indexOf(this.fromNumber) < 0) {
return callback(null,'broadcast Not Authorized')
}
// Create a new SMS Notify binding for this user's phone number
//only notify users who are tagged with 'test'
notify.notifications.create({
tag: ['test'],body: this.commandText
}).then((response) => {
callback(null,'broadcast test Success')
}).catch(err => {
console.log(err)
callback(err,'broadcast test Fail')
})
}
}
// Handle incoming SMS commands ####################
exports.handler = (context,event,callback) => {
// Get command text from incoming SMS body
let cmd = event.Body || ''
cmd = cmd.trim().split(' ')[0].toLowerCase()
// Default to help command
let cmdInstance = new HelpCommand(event,context)
// Choose other commands as appropriate
switch(cmd) {
case 'test': cmdInstance = new TestCommand(event,context); break;
case 'sendtest': cmdInstance = new BroadcastTestCommand(event,context); break;
}
// Execute command
cmdInstance.run((err,message) => {
let twiml = new twilio.twiml.MessagingResponse()
if (err) {
console.log(err)
message = 'There was a problem with your request. Try again!'
}
twiml.message(message)
callback(null,twiml)
})
}
解决方法
好吧,其他任何人都可以在这个头发上拔头发。 关于绑定的Twilio文档将使您失望 https://www.twilio.com/docs/notify/api/binding-resource
因为参数不是“标签”,所以是“标签”
这有效...
class TestCommand extends Command {
run(callback) {
// Create a new SMS Notify binding for this user's phone number
//and try to tag the user with keyword 'test'
notify.bindings.create({
identity: this.fromNumber,bindingType: 'sms',address: this.fromNumber,tag: ['test']
}).then((response) => {
callback(null,'test Message success')
}).catch(err => {
callback(err,'test message fail')
})
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。