【问题标题】:twilio twiml php not executedtwilio twiml php 未执行
【发布时间】:2017-08-04 03:47:17
【问题描述】:

我想我正在尝试做一些相对简单的事情,但我无法让它发挥作用。基本上,我想要一个 twilio '菜单'。例如。用户拨打我们的号码,我们说按 1 输入英文 2 输入中文... 我创建了一个收集 twiml:

<Response>
<Gather numDigits="1" action="https://handler.twilio.com/twiml/XXX">
<Say voice="alice">For English, press 1 now.</Say>
<Say voice="alice"> For Chinese, press 2 now. </Say>
</Gather>
</Response>

这行得通,我被重定向到我的第二个 twiml(用一个简单的响应测试,比如 twiml),但这里是出错的地方。 在我的第二个脚本中,如果我添加任何 php,它就不再起作用。基本上,我想重定向到另一个 twiml,根据拨打的号码以正确的语言说出正确的回复。 我的 twiml 看起来像这样(所以这就是我在 twimlbin 中的字面意思):

<?php
require_once './vendor/autoload.php';
use Twilio\Twiml;

$digits = $_REQUEST['Digits'];
switch ($digits) {
case 1:
   $response = new Twiml();
$response->redirect('http://pigeons.com/twiml.xml', ['method' => 'POST']);
echo $response;
    break;
case 2:
   $response = new Twiml();
$response->redirect('http://pigeons.com/twiml.xml', ['method' => 'POST']);
echo $response;
    break;
default:
     echo '<Response>';
    echo '<Say>Sorry, your response was invalid.</Say>';
    echo '</Response>';
}

?>

但是,当我有这个时,什么也没有发生。 我不排除脚本错误,但我随后将 twiml 更改为:

<?php
header("content-type: text/xml");
?>
<Response>
<Say><?php echo "Test"?></Say>
</Response>

但是,当我拥有这个脚本时,我仍然什么也听不到,也没有在调试器日志中看到任何内容。我对 Twilio 完全陌生,所以我可能会遗漏一些简单的东西,但我似乎无法弄清楚。

所以我的问题是,为什么这在 twiml 中不起作用? 如果可能的话,我的重定向脚本看起来还可以吗?

【问题讨论】:

  • 您的 twiML 是否在可以执行 PHP 的服务器上?它是否返回 xml 标头 &lt;?xml version="1.0" encoding="utf-8"?&gt;?您应该使用Twiml() 对象来生成它

标签: twilio twilio-php


【解决方案1】:

TwiML bins 不执行 php。如果您想使用 php 即时生成 TwiML,则需要将其托管在您自己的服务器上。

您可以从 TwiML bin 生成动态 TwiML,但您需要使用 Mustache 模板。

查看Twilio's article 和Mustache pages 了解更多信息。

【讨论】:

  • 这完全正确。我们确实有一项功能可以让您编写代码,Twilio Functions,但您需要使用 Node.js 而不是 PHP。
  • 是的,我在此期间发现了这一点。抱歉反应迟了。出于某种原因,我误解了 Twiml 垃圾箱。我认为我可以使用它们编写 Twilio 支持的任何代码,而不必在外部服务器上设置文件。谢谢
猜你喜欢
  • 1970-01-01
  • 2019-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多