0

我是 FreeSWITCH/Skypopen 的新手。我需要使用 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”的在线状态。

但是如果我skypopen interface1 GET USER skypeusername ONLINESTATUS在 FreeSWITCH CLI 中执行命令,它会返回以下内容:

freeswitch@internal> 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||| 

在 Google 中进行了一些搜索后,我发现 skypopen 模块将结果作为 DEBUG 日志发送到其日志文件中。

有没有办法获得对 PHP 脚本的响应?

4

2 回答 2

3

Skypopen 模块有问题。所以它不会返回对套接字或 cli 的响应。它只返回到日志。您需要修改代码以将响应发送到套接字,您将在 php 端得到它。

于 2013-08-14T13:55:11.093 回答
1

我没有加载这个模块,但是从 mod_skypopen.c 中 skypopen_function 的源代码来看,skypopen API 调用似乎从来没有真正返回任何东西,除了你提到的接口行。

另一方面,看起来模块skypopen::incoming_raw每次从 Skype API 接收数据时都会触发一个事件,因此您可以尝试从 PHP 打开ESL 连接并监听这些事件。

您应该首先直接在 fs_cli 上尝试:

freeswitch@internal> /event plain CUSTOM skypopen::incoming_raw

然后:

freeswitch@internal> skypopen interface1 GET USER skypeusername ONLINESTATUS
于 2013-06-05T02:00:40.277 回答