我有一种情况,我希望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
如前所述,我怀疑上面的错误消息是因为这都是源自呼叫而不是短信。
答案 0 :(得分:2)
这里是Twilio开发人员的传播者。
<Message>
TwiML verb仅在消息传递流程期间可用,这就是为什么您收到架构验证警告的原因。
您可以使用不赞成使用的<Sms>
动词在语音呼叫期间发送消息,但是我不建议这样做,因为它使用了旧的消息传递API,并且无法处理Unicode或消息长度超过160个字符的消息。
相反,我建议您在通话中使用Messages REST API to send messages。