【问题标题】:Twilio: SMS not sentTwilio:未发送短信
【发布时间】:2017-12-15 19:25:45
【问题描述】:

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

我有两个 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。如果我自己拨打电话,则不会收到短信。尽管如此,调用日志或调试器中都不会出现错误消息。

【问题讨论】:

    标签: sms twilio


    【解决方案1】:

    这里是 Twilio 开发者宣传员。

    正如我们在您的其他问题中所讨论的,&lt;Sms&gt; 在后台使用了已弃用的 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 Bin 中 &lt;Dial&gt; 中的操作属性。

    让我知道这是否有帮助。

    【讨论】:

    • 你好!好的,效果更好,根本问题是第一个数字没有正确的地理权限。现在至少正确发送了另一条消息。但是,由于地理权限而导致第一条消息失败的事实不会出现在调试器、呼叫日志或 SMS 日志中。它只出现在功能日志中,当我从我看到的内容刷新页面时,这些日志会被刷新。这正常吗?
    • 嗯,从函数发起 HTTP 调用就像从你自己的服务器发起 HTTP 调用一样,因此错误不会出现在调试器、调用日志或 SMS 日志中。我只是想知道函数日志是否存储在任何地方以供查看。
    • 我听说随着 Functions 进入公测阶段,历史日志已包含在路线图中。因此,您将能够在这些日志中看到错误。
    • 好的,感谢您的研究。实际上,在通话记录中,您可以看到返回状态码为 500 的请求。我认为应该在通话记录的顶部更清楚地说明未来出了问题。
    • 那 500 没有在debugger 中显示为警报吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多