(输入后的第二个更新版本-有进展-谢谢)我想在通话期间使用Twilio函数发送SMS(以避免制作完整的外部应用程序)。 目标是在自动通话结束时(使用Twilio自动驾驶仪)发送确认SMS。 如果用户说出正确的句子(“我想通过短信确认”),自动驾驶仪将启动以下任务。
{
"actions": [
{
"redirect": "https://my_domain_here.twil.io/my_url_here"
}
]
}
然后我的函数具有以下代码:
exports.handler = function(context, event, callback) {
var client = context.getTwilioClient();
/**to have some view on incoming request */
console.log("context : "+JSON.stringify(context));
console.log("event : "+JSON.stringify(event));
//send the answer SMS
console.log("sending SMS");
client.messages
.create({
body: 'test sms',
from: '+32x_my_nbr_xx',
to: '+32x_my_other_nbr_xx'//is hardcoded - just to test
})
.then(message => console.log(message.sid))
.done();
//now create the Twiml to send back to autopilot the text to be spoken
console.log("SMS sent, returning to autopilot");
var action = {"actions": [{"say": "I understand that you want a confirmation. I will send you a summary by SMS. Goodbye" }]};
callback(null, action);
}
但是当我打电话说“我希望通过短信进行确认”时,我会听到“我知道你想要确认。我将通过短信向您发送摘要。再见”。但是没有发送短信。 当我查看自动驾驶仪的日志时,触发了正确的意图。 函数的日志不包含任何内容(仅包含常规日志,但不包含Msgid) 有人有主意吗?
我知道它可以工作,但是真的没有办法避免仅编写和维护完整的后端来发送此SMS吗? 提前谢谢。
答案 0 :(得分:0)
这里是Twilio开发人员的传播者。
我怀疑自动驾驶仪发出的请求是语音请求,这意味着您将无法返回MessageResponse,因为这仅适用于来自传入SMS消息的请求。
要在该函数中发送文本,您需要使用Node helper库来调用REST API:
client.messages
.create({
body: 'This is the ship that made the Kessel Run in fourteen parsecs?',
from: '+15017122661',
to: '+15558675310'
})
.then(message => console.log(message.sid))
.done();
希望有帮助。
答案 1 :(得分:0)
这里还有另一个Twilio开发人员布道者。
使用REST API的更新应该会有所帮助,但是我认为现在的问题是,您是在API请求完成之前从函数返回的。您应该在promise callback
函数中调用它,而不是在promise解决方案之后调用then
。
类似这样的东西:
exports.handler = function(context, event, callback) {
var client = context.getTwilioClient();
/**to have some view on incoming request */
console.log('context : ' + JSON.stringify(context));
console.log('event : ' + JSON.stringify(event));
//send the answer SMS
console.log('sending SMS');
client.messages
.create({
body: 'test sms',
from: '+32x_my_nbr_xx',
to: '+32x_my_other_nbr_xx' //is hardcoded - just to test
})
.then(message => {
console.log('SMS sent, returning to autopilot');
var action = {
actions: [
{
say:
'I understand that you want a confirmation. I will send you a summary by SMS. Goodbye'
}
]
};
callback(null, action);
})
};