Главная » Настройки » Простое управление устройствами по телефону или DTMF декодер. Машинка управляемая сотовым телефоном Декодирование dtmf сигнала в android

Простое управление устройствами по телефону или DTMF декодер. Машинка управляемая сотовым телефоном Декодирование dtmf сигнала в android

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

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

Благодаря тенденции к снижению цен на рынке, почти каждому гражданину России стал доступен свой личный мобильный телефон.

Множество операторов связи предоставляют услуги сотовой связи. Благодаря развитию интернет технологий получила популярность IP-телефония, которая имеет ряд плюсов перед обычной сотовой телефонией, например, защищённый от прослушиваний разговор или запись разговора на сервер, использование коротких номеров, связь без привлечения провайдеров.

Существует несколько способов связи сервера VoIP и мобильного телефона. Один из самых очевидных, это интернет соединение, за которое обычно нужно платить оператору сотовой связи, которому не особо выгодно делать интернет-связь для VoIP дешевле, чем собственные услуги по телефонии. Поэтому цены на тариф со стабильным интернетом, необходимым для звонков посредством IP телефонии, могут быть завышены.

Существует способ связи с VoIP сервером, который принято называть callback, когда серверу сообщается на какой номер нужно позвонить, и сервер перезванивает абоненту, соединяя с номером, на который абонент звонит. Номер этот можно передать с помощью сети интернет, SMS или тонального набора (DTMF).

Не всегда есть возможность отправить SMS или воспользоваться интернетом, особенно, если абонент находится в роуминге. Часто, единственный доступный способ связи - это «традиционный» вызов с помощью сотовой связи. Существует способ, через который можно обеспечить связь с сервером VoIP через сотовый вызов, для этого используется DTMF Callback по следующему алгоритму:

1. Абонент «A» звонит на номер сервера телефонии

Рисунок 1. Шаг 1

2. Сервер телефонии обрывает связь

Рисунок 2. Шаг 2

3. Сервер телефонии перезванивает абоненту «A» и ждёт ответа

Рисунок 3. Шаг 3

4. Абонент «A» отвечает на звонок

Рисунок 4. Шаг 4

5. В тональном наборе абонент «A» набирает номер абонента «B»

Рисунок 5. Шаг 5

6. Сервер инициализирует звонок абоненту «B»

Рисунок 6. Шаг 6

7. После инициализации сервер связывает соединение абонента «A» и абонента «B». Абонент «A» уже слышит гудки дозвона до абонента «B».

Рисунок 7. Шаг 7

Абонент «B» отвечает на звонок. Оба пользователи могут обмениваться голосовыми сообщениями.

Рисунок 8. Шаг 8

В итоге у абонента «A» и абонента «B» совершается входящий звонок, и они могут общаться друг с другом через сервер телефонии.

Существует способ Callthrough, который в отличие от Callback не требует перезвона сервера абоненту «A», но в связи с этим, абонент «A» платит за исходящий вызов.

Основание для разработки

Основной недостаток инициализации callback с помощью DTMF в том, что абоненту «A» надо вручную набирать номер абонента «B» после того как ему перезвонил сервер. В журнале вызовов на телефоне абонента «A» в исходящих звонках остаётся номер, который он набирал, то есть номер сервера, а во входящих и номер callback, который перезвонил ему. Данная информация для пользователя является малоинформативной. Сервер телефонии может быть настроен так, что абоненту «A» перезванивает callback с разных номеров. Это значит, что в журнале вызовов у пользователя будет большое количество незнакомых номеров. Данная информация является лишней, и её следует скрывать от абонента. Часто предоставляющие callback сервисы обходятся без прямого доступа по DTMF, а используют интернет подключение, SMS или специальную SIM-карту.

Цель разработки

Разработать рабочий прототип приложения, которое будет облегчать использование функции телефонии DTMF callback на устройствах с android.

Обзорно-аналитическая часть

Сотовая связь

Сотовая связь - беспроводная связь, зоны доступа которой разделены на шестиугольные ячейки похожие на соты. Одну такую зону доступа обеспечивает базовая станция. Множество таких базовых станций, которые составляют зоны из сот, называют сотовой сетью, устройства, которые пользуются сотовой сетью - сотовые телефоны. В сотовой сети, каждая ячейка использует различный набор частот от соседних клеток для избегания помех и чтобы обеспечить гарантированную пропускную способность для каждой ячейки.

Особенности сотовой сети:

· Использование множества базовых станций даёт больше возможностей, чем использование одного большого передатчика. Каждой ячейке может быть присвоено несколько частот, соответствующих базовой станции. Группу частот можно использовать повторно, если соседние клетки используют другие частоты.

Рисунок 9. Схема повторного использования частот (F1-F4 - частоты)

· Мобильные устройства выделяют меньше энергии на связь с башней, так как требуется менее мощный сигнал, чтобы найти её вследствие более близкого расположения башни связи

· Большую площадь покрытия, чем одного наземного передатчика, так дополнительные башни клеток могут быть добавлены на участки с плохой связью, куда сигнал плохо доходит из-за помех.

При расположении ячеек оптимально избегать перекрытия зон ячеек, между ячейками не должно быть пустого пространства. Поэтому геометрической формой покрытия могут быть такие фигуры, как треугольники, квадраты или шестиугольники. Форма покрытия от антенн больше всего похожа на шестиугольник .

Устройства, которые управляют сигналами и маршрутизируют их от одного сотового телефона к другому, называются автоматическими телефонными станциями (АТС). На данный момент почти все АТС являются электронными.

Номеронабиратель (dialer) - часть интерфейса телефонного аппарата, которая позволяет передать номер телефонного аппарата, с которым АТС должна соединить. Долгое время использовались импульсные dialer"ы, которые формировали импульсы, где каждой цифре соответствовало своё количество импульсов . На телефонном аппарате находился диск с 10 дырками. Принцип соединения с АТС был таким:

На телефонном аппарате прокручивается диск от точки с указанной цифрой, который заводит пружину. Когда отпускается диск, пружина начинает разгибаться, диск начинает двигаться в обратную сторону. Набор импульса соответствует замыканию и размыканию телефонной линии. Между набором импульсов делаются паузы, чтобы отличить набор одного символа от другого. Данный способ набора достаточно неудобный, абоненту приходится несколько раз отводить диск и ждать пока он вернётся на место. Впоследствии появился импульсный кнопочный набор, который избавил от такого недостатка.

На данный момент для набора номера используется двухтональный многочастотный сигнал (Dual Tone Multi-Frequency, DTMF). DTMF может быть использован для внутренних команд телефонной сети. В DTMF передаваемая цифра кодируется сигналом полученным суммированием двух синусоидальных напряжений определенной частоты . Используется две группы по четыре частоты звукового диапазона в каждой.

Таблица 1. Соответствие частот и символов при DTMF наборе

Direct Inward System Access (DISA) -- функция прямого доступа, возможность получения абонентом доступа к управлению телефонной станицей или сервером телефонии посредством DTMF сигналов с телефона.

Обзор рынка сотовой связи

Выручка компаний, предоставляющих сотовую связь в России, растёт, о чём свидетельствуют их отчёты Из тех же отчётов видно, что большая доля доходов приходится на мобильную связь. В интересах, как обычного частного пользователя, так и корпоративного игрока, является сокращение расходов на мобильную связь. Одним из способов является анализ используемых услуг за месяц и выбор наиболее подходящего тарифа у мобильного оператора.

Рынок мобильной связи в Москве состоит из трёх игроков, распределение которых можно увидеть на :

Диаграмма 1: распределение крупных игроков на сотовом рынке

Сравнение местных тарифов по Москве

У трёх крупных игроков на московском рынке имеются схожие пакетные тарифы, которые можно сравнить. Например, тарифы класса «Smart» у МТС, «Всё включено» у Мегафона и «Всё за» у Билайн. Эти тарифы предлагают пакет опций и абонентскую плату за них. Сравним схожие по цене тарифы из этих классов. В пакеты услуг могут входить SMS, MMS, интернет и другие услуги, но в данном разборе они не учитываются, так как нас интересует именно цена звонка. По этой же причине нет подробного описания нюансов тарифов, если они прямо не влияют на цену, однако можно заметить, что качество связи в разных районах местности может сильно отличаться у операторов. Также нет нужды считать стоимость звонков, если превышен месячный лимит тарифа, так как человек, который контролирует расходы, будет выбирать себе тариф правильно, однако стоит отметить, что цена после превышения лимита может быть достаточна высокой. Стоит отметить, что входящие внутри России для всех трёх пакетных групп бесплатные.

