Asterisk + chan_mobile (bluetooth)

В место того чтоб использовать дорогостоящие GSM шлюзы, и специальные PCI-e карты, можно использовать подключаемый к * программный модуль  chan_mobile. Который позволит нам используя обычный мобильник в качестве шлюза, выходить в GSM сеть. Сам chan_mobile связывается с мобильным телефоном по bluetooth так что наличие bluetooth обязательное. Для реализации этого нам необходимо будет установить сам астериск, и установить базовый пакет BlueZ и некоторые необходимые библиотеки:

# apt-get install bluez-utils bluez-hcidump libbluetooth2-dev

Теперь нужно настроить BlueZ, откройте файл hcid.conf в каталоге настроек Bluetooth, и приведите в соответствие содержание к следующему:

# HCId options
options {
autoinit yes;
security auto;
pairing multi;
passkey “4321″;
}

device {
name “Our PBX System”;
class 0×3e0100;
iscan enable; pscan enable;
discovto 0;
lm accept;
lp rswitch,hold,sniff,park;
}

options {
autoinit yes;
security auto;
pairing multi;
pin_helper /etc/bluetooth/pin;
}

Думаю уже догадались что строка passkey “4321″ это ни что иное как пароль для связки астериска с телефоном.

Сам модуль находится в дополнениях Asterisk Add-Ons которые можно скачать на сайте asterisk, также он встроен в астериск 1.8, модуль можно выбрать в меню Asterisk Add-Ons во время установки, использовав команду make menuselect. После установки модуля нам его нужно загружать в астериск, для этого можно прям в командную строку * CLI ввести команду module load chan_mobile.so для выгрузки модуля соответственно unload, или же прописать загрузку модуля в файле /etc/asterisk/modules.conf

Соединение с Bluetooth-адаптером:

Необходимо настроить файл /etc/asterisk/chan_mobile.conf , сначала найдем МАС-адрес адаптера Bluetooth, выполнив команду hcitool dev которая возвращает МАС-адрес адаптера. Это значение должно быть скопировано в chan_mobile.conf:

[adapter]
id=blue
address=99:99:99:99:99:99

Затем нужно найти MAC-адрес мобильного телефона и порт для подключения к телефону, выполните команду: hcitool scan которая возвращает МАС-адрес мобильного телефона. Порт можно увидеть выполнив в командной строке *CLI mobile search если же команда не выполняется, вы не подключили или не установили модуль, следует отметить что модуль устанавливается только после установленных библиотек и драйверов для Bluetooth, также не забывайте перезагружать * после внесенных изменений. Выполнив команду *CLI mobile search вы должны увидеть следующие:

Address Name Usable Type Port
55:55:55:55:55:55 Phone1 Yes Phone 6

Затем порт и мак-адрес мобильного телефона нужно также занести в конфиг chan_mobile.conf,

[nokia]
address=55:55:55:55:55:55
port=6
context=ogsm
adapter=blue

Перезагружаем астериск, следим чтоб модуль загрузился и выполняем в консоли *CLI mobile show devices
Вы должны увидеть что-то вроде этого:
*CLI> mobile show devices
ID Address Adapter Connected State SMS
nokia 55:55:55:55:55:55 blue Yes Free No

Внимание! У меня долго не получалось добиться коннекта! Постоянно писало Connected No. Чтобы коннект заработал нужно в файле chan_mobile.c исправить ошибку:

memset(&addr, 0, sizeof(addr));
addr.rc_family = AF_BLUETOOTH;
bacpy(&addr.rc_bdaddr, &src);
—  addr.rc_channel = (uint8_t) 1;         (поменять 1 на 0)
+ addr.rc_channel = (uint8_t) 0;
if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
ast_debug(1, «bind() failed (%d).\n», errno);
close(s);

Для совершения звонков через мобильный extensions.conf настраивается так:

[ogsm]
exten => _9X.,1,Dial(Mobile/nokia/${EXTEN},45)
exten => _9X.,n,Hangup