如何在 VoiceResponse return MessagingResponse 中通过 TwiML 重定向命中端点?
How do I make the endpoint hit from a TwiML redirect in a VoiceResponse return a MessagingResponse?
我有一种情况,我希望 TwiML VoiceResponse 调用另一个端点,该端点 returns MessagingResponse。但是,我收到 MessagingResponse 的 XML Validation warning
,因为我怀疑入站类型(呼叫)和出站类型(SMS)不匹配。
请注意,我不能按照此处https://support.twilio.com/hc/en-us/articles/360017437774-Combining-Voice-SMS-and-Fax-TwiML-in-the-Same-Response的建议使用 Twilio 客户端。我想用纯 TwiML 来实现这一点。
我在我的 Twilio phone 号码上设置了一个调用 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
端点,为了简单起见,可以将 SMS 发送到特定号码。
从重定向端点返回的 TwiML:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Message to="+11234567890">Hello world!</Message>
</Response>
预期结果
预期的结果是,当我从手机拨打 Twilio 号码时phone,我听到“9”音,然后收到一条短信 "Hello world!"。
实际结果
我只听到“9”音,没有收到短信。
当我查看 Twilio 控制台时,我可以看到对 POST /notify
端点进行了 调用 ,并且它以预期的 TwiML 响应,但它有一个 12200 - Schema validation warning
.
Msg "XML Validation warning"
line "2"
parserMessage " Invalid content was found starting with element 'Message'. One of '{Play"
ErrorCode "12200"
cols "32"
LogLevel "WARN"
url "https://handler.twilio.com/twiml/[id-omitted]"
如前所述,我怀疑上述错误消息是因为这一切都来自电话而不是短信。
此处为 Twilio 开发人员布道师。
<Message>
TwiML verb 仅在消息流期间可用,这就是您收到架构验证警告的原因。
您可以使用已弃用的 <Sms>
动词在语音通话期间发送消息,但我不推荐这样做,因为它使用旧消息 API 并且不处理 unicode 或超过 160 个字符的消息。
相反,我建议您在通话期间使用 Messages REST API to send messages。
我有一种情况,我希望 TwiML VoiceResponse 调用另一个端点,该端点 returns MessagingResponse。但是,我收到 MessagingResponse 的 XML Validation warning
,因为我怀疑入站类型(呼叫)和出站类型(SMS)不匹配。
请注意,我不能按照此处https://support.twilio.com/hc/en-us/articles/360017437774-Combining-Voice-SMS-and-Fax-TwiML-in-the-Same-Response的建议使用 Twilio 客户端。我想用纯 TwiML 来实现这一点。
我在我的 Twilio phone 号码上设置了一个调用 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
端点,为了简单起见,可以将 SMS 发送到特定号码。
从重定向端点返回的 TwiML:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Message to="+11234567890">Hello world!</Message>
</Response>
预期结果
预期的结果是,当我从手机拨打 Twilio 号码时phone,我听到“9”音,然后收到一条短信 "Hello world!"。
实际结果
我只听到“9”音,没有收到短信。
当我查看 Twilio 控制台时,我可以看到对 POST /notify
端点进行了 调用 ,并且它以预期的 TwiML 响应,但它有一个 12200 - Schema validation warning
.
Msg "XML Validation warning"
line "2"
parserMessage " Invalid content was found starting with element 'Message'. One of '{Play"
ErrorCode "12200"
cols "32"
LogLevel "WARN"
url "https://handler.twilio.com/twiml/[id-omitted]"
如前所述,我怀疑上述错误消息是因为这一切都来自电话而不是短信。
此处为 Twilio 开发人员布道师。
<Message>
TwiML verb 仅在消息流期间可用,这就是您收到架构验证警告的原因。
您可以使用已弃用的 <Sms>
动词在语音通话期间发送消息,但我不推荐这样做,因为它使用旧消息 API 并且不处理 unicode 或超过 160 个字符的消息。
相反,我建议您在通话期间使用 Messages REST API to send messages。