代码之家  ›  专栏  ›  技术社区  ›  MasterScrat

Twilio:未发送短信

  •  0
  • MasterScrat  · 技术社区  · 9 年前

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

    <?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 回复  |  直到 9 年前
        1
  •  1
  •   philnash    9 年前

    Twilio开发者布道者。

    正如我们在你的另一个问题中讨论的那样, <Sms>

    我建议使用 Messages resource of the REST API to send messages 相反你不能用TwiML垃圾箱,但你可以用 Twilio Functions .

    config section for Functions 确保选中“启用帐户SID和身份验证令牌”复选框。 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);
      })
    };
    

    <Dial> 在你的第一个TwiML垃圾桶里。