在没有URL引用的情况下将动态文本发送到语音呼叫

时间:2017-08-15 19:24:50

标签: php twilio

在Twilio文档中,它声明您可以静态发送文本到语音呼叫:

use Twilio\Rest\Client;

$AccountSid = "";
$AuthToken = "";

$client = new Client($AccountSid, $AuthToken);

try {
    $call = $client->account->calls->create(
        "+15555551234",
        "+15555554321",
        array("url" => '/twilio/twilio.welcome.message.php')
    );
    echo "Started call: " . $call->sid;
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}

我发现动态创建的消息有点多了。这适用于静态消息。我想做的是这样的事情:

use Twilio\Twiml;

$response = new Twiml();
$response->say('Chapeau!', ['voice' => 'woman', 'language' => 'fr']);

$AccountSid = "";
$AuthToken = "";

$client = new Client($AccountSid, $AuthToken);

try {

    $call = $client->account->calls->create(
        "+phoneNumber",
        "+phoneNumber",
        array("response" => $response)
    );
    echo "Started call: " . $call->sid;
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}

它暗示能够在文档中执行此操作,但我无法在任何地方找到它。如果没有比创建php脚本更简单的实现,调用,然后删除以使其工作,我会感到非常震惊。但是我的生活中看到了更糟糕的事情。

2 个答案:

答案 0 :(得分:1)

Twilio开发者传道者在这里。

我担心在接听电话时,无法将TwiML发送到Twilio来执行。您仍需要在连接呼叫时发送respond with TwiML的网址。

但是,您可以使该URL动态响应。如果您只是发送要读出的消息,那么您可以将该消息作为查询参数发送到URL中,然后在调用webhook时使用该消息。例如:

$message = "Hello! This is a message!";
$call = $client->account->calls->create(
    "+15555551234",
    "+15555554321",
    array("url" => '/twilio/twilio.welcome.message.php?message='.urlencode($message))
);

然后,在你的webhook中:

<?php
  $message = $_REQUEST['message'];
  header("Content-type: text/xml");
  echo "<?xml version='1.0' encoding='UTF-8'?>\n";
?>
<Response>
  <Say><?php echo $message ?></Say>
</Response>

这样,您可以动态创建消息,但只能托管一个webhook端点。

让我知道这是否有帮助。

答案 1 :(得分:0)

使用Twiml bin怎么样?通过这种方式,您可以使用twilio托管的URL为您生成twiml,而不是指向您的服务器。它支持动态变量,循环等。

请参阅:https://support.twilio.com/hc/en-us/articles/230878368

然后使用这样的动态变量:

<Say>Hello {{CustomerName}}</Say>