<?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>Блог&#039;о VoIP</title>
	<atom:link href="https://igorg.ru/feed/" rel="self" type="application/rss+xml" />
	<link>https://igorg.ru</link>
	<description>Некоторые аспекты voip и asterisk</description>
	<lastBuildDate>Mon, 29 Jun 2020 05:38:47 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.9.29</generator>
	<item>
		<title>Какие бывают статусы вызова?</title>
		<link>https://igorg.ru/2020/06/29/kakie-byvayut-statusy-vyzova/</link>
		<comments>https://igorg.ru/2020/06/29/kakie-byvayut-statusy-vyzova/#respond</comments>
		<pubDate>Mon, 29 Jun 2020 05:38:47 +0000</pubDate>
		<dc:creator><![CDATA[igorg]]></dc:creator>
				<category><![CDATA[Разное]]></category>

		<guid isPermaLink="false">https://igorg.ru/?p=2006</guid>
		<description><![CDATA[<p>В нашей работе мы часто сталкиваемся с вопросом клиентов, которые хотят получить достоверную статистику по статусам исходящих вызовов. Хотелось бы в небольшой статье пояснить что из себя представляют статусы в теелфонии Asterisk и почему они слабо подходят для маркетинговых вывводов отдельно от других данных.</p>



<p>Какие бывают статусы?</p>



<p><strong>Q.931 и SIP</strong></p>



<p>Технические статусы, отображают причину отклонения вызова. Для Q.931 &#8212; цифровой, для SIP &#8212; код и текстовое описание. Ответы от разных операторов в одних и тех же ситуациях могут бы]]></description>
				<content:encoded><![CDATA[<p>В нашей работе мы часто сталкиваемся с вопросом клиентов, которые хотят получить достоверную статистику по статусам исходящих вызовов. Хотелось бы в небольшой статье пояснить что из себя представляют статусы в теелфонии Asterisk и почему они слабо подходят для маркетинговых вывводов отдельно от других данных.</p>
<p>Какие бывают статусы?</p>
<p><strong>Q.931 и SIP</strong></p>
<p>Технические статусы, отображают причину отклонения вызова. Для Q.931 &#8212; цифровой, для SIP &#8212; код и текстовое описание. Ответы от разных операторов в одних и тех же ситуациях могут быть разными. К тому же если произошёл ответ на вызов, кода уже не будет, хотя ответ мог быть и не реальным.</p>
<p>Обе системы кодов имеют стандарт на преобразование между друг другом. Особеенностью является, что последовательные преобразования из SIP в q.931 и обратно могут привести к изменению кода завершения вызова. Для справки:</p>
<ul>
<li>Коды q.931: <a href="https://ru.wikipedia.org/wiki/Q.931">https://ru.wikipedia.org/wiki/Q.931</a></li>
<li>Коды SIP: <a href="https://zen.yandex.ru/media/id/5b29cf6adf7d5600a8c5dc40/chto-takoe-sip-kody-kody-sip-oshibok-5b2be375b2fb7000a9f04a42">https://zen.yandex.ru/media/id/5b29cf6adf7d5600a8c5dc40/chto-takoe-sip-kody-kody-sip-oshibok-5b2be375b2fb7000a9f04a42</a></li>
<li>Соответствие кодов: <a href="https://www.dialogic.com/webhelp/BorderNet2020/2.2.0/WebHelp/causecodemap.htm">https://www.dialogic.com/webhelp/BorderNet2020/2.2.0/WebHelp/causecodemap.htm</a></li>
<li></li>
</ul>
<p><strong>$DIALSTATUS</strong></p>
<p>Asterisk внутренне фактически использует коды q.931 для обработки кодов завершения вызова, но чаще всего в статистике вы увидете значение переменной DIALSTATUS, которая обобщает эти коды по общему смыслу, основные это (мы пеерчислим ситуации в которых код появится, чтобы показать как это помешает в анализе): </p>
<ul>
<li><strong>ANSWER</strong> &#8212; вызов был технически отвечен. Это ничего не говорит о доступности номера для вызова. Вызываемый номер может быть недоступен, занят. Оператор может произвести ответ при переводе вызова на голосовую почту (при этом как после тонового сигнала, так и перед приглашением оставить сообщение)</li>
<li><strong>NOANSWER </strong>&#8212; вызов не был отвечен. Означает только то что ваш Asterisk прервал вызов до того как он был отвечен или отклонён вызываемой стророной. При этом во время вызова могли звучать различные сообщения, проходить КПВ или вообще не быть никакой сигнализации о прогрессе вызова.</li>
<li><strong>BUSY</strong> &#8212; номер занят. Относительно понятно, но нужно учитывать что не во всех ситуациях когда номер занят вы получите этот код. Часть вызовов на занятые номера попадают на автоответчик и вторую линию и будут видны со статусом NOANSWER, часть &#8212; попадут на автоответчик и будут видны со статусом ANSWER</li>
<li><strong>CONGESTION</strong> &#8212; какой-либо другой код отклонения вызова, ез подробного понимания что произошло (номер отключён, недоступен, не существует и т.п.). Также этот статус подвержен тем же проблемам для понимания доступности номера как и статус BUSY.</li>
<li><strong>CHANUNAVAIL</strong> &#8212; ситуации когда вызываемый канал недоступен (в основном это проблемы с настройкой или недоступность обрудования оператора)</li>
</ul>
<p><span id="more-2006"></span></p>
<p><strong>Подход iqAntibot</strong></p>
<p>В отличии от технических кодов человек реагирует на звуковые сообщения, поэтому мы решили реализовать подход для понимания состояния линии и вызываемого номера на основании звука в речевом канале.</p>
<p>Мы реализовали <a href="https://iqtek.ru/products/iqantibot">приложение</a>, которое можно использовать для различных целей, но в первую очередь для завершения исходящих вызовов на как можно более раннем этапе путем классификации звучащих голосовых приветствий.</p>
<p>Такой подход даёт хороший эффект, также в сообщениях SIP протокола получается можно задать свои коды и их описания, таким образом обогатив информацию о статусе вызова. Используя эти SIP коды в статистике можно организовать более точную статистику по исходящим вызовам.</p>
<p>Метод который мы используем в данный момент для аналлиза пока едиснтсвенный. Он аналогичен <strong>Shazam</strong> &#8212; мы собираем базу стандартных автоответчиков, в процессе разговора в реальном времени аналилируем звук и обрываем вызов. Данный подход работает хорошо, не давая ложных срабатываний.</p>
<p>Также технологии на которых построено приложение поззволяют реализовать и другие технологии анализа состояния линии:</p>
<ul>
<li><strong>распознавание речи</strong> &#8212; при обнаружении речи в канале можно распознать её в реальном времени. Минус &#8212; к каждому вызову добавляется стоимость распознавния речи.</li>
<li><strong>распознавание ключевых слов</strong> &#8212; возможно построить достаточно точный поиск ключевых слов га основании открытых библиотек распознавания речи.</li>
<li><strong>классический AMD</strong> &#8212; распознавание активности говорящего после ответа на вызовна</li>
<li><strong>анализ переключения SSRC в RTP</strong> &#8212; часто при срабатывании автоответчиков происходит переключение RTP потока, можно фиксировать эти данные и использовать пост-фактум для анализа статистики</li>
<li><strong>анализ ответов Early Media</strong> &#8212; неокторые операторы генерируют различные 18x ответы в SIP в зависимости от фазы вызова. ТАкже можно использовать для статистики.</li>
</ul>
<p>А ещё на основе этой технологии мы делаем сервис суфлирования для операторов call-центра, но это уже совсем другая история.</p>
<p>Оригинал: <a href="https://blog.iqtek.ru/?p=319">https://blog.iqtek.ru/?p=319</a></p>
]]></content:encoded>
			<wfw:commentRss>https://igorg.ru/2020/06/29/kakie-byvayut-statusy-vyzova/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Слышимость ARI snoop в режиме whisper</title>
		<link>https://igorg.ru/2020/03/15/slyshimost-ari-snoop-v-rezhime-whisper/</link>
		<comments>https://igorg.ru/2020/03/15/slyshimost-ari-snoop-v-rezhime-whisper/#respond</comments>
		<pubDate>Sat, 14 Mar 2020 15:15:56 +0000</pubDate>
		<dc:creator><![CDATA[igorg]]></dc:creator>
				<category><![CDATA[Разное]]></category>

		<guid isPermaLink="false">https://igorg.ru/?p=2004</guid>
		<description><![CDATA[<p>В Asterisk интерфейсы ARI предоставляют набор примитивов, позволяющих реализовывать собственные приложения, задавая собственную гибкую логику.</p>



<p>Например мы можем сделать сложные &#171;конференции&#187;, в которых выборочно ограничивать слышимость между участниками или добавляя индивидуальные оповещения её участникам. Сделать это можно используя <a href="https://wiki.asterisk.org/wiki/display/AST/Asterisk+16+Channels+REST+API#Asterisk16ChannelsRESTAPI-snoopChannel">ARI endpoint /snoop</a>. </p>



<!--more-->



<p>Однако, как и у ChanSpy (а обе функции используют одни и те же функции внутри asterisk) у snoop есть <a href="https://community.]]></description>
				<content:encoded><![CDATA[<p>В Asterisk интерфейсы ARI предоставляют набор примитивов, позволяющих реализовывать собственные приложения, задавая собственную гибкую логику.</p>
<p>Например мы можем сделать сложные &#171;конференции&#187;, в которых выборочно ограничивать слышимость между участниками или добавляя индивидуальные оповещения её участникам. Сделать это можно используя <a href="https://wiki.asterisk.org/wiki/display/AST/Asterisk+16+Channels+REST+API#Asterisk16ChannelsRESTAPI-snoopChannel">ARI endpoint /snoop</a>. </p>
<p><span id="more-2004"></span></p>
<p>Однако, как и у ChanSpy (а обе функции используют одни и те же функции внутри asterisk) у snoop есть <a href="https://community.asterisk.org/t/ari-snoop-problem/78079">фундаментальное ограничение</a> &#8212; передаваемое из snoop канала аудио добавляется к аудио, проходящему в выбранном направлении. Если в выбранном направлении в выбранном канале нет звука &#8212; переданное из snoop канала аудио будет проигнорировано.</p>
<p>В нашем случае приложение, к каналу которого происходит подключение, может генерировать звук в  с перерывами, поэтому для непрерывной генерации звука пришлось добавить канал, передающий тишину используя специальны moh класс.</p>
<div class="wp-block-file"><a href="https://blog.iqtek.ru/wp-content/uploads/2020/03/snoop_sample.zip">snoop_sample</a><a href="https://blog.iqtek.ru/wp-content/uploads/2020/03/snoop_sample.zip" class="wp-block-file__button" download>Скачать</a></div>
<p>PS. Как бонус &#8212; исходный код простого приложения, демонстрирующего работу snoop.</p>
<p>Оригинал: <a href="https://blog.iqtek.ru/?p=306">https://blog.iqtek.ru/?p=306</a></p>
]]></content:encoded>
			<wfw:commentRss>https://igorg.ru/2020/03/15/slyshimost-ari-snoop-v-rezhime-whisper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Запись разговоров на RAM-диск во FreePBX</title>
		<link>https://igorg.ru/2020/03/12/zapis-razgovorov-na-ram-disk-vo-freepbx/</link>
		<comments>https://igorg.ru/2020/03/12/zapis-razgovorov-na-ram-disk-vo-freepbx/#respond</comments>
		<pubDate>Thu, 12 Mar 2020 10:03:51 +0000</pubDate>
		<dc:creator><![CDATA[igorg]]></dc:creator>
				<category><![CDATA[Разное]]></category>

		<guid isPermaLink="false">https://igorg.ru/?p=2002</guid>
		<description><![CDATA[<p>В интернете есть много статей, говорящих о том как сделать перекодирование записей разговоров в MP3, но не менее актуальным вопросом в нагруженной системе является экономия ресурсов при записи изначального wav файла.</p>



<p>Разумным выходом является запись файла на RAM диск и последующее перекодирование и сохранение записи на примонтированный внешний ресурс. Однако FreePBX используя штатные опции пишет и читает записи из одного и того же места.</p>



<p>Для того чтобы начать писать записи в отдельную папку, при том что читать FreePBX в CDR reports продолжит и]]></description>
				<content:encoded><![CDATA[<p>В интернете есть много статей, говорящих о том как сделать перекодирование записей разговоров в MP3, но не менее актуальным вопросом в нагруженной системе является экономия ресурсов при записи изначального wav файла.</p>
<p>Разумным выходом является запись файла на RAM диск и последующее перекодирование и сохранение записи на примонтированный внешний ресурс. Однако FreePBX используя штатные опции пишет и читает записи из одного и того же места.</p>
<p>Для того чтобы начать писать записи в отдельную папку, при том что читать FreePBX в CDR reports продолжит из той же папки /var/spool/asterisk/monitor достаточно поместить такое дополнение в extensions_custom.conf:</p>
<blockquote class="wp-block-quote">
<p>[globals](+)<br />MIXMON_DIR=/var/spool/asterisk/monitorRAM/</p>
</blockquote>
<p>PS. Если перекодировать файлы записей, то лучше кодировать их в mp4, а не mp3. Так как mp4 штатно поддерживается в CDR Reports, а mp3 &#8212; нет.</p>
<p>Оригинал: <a href="https://blog.iqtek.ru/?p=304">https://blog.iqtek.ru/?p=304</a></p>
]]></content:encoded>
			<wfw:commentRss>https://igorg.ru/2020/03/12/zapis-razgovorov-na-ram-disk-vo-freepbx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Задание нескольких proxy в chan_pjsip</title>
		<link>https://igorg.ru/2020/03/10/zadanie-neskolkix-proxy-v-chan_pjsip/</link>
		<comments>https://igorg.ru/2020/03/10/zadanie-neskolkix-proxy-v-chan_pjsip/#respond</comments>
		<pubDate>Tue, 10 Mar 2020 10:46:04 +0000</pubDate>
		<dc:creator><![CDATA[igorg]]></dc:creator>
				<category><![CDATA[Разное]]></category>

		<guid isPermaLink="false">https://igorg.ru/?p=2000</guid>
		<description><![CDATA[<p>В процессе разработки относительно сложных конфигураций нам потребовалось добавить свой промежуточный SIP proxy в систему, где транки с операторами уже используют Outbound Proxy.</p>



<p>Основная страница где говорится о работе с proxy из chan_pjsip не говорит нам ничего о такой конфигурации и показывает как задать один Proxy. Но на самом деле можно задать всю цепочку используемых Proxy прямо из конфигурации chan_pjsip.</p>



<figure class="wp-block-image"><img src="https://blog.iqtek.ru/wp-content/uploads/2020/03/Selection_199.png" alt="" class="wp-image-301" srcset="https://blog.iqtek.ru/wp-content/uploads/2020/03/Selection_199.png 637w, https://blog.iqtek.ru/wp-content/uploads/2020/03/S]]></description>
				<content:encoded><![CDATA[<p>В процессе разработки относительно сложных конфигураций нам потребовалось добавить свой промежуточный SIP proxy в систему, где транки с операторами уже используют Outbound Proxy.</p>
<p>Основная страница где говорится о работе с proxy из chan_pjsip не говорит нам ничего о такой конфигурации и показывает как задать один Proxy. Но на самом деле можно задать всю цепочку используемых Proxy прямо из конфигурации chan_pjsip.</p>
<p><figure class="wp-block-image"><img src="https://blog.iqtek.ru/wp-content/uploads/2020/03/Selection_199.png" alt="" class="wp-image-301" srcset="https://blog.iqtek.ru/wp-content/uploads/2020/03/Selection_199.png 637w, https://blog.iqtek.ru/wp-content/uploads/2020/03/Selection_199-300x26.png 300w" sizes="(max-width: 637px) 100vw, 637px" /><figcaption>Конфигурация FreePBX</figcaption></figure><br />
<figure class="wp-block-image"><img src="https://blog.iqtek.ru/wp-content/uploads/2020/03/Selection_198.png" alt="" class="wp-image-302" srcset="https://blog.iqtek.ru/wp-content/uploads/2020/03/Selection_198.png 349w, https://blog.iqtek.ru/wp-content/uploads/2020/03/Selection_198-300x57.png 300w" sizes="(max-width: 349px) 100vw, 349px" /><figcaption>Route заголовки отправленные chan_pjsip</figcaption></figure></p>
<p>Оригинал: <a href="https://blog.iqtek.ru/?p=299">https://blog.iqtek.ru/?p=299</a></p>
]]></content:encoded>
			<wfw:commentRss>https://igorg.ru/2020/03/10/zadanie-neskolkix-proxy-v-chan_pjsip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Переменные sip протокола при переходе на pjsip</title>
		<link>https://igorg.ru/2018/12/03/peremennye-sip-protokola-pri-perexode-na-pjsip/</link>
		<comments>https://igorg.ru/2018/12/03/peremennye-sip-protokola-pri-perexode-na-pjsip/#respond</comments>
		<pubDate>Sun, 02 Dec 2018 17:10:04 +0000</pubDate>
		<dc:creator><![CDATA[igorg]]></dc:creator>
				<category><![CDATA[Asterisk]]></category>

		<guid isPermaLink="false">https://igorg.ru/?p=1993</guid>
		<description><![CDATA[Продолжаю тему обновлений, которые требуются при переходе на канал chan_pjsip, отмечу еще два момента, возможно недостаточно отраженные в документации. По крайней мере нем при обновлении диалпланов наших систем пришлось немного поискать информацию. Что: переменная SIPCALLID Замена: вызов функции CHANNEL (pjsip,callid) Положительным моментом является то, что данный вызов является более логичным и документация по нему доступна [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Продолжаю тему обновлений, которые требуются при переходе на канал chan_pjsip, отмечу еще два момента, возможно недостаточно отраженные в документации. По крайней мере нем при обновлении диалпланов наших систем пришлось немного поискать информацию.</p>
<ul>
<li>Что: переменная SIPCALLID</li>
<li>Замена: вызов функции CHANNEL (pjsip,callid)</li>
</ul>
<p>Положительным моментом является то, что данный вызов является более логичным и документация по нему доступна при просмотре помощи по функции CHANNEL. callid совершаемого вызова доступен до отправки INVITE в pre-dial процедуре, вызываемой приложением Dial ()</p>
<ul>
<li>Что: приложение SipAddHeader ()</li>
<li>Замена: функция PJSIP_HEADER ()</li>
</ul>
<p>Предложенная для замены функция является более функциональной заменой, позволяет также читать, удалять и модифицировать заголовки. О применении и ограничениях &#8212; подробнее во встроенной справке Asterisk</p>
<p>Также хотелось отметить, что все такие заметки мы начинаем собирать о обобщать в нашей базе знаний &#8212; <a href="https://kb.iqtek.ru">https://kb.iqtek.ru</a>, надеемся она сможет стать полезным ресурсом наравне с другими зарекомендовавшими себя сайтами по теме Asterisk и VoIP.</p>
<p>Оригинал: <a href="https://blog.iqtek.ru/?p=249">https://blog.iqtek.ru/?p=249</a></p>
]]></content:encoded>
			<wfw:commentRss>https://igorg.ru/2018/12/03/peremennye-sip-protokola-pri-perexode-na-pjsip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка транка с регистрацией в chan_pjsip и FreePBX</title>
		<link>https://igorg.ru/2018/11/28/nastrojka-tranka-s-registraciej-v-chan_pjsip-i-freepbx/</link>
		<comments>https://igorg.ru/2018/11/28/nastrojka-tranka-s-registraciej-v-chan_pjsip-i-freepbx/#respond</comments>
		<pubDate>Wed, 28 Nov 2018 13:42:13 +0000</pubDate>
		<dc:creator><![CDATA[igorg]]></dc:creator>
				<category><![CDATA[FreePBX]]></category>
		<category><![CDATA[freepbx]]></category>
		<category><![CDATA[pjsip]]></category>
		<category><![CDATA[zadarma]]></category>
		<category><![CDATA[проблема]]></category>
		<category><![CDATA[регистрация]]></category>

		<guid isPermaLink="false">https://igorg.ru/?p=1991</guid>
		<description><![CDATA[<p>Наша компания уже в течении последнего года использует в настройке всех новых систем на Asterisk канал chan_pjsip для работы с SIP протоколом. Часто появляются вопросы, в которых пользователи спрашивают о том, как настроить ту или иную конфигурацию по аналогии с chan_sip.</p>



<!--more-->



<p>В данном посте я хотел написать о наиболее часто встречающейся конфигурации &#8212; исходящих вызовах на транк, который подключен используя исходящую регистрацию. Проблема характерна как минимум для работы Asterisk13 + FreePBX13.</p>



<p>По-умолчанию, заполнив основные данные в такой ко]]></description>
				<content:encoded><![CDATA[<p>Наша компания уже в течении последнего года использует в настройке всех новых систем на Asterisk канал chan_pjsip для работы с SIP протоколом. Часто появляются вопросы, в которых пользователи спрашивают о том, как настроить ту или иную конфигурацию по аналогии с chan_sip.</p>
<p><span id="more-1991"></span></p>
<p>В данном посте я хотел написать о наиболее часто встречающейся конфигурации &#8212; исходящих вызовах на транк, который подключен используя исходящую регистрацию. Проблема характерна как минимум для работы Asterisk13 + FreePBX13.</p>
<p>По-умолчанию, заполнив основные данные в такой конфигурации вы не сможете сделать вызов с АТС. В логах сможете увидеть странное сообщение, что указанное в параметрах Dial () устройство не найдено.</p>
<p>Решением является заполнение вручную поля AOR Contact, таким образом чтобы оно не содержало имени пользователя, а только имя сервера. По-умолчанию FreePBX генерирует данную настройку в pjsip в виде sip:&lt;user>@&lt;server>:5060, тогда как должен sip:&lt;server>:5060</p>
<p><figure class="wp-block-image"><img src="https://blog.iqtek.ru/wp-content/uploads/2018/11/Vydelenie_012.png" alt="" class="wp-image-276" srcset="https://blog.iqtek.ru/wp-content/uploads/2018/11/Vydelenie_012.png 553w, https://blog.iqtek.ru/wp-content/uploads/2018/11/Vydelenie_012-300x36.png 300w" sizes="(max-width: 553px) 100vw, 553px" /></figure>
</p>
<p>Оригинал: <a href="https://blog.iqtek.ru/?p=264">https://blog.iqtek.ru/?p=264</a></p>
]]></content:encoded>
			<wfw:commentRss>https://igorg.ru/2018/11/28/nastrojka-tranka-s-registraciej-v-chan_pjsip-i-freepbx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Опыт поездки на Astricon В США</title>
		<link>https://igorg.ru/2018/10/28/opyt-poezdki-na-astricon-v-usa/</link>
		<comments>https://igorg.ru/2018/10/28/opyt-poezdki-na-astricon-v-usa/#respond</comments>
		<pubDate>Sun, 28 Oct 2018 10:10:31 +0000</pubDate>
		<dc:creator><![CDATA[igorg]]></dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Личное]]></category>
		<category><![CDATA[Astricon]]></category>
		<category><![CDATA[Digium]]></category>
		<category><![CDATA[sangoma]]></category>
		<category><![CDATA[USA]]></category>
		<category><![CDATA[виза]]></category>
		<category><![CDATA[конференция]]></category>
		<category><![CDATA[США]]></category>

		<guid isPermaLink="false">https://igorg.ru/?p=1980</guid>
		<description><![CDATA[В этом году мне удалось принять участие в community-конференции Astricon компании Digium (ныне часть Sangoma), посвященную развитию проекта Asterisk. Данная конференция собирает представляет community со всего мира и позволяет познакомиться с актуальными вопросами, с которыми сталкиваются разработчики VoIP систем. Хотелось бы рассказать о полученном опыте в плане получения визы, дороги, выбора маршрутов, стоимости и просто [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-1984" src="https://igorg.ru/wp-content/uploads/2018/10/gY3_9W73_400x400-300x300.jpg" alt="" width="300" height="300" srcset="https://igorg.ru/wp-content/uploads/2018/10/gY3_9W73_400x400-300x300.jpg 300w, https://igorg.ru/wp-content/uploads/2018/10/gY3_9W73_400x400-150x150.jpg 150w, https://igorg.ru/wp-content/uploads/2018/10/gY3_9W73_400x400.jpg 400w" sizes="(max-width: 300px) 100vw, 300px" />В этом году мне удалось принять участие в community-конференции <a href="https://www.asterisk.org/community/astricon-user-conference">Astricon</a> компании Digium (ныне часть Sangoma), посвященную развитию проекта Asterisk. Данная конференция собирает представляет community со всего мира и позволяет познакомиться с актуальными вопросами, с которыми сталкиваются разработчики VoIP систем.</p>
<p>Хотелось бы рассказать о полученном опыте в плане получения визы, дороги, выбора маршрутов, стоимости и просто присутствия на конференции. Возможно кому-то эта информация будет полезна в будущем для поездки на Astricon или какую-либо другую конференцию в США.</p>
<p>Для начала хочу выразить благодарность семье, которая мужественно вынесла мое отсутствие в течении почти двух недель. Также хочу заметить, что в ссылках на сервисы далее по тексту могут быть использованы промо-ссылки. Если используете и это будет реально полезно&nbsp;&mdash; буду только рад. В комментариях задавайте вопросы, буду рад что-то подсказать.<span id="more-1980"></span></p>
<p>Нужно сказать, что это была для меня первая поездка в США, не думаю что для бывалых путешественников я смогу открыть что-то новое. Для меня поездка началась в первую очередь с подсчета стоимости, серьезно задумываться о поездке я стал в прошлом году. В этом году решение было ехать, в том случае, если будет одобрена заявка на участие в качестве спикера, что автоматически снижало стоимость участия в конференции на стоимость билета, который даже в случае super-early-bird регистрации (когда еще неизвестна программа конференции) составляет $699.</p>
<p>Свою заявку на участие я обсудил с Дэвидом в апреле, предложив несколько тем, он согласился с докладом о chan_unistim и с середины июня стал ожидать решение программного комитета, принят мой доклад на конференцию или нет. Как оказалось ждал я слишком долго. Мой совет тут&nbsp;&mdash; задать вопрос самостоятельно после того как будет оглашена первая часть программы выступлений. Обычно из года в год расписание подготовки к конференции примерно одно и то же:</p>
<ul>
<li>Конец марта&nbsp;&mdash; оглашение места проведения конференции, объявления набора докладчиков</li>
<li>Конец апреля&nbsp;&mdash; первое повышение цены на билеты</li>
<li>Середина июня&nbsp;&mdash; окончание сбора тем для докладов</li>
<li>Начало августа&nbsp;&mdash; анонс первой части спикеров</li>
<li>Конец августа&nbsp;&mdash; анонс keynotes</li>
</ul>
<p>Я получил сообщение о том, что мой доклад принят 16 июля. Сразу задал вопрос про получение приглашения Дэвиду, но из-за своей неорганизованности и дня рождения озаботился тем, что приглашения не получил только в начале августа. Это чуть не стало критичным моментом, так как я не ожидал, что с получением визы все будет не очень гладко.</p>
<p>Приглашение я получил 6 августа и с этого момента начал заниматься поиском вариантов получения визы.</p>
<h2>Использованные сервисы для планирования поездки</h2>
<ul>
<li><a href="https://avia.yandex.ru/">Яндекс.Авиа</a>&nbsp;&mdash; перелеты по России</li>
<li><a href="http://kayak.com">KAYAK</a>&nbsp;&mdash; перелеты по США</li>
<li><a href="https://travel.tinkoff.ru/rentalcars/">Tinkoff.Travel</a>&nbsp;&mdash; бронирование автомобиля (по карте <a href="http://www.tinkoff.ru/sl/95JdbGsaLfY">All Airlines</a>)</li>
<li><a href="http://www.airbnb.ru/c/igorg1941">Airbnb</a>&nbsp;&mdash; Бронирование частных вариантов проживания (комнаты в доме, дома целиком)</li>
<li><a href="https://www.booking.com/s/34_6/f1a4cf5d">Booking.com</a>&nbsp;&mdash; Бронирование отелей (по ссылке&nbsp;&mdash; бонус 1000р.)</li>
<li><a href="https://www.uber.com/invite/yn135xcyue">Uber</a>&nbsp;&mdash; передвижение на такси</li>
<li><a href="https://drimsim.app.link/Dr0wLPRYyR">Drimsim</a>&nbsp;&mdash; сервис международных SIM карт для путешественников (бонус 5 евро по ссылке)</li>
</ul>
<h2>Виза</h2>
<p>Я заранее планировал получение визы и знал, что есть вариант получения визы в Астане, до которой от Омска достаточно просто добраться до машины. Однако оказалось, что график приема не-резидентов страны места размещения посольства/консульства США сильно отличается от обычного. В случае Казахстана&nbsp;&mdash; ожидание назначения времени собеседования минимально составило бы около 60 дней&nbsp;&mdash; такой вариант меня не устраивал. Сейчас, насколько мне известно, прием россиян в посольстве Казахстана вообще приостановлено.</p>
<p>Следующие варианты за границей, которые я рассматривал&nbsp;&mdash; Киргизия, Грузия, Эстония, Чехия, Украина. Даже чисто из-за стоимости и неудобств отпали все кроме Киргизии. Была попытка записаться на собеседование в Киргизии&nbsp;&mdash; вариант удобен тем, что оплата пошлины происходит на месте. Вариант отпал из-за времени записи, как только открылась запись&nbsp;&mdash; самая ранняя дата была 9 октября&nbsp;&mdash; день начала astricon.</p>
<p>В итоге я выбрал вариант получения визы США во Владивостоке. Там есть консульство, поток заявлений туда не велик из-за удаленности от Москвы и вообще европейской части России. Срок ожидания от оплаты сбора до момент собеседования составил около 40 дней, собеседование было назначено на 17 сентября.</p>
<p>Был найден удачный вариант рейсов, при котором я во Владивостоке провел минимум времени, также пересадка в Новосибирске между поездом и самолетом была минимальной. Во Владивостоке был забронирован капсульный отель, в основном для того чтобы оставить вещи на время собеседования, ведь в консульство запрещается с собой проносить что-либо. Только документы и телефон, который нужно отключить и оставить на входе у охраны.</p>
<p>Собеседование происходит достаточно быстро и организованно. По очереди заявителей вызывают к консулу, он спрашивает пару вопросов (по крайней мере в моем случае). Из документов реально нужны только распечатка приглашения на конференцию и справка с работы. Посмотрев на эти документы и задав пару уточняющих вопросов консул отложил документы и паспорт в сторону&nbsp;&mdash; что в общем означает, что виза будет выдана. Визу я получил 24 сентября после возвращения с Asterconf из Москвы. Дальнейшую информацию о бронировании проживания стоит оценивать исходя из того, что на планирование и покупку билетов/проживания у меня было 2-3 недели.</p>
<h2>Перелет в США</h2>
<p>После того как вы знаете, что у вас есть виза&nbsp;&mdash; можно окупать билеты. Среди Российских перевозчиков в США прямые рейсы есть только у Аэрофлота&nbsp;&mdash; в Нью-Йорк, Майами и Сан-Франциско. При некотором стечении обстоятельств можно найти выгодные перелеты через Пекин у S7. Остальные варианты&nbsp;&mdash; с пересадками в европейских городах. Когда у меня еще не было определенности по визе, например, были варианты перелета с пересадкой из Москвы через Стамбул в Майами за 28т.р. в обе стороны с багажом. Аналогичный перелет Аэрофлотом&nbsp;&mdash; 45т.р.</p>
<p>Но на момент покупки билетов выгодных перелетов уже не оставалось. Был выбран вариант перелета в Майами с возвратом через Нью-Йорк, с целью максимально посмотреть США, в добавок рейсы из/в Нью-Йорк немного дешевле чем в Майами и совершаются более регулярно (3 раза в день, против рейса раз в два дня в Майами).</p>
<p>Перелет из Москвы в Майами&nbsp;&mdash; 12 часов, на боту есть развлекательная система со свежими фильмами. Кроме того на рейсах в США можно регулярно встретить звезд и получить автограф, если вам это важно. Например, в США мы летели с Варум и Агутиным, обратно&nbsp;&mdash; с Емельяненко и Запашным.</p>
<p>По прилету в страну вы заполняете анкету, в которой сообщаете что не везете ничего дорогого и запрещенного и проходите паспортный контроль (который мне показался менее организованным, чем, например, в Испании). Форму, которую дают заполнять в самолете можно не заполнять&nbsp;&mdash; терминалы для заполнения есть в аэропорту, там есть русский язык, а стюардессы в самолете плохо представляют что писать в выдаваемой ими же анкете.</p>
<h2>Связь</h2>
<p>По прилету в США обнаружил, что моя SIM карта от Билайн не заработала в международном роуминге. Дело вероятно в корпоративном тарифе и специальных условиях, накрученных на тариф. Возможно также проблема в самом телефоне.</p>
<p>План Б в виде туристической SIM карты <a href="https://drimsim.app.link/Dr0wLPRYyR">Drimsim</a> также не сработал, потому что её не успели доставить. Как я считал, я озаботился заранее её покупкой, но с доставкой SIM не успела ровно на один день. Хотя по Питеру и Москве доставку данный оператор обещает за 1 день, но когда доставка происходит в регионы до Почты России SIM карта доставляется 5 дней. Будьте внимательны, заказывайте заранее.</p>
<p>К моей удачи, знакомый, в которым я встречался в Майами отдал мне в пользование телефон с безлимитной по США SIM картой от T-Mobile. Она покрыла все мои потребности по связи. Также, насколько мне известно, у T-Mobile лучшие предложения по SIM картам для туристов.</p>
<h2><strong>Передвижение по стране</strong></h2>
<p>Важным и непонятным вопросом было то, как передвигаться по США между городами и пригородами. Помня о том, что в США машина&nbsp;&mdash; это все, я решил взять на прокат машину для того чтобы проехать из Майами до места проведения конференции и обратно в аэропорт Орландо. Альтернатива&nbsp;&mdash; сесть на поезд Amtrak и доехать до ближайшей станции, оттуда на Uber до конференции. Поезд&nbsp;&mdash; около $40, такси в обе стороны обойдется примерно в $80.</p>
<p>Вариант с машиной если едет несколько человек&nbsp;&mdash; более экономичный. Но на машине&nbsp;&mdash; удобнее. В цену аренды моей машины входил также бесплатный бак топлива, но так как мне предложили новый гибридный форд (но с пустым баком)&nbsp;&mdash; я не стал отказываться. В итоге переплатил $40&nbsp;&mdash; именно столько стоит залить полный бак. Бака с лихвой хватило на всю дорогу. Если было бы дополнительное время&nbsp;&mdash; можно было заехать посмотреть (например рядом находится космический центр на мысе Канаверал).</p>
<p>Перелеты по США&nbsp;&mdash; это как ездить на автобусе. Рейсы часто между любыми точками, как правило продаются без багажа. Тарифы у авиакомпаний очень унифицированы, везде где я видел&nbsp;&mdash; стоимость багажа $30 за чемодан.</p>
<h2>Питание</h2>
<p>Отдельно остановлюсь на таком важном вопросе как пропитание. В США можно питаться как самостоятельно, но учитывая, что продуктовый магазин  в шаговой доступности&nbsp;&mdash; это большая редкость. Везде принято ездит на машинах, даже в булочную. В ресторанах порции большие и в общем можно обойтись одним блюдом на человека, лучше уточнить у официанта насколько велика порция.</p>
<p>Также в заведениях обязательно нужно оставлять чаевые. Если вы расплачиваетесь картой&nbsp;&mdash; вам принесут чек с ручкой, в чек нужно вписать сумму чаевых и итоговую сумму. Позднее именно полная сумма будет снята с вашей карты. Как правила сумма чаевых&nbsp;&mdash; 10-15% от суммы счета без налога. Средний счет у меня выходил порядка $20 на одного, вообще можно дешевле.</p>
<p>Так как завтракал я рано, то делал это в традиционных фастфудах: Маке, Сабвее и Старбаксе. Там чаевые не оставляют, это большой плюс, еда не здоровая&nbsp;&mdash; это минус. Вообще на здоровой еще в США зарабатывают&nbsp;&mdash; везде есть рестораны здоровой еды, рынки с фермерскими овощами, в аэропорту&nbsp;&mdash; точки с веганской едой. Кстати, что приятно,&nbsp;&mdash; в аэропорту поесть можно за деньги вполне сравнимые с едой за пределами аэропорта. А вот в самолетах&nbsp;&mdash; дают исключительно вредную еду, соленные крекеры, орешки и чипсы вперемежку с газировкой из жестяных банок.</p>
<p>Есть и бюджетные места для еды, мне о них рассказывали в Майами, где можно выбрать все что хочешь из ассортимента включая мясо и морепродукты за $8 на человека.</p>
<h2>AirBnB</h2>
<p>Для меня это первый опыт использования сервиса <a href="http://www.airbnb.ru/c/igorg1941">AirBnb</a>. Могу сказать, что очень полезно сравнивать варианты размещения букинга или другого сервиса, предлагающего размещение в отеле с ценами airbnb.</p>
<p>Например в районе проведения конференции стоимость отеля была минимум 24т.р., через airbnb&nbsp;&mdash; больше чем в 2 раза меньше. В Чикаго, наоборот&nbsp;&mdash; оказалось дешевле и удобнее взять комнату в отеле. Сами схемные комнаты вполне соответствовали отзывам.</p>
<h2>Uber</h2>
<p>Отдельно хотел сказать про <a href="http://www.airbnb.ru/c/igorg1941">Uber</a>&nbsp;&mdash; это действительно удобный и наиполезнейший сервис в США, который имеет несколько вариантов работы и позволяет быстро добираться между различными точками, включая пригороды. Варианты поездок бывают следующими:</p>
<ul>
<li>Uber&nbsp;&mdash; просто такси, приезжает точно за вами, отвозит ровно туда куда нужно</li>
<li>Uber Pool&nbsp;&mdash; такси, но которое подберет вас не там где вы находитесь а в какой-то точке удобной и другим пассажирам. Возможно вы будете ехать с кем-то еще, но привезут вас ровно туда куда вам нужно</li>
<li>Uber ExpressPool&nbsp;&mdash; то же, но привезти могут не точно в нужное вам место, а куда-то рядом.</li>
</ul>
<p>Последние два пункта людям с географическим кретинизмом противопоказаны. Вот примеры моих поездок, чтобы понять примерный порядок цен на Uber в США:</p>
<ul>
<li>$17&nbsp;&mdash; от аэропорта Майами до района Малая Гаванна (недалеко от делового центра Майами)</li>
<li>$6.2&nbsp;&mdash; от Майами бич до той же малой Гаванны (это уже Pool, расстояние сравнимое с предыдущей поездкой)</li>
<li>$6.2&nbsp;&mdash; за прокатной машиной в Downtown Miami (отель Intercontinental)</li>
<li>$8.25&nbsp;&mdash; от дома до конференции (в пригороде, где поездок мало Pool недоступен)</li>
<li>$28.15&nbsp;&mdash; от аэропорта Чикаго к отелю (Uber Pool)</li>
<li>$12.11&nbsp;&mdash; от отеля в Чикаго (расстояние дальше чем до аэропорта, но это уже поздний вечер + ExpressPool)</li>
<li>$24.8&nbsp;&mdash; от отеля в Аэропорт</li>
</ul>
<h2>Общие затраты</h2>
<p>Виза:</p>
<ul>
<li>[31 т.р.] Перелет во Владивосток</li>
<li>[4 т.р.] Поезд Омск-Новосибирск-Омск</li>
<li>[11 т.р.] Визовый сбор</li>
<li>[1.5 т.р.] Отель во Владивостоке</li>
<li>[2.5 т.р.] Прочие расходы на транспорт</li>
</ul>
<p><strong>Итого: 50 т.р. </strong></p>
<p>США:</p>
<ul>
<li>[14т.р.] Перелет Омск-Москва-Омск</li>
<li>[39т.р.] Перелет Москва-Майами, Нью-Йорк-Москва</li>
<li>[12т.р] Аренда автомобиля</li>
<li>[11т.р.] Аренда проживания во время конференции</li>
<li>[2т.р.] Парковка у отеля</li>
<li>[1т.р.] Проезд по платным дорогам</li>
<li>[13т.р.] Прочие расходы на питание и транспорт</li>
</ul>
<p><strong>Итого: 91 т.р. </strong></p>
<h2>Конференция</h2>
<p>Сама конференция astricon состоит из нескольких частей и мероприятий, в которых можно поучаствовать:</p>
<ul>
<li><em>Astridevcon</em>&nbsp;&mdash; собрание разработчиков Asterisk, определяющих цели и направление развития на следующий год. Принципиально любой разработчик может подготовит доклад и представить его для обсуждения. Нужно заранее зарегистрироваться, в отличии от Astricon&nbsp;&mdash; вход бесплатный. Длится на протяжении первого дня параллельно с докладами Astricon. Если есть что сказать&nbsp;&mdash; можно позвонить через специальный conference call. Записи данного мероприятия не производится, но доступен, например, <a href="https://wiki.asterisk.org/wiki/display/AST/astridevcon+2018+minutes">протокол собрания</a>.</li>
<li><em>Доклады</em>&nbsp;&mdash; происходят в четырех залах, с четко обозначенный таймингом, в каждом зале за его соблюдением следит модератор.</li>
<li><em>Expo-зона</em>&nbsp;&mdash; действует где-то с середины первого дня и до конца последнего. На открытии экспо-зоны дают разную снедь, выпивку. Из полезного&nbsp;&mdash; можно подойти к представителям различных компаний (Digium, Sangoma) и разработчикам (Kamailio, Freeswitch) и пообщаться в непринужденной обстановке. В принципе, если вы приехали в первый раз и никого не знаете&nbsp;&mdash; удобно начать общаться и знакомиться здесь.</li>
<li><em>Happy hours</em>&nbsp;&mdash; завершение второго дня. Выпивка, общение на свободные темы по интересам. В нашем случае общение переместилось в бар отеля.</li>
<li><em>Dangerous demos</em>&nbsp;&mdash; завершение последнего дня. Различные демонстрации, включающие в себя элемент опасности, непредсказуемости и шоу. В этот раз были представлены: жонглирование конференциями, управление БД через факсы, игра в космических захватчиков через IVR, обезвреживание бомбы и т.п.</li>
</ul>
<p>Основная аудитория&nbsp;&mdash; Северная и центральная Америка, Европа, представители производителей оборудования из Китая. По ощущениям&nbsp;&mdash; лучшие доклады московского Asterconf при адаптации под требования Astricon могут быть там представлены, заметного отставания по уровню я не заметил.</p>
<p>В плане общения&nbsp;&mdash; на самой конференции с языком почти не было проблем, но очень тяжело концентрироваться и понимать говорящих в рамках многостороннего диалога. С докладом также проблем не возникло (исключая малого числа слушателей).</p>
<p>Из того что удалось сделать мне&nbsp;&mdash; познакомится со многими, кого знал только заочно. Провести прямую трансляцию докладов в телеграм, а также отметится в своем <a href="https://twitter.com/igorg">twitter</a> и <a href="https://twitter.com/igorg">instagram</a> фотографиями из США.</p>
<p>С учетом что на следующий год виза уже в кармане&nbsp;&mdash; вероятно и на следующий год соберусь на это мероприятие, кто со мной?</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://igorg.ru/2018/10/28/opyt-poezdki-na-astricon-v-usa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL из диалплана</title>
		<link>https://igorg.ru/2017/09/26/sql-iz-dialplana/</link>
		<comments>https://igorg.ru/2017/09/26/sql-iz-dialplana/#respond</comments>
		<pubDate>Mon, 25 Sep 2017 20:22:17 +0000</pubDate>
		<dc:creator><![CDATA[igorg]]></dc:creator>
				<category><![CDATA[Asterisk]]></category>

		<guid isPermaLink="false">http://igorg.ru/?p=1961</guid>
		<description><![CDATA[По следам прошедшей конференции AsterConf’2017 мы решили опубликовать несколько простых советов, которые оказались полезными участникам конференции. Первый относится к использованию SQL запросов в системах, которые построены при помощи написания диалплана без применения графических оболочек вроде FreePBX. Для работы c SQL из диалплана чаще всего используют возможности модуля func_odbc. Однако часто оказывается неудобным то, что для [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="size-medium wp-image-20 alignleft" src="https://blog.iqtek.ru/wp-content/uploads/2016/09/Asterisk_logo-300x177.png" sizes="(max-width: 300px) 100vw, 300px" srcset="https://blog.iqtek.ru/wp-content/uploads/2016/09/Asterisk_logo-300x177.png 300w, https://blog.iqtek.ru/wp-content/uploads/2016/09/Asterisk_logo-768x452.png 768w, https://blog.iqtek.ru/wp-content/uploads/2016/09/Asterisk_logo-1024x603.png 1024w, https://blog.iqtek.ru/wp-content/uploads/2016/09/Asterisk_logo.png 1280w" alt="" width="300" height="177" /></p>
<p>По следам прошедшей конференции <a href="https://asterconf.ru/">AsterConf’2017</a> мы решили опубликовать несколько простых советов, которые оказались полезными участникам конференции.</p>
<p>Первый относится к использованию SQL запросов в системах, которые построены при помощи написания диалплана без применения графических оболочек вроде FreePBX. Для работы c SQL из диалплана чаще всего используют возможности модуля func_odbc. Однако часто оказывается неудобным то, что для каждого запрос а требуется редактирование отдельного файла. Ниже описание того, как этого избежать и задавать все запросы в диалплане.</p>
<p><span id="more-1961"></span>В примерах конфигурационных файлов, поставляемых с asterisk есть такой пример настройки func_odbc:</p>
<blockquote>
<p>[SQL]<br />
dsn=mysql1<br />
readsql=$ARG1</p>
</blockquote>
<p>Все бы хорошо, но данный пример только использовать чтение из БД, используя SQL зарос, заданный в диалплане. Выглядит это так:</p>
<blockquote>
<p>exten =&gt; s,n,NoOp ($ODBC_SQL (SELECT somefield FROM sometable LIMIT 1))</p>
</blockquote>
<p>С подобными запросами проблемы не возникнут и при аналогичном вызове функции на запись, но если вы попробуете использовать более сложные запросы, выбирающие несколько полей — то парсер Asterisk буквально взбунтуется, так как будет пытаться разделить запрос на несколько переменных.</p>
<p>При исследовании был найден простой и относительно элегантный способ — передавать в func_odbc лишь имя переменной, содержащей SQL запрос:</p>
<blockquote>
<p>[SQL]<br />
dsn=mysql1<br />
readsql=$$ARG1<br />
writesql=$$ARG1</p>
</blockquote>
<p>таким образом запросы на запись и чтение будут выглядеть примерно так:</p>
<blockquote>
<p>exten =&gt; s,n,Set (QUERY=SELECT somefield FROM sometable LIMIT 1)</p>
<p>exten =&gt; s,n,NoOp ($ODBC_SQL (QUERY))</p>
<p>exten =&gt; s,n,Set (QUERY=UPDATE sometable SET somefield=’1′ LIMIT 1)</p>
<p>exten =&gt; s,n,Set (ODBC_SQL (QUERY)=ignore)</p>
</blockquote>
<p>Надеюсь данный прием пригодится широким массам</p>
<p>Оригинал: <a href="http://blog.iqtek.ru/?p=125">http://blog.iqtek.ru/?p=125</a></p>
]]></content:encoded>
			<wfw:commentRss>https://igorg.ru/2017/09/26/sql-iz-dialplana/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Что нового в Asterisk 15</title>
		<link>https://igorg.ru/2017/09/22/chto-novogo-v-asterisk-15/</link>
		<comments>https://igorg.ru/2017/09/22/chto-novogo-v-asterisk-15/#respond</comments>
		<pubDate>Fri, 22 Sep 2017 08:01:29 +0000</pubDate>
		<dc:creator><![CDATA[igorg]]></dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://igorg.ru/?p=1958</guid>
		<description><![CDATA[<p><b style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-size: 15.2px; font-family: 'Times New Roman';"><img class="size-medium wp-image-20 alignleft" src="http://blog.iqtek.ru/wp-content/uploads/2016/09/Asterisk_logo-300x177.png" alt="" width="300" height="177" srcset="http://blog.iqtek.ru/wp-content/uploads/2016/09/Asterisk_logo-300x177.png 300w, http://blog.iqtek.ru/wp-content/uploads/2016/09/Asterisk_logo-768x452.png 768w, http://blog.iqtek.ru/wp-content/uploads/2016/09/Asterisk_logo-1024x603.png 1024w, http://blog.iqtek.ru/wp-content/uploads/2016/09/Asterisk_logo.png 1280w" sizes="(max-width: 300px) 100vw, 300px" /></b>Совсем скоро должна появиться релизная версия Asterisk 15. В новой версии Asterisk Digium провели массивное изменение ядра системы, что вызвало отхождение от принципов нумерации и выпуска LTS]]></description>
				<content:encoded><![CDATA[<p><b style="font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-size: 15.2px; font-family: 'Times New Roman';"><img class="size-medium wp-image-20 alignleft" src="https://blog.iqtek.ru/wp-content/uploads/2016/09/Asterisk_logo-300x177.png" sizes="(max-width: 300px) 100vw, 300px" srcset="https://blog.iqtek.ru/wp-content/uploads/2016/09/Asterisk_logo-300x177.png 300w, https://blog.iqtek.ru/wp-content/uploads/2016/09/Asterisk_logo-768x452.png 768w, https://blog.iqtek.ru/wp-content/uploads/2016/09/Asterisk_logo-1024x603.png 1024w, https://blog.iqtek.ru/wp-content/uploads/2016/09/Asterisk_logo.png 1280w" alt="" width="300" height="177" /></b>Совсем скоро должна появиться релизная версия Asterisk 15. В новой версии Asterisk Digium провели массивное изменение ядра системы, что вызвало отхождение от принципов нумерации и выпуска LTS релизов. Таким образом:</p>
<ul>
<li>Asterisk 15 становится не-LTS релизом со сроком поддержки 2 года</li>
<li>Поддержка Asterisk 13 продляется до 2021 года</li>
</ul>
<p>Основными нововведениями при этом являются:</p>
<ul>
<li>Поддержка мульти-поточности в работе с RTP (в основном для WebRTC в chan_pjsip)</li>
<li>Внедрение API для абстракции при работе с SDP</li>
<li>Реализация спецификации BUDLE для передачи нескольких RTP потоков единым транспортом</li>
</ul>
<p>Более подробный список изменений под катом.</p>
<p><span id="more-1958"></span></p>
<p><b>Confbridge</b><span style="font-weight: 400;">:</span></p>
<p>&nbsp;</p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлен режим видео «sfu» к настройкам профиля,что позволяет использовать конференции в режиме SFU, когда приходящие видео потоки рассылаются всем участникам конференции, которые поддерживают прием нескольких потоков.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена поддержка объемного микширования звука для создания эффекта рассадки спикеров за столом. Микширование происходит на частоте 48кГц, используя библиотеку libfftw3.</span></li>
</ul>
<p>&nbsp;</p>
<p><b>Ядро</b><span style="font-weight: 400;">:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Внесены массивные изменения в ядро, которые позволили расширить API каналов и обрабатывать несколько аудио/видео потоков. В данный момент данный API задействован только для PJSIP и мотивирован востребованностью данной опции в современных WebRTC браузерных приложениях. Новые конфигурационные опции:</span>
<ul>
<li style="font-weight: 400;"><i><span style="font-weight: 400;">max_audio_streams</span></i><span style="font-weight: 400;">: указывает на максимальное количество аудио каналов, которые можно принять от данного устройства. </span></li>
<li style="font-weight: 400;"><i><span style="font-weight: 400;">max_video_streams</span></i><span style="font-weight: 400;">: указывает на максимальное количество видео каналов, которые можно принять от данного устройства.</span></li>
</ul>
</li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Поддержка rtcp-mux в соответствии с RFC 5761: Multiplexing RTP Data and Control Packets on a Single Port. Новая опция «rtcp_mux» добавлена в настройки устройства. При включении UDP подключение используемое для RTP будет использовано и для RTCP. Массивные изменения в res_rtp_asterisk.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Удален ‘Data Retrieval API’. Как не поддерживаемый, функции которого могут быть замещены используя ARI.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлено API абстракции над представлением SDP. Добавлена реализация для стека PJMEDIA.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлено API для задержки доставки фреймов, так как данная функциональность реализована и дублируется сразу в нескольких приложениях.</span></li>
</ul>
<p>&nbsp;</p>
<p><b>PJSIP</b><span style="font-weight: 400;">:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена команда «pjsip show subscriptions»</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена функция PJSIP_DTMF_MODE (), это клон приложения SIPDtmfMode, позволяющий во время вызова изменить режим DTMF для вызова через PJSIP</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлен режим auto_info для отката к DTMF INFO режиму, будет произведен переход на SIP INFO вместо inband, в том случае если 4733  не доступен.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Новая опция «notify_early_inuse_ringing» для устройств. Опция будет полезна для работы функции подбора вызова на некоторых телефонах (пр. Linksys/Cisco)</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена опция «webrtc» подключающая набор опций, необходимых для работы WebRTC:</span>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">rtcp-mux, use_avpf, ice_support и use_received_transport=enabled</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">media_encryption=dtls</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">dtls_verify=fingerprint</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">dtls_setup=actpass</span></li>
</ul>
</li>
</ul>
<p><span style="font-weight: 400;">Также включается проброс атрибута «msid» в SDP и отправляются h264 RTCP FIR ответные фреймы.</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена поддержка BUNDLE, позволяющей для нескольких медиа потоков использовать общий транспорт, это ускоряет и упрощает старт сессии, так как сокращает количество ICE/DTLS согласований до 1.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Новая опция для устройств «refer_blind_progress», предазначена для скрытия уведомлений о деталях при слепом переводе. Требуется для корректной работы некоторых телефонов, например Mitel/Aastra или Snom.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена опция “preferred_codec_only”для устройств. Позволяет помещать в ответ только единственный, наиболее предпочтительный кодек.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Улучшения в логировании. Добавлены команды CLI:</span>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">pjproject set log level</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">pjproject show log level</span></li>
</ul>
</li>
</ul>
<p><span style="font-weight: 400;">Добавлена опция «log_level» в pjproject.conf для установки стартового максимального значения уровня логирования.</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена команда AMI RegistrationInboundContactStatuses.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлен новый вид транспорта — ‘symmetric_transport’. Если разрешено, то при запросе о динамического контакта, используемый тип транспорта будет сохранен и использован для последующих запросов.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена поддержка последовательного набора в соответствии с RFC3578. Включается через новую опцию “allow_overlap” устройства.</span></li>
</ul>
<p>&nbsp;</p>
<p><b>Приложения</b><span style="font-weight: 400;">:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлено новое эхо-приложение, возвращающее заданное количество копий полученных потоков (аудио и видео). параметры num и type задают количество и тип возвращаемых эхо- медиа потоков.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Фильтрация символов для ast_waitfordigit_full, для осановки только в случае получения ожидаемого ввода. Новое приложение WaitDigit ().</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена опция «Q» для установки причины ответа на каналах без ответа. Заменяет устанавливаемое по-умолчанию ANSWERED_ELSEWHERE.</span></li>
</ul>
<p>&nbsp;</p>
<p><b>Сборка</b><span style="font-weight: 400;">:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Сборка по-умолчанию происходит с опцией —with-pjproject-bundled, автоматически загружающей копию файлов библиотеки pjsip с серверов Digium.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Для упрощения сборки без доступа к интернет добавлена опция ./configure ‘—with-download-cache’. Также может быть задана переменная окружения «AST_DOWNLOAD_CACHE».</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена опция ./configure ‘—disable-libwebrtc’. Без данной опции происходит сборка внутренней реализации webrtc, что на платформах без sse2 приводит к ошибке.</span></li>
</ul>
<p>&nbsp;</p>
<p><b>RTP</b><span style="font-weight: 400;">:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена опция ice_blacklist в rtp.conf. </span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена опция stun_blacklist в rtp.conf. </span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена поддержка использования libsrtp2.</span></li>
</ul>
<p>&nbsp;</p>
<p><b>Очереди</b><span style="font-weight: 400;">: </span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена опция </span><i><span style="font-weight: 400;">announce-position-only-up</span></i><span style="font-weight: 400;">. В случае использования приложение будет анонсировать позицию в очереди только в том случае, если она улучшилась по сравнению с прошлым объявлением.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена переменная QUEUE_RAISE_PENALTY, в дополнение к переменным QUEUE_MAX_PENALTY и QUEUE_MIN_PENALTY, и дополнительным параметрам в queuerules.conf.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлен вывод приоритета звонящего при ответе на AMI запрос QueueStatus. </span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Возможность изменения приоритета звонящего используя CLI или AMI.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлено приложение QueueUpdate для отслеживания исходящих вызовов используя app_queue</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлено queue_log событие RINGCANCELED, отражающее сброс вызова до момента когда произошел таймаут вызова оператора. В таком случае не фиксировалось время вызова и имя оператора, пропустившего вызов.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">логирование причины для событий PAUSEALL/UNPAUSEALL в queue_log.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Удалено действие AMI «Queues», как дублирующее вывод CLI «queue show». ”QueueStatus» выводит аналогичную информацию в структурированном виде.</span></li>
</ul>
<p>&nbsp;</p>
<p><b>Отладка</b><span style="font-weight: 400;">:</span></p>
<p><span style="font-weight: 400;">* Добавлена утилита ast_coredumper для манипуляций с дампами.</span></p>
<p><span style="font-weight: 400;">* Добавлен ast_logescalator для детального разделения логов.</span></p>
<p>&nbsp;</p>
<p><b>Кодеки</b><span style="font-weight: 400;">:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена поддержка iLBC 20 в добавление к имеющейся поддержке iLBC30. Новый кодек будет использоваться по умолчанию, если напрямую не требуется иное.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена поддержка пропуска VP9 (но не проигрывание и запись в данный тип файла).</span></li>
</ul>
<p>&nbsp;</p>
<p><b>AMI/ARI:</b></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Для использования в Asterisk 15 обновлены версии:</span>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">AMI с 3.2.0 на 4.0.0</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">ARI с 2.0.0 на 3.0.0</span></li>
</ul>
</li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлены команды CLI для отображения и отладки ARI приложений:</span></li>
</ul>
<p><span style="font-weight: 400;">   — ari show apps: список ARI приложений</span></p>
<p><span style="font-weight: 400;">   — ari show app: детальная информация об ARI приложении</span></p>
<p><span style="font-weight: 400;">   — ari set debug: дамп событий отправляемых к приложению</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена поддержка для переменных в ARI событиях. Если добавить  «channelvars=foo,bar» в ari.conf секцию general, тогда значение указанных переменных будет передано в событие в Stasis.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Возможность управлять источником видео, передаваемого участникам разговора, добавлены методы:</span></li>
</ul>
<p><span style="font-weight: 400;">  (1) setVideoSource: POST /bridges/bridgeId/videoSource/channelId</span></p>
<p><span style="font-weight: 400;">  (2) clearVideoSource: DELETE /bridges/bridgeId/videoSource</span></p>
<p>&nbsp;</p>
<p><b>AGI:</b></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Добавлена возможность управления форматом аудио, передаваемого через EAGI. Используется переменная ‘EAGI_AUDIO_FORMAT’.</span></li>
</ul>
<p>&nbsp;</p>
<p><b>voicemail:</b></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Для IMAP протокола добавлена опция «imap_poll_logout» для указания того что нужно отключиться от IMAP по завершению проверки почтовых ящиков.</span></li>
</ul>
<p>&nbsp;</p>
<p><b>CDR/CEL:</b></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Поддержка для сборки cdr_radius and cel_radius с использованием библиотеки radcli.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Поддержка установки userfield из ‘h’ экстенжена.</span></li>
</ul>
<p>&nbsp;</p>
<p><b>Разное: </b></p>
<ul>
<li style="font-weight: 400;"><b>Логирование</b><span style="font-weight: 400;">.  Добавлена опция logger_queue_limit. Определяет лимит на длину очереди на запись в лог файлы, по-умолчанию — 1000 строк</span></li>
<li style="font-weight: 400;"><b>Sqlite3</b><span style="font-weight: 400;">. Добавлена возможность управления параметром busy_timeout.</span></li>
<li style="font-weight: 400;"><b>Календари.</b><span style="font-weight: 400;"> Добавлена поддержка для чтения календарей Google (ранее была доступна только запись).</span></li>
<li style="font-weight: 400;"><b>IAX2</b><span style="font-weight: 400;">. Поддержка передачи пароля в plaintext теперь deprecated. Будет удалена в версии 16.</span></li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Оригинал: <a href="http://blog.iqtek.ru/?p=131">http://blog.iqtek.ru/?p=131</a></p>
]]></content:encoded>
			<wfw:commentRss>https://igorg.ru/2017/09/22/chto-novogo-v-asterisk-15/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обновление openssl для webrtc</title>
		<link>https://igorg.ru/2017/01/04/obnovlenie-openssl-dlya-webrtc/</link>
		<comments>https://igorg.ru/2017/01/04/obnovlenie-openssl-dlya-webrtc/#respond</comments>
		<pubDate>Tue, 03 Jan 2017 20:20:43 +0000</pubDate>
		<dc:creator><![CDATA[igorg]]></dc:creator>
				<category><![CDATA[FreeSWITCH]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://igorg.ru/?p=1951</guid>
		<description><![CDATA[&#160; Браузеры идут вперед семимильными шагами, при этом складывается ситуация, когда обновление браузеров у клиента иногда требует обновления и инфраструктуры. Мы с толкнулись с тем, что в нашей инфраструктуре не работают новые версии Chrome. Поиск по изменениям показал, что в в 52 версии Chrome перешли на использование только на использование ECDSA алгоритма при согласовании подключения [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>&nbsp;</p>
<p><img class="size-medium wp-image-118 alignleft" src="https://blog.iqtek.ru/wp-content/uploads/2017/01/Chrome-WebRTC-logo-image-300x300.png" sizes="(max-width: 300px) 100vw, 300px" srcset="https://blog.iqtek.ru/wp-content/uploads/2017/01/Chrome-WebRTC-logo-image-300x300.png 300w, https://blog.iqtek.ru/wp-content/uploads/2017/01/Chrome-WebRTC-logo-image-150x150.png 150w, https://blog.iqtek.ru/wp-content/uploads/2017/01/Chrome-WebRTC-logo-image.png 512w" alt="" width="300" height="300" />Браузеры идут вперед семимильными шагами, при этом складывается ситуация, когда обновление браузеров у клиента иногда требует обновления и инфраструктуры.</p>
<p>Мы с толкнулись с тем, что в нашей инфраструктуре не работают новые версии Chrome. Поиск по изменениям показал, что в в 52 версии Chrome перешли на использование только на использование ECDSA алгоритма при согласовании подключения DTLS. Но в версии openssl до 1.0.2 эти алгоритмы не поддерживаются. «Правильный» openssl на Ubuntu можно установить таким способом:</p><pre class="crayon-plain-tag">sudo add-apt-repository ppa:louisinternet/openssl
sudo apt-get update
apt install openssl</pre><p>Проверить версию после установки:</p><pre class="crayon-plain-tag">root@freeswitch3-in:/home/superadmin# openssl version
OpenSSL 1.0.2g-fips 1 Mar 2016</pre><p>После этого достаточно перезапустить freeswitch для работы с правильными версиями библиотеки openssl.</p>
<p>&nbsp;</p>
<p>Оригинал: <a href="http://blog.iqtek.ru/?p=100">http://blog.iqtek.ru/?p=100</a></p>
]]></content:encoded>
			<wfw:commentRss>https://igorg.ru/2017/01/04/obnovlenie-openssl-dlya-webrtc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
