Мобільний телефон як GSM шлюз для Asterisk + chan_mobile

Asterisk + chan_mobileМоя задача – підключити мобільний телефон як GSM шлюз до Asterisk за допомогою chan_mobile. У випадку, якщо я буду недоступний по мобільному, люди зможуть залишити мені повідомлення на голосову пошту. SMS повідомлення доставляються до моєї поштової скриньки у вигляді листів, а мої відповіді відсилаються у вигляді SMS.
Я використав мій старий телефон Sony Ericsson k530i у зв’язці з Asterisk підключившись через bluetooth адаптер ID 1131:1001 Integrated System Solution Corp. KY-BT100 Bluetooth Adapter.

Asterisk підтримує підключення телефонів та гарнітур по bluetooth через модуль chan_mobile. Не всі моделі телефінов підтримуються, я рекомендую перевірити вашу модель на voip-info.org. В моєму випадку bluetooth адаптер KY-BT100 та телефони Sony Ericsson k530i і Samsung Galaxy S4 працювали прекрасно.

Як підключити мобільний телефон до Asterisk через chan_mobile читаємо далі…

Підключаємо мобільний телефон до Asterisk по bluetooth через chan_mobile

chan_mobile – це доповнення і його необхідно увімкнути до компиляції Asterisk. Для Debian:

після цього, перейдіть у теку з вихідним кодом Asterisk та виконайте make menuselect . Увімкніть доповнення в Add-ons -> chan_mobile:

Не дивлячись на те, що модуль успішно скомпілювався й встановився, мені знадобилося внести невеличку зміну у вихідний код chan_mobile, перш ніж він розпізнав мій телефон:

Тепер можна скомпілювати та встановити chan_mobile й Asterisk:

Щоб використовувати підлючений по bluetooth телефон як GSM шлюз, необхідно створити bluetooth пару із сервером Asterisk. В Debian ми можемо зробити це з командного рядка. Зробіть телефон доступним для виявлення а потім запустіть його пошук:

MAC знадобиться на наступних кроках. Для створення пари знадобиться PIN код. Запустіть наступну команду у фоновому режимі для початку процесу створення пари:

Після успішного завершення процесу створення пари упевніться, що телефон налаштовано на автоматичений прийом запитів підключення. Перевірити це можна наступною командою:

Тепер необхідно налаштувати Asterisk на роботу з подключеним телефоном. Необхідно знати який rfcomm канал надає голосовий канал. Найпростіший спосіб – використати chan_mobile:

Не хвилюйтесь з приводу можливих повідомлень про помилки. Виконайте:

В нашому випадку це rfcomm канал 2. Крім цього, потрібно знати MAC адресу bluetooth адаптера, що підключений до сервера Asterisk. Вийдіть з консолі Asterisk і використайте hcitool:

Тепер у нас є вся необхідна інформація. У файлі chan_mobile.conf (створіть його, якщо його немає):

Приклад директив номерного плану для вхідяних/вихїдних викликів:

Коли на телефон приходить вхідний виклик, він буде переадресований на SIP номер 100. Набір комбінації *12 запустить набір послідовности 5433 (абонентска підтримка lifecell). Я впевнений, ви зрозуміли ідею.

Відсилаємо SMS через Asterisk та chan_mobile

Якщо вірити офіційній сторінці the chan_mobile wiki page, тільки 3 моделі підтримують SMS: Nokia моделі E51, 6021 та 6230i.

Якщо телефон знаходиться у зв’язці із сервером, він буде доставляти SMS на сервер Asterisk через bluetooth з’єднання. Asterisk шукає ‘sms’ номер у контексті, що вказаний у chan_mobile.conf. Варіант номерного плану для обробки вхідних SMS:

В попередніх версіях існував баг, через який змінна ${SMSSRC} була порожня. Був необхідний патч та рекомпіляція:

В останній версії chan_mobile це вже виправлено!

Тепер вхідні повідомлення доставляються на мою пошту від адресата +MOBILENUMBER@itgala.xyz. Звичайно, на сервері Asterisk повинен бути працюючий МТА, наприклад postfix.

Для вихідних SMS потрібно розпарсити тіло листа. Пітон вже має необхідну библіотеку для цього.

Збережіть код вище у файл /usr/sbin/email2sms.py й зробіть його виконуваним:

Скрипт використовує Asterisk Manager Interface, тому необхідно додати AMI користувача. Додайте в manager.conf:

й перевірте, що AMI увімкнено:

В пітон-скрипті використовується контекст ‘mobiles’. Додайте в extensions.conf:

Також нам необхідний контекст-“заглушка” для застосунку originate:

Перезапустіть Asterisk для застосування змін.

Таким чином, виклик скрипта email2sms.py з аргументом ‘itg’ запустить використання мобільного телефона k530i.

Необхідно упевнитись, що пошта для домена, в моєму випадку sms.itgala.xyz – направляється на сервер Asterisk. Для цього зазвичай потрібно створити MX запис чи транспорт на вашому поштовому сервері. Це виходить за рамки статті, тут я лише покажу как направити повідомлення в пітон-скрипт.

Припустимо, ви використовуєте postfix:

вказуємо, що необхідно використовувати ці транспорти для SMS домена:

Якщо налаштувань transport_maps немає, створіть їх:

Перезапустітьpostfix.

У випадку, якщо щось не працює, відслідкувати події можна через лог:

Також можна провести перехоплення пакетів на Asterisk Manager Interface:

Спробуйте відправити пакет напряму до AMI:

Будьте уважні з пробілами, номер ‘itg’ != ‘itg ‘.

Успіхів!