在两方之间呼叫并连接他们进行通话

Calling between two parties and connect them to talk

基本上,我正在尝试通过他们的手机号码实现两方之间的通话。我正在使用 PHP laravel.

  1. 每个代理都有各自的表格,用于收集访客的 phone 数量。

  2. 通过访客填写代理表格时。

  3. 我希望 Twilio API 先调用代理。

  4. 如果代理接到电话,那么它应该呼叫访客的 phone 号码。

并连接这两方。

就这些

$client = new Client($AccountSid, $AuthToken);
        try {
            $call = $client->account->calls->create($agent_number, $twilio_number,
                array("url" => $url)
            );    
            echo "Started call: " . $call->sid;
        } catch (Exception $e) {
            echo "Error: " . $e->getMessage();
        }

正在呼叫代理人的 phone 号码..但这就是我想要的 当代理接到电话时,它应该拨打访客的 phone 号码。

我在这里更新了我的代码..

Route::get('call', function() {

    $AccountSid = 'SID HERE';
    $AuthToken = 'AUTH TOKEN HERE';

    $twilio_number = "TWILIO NUMBER HERE";
    $agent_number = "AGENT NUMBER HERE";
    $visitor_phone = urlencode(str_replace(' ','','VISITOR NUMBER HERE'));

    $host = parse_url(Request::url(), PHP_URL_HOST);


    $client = new Client($AccountSid, $AuthToken);
    try {
        $call = $client->account->calls->create($agent_number, $twilio_number,
            array(
                "url" => "http://$host/outbound/$visitor_phone"
            )
        ); 
    } catch (Exception $e) {
        echo "Error: " . $e->getMessage();
    }

});



Route::get('/outbound/{visitor_phone}', function($visitor_phone) {
    $sayMessage = 'Thanks for contacting our sales department. Our
    next available representative will take your call.';

    $twiml = new Twiml();
    $twiml->say($sayMessage, array('voice' => 'alice'));
    $twiml->dial($visitor_phone);

    $response = Response::make($twiml, 200);
    $response->header('Content-Type', 'text/xml');
    return $response;
});

在我的 TWILIO webhook 中我有

website.com/outbound/visitor_number  HTTP GET REQUEST

我可以访问我的出站消息 感谢您联系我们的销售部门。我们的下一位可用代表将接听您的电话。但之后它不会拨打访客号码。它只是断开通话。

本文来自 Twillio 的官方网站。我想你可以通过执行 Autopilot Call.

来做到这一点

Autopilot uses natural language understanding (NLU) to detect what users are saying and matches it to Tasks. Tasks can be programmed to collect data, answer questions or connect calls to other users. They are trained to recognize different phrases or ways users might express the a given Task.

或者使用 twilio 的热转印功能。

Warm transfer eliminates this problem. Using Twilio-powered warm transfers, your agents will have the ability add other people to an in-progress phone call to provide a seamless customer experience.

你可以看看Twilio网站上的click to call例子,还有一个PHP/Laravel例子:

Build Click-to-Call into your Web Application

您可以将上面的示例修改为 return Twilio Number 名词 URL(和 Gather 动词)为代理提供耳语功能,因此他们可以选择是否接听电话.

TwiML™ Voice:

这里是 Twilio 开发人员布道者。

您更新后的代码似乎非常接近我认为您需要的代码。正如您所做的那样,您向您的代理发出出站呼叫,然后设置一个 webhook URL 以使用 TwiML 继续拨打访问者的号码。

我不太了解 Laravel,但正在查找如何处理路由中的参数,我认为您的问题就出在这里。

你有:

Route::get('/outbound', function($visitor_phone) {

但是 routing docs 表示您需要定义 URL 参数在路径中的显示位置。所以,对我来说,看起来你需要的路线是:

Route::get('/outbound/{visitor_phone}', function($visitor_phone) {

检查一下,看看是否有帮助。如果不是,我想您会在 Laravel 应用程序和 phone 应用程序中遇到错误,因此也可以看到该错误。