Минимальными по цене являются пакетные тарифы «Smart mini» - 200 ?, «Всё включено XS» - 199 ? и «Всё за 200» - 200 ?. Имеются некоторые особенности для звонков внутри сети оператора. В «Smart mini» и «Всё включено XS» звонки по всей России, а во «Всё за 200» только по Москве и Московской области. Цены указаны на момент 15.05.2015.

Таблица 3. Минимальные пакетные тарифы

Как видно из таблицы, тарифные опции весьма похожи. Дешевле всего обходятся звонки внутри сети. Абонентам других операторов звонить дороже, особенно за пределы Московской области.

Хоть данный тариф не предназначен для звонков в другие страны, у человека может возникнуть необходимость позвонить за пределы своей страны, поэтому стоит рассмотреть международные тарифы на звонки в другие страны.

Таблица 4. Минимальные пакетные тарифы(звонки за границу)

СНГ, рублей в минуту

24 Также для Республики Крым и г. Севастополь

Европа, рублей в минуту

Остальные страны, рублей в минуту

США, рублей в минуту

Канада, рублей в минуту

Австралия и Океания, рублей в минуту

Азия, рублей в минуту

СНГ внутри сети, рублей в минуту

Северная и центральная Америка (без США и Канады), рублей в минуту

Как видно из таблицы, тарифы на звонки в другие страны уже отличаются достаточно сильно. Билайн предоставляет возможность по низкой цене звонить на номера Билайн в других странах. У Мегафона больше различий цен для разных стран, а у МТС наоборот единая цена для Европы и единая цена для всех остальных стран.

Таблица 5. Малые пакетные тарифы

Как и в случае с минимальными пакетными тарифами, условия весьма схожи, но цена уже различается.

Цены на звонки в другие страны у МТС для пакетов типа «Smart» не отличаются, как и у Мегафон для пакетов «Всё включено», а вот у Билайн в пакетах «Всё за» цены на за границу немного отличаются:

· В тарифе «Всё за 400»: условия «Всё за 200» + первые 10 минут в день стоят 5 ?, если звонить в страны СНГ, Крым и Севастополь.

· В тарифе «Всё за 600»: условия «Всё за 400» + первые 10 минут в день стоят 7 ?, если звонить в Азербайджан, Беларусь и Молдову

· В тарифе «Всё за 900»: условия «Всё за 600» + первые 10 минут в день стоят 5 ?, если звонить в Европу, США и Молдову

· В тарифе «Всё за 1500»: условия «Всё за 900» + в Мальдивы, Мадагаскар, Бурунди, КНДР, Папуа-Новая Гвинея, Сейшельские острова, Сомали, Токелау, Тунис одна минута стоит 55 ?

Таблица 6. Средние пакетные тарифы

При равных местных тарифах, цена на звонки другим операторам по России у Мегафон в 3,3 раза дешевле.

Таблица 7. Тарифные пакеты выше среднего

При равных местных тарифах, цена на звонки другим операторам по России у МТС в 3,3 раза дешевле.

Таблица 8. Большие тарифные пакеты

Данные местные тарифы имеют почти одинаковые условия.

Вывод

Пакетные тарифы весьма выгодные, если использовать их для звонков внутри сети. У конкурирующих операторов цены держатся примерно на одном уровне. Для обычного абонента, который говорит по 20-60 минут в день такие тарифы подходят. Если человеку необходимо разговаривать больше 120 минут в день, то ему придётся брать более дорогие тарифные пакеты ценой от 1500 до 2500, что уже достаточно дорого.

Для международного роуминга существуют свои условия, которые отличаются друг от друга. Данный роуминг у всех трёх операторов дорогой, тридцатиминутный разговор может превысить стоимость пакета услуг. Если абоненту приходится звонить в другие страны, то стоит выбрать другой тариф.

Тарифы для звонков в другие страны

Тарифы на звонки в другие страны были условно разделены на три группы:

1. Тарифы для родственников и друзей туристов

2. Тарифы для мигрантов

3. Тарифы для бизнесменов

Тарифы для родственников и друзей туристов

Для сравнения по тарифам для родственников и друзей туристов взято пять популярных курортных направлений ::

1. Испания

Звонки по таким направлениям рассматриваются только при вызовах на сотовый телефон, так как турист вряд ли будет всё путешествие сидеть около стационарного телефона.

У МТС имеется тарифная опция «Выгодные международные звонки» . Абонентская плата в месяц составляет 50 ?. Звонки по этим пяти направления будут стоить 10 рублей в минуту. Тарифная опция совместима с другими тарифами, например с «Smart».

У Билайн имеется тариф «Добро пожаловать» . Стоимость перехода на данный тариф составляет 150 ?, ежемесячной абонентской платы за тариф нет, зато есть ежедневная плата в 4,45 ? за входящие в тариф опции. Стоимость звонков в Турцию составляет 6 ? в минуту. К сожалению, информации по другим из пяти туристических стран нет. На странице тарифа по ссылке:

http://moskva.beeline.ru/customers/products/mobile/tariffs/details/dobro-pozhalovat/

Рисунок 10. Скриншот области со страницы тарифа Билайн «Добро пожаловать»

Переход, на который перенаправляет на адрес:

http://moskva.beeline.ru/customers/products/mobile/roaming/roaming-new/

В интерфейсе страницы, содержит три гиперссылки.

Рисунок 11. Интерфейс страницы «Роуминг, междугородная и международная связь»

«Роуминг в путешествиях по миру», «Роуминг в путешествиях по России» и «Звонки из дома в другие города и страны». Очевидно, что цены на звонки в другие страны должны быть по третьей гиперссылке. Страница по этой ссылке предоставляет интерфейс для запроса к серверу Билайн за информацией.

Рисунок 12. Скриншот со страницы «Звонки из дома в другие города и страны» после запроса «Кипр» при тарифе «Добро пожаловать»

Если проверить цену, например, на Кипр, то вместо цен на Кипр будут указаны общие условия тарифа. Отдельных условий для Кипра указанно не будет. В пункте «Звонки в остальные страны» указана гиперссылка под названием «Согласно тарифам на международную связь» с адресом:

http://moskva.beeline.ru/customers/products/mobile/roaming/

По которой данной информации нет, как было показано ранее.

Сложно сделать вывод, умышленно ли скрыта информация, или это ошибка проектирования интерфейса. На данный момент вменяемых разъяснений от представителей Билайн я не получил, поэтому считаю невозможным сравнивать тарифы Билайн при отсутствии официальной информации.

Мегафон для звонков в другие страны предлагает опцию «Звони во все страны» За первые 30 дней взимается плата 60 ?, потом ежедневная плата 2 ? в день. Звонки в Италию, Испанию, Кипр и Грецию стоят 6 ? в минуту, а в Турцию 8 ? в минуту.

Тарифы для мигрантов

В тарифах для мигрантов рассмотрены цены на страны СНГ и ближайшего зарубежья.

МТС в опции «Выгодные международные звонки» предоставляет звонки в СНГ (кроме Азербайджана и Белоруссии) по цене 15 ? в минуту и в Азербайджан и Белоруссию по цене 20 ? в минуту.

У Билайн в тарифе «Добро пожаловать» имеются специальные условия для Таджикистана. Для звонков на номера Билайн 1 минута - 7 ?, последующие минуты по 1 ?. Для звонков на номера Билайн Армении, Казахстана, Кыргызстана и на номера Киевстар Украины - 2,5 ? в минуту. Для звонков на другие номера Таджикистана, Армении, Украины, Казахстана, Кыргызстана, а также любые номера Туркменистана - 7 ? в минуту. Звонок в Азербайджан и Беларусь стоит 13 ? в минуту. На номера Узбекистана Билайн - 3 ? в минуту, остальные 4 ? в минуту.

