Последнее время в память симкарт перестали писать номер телефона, к которому она привязана и используя данную симкарту в связке с GSM свистком для Asterisk мы неизменно натыкаемся на проблему её идентификации в телефонной станции.
Но, как водится, разработчики стандартов не дураки и можно, вооружившись терминалом1), поправить поля в симке, что позволит нам дальше успешно её использовать.
Итак, берём GSM-свисток, который поддерживает звонки и смс2), втыкаем туда свежеприобретённую симкарту, вставляем в Asterisk, ставим модуль chan_dongle и настраиваем по образу и подобию3). После этого заходим в сам астериск, загружаем модуль и смотрим что у нас там появилось. Если всё указано верно - получаем наш свисток:
phone*CLI> dongle show devices ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number donglename 0 Free 7 5 4 Tele2 E173 11.126.85.00.209 800000000000009 200000000000009 Unknown
Как видимо в поле Number Asterisk говорит, что не может никак определить номер. В теории конечно можно пытаться отправлять AT команды через интерфейс Asterisk (dongle cmd donglename <AT COMMAND>), но что-то я ему не доверяю, поэтому отключаем свисток от Asterisk и идём любимым терминалом в порт (в Linux это /dev/ttyUSB*, нужно методом научного тыка подобрать тот порт, при отправке в который команды AT в ответ мы получим OK) После подключения начинаем вводить команды (через строчку команда и ожидаемый ответ):
AT OK AT+CNUM +CME ERROR: unknown AT+CPBS? +CPBS: "SM",3,100 OK AT+CPBS="ON" OK AT+CPBS? +CPBS: "ON",0,2 OK AT+CPBW=,"+79000000000" OK AT+CPBS? +CPBS: "ON",1,2 OK AT+CPBR=1 +CPBR: 1,"+79000000000",145,"" OK AT+CNUM +CNUM: "","+79000000000",145 OK
Разберём что тут произошло:
После проведения данного ритуала вновь включаем наш свисток в Asterisk и voila, всё как и просили:
phone*CLI> dongle show devices ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number donglename 0 Free 7 0 0 Tele2 E173 11.126.85.00.209 800000000000009 200000000000009 +79000000000