Freeswitch-python module install & configuration
Debian Linux/Freeswitch source 설치 기준으로 설명한다.
Freeswitch Python 모듈인 mod_pythom 을 설치해야 한다.
Source Directory 로 이동하자.
$ cd /usr/local/src/freeswitch.git
Freeswitch 는 설치시 모든 모듈을 컴파일하지 않는다. 아무런 추가 설정이 없다면 기본 모듈만을 설치한다.
따라서, 다른 추가 모듈들이 필요하다면 별도의 설정 후, 다시 컴파일을 진행해 주어야 한다.
정확히는 컴파일 시, Source 디렉토리 내의 modules.conf 파일을 참조하여 컴파일을 해야하는 모듈들을 확인한 다음에 컴파일을 진행한다.
따라서, modules.conf 파일을 수정하면 추가적인 모듈 설치가 가능하다.
python module compile 을 활성화 시키기 위해서 modules.conf 파일을 수정한다.
$ vi modules.conf
mod_python 부분을 찾아서 주석 해제한다.
#languages/mod_python
languages/mod_python
make & make install.
$ make && make install
python-freeswitch 모듈이 제대로 설치되었는지 확인해야 한다.
아래의 예제처럼 python 시작후, 전체 모듈 검색에서 freeswitch 모듈이 확인되어야 한다.
만약 확인되지 않으면 수동으로 freeswitch 모듈을 옮겨 주어야 한다.
pchero@MyDebian:/etc$ python Python 2.7.3 (default, Mar 13 2014, 11:03:55) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> >>> help('modules') ANSI _codecs_iso2022 fdpexpect pyatspi ArgImagePlugin _codecs_jp feedparser pyclbr BaseHTTPServer _codecs_kr filecmp pycurl Bastion _codecs_tw fileinput pydoc BdfFontFile _collections fnmatch pydoc_data BeautifulSoup _csv formatter pyexpat BeautifulSoupTests _ctypes fpconst pygtk BmpImagePlugin _ctypes_test fpectl pynotify BufrStubImagePlugin _curses fpformat quopri CDROM _curses_panel fractions random CGIHTTPServer _dbus_bindings freeswitch re Canvas _dbus_glib_bindings ftplib readline ConfigParser _elementtree functools reportbug ContainerIO _functools future_builtins reportlab ...
만약 확인되지 않는다면 수동으로 freeswitch 모듈을 설치해 주어야 한다.
아래의 예제는 Debian Linux/Python2.7 설치 기준이다.
리눅스 배포판/Python 버전에 따라 모듈 설치 디렉토리가 달라지므로 주의하자.
pchero@MyDebian:/usr/local/src/freeswitch.git/src/mod/languages/mod_python$ pwd /usr/local/src/freeswitch.git/src/mod/languages/mod_python pchero@MyDebian:/usr/local/src/freeswitch.git/src/mod/languages/mod_python$ sudo cp ./freeswitch.py /usr/lib/python2.7/dist-packages/
Python 에서 freeswitch 모듈을 확인했다면, 이제는 Freeswitch 에서 Python 모듈이 사용가능한지 확인해야 한다.
modules.conf.xml 파일에서 매번 자동으로 mod_python module 을 load 하도록 설정해주자.
<load_module=”mod_python”> 부분을 주석 해제하거나 추가해주자.
<!-- Languages --> <!-- <load module="mod_spidermonkey"/> --> <load module="mod_v8"/> <!-- <load module="mod_perl"/> --> <load module="mod_python"/> <!-- <load module="mod_java"/> --> <load module="mod_lua"/>
freeswitch cli(fs_cli) 에서 mod_python 모듈을 load 하고, 정상적으로 load 되었는지 확인하자.
freeswitch@192.168.200.10@internal> load mod_python
+OK Reloading XMLfreeswitch@192.168.200.10@internal> module_exists mod_python
true
Using python script on freeswitch.
이제 실제로 sample python script 를 작성 및 사용해 보자. mod_python 소스 디렉토리에는 훌륭한 예제 스크립트가 있다. 사용하도록 하자.
cp /usr/local/src/freeswitch.git/src/mod/languages/mod_python/python_example.py /usr/lib/pymodules/python2.7
마지막으로 실제 Dialplan 내에서 python 모듈을 호출하도록 설정해야 한다.
<include> <extension name="python_test"> <condition field="destination_number" expression="^(5555555)$"> <!-- If you're hosting multiple domains you will want to set the target_domain on these calls so they hit the proper domain after you transfer the caller into the default context. $${domain} is the default domain set from vars.xml but you can set it to any domain you have setup in your user directory. --> <action application="info"/> <action application="python" data="python_example"/> <!--<action application="set" data="domain_name=$${domain}"/>--> <!-- This example maps the DID 5551212 to ring 1000 in the default context --> <!--<action application="transfer" data="1000 XML default"/>--> </condition> </extension> </include>
참조 : https://wiki.freeswitch.org/wiki/Mod_python#Sample_Python_Scripts
Tags: freeswitch, python