В опции «Звони во все страны» звонки от Мегафон в Азербайджан и Беларусь стоят 15 ? в минуту, в Украину - 10 ? в минуту, Армению, Казахстан и Кыргызстан - 8 ? в минуту, в Таджикистан и Туркменистан - 6 ? в минуту, в Узбекистан - 5 ? в минуту. Также у Мегафон есть специальная опция «Таджикистан+» для Таджикистана. Первая минута разговора стоит 7 ?, до 20 минуты минута стоит 1 ?, а с 21 минуты стоит 7 ?.

Тарифы для бизнесменов

Бизнесмен может иметь потребность общаться с любой из стран. Целью данного обзора сравнить уровень цен для разных тарифов, а не создать полное сравнение цен по всем странам, поэтому выбрано 5 стран, куда мог бы позвонить бизнесмен.

3. Германия

5. Великобритания

МТС в опции «Выгодные международные звонки» предоставляет звонки в Китай по 1,5 ? в минуту, США по 5 ? в минуту, Германию и Великобританию по 10 ? в минуту, в Японию по 25 ? в минуту.

Тариф «Добро пожаловать» у Билайн предлагает звонки в Китай по 2 ? в минуту.

Мегафон в опции «Звони во все страны» предоставляет звонки в Китай по 1 ? в минуту, США по 4 ? в минуту, Германию по 6 ? в минуту, Великобританию по 11 ? в минуту, в Японию по 9 ? в минуту.

Вывод

По рассмотренным туристическим направлениям самым выгодным является опция от Мегафон «Звони во все страны». Данных по Билайн недостаточно.

По рассмотренным направлениям для мигрантов цены у Билайн и Мегафон конкурируют, МТС стоит дороже всех.

По рассмотренным направлениям для бизнесменов цены у МТС и Мегафон конкурируют, данных по Билайн недостаточно.

Роуминг

Многие операторы предоставляют услуги роуминга, когда есть возможность выходить с SIM-картой своего оператора в сеть другого оператора. Существует междугородний и международный роуминг. Междугородний роуминг может быть нужен, если абонент едет в поезде. У такого абонента может быстро менять положение на карте, поэтому он не может приобретать для каждого пункта, через который едет, местную SIM-карту у местного оператора.

Международный роуминг обычно более дорогой, чем междугородний.

Для международного роуминга МТС предлагает услугу «Ноль без границ». Абонентская плата за эту услугу составляет 60 ? в день. Для некоторых направлений входящие вызовы первые 10 минут могут быть бесплатны, но после израсходования лимита в 200 минут на месяц, каждая входящая минута будет стоить по 25 ? в минуту.

Для Греции, Германии и Турции выгоднее будет использовать услугу «Свободное путешествие». Абонентская плата составляет 100 ? в день. Услуга предлагает 60 минут в день для входящих и исходящих на российские номера.

Таблица 9. Цена на «Ноль без границ» по туристическим направлениям

Скорее всего, мигрантам не составит труда обзавестись местными тарифами, поэтому данное направление отдельно по странам СНГ рассматриваться не будет.

Для бизнесменов важно быть всегда на связи, на одном номере, поэтому они вряд ли согласятся менять SIM-карту на местную.

Рисунок 13. Цена на «Ноль без границ» по бизнес направлению

Германия

Великобритания

Входящие звонки (первые 10 минут), рублей в минуту

Входящие звонки (с 11 минуты), рублей в минуту

Исходящие звонки на российские номера(1 минута и начиная с 6 минуты), рублей в минуту

Исходящие звонки на российские номера (со 2 по 5 минуту), рублей в минуту

Исходящие звонки на номера страны пребывания, рублей в минуту

Исходящие звонки на номера остальных стран, рублей в минуту

Для международного роуминга Билайн предоставляет услугу «Моя планета». Стоимость подключения услуги 25 ?. По всем туристическим направлениям входящие звонки стоят 15 ? в минуту, исходящие в любые страны и внутри страны пребывания 25 ? в минуту. Такие же цены для ближайшего зарубежья и указанных ранее направлений для бизнеса, за исключением Японии, для которой входящие 19 ? в минуту, а исходящие 49 в минуту.

Для международного роуминга Мегафон предоставляет две опции: «Весь мир» и «Вокруг света». «Весь мир» предлагает 30 минут в день бесплатных входящих вызовов при абонентской плате 39 ? в стуки. «Вокруг света» подключается за 15 ? и имеет ежедневную абонентскую плату в 9 ?. Входящие и исходящие вызовы по Европе и СНГ, Турции, Абхазии и Южной Осетии стоят 6 ? за минуту, для Японии 9 ? за минуту, для США и Китая 36 ? за минуту. Для звонков в Россию Мегафон использует Callback.

Вывод

Международный роуминг в отличие от других тарифов может иметь платный входящий вызов, цены могут достигать 200 ? за минуту.

Обзор рынка VoIP связи

Помимо операторов сотовой связи существуют операторы, предоставляющие услуги Voice over IP (VoIP) телефонии. Основным отличием данной связи является использование сети интернет для соединения абонентов. Некоторые фирмы предлагают различные VoIP услуги, часто связь двух или более абонентов одной VoIP компании через интернет являются бесплатными. Такие услуги предоставляются продуктами Skype, Hangouts, Viber.

VoIP может связывать не только через сеть интернет, но и через сотовую сеть. Для этого используются GSM-VoIP шлюзы. Для VoIP-сервера можно настроить Least Cost Routing - автоматический выбор маршрута для звонка в зависимости от номера. Сервер сам выбирает наивыгодный тариф для выхода в сеть, в связи с чем, стоимость на связь падает.

Цены на VoIP могут зависеть от курса валюты или указываться в другой валюте, для сравнения все цены будут переведены в рубли по курсу на 26.05.2015 указанные на сайте Центрального банка Российской .Курс на данную дату:

Таблица 10. Курс валют на 26.05.2015

Skype предлагает следующие тарифы для звонков на номера сотовых телефонов Кипра:

Таблица 12. Цены Skype на звонки в Кипр

Skype предлагает следующие тарифы для звонков на номера сотовых телефонов Турции:

Таблица 13. Цены Skype на звонки в Турцию

Skype предлагает следующие тарифы для звонков на номера сотовых телефонов и стационарных телефонов в США:

Таблица 14. Цены skype на звонки в США

Skype предлагает следующие тарифы для звонков на номера сотовых телефонов в Японию:

Таблица 15. Цены skype на звонки в Японию

Skype предлагает следующие тарифы для звонков на номера сотовых телефонов и стационарных телефонов в Китай:

Таблица 16. Цены skype на звонки в Китай

По рассмотренным тарифам на Skype можно заключить, что они могут быть выгоднее, чем схожие тарифы у тройки лидеров сотовой связи.

Viber

Viber Out предлагает следующие расценки:

Таблица 17. Расценки на Viber Out

VoIP сервер можно поставить на обычном компьютере, поэтому VoIP решения часто используются внутри фирм для связи с клиентами или для внутрисетевом общение. Данную связь может контролировать системный администратор. Он может сам настроить защищённость связи и запись разговоров. Для сервера можно настроить DISA, чтобы звонящие клиенты могли в режиме DTMF вводить команды, которые примет виртуальная АТС. Также для такого сервера можно настроить шлюз, который позволит звонить и принимать сотовый сигнал.

Вывод

Использование VoIP может сократить расходы на связь, особенно там, где есть бесплатный и стабильный интернет. С VoIP можно не заботиться о роуминге. Тарифы на VoIP не такие сложные, как у сотовых операторов.

Обзор функции телефонии callback

На практике, интернет связь имеет ограниченную зону покрытия, а сама услуга по предоставлению интернета стоит денег. При этом цены на VoIP остаются привлекательными.

Если связь по сети интернет есть, но она нестабильная, то на помощь приходит услуга Callback. На сервер VoIP отправляется номер, куда абонент желает позвонить, а сервер уже перезванивает абоненту по каналу сотовой связи, после этого начинает дозваниваться до другого абонента и соединяет этих двух абонентов. В случае если нет возможности использовать интернет, можно отправить SMS на номер VoIP сервера с номером абонента «B», которому звонит абонент «A». Существуют также SIM-карты, в которые вшиты нужные параметры для Callback телефонии. Эти операторы экономят денежные средства, используя VoIP, поэтому их тарифы дешевле.

