如何在VoiceResponse中通过TwiML重定向使端点命中并返回MessagingResponse?

时间:2019-09-22 00:58:32

标签: twilio twilio-twiml

我有一种情况,我希望TwiML VoiceResponse调用另一个返回MessagingResponse的端点。但是,我收到XML Validation warning的MessagingResponse,因为我怀疑是入站类型(呼叫)和出站类型(SMS)不匹配。

请注意,有一项要求,我不能使用此处https://support.twilio.com/hc/en-us/articles/360017437774-Combining-Voice-SMS-and-Fax-TwiML-in-the-Same-Response中建议的Twilio客户端。我想用纯TwiML来实现。

我在Twilio电话号码上设置了一个呼叫Webhook,该呼叫命中了NodeJS服务器上的POST /call端点。终结点使用TwiML进行响应,TwiML会发出提示音并调用重定向到我服务器上的另一个终结点。

TwiML返回:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Play digits="www9"/>
    <Redirect method="POST">[url-omitted]/notify</Redirect>
</Response>

然后,在同一台服务器上,我有第二个POST /notify端点,为简单起见,我们将其发送到特定号码的短信。

从重定向端点返回的TwiML:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Message to="+11234567890">Hello world!</Message>
</Response>

预期结果

预期结果是,当我从手机拨打Twilio号码时,我听到“ 9”音,然后收到“ Hello world!”短信。

实际结果

我只听到“ 9”音,从未收到短信。

当我在Twilio控制台中查看时,我看到对POST /notify端点进行了 调用,它以预期的TwiML响应,但是它有一个{{1 }}。

12200 - Schema validation warning

如前所述,我怀疑上面的错误消息是因为这都是源自呼叫而不是短信。

1 个答案:

答案 0 :(得分:2)

这里是Twilio开发人员的传播者。

<Message> TwiML verb仅在消息传递流程期间可用,这就是为什么您收到架构验证警告的原因。

您可以使用不赞成使用的<Sms>动词在语音呼叫期间发送消息,但是我不建议这样做,因为它使用了旧的消息传递API,并且无法处理Unicode或消息长度超过160个字符的消息。

相反,我建议您在通话中使用Messages REST API to send messages