提交 dd704bca authored 作者: Brian Fertig's avatar Brian Fertig

Yet another fix. PHP now doesnt crash :)

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@2638 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 5e0ed731
......@@ -2,7 +2,7 @@
PCFG=$(PREFIX)/bin/php-config
LCFLAGS=-fPIC -DZTS -DPTHREADS
CFLAGS += `$(PCFG) --includes`
CFLAGS += `$(PCFG) --includes` -g3
MDIR += `$(PCFG) --extension-dir`
PHPMOD=freeswitch
PHPLDFLAGS = `$(PCFG) --ldflags` -lcrypt -lresolv -lm -ldl -lnsl -lxml2 -lz -lphp5
......@@ -10,7 +10,7 @@ PHPLDFLAGS = `$(PCFG) --ldflags` -lcrypt -lresolv -lm -ldl -lnsl -lxml2 -lz -lph
all: depends $(MODNAME).$(DYNAMIC_LIB_EXTEN) $(PHPMOD).$(DYNAMIC_LIB_EXTEN)
depends:
MAKE=$(MAKE) $(BASE)/build/buildlib.sh $(BASE) install php-5.1.6.tar.gz --prefix=$(PREFIX) --enable-embed=static --enable-static --with-pic --with-mysql --with-curl
MAKE=$(MAKE) $(BASE)/build/buildlib.sh $(BASE) install php-5.1.6.tar.gz --prefix=$(PREFIX) --enable-embed=shared --enable-shared --with-pic --with-mysql --with-curl --enable-maintainer-zts --with-tsrm-pthreads
%.o: %.c
$(CC) $(LCFLAGS) $(CFLAGS) -c $< -o $@
......@@ -41,3 +41,7 @@ install:
cp -f php_$(PHPMOD).$(DYNAMIC_LIB_EXTEN) $(MDIR)
cp -f $(MODNAME).$(DYNAMIC_LIB_EXTEN) $(PREFIX)/mod
cp -f $(PHPMOD).php $(PREFIX)/lib/php
cp -f classFreeswitch.php $(PREFIX)/lib/php
cp -f freeswitch.php $(PREFIX)/lib/php
cp -f apptest.php $(PREFIX)/scripts
cp -f test.php $(PREFIX)/scripts
......@@ -8,10 +8,12 @@
*/
require("classFreeswitch.php");
$fs = new fs_class_api;
echo "uuid: $uuid\n";
$fs->fs_answer($session);
$fs = new fs_class_api();
$fs->fs_play_file($session, "/ram/sr8k.wav");
$fs->fs_answer();
$fs->fs_play_file("/ram/sr8k.wav");
?>
......@@ -31,13 +31,12 @@
*
*/
require("freeswitch.php"); // Required for freeswitch driver to be loaded
global $sessn;
class fs_class_api {
Private $uuid;
function fs_class_api() {
if($sessn = $this->fs_getsessn($uuid)){}
else{
echo "Couldnt get sessn!\n";
}
$this->uuid = $uuid;
}
......@@ -62,99 +61,88 @@ class fs_class_api {
}
function fs_getsessn($uuid){
return fs_core_sessn_locate($uuid);
}
function fs_answer(){
fs_channel_answer($sessn);
fs_channel_answer($this->uuid);
}
function fs_early_media($sessn){
function fs_early_media(){
fs_channel_pre_answer($sessn);
fs_channel_pre_answer($this->uuid);
}
function fs_hangup($cause){
fs_channel_hangup($sessn, $cause);
fs_channel_hangup($this->uuid, $cause);
}
function fs_set_variable($var, $val){
fs_channel_set_variable($sessn, $var, $val);
fs_channel_set_variable($this->uuid, $var, $val);
}
function fs_get_variable($var){
return fs_channel_get_var($sessn, $var);
return fs_channel_get_var($this->uuid, $var);
}
function fs_set_channel_state($state){
fs_channel_set_state($sessn, $state);
fs_channel_set_state($this->uuid, $state);
}
function fs_play_file($file){
return fs_ivr_play_file($sessn, $file, NULL, NULL, NULL, 0);
return fs_ivr_play_file($this->uuid, $file, NULL, NULL, NULL, 0);
}
function record_file($file){
return fs_switch_ivr_record_file($sessn, NULL, $file, NULL, NULL, 0);
return fs_switch_ivr_record_file($this->uuid, NULL, $file, NULL, NULL, 0);
}
function fs_wait($ms){
return fs_switch_ivr_sleep($sessn, $ms);
return fs_switch_ivr_sleep($this->uuid, $ms);
}
function fs_get_dtmf_callback($len){
return fs_switch_ivr_collect_digits_callback($sessn, NULL, NULL, $len);
return fs_switch_ivr_collect_digits_callback($this->uuid, NULL, NULL, $len);
}
function fs_get_digit_count ($maxdigits, $terminator, $timeout){
return fs_switch_ivr_collect_digits_count($sessn, NULL, NULL, $maxdigits, NULL, $terminator, $timeout);
}
function fs_x_way($peer_sessn, $dtmf, $sessn_data, $peer_data){
return fs_switch_ivr_multi_threaded_bridge ($sessn, $peer_sessn, $dtmf, $sessn_data, $peer_data);
return fs_switch_ivr_collect_digits_count($this->uuid, NULL, NULL, $maxdigits, NULL, $terminator, $timeout);
}
function fs_dial($data, $timelimit){
return fs_switch_ivr_originate(sessn, NULL, $data, $timelimit, NULL, NULL, NULL, NULL);
return fs_switch_ivr_originate($this->uuid, NULL, $data, $timelimit, NULL, NULL, NULL, NULL);
}
function fs_transfer($exten, $dialplan, $context){
return fs_switch_ivr_sessn_transfer($sessn, $exten, $dialplan, $context);
return fs_switch_ivr_sessn_transfer($this->uuid, $exten, $dialplan, $context);
}
function fs_speak($ttsName, $voice, $text, $dtmf=NULL){
return fs_switch_ivr_speak_text($sessn, $ttsName, NULL, NULL, $dtmf, $text, NULL, 0);
return fs_switch_ivr_speak_text($this->uuid, $ttsName, NULL, NULL, $dtmf, $text, NULL, 0);
}
......
......@@ -112,38 +112,57 @@ switch_core_session_t *fs_core_session_locate(char *uuid)
return session;
}
void fs_channel_answer(switch_core_session_t *session)
void fs_channel_answer(char *uuid)
{
switch_channel_t *channel = switch_core_session_get_channel(session);
switch_core_session_t *session;
session = fs_core_session_locate(uuid);
switch_channel_t *channel;
channel = switch_core_session_get_channel(session);
switch_channel_answer(channel);
}
void fs_channel_pre_answer(switch_core_session_t *session)
void fs_channel_pre_answer(char *uuid)
{
switch_core_session_t *session;
session = fs_core_session_locate(uuid);
switch_channel_t *channel = switch_core_session_get_channel(session);
switch_channel_pre_answer(channel);
}
void fs_channel_hangup(switch_core_session_t *session, char *cause)
void fs_channel_hangup(char *uuid, char *cause)
{
switch_core_session_t *session;
session = fs_core_session_locate(uuid);
switch_channel_t *channel = switch_core_session_get_channel(session);
switch_channel_hangup(channel, switch_channel_str2cause(cause));
}
void fs_channel_set_variable(switch_core_session_t *session, char *var, char *val)
void fs_channel_set_variable(char *uuid, char *var, char *val)
{
switch_core_session_t *session;
session = fs_core_session_locate(uuid);
switch_channel_t *channel = switch_core_session_get_channel(session);
switch_channel_set_variable(channel, var, val);
}
void fs_channel_get_variable(switch_core_session_t *session, char *var)
void fs_channel_get_variable(char *uuid, char *var)
{
switch_core_session_t *session;
session = fs_core_session_locate(uuid);
switch_channel_t *channel = switch_core_session_get_channel(session);
switch_channel_get_variable(channel, var);
}
void fs_channel_set_state(switch_core_session_t *session, char *state)
void fs_channel_set_state(char *uuid, char *state)
{
switch_core_session_t *session;
session = fs_core_session_locate(uuid);
switch_channel_t *channel = switch_core_session_get_channel(session);
switch_channel_state_t fs_state = switch_channel_get_state(channel);
......@@ -157,13 +176,16 @@ void fs_channel_set_state(switch_core_session_t *session, char *state)
IVR Routines! You can do IVR in PHP NOW!
*/
int fs_ivr_play_file(switch_core_session_t *session,
char *file,
char *timer_name,
switch_input_callback_function_t dtmf_callback,
void *buf,
unsigned int buflen)
int fs_ivr_play_file(char *uuid,
char *file,
char *timer_name,
switch_input_callback_function_t dtmf_callback,
void *buf,
unsigned int buflen)
{
switch_core_session_t *session;
session = fs_core_session_locate(uuid);
switch_status_t status;
if (switch_strlen_zero(timer_name)) {
timer_name = NULL;
......@@ -173,31 +195,40 @@ int fs_ivr_play_file(switch_core_session_t *session,
return status == SWITCH_STATUS_SUCCESS ? 1 : 0;
}
int fs_switch_ivr_record_file(switch_core_session_t *session,
switch_file_handle_t *fh,
char *file,
switch_input_callback_function_t dtmf_callback,
void *buf,
unsigned int buflen)
int fs_switch_ivr_record_file(char *uuid,
switch_file_handle_t *fh,
char *file,
switch_input_callback_function_t dtmf_callback,
void *buf,
unsigned int buflen)
{
switch_core_session_t *session;
session = fs_core_session_locate(uuid);
switch_status_t status;
status = switch_ivr_record_file(session, fh, file, dtmf_callback, buf, buflen);
return status == SWITCH_STATUS_SUCCESS ? 1 : 0;
}
int fs_switch_ivr_sleep(switch_core_session_t *session,
uint32_t ms)
int fs_switch_ivr_sleep(char *uuid,
uint32_t ms)
{
switch_core_session_t *session;
session = fs_core_session_locate(uuid);
switch_status_t status;
status = switch_ivr_sleep(session, ms);
return status == SWITCH_STATUS_SUCCESS ? 1 : 0;
}
int fs_ivr_play_file2(switch_core_session_t *session,
char *file)
int fs_ivr_play_file2(char *uuid,
char *file)
{
switch_core_session_t *session;
session = fs_core_session_locate(uuid);
switch_status_t status;
status = switch_ivr_play_file(session, NULL, file, NULL, NULL, NULL, 0);
......@@ -205,18 +236,21 @@ int fs_ivr_play_file2(switch_core_session_t *session,
}
int fs_switch_ivr_collect_digits_callback (switch_core_session_t *session,
switch_input_callback_function_t dtmf_callback,
void *buf,
unsigned int buflen)
int fs_switch_ivr_collect_digits_callback (char *uuid,
switch_input_callback_function_t dtmf_callback,
void *buf,
unsigned int buflen)
{
switch_core_session_t *session;
session = fs_core_session_locate(uuid);
switch_status_t status;
status = switch_ivr_collect_digits_callback(session, dtmf_callback, buf, buflen);
return status == SWITCH_STATUS_SUCCESS ? 1 : 0;
}
int fs_switch_ivr_collect_digits_count (switch_core_session_t *session,
int fs_switch_ivr_collect_digits_count(char *uuid,
char *buf,
unsigned int buflen,
unsigned int maxdigits,
......@@ -224,6 +258,9 @@ int fs_switch_ivr_collect_digits_count (switch_core_session_t *session,
char *terminator,
unsigned int timeout)
{
switch_core_session_t *session;
session = fs_core_session_locate(uuid);
switch_status_t status;
status = switch_ivr_collect_digits_count(session, buf, buflen, maxdigits, terminators, terminator, timeout);
......@@ -243,7 +280,7 @@ int fs_switch_ivr_collect_digits_count (switch_core_session_t *session,
}
*/
int fs_switch_ivr_originate (switch_core_session_t *session,
int fs_switch_ivr_originate(char *uuid,
switch_core_session_t **bleg,
char * bridgeto,
uint32_t timelimit_sec)
......@@ -252,6 +289,8 @@ int fs_switch_ivr_originate (switch_core_session_t *session,
char * cid_num_override,
switch_caller_profile_t *caller_profile_override) */
{
switch_core_session_t *session;
session = fs_core_session_locate(uuid);
switch_channel_t *caller_channel;
switch_core_session_t *peer_session;
......@@ -276,18 +315,21 @@ int fs_switch_ivr_originate (switch_core_session_t *session,
}
int fs_switch_ivr_session_transfer(switch_core_session_t *session,
int fs_switch_ivr_session_transfer(char *uuid,
char *extension,
char *dialplan,
char *context)
{
switch_core_session_t *session;
session = fs_core_session_locate(uuid);
switch_status_t status;
status = switch_ivr_session_transfer(session,extension,dialplan,context);
return status == SWITCH_STATUS_SUCCESS ? 1 : 0;
}
int fs_switch_ivr_speak_text (switch_core_session_t *session,
int fs_switch_ivr_speak_text (char *uuid,
char *tts_name,
char *voice_name,
char *timer_name,
......@@ -297,6 +339,9 @@ int fs_switch_ivr_speak_text (switch_core_session_t *session,
void *buf,
unsigned int buflen)
{
switch_core_session_t *session;
session = fs_core_session_locate(uuid);
switch_status_t status;
status = switch_ivr_speak_text(session,tts_name,voice_name,timer_name,rate,dtmf_callback,text,buf,buflen);
......@@ -310,17 +355,28 @@ int fs_switch_ivr_speak_text (switch_core_session_t *session,
*/
char* fs_switch_channel_get_variable(switch_channel_t *channel, char *varname)
char* fs_switch_channel_get_variable(char *uuid, char *varname)
{
switch_channel_t *channel;
switch_core_session_t *session;
session = fs_core_session_locate(uuid);
channel = switch_core_session_get_channel(session);
return switch_channel_get_variable(channel, varname);
}
int fs_switch_channel_set_variable(switch_channel_t *channel, char *varname, char *value)
int fs_switch_channel_set_variable(char *uuid, char *varname, char *value)
{
switch_status_t status;
switch_channel_t *channel;
switch_core_session_t *session;
session = fs_core_session_locate(uuid);
switch_status_t status;
channel = switch_core_session_get_channel(session);
status = switch_channel_set_variable(channel, varname, value);
return status == SWITCH_STATUS_SUCCESS ? 1 : 0;
}
//char*
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论