<?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>Tamkovich.com: Телеком/VoIP блог &#187; jabber</title>
	<atom:link href="http://tamkovich.com/tag/jabber/feed/" rel="self" type="application/rss+xml" />
	<link>http://tamkovich.com</link>
	<description>Современные технологии: Asterisk, SIP, Kamailio, Linux, Cisco, Linksys</description>
	<lastBuildDate>Fri, 11 May 2012 04:00:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Asterisk и текстовые сообщения: JABBER_RECEIVE</title>
		<link>http://tamkovich.com/2009/01/asterisk-text-messaging-jabber-receive/</link>
		<comments>http://tamkovich.com/2009/01/asterisk-text-messaging-jabber-receive/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 14:46:47 +0000</pubDate>
		<dc:creator>Сергей Тамкович</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://tamkovich.com/?p=191</guid>
		<description><![CDATA[Современные телекоммуникационные протоколы поддерживают не только передачу аудио данных &#8211; текстовыми сообщениями или видео звонками сегодня уже никого не удивить. Создатели протокола SIP вообще не стали привязываться к типу медиа данных передаваемых в установленном сеансе связи. Вот, например, цитата из RFC3261: 13.1 Overview When a user agent client desires to initiate a session (for example, [...]]]></description>
			<content:encoded><![CDATA[<p align=justify>
Современные телекоммуникационные протоколы поддерживают не только передачу аудио данных &#8211; текстовыми сообщениями или видео звонками сегодня уже никого не удивить. Создатели протокола  <a href=http://tamkovich.com/tag/sip/ >SIP</a> вообще не стали привязываться к типу медиа данных передаваемых в установленном сеансе связи. Вот, например, цитата из <a href=http://www.ietf.org/rfc/rfc3261.txt>RFC3261</a>:
</p>
<blockquote><p>
<B>13.1 Overview</B></p>
<p>   When a user agent client desires to initiate a session (for example,<br />
   audio, video, or a game), it formulates an INVITE request.  The<br />
   INVITE request asks a server to establish a session.
</p></blockquote>
<p align=justify>
То есть, протокол позволяет установить сеанс связи, а что будет передано в этом сеансе &#8211; видео, аудио или даже игры &#8211; забота UA. <a href=http://tamkovich.com/tag/sip/ >SIP</a> не единственный протокол управляющий соединениями абстрактно от медиа данных, подобный уровень абстракции поддерживается и другими, например  jabber/xmpp протоколом.
</p>
<p align=justify>
На сегодняшний день, <a href=http://tamkovich.com/asterisk/ >Asterisk</a> используется, в основном, для обработки и передачи аудио данных. Работа с текстовыми сообщениями, до недавнего времени, ограничивалась приложением SendText. Приложение <a href=http://www.voip-info.org/wiki-Asterisk+cmd+SendText>SendText</a> позволяет, используя <a href=http://www.voip-info.org/wiki/view/Asterisk+text>ограниченный набор каналов</a>, отправлять вызывающему абоненту текстовое сообщение. Приложения, которое бы принимало текст от вызывающего пользователя в диалплане &#8211; не существовало. Это очень сильно ограничивало сферу применения текстовых сообщений в <a href=http://tamkovich.com/asterisk/ >Asterisk</a>.
</p>
<p><span id="more-191"></span></p>
<p align=justify>
В ближайшем будущем, в <a href=http://tamkovich.com/asterisk/ >Asterisk</a> появится новая функция для диалплана &#8211; JABBER_RECEIVE. На данный момент, код этой функции находится в <a href=http://svn.digium.com/svn/asterisk/team/phsultan/jabberreceive/>частной ветке Philippe Sultan</a> и уже более месяца помечен в багтракере как ready for review/ready for testing, что говорит о его отлаженности. Синтаксис новой функции таков:
</p>

<div class="wp_syntax"><div class="code"><pre class="ael" style="font-family:monospace;">Set(VALUE=${JABBER_RECEIVE(xmpp-account,bob@jabber.org,30)})</pre></div></div>

<p align=justify>
В этом примере, функция диалплана будет ожидать 30 секунд (timeout) сообщения от пользователя someone@jabber.ru (jid) на аккаунт xmpp-account (account). Аккаунты настраиваются в файле jabber.conf. Параметры jid и account &#8211; обязательны. Параметр timeout &#8211; опционален, если он отсутствует, то используется таймаут по умолчанию &#8211; 20 секунд. Как следует из примера, ответ пользователя сохраняется в переменную диалплана с именем VALUE. Это открывает фантастические возможности по интерактивному управлению звонками / диалпланом. Пара примеров проиллюстрирует новые возможности лучше всяких слов.
</p>

<div class="wp_syntax"><div class="code"><pre class="ael" style="font-family:monospace;">context from-ext {
    1234 =&gt; {
        Answer();
        JabberSend(axmpp,bob@jabber.org,Call from $CALLERID(num) - choose an option to process the call);
        JabberSend(axmpp,bob@jabber.org,1 : forward to cellphone);
        JabberSend(axmpp,bob@jabber.org,2 : forward to work phone);
        JabberSend(axmpp,bob@jabber.org,Default action : forward to your voicemail);
        Set(OPTION=${JABBER_RECEIVE(axmpp,bob@jabber.org,20)});
        switch (${OPTION}) {
            case 1:
                JabberSend(axmpp,bob@jabber.org,(Calling cellphone...);
                Dial(SIP/987654321);
                break;
            case 2:
                JabberSend(axmpp,bob@jabber.org,(Calling workphone...);
                Dial(SIP/${EXTEN});
                break;
            default:
                Voicemail(${EXTEN}|u)
        }
    }
}</pre></div></div>

<p align=justify>
В этом примере, при поступлении звонка на номер 1234 контекста from-ext, <a href=http://tamkovich.com/asterisk/ >Asterisk</a> запрашивает пользователя bob@jabber.org по протоколу xmpp, и, в зависимости от ответа, посылает звонок на мобильный телефон (1), посылает звонок на <a href=http://tamkovich.com/tag/sip/ >SIP</a> аккаунт 1234 или переводит звонок в голосовую почту (по таймауту в 20 секунд).
</p>

<div class="wp_syntax"><div class="code"><pre class="ael" style="font-family:monospace;">context gtalk-in {
    s =&gt; {
        NoOp(Caller id : ${CALLERID(all)});
        Answer();
        SendText(Please enter the number you wish to call);
        Set(NEWEXTEN=${JABBER_RECEIVE(axmpp,${CALLERID(name)})});
        SendText(Calling ${NEWEXTEN} ...);
        Dial(SIP/${NEWEXTEN);
        Hangup();
    }
}</pre></div></div>

<p align=justify>
Этот пример контекста для xmpp клиента умеющего работать с аудиоданными (например, gtalk). При звонке с такого клиента, CALLERID(name) устанавливается в JID вызывающего пользователя. В последствии вы можете использовать CALLERID(name) для отправки и приема сообщений с помощью JabberSend и JABBER_RECEIVE соответственно. Данный пример реализует DISA с помощью текстовых сообщений (отвечает на входящий звонок и спрашивает, какой номер набрать далее).
</p>
<p align=justify>
Как я уже писал &#8211; JABBER_RECEIVE открывает фантастические возможности по интеграции управления звонками с системами Интернет пейджеров. Текстовые сообщения давно стали важной частью коммуникаций. Полноценная обработка текстовых сообщений &#8211; это большой шаг вперед для <a href=http://tamkovich.com/asterisk/ >Asterisk</a> как для современной коммуникационной платформы.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ftamkovich.com%2F2009%2F01%2Fasterisk-text-messaging-jabber-receive%2F&amp;title=Asterisk%20%D0%B8%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B5%20%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D1%8F%3A%20JABBER_RECEIVE" id="wpa2a_2"><img src="http://tamkovich.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://tamkovich.com/2009/01/asterisk-text-messaging-jabber-receive/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

