Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
F
freeswitch
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
张华
freeswitch
Commits
b0e86e65
提交
b0e86e65
authored
7月 03, 2014
作者:
areski
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
misc of python pep8 fixes
上级
39200cd1
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
98 行增加
和
100 行删除
+98
-100
fshelper.py
scripts/python/freepy/fshelper.py
+51
-53
models.py
scripts/python/freepy/models.py
+5
-4
request.py
scripts/python/freepy/request.py
+17
-17
mytest.py
scripts/python/mytest.py
+12
-13
recipewizard.py
scripts/python/recipewizard.py
+13
-13
没有找到文件。
scripts/python/freepy/fshelper.py
浏览文件 @
b0e86e65
#!/usr/bin/env python
#!/usr/bin/env python
"""
"""
FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
Copyright (C) 2005-2014, Anthony Minessale II <anthm@freeswitch.org>
Copyright (C) 2005-2014, Anthony Minessale II <anthm@freeswitch.org>
...
@@ -31,6 +31,7 @@ from twisted.internet import reactor, defer
...
@@ -31,6 +31,7 @@ from twisted.internet import reactor, defer
from
twisted.internet.protocol
import
ClientFactory
from
twisted.internet.protocol
import
ClientFactory
import
freepy
import
freepy
class
FsHelper
(
ClientFactory
):
class
FsHelper
(
ClientFactory
):
def
__init__
(
self
,
host
=
None
,
passwd
=
None
,
port
=
None
):
def
__init__
(
self
,
host
=
None
,
passwd
=
None
,
port
=
None
):
...
@@ -39,17 +40,17 @@ class FsHelper(ClientFactory):
...
@@ -39,17 +40,17 @@ class FsHelper(ClientFactory):
if
passwd
:
if
passwd
:
self
.
passwd
=
passwd
self
.
passwd
=
passwd
if
port
:
if
port
:
self
.
port
=
port
self
.
port
=
port
self
.
freepyd
=
None
self
.
freepyd
=
None
self
.
connection_deferred
=
None
self
.
connection_deferred
=
None
def
reset
(
self
):
def
reset
(
self
):
self
.
freepyd
=
None
self
.
freepyd
=
None
self
.
connection_deferred
=
None
self
.
connection_deferred
=
None
def
connect
(
self
):
def
connect
(
self
):
if
self
.
freepyd
:
if
self
.
freepyd
:
# if we have a protocol object, we are connected (since we always
# if we have a protocol object, we are connected (since we always
# null it upon any disconnection)
# null it upon any disconnection)
...
@@ -58,7 +59,7 @@ class FsHelper(ClientFactory):
...
@@ -58,7 +59,7 @@ class FsHelper(ClientFactory):
if
self
.
connection_deferred
:
if
self
.
connection_deferred
:
# we are already connecting, return existing dfrd
# we are already connecting, return existing dfrd
return
self
.
connection_deferred
return
self
.
connection_deferred
self
.
connection_deferred
=
defer
.
Deferred
()
self
.
connection_deferred
=
defer
.
Deferred
()
self
.
connection_deferred
.
addCallback
(
self
.
dologin
)
self
.
connection_deferred
.
addCallback
(
self
.
dologin
)
self
.
connection_deferred
.
addErrback
(
self
.
generalError
)
self
.
connection_deferred
.
addErrback
(
self
.
generalError
)
...
@@ -72,29 +73,28 @@ class FsHelper(ClientFactory):
...
@@ -72,29 +73,28 @@ class FsHelper(ClientFactory):
self
.
connection_deferred
=
None
self
.
connection_deferred
=
None
deferred2callback
.
callback
(
"Connected"
)
deferred2callback
.
callback
(
"Connected"
)
def
generalError
(
self
,
failure
):
def
generalError
(
self
,
failure
):
print
"General error:
%
s"
%
failure
print
"General error:
%
s"
%
failure
return
failure
return
failure
def
startedConnecting
(
self
,
connector
):
def
startedConnecting
(
self
,
connector
):
pass
pass
def
buildProtocol
(
self
,
addr
):
def
buildProtocol
(
self
,
addr
):
return
freepy
.
FreepyDispatcher
(
self
.
conncb
,
self
.
discocb
)
return
freepy
.
FreepyDispatcher
(
self
.
conncb
,
self
.
discocb
)
def
clientConnectionLost
(
self
,
connector
,
reason
):
def
clientConnectionLost
(
self
,
connector
,
reason
):
print
"clientConnectionLost! conn=
%
s, reason=
%
s"
%
(
connector
,
print
"clientConnectionLost! conn=
%
s, reason=
%
s"
%
(
connector
,
reason
)
reason
)
self
.
connection_deferred
=
None
self
.
connection_deferred
=
None
self
.
freepyd
=
None
self
.
freepyd
=
None
def
clientConnectionFailed
(
self
,
connector
,
reason
):
def
clientConnectionFailed
(
self
,
connector
,
reason
):
print
"clientConnectionFailed! conn=
%
s, reason=
%
s"
%
(
connector
,
print
"clientConnectionFailed! conn=
%
s, reason=
%
s"
%
(
connector
,
reason
)
reason
)
self
.
freepyd
=
None
self
.
freepyd
=
None
deferred2callback
=
self
.
connection_deferred
deferred2callback
=
self
.
connection_deferred
self
.
connection_deferred
=
None
self
.
connection_deferred
=
None
deferred2callback
.
errback
(
reason
)
deferred2callback
.
errback
(
reason
)
def
discocb
(
self
,
reason
):
def
discocb
(
self
,
reason
):
...
@@ -102,7 +102,7 @@ class FsHelper(ClientFactory):
...
@@ -102,7 +102,7 @@ class FsHelper(ClientFactory):
self
.
freepyd
=
None
self
.
freepyd
=
None
def
dologin
(
self
,
connectmsg
):
def
dologin
(
self
,
connectmsg
):
return
self
.
freepyd
.
login
(
self
.
passwd
)
return
self
.
freepyd
.
login
(
self
.
passwd
)
def
originate
(
self
,
party2dial
,
dest_ext_app
,
bgapi
=
True
):
def
originate
(
self
,
party2dial
,
dest_ext_app
,
bgapi
=
True
):
"""
"""
...
@@ -128,9 +128,6 @@ class FsHelper(ClientFactory):
...
@@ -128,9 +128,6 @@ class FsHelper(ClientFactory):
d
.
addCallback
(
originate_inner
)
d
.
addCallback
(
originate_inner
)
return
d
return
d
def
dialconf
(
self
,
people2dial
,
conf_name
,
bgapi
=
True
):
def
dialconf
(
self
,
people2dial
,
conf_name
,
bgapi
=
True
):
"""
"""
conf_name - name of conf TODO: change to match db
conf_name - name of conf TODO: change to match db
...
@@ -162,7 +159,7 @@ class FsHelper(ClientFactory):
...
@@ -162,7 +159,7 @@ class FsHelper(ClientFactory):
def
listconf
(
self
,
conf_name
):
def
listconf
(
self
,
conf_name
):
"""
"""
conf_name - name of conf
conf_name - name of conf
returns - a deferred that will be called back with a result
returns - a deferred that will be called back with a result
like:
like:
...
@@ -215,7 +212,6 @@ class FsHelper(ClientFactory):
...
@@ -215,7 +212,6 @@ class FsHelper(ClientFactory):
d
.
addCallback
(
confdtmf_inner
)
d
.
addCallback
(
confdtmf_inner
)
return
d
return
d
def
confsay
(
self
,
conf_name
,
text2speak
,
bgapi
=
True
):
def
confsay
(
self
,
conf_name
,
text2speak
,
bgapi
=
True
):
"""
"""
conf_name - name of conf
conf_name - name of conf
...
@@ -253,7 +249,7 @@ class FsHelper(ClientFactory):
...
@@ -253,7 +249,7 @@ class FsHelper(ClientFactory):
def
confstop
(
self
,
conf_name
,
bgapi
=
True
):
def
confstop
(
self
,
conf_name
,
bgapi
=
True
):
"""
"""
stop playback of all sounds
stop playback of all sounds
conf_name - name of conf
conf_name - name of conf
returns - a deferred that will be called back with a result
returns - a deferred that will be called back with a result
like:
like:
...
@@ -268,7 +264,6 @@ class FsHelper(ClientFactory):
...
@@ -268,7 +264,6 @@ class FsHelper(ClientFactory):
d
.
addCallback
(
confstop_inner
)
d
.
addCallback
(
confstop_inner
)
return
d
return
d
def
showchannels
(
self
,
bgapi
=
True
):
def
showchannels
(
self
,
bgapi
=
True
):
def
showchannels_inner
(
ignored
):
def
showchannels_inner
(
ignored
):
...
@@ -289,10 +284,9 @@ class FsHelper(ClientFactory):
...
@@ -289,10 +284,9 @@ class FsHelper(ClientFactory):
d
.
addCallback
(
killchan_inner
)
d
.
addCallback
(
killchan_inner
)
return
d
return
d
def
broadcast
(
self
,
uuid
,
path
,
legs
=
"both"
,
bgapi
=
True
):
def
broadcast
(
self
,
uuid
,
path
,
legs
=
"both"
,
bgapi
=
True
):
"""
"""
@legs - one of the following strings: aleg|bleg|both
@legs - one of the following strings: aleg|bleg|both
"""
"""
def
broadcast_inner
(
ignored
):
def
broadcast_inner
(
ignored
):
df
=
self
.
freepyd
.
broadcast
(
uuid
,
path
,
legs
,
bgapi
)
df
=
self
.
freepyd
.
broadcast
(
uuid
,
path
,
legs
,
bgapi
)
...
@@ -325,12 +319,10 @@ class FsHelper(ClientFactory):
...
@@ -325,12 +319,10 @@ class FsHelper(ClientFactory):
d
.
addCallback
(
sofia_profile_restart_inner
)
d
.
addCallback
(
sofia_profile_restart_inner
)
return
d
return
d
def
sofia_status_profile
(
self
,
profile_name
,
bgapi
=
True
):
def
sofia_status_profile
(
self
,
profile_name
,
bgapi
=
True
):
def
sofia_status_profile_inner
(
ignored
):
def
sofia_status_profile_inner
(
ignored
):
df
=
self
.
freepyd
.
sofia_status_profile
(
profile_name
,
df
=
self
.
freepyd
.
sofia_status_profile
(
profile_name
,
bgapi
)
bgapi
)
return
df
return
df
d
=
self
.
connect
()
d
=
self
.
connect
()
...
@@ -340,7 +332,7 @@ class FsHelper(ClientFactory):
...
@@ -340,7 +332,7 @@ class FsHelper(ClientFactory):
class
FsHelperTest
:
class
FsHelperTest
:
def
__init__
(
self
,
fshelper
):
def
__init__
(
self
,
fshelper
):
self
.
fshelper
=
fshelper
self
.
fshelper
=
fshelper
pass
pass
def
test_dialconf
(
self
):
def
test_dialconf
(
self
):
...
@@ -349,10 +341,16 @@ class FsHelperTest:
...
@@ -349,10 +341,16 @@ class FsHelperTest:
# called "freeswitch" on the local freeswitch instance.
# called "freeswitch" on the local freeswitch instance.
# one party is actually another conference, just to make
# one party is actually another conference, just to make
# the example more confusing.
# the example more confusing.
people2dial
=
[{
'name'
:
'freeswitch'
,
people2dial
=
[
'number'
:
'888@conference.freeswitch.org'
},
{
{
'name'
:
'mouselike'
,
'name'
:
'freeswitch'
,
'number'
:
'904@mouselike.org'
}]
'number'
:
'888@conference.freeswitch.org'
},
{
'name'
:
'mouselike'
,
'number'
:
' 904@mouselike.org'
}
]
d
=
self
.
fshelper
.
dialconf
(
people2dial
,
"freeswitch"
,
bgapi
=
False
)
d
=
self
.
fshelper
.
dialconf
(
people2dial
,
"freeswitch"
,
bgapi
=
False
)
def
failed
(
error
):
def
failed
(
error
):
print
"Failed to dial users!"
print
"Failed to dial users!"
...
@@ -361,7 +359,7 @@ class FsHelperTest:
...
@@ -361,7 +359,7 @@ class FsHelperTest:
d
.
addErrback
(
failed
)
d
.
addErrback
(
failed
)
def
worked
(
*
args
):
def
worked
(
*
args
):
print
"Worked! Dialed user result:
%
s"
%
str
(
args
)
print
"Worked! Dialed user result:
%
s"
%
str
(
args
)
d
.
addCallback
(
worked
)
d
.
addCallback
(
worked
)
return
d
return
d
def
test_listconf
(
self
):
def
test_listconf
(
self
):
...
@@ -389,7 +387,7 @@ class FsHelperTest:
...
@@ -389,7 +387,7 @@ class FsHelperTest:
def
worked
(
*
args
):
def
worked
(
*
args
):
print
"Kicked user from conf, result:
%
s"
%
str
(
args
)
print
"Kicked user from conf, result:
%
s"
%
str
(
args
)
d
.
addCallback
(
worked
)
d
.
addCallback
(
worked
)
def
test1
():
def
test1
():
kick_everyone
=
False
kick_everyone
=
False
...
@@ -409,7 +407,7 @@ def test1():
...
@@ -409,7 +407,7 @@ def test1():
print
"failed:
%
s"
%
str
(
failure
)
print
"failed:
%
s"
%
str
(
failure
)
reactor
.
stop
()
reactor
.
stop
()
if
kick_everyone
:
if
kick_everyone
:
d
.
addCallback
(
kickeveryone
)
d
.
addCallback
(
kickeveryone
)
d
.
addErrback
(
failed
)
d
.
addErrback
(
failed
)
#fsht.test_confkick()
#fsht.test_confkick()
#d = fshelper.connect()
#d = fshelper.connect()
...
@@ -422,14 +420,14 @@ def test1():
...
@@ -422,14 +420,14 @@ def test1():
def
test2
():
def
test2
():
fshelper
=
FsHelper
(
host
=
"127.0.0.1"
,
fshelper
=
FsHelper
(
host
=
"127.0.0.1"
,
passwd
=
"ClueCon"
,
passwd
=
"ClueCon"
,
port
=
8021
)
port
=
8021
)
fshelper
.
sofia_profile_restart
(
"mydomain.com"
)
fshelper
.
sofia_profile_restart
(
"mydomain.com"
)
reactor
.
run
()
reactor
.
run
()
def
test3
():
def
test3
():
fshelper
=
FsHelper
(
host
=
"127.0.0.1"
,
fshelper
=
FsHelper
(
host
=
"127.0.0.1"
,
passwd
=
"ClueCon"
,
passwd
=
"ClueCon"
,
port
=
8021
)
port
=
8021
)
print
"Calling originate.."
print
"Calling originate.."
party2dial
=
"sofia/foo/600@192.168.1.202:5080"
party2dial
=
"sofia/foo/600@192.168.1.202:5080"
d
=
fshelper
.
originate
(
party2dial
=
party2dial
,
d
=
fshelper
.
originate
(
party2dial
=
party2dial
,
...
@@ -439,25 +437,25 @@ def test3():
...
@@ -439,25 +437,25 @@ def test3():
def
worked
(
result
):
def
worked
(
result
):
print
"Originate succeeded:
%
s"
%
result
print
"Originate succeeded:
%
s"
%
result
reactor
.
stop
()
reactor
.
stop
()
def
failed
(
failure
):
def
failed
(
failure
):
print
"failed:
%
s"
%
str
(
failure
)
print
"failed:
%
s"
%
str
(
failure
)
reactor
.
stop
()
reactor
.
stop
()
d
.
addCallback
(
worked
)
d
.
addCallback
(
worked
)
d
.
addErrback
(
failed
)
d
.
addErrback
(
failed
)
reactor
.
run
()
reactor
.
run
()
def
test4
():
def
test4
():
fshelper
=
FsHelper
(
host
=
"127.0.0.1"
,
fshelper
=
FsHelper
(
host
=
"127.0.0.1"
,
passwd
=
"ClueCon"
,
passwd
=
"ClueCon"
,
port
=
8021
)
port
=
8021
)
def
worked
(
result
):
def
worked
(
result
):
print
"Originate succeeded:
%
s"
%
result
print
"Originate succeeded:
%
s"
%
result
#reactor.stop()
#reactor.stop()
def
failed
(
failure
):
def
failed
(
failure
):
print
"failed:
%
s"
%
str
(
failure
)
print
"failed:
%
s"
%
str
(
failure
)
#reactor.stop()
#reactor.stop()
...
@@ -470,39 +468,39 @@ def test4():
...
@@ -470,39 +468,39 @@ def test4():
bgapi
=
True
)
bgapi
=
True
)
d
.
addCallback
(
worked
)
d
.
addCallback
(
worked
)
d
.
addErrback
(
failed
)
d
.
addErrback
(
failed
)
party2dial
=
"sofia/foo/someone@bar.com"
party2dial
=
"sofia/foo/someone@bar.com"
d2
=
fshelper
.
originate
(
party2dial
=
party2dial
,
d2
=
fshelper
.
originate
(
party2dial
=
party2dial
,
dest_ext_app
=
dest_ext_app
,
dest_ext_app
=
dest_ext_app
,
bgapi
=
True
)
bgapi
=
True
)
d2
.
addCallback
(
worked
)
d2
.
addCallback
(
worked
)
d2
.
addErrback
(
failed
)
d2
.
addErrback
(
failed
)
reactor
.
run
()
reactor
.
run
()
def
test5
():
def
test5
():
fshelper
=
FsHelper
(
host
=
"127.0.0.1"
,
fshelper
=
FsHelper
(
host
=
"127.0.0.1"
,
passwd
=
"ClueCon"
,
passwd
=
"ClueCon"
,
port
=
8021
)
port
=
8021
)
def
worked
(
result
):
def
worked
(
result
):
print
"Originate succeeded:
%
s"
%
result
print
"Originate succeeded:
%
s"
%
result
#reactor.stop()
#reactor.stop()
def
failed
(
failure
):
def
failed
(
failure
):
print
"failed:
%
s"
%
str
(
failure
)
print
"failed:
%
s"
%
str
(
failure
)
#reactor.stop()
#reactor.stop()
for
i
in
xrange
(
20
):
for
i
in
xrange
(
20
):
party2dial
=
"sofia/foo/600@192.168.1.202:5080"
party2dial
=
"sofia/foo/600@192.168.1.202:5080"
d
=
fshelper
.
originate
(
party2dial
=
party2dial
,
d
=
fshelper
.
originate
(
party2dial
=
party2dial
,
dest_ext_app
=
"700"
,
dest_ext_app
=
"700"
,
bgapi
=
True
)
bgapi
=
True
)
d
.
addCallback
(
worked
)
d
.
addCallback
(
worked
)
d
.
addErrback
(
failed
)
d
.
addErrback
(
failed
)
reactor
.
run
()
reactor
.
run
()
def
test6
():
def
test6
():
"""
"""
...
@@ -514,17 +512,17 @@ def test6():
...
@@ -514,17 +512,17 @@ def test6():
from
wikipbx
import
channelsutil
from
wikipbx
import
channelsutil
def
show_chanels
(
raw_xml
):
def
show_chanels
(
raw_xml
):
print
raw_xml
print
raw_xml
def
failure
(
failure
):
def
failure
(
failure
):
print
failure
print
failure
d
=
fshelper
.
showchannels
(
bgapi
=
False
)
d
=
fshelper
.
showchannels
(
bgapi
=
False
)
d
.
addCallback
(
show_chanels
)
d
.
addCallback
(
show_chanels
)
d
.
addErrback
(
failure
)
d
.
addErrback
(
failure
)
reactor
.
run
()
reactor
.
run
()
if
__name__
==
"__main__"
:
if
__name__
==
"__main__"
:
#test1()
#test1()
#test2()
#test2()
#test3()
#test3()
...
...
scripts/python/freepy/models.py
浏览文件 @
b0e86e65
"""
"""
FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
Copyright (C) 2005-2014, Anthony Minessale II <anthm@freeswitch.org>
Copyright (C) 2005-2014, Anthony Minessale II <anthm@freeswitch.org>
...
@@ -23,13 +23,14 @@ the Initial Developer. All Rights Reserved.
...
@@ -23,13 +23,14 @@ the Initial Developer. All Rights Reserved.
Contributor(s): Traun Leyden <tleyden@branchcut.com>
Contributor(s): Traun Leyden <tleyden@branchcut.com>
"""
"""
"""
"""
Data models for objects inside freeswitch
Data models for objects inside freeswitch
"""
"""
import
re
import
re
class
ConfMember
:
class
ConfMember
:
def
__init__
(
self
,
rawstring
):
def
__init__
(
self
,
rawstring
):
...
@@ -45,7 +46,7 @@ class ConfMember:
...
@@ -45,7 +46,7 @@ class ConfMember:
self
.
energy_level
=
None
self
.
energy_level
=
None
self
.
parse
(
self
.
rawstring
)
self
.
parse
(
self
.
rawstring
)
def
parse
(
self
,
rawstring
):
def
parse
(
self
,
rawstring
):
"""
"""
1;sofia/mydomain.com/user@somewhere.com;898e6552-24ab-11dc-9df7-9fccd4095451;FreeSWITCH;0000000000;hear|speak;0;0;300
1;sofia/mydomain.com/user@somewhere.com;898e6552-24ab-11dc-9df7-9fccd4095451;FreeSWITCH;0000000000;hear|speak;0;0;300
...
@@ -76,6 +77,6 @@ class ConfMember:
...
@@ -76,6 +77,6 @@ class ConfMember:
def
__repr__
(
self
):
def
__repr__
(
self
):
return
self
.
__str__
()
return
self
.
__str__
()
def
__str__
(
self
):
def
__str__
(
self
):
return
"
%
s (
%
s)"
%
(
self
.
member_id
,
self
.
member_uri
)
return
"
%
s (
%
s)"
%
(
self
.
member_id
,
self
.
member_uri
)
scripts/python/freepy/request.py
浏览文件 @
b0e86e65
"""
"""
FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
Copyright (C) 2005-2014, Anthony Minessale II <anthm@freeswitch.org>
Copyright (C) 2005-2014, Anthony Minessale II <anthm@freeswitch.org>
...
@@ -65,7 +65,7 @@ class FreepyRequest(object):
...
@@ -65,7 +65,7 @@ class FreepyRequest(object):
debug
(
"setRequestFinished called. response_content:
%
s "
%
debug
(
"setRequestFinished called. response_content:
%
s "
%
self
.
response_content
)
self
.
response_content
)
self
.
finished
=
True
self
.
finished
=
True
def
getDeferred
(
self
):
def
getDeferred
(
self
):
return
self
.
deferred
return
self
.
deferred
...
@@ -89,7 +89,7 @@ class FreepyRequest(object):
...
@@ -89,7 +89,7 @@ class FreepyRequest(object):
if
not
line
.
strip
()
or
len
(
line
.
strip
())
==
0
:
if
not
line
.
strip
()
or
len
(
line
.
strip
())
==
0
:
self
.
_fsm
.
BlankLine
()
self
.
_fsm
.
BlankLine
()
return
self
.
isRequestFinished
()
return
self
.
isRequestFinished
()
matchstr
=
re
.
compile
(
"auth/request"
,
re
.
I
)
matchstr
=
re
.
compile
(
"auth/request"
,
re
.
I
)
result
=
matchstr
.
search
(
line
)
result
=
matchstr
.
search
(
line
)
if
(
result
!=
None
):
if
(
result
!=
None
):
...
@@ -159,7 +159,7 @@ class LoginRequest(FreepyRequest):
...
@@ -159,7 +159,7 @@ class LoginRequest(FreepyRequest):
"""
"""
Example success response
Example success response
========================
========================
lineReceived: Content-Type: auth/request
lineReceived: Content-Type: auth/request
lineReceived:
lineReceived:
lineReceived: Content-Type: command/reply
lineReceived: Content-Type: command/reply
...
@@ -176,7 +176,7 @@ class LoginRequest(FreepyRequest):
...
@@ -176,7 +176,7 @@ class LoginRequest(FreepyRequest):
lineReceived:
lineReceived:
"""
"""
def
__init__
(
self
):
def
__init__
(
self
):
super
(
LoginRequest
,
self
)
.
__init__
()
super
(
LoginRequest
,
self
)
.
__init__
()
import
loginrequest_sm
import
loginrequest_sm
...
@@ -190,7 +190,7 @@ class LoginRequest(FreepyRequest):
...
@@ -190,7 +190,7 @@ class LoginRequest(FreepyRequest):
return
return
msg
=
"Login failed, most likely a bad password"
msg
=
"Login failed, most likely a bad password"
self
.
errbackDeferred
(
Failure
(
Exception
(
msg
)))
self
.
errbackDeferred
(
Failure
(
Exception
(
msg
)))
def
getReplyText
(
self
):
def
getReplyText
(
self
):
self
.
response_content
self
.
response_content
...
@@ -204,7 +204,7 @@ class BgApiRequest(FreepyRequest):
...
@@ -204,7 +204,7 @@ class BgApiRequest(FreepyRequest):
linereceived: Content-Type: command/reply
linereceived: Content-Type: command/reply
linereceived: Reply-Text: +OK Job-UUID: 788da080-24e0-11dc-85f6-3d7b12..
linereceived: Reply-Text: +OK Job-UUID: 788da080-24e0-11dc-85f6-3d7b12..
linereceived:
linereceived:
"""
"""
def
__init__
(
self
):
def
__init__
(
self
):
...
@@ -233,7 +233,7 @@ class ApiRequest(FreepyRequest):
...
@@ -233,7 +233,7 @@ class ApiRequest(FreepyRequest):
lineReceived:
lineReceived:
lineReceived: Call Requested: result: [SUCCESS]
lineReceived: Call Requested: result: [SUCCESS]
"""
"""
def
__init__
(
self
):
def
__init__
(
self
):
super
(
ApiRequest
,
self
)
.
__init__
()
super
(
ApiRequest
,
self
)
.
__init__
()
import
apirequest_sm
import
apirequest_sm
...
@@ -255,7 +255,7 @@ class ApiRequest(FreepyRequest):
...
@@ -255,7 +255,7 @@ class ApiRequest(FreepyRequest):
# we need to add it back .. otherwise the Content-length
# we need to add it back .. otherwise the Content-length
# will be off by one
# will be off by one
line
+=
"
\n
"
line
+=
"
\n
"
self
.
response_content
+=
line
self
.
response_content
+=
line
if
len
(
self
.
response_content
)
==
self
.
content_length
:
if
len
(
self
.
response_content
)
==
self
.
content_length
:
return
True
return
True
...
@@ -272,7 +272,7 @@ class ApiRequest(FreepyRequest):
...
@@ -272,7 +272,7 @@ class ApiRequest(FreepyRequest):
# By default, just return accumulated string
# By default, just return accumulated string
return
self
.
response_content
return
self
.
response_content
class
DialoutRequest
(
ApiRequest
):
class
DialoutRequest
(
ApiRequest
):
"""
"""
Example raw dialout response
Example raw dialout response
...
@@ -291,7 +291,7 @@ class DialoutRequest(ApiRequest):
...
@@ -291,7 +291,7 @@ class DialoutRequest(ApiRequest):
class
BgDialoutRequest
(
BgApiRequest
):
class
BgDialoutRequest
(
BgApiRequest
):
def
__init__
(
self
):
def
__init__
(
self
):
super
(
BgDialoutRequest
,
self
)
.
__init__
()
super
(
BgDialoutRequest
,
self
)
.
__init__
()
class
ConfKickRequest
(
ApiRequest
):
class
ConfKickRequest
(
ApiRequest
):
"""
"""
...
@@ -314,13 +314,13 @@ class BgConfKickRequest(BgApiRequest):
...
@@ -314,13 +314,13 @@ class BgConfKickRequest(BgApiRequest):
def
__init__
(
self
):
def
__init__
(
self
):
super
(
BgConfKickRequest
,
self
)
.
__init__
()
super
(
BgConfKickRequest
,
self
)
.
__init__
()
class
ListConfRequest
(
ApiRequest
):
class
ListConfRequest
(
ApiRequest
):
"""
"""
Response to request to list conferences:
Response to request to list conferences:
========================================
========================================
lineReceived: Content-Type: api/response
lineReceived: Content-Type: api/response
lineReceived: Content-Length: 233
lineReceived: Content-Length: 233
lineReceived:
lineReceived:
...
@@ -332,7 +332,7 @@ class ListConfRequest(ApiRequest):
...
@@ -332,7 +332,7 @@ class ListConfRequest(ApiRequest):
def
__init__
(
self
):
def
__init__
(
self
):
super
(
ListConfRequest
,
self
)
.
__init__
()
super
(
ListConfRequest
,
self
)
.
__init__
()
self
.
conf_members
=
[]
self
.
conf_members
=
[]
def
add_content
(
self
,
line
):
def
add_content
(
self
,
line
):
"""
"""
conf not empty example
conf not empty example
...
@@ -352,13 +352,13 @@ class ListConfRequest(ApiRequest):
...
@@ -352,13 +352,13 @@ class ListConfRequest(ApiRequest):
else
:
else
:
confmember
=
models
.
ConfMember
(
line
)
confmember
=
models
.
ConfMember
(
line
)
self
.
conf_members
.
append
(
confmember
)
self
.
conf_members
.
append
(
confmember
)
return
super
(
ListConfRequest
,
self
)
.
add_content
(
line
)
return
super
(
ListConfRequest
,
self
)
.
add_content
(
line
)
def
getResponse
(
self
):
def
getResponse
(
self
):
# TODO: parse this content into a meaningful
# TODO: parse this content into a meaningful
# 'object' .. though, not sure this is really
# 'object' .. though, not sure this is really
# necessary. wait till there's a need
# necessary. wait till there's a need
return
self
.
conf_members
return
self
.
conf_members
scripts/python/mytest.py
浏览文件 @
b0e86e65
...
@@ -2,24 +2,24 @@
...
@@ -2,24 +2,24 @@
# http://wiki.freeswitch.org/wiki/Mod_python
# http://wiki.freeswitch.org/wiki/Mod_python
# before reporting errors
# before reporting errors
import
sys
,
time
from
freeswitch
import
*
from
freeswitch
import
*
def
onDTMF
(
input
,
itype
,
funcargs
):
def
onDTMF
(
input
,
itype
,
funcargs
):
console_log
(
"1"
,
"
\n\n
onDTMF input:
%
s
\n
"
%
input
)
console_log
(
"1"
,
"
\n\n
onDTMF input:
%
s
\n
"
%
input
)
if
input
==
"5"
:
if
input
==
"5"
:
return
"pause"
return
"pause"
if
input
==
"3"
:
if
input
==
"3"
:
return
"seek:+60000"
return
"seek:+60000"
if
input
==
"1"
:
if
input
==
"1"
:
return
"seek:-60000"
return
"seek:-60000"
if
input
==
"0"
:
if
input
==
"0"
:
return
"stop"
return
"stop"
return
None
# will make the streamfile audio stop
return
None
# will make the streamfile audio stop
def
handler
(
uuid
):
console_log
(
"1"
,
"... test from my python program
\n
"
)
def
handler
(
uuid
):
console_log
(
"1"
,
"... test from my python program
\n
"
)
session
=
PySession
(
uuid
)
session
=
PySession
(
uuid
)
session
.
answer
()
session
.
answer
()
session
.
setDTMFCallback
(
onDTMF
,
""
)
session
.
setDTMFCallback
(
onDTMF
,
""
)
...
@@ -27,13 +27,12 @@ def handler(uuid):
...
@@ -27,13 +27,12 @@ def handler(uuid):
session
.
playFile
(
"/path/to/your.mp3"
,
""
)
session
.
playFile
(
"/path/to/your.mp3"
,
""
)
session
.
speak
(
"Please enter telephone number with area code and press pound sign. "
)
session
.
speak
(
"Please enter telephone number with area code and press pound sign. "
)
input
=
session
.
getDigits
(
""
,
11
,
"*#"
,
"#"
,
10000
)
input
=
session
.
getDigits
(
""
,
11
,
"*#"
,
"#"
,
10000
)
console_log
(
"1"
,
"result from get digits is
%
s
\n
"
%
input
)
console_log
(
"1"
,
"result from get digits is
%
s
\n
"
%
input
)
phone_number
=
session
.
playAndGetDigits
(
5
,
11
,
3
,
10000
,
"*#"
,
phone_number
=
session
.
playAndGetDigits
(
5
,
11
,
3
,
10000
,
"*#"
,
"/sounds/test.gsm"
,
"/sounds/test.gsm"
,
"/sounds/invalid.gsm"
,
"/sounds/invalid.gsm"
,
""
,
""
,
"^17771112222$"
)
;
"^17771112222$"
)
console_log
(
"1"
,
"result from play_and_get_digits is
%
s
\n
"
%
phone_number
)
console_log
(
"1"
,
"result from play_and_get_digits is
%
s
\n
"
%
phone_number
)
session
.
transfer
(
"1000"
,
"XML"
,
"default"
)
session
.
transfer
(
"1000"
,
"XML"
,
"default"
)
session
.
hangup
(
"1"
)
session
.
hangup
(
"1"
)
scripts/python/recipewizard.py
浏览文件 @
b0e86e65
...
@@ -2,14 +2,14 @@ from freeswitch import *
...
@@ -2,14 +2,14 @@ from freeswitch import *
from
py_modules.speechtools
import
Grammar
,
SpeechDetect
from
py_modules.speechtools
import
Grammar
,
SpeechDetect
from
py_modules.speechtools
import
SpeechObtainer
from
py_modules.speechtools
import
SpeechObtainer
import
time
,
os
import
os
VOICE_ENGINE
=
"cepstral"
VOICE_ENGINE
=
"cepstral"
VOICE
=
"William"
VOICE
=
"William"
GRAMMAR_ROOT
=
"/usr/src/freeswitch_trunk/scripts"
GRAMMAR_ROOT
=
"/usr/src/freeswitch_trunk/scripts"
"""
"""
Example speech recognition application in python.
Example speech recognition application in python.
How to make this work:
How to make this work:
...
@@ -20,24 +20,24 @@ How to make this work:
...
@@ -20,24 +20,24 @@ How to make this work:
"""
"""
class
RecipeWizard
:
class
RecipeWizard
:
def
__init__
(
self
,
session
):
def
__init__
(
self
,
session
):
self
.
session
=
session
self
.
session
=
session
self
.
session
.
set_tts_parms
(
VOICE_ENGINE
,
VOICE
)
self
.
session
.
set_tts_parms
(
VOICE_ENGINE
,
VOICE
)
self
.
main
()
self
.
main
()
def
main
(
self
):
def
main
(
self
):
console_log
(
"debug"
,
"recipe wizard main()
\n
"
)
console_log
(
"debug"
,
"recipe wizard main()
\n
"
)
self
.
speechdetect
=
SpeechDetect
(
self
.
session
,
"openmrcp"
,
"127.0.0.1"
)
self
.
speechdetect
=
SpeechDetect
(
self
.
session
,
"openmrcp"
,
"127.0.0.1"
);
self
.
speechobtainer
=
SpeechObtainer
(
speech_detect
=
self
.
speechdetect
,
self
.
speechobtainer
=
SpeechObtainer
(
speech_detect
=
self
.
speechdetect
,
required_phrases
=
1
,
required_phrases
=
1
,
wait_time
=
5000
,
wait_time
=
5000
,
max_tries
=
3
)
max_tries
=
3
)
gfile
=
os
.
path
.
join
(
GRAMMAR_ROOT
,
"mainmenu.xml"
)
gfile
=
os
.
path
.
join
(
GRAMMAR_ROOT
,
"mainmenu.xml"
)
self
.
grammar
=
Grammar
(
"mainmenu"
,
gfile
,
"input"
,
80
,
90
)
self
.
grammar
=
Grammar
(
"mainmenu"
,
gfile
,
"input"
,
80
,
90
)
self
.
speechobtainer
.
setGrammar
(
self
.
grammar
)
;
self
.
speechobtainer
.
setGrammar
(
self
.
grammar
)
console_log
(
"debug"
,
"calling speechobtainer.run()
\n
"
)
console_log
(
"debug"
,
"calling speechobtainer.run()
\n
"
)
self
.
speechobtainer
.
detectSpeech
()
self
.
speechobtainer
.
detectSpeech
()
self
.
session
.
speak
(
"Hello. Welcome to the recipe wizard. Drinks or food?"
)
self
.
session
.
speak
(
"Hello. Welcome to the recipe wizard. Drinks or food?"
)
...
@@ -47,8 +47,9 @@ class RecipeWizard:
...
@@ -47,8 +47,9 @@ class RecipeWizard:
self
.
session
.
speak
(
"Received result. Result is:
%
s"
%
result
[
0
])
self
.
session
.
speak
(
"Received result. Result is:
%
s"
%
result
[
0
])
else
:
else
:
self
.
session
.
speak
(
"Sorry, I did not hear you"
)
self
.
session
.
speak
(
"Sorry, I did not hear you"
)
console_log
(
"debug"
,
"speechobtainer.run() finished
\n
"
)
console_log
(
"debug"
,
"speechobtainer.run() finished
\n
"
)
def
mainmenu
():
def
mainmenu
():
"""
"""
...
@@ -78,10 +79,9 @@ def mainmenu():
...
@@ -78,10 +79,9 @@ def mainmenu():
"""
"""
pass
pass
def
handler
(
uuid
):
def
handler
(
uuid
):
session
=
PySession
(
uuid
)
session
=
PySession
(
uuid
)
session
.
answer
()
session
.
answer
()
rw
=
RecipeWizard
(
session
)
rw
=
RecipeWizard
(
session
)
session
.
hangup
(
"1"
)
session
.
hangup
(
"1"
)
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论