Twilio:未发送短信

Twilio: SMS not sent

在通话结束时,我想发送一条带有 link 的 SMS 到呼叫者和控制号码的对话录音。

我有两个 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 bin 已成功调用。状态代码为 200。{{From}} 号码已正确替换。

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

这里是 Twilio 开发人员布道者。

正如我们在您的其他问题中讨论的那样,<Sms> 在后台使用已弃用的 SMS/Messages 资源。因此它没有很好的日志记录。

我建议使用 Messages resource of the REST API to send messages instead. You can't do that with a TwiML Bin, but you can with Twilio Functions

config section for Functions make sure the "Enable ACCOUNT_SID and AUTH_TOKEN" check box is ticked. 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 Bin 中 <Dial> 中的操作属性。

如果有帮助请告诉我。