Такие услуги предоставляет МТС . К номеру абонента добавляется код *137*, а в конец #. После отправки запроса идёт входящий звонок, если на него ответить, то начнётся соединение с отправленным в запросе абонентом. Стоимость обратного звонка зависит от страны пребывания абонента.

Мегафон также предоставляет такие услуги: обратный вызов может произойти при обычном наборе номера, если подключена услуга «Вокруг Света» .

Существует ещё один способ передать серверу номер абонента «B» от абонента «A» - с помощью DTMF сигнала. Данный способ хорош тем, что любой современный телефон умеет генерировать DTMF сигналы, а входящий вызов у многих операторов является бесплатным.

Так как любой телефон с операционной системой Android умеет генерировать DTMF сигналы, то этот способ является самым универсальным, он требует минимального подключения дополнительных услуг и не требует наличия SIM-карты. Именно такой способ могут использовать владельцы собственных VoIP серверов для связи абонентов.

Анализ программ, функционал которых может быть использован для облегчения использования функции Callback

Прямую реализацию приложений для DTMF Callback без привязки к оператору сложно найти.

Cуществуют реализации функций, которые могут быть полезны при использование DTMF Callback.

Одной из таких реализаций чаще всего называют префиксер. Эти программы отлавливают входящий или исходящий вызов и прибавляют к нему так называемый prefix или suffix, то есть дополняют номер телефона до номера или после, получается такой вид номера: prefix xxxxxxxxx suffix , где x - любой символ номера.

Задачей этих программ в реализации Callback будет добавлять DTMF сигнал после определённого события.

Prefixer

Наиболее приближённый к решению данной задачи является Prefixer от компании 253°Below . Данная программа содержит правила, в которых можно настроить:

c. Расписание работы программы

d. Номер, который запишется в журнал вызовов

e. Номера, на которых будет работать правило

Как следует из интерфейса программы, правила можно настроить как для входящих, так и для исходящих звонков. То есть программа должна добавлять номер, когда пришёл входящий вызов. В теории, если послать в suffix “,” для паузы или “;” для ожидания гудка, то можно послать в DISA номер.

Рисунок 14. Скриншот prefixer" а

Для исходящих звонков программа действительно добавляет prefix и suffix, но вот для входящих, вопреки настроенным правилам, она ничего не добавляет. То есть её на практике невозможно использовать для DTMF Callback связи, но зато можно использовать для реализации Callback от МТС.

Существует способ набрать на клавиатуре определённый символ или группу символов. Чаще всего программы с таким функционалом используются для расширения функций клавиатуры или интерфейса управления Android. Чтобы абонент не вводил полностью весь номер по памяти, когда ему перезвонил сервер Callback, он может воспользоваться эмуляцией нажатия номера. В данном случае телефон пошлёт DTMF сигналы, будто бы пользователь их вводил сам. Существует достаточно большое количество программ с данным функционалом.

Gamekeyboard

Для тестирования такой возможности была использованная Gamekeyboard от компании Locnet . Для использования программы нужны root права. Данная программа содержит макросы, в которые можно записать какие символы будут вводиться с каким промежутком. Можно настроить размер и положение на экране виртуальной кнопки, которая будет активировать макрос. С телефона создавать макрос для этой программы достаточно тяжело, поэтому область её применения ограничивается небольшим количеством любимых номеров. Данная программа поддерживает профили, поэтому теоретически можно разработать приложение, которое создаст макрос для набранного номера и свяжет с кнопкой. Данное решение позволит абоненту не хранить в памяти номер абонента и не набирать весь номер целиком. Однако дополнительные действия от пользователя всё равно требуются.

Root права - права на доступ ко всем функциям UNIX систем. Так как Android является UNIX-подобной операционной системой, в ней тоже предусмотрены root права, однако производители телефонов часто ограничивают доступ к ним. Производитель может программное усложнить получение root прав, сделать запрет на перепрошивку. Производитель может сам дать инструмент для получения root прав, но при отказе от гарантий пользователем, который получил root права. Несмотря на это, бывает, что единственный способ реализовать какой-то функционал - это иметь доступ root.

Вывод

Большинство решений для DTMF Callback завязано на использование конкретного оператора. При наличии программных средств, упрощающих использование DTMF Callback, нет комплексного решения, которое нацелено конкретно на решение данной задачи. Владельцам собственных серверов по предоставлению VoIP связи выгодно пользоваться DTMF способом.

Технологическая часть

Анализ средств разработки под Android

Основным языком для написания пользовательских приложений под Android является Java . Интерфейс программирования (API) для работы с функциями Android подразумевает использование Java. Для создания приложений, написанных на Java под Android, используются Build Tools из Android Software Sevelopment Kit (SDK). Существует способ написания приложений на C/C++ для обеспечения более высокой скорости работы приложений . Для этого используется Native Development Kit. Существует решение для разработки под C# под названием Xamarin , которое позволяет создавать кроссплатформенные приложения. Для разработки на Python под Android можно использовать одно из нескольких решений указанных в таблице:

Таблица 18. Сравнение реализаций python под Android

Python for Android

Android scripting

Python on a chip

Фреймворк kivy позволяет создавать кроссплатформенные приложения. Его можно связать с python for Android. Тогда становится возможным написание кроссплатформенных приложений, которые будут запускаться на Android. Также существует способ использовать обёртку для вызова Java классов из Android API под названием PyJNIus .

Такие решения как kivy или Xamarin имеют преимущества, если приложение разрабатывается не только под Android, но и под другие платформы. Однако при использовании специфичных Android-функций нужно использовать Android API. Преимущества для поставленной задачи это не даёт, так как в Android своя специфика с работой телефонных функций.

Средства для разработки под Android - SDK Tools

Основной инструментарий для разработки под Android входит в пакет инструментов - SDK Tools. В этот пакет входят инструменты для работы с виртуальными устройствами. Android Virtual Device Manager (AVD) предназначены для работы и настройки эмуляторов. Для того чтобы создать эмулятор используется образ системы. Такие образы можно скачать в графическом или консольном интерфейсе программы Android SDK Manager. В интерфейсе Android SDK Manager для одной версии Android можно выбрать несколько образов, которые будут эмулировать разные устройства.

Рисунок 15. Скриншот графического интерфейса Android SDK Manager

Одним из важных инструментов является Android Debug Bridge (adb), программа, предназначенная для отладки устройств на Android. Adb запускается из командной строки и управляется через консольный интерфейс. Adb работает с разными подключёнными устройствами к компьютеру:

· Устройства, подключённые по USB

· Устройства, подключённые по Wifi

· Эмулируемые устройства

Adb позволяет:

· устанавливать или удалять приложения с устройства

· работать с командной оболочкой устройства

· работать с packet manager

· запускать Intent

· работать с LogCat

В SDK входит большой набор инструментов, которые так или иначе интегрированы в среды разработки, например Build Tools входят в Eclipse или Android Studio.

Среда интегрированной разработки Android Studio

На данный момент, официальной средой интегрированной разработки (IDE) для Android является Android Studio . Данная IDE базируется на IntelliJ IDEA от JetBrains и включает в себя ряд функций:

· Скрипты Gradle для сборки apk

· Сборка вариантов и генерация множества apk

· Шаблоны кода

· Редактор слоёв (layouts)

· подпись приложений

· Встроенная поддержка Google Cloud Platform и возможность интеграции Google Cloud Messaging and App Engine

Android Studio позволяет параллельно устанавливать собранные приложения на несколько устройств подключённых по adb.

Android Studio поддерживает работу с системами контроля версий.

Редактор исходного кода в Android Studio обладает рядом функций, которые упрощают разработку:

· автозавершение слов

· подсказка об ошибках в коде

· подсветка синтаксиса java и xml файлов

· автоматический импорт из библиотеки Android, если используется класс из неё

· выделение серым цветом переменных, которые не были использованы

· комментирование строк кода

· прыжки по разным файлам проекта в поисках выделенного слова

