Sms Twilio:未发送短信

Sms Twilio:未发送短信,sms,twilio,Sms,Twilio,在通话结束时,我想向来电者和控制号码发送一条短信,其中包含通话录音的链接 我有两个垃圾桶。第一个负责拨号和录音,然后将电话转接到第二个电话亭。这很有效 <?xml version="1.0" encoding="UTF-8"?> <Response> <Dial record="record-from-ringing-dual" timeLimit="600" action="https://handler.twilio.com/twiml/XXXXXXXXXX

在通话结束时,我想向来电者和控制号码发送一条短信,其中包含通话录音的链接

我有两个垃圾桶。第一个负责拨号和录音,然后将电话转接到第二个电话亭。这很有效

<?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>

这是您通话的录音:{{RecordingUrl}
从{{from}}到{{{to}的呼叫记录。
从日志中,我看到TwiML bin被成功调用。状态代码是200。已正确替换{From}}号


但是,没有发送短信。短信日志中不显示短信。如果我自己打电话,就不会收到短信。尽管如此,在调用日志或调试器中没有出现错误消息。

Twilio开发者福音传道者

正如我们在您的另一个问题中所讨论的,
使用了不推荐使用的SMS/Messages资源。因此,它没有很好的日志记录

我建议改为使用。你不能用TwiML垃圾箱来做,但你可以用

在中,确保选中“启用帐户SID和身份验证令牌”复选框。并输入以下代码(替换实数的占位符):

为函数指定一个路径,然后复制整个URL,并将其用作第一个TwiML Bin中
中的操作属性


如果有任何帮助,请告诉我。

嘿,再来一次!好的,这样效果更好,根本问题是第一个号码没有正确的地理权限。现在,至少另一条消息已正确发送。但是,调试器、呼叫日志或SMS日志中没有显示第一条消息因地理权限而失败的事实。它只出现在函数日志中,当我从所看到的内容刷新页面时,这些日志会被刷新。这正常吗?从函数进行HTTP调用就像从您自己的服务器进行HTTP调用,因此错误不会出现在调试器、调用日志或SMS日志中。我只是想知道函数日志是否存储在任何地方以供查看。我听说随着函数通过其公共测试阶段,历史日志会出现在路线图中。因此,您将能够看到这些日志中的错误。好的,谢谢您的研究。实际上,在调用日志中,您可以看到返回的请求,状态代码为500。我认为应该在通话记录的顶部更清楚地表明,在这条路上出了问题。那500人不是在电话中显示为警报吗?
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);
  })
};