2013-06-04 52 views
0

我是FreeSWITCH/Skypopen的新手。我需要使用skypopen模塊和PHP來獲取好友的狀態。好友在線狀態使用FreeSWITCH的mod_skypopen和PHP

我正在使用以下PHP腳本來獲取狀態。

<?php 
$output = array(); 
$returnVar = ""; 
$result = exec('fs_cli -x "skypopen interface1 GET USER skypeusername ONLINESTATUS"',  $returnVar, $output); 
var_dump($result, $returnVar, $output); 
?> 

執行PHP文件後,我得到如下回應:

string(0) "" 
array(2) { 
    [0]=> 
    string(68) "Using interface: globals.SKYPOPEN_INTERFACES[18].name=|||interface1|||" 
    [1]=> 
    string(0) "" 
} 
int(0) 

它只返回Using interface: globals.SKYPOPEN_INTERFACES[18].name=|||interface1|||,而不是 「skypeusername」 的在線狀態。

但是,如果我在FreeSWITCH的CLI執行命令skypopen interface1 GET USER skypeusername ONLINESTATUS,它返回如下:

[email protected]> skypopen interface1 GET USER skypeusername ONLINESTATUS 
Using interface: globals.SKYPOPEN_INTERFACES[18].name=|||interface1||| 

2013-06-04 04:06:35.778928 [DEBUG] skypopen_protocol.c:1771 [1a3a11f|3d6ed64] [DEBUG_SKYPE 1771 ][interface1  ][IDLE,IDLE] SENDING: |||GET USER skypeusername ONLINESTATUS|||| 
2013-06-04 04:06:35.778928 [DEBUG] skypopen_protocol.c:209  [1a3a11f|3d6ed64] [DEBUG_SKYPE 209 ][interface1  ][IDLE,IDLE] READING: |||USER skypeusername ONLINESTATUS ONLINE||| 

在做谷歌的一些搜索之後,我發現skypopen模塊將結果發送到它的日誌文件中DEBUG日誌。

有沒有一種方法可以將結果返回給PHP腳本?

回答

1

我沒有加載這個模塊,但通過mod_skypopen.c中skypopen_function的源代碼判斷,似乎skypopen API調用從未真正返回除您提到的接口行之外的任何內容。

另一方面,它看起來每次從Skype API接收數據時,模塊都會觸發一個skypopen::incoming_raw事件,因此您可以嘗試從PHP打開ESL connection並偵聽這些事件。

您應該首先直接嘗試在fs_cli:

[email protected]> /event plain CUSTOM skypopen::incoming_raw 

然後:

[email protected]> skypopen interface1 GET USER skypeusername ONLINESTATUS 
3

Skypopen模塊有問題。所以它不會返回對套接字或cli的響應。它僅返回到日誌。您需要修改代碼以發送對套接字的響應,並且您將在PHP端獲得它。