Android Studio является мощным инструментом, который рекомендуется использовать при разработке под Android, поэтому было принято решение использовать её в разработке.

телефония callback android программирование

Обзор языка программирования Python

Python является языком высокого уровня, который сочетает в себе несколько парадигм программирования, такие как:

· Объектное ориентированное программирование. В python всё является объектами: строки, классы, числа и т.д. Если, допустим, взять число «1» и сложить с ним число «2»:

то на самом деле будет вызван метод __add__ у объекта 1, который получит тип Integer, поэтому следующая запись даст такой же результат:

· Динамическая типизация. Тип задаётся автоматически во время выполнения программы . Плюсом данного вида типизации является лёгкость написания программ и быстрое освоение программистом данного метода. В python можно самому указать тип. С помощью функции «type» можно узнать тип объекта. С помощью функции «int» и «float» можно изменить тип. Так можно число 1 представить строкой со значением 1 или числом с плавающей запятой. Пример:

>>> b = str(1)

>>> c = float(1)

Если проверить тип переменных, то у «a» будет «int», у «b» будет «str», а у «c» будет «float»

>>> print type(a)

>>> print type(b)

>>> print type(c)

· Строгая типизация. Python принято относить к строго типизированным объектным языкам.

· Функциональное программирование. В python можно использовать рекурсии, ленивые вычисления и функции высших порядков

· Императивное программирование. Python поддерживает процедурный метод программирования, в python можно использовать модули.

Python считается достаточно простым языком, он является самым популярным языком для изучения в колледжах США .

Код на python выполняется построчно, поэтому часто ошибку в коде можно заметить только после выполнения этой строчки. Программы, созданные с помощью python for android, запускаются достаточно долго.

Для запуска такого приложения, техническим средством должно быть устройство связи со следующими характеристиками:

· На устройстве во внутренней памяти должно быть 10мб свободной памяти для установки приложения и хранения его данных.

· Устройство должно иметь следующее ПО:

a. Android 2.2 и выше

b. OpenGL ES 2.0

Требования к внутренней памяти обусловлены тем, что установленное приложение будет в себе содержать python for android и kivy. Для работы python for android необходим OpenGL ES 2.0, который есть в Android, начиная с версии 2.2.

Обзор языка программирования Java

Java является объектно-ориентированным языком программирования. С помощью компилятора исходный код на Java превращается в байт код, который содержит в себе набор инструкция для Java машины. Такой подход даёт независимость от платформы. В случае разработки под Android Java машиной является Dalvik. Использование такой машины может сильно снижать производительность.

Концепция Java в плане объектной ориентации схожа с python: «В Java есть специальный суперкласс Object и все классы являются его подклассами. Поэтому ссылочная переменная класса Object может ссылаться на объект любого другого класса» .

Java имеет гибкую систему разграничения доступа, которая задаётся модификаторами класса private, public, protected или отсутствием модификатора:

Таблица 19. Модификаторы и доступ в Java

Разработка интерфейса для упрощённого использования функции телефонии Callback

Наиболее простым интерфейсом для пользователя является стандартный интерфейс его системы. Алгоритм звонка при использовании функции Callback не должен отличаться от обычного алгоритма инициализации звонка.

Интерфейс такой программы должен помогать реализовать следующие функции:

1. Callback

o Запуск приложения при инициализации звонка из контактной книги(Contacts)

o Инициализация звонка на сервер телефонии

o Приём звонка от сервера телефонии

o Определение того, что установлен канал связи

o Анализ DTMF сигналов от сервера

o Передача DTMF сигнала во время звонка

2. Работа с историей

o Возможность удалять информацию из системного журнала истории вызовов

o Возможность добавлять информацию в системный журнал истории вызовов

3. Настройки

o Включить/выключить профиль

o Возможность выбрать профиль

o Возможность настроить профиль

o Возможность добавить профиль

o Возможность удалить профиль

4. Профили

o Возможность изменять номер сервера

o Возможность задать белый список номеров сервера

o Возможность указать время ожидания обратного звонка от сервера

o Возможность указать интервал между отправляемым сигналом DTMF

Алгоритм приложения с такими функциями следующий:

Пользователь первый раз открывает приложение и создаёт профиль. В профиле пользователь указывает номер сервера телефонии. В белый список пользователь заносит те номера, с которых ему будет перезванивать сервер телефонии. Время ожидания пользователь указывает в настройках. В случае отсутствия перезвона от сервера, пользователь сможет, не выключая приложения вручную, дальше пользоваться телефонией.

После настройки приложения пользователь может вызвать абонента из контактной книги. В это время появится меню выбора приложения, с помощью которого можно звонить. Если пользователь выберет DTMF Callback, то номер контакта будет сохранён приложением, а само приложение инициализирует вызов с сервером. Когда сервер разорвёт связь и перезвонит, приложение ответит на звонок и наберёт в тональном наборе сохранённый номер, после этого пользователю нужно будет дождаться соединения с вызываемым абонентом.

После окончания разговора в журнале вызовов должен остаться номер абонента, которому звонил пользователь. Подсчёт времени разговора должен начинаться с момента дозвона.

Разработка прототипа, который демонстрирует возможности по упрощению использования функции Callback

Исходя их реальных возможностей и нулевого опыта разработки под Android, были разработаны минимальные требования к прототипу:

1. Прототип должен запускаться на всех современных устройствах под Android начиная от Android 2.1 и заканчивая Android 5.1

2. Прототип должен упросить набор номера абонента, когда перезвонит сервер телефонии

3. При звонке на номер абонента через прототип звонок должен инициироваться на номер сервера телефонии и одновременно запоминать номер, куда звонил абонент

Инициализация вызова на указанный номер

Первым этапом разработки стало написание приложения, которое может осуществлять вызов на прописанный в коде приложения номер. Данный метод, когда значения переменных жёстко задаются в коде, а не берутся из внешних источников, называется hard coding. Такой метод применяется специально для быстрого тестирования приложения, чтобы каждый раз не набирать номер.

Было принято решение писать на языке программирования python, так как у меня имеется опыт написания на этом языке . Для реализации понадобилось подключить Java класс android.intent.action.CALL из API Android. Целью данного приложения является тестирование возможности вызова любого абонента приложением. Данная функция нужна, чтобы после вызова абонентом «A» на номер абонента «B» начался звонок на номер сервера телефонии. После реализации этой функции стало ясно, что, несмотря на мой опыт, написание приложений под python всплывает множество неочевидных проблем, а в результате готовое приложение слишком долго загружается, что достаточно критично для телефонии. Также стало очевидно, что понимать API без знания языка программирования Java будет очень тяжело. Так как всё равно требовалось понимание языка программирования Java, а итоговый результат на Java давал преимущества, было принято решение переписать функцию под Java, используя Android Studio. Вот код итоговой функции под Java:

