两方之间通话并建立联系

时间:2019-08-25 12:40:48

标签: twilio twilio-api twilio-php

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

  1. 每个代理商都有各自的表格来收集访客的电话号码。

  2. 通过访问者填写代理人表格时。

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

  4. 如果座席收到呼叫,则应使用访客的电话号码进行呼叫。

并连接这两方。

就这样

$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();
        }

它呼叫座席的电话号码..但这是我想要的 座席接到电话后,便应拨打访客的电话号码。

我在这里更新了代码。

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

我可以收到我的出站消息 感谢您与我们的销售部门联系。我们的下一任代表将接您的电话。但此后不会浪费访客人数。只是断开了通话。

3 个答案:

答案 0 :(得分:1)

这里是Twilio开发人员的传播者。

您更新的代码似乎与我认为的需要非常接近。您可以按自己的方式向座席打出电话,然后设置一个Webhook URL,以使用TwiML继续拨打访问者的电话号码。

我不太了解Laravel,但是我想知道如何处理路径中的参数,

您有:

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

但是routing docs说,您需要定义URL参数在路径中出现的位置。因此,对我来说,您似乎需要这样的路线:

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

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

答案 1 :(得分:0)

这来自 Twillio 的官方网站。我认为您可以通过执行Autopilot Call来做到这一点。

  

自动驾驶使用自然语言理解(NLU)来检测什么   用户说出来并将其与“任务”匹配。任务可以编程为   收集数据,回答问题或与其他用户建立呼叫。他们   经过培训可以识别用户可能表达的不同短语或方式   给定的任务。

或使用twilio的热传递功能。

  

热传递消除了此问题。使用Twilio供电的暖气   转移,您的代理人就可以将其他人添加到   正在通话中,以提供无缝的客户体验

答案 2 :(得分:0)

您可以在Twilio网站上查看点击通话示例,还有一个PHP / Laravel示例:

Build Click-to-Call into your Web Application

您可以修改上面的示例以返回Twilio号码名词URL(和Gather动词)以为座席提供耳语功能,因此他们可以选择是否接受呼叫。

TwiML™ Voice: