点击即可从应用调用OpenVBX

时间:2016-05-18 16:29:58

标签: php jquery codeigniter twilio openvbx

我正在尝试将两个数据从外部webapp发布到OpenVBX。

calltonum:(phone number in format +12345678902)
callfromnum:(phone number in format +12345678902)

数据在应用程序中后,我正在尝试使用此功能: http://www.openvbx.org/docs/browserphone/api/

OpenVBX.clientDial({
    'to': calltonum,
    'callerid': callfromnum
});

我已经验证了这个Javascript函数可以从一个插件中运行,但还没有能够成功地将数据发布到插件中。我本来害怕我会遇到身份验证问题,但很快就发现我是否已经打开会话并将数据直接发布到自定义控制器内的一个函数,其中一个类扩展了User_Controller ...它收到帖子数据并将其传递给视图就好了。

现在,我的问题是,当我加载视图时,它会填充所有CSS和Javascript以及屏幕上的数据,但是然后页面请求' /'加载将浏览器重定向到/ messages / inbox。我也得到一个js错误:

Uncaught ReferenceError: $ is not defined(anonymous function) @ dosomethingplease:116

当尝试使用浏览器api时,我认为jquery还没有加载到模板中。

以下是我目前的代码:

在/ controllers

中创建的dialbrowser.php
<?php 

class dialbrowserException extends Exception {}

class dialbrowser extends User_Controller {
public function __construct()
{
    parent::__construct();  
}
public function index()
{
    return $this->dosomethingplease();
}
public function dosomethingplease()
{
    $data = $this->init_view_data();
    $this->template->add_js('assets/j/plugins/call-and-sms-dialogs.js');
    $this->template->add_js('assets/j/frameworks/jquery-1.6.2.min.js');
    $data = array('calltonum' => $this->input->post('calltonum'), 'callfromnum' => $this->input->post('callfromnum'));

    $this->respond('title','dialnow', $data);
}    
}

?>

在/ views

中创建的dialnow.php
<div class="vbx-content-main">

<div class="vbx-content-menu vbx-content-menu-top">
    <h2 class="vbx-content-heading">Test-a-roo</h2>
</div><!-- .vbx-content-menu -->

<div class="vbx-content-container">
    <div class="vbx-content-section">
        <div class="vbx-form">
            <h3>Receipt of Number passed:</h3>
                <div>
                    And here we made it the whole way.... didnt think we could do it huh? 
                    <?php 
                    echo "lets do this for sanity's sake... to: ".$calltonum." and from: ".$callfromnum." ...see no issues with the data!";
                    $html = "<script> $('document').ready(function(){OpenVBX.clientDial({'to': '".$calltonum."', 'callerid': '".$callfromnum."'});}); </script>";
                    echo $html;
                    ?>
                </div>
        </div>
    </div><!-- .vbx-content-section -->
</div><!-- .vbx-content-container -->

</div><!-- .vbx-content-main -->

我现在可以成功发布到/ dialbrowser / index或/ dialbrowser / dosomethingplease,并在视图中填充数据。

我不明白的是,为什么要重定向?并且,因为我正在扩展User_Controller所有关键的jquery / javascript已经成功加载了吗?

更新:我在$route['dialbrowser'] = "dialbrowser";中更改了/config/routes.php。它现在不在控制器级别重定向!现在我可以看到左侧菜单不存在,呼叫按钮没有功能,之前的javascript错误仍然存​​在。

2 个答案:

答案 0 :(得分:1)

这是你正在寻找的吗?有一个概念插件可以添加点击来调用Openvbx,但是你需要修改几行来禁用未经授权发布到插件的安全性。 https://github.com/twilio/OpenVBX/wiki/Plugin-Click-to-Flow

答案 1 :(得分:1)

不知何故,文档准备就绪无法在插件页面中运行。你应该尝试 window.onload 而不是 $('document')。ready 所以这一行将是:

$html = "<script> window.onload=function(){OpenVBX.clientDial({'to': '".$calltonum."', 'callerid': '".$callfromnum."'});}; </script>";