public void Call(View view) {

mNumberTextView.setText("Вызов на " + tel.getText() + " Инициализрован");

String toDial = "tel:" + tel.getText().toString();

startActivity(new Intent(Intent.ACTION_CALL, Uri.parse(toDial)));

Приём номера из контактной книги

Для того чтобы android-приложение было вызвано из другого приложения можно использовать явные и неявные Намерения(Intent). В явном Намерении указывается, какой класс оно должно вызвать:

Intent intent_about = new Intent(MainActivity.this, AboutActivity.class);

startActivity(intent_about);

Активность AboutActivity.class прописана в Android.Manifest.xml, поэтому система знает какую активность надо запустить.

В неявном Намерении вместо класса, который надо запустить указывается действие, на которое должна среагировать система. В стандартной контактной книге(Contacts) в android, при вызове из неё происходит действие ACTION_CALL_PRIVELEGED. В это действие передаётся номер «tel:». Например, мы можем с помощью adb позвонить этим действием, написав:

adb -e shell am start -a android.intent.action.CALL_PRIVILEGED -d tel:911

Где 100 - это номер, куда позвонит телефон. Если прописать команду

adb shell am start -a android.intent.action.CALL -d tel:911

При этом звонка не будет, так как не будет привилегий позвонить на такой номер. В зависимости от надобности, разные приложения могут использовать различные действия. Если экстренных вызовов не предполагается, то будет использоваться именно ACTION_CALL. Это более частый случай для вызовов из браузера или приложения с контактным номером.

На некоторых прошивках в качестве контактной книги может использоваться альтернативное приложение. Сам исходный код данного приложения может быть закрытым. Если в таких приложениях звонок инициируется как-то иначе, то угадать, через какой Intent инициируется звонок, может быть тяжело. В таком случае можно поставить альтернативную контактную книгу из Google Play или других доверенных источников.

Чтобы программа перехватила неявное Намерение надо в AndroidManifest.xml добавить intent-filter:

Так как из контактной книги нужно взять только номер в scheme указывается «tel».

Теперь операционная система Android будет предлагать каждый раз вызвать приложение, когда будет вызываться Намерение ACTION_CALL или ACTION_CALL_PRIVILEGED.

Чтобы приложение могло использовать номер, который был в «tel» надо в нужном нам классе воспользоваться методом getData():

Плавающее окошко с кнопкой

Существует библиотека под названием StandOut с помощью, которой можно создать плавающее окно . Библиотека имеем открытый исходный код и примеры . Данная библиотека распространяется под свободной лицензией MIT . Данная лицензия позволяет свободно распространять программное обеспечение, которое содержит эту библиотек. Библиотека поставляется как есть, ответственность за вред, который она может нанести, авторы не несут.

Особенности данной библиотеки:

· Предоставление своего собственного VIEW. Лёгкая интеграция.

· Декораторы плавающих окон:

1. заголовок плавающего окна

2. кнопка, которая сворачивает плавающее окно

3. кнопка, которая закрывает плавающее окно

4. кнопка для изменения размеров окна

· Свёрнутое окно можно восстановить

· Создание окон разных типов

· Окна можно перемещать

При тестировании примеров из данной библиотеки было обнаружено, что плавающие окна могут находиться поверх всех окон, в том числе и во время звонка. Данную особенность можно использовать, чтобы создать кнопку, которая будет набирать нужный номер в dialer во время звонка.

Для того чтобы создать окно надо написать класс, который будет расширением класса StandOutWindow:

public class FloatingButton extends StandOutWindow {

public void createAndAttachView(int id, FrameLayout frame) {

LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);

View view = inflater.inflate(R.layout.floating_button, frame, true);

А в res/layouts слой с описанием интерфейса этого окна floating_button.xml.

Кнопка для плавающего окна

Подобные документы

    Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.

    курсовая работа , добавлен 18.01.2017

    Обзор мобильной ОС Android. Выбор инструментов и технологий. Проектирование прототипа графического интерфейса. Характеристика и описание пользовательского интерфейса. Проектирование и разработка базы данных. Определение списка необходимых разрешений.

    курсовая работа , добавлен 13.09.2017

    Обзор существующих популярных программ для просмотра погоды на ОС Android. Операционные системы современных смартфонов. Ключевые особенности Android, технология Java. Разработка программной части, выбор языка, описание алгоритма, ее логической структуры.

    курсовая работа , добавлен 16.04.2014

    Реализация телефонной связи по IP-сети с помощью набора протоколов и оборудования. Разработка подсистемы динамической маршрутизации звонков для системы биллинга и менеджмента в сети IP-телефонии. Основные требования к графическому интерфейсу пользователя.

    дипломная работа , добавлен 08.11.2015

    Разработка приложений для смартфонов на ОС Android для сети аптек "Фармация". Архитектура операционной системы Android. Архитектура и реализация приложения. Его функциональность. Описание работы мобильного приложения. Расчет затрат на создание продукта.

    дипломная работа , добавлен 17.06.2017

    Характеристика работы операционной системы Android, используемой для мобильных телефонов. Создание Android проекта в среда разработки Eclipse. Общая структура и функции файла манифест. Компоненты Android приложения. Способы осуществления разметки.

    курсовая работа , добавлен 15.11.2012

    Общая схема работы приложения Android. Разработка обучающего приложения для операционной системы Android, назначение которого - развитие речи посредством произнесения скороговорок. Описание компонентов разработанного приложения, его тестирование.

    дипломная работа , добавлен 04.02.2016

    Основные понятия IP телефонии и виды строения сетей IP телефонии. Голосовые шлюзы Cisco Systems для IP-телефонии. IP IVR как средство автоматического ответа на вызовы. Преимущества построения распределенного Контакт Центра, архитектура его построения.

    дипломная работа , добавлен 21.04.2016

    Общие характеристики операционной системы Android. Разработка приложения на основе создания менеджера файлов. Получение с помощью приложения доступа к файлам, хранящимся в "облачном хранилище" в сети Интернет. Расчет стоимости программного обеспечения.

    дипломная работа , добавлен 03.04.2015

    Разработка программного обеспечения для платформы Android версии 2.3: информационное приложения для поклонников футбольной команды, с возможностью просмотра событий, статистики и иной информации о команде и ее успехах. Листинг JsonDataManager.java.

DTMF (Dual-Tone MultiFrequency) - это тональный сигнал, генерируемый при нажатии на кнопки телефона.
DTMF широко применяется в работе автоответчиков (IVR), для различных интерактивных систем. В приложении к VoIP, при работе с различными кодеками DTMF требует довольно пристального внимания, поэтому его работу нужно четко понимать.

По умолчанию Gateway отсылает DTMF в потоке RTP (in-band ), это прекрасно работает при использовании кодека high-bit-rate G.711, т.е. если голосовой поток не подвергается сжатию.
Основная проблема с DTMF возникает при использовании алгоритмов сжатия, например кодека G.729. Дело в том, что при сжатии качество голового потока заметно ухудшается, и хотя это почти не сказывается на способности абонентов понимать друг друга, DTMF тон уже не достаточно четкий и воспринимается неправильно.

Данная проблема решается с помощью DTMF Relay , при котором сигналы DTMF транспортируются отдельно от потока RTP или out-of-band .

Рассмотрим несколько примеров.


На рисунке изображена схема подключения телефонии через шлюз H.323.

На участке PSTN DTMF отдается in-band, т.е. там даже нет понятия DTMF Relay, поскольку это аналоговая линия.

DTMF relay становится нужным только на участке VoIP, где возможно применения методов компрессии.
Также можно сказать, что:
- in-band DTMF relay будет идти внутри потока RTP, т.е. на рисунке по красной линии RTP.
- out-of-band DTMF relay будет идти вместе с сигнализацией, т.е. по зеленым линиям на рисунке.

На участках телефон-CUCM и CUCM-H.323Gateway используется разная сигнализация, и значит различные методы DTMF relay. Со стороны телефона приходит SCCP messages, содержащие DTMF в своей кодировке, со стороны H.323 gateway сигнализация вместе с DTMF идет H.245 messages.
CUCM в нашем случае выступает как DTMF Forwarder между различными типами сигнализаций.

На участке телефон-CUCM у нас будет возможна только out-of-band , поскольку SCCP-шный телефон не поддерживает in-band .
На участке CUCM-H.323Gateway возможны методы как in-band , так и out-of-band . При этом в случае SCCP-шного телефона, для включения in-band потребуется использование MTP .

Также нужно понимать, что настройки DTMF для H.323 Trunk - это есть настройки для работы этого транка с Dial-peer на физическом H.323 Gateway.

В зависимости от протокола сигнализации (H.323, SIP, MGCP, SCCP), существуют различные методы для осуществления DTMF Relay. В любом случае, Call Manager CUCM изначально пытается некоциировать общий для всех метод. Если ощий метод найден не был, предпринимается попытка использовать MTP.

H.323 DTMF Support

Cisco Gateways поддерживает следующие методы DTMF Relay:

  • Cisco proprietary: - in-band DTMF relay. DTMF отсылается в том же потоке RTP как и голос, но тоны DTMF кодируются несколько иначе, что позволяет их успешно отличать и принимать на той стороне. Семплы DTMF идентифицируются как RTP payload type 121 . Метод работает только если на обоих сторонах оборудование Cisco, а также тот же метод
  • H.245 Alphanumeric: -Out-of-band DTMF relay. Отделяет DTMF от потока RTP и шлет их через H.245 User Input Indication messages . При этом методе не отсылается tone length : всегда считается что длина тона 500msec.
    В этом примере мы нажали на "5".

    Дебаг: debug h245 asn1

  • H.245 Signal: -Out-of-band DTMF relay. Этот метод способен отсылать длину тона (tone length ).

    Дебаг: debug h245 asn1

  • NTE: - in-band DTMF relay. Работает подобно Cisco proprietary, DTMF отсылается в том же потоке RTP как и голос, с использованием RTP payload type . Другая payload не позволяет сэмплы DTMF подвергать сжатию. В отличие от Cisco proprietary , NTE использует стандарт RFC 2833.

    Дебаг: debug h245 asn1

На маршрутизаторе Cisco доступны следующие команды:

Router(config-dial-peer)#dtmf-relay ? cisco-rtp Cisco Proprietary RTP h245-alphanumeric DTMF Relay via H245 Alphanumeric IE h245-signal DTMF Relay via H245 Signal IE rtp-nte RTP Named Telephone Event RFC 2833 router(config-dial-peer)#

Лучшая практика:
На диалпире лучше всего давать команды следующим образом:

Dial-peer voice 3000 voip description Long calls destination-pattern ... session target ipv4:192.168.0.11 dtmf-relay h245-signal h245-alphanumeric cisco-rtp rtp-nte codec g711ulaw no vad

В этом случае обе стороны могут негоциировать подходящий метод dtmf-relay между собой.

Для определения выбранного DTMF relay method:
show call active voice

Router#show call active voice ........... PeerAddress=5001 ........... tx_DtmfRelay=rtp-nte

Таким образом, CUCM автоматически проверяет какой метод DTMF подойдет обоим сторонам.
Касательно H.323 Gateway в CUCM, там настроек DTMF нет. CUCM принимает настройку другой стороны.

MGCP DTMF Support

Для MGCP доступны следующие методы DTMF Relay:

  • Cisco proprietary: DTMF отсылается в том же потоке RTP как и голос, но тоны DTMF кодируются несколько иначе, что позволяет их успешно отличать и принимать на той стороне. Семплы DTMF идентифицируются как RTP payload type 121 . Метод работает только если на обоих сторонах оборудование Cisco и выбран аналогичный метод (ничего не негоциируется).
  • NSE: NSE - это по сути Cisco Proprietary NTE. Метод работает только если на обоих сторонах оборудование Cisco и выбран аналогичный метод (ничего не негоциируется).
  • NTE: в свою очередь может работать в двух режимах:
    - Gateway-controlled mode (NTE GW): Gateways договариваются друг с другом о DTMF самостоятельно, обмениваясь capability information в SDP messages. Этот процесс прозрачен для Call Agent. При этом у обоих шлюзов запущен MGCP и оба они подключены к одинаковому CUCM.
    - Call agent–controlled mode (NTE CA): В негоциации используется Call Agent, т.е. выступает от имени MGCP-шлюза (сообщения SDP отсылаются на Агента). Данная mode может быть использована в случае когда второй шлюз не является MGCP-Gateway. После негоциации Call Agent инструктирует шлюз, о принятых с другой стороной RTP-NTE values.
  • Out-of-band: Тоны отсылаются на CUCM с использованием сообщений MGCP, т.е. вне потока RTP (Out-of-band). CUCM в свою очередь принимает DTMF и передает другой стороне.

MGCP использует DTMF relay только для low-rate codecs (G729, iLBC, GSM, etc). Для bit-rate codecs G711 DTMF будет отослано in-band .

В случае с MGCP мы можем выбрать будут ли настройки DTMF диктоваться Call Agent-ом (CUCM) или же будут использованы те что выставлены на Gateway.
Зайдем на CUCM: Device > Gateway , выбираем соответствующий MGCP Gateway.
Нас интересует раздел Type of DTMF Relay .

При выборе Current GW Config , будет использована настройка которая стоит на шлюзе.
На IOS Gateway мы можем выставить DTMF следующей командой:

Router(config)#mgcp dtmf-relay voip codec all mode ? cisco Set mgcp dtmf-relay mode to be cisco disabled Set mgcp dtmf-relay mode to be disabled nse Set mgcp dtmf-relay mode to be nse nte-ca Set mgcp dtmf-relay mode to be nte-ca nte-gw Set mgcp dtmf-relay mode to be nte-gw out-of-band Set mgcp dtmf-relay mode to be out-of-band

Если мы выставим на CUCM другой выбор, например cisco , соответствующая вышеприведенная команды будет введена автоматом (механизмами MGCP).

С MGCP был замечен баг:

CSCta69407 Bug Details (When using any type of inband DTMF signaling (RTP-NTE, NSE, or Cisco Proprietary) DSP"s aren"t turning off OOB dtmf signaling using mgcp packets. There fore duplicate digits will be seen on the terminating GW as one coming from rtp and other coming from CUCM)

Workaround: Use mgcp dtmf-relay type out-of-band.

SIP DTMF Support

По умолчанию SIP отсылает DTMF in-band , но мы можем использовать следующие опции:

  • RTP-NTE (NTE или RFC 2833 ) - in-band DTMF relay. Который для переноса информации DTMF использует вместо голосовых пакеты RTP Named Telephony Event (NTE). При этом SDP используется для негоциации между узлами значения payload type=NTE. Хотя формально это in-band , но реально тон в звуковом потоке слышен не будет, поскольку пакеты NTE не голосовые
    RTP-NTE не умеет работать с телефонами SCCP, поскольку телефоны SCCP используют только out-of-band DTMF relay. По этой причине совместно с RTP-NTE необходимо использовать MTP.
  • SIP INFO - out-of-band (OOB) DTMF relay. Информация DTMF отсылается в SIP-сообщениях INFO. Т.е. если шлюз получает сообщение INFO, он отдает соответствующий тон.
  • SIP NOTIFY - out-of-band (OOB) DTMF relay. или его еще называют NOTIFY-based out-of-band DTMF relay . Данный тип DTMF relay использует NOTIFY для передачи тонов. Данный метод совместим с телефонами SCCP, также его можно использовать при подключенных аналоговых телефонах к портам FXS на шлюзе.
  • KPML - out-of-band (OOB) DTMF relay. При использовании Key Press Markup Language телефон SIP отсылает номер по цифре digit-by-digit. Этот метод похож на SIP NOTIFY , с тем лишь отличием, что отдает каждую цифру отдельно.
router(config-dial-peer)#session protocol sipv2 router(config-dial-peer)#dtmf-relay ? cisco-rtp Cisco Proprietary RTP h245-alphanumeric DTMF Relay via H245 Alphanumeric IE h245-signal DTMF Relay via H245 Signal IE rtp-nte RTP Named Telephone Event RFC 2833 sip-kpml DTMF Relay via KPML over SIP SUBCRIBE/NOTIFY sip-notify DTMF Relay via SIP NOTIFY messages router(config-dial-peer)#

Здесь мы видим несколько доступных методов, с для работы с CUCM годятся только
- RTP-NTE (NTE или RFC 2833 );
- SIP-NOTIFY ;
- SIP-KPML .

Всем привет.
Хотите управлять чем-нибудь по сотовому телефону, да еще и без всяких заумных микроконтроллеров? Если да, добро пожаловать под кат.

В последнее время на Муське было несколько обзоров GSM-модулей, типа SIM800, используя которые, можно управлять чем угодно по сотовой сети. Но вот беда, все они требуют подключения к микроконтроллеру, написания прошивки и прочих сложных для непосвященного человека вещей. Другая крайность это: «а я к вибромоторчику телефона реле припаял, у меня все работает»:)) Так тоже можно, но не стоит удивляться, если вашу теплицу будет пытаться поливать насос водой из замерзшего колодца, после прихода СМС-ки «С Новым Годом!» от неизвестного отправителя:)))
В общем, я решил заполнить пробел между этими двумя решениями, и предложить своё.

