2014-01-21 46 views
1

你好,我正在嘗試創建一個模塊,當我們收到一個電話時,它會在SugarCRM中創建一個彈出窗口。我已經看到,其他一些已經完成了(昂貴的付費模塊),我希望得到一些實際的彈出觸發部分的一些洞察... ...傳入電話使SugarCRM內的彈出窗口?

我們的電話系統有一個API,發送HTTP POST到我們有來電時的網址。

在我的模塊代碼中的SugarCRM內部,我不確定如何使用此HTTP POST從我的電話執行彈出窗口,原因是我看不到它如何足夠快,如果我要設置一個Cron作業每隔1分鐘檢查一次頁面,這仍然會太慢。

因此,有沒有人有任何想法如何與其他類似的電話集成模塊做這件事,並有Popup幾乎立即發生的電話進來?

關於如何做這樣的任務的任何想法?我打算做一個桌面應用程序,只是坐在托盤上,等待POST,但看到其他人能夠在沒有單獨的程序的情況下在SugarCRM中獲得相同的結果真的讓我感興趣。

回答

1

我在創造了一個昂貴的支付模塊來完成這樣的公司工作,但我可以給你提示了2種方法來實現這一;-)

1)隨着GenericHook 定製/模塊創建一個logic_hooks.php和YOURCHOICEHERE.php

在邏輯鉤創建UI鉤後

$hook_array['after_ui_frame'] = Array(); 
$hook_array['after_ui_frame'][] = Array(1, 'Display Javascript for Telephone','custom/modules/YOURCHOICEHERE.php','GenericHooks', 'displayTelephoneJS'); 

和YOURCHOICEHERE.php

class GenericHooks { 

    function displayTelephoneJS() {  

     if(!$_REQUEST['to_pdf']) echo '<div id=\"telephone_div\"></div> 
     <script type=\"text/javascript\" src=\"custom/somewherewhereyouwant/Telephone.js\"/></script>'; 
     // you yould also add a stylesheet here 


    } 
} 

在Telephone.js你可以做你想做什麼都例如:

function Telephone_poll() { 

$.post("some.php?poll=1,function(data){ 
    if(data != 0) 
    { 
     var result= JSON.parse(data); 

     //HERE you can do manipulate your telephone_div and populate it with response data "result" from the call to some.php 
     $('#telephone_div').html("<span>HELLO<span>"); 
     $('#telephone_div').show(); 
     //Here you can also add styles and so on 
    } 
    setTimeout("Telephone_poll()", 1000); //restart the function every 1000ms 
}); 

} 
Telephone_poll(); //initial start of script 

2)其他方法將創建從自身重新運行一個PHP文件妖/服務。 在這裏,您需要一些方法來識別用戶和電話,以確保彈出窗口顯示正確的用戶/電話。

+0

感謝您的想法。最初我做的事情非常相似。所以我使用After UI掛鉤來插入我的CS和JS文件......但是我正在運行使用WebSockets的JS。所以我使用pusher.com爲我的WebSockets提供的服務......它到目前爲止效果很好,當我接到電話時,它最多在幾秒鐘內彈出!你對守護進程的想法很有意思,但我想知道更多有關這方面的信息,因爲我討厭依賴於第三方網站的WebSockets。 – JasonDavis

+0

您的第一種方法似乎不會對性能有很大的好處,因爲它似乎每隔x秒就輪詢一次腳本。我之前有過不好的經歷,因爲它有時會消耗帶寬。 – JasonDavis