如何在以下初学者 TwiML 代码中调试“应用程序错误”语音提示


How do I debug the "Application Error" voice prompt in the following beginner TwiML code?

我有一个非常基本的应用程序,其中用户受到欢迎,并可以选择选择 1 或 2 并发送到回调脚本。每当我通过第一个菜单时,它都会给我一条"应用程序遇到错误"消息。

我的脚本如下:

    <?php
    // make an associative array of callers we know, indexed by phone number
    $people = array(
        "+15559990000"=>"A"  );
    // if the caller is known, then greet them by name
    // otherwise, consider them just another caller
    if(!$name = $people[$_REQUEST['From']])
        $name = "caller";
    // now greet the caller
    header("content-type: text/xml");
    echo "<?xml version='"1.0'" encoding='"UTF-8'"?>'n";
?>
<Response>
    <Gather action="process.php" numDigits="1">
        <Say>Hello <?php echo $name ?>. Welcome to Choons by Yo-say.</Say>
        <Say>To continue as <?php echo $name ?>, press 1.</Say>
        <Say>If you are using a different number but would like to access your account, press 2</Say>
    </Gather>
    <!-- If customer doesn't input anything, prompt and try again. -->
    <Say>Sorry, I didn't get your response.</Say>
</Response>

因此,该过程.php脚本如下所示:

<?php
    header('Content-type: text/xml');
    echo '<?xml version="1.0" encoding="UTF-8"?>';
    echo '<Response>';
    # @start snippet
    $user_pushed = (int) $_REQUEST['Digits'];
    # @end snippet
    if ($user_pushed == 1)
    {
        echo '<Say>You pressed 1</Say>';
    }
    if ($user_pushed == 2) 
    {
        echo '<Say>You pressed 2</Say>';
    }
    else {
        // We'll implement the rest of the functionality in the 
        // following sections.
        echo "<Say>Sorry, I can't do that yet.</Say>";
        echo '<Redirect>mine-or-not.php</Redirect>';
    }
    echo '</Response>';
?>

当我拨入我的模拟账户时,它成功地完成了整个第一个脚本。但是在按"1"或"2"时,它只是说"抱歉,应用程序遇到错误"。谁能发现我的错误?

这里的

Twilio布道者。

有许多调试技巧:

  1. 检查应用程序监视器,了解 Twilio 在尝试向您的网站发出请求时捕获的内容。 通常,这会为您提供足够的信息来弄清楚发生了什么。 App Monitor 还允许您"重播"发送与原始请求相同的参数的单个 Webhook 请求,以帮助您诊断故障。

  2. 尝试在浏览器中加载PHP文件,或使用Fiddler或Postman等工具来模拟Twilio请求的HTTP请求。 这将允许您练习代码,像 Twilio 一样向他们发出 HTTP 请求,但您可以看到您的应用程序发送的响应。

希望有帮助。