Сегодня речь пойдет о декодере DTMF сигнала, или если по-простому, тональный сигнал.
Любопытные могут почитать
Технология достаточно устаревшая, но до сих пор поддерживается всеми телефонами.
Собственно, именно тоновый набор вы используете, когда звоните в какое-нибудь учереждение, а вам автоответчик говорит: «если вы знаете номер абонента, нажмите „1“, если вы хотите узнать о наших новых предложениях, нажмите „2“ и так далее. Нажимая кнопку с нужной цифрой на телефоне, вы отправляете по голосовому каналу сигнал определенной тональности. Каждому символу на клавиатуре телефона соответствует своя „мелодия“. Именно этот звук и расшифровывает декодер DTMF, превращая его в сигналы на своих выходах.


Плата собрана на микросхеме , питается от 5 Вольт и имеет следующие выводы: Q1-Q4-дискретные выходы, StQ/StQ инверсное-выходы, которые срабатывают при каждом правильном распознавании сигнала. IN-вход для аудиосигнала, если вы не хотите использовать распаянный на плате 3.5 мм разъем. GND/VCC питание, 5 Вольт.
Выходы Q1-Q4 срабатывают в соответствии с таблицей:

Например, сейчас у меня на плате горят два средних светодиода, сработали выходы Q2 и Q3 смотрим таблицу-это соответствует нажатой клавише „6“. Если я нажму клавишу „1“, то сработает выход Q1, если „2“, то Q2. Если „3“, то „зажгутся“ выходы Q1 и Q2 одновременно. И так далее.
В общем, это 4-битный код. Если его дешифровать специальной микросхемой, то можно получить 16 выходов.
Кстати, на Али продается плата уже с дешифратором, но стоит дороже. Вариант для продвинутых-подключить все это к микроконтроллеру, я так делал, можно даже пароль задать-позвонил набрал пароль, получил доступ к управлению…
Но это уже не в рамках моей статьи, т.к. в начале статьи я обещал, что все будет просто.

