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属性。

让我知道这是否有帮助。

+0

再次嘿!好的,效果更好,根本问题是第一个数字没有正确的地理权限。现在至少另一条消息正确发送。但是,由于地理权限导致第一条消息失败的事实不会显示在调试器,通话记录或SMS日志中。它只出现在功能日志中,当我刷新页面时,它会刷新。这是正常的吗? – MasterScrat

+0

那么,从这个函数进行HTTP调用就像是从你自己的服务器进行HTTP调用,所以错误不会出现在调试器,通话记录或短信日志中。我只是找出功能日志是否存储在任何地方进行审查。 – philnash

+0

我听说随着函数在公共测试阶段的推进,历史日志已经进入路线图。所以你将能够看到这些日志中的错误。 – philnash