1

我正在使用 twimlbin 服务来测试一些简单的 Twilio xml:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say>This call may be recorded for quality purposes</Say>  
<Dial record="true" action="http://testmyapp.ca/sendmail.php" method="GET">
    555-404-3200
</Dial>
</Response>

在操作 url,我收到录音的 url 和持续时间,并向自己发送电子邮件。一切顺利,电子邮件已发送,但电话中的声音说发生了应用程序错误。该错误是 12100 错误 ( http://www.twilio.com/docs/errors/12100 )。从调试器服务中,我收到“文档第 1 行错误:文件过早结束。请确保响应正文是有效的 XML 文档。” 除了从我的 php 文件中发送电子邮件之外,我什么也没做——我应该从我的 php 文件中返回对 Twilio 的响应吗?我已经注释掉了 sendmail.php 的任何输出 我收到了带有我期望的 GET 参数的电子邮件,但声音仍然说发生了应用程序错误。非常感谢任何帮助。

4

2 回答 2

4

听起来当 Twilio 向您的操作 URL 发出请求时,您的响应不包含任何 TwiML。如果要继续通话,您应该添加一些 Twiml - 可能只是一个<Hangup>,甚至是一个空<Response/>应该做的。<Dial> 请参阅Twilio 网站上的文档。

于 2013-07-02T14:52:13.770 回答
4

我有同样的问题,这就是我解决它的方法。只需将此标头添加到您的 mail.php 文件中:

<?php
/**
 * This section ensures that Twilio gets a response.
 */
header('Content-type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<Response></Response>'; //Place the desired response (if any) here.

而已。无需作出回应。在该标题之后,是发送电子邮件的部分。

我在某处读到您需要挂断响应。没必要。另外,我应该提到我的 mail.php 文件以这样的一行结尾

echo '</Response>';

我刚刚删除了那行。这是不必要的。

我希望这可以帮助其他遇到同样问题的人。

于 2015-12-02T22:29:37.020 回答