среда, 17 сентября 2008 г.

FreeSWITCH+Django

FreeSWITCH предоставляет замечательный механизм - xml_curl. Этот модуль может забирать номерной план, пользователей и даже конфигурацию через http запросы.
Работает весьма просто, например так:

# cat /opt/freeswitch/conf/autoload_configs/xml_curl.conf.xml
<configuration name="xml_curl.conf" description="cURL XML Gateway">
<bindings>
<binding name="fs2web_user_fetcher">
<param name="gateway-url" value="http://localhost:8000/get/user/" bindings="directory">
</binding>
</bindings>
</configuration>


# cat /opt/freeswitch/conf/autoload_configs/modules.conf.xml
...
<load module="mod_xml_curl"/>
...



Теперь FS будет слать тонну информации методом POST на web сервер по указаному адресу и ждать в ответ описание пользователя в стандартном xml:


~$ wget http://127.0.0.1:8000/get/user/?sip_auth_username=3000 -O -
--23:36:28-- http://127.0.0.1:8000/get/user/?sip_auth_username=3000
=> `-'
Устанавливается соединение с 127.0.0.1:8000... соединились.
Запрос HTTP послан, ожидание ответа... 200 OK
Длина: нет информации [text/html]

[<=> ] 0 --.--K/s
<document type="freeswitch/xml">
<section name="directory">
<domain name="">
<user id="3000" mailbox="3000">
<params>
<param name="password" value="1234"/>
<param name="vm-password" value="3000"/>
</params>
<variables>
<variable name="accountcode" value="3000"/>
<variable name="user_context" value="public"/>
<variable name="effective_caller_id_name" value="Mihail Krivushin"/>
<variable name="effective_caller_id_number" value="3000"/>
</variables>
</user>
</domain>
</section>
</document>
[ <=> ] 608 --.--K/s

23:36:29 (1.91 MB/s) - `-' сохранён [608]



Ну и напоследок, мне кажется не совсем бесполезная ссылка на пример готового сервера на Django. Клонируйте, и затем поправьте settings.py. Пользователей можно заводить через стандартный административный интерфейс Django. Администратор - "admin", пароль - "kuku".

6 комментариев:

Анонимный комментирует...

Нифига не работает... запрос осуществляется не по-пользовательно, а 1 раз при старте... и хочет получить, видимо, общий лист юзеров...
запрос делается такого плана:
"POST /get/user/ HTTP/1.1" 404 1703
ответ сервера приведен тут же

Deepwalker комментирует...

За "Нифига" дам только ссылку без объяснений - http://wiki.freeswitch.org/wiki/Xml_curl : ))

Проект слегка устарел уже, на днях будет обновление.

Deepwalker комментирует...

В общем пока стартовый запрос не обрабатывается, но ничего страшного в этом собственно нет.

Анонимный комментирует...

Прошу прощения за "нифига" :-)
на самом деле работает, но там нету проекта диалпалан - пришлось его комментировать... ну и работает не совсем так, как нужно - это уже было отмечено :-)
Ждем новых доработок!

playnet комментирует...

а можно как-то напрямую сликовать xml_curl и couchdb? Пока не получается, как минимум надо что-то записать в базу.. и фс ждёт xml а не rest.
Можно как-то пооперативнее пообщаться, через жаббер/скайп например?

Deepwalker комментирует...

Если честно я уже давно с этой темой завязал.