И так, берем транзистор КТ815, резистор на 1.1 кОм, или около того, реле на 12 В, стабилизатор LM7805. Остальные детали (защитный диод 1N4007 на катушке реле, желтенькие керамические конденсаторы 0.1 мкф и электролитический на 1000 мкф) желательны, но работает и без них. В качестве нагрузки к реле подключена „пищалка“.
Схему рисовать не буду, монтаж навесной, на фото все видно:


С другой стороны:


Общее питание конструкции 12 В, т.к. этого требует реле, но для платы оно понижается стабилизатором до 5 В.
3.5 мм разъем на плате соединяем шнуром с выходом наушников телефона, настраиваем автоподнятие трубки и все готово. Теперь, если позвонить на телефон, подключенный к плате, дождавшись снятия трубки, нажать „1“, реле сработает, зуммер начнет пищать. Если нажать „2“, все выключится. Кстати, независимо от того, чем вы планируете управлять, зуммер я бы рекомендовал оставить. Это удобно-ведь его слышно по телефону, и таким образом можно получать некую обратную связь: позвонил, слышишь пищание, значит, нагрузка включена:)

Снял небольшой видеоролик, как все это работает

Планирую купить +128 Добавить в избранное Обзор понравился +72 +169

Модели с радиоуправлением используют ВЧ схемы, которые имеют ограниченный рабочий диапазон, ограниченный частотный диапазон и проблемы с согласованием с контроллерами. Использование мобильного телефона для управления моделью позволяет избежать этих недостатков. При использовании мобильного телефона, моделью можно управлять по всей зоне покрытия оператора и без проблем работать с внешними устройствами.

Хотя внешний вид и возможности модели могут значительно варьироваться, все модели имеют механическую часть и часть, которая управляет моделью. Управление моделью включает в себя три этапа: приём команды, обработка и выполнение. Как правило, команды дают внешние датчики, обработкой занимается микроконтроллер, а для выполнения используются двигатели.

Обзор

В данной машинке для управления используется два мобильных телефона – один у вас в руках в качестве пульта ДУ, другой установлен на модели в качестве приёмника. С вашего телефона на телефон модели поступает звонок, и при нажатии вами во время звонка клавиш, с мобильного телефона поступает многочастотный сигнал. Этот сигнал называется Dual-Tone Multi-Frequency (двухтональный многочастотный сигнал) (DTMF).
С помощью DTMF декодера MT8870, DTMF декодируется в двоичный код, который обрабатывается микроконтроллером ATmega16, а затем отдаёт команду драйверу двигателя.

Как видно, эта модель довольно простая и не требует конструирования сложных передатчиков.
DTMF сигнал используется для набора телефонного номера или голосового автоответа.
Сигнал состоит из двух синусоидальных сигналов фиксированной частоты, и легко декодируется в двоичный код и обратно. Для кодирования символа в DTMF сигнал необходимо сложить два синусоидальных сигнала. Например, если надо передать цифру 5, то частота одного сигнала будет 1336 Гц, а другого 770 Гц, и этот сигнал мы получим на втором телефоне.

Описание схемы

На блок-схеме показан принцип работы устройства. Основными его компонентами являются DTMF декодер, микроконтроллер и драйвер двигателей.

В качестве DTMF декодера используется микросхема MT8870. В ней используются цифровые методы распознавания сигнала и выдается сигнал на 4 вывода. Также она не требует предварительной фильтрации входного сигнала. При подаче входного сигнала на PIN2 (В-), декодированный сигнал выходит на выводах от Q1(pin11) до (pin14).

ATmega16 - это 8 битный КМОП микроконтроллер на основе расширенной AVR RISC архитектуры с низким энергопотреблением. Он имеет 16 КБ программируемой флэш-памяти, 512 Б EEPROM, 1 КБ SRAM, 32 линий ввода/вывода и 32 регистра. С выводов микроконтроллера PD0 - PD3 и PD7 подаётся сигнал на выходы IN1 - IN4 и EN1-EN2 драйвера двигателей L293d. Переключатель S1 используется для ручного сброса.

Программа

Микроконтроллер программируется с помощью WIN AVR. Кто не знает как это делать, посмотрите , там все подробно описано. К статье прилагается исходник и hex файл. Если установлена WinAVR, то проблем с открытием возникнуть не должно.

Работа

Для того, чтобы управлять моделью, вы должны позвонить в мобильный телефон модели с любого телефона. Когда машинка автоматически ответила, нажимайте следующие клавиши:
2 – движение вперед.
4 – поворот влево.
8 – движение в обратном направлении.
6 – поворот направо.
5 – остановка.

Список элементов:
DTMF декодер MT8870 – 1.
Микроконтроллер Atmega16 – 1.
Драйвер двигателя L293d – 1.
ОУ Cd7004 – 1.
Диод 1N4007 – 1.
Резистор 100 кОм – 2.
Резистор 10 кОм – 5.
Резистор 330 кОм – 1.
Конденсатор 0.47мкФ – 1.
Конденсатор 0.1мкФ – 1.
Конденсатор 22пФ – 4.
Кварц 3.57 МГц – 1.
Кварц 12 МГц – 1.
Кнопка без фиксации – 1.
Моторы(6В, 50 rpm) – 2 или 4 для полного привода.
Аккумулятор 6В – 1.
Колеса – 4.
Мобильный телефон – 2.
Громкая связь(hands - free) – 1.

Вы должны укрепить телефон на шасси. Телефон подключен к роботу через гарнитуру hands – free.

Подключение hands - free
Я использовал hands – free с разъёмом mini jack.

Скачать исходный код программы и прошивку вы можете ниже

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 DTMF декодер МТ8870 1 В блокнот
IC2 МК AVR 8-бит

ATmega16

1 В блокнот
IC3 Драйвер электродвигателей L293D 1 В блокнот
IC4 ИС буфера, драйвера

SN74LS04

1 В блокнот
D1 Выпрямительный диод

1N4007

1 В блокнот
С1 Конденсатор 0.47 мкФ 1 В блокнот
С2, С3, С5, С6 Конденсатор 22 пФ 4 В блокнот
С4 Конденсатор 0.1 мкФ 1 В блокнот
R1, R2 Резистор

100 кОм

2 В блокнот
R3 Резистор

330 кОм

1 В блокнот
R4-R8 Резистор

10 кОм

5 В блокнот
XTAL1 Кварцевый резонатор 3.57 МГц 1 В блокнот
XTAL2 Кварцевый резонатор 12 МГц 1


Предыдущая статья: Следующая статья:

© 2015 .
О сайте | Контакты
| Карта сайта