<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IgorG - персональные заметки &#187; ИТ</title>
	<atom:link href="http://igorg.ru/category/infotech/feed/" rel="self" type="application/rss+xml" />
	<link>http://igorg.ru</link>
	<description>Записки asterisk&#039;ера</description>
	<lastBuildDate>Fri, 06 Apr 2012 18:38:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Отправка файла на asterisk</title>
		<link>http://igorg.ru/2012/04/07/otpravka-fajla-na-asterisk/</link>
		<comments>http://igorg.ru/2012/04/07/otpravka-fajla-na-asterisk/#comments</comments>
		<pubDate>Fri, 06 Apr 2012 18:38:29 +0000</pubDate>
		<dc:creator>igorg</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[1C]]></category>
		<category><![CDATA[AJAM]]></category>
		<category><![CDATA[ami]]></category>
		<category><![CDATA[http.conf]]></category>
		<category><![CDATA[POST]]></category>
		<category><![CDATA[post_mappings]]></category>
		<category><![CDATA[МИКО]]></category>
		<category><![CDATA[файл]]></category>

		<guid isPermaLink="false">http://igorg.ru/?p=1684</guid>
		<description><![CDATA[В Asterisk достаточно давно есть механизм AJAM для работы с командами менеджера через HTTP/HTTPS. Хотя возможность эта уже не нова, но её использование в основном ограничивается Asterisk GUI, в реальной жизни используется редко. Кроме аналогичных стандартному AMI функций AJAM позволяет и выполнить некоторые непривычные операции. Например, немногие знают, но Asterisk позволяет удаленно загружать файлы на [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://igorg.ru/wp-content/uploads/2009/02/asterisk.png"><img class="alignleft size-medium wp-image-570" title="Asterisk" src="http://igorg.ru/wp-content/uploads/2009/02/asterisk-300x168.png" alt="" width="300" height="168" /></a>В Asterisk достаточно давно есть механизм AJAM для работы с командами менеджера через HTTP/HTTPS. Хотя возможность эта уже не нова, но её использование в основном ограничивается Asterisk GUI, в реальной жизни используется редко.</p>
<p>Кроме аналогичных стандартному AMI функций AJAM позволяет и выполнить некоторые непривычные операции. Например, немногие знают, но Asterisk позволяет удаленно загружать файлы на сервер. Эта возможность, кстати, используется в <a href="http://www.miko.ru/sales/product/asterisk_1c_crm/">панели телефонии 1С от МИКО</a> для передачи факса. Для истории опишу, какие шаги нужно выполнить чтобы загрузить файл через AJAM на сервер астериска.</p>
<p><span id="more-1684"></span></p>
<p>Для начала аккаунт менеджера, используемый для подключения, должен быть настроен в manager.conf обычным образом, у пользователя должна быть установлена привилегия config на запись. Далее в http.conf создаем секцию post_mappings:</p>
<blockquote>
<p>[post_mappings]<br />
uploads=/var/lib/asterisk/uploads</p>
</blockquote>
<p>В данном случае имя параметра&nbsp;&mdash; часть URL для запроса записи в папку, значение&nbsp;&mdash; папка для записи. Функция реализующую данную опцию содержится в отдельном модуле&nbsp;&mdash; res_http_post.so, он должен быть загружен для того чтобы все заработало. Если такого модуля нет, то его придется собрать из исходных кодов, для его сборки в свою очередь нужен libgmime-devel. После загрузки модуля проверяем что настройки применились:</p>
<blockquote>
<p>pbx*CLI&gt; http show status<br />
HTTP Server Status:<br />
Prefix: /asterisk<br />
Server Enabled and Bound to 0.0.0.0:8088</p>
<p>HTTPS Server Enabled and Bound to 0.0.0.0:4443</p>
<p>Enabled URI&#39;s:<br />
/asterisk/httpstatus =&gt; Asterisk HTTP General Status<br />
/asterisk/phoneprov/... =&gt; Asterisk HTTP Phone Provisioning Tool<br />
/asterisk/amanager =&gt; HTML Manager Event Interface w/Digest authentication<br />
<strong>/asterisk/uploads =&gt; HTTP POST mapping</strong><br />
/asterisk/arawman =&gt; Raw HTTP Manager Event Interface w/Digest authentication<br />
/asterisk/manager =&gt; HTML Manager Event Interface<br />
/asterisk/rawman =&gt; Raw HTTP Manager Event Interface<br />
/asterisk/static/... =&gt; Asterisk HTTP Static Delivery<br />
/asterisk/amxml =&gt; XML Manager Event Interface w/Digest authentication<br />
/asterisk/mxml =&gt; XML Manager Event Interface</p>
<p>Enabled Redirects:<br />
None.</p>
</blockquote>
<p>Протестировать загрузку файла можно выполнив из консоли следующие команды (конечно использовав ваши логин и пароль):</p>
<blockquote>
<p>curl --cookie cookies.txt --cookie-jar cookies.txt &laquo;http://pbx.mycorp.ru:8088/asterisk/rawman?action=Login&amp;username=admin&amp;secret=manager&raquo;</p>
</blockquote>
<blockquote>
<p>curl --cookie cookies.txt -F &laquo;file=@Fax.pdf&raquo; http://pbx.mycorp.ru:8088/asterisk/uploads</p>
</blockquote>
<p>Если все нормально, то файл будет загружен в нужную папку, а вы уведите ответ сервера:</p>
<blockquote>
<p>&lt;!DOCTYPE HTML PUBLIC &laquo;-//IETF//DTD HTML 2.0//EN&raquo;&gt;<br />
&lt;html&gt;&lt;head&gt;<br />
&lt;title&gt;200 OK&lt;/title&gt;<br />
&lt;/head&gt;&lt;body&gt;<br />
&lt;h1&gt;OK&lt;/h1&gt;<br />
&lt;p&gt;File successfully uploaded.&lt;/p&gt;<br />
&lt;hr /&gt;<br />
&lt;address&gt;Asterisk Server&lt;/address&gt;<br />
&lt;/body&gt;&lt;/html&gt;</p>
</blockquote>
<p>Если не авторизоваться вызовом первой команды, то вы получите привет от HAL9000:</p>
<blockquote>
<p>&lt;!DOCTYPE HTML PUBLIC &laquo;-//IETF//DTD HTML 2.0//EN&raquo;&gt;<br />
&lt;html&gt;&lt;head&gt;<br />
&lt;title&gt;403 Access Denied&lt;/title&gt;<br />
&lt;/head&gt;&lt;body&gt;<br />
&lt;h1&gt;Access Denied&lt;/h1&gt;<br />
&lt;p&gt;Sorry, I cannot let you do that, Dave.&lt;/p&gt;<br />
&lt;hr /&gt;<br />
&lt;address&gt;Asterisk Server&lt;/address&gt;<br />
&lt;/body&gt;&lt;/html&gt;</p>
</blockquote>
<p>Неправильно сформированный запрос. например использование метода PUT вместо POST:</p>
<blockquote>
<p>&lt;!DOCTYPE HTML PUBLIC &laquo;-//IETF//DTD HTML 2.0//EN&raquo;&gt;<br />
&lt;html&gt;&lt;head&gt;<br />
&lt;title&gt;501 Not Implemented&lt;/title&gt;<br />
&lt;/head&gt;&lt;body&gt;<br />
&lt;h1&gt;Not Implemented&lt;/h1&gt;<br />
&lt;p&gt;Attempt to use unimplemented / unsupported method&lt;/p&gt;<br />
&lt;hr /&gt;<br />
&lt;address&gt;Asterisk Server&lt;/address&gt;<br />
&lt;/body&gt;&lt;/html&gt;</p>
</blockquote>
<p style="text-align: left;">Есть и другие сообщения об ошибке, подробнее в них поможет разобраться код модуля, файл res_http_post.c</p>
]]></content:encoded>
			<wfw:commentRss>http://igorg.ru/2012/04/07/otpravka-fajla-na-asterisk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Voipmonitor&#160;&#8212; описание MySQL полей</title>
		<link>http://igorg.ru/2011/04/08/voipmonitor-mysql-description/</link>
		<comments>http://igorg.ru/2011/04/08/voipmonitor-mysql-description/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 09:38:16 +0000</pubDate>
		<dc:creator>igorg</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[VoIP]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[jitter]]></category>
		<category><![CDATA[mos]]></category>
		<category><![CDATA[qos]]></category>
		<category><![CDATA[sniffer]]></category>
		<category><![CDATA[voipmonitor]]></category>
		<category><![CDATA[качество]]></category>
		<category><![CDATA[снифер]]></category>

		<guid isPermaLink="false">http://igorg.ru/?p=1283</guid>
		<description><![CDATA[С течением времени в мире OpenSource ПО появляется все больше и больше VoIP приложений, что очень и очень радует. Ещё 6 лет назад было сложно представить сегодняшнее развитие поддержки VoIP различными приложениями. Хотя стоит отметить, что за эти годы был получен неоценимый опыт и что-то просто не было понятно раньше. Сегодня речь пойдет о единственном [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://igorg.ru/wp-content/uploads/2011/04/voi-scr-c.png"><img class="alignleft size-full wp-image-1319" title="voi-scr-c" src="http://igorg.ru/wp-content/uploads/2011/04/voi-scr-c.png" alt="" width="223" height="216" /></a>С течением времени в мире OpenSource ПО появляется все больше и больше VoIP приложений, что очень и очень радует. Ещё 6 лет назад было сложно представить сегодняшнее развитие поддержки VoIP различными приложениями. Хотя стоит отметить, что за эти годы был получен неоценимый опыт и что-то просто не было понятно раньше. Сегодня речь пойдет о единственном в своем роде VoIP снифере, предназначенным для оценки и контроля качества VoIP связи&nbsp;&mdash; <a href="http://www.voipmonitor.org/">voipmonitor.org</a>.</p>
<p>Конечно существует wireshark, его значение для VoIP администратора сложно переоценить, но он не предназначен для потоковой обработки вызовов. VoIPmonitor перехватывает вызовы в реальном времени и сохраняет статистику и дампы файлов в БД для последующего анализа.</p>
<div><span id="more-1283"></span></div>
<p>VoIPmonitor использует снифер на базе libpcap, обнаруживает SIP INVITE пакет и перехватывает RTP в обоих направлениях. Далее используется код Jitter буфера Asterisk&#39;а для имитации буфера и получения статистики потери пакетов и джиттера при различных величинах и типах буфера. При завершении вызова статистика считывается, с её помощью рассчитывается приблизительное значение MOS по методике описанной в спецификации <a href="http://www.google.ru/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CCIQFjAA&amp;url=http%3A%2F%2Feu.sabotage.org%2Fwww%2FITU%2FG%2FG107.doc&amp;ei=HtWeTdWsMs3LswabrLnqAQ&amp;usg=AFQjCNE7OThAugn3wO60z-nH3A7IrPk5xw&amp;sig2=5NcvOMOl9ipCFi080DSIqQ">G.107</a> (используется ограниченное количество параметров, sic!).</p>
<p>Эта программа завоевала уже огромную популярность и используется повсеместно. Не буду углубляться в свои выводы и результаты, полученные при работе с этим проектом, скажу только что выглядит и развивается он очень многообещающим образом.</p>
<p>Проблемой при старте работы может явиться описание полей базы данных, используемой VoIPmonitor. Такое описание можно частично получить внимательным чтением обсуждений на SourceForge или чтением исходного кода. Делюсь результатами своих изысканий:</p>
<div><em>calldate</em>&nbsp;&mdash; время и дата начала вызова</div>
<div id="_mcePaste"><em>duration</em>&nbsp;&mdash; общая длительность вызова (от INVITE)</div>
<div id="_mcePaste"><em>connect_duration</em>&nbsp;&mdash; длительность соединения (от 200 OK)</div>
<div id="_mcePaste"><em>progress_time</em>&nbsp;&mdash; время в течении которого производилась индикация прогресса</div>
<div id="_mcePaste"><em>first_rtp_time</em>&nbsp;&mdash; относительное время поступления первого RTP пакета (от момента поступления INVITE)</div>
<div id="_mcePaste"><em>caller</em>&nbsp;&mdash; Номер вызывающего абонента (сторона A)</div>
<div id="_mcePaste"><em>callername</em>&nbsp;&mdash; Имя вызывающего абонента</div>
<div id="_mcePaste"><em>called</em>&nbsp;&mdash; Номер вызываемого абонента (сторона B)</div>
<div id="_mcePaste"><em>sipcallerip</em>&nbsp;&mdash; IP адрес вызывающего абонента, используемый для отправки SIP сигнализации</div>
<div id="_mcePaste"><em>sipcalledip</em>&nbsp;&mdash; IP адрес вызываемого абонента, используемый для отправки SIP сигнализации</div>
<div id="_mcePaste"><em>fbasename</em>&nbsp;&mdash; Call-ID для вызова, до 1024 символов используется как основа для создаваемых файлов на диске</div>
<div id="_mcePaste"><em>bye&nbsp;&mdash; </em>корректность завершения вызова</div>
<div id="_mcePaste">
<ul>
<li> 3&nbsp;&mdash; вызов отвечен и корректно завершен</li>
<li>2&nbsp;&mdash; вызов отвечен, но одна из сторон не ответила на bye</li>
<li>1&nbsp;&mdash; вызов отвечен, но не был отправлен bye</li>
<li>0&nbsp;&mdash; вызов не отвечен</li>
</ul>
</div>
<div id="_mcePaste"><em>sighup</em>&nbsp;&mdash; единица, если статистика внесена в БД во время завершения работы программы. В этом случае запись может отображать неполную статистику для данного  вызова</div>
<p>Далее следует статистика по RTP потокам от стороны A и B, названия параметров именуются соответственно, начинаясь с буквы a или b. Сохраняются лишь статистика по двум RTP потокам, которые содержат наибольшее количество пакетов:</p>
<div id="_mcePaste"><em>a_index</em>&nbsp;&mdash; индекс rtp потока, для A стороны&nbsp;&mdash; 0, для B&nbsp;&mdash; 1</div>
<div id="_mcePaste"><em>a_payload</em>&nbsp;&mdash; Тип полезной нагрузки (кодек), 0 если тип неизвестен. Соответствует типу применяемому в SDP.</div>
<div id="_mcePaste"><em>a_saddr</em>&nbsp;&mdash; Последний IP адрес источника RTP</div>
<div id="_mcePaste"><em>a_received</em>&nbsp;&mdash; Общее количество полученных пакетов</div>
<div id="_mcePaste"><em>a_lost</em>&nbsp;&mdash; Общее количество пропущенных пакетов (в соответствии с <a href="http://www.ietf.org/rfc/rfc1889.txt">RFC 1889</a>)</div>
<div id="_mcePaste"><em>a_ua</em>&nbsp;&mdash; Значение поля User-Agent передаваемого в SIP сообщении</div>
<div id="_mcePaste"><em>a_avgjitter</em>&nbsp;&mdash; Среднее значение джитера</div>
<div id="_mcePaste"><em>a_maxjitter</em>&nbsp;&mdash; Максимальная величина джитера</div>
<div id="_mcePaste"><em>a_sl1-10</em></div>
<div id="_mcePaste">Подсчет потери RTP пакетов по количеству последовательно утерянных пакетов. Если последовательно утеряно более 10 пакетов&nbsp;&mdash; увеличивается параметр a_sl10</div>
<div id="_mcePaste">величина a_sl10</div>
<div id="_mcePaste"><em>a_d50, a_d70, a_d90, a_d120, a_d150, a_d200, a_d300</em></div>
<div id="_mcePaste">Задержка при передачи последующего RTP пакета. Задержки до 50 мс не учитываются, задержки больше 300 мс записываются в одну категорию.</div>
<div></div>
<p>Последняя серия параметров отображает результат эмуляции джитер буфера в нескольких вариантах:</p>
<div id="_mcePaste">
<ul>
<li>f1&nbsp;&mdash; подсчет ведется при использовании фиксированного джитер буфера jitter_max = 50, jitter_resync_threshold = 50</li>
<li>f2&nbsp;&mdash; подсчет ведется при использовании фиксированного джитер буфера jitter_max = 200, jitter_resync_threshold = 200</li>
<li>adapt&nbsp;&mdash; подсчет ведется при использовании адаптивного джитер буфера jitter_max = 500, jitter_resync_threshold = 500</li>
</ul>
</div>
<div id="_mcePaste"><em>a_mos_X</em>&nbsp;&mdash; расчетная величина mos</div>
<div id="_mcePaste"><em>a_lossr_X</em>&nbsp;&mdash; процент потери пакетов (независимая модель / модель Бернули)</div>
<div id="_mcePaste"><em>a_burstr_X</em>&nbsp;&mdash; характеристика потери пакетов по модели Гилберта (<a href="http://www.voiptroubleshooter.com/indepth/burstloss.html">burst rate</a>)</div>
]]></content:encoded>
			<wfw:commentRss>http://igorg.ru/2011/04/08/voipmonitor-mysql-description/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как отредактировать .cap</title>
		<link>http://igorg.ru/2011/04/02/howto-modify-pcap-file/</link>
		<comments>http://igorg.ru/2011/04/02/howto-modify-pcap-file/#comments</comments>
		<pubDate>Sat, 02 Apr 2011 14:15:58 +0000</pubDate>
		<dc:creator>igorg</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[VoIP]]></category>
		<category><![CDATA[Советы]]></category>
		<category><![CDATA[ast-2009-010]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[libpcap]]></category>
		<category><![CDATA[rtp]]></category>
		<category><![CDATA[wireshark]]></category>
		<category><![CDATA[уязвимость]]></category>

		<guid isPermaLink="false">http://igorg.ru/?p=1287</guid>
		<description><![CDATA[Обратились ко мне с интересным вопросом&#160;&#8212; продемонстрировать возможность вызвать падение удаленного Asterisk отправкой RTP пакета определенного вида. Я люблю интересные вопросы, поэтому потратил некоторое время для изысканий, в которых самым интересным было&#160;&#8212; найти возможность модифицировать один из пакетов в libpcap дампе. Отправить RTP пакеты в сеть с помощью sipp уже задача простая и описанная. На [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://igorg.ru/wp-content/uploads/2010/02/asterisk_security.png"><img class="alignleft size-medium wp-image-945" title="asterisk_security" src="http://igorg.ru/wp-content/uploads/2010/02/asterisk_security-300x168.png" alt="" width="300" height="168" /></a>Обратились ко мне с интересным вопросом&nbsp;&mdash; продемонстрировать возможность вызвать падение удаленного Asterisk отправкой RTP пакета определенного вида. Я люблю интересные вопросы, поэтому потратил некоторое время для изысканий, в которых самым интересным было&nbsp;&mdash; найти возможность модифицировать один из пакетов в libpcap дампе. Отправить RTP пакеты в сеть с помощью sipp уже задача простая и описанная.</p>
<p><span id="more-1287"></span>На просторах интернета информации не так много, есть лишь несколько утилит предназначенных для внесение изменений в .pcap файлы. Я использовал утилиту <em>bittwiste</em> проекта <a href="http://bittwist.sourceforge.net/">Bit-Twist</a>. Проект предназначен для отправки трафика записанного в файле в реальную сеть используя libpcap.</p>
<p>Меня интересовало исправление единственного пакета, который нужно было сформировать. Записав трейс вызова к серверу, который передает CNG пакеты, смотрим номер пакета в дампе&nbsp;&mdash; в моем случае он номер 142. Извлекаем пакет (то же можно сделать из wireshark):</p>
<blockquote>
<p>bittwiste -I /home/igorg/original.cap -R 142 -O /rtp-cng.cap</p>
</blockquote>
<p>Моя задача была добавить дополнительный объем полезной нагрузки в CNG пакет. Если использовать для этого HEX редактор, придется  исправлять поля IP и UDP заголовков, а так же служебную информацию в pcap файле. Здесь и пригодится bittwiste&nbsp;&mdash; утилита позволяет вставить в пакеты в .pcap файле произвольную информацию.</p>
<p>Через wireshark смотрим в шестнадцатеричном формате данные RTP пакета (они начинаются после контрольной суммы UDP пакета), выписываем в строку, добавляем произвольное количество нужных данных. При вызове bittwiste используем параметры -L 4 -T udp, чтобы переписать данные в UDP пакете, следующие после UDP заголовка.</p>
<blockquote>
<p>bittwiste -I /rtp-cng.cap -X 800dce3117850593f60538ea4751a2728c8c8c8c8c8c00 -O /rtp-cng-long.cap -L 4 -T udp</p>
</blockquote>
<p>В результате получен модифицированный пакет, который можно использовать в дальнейших экспериментах. По похожей схеме возможно создавать пакеты, позволяющие повторить ту или иную уязвимость в ПО. Желаю удачи в изысканиях и экспериментах!</p>
]]></content:encoded>
			<wfw:commentRss>http://igorg.ru/2011/04/02/howto-modify-pcap-file/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Запуск UniMRCP при конфликте библиотек</title>
		<link>http://igorg.ru/2010/07/07/zapusk-unimrcp-pri-konflikte-bibliotek/</link>
		<comments>http://igorg.ru/2010/07/07/zapusk-unimrcp-pri-konflikte-bibliotek/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 10:43:27 +0000</pubDate>
		<dc:creator>igorg</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[VoIP]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[unimrcp]]></category>
		<category><![CDATA[unmrcpserver]]></category>
		<category><![CDATA[библиотека]]></category>

		<guid isPermaLink="false">http://igorg.ru/?p=1159</guid>
		<description><![CDATA[Уже который раз сталкиваюсь при установке UniMRCP с проблемами при наличии установленных в системе пакетов библиотеки libapr. Проблема заключается в том, что UniMRCP для своей работы использует чётко определенные версии библиотек, а в системе часто используются старые версии, в которых не содержатся необходимые функции. При этом если даже unimrcp собран с прямым указанием места расположения [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://igorg.ru/wp-content/uploads/2010/07/customLogo.png"><img class="alignleft size-full wp-image-1162" title="customLogo" src="http://igorg.ru/wp-content/uploads/2010/07/customLogo.png" alt="" width="150" height="60" /></a>Уже который раз сталкиваюсь при установке <a href="http://www.unimrcp.org/">UniMRCP</a> с проблемами при наличии установленных в системе пакетов библиотеки libapr. Проблема заключается в том, что UniMRCP для своей работы использует чётко определенные версии библиотек, а в системе часто используются старые версии, в которых не содержатся необходимые функции. При этом если даже unimrcp собран с прямым указанием места расположения нужных версий библиотек, то при запуске возникнет проблема:</p>
<blockquote>
<div id="_mcePaste">./unimrcpserver: symbol lookup error: /usr/local/unimrcp/lib/libunimrcpserver.so.0: undefined symbol: apr_pool_mutex_set</div>
</blockquote>
<div>Удалить системные библиотеки не всегда возможно, так как они содержатся в зависимостях таких пакетов как apache2 и subversion. Путь решения&nbsp;&mdash; под катом.</div>
<p><span id="more-1159"></span>Для того чтобы таких проблем не возникло, прийдётся приложить некоторые усилия:</p>
<p>1. <a href="http://code.google.com/p/unimrcp/downloads/list">Скачиваем</a> библиотеки нужных версий, файл с именем вроде unimrcp-deps-x.x.x.tar.gz, где иксы&nbsp;&mdash; версия библиотеки unimrcp. Все библиотеки собираются и устанавливаются простым запуском ./install.sh</p>
<p>2. При запуске ./configure указываем точное местоположение библиотек</p>
<blockquote>
<p>./configure --with-sofia-sip=/usr/src/asr-tts/unimrcp-deps-1.0.0/libs/sofia-sip --with-apr=/usr/src/asr-tts/unimrcp-deps-1.0.0/libs/apr  --with-apr-util=/usr/src/asr-tts/unimrcp-deps-1.0.0/libs/apr-util</p>
</blockquote>
<p>3. После установки библиотеки, приложению использующие библиотеки libunimrcpserver.so или libunimrcpclient.so нужно явно указать где в первую очередь производить поиск библиотек. Для этого нужно установить переменную LD_LIBRARY_PATH. Скрипт для запуска в консоли mrcp сервера выглядит следующим образом:</p>
<blockquote>
<p>#!/bin/sh</p>
<p>CLIARGS="$*"</p>
<p>export LD_LIBRARY_PATH=/usr/local/apr/lib/</p>
<p>/usr/local/unimrcp/bin/unimrcpserver ${CLIARGS}</p>
</blockquote>
<p>4. Для запуска приложения в качестве демона можно использовать штатный <a href="http://unimrcp.googlecode.com/svn-history/r1739/trunk/build/init.d/unimrcp-server">скрипт</a>, нужно изменить переменную APP_NAME на название shell-скрипта, приведенного выше и расположить этот скрипт в /usr/local/unimrcp/bin</p>
<p>Hope this helps someone. Удачи и до скорых встреч.</p>
]]></content:encoded>
			<wfw:commentRss>http://igorg.ru/2010/07/07/zapusk-unimrcp-pri-konflikte-bibliotek/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Простой мониторинг Asterisk сервера</title>
		<link>http://igorg.ru/2010/05/26/prostoj-monitoring-asterisk-servera/</link>
		<comments>http://igorg.ru/2010/05/26/prostoj-monitoring-asterisk-servera/#comments</comments>
		<pubDate>Wed, 26 May 2010 16:30:51 +0000</pubDate>
		<dc:creator>igorg</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[мониторинг]]></category>
		<category><![CDATA[нагрузка]]></category>
		<category><![CDATA[память]]></category>
		<category><![CDATA[процессор]]></category>

		<guid isPermaLink="false">http://igorg.ru/?p=1088</guid>
		<description><![CDATA[Компания &#171;Линия24&#187; выпустила простое приложение для наблюдения за сервером с Asterisk PBX. Список отслеживаемых величин включает в себя: Количествово звонков в Asterisk; Общая загрузка системы (Load Average); Общее использование RAM; Корелляция кол-ва звонков и Load Average; Использование RAM процессами Asterisk, MySQL и Apache; Использование CPU процессами Asterisk, MySQL и Apache. Приложение распространяется под лицензией GPL, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://igorg.ru/wp-content/uploads/2010/05/pbx-monitor.png"><img class="size-thumbnail wp-image-1089   alignright" title="Монитор АТС" src="http://igorg.ru/wp-content/uploads/2010/05/pbx-monitor-150x150.png" alt="Монитор АТС" width="150" height="150" /></a>Компания &laquo;Линия24&raquo; выпустила <a href="http://www.line24.ru/solutions/pbx-monitor">простое приложение</a> для наблюдения за сервером с Asterisk PBX. Список отслеживаемых величин включает в себя:</p>
<ul>
<li>Количествово звонков в Asterisk;</li>
<li>Общая загрузка системы (Load Average);</li>
<li>Общее использование RAM;</li>
<li>Корелляция кол-ва звонков и Load Average;</li>
<li>Использование RAM процессами Asterisk, MySQL и Apache;</li>
<li>Использование CPU процессами Asterisk, MySQL и Apache.</li>
</ul>
<p><span id="more-1088"></span></p>
<p>Приложение распространяется под лицензией GPL, написано на PHP и частично использует JQuery (для работы календаря). Обсуждение можно <a href="http://asterisk-support.ru/forum/topics/6540/">вести на форуме</a>. Установка в целом предельно простая:</p>
<ul>
<li>Распаковываем дистрибутив</li>
<li>Настраиваем параметры в rrd_conf.ini (мне понадобилось убрать параметр --disable-rrdtool-tag и установить корректную локаль)</li>
<li>В сответствии с README добавляем задачу в cron</li>
</ul>
<p>В качестве простой утилиты для отслеживания работы сервера утилита подходит, для масштаба нескольких серверов или устройства системы мониторинга рекомендую использовать nagios / munin / cacti в подходящих вам сочетаниях.</p>
]]></content:encoded>
			<wfw:commentRss>http://igorg.ru/2010/05/26/prostoj-monitoring-asterisk-servera/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Интеграция Asterisk с системой синтеза/распознавания ЦРТ</title>
		<link>http://igorg.ru/2010/01/18/integration-asterisk-speechpro/</link>
		<comments>http://igorg.ru/2010/01/18/integration-asterisk-speechpro/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 12:43:18 +0000</pubDate>
		<dc:creator>igorg</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[ИТ]]></category>
		<category><![CDATA[Новости]]></category>
		<category><![CDATA[ASR]]></category>
		<category><![CDATA[call-центр]]></category>
		<category><![CDATA[IVR]]></category>
		<category><![CDATA[mrcp]]></category>
		<category><![CDATA[TTS]]></category>
		<category><![CDATA[unimrcp]]></category>
		<category><![CDATA[распознавание речи]]></category>
		<category><![CDATA[синтез]]></category>
		<category><![CDATA[ЦРТ]]></category>

		<guid isPermaLink="false">http://igorg.ru/?p=907</guid>
		<description><![CDATA[Всем известно, что Asterisk является очень гибкой программной телефонной платформой, на основе которой можно достаточно просто строить приложения, гибко адаптируемые под конкретные требования бизнеса. Например, простейшее IVR меню может быть построено за 20 минут, при этом наибольшее время потребуется для записи звуковых файлов для меню, подбор наилучшего варианта записи, подгонка фрагментов записи друг к другу [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://igorg.ru/wp-content/uploads/2009/05/236503622_ddcc22f936_b.jpg"><img class="alignleft size-medium wp-image-682" title="ASR" src="http://igorg.ru/wp-content/uploads/2009/05/236503622_ddcc22f936_b-300x199.jpg" alt="ASR" width="240" height="159" /></a>Всем известно, что Asterisk является очень гибкой программной телефонной платформой, на основе которой можно достаточно просто строить приложения, гибко адаптируемые под конкретные требования бизнеса. Например, простейшее IVR меню может быть построено за 20 минут, при этом наибольшее время потребуется для записи звуковых файлов для меню, подбор наилучшего варианта записи, подгонка фрагментов записи друг к другу (по интонации, громкости и пр.)</p>
<p>Представьте, что теперь не нужно записывать звуковые файлы, для использования в IVR системе. Диктор не может заболеть, потерять голос или уволиться, в конце концов. Подготовка и обновление фраз для IVR сводится к замене или изменению текста. Время, которое требуется для этой процедуры несоизмеримо меньше по сравнению с записью речевых сообщений диктором.</p>
<p>Этот факт позволит аутсорсинговым call-центрам вводить новые услуги (ветки меню для новых проектов) в кратчайшие сроки, что несомненно повышает эффективность call-центра в разы.</p>
<p><span id="more-907"></span></p>
<p>Распознавание речи так же способствует построению эффективных голосовых интерфейсов. Можно привести несколько ярких примеров меню, в которых использование тонального набора может запутать клиента и никогда не привести к требующейся ему информации:</p>
<ol>
<li>Большое количество вариантов произнесения объекта (например географических ориентиров)</li>
<li>Построение меню с множественным выбором (нажмите 1 чтобы то, нажмите 2 чтобы другое и т.д.)</li>
</ol>
<p>Именно здесь система распознавания русской речи поймет что сказал клиент, не заставляя его дослушивать до конца или требуя ввода одного единственного верного значения.</p>
<p>Ещё в начале работы с Asterisk я столкнулся с построением IVR, которое суммарно должно было отвечать за ввод более дюжины однотипных параметров. При этом я столкнулся с определенными сложностями:</p>
<ol>
<li>Предлагать вводить посредством DTMF двузначные числа. При этом человек не может держать в памяти множество значений и скорее всего откажется от использования такого сложным меню</li>
<li>Предоставить возможность постраничного листинга динамически изменяемой информации</li>
<li>Предоставить в меню возможность выбора основных вариантов, для выбора специальных вариантов&nbsp;&mdash; организовать разговор с оператором</li>
</ol>
<p>Я использовал последний вариант. Однако уже сейчас имеется возможность использовать эффективные средства синтеза/распознавания русской речи. Сразу стоит сказать, что это платные решения. OpenSource приложения имеются, но применительно к синтезу русской речи годятся к использованию скорее в тестовых лабораторных условиях. Существует возможность настройки распознавания русской речи в CMU Sphinx4, но распознавание работает не достаточно надежно в данный момент. В качестве примера можно привести следующие решения: синтез русской речи&nbsp;&mdash; Govorilka, Festival, eSpeak и др., распознавание русской речи на ограниченном словаре&nbsp;&mdash; Горыныч.</p>
<p><strong>Технические особенности</strong></p>
<p>Для синтеза речи используется технология синтеза речи <a href="http://www.speechpro.ru/company/tech/vital-voice/">VitalVoice</a> от ЦРТ, которую по заверениям сотрудников компании ЦРТ, смело можно считать лучшей технологией синтеза русской речи на данный момент. Решение от ЦРТ включает в себя пять голосов, построенных на основе записи десятков часов речи профессиональных дикторов. Возможен синтез сложных текстов с корректной расстановкой ударений, правильной расшифровкой сокращений и интонационной окраской.</p>
<p>Ресурс распознавания речи ASR принимает грамматику в <a href="http://www.w3.org/TR/speech-grammar/">SRGS</a> формате и возвращает результат распознавания в <a href="http://www.w3.org/TR/nl-spec/">NLSML</a> разметке. В настоящий момент поддержаны следующие теги, используемые в SRGS грамматиках и позволяющие строить более сложные меню:</p>
<ol>
<li>confidence level&nbsp;&mdash; уровень уверенности распознавания (коэффициент достоверности)</li>
<li>n-best&nbsp;&mdash; возврат нескольких результатов распознавания с указанием confidence level для каждого</li>
<li>instance&nbsp;&mdash; семантическая интерпретация произносимых клиентом равнозначных слов и выражений</li>
</ol>
<p>Также поддерживается режим barge-in, т.е. пользователь может произносить запросы не дожидаясь окончания проигрывания синтезированной фразы в IVR.</p>
<p class="a">SRGS имеет 2 эквивалентных формата&nbsp;&mdash; это означает что одна и та же грамматика может быть представлена одной из следующей форм:</p>
<p class="a">XML – описание грамматики структурой XML файла;</p>
<p class="a">ABNF – описание грамматики структурированным текстовым файлом.</p>
<p>Решение от «Центра Речевых Технологий» в данный момент поддерживает связь по протоколу MRCPv1 (<a href="http://www.ietf.org/rfc/rfc4463.txt">RFC4463</a>), поддерживаются uLaw и aLaw кодеки. Завершено тестирование ресурса синтеза речи TTS (plan-text и текст в формате <a href="http://www.w3.org/TR/speech-synthesis/">SSML</a>), тестирование распознавания речи продолжается.</p>
<p>Со стороны Asterisk поддержка протокола MRCP реализована посредством библиотеки UniMRCP. На основе этой библиотеки поддержка реализована и для FreeSWITCH, которая в свою очередь базируется на коде приложения unimrcp-client, поставляемого в составе исходных кодов библиотеки.</p>
<p><strong>Краткая справка</strong></p>
<p><em><strong>Протокол MRCPv1</strong></em></p>
<p>Протокол MRCPv1 (Media Resource Control Protocol) описан в RFC4463, представляет собой простой текстовый протокол, похожий на HTTP. Передаваемые MRCP запросы и ответы инкапсулируются в транспортный протокол <a href="http://ru.wikipedia.org/wiki/RTSP">RTSP</a>. Передача голосовых данных производится посредством протокола RTP. Спецификация определяет ряд методов и параметров, которые участвуют в установлении и управлении сессиями синтеза/распознавания.</p>
<p><em><strong>Библиотека UniMRCP</strong></em></p>
<p><a href="http://www.unimrcp.org/">Библиотека</a> поддерживает версии протокола MRCPv1 и<a href="http://tools.ietf.org/html/draft-ietf-speechsc-mrcpv2-20"> MRCPv2</a>. Поддерживается работа с ресурсами распознавания, синтеза, верификации и записи речи. Для реализации протокола MRCPv2 используется библиотека SofiaSIP, библиотека кросс-платформенная и выпущена под лицензией Apache License 2.0, что позволяет использовать её в коммерческих решениях. Библиотека позволяет реализовать как MRCP клиент, так и сервер, в поставке имеются примеры реализации, которые служат хорошим примером для разработки своего приложения.</p>
<p>Кроме того автор активно работает над новыми возможностями, буквально на днях <a href="http://www.unimrcp.org/announcements/unimrcp090released">появился релиз 0.9.0</a> (0.8.0 был выпущен 3 месяца назад), основными нововведениями которого явились:</p>
<ul>
<li>Поддержка 64-битных ОС</li>
<li>Поддержка ресурса записи</li>
<li>Поддержка для RFC4733/RFC2833 и Inband DTMF генерации и распознавания</li>
<li>Реализация RTCP стека</li>
</ul>
<p><strong>Модуль app_mrcp</strong></p>
<p>На данный момент модуль представляет из себя базовую реализацию поддержки MRCP протокола, однако уже готовую к эксплуатации. Модуль работоспособен с Астериском всех версий начиная с 1.4.</p>
<p><em>MRCPSynth — синтез речи</em></p>
<p>Приложение получает на вход текст, предназначенный для синтеза и ряд параметров, таких как:</p>
<ul>
<li>Файл на жестком диске для записи синтезированной речи</li>
<li>Параметры синтезированного голоса (возраст, пол, голос)</li>
<li>Профиль сервера распознавания</li>
</ul>
<p>Работает как приложение <a href="http://voip.rus.net/tiki-index.php?page=Asterisk+cmd+Playback">Playback</a>, может производить запись полученного синтезированного голоса в файл, доступный для дальнейшего использования.</p>
<p><em>MRCPRecog — распознавание речи</em></p>
<p>Приложение получает на вход грамматику, после установления сессии с MRCP сервером передает все голосовые пакеты к ресурсу распознавания. Как только ресурс распознавания примет решение о том что распознавание закончено (по таймауту или успешному распознаванию в соответствии с грамматикой) приложение прекращает выполнение и устанавливает переменную диалплана RECOG_RESULT, которая содержит результат в формате NLSML. Приложение аналогично приложению <a href="http://voip.rus.net/tiki-index.php?page=Asterisk+cmd+Background">Background</a> — воспроизведение звукового файла прерывается успешным вводом пользователя.</p>
<div id="attachment_906" class="wp-caption aligncenter" style="width: 588px"><a href="http://igorg.ru/wp-content/uploads/2010/01/image_mrcp_server.png"><img class="size-full wp-image-906 " title="image_mrcp_server" src="http://igorg.ru/wp-content/uploads/2010/01/image_mrcp_server.png" alt="Схема взаимодействия с MRCP сервером" width="578" height="332" /></a><p class="wp-caption-text">Схема взаимодействия с MRCP сервером</p></div>
<p><strong>Пример использования</strong></p>
<p>Ниже приведен теоретический пример использования в простейшем IVR с распознаванием ответа пользователя, синтезом приветствий и предварительно-синтезированными отдельными фрагментами меню. приложение nlsml-wrapper в данном примере должно выделять результат распознавания и управлять переходами внутри меню. Dialplan приведен для демонстрации использования приложений.</p>
<blockquote>
<p>exten =&gt; ivr,1,Answer<br />
exten =&gt; ivr,n,Wait (0.5)<br />
exten =&gt; ivr,n,MRCPSynth (Добро пожаловать в компанию Рога и Копыта!,v (maria))<br />
exten =&gt; ivr,n,MRCPRecog (ivr/grammar-sales.srgs,t (5000) f (synth/ivr-main-promt) b)<br />
exten =&gt; ivr,n,AGI (agi://10.0.0.1/nlsml-wrapper,ivr,${RECOG_RESULT})</p>
<p>exten =&gt; ivr,n+5 (tech),MRCPSynth (Техотдел,v (vladimir))<br />
exten =&gt; ivr,n,GoToIf ($["${ALARM}" = "1"]?alarm:norm)<br />
exten =&gt; ivr,n (alarm),Playback (synth/tech-alarm-notification)<br />
exten =&gt; ivr,n (norm),MRCPRecog (ivr/grammar-sales.srgs,t (5000) f (synth/ivr-tech-promt) b)<br />
exten =&gt; ivr,n,AGI (agi://10.0.0.1/nlsml-wrapper,tech,${RECOG_RESULT})</p>
<p>exten =&gt; ivr-dictate,n,MRCPSynth (${DICTATE_TEXT},v (${DICTATE_VOICE}) w (synct/${DICTATE_NAME}.ulaw))</p>
</blockquote>
<p><strong>Планы</strong></p>
<p>В планах на февраль 2010 — достаточно серьезная переработка UniMRCP клиента для Asterisk для возможности полной поддержки синтеза и распознавания русской речи от ЦРТ:</p>
<ul>
<li>Добавление команд CLI</li>
<li>Добавление AMI событий и команд</li>
<li>Поддержка SNMP</li>
<li>Встроенное кеширование синтезированных фраз</li>
<li>Парсинг NLSML в вид, пригодный к использованию в диалплане</li>
</ul>
<p><strong>Благодарности</strong><br />
Выражаю благодарность компании Центр Речевых Технологий и лично Кондратьеву Виталию за предоставленную возможность протестировать синтез и распознавание русской речи совместно с Asterisk.</p>
]]></content:encoded>
			<wfw:commentRss>http://igorg.ru/2010/01/18/integration-asterisk-speechpro/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Крах приложений при использовании MySQL в ODBC</title>
		<link>http://igorg.ru/2010/01/18/krax-prilozhenij-pri-ispolzovanii-mysql-v-odbc/</link>
		<comments>http://igorg.ru/2010/01/18/krax-prilozhenij-pri-ispolzovanii-mysql-v-odbc/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 04:25:51 +0000</pubDate>
		<dc:creator>igorg</dc:creator>
				<category><![CDATA[ИТ]]></category>
		<category><![CDATA[Советы]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[odbc]]></category>

		<guid isPermaLink="false">http://igorg.ru/?p=891</guid>
		<description><![CDATA[Недавно пришлось столкнуться с проблемой, возникающей, как свидетельствует Гугл в Debian и Centos. После обновления системы невозможно использовать MySQL через ODBC.  Проблема проявляется появлением подобного сообщения: relocation error: /usr/lib/odbc/libmyodbc.so: symbol mysql_odbc_escape_string, version libmysqlclient_15 not defined in file libmysqlclient_r.so.15 with link time reference Сообщение появляется при любой попытки обращения к ODBC, вызывает аварийное завершение приложения. В [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно пришлось столкнуться с проблемой, возникающей, как свидетельствует Гугл в Debian и Centos. После обновления системы невозможно использовать MySQL через ODBC.  Проблема проявляется появлением подобного сообщения:</p>
<blockquote>
<p>relocation error: /usr/lib/odbc/libmyodbc.so: symbol mysql_odbc_escape_string, version libmysqlclient_15 not defined in file libmysqlclient_r.so.15 with link time reference</p>
</blockquote>
<p>Сообщение появляется при любой попытки обращения к ODBC, вызывает аварийное завершение приложения. В случае с астериском его можно увидеть только запустив приложение непосредственно из консоли, не используя режима демона. При падении core файл не создается.</p>
<p>Причина заключается в том, что при очередном обновлении системы устанавливается обновление для libmysqlclient, несовместимое с libmyodbc. Решением является удалить из системы пакет libmyodbc, поставляемый в дистрибутиве и скачать <a href="http://dev.mysql.com/downloads/connector/odbc/">последнюю версию с сайта MySQL</a>. распаковать и разместить в прежнем месте, либо исправить путь к драйверу в /etc/odbcinst.ini</p>
]]></content:encoded>
			<wfw:commentRss>http://igorg.ru/2010/01/18/krax-prilozhenij-pri-ispolzovanii-mysql-v-odbc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Коротко о прошедших днях</title>
		<link>http://igorg.ru/2009/07/09/shortly-about-day/</link>
		<comments>http://igorg.ru/2009/07/09/shortly-about-day/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 15:59:51 +0000</pubDate>
		<dc:creator>igorg</dc:creator>
				<category><![CDATA[VoIP]]></category>
		<category><![CDATA[ИТ]]></category>
		<category><![CDATA[Новости]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Cisco]]></category>
		<category><![CDATA[dropbox]]></category>
		<category><![CDATA[lvee]]></category>
		<category><![CDATA[twilio]]></category>
		<category><![CDATA[конференции]]></category>

		<guid isPermaLink="false">http://igorg.ru/?p=739</guid>
		<description><![CDATA[Во-первых, отмечу успешное выступление Максима Литницкого на событии LVEE&#39;2009, прошедшего под Гродно в Белоруссии. Прочитать что это за событие можно и без меня, по ссылке. Прочитав отзывы, я пришел к выводу что тема Астериска и открытых коммуникационных платформ действительно заинтересовала участников. Скоро в сообщество вольются новые адепты. Отмечу, что благодаря ресурсам Максима, Астериск так же [...]]]></description>
			<content:encoded><![CDATA[<p>Во-первых, отмечу успешное выступление Максима Литницкого на <a href="http://www.linux.org.ru/view-message.jsp?msgid=3848740">событии LVEE&#39;2009</a>, прошедшего под Гродно в Белоруссии. Прочитать что это за событие можно и без меня, по ссылке. Прочитав отзывы, я пришел к выводу что тема Астериска и открытых коммуникационных платформ действительно заинтересовала участников. Скоро в сообщество вольются новые адепты.</p>
<p><span id="more-739"></span></p>
<p>Отмечу, что благодаря ресурсам Максима, Астериск так же два раза отметился в известном проекте Nag.ru. <a href="http://nag.ru/2009/0620/0620.shtml">Первый раз</a>&nbsp;&mdash; была размещена ссылка на рассказ о том, что из себя представляет IVR, <a href="http://nag.ru/2009/0710/0710.shtml">второй</a>&nbsp;&mdash; заметка по мотивам стыковки <a href="http://shop.nag.ru/core.asp?main=catalog&amp;act=page&amp;id=3123&amp;cat=86" target="_blank">Cisco 1751</a> и Астериска (диалог состоялся на asterisk-support.ru). Максиму однозначно 5 за взнос в пропаганду Астериска.</p>
<p>На этой неделе я познакомился с сервисом <a href="http://www.twilio.com/">Twilio</a>, который выполнен полностью в стиле Web 2.0. Работа сервиса производится посредством двух простых API:</p>
<ul>
<li><a href="http://www.twilio.com/docs/api_reference/TwiML/">Простые XML</a>, загружаемые с сервера пользователя, управляющие взаимодействием с телефонным клиентом. Основные действия: проиграть и записать звуковой файл, получить DTMF ввод, переадресовать звонок и произнести синтезированную речь. Не хватает лишь распознавания речи. Можно строить очень гибкий Centrex</li>
<li><a href="http://www.twilio.com/docs/api_reference/REST/">REST API</a> для управление аккаунтом, создания исходящих звонков</li>
</ul>
<p>Советую присмотреться к этому сервису, как стоит и присмотреться к сервису <a href="http://clck.ru/8dE">DropBox</a>. В связи с тем что у меня вышла из строя флешка, мобильных и рабочих компьютеров развелось слишком много. DropBox позволяет удивительно просто синхронизировать все файлы. Присматриваюсь так же к <a href="http://www.ifolder.com/ifolder">iFolder</a> от Novell.</p>
]]></content:encoded>
			<wfw:commentRss>http://igorg.ru/2009/07/09/shortly-about-day/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Релиз Wireshark 1.2</title>
		<link>http://igorg.ru/2009/06/19/reliz-wireshark-12/</link>
		<comments>http://igorg.ru/2009/06/19/reliz-wireshark-12/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 12:46:10 +0000</pubDate>
		<dc:creator>igorg</dc:creator>
				<category><![CDATA[VoIP]]></category>
		<category><![CDATA[ИТ]]></category>
		<category><![CDATA[wireshark]]></category>
		<category><![CDATA[анализ]]></category>
		<category><![CDATA[релиз]]></category>

		<guid isPermaLink="false">http://igorg.ru/?p=712</guid>
		<description><![CDATA[Выпущена новая версия программы, которая наверняка практически всем знакома. Каждый, кому приходилось хоть немного серьезно заниматься отладкой VoIP приложений и взаимодействия VoIP софта прибегал к её помощи. Списки изменений доступны повсюду, но хочу отметить отдельно интересные изменения в области телефонии, связанные с этим приложением: Как подтверждение важности анализа работы VoIP приложений в частности и телефонии [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://igorg.ru/wp-content/uploads/2009/06/wireshark.png"><img class="alignleft size-thumbnail wp-image-713" title="wireshark" src="http://igorg.ru/wp-content/uploads/2009/06/wireshark-150x150.png" alt="" width="150" height="150" /></a></p>
<p>Выпущена <a href="http://www.wireshark.org/news/20090615.html">новая версия программы</a>, которая наверняка практически всем знакома. Каждый, кому приходилось хоть немного серьезно заниматься отладкой VoIP приложений и взаимодействия VoIP софта прибегал к её помощи.</p>
<p><a href="http://www.wireshark.org/docs/relnotes/wireshark-1.2.0.html">Списки изменений</a> доступны повсюду, но хочу отметить отдельно интересные изменения в области телефонии, связанные с этим приложением:</p>
<ul>
<li>Как подтверждение важности анализа работы VoIP приложений в частности и телефонии в общем все задачи анализа, относящиеся к телефонии выделены в отдельное меню Telephony</li>
<li>Режим сравнения пакетов, должен быть очень полезен при анализе различий в работе различного VoIP оборудования</li>
<li>Среди огромного списка добавленных протоколов значатся такие как DECT, ZRTP, а так же большое количество относящихся к GSM протоколов</li>
</ul>
<p>В деле испытать ещё не пришлось, но я уверен, что Wireshark как всегда не подведет</p>
]]></content:encoded>
			<wfw:commentRss>http://igorg.ru/2009/06/19/reliz-wireshark-12/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Мифические 5 девяток</title>
		<link>http://igorg.ru/2009/06/13/mificheskie-5-devyatok/</link>
		<comments>http://igorg.ru/2009/06/13/mificheskie-5-devyatok/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 18:47:53 +0000</pubDate>
		<dc:creator>igorg</dc:creator>
				<category><![CDATA[VoIP]]></category>
		<category><![CDATA[ИТ]]></category>
		<category><![CDATA[Личное]]></category>
		<category><![CDATA[PSTN]]></category>
		<category><![CDATA[авария]]></category>
		<category><![CDATA[сибирьтелеком]]></category>
		<category><![CDATA[телефон]]></category>

		<guid isPermaLink="false">http://igorg.ru/?p=699</guid>
		<description><![CDATA[5.26 минуты. Именно такое время возможного простоя связи в год предполагают хваленые &#171;5 девяток&#187;. Именно этот показатель приводят в пример, когда говорят об IP-телефонии. А если отключат свет? Уже-ж не будет пяти девяток. А если... А если... А вот пример из жизни. У меня дома уже нет телефона 5-е сутки. Где-то какой-то экскаваторщик проводил работы [...]]]></description>
			<content:encoded><![CDATA[<p style="margin: 0px; text-indent: 0px;">5.26 минуты. Именно такое время возможного простоя связи в год предполагают хваленые &laquo;5 девяток&raquo;. Именно этот показатель приводят в пример, когда говорят об IP-телефонии. А если отключат свет? Уже-ж не будет пяти девяток. А если... А если...</p>
<p style="margin: 0px; text-indent: 0px;">А вот пример из жизни. У меня дома уже нет телефона 5-е сутки. Где-то какой-то экскаваторщик проводил работы и нашел кабель, авария серьезная. Понятно. Но я причем? Если говорите про пять девяток, придумайте и как обеспечить связь в таких случаях. У меня ещё и интернет через ADSL. А ещё и ТВ. В общем информационная изоляция.</p>
<p style="margin: 0px; text-indent: 0px;">А чтобы обеспечить 5 девяток моя телефонная линия должна теперь бесперебойно работать... Больше 1.500 лет. А если &laquo;Сибирьтелеком&raquo; сделает все ровно в нормативные сроки (15 суток), то и все 5.000.</p>
<p style="margin: 0px; text-indent: 0px;">PS. Теперь я понимаю прелесть беспроводных каналов связи. Хотя GPRS дорог и медлителен конечно.</p>
]]></content:encoded>
			<wfw:commentRss>http://igorg.ru/2009/06/13/mificheskie-5-devyatok/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
