Twilio:短信不发送
问题描述:
在通话结束时,我想发送带有链接的短信,以便将通话记录到来电者和控制号码。Twilio:短信不发送
我有两个TwiML箱。第一个处理拨号和录音,然后将呼叫转到第二个存储箱。这很好。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial record="record-from-ringing-dual" timeLimit="600" action="https://handler.twilio.com/twiml/XXXXXXXXXXXXXXX">
<Number>{{Digits}}</Number>
</Dial>
</Response>
这里的第二仓:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Sms from="+XXXXXXXXX" to="{{From}}">Here's the recording of your call: {{RecordingUrl}}</Sms>
<Sms from="+XXXXXXXXX" to="+YYYYYYYYYY">Call recorded from {{From}} to {{To}}.</Sms>
</Response>
从日志中,我看到了TwiML仓成功调用。状态代码是200.正确替换了{{发件人}}号码。
但是,没有发送短信。 SMS日志中没有SMS。如果我自己打电话,不会收到短信。尽管如此,通话记录或调试器中不会显示错误消息。
答
Twilio开发人员传道这里。
正如我们在其他问题中所讨论的,<Sms>
在引擎盖下使用了不建议使用的SMS/Messages资源。因此它不具有良好的日志记录。
我推荐使用Messages resource of the REST API to send messages来代替。你不能用TwiML Bin来做,但你可以用Twilio Functions。
在config section for Functions请确保勾选了“启用ACCOUNT_SID和AUTH_TOKEN”复选框。 Create a new Function in your Twilio console并输入以下代码(替换为实数的占位符):
exports.handler = function(context, event, callback) {
const client = context.getTwilioClient();
const message1 = client.messages.create({
from: YOUR_TWILIO_NUMBER,
to: event.From,
body: `Here's the recording of your call: ${event.RecordingUrl}`
});
const message2 = client.messages.create({
from: YOUR_TWILIO_NUMBER,
to: THAT_OTHER_NUMBER,
body: `Call recorded from ${event.From} to ${event.To}.`
})
Promise.all([message1, message2]).then(() => {
let twiml = new Twilio.twiml.VoiceResponse();
callback(null, twiml);
}, err => {
callback(err);
})
};
给功能的路径,然后复制整个URL,并把它作为你的第一个TwiML斌在<Dial>
action属性。
让我知道这是否有帮助。
再次嘿!好的,效果更好,根本问题是第一个数字没有正确的地理权限。现在至少另一条消息正确发送。但是,由于地理权限导致第一条消息失败的事实不会显示在调试器,通话记录或SMS日志中。它只出现在功能日志中,当我刷新页面时,它会刷新。这是正常的吗? – MasterScrat
那么,从这个函数进行HTTP调用就像是从你自己的服务器进行HTTP调用,所以错误不会出现在调试器,通话记录或短信日志中。我只是找出功能日志是否存储在任何地方进行审查。 – philnash
我听说随着函数在公共测试阶段的推进,历史日志已经进入路线图。所以你将能够看到这些日志中的错误。 – philnash