Twilio:未发送短信

时间:2017-07-11 16:03:42

标签: sms 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 bin。状态代码为200. {{From}}号码已正确替换。

但是,不会发送短信。 SMS日志中不显示SMS。如果我自己打电话,不会收到短信。尽管如此,呼叫日志或调试器中不会显示任何错误消息。

1 个答案:

答案 0 :(得分:1)

Twilio开发者传道者在这里。

正如我们在您的其他问题中所讨论的那样,<Sms>使用了已弃用的短信/消息资源。因此,它没有良好的测井记录。

我建议改用Messages resource of the REST API to send messages。您无法使用TwiML Bin执行此操作,但可以使用Twilio Functions

config section for Functions中确保&#34;启用ACCOUNT_SID和AUTH_TOKEN&#34;勾选复选框。 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>的action属性。

让我知道这是否有帮助。