【问题标题】:Play sound during Twilio outbound phone call在 Twilio 呼出电话期间播放声音
【发布时间】:2016-10-07 10:07:04
【问题描述】:

我正在尝试通过与 Twilio 的对话播放声音。我是 Twilio 的新手,遇到了一些问题。

调用是从使用 Twilio 客户端 SDK plugin 的移动应用程序发起的。在 Twilio 控制台中,我创建了一个 TwiML 应用程序,并设置了请求 URL。

这是我的 TwiML 代码。

我想要什么:

  • 用户从应用程序发起呼叫。
  • 用户获得时间限制(在我的服务器上的 TwiML 中设置)。
  • 呼叫与 PSTN 上的号码相连。
  • 快到时间限制时,必须播放声音 通知用户通话即将结束。 (例如:时间 通话时间限制为 1 分 30 秒后播放声音)
  • 达到限制时结束通话。

我已经可以在达到时间限制时结束通话,但不知道如何通知用户。

我尝试过的:

我在 TwiML 应用程序中指定了一个状态回调 URL,我想从那里修改调用状态,但状态回调仅在调用完成后调用。这是基于this 的帖子。

我尝试根据this 帖子创建会议,但无法正常工作。我想是因为我没有使用 REST API。我正在使用客户端 SDK 从移动应用程序发起呼叫。我应该使用 REST API 以及如何结合客户端来实现它?

服务器端我使用 PHP。

如果需要更多信息,请告诉我!

【问题讨论】:

  • 您需要接听电话的人听到声音吗?如果您只需要使用该应用程序的人听到它,那么您可以使用该平台来生成声音,而不是在通话中。
  • 是的,我也考虑过,但我宁愿在服务器端处理它,如果可能的话,将声音集成到调用中。

标签: cordova twilio twilio-php


【解决方案1】:

这里是 Twilio 开发者宣传员。

要处理此服务器端,您需要从客户端拨入<Conference>,然后拨入generate a call to the number your user was calling using the REST API,将他们也引导到会议中。

因此,您对来自客户端的原始拨号的响应应该如下所示:

require_once '/path/to/vendor/autoload.php';
use Twilio\Rest\Client;

// Your Account Sid and Auth Token from twilio.com/user/account
$sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$token = "your_auth_token";
$client = new Client($sid, $token);

$number = htmlspecialchars($_REQUEST["TO"]);

// Generate a call to the other party
$call = $client->calls->create(
    $number, 
    $from,
    array("url" => "http://example.com/conference?conference_name=EXAMPLE")
);

$response = new Twiml;
$limit = getLimit($TWILIO_CALLER_ID, 1);

$dial = $response->dial(array('callerId' => $TWILIO_CALLER_ID, 'timelimit' => $limit));

$dial->conference("EXAMPLE");

header("Content-Type: text/xml");
echo $response;

这将使呼叫者进入会议并拨打接收者。当他们接听电话时,您将获得一个指向 URL 的 webhook(在这种情况下为http://example.com/conference?conference_name=EXAMPLE)。您需要使用同一会议室响应该 URL。

$response = new Twiml;

$dial = $response->dial();
$dial->conference($_REQUEST['conference_name']);

header("Content-Type: text/xml");
echo $response;

然后,当您想提醒剩余时间时,您需要再次拨入会议,这次只需使用 TwiML 的 <Say><Play> 读出提醒。

您需要设置一个指向此会议的号码以拨入。然后在时间限制临近时拨打该号码并使用显示该消息的 URL。

require_once '/path/to/vendor/autoload.php';
use Twilio\Rest\Client;

// Your Account Sid and Auth Token from twilio.com/user/account
$sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$token = "your_auth_token";
$client = new Client($sid, $token);

$number = $YOUR_CONFERENCE_NUMBER;

// Generate a call to the other party
$call = $client->calls->create(
    $number, 
    $TWILIO_CALLER_ID,
    array("url" => "http://example.com/time_message")
);

最后,您需要使用 TwiML 响应 /time_message 端点说出消息然后挂断。

$text1 = "Your limit is";
$text2 = "seconds";

$response = new Twiml;
$response->say($text1 . "10 seconds" . $text2)
$response->hangup();

header("Content-Type: text/xml");
echo $response;

让我知道这是否有帮助。

【讨论】:

  • 我现在正在尝试您的代码,我有一个问题。什么是“$YOUR_CONFERENCE_NUMBER”?它是我需要的第二个 Twilio 号码,还是像“EXAMPLE”这样的会议标识符?
  • 您需要一个直接指向您的会议的号码(或者可以通过传入号码推断出哪个会议)。所以是的,这是一个 Twilio 号码。
  • 我看到试用账号只能购买一个号码。我将不得不等到我们准备好升级后才能尝试在对话期间处理语音的最后一部分。
  • 好的,告诉我进展如何!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-18
  • 1970-01-01
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多