Полезные команды Asterisk (буду дополнять)

1. Переполнение памяти SMS
Если нужно принять SMS-ку, а в консоли (asterisk -rvv) пишет следующее:
ERROR[15627]: at_response.c:1420 at_response_smmemfull: [dongle0] SMS storage is full
то, логично – нам необходимо почистить память для смс-ок.

Есть два вида памяти:
  • память SIM
  • память модема
Для очистки памяти SIM применяем в консоли астериска последовательно команды:
dongle cmd <dongle_name> AT+CPMS=”SM”,”SM”,”SM” 
dongle cmd <dongle_name> AT+CMGD=1,4
Для очистки памяти модема применяем в консоли астериска последовательно команды:
dongle cmd dongle_name AT+CPMS=”ME”,”ME”,”ME” 
dongle cmd dongle_name AT+CMGD=1,4
Консолька нам выдасть что-то типа:

[dongle_name] ‘AT+CMGD=1,4’ Command queued for execute
[dongle_name] Got Response for user’s command:’OK’
[Oct 25 07:41:57] NOTICE[15627]: at_response.c:1714 at_response: [dongle_name] Got Response for user’s command:’OK’
Всё прошло гладко. Теперь можно принимать SMS-ки.
2. Прием PDU SMS
Если при приеме SMS в консоль пишет следующее:
WARNING[15638]: at_response.c:1204 at_response_cmgr: [dongle0] Error parsing incoming message ‘+CMGR: 0,,73 <куча HEX цифр>’ at possition 40: Can’t parse OA 
то это значит, что SMS-ка пришла в PDU формате и модуль chan_dongle её самостоятельно разобрать не может.
Здесь нам поможет сайтик http://twit88.com/home/utility/sms-pdu-encode-decode , где в поле Hexadecimal PDU Message вводим нашу непонятную мессагу и нажимаем Convert.
Или здесь: http://www.smartposition.nl/resources/sms_pdu.html
3. Просмотр инфо о GSM модемах в системе
Проверить статус модема можно командочкой в консоли астериска:
dongle show devices
ID           Group   State RSSI   Mode   Submode   Provider Name   Model      Firmware          IMEI             IMSI             Number
<dongle_name>  0     Free  22     0         0       life:)         E173       21.157.71.00.388  <imei_number>  <imsi_number>  <tel_number>
Т. к. библиотека для работы с модемами chan_dongle в Астериске опен сорцная и довольно сырая, то можем иногда зависает и отказывается принимать входящие звонки – сьрасывает сразу их. Тогда статус модема будет не Free а Dialing, причем звонков в этот момент нет.
4. Просмотр статистики звонков
Проверить есть ли сейчас активные звонки и сколько было обработано звонков можно командой:
core show calls
 
0 active calls
5. Перезапуск GSM модема
Чтобы перезагрузить модем не перезагружая всю астериску, нужно выполнить команду в CLI:
dongle restart now <dongle_name>
[<dongle_name>] Restart scheduled
[Oct 25 07:42:05] NOTICE[15627]: chan_dongle.c:417 do_monitor_phone: [<dongle_name>] stopping by restart request
Update.

6. Прерывание определенных звонков.
Вначале отобразим инфо о текущих звонках:

asterisk2*CLI> core show channels
Channel              Location             State   Application(Data)
SIP/3224-00000a19    s@macro-dial-one:42  Up      Dial(SIP/4027,15,trI)
IAX2/IAX_Trunk_to_US (None)               Up      AppDial((Outgoing Line))
SIP/4003-00000a2f    s@macro-dialout-trun Up      Dial(IAX2/IAX_Trunk_to_US/1001
SIP/4001-0000089e    s-CHANUNAVAIL@macro- Up      VoiceMail(3102@default,u””)
SIP/3117-00000102    s-NOANSWER@macro-vm: Up      VoiceMail(3106@default,u””)
SIP/4027-00000a1a    (None)               Up      AppDial((Outgoing Line))
6 active channels
4 active calls
1553 calls processed

Допустим, мы хотим обрубить звонок пользователю 4003 (выделен). Выполняем команду:

asterisk2*CLI> channel request hangup SIP/4003-00000a2f
Requested Hangup on channel ‘SIP/4003-00000a30’
— Executing [h@macro-dialout-trunk:1] Macro(“SIP/4003-00000a30”, “hangupcall,”) in new stack
— Executing [s@macro-hangupcall:1] GotoIf(“SIP/4003-00000a30”, “1?theend”) in new stack
— Goto (macro-hangupcall,s,3)
— Executing [s@macro-hangupcall:3] ExecIf(“SIP/4003-00000a30”, “0? Set(CDR(recordingfile)=)”) in new stack
— Executing [s@macro-hangupcall:4] Hangup(“SIP/4003-00000a30”, “”) in new stack
== Spawn extension (macro-hangupcall, s, 4) exited non-zero on ‘SIP/4003-00000a30′ in macro hangupcall’
== Spawn extension (macro-dialout-trunk, h, 1) exited non-zero on ‘SIP/4003-00000a30’
— Hungup ‘IAX2/IAX_Trunk_to_US-49’

Теперь можно увидеть, что звонок завершен.

asterisk2*CLI> core show channels
Channel              Location             State   Application(Data)
SIP/3224-00000a19    s@macro-dial-one:42  Up      Dial(SIP/4027,15,trI)
SIP/4001-0000089e    s-CHANUNAVAIL@macro- Up       VoiceMail(3102@default,u””)
SIP/3117-00000102    s-NOANSWER@macro-vm: Up       VoiceMail(3106@default,u””)
SIP/4027-00000a1a    (None)               Up      AppDial((Outgoing Line))
4 active channels
3 active calls
1554 calls processed

(Источник)
7. Отслеживание активных звонков в Asterisk
В консоли Linux набираем:

watch -n 1 “sudo asterisk -vvvvvrx ‘core show channels’ | grep call”
Информация обновляется каждую секунду.
8. Просмотр структуры базы данных:
database show status
9. Послать USSD-запрос через GSM-модем, работающий с chan_dongle:
dongle ussd dongle0 *111#
10. Показать список каналов, доступных в системе asterisk:
core show channeltypes
Пример вывода:

Leave a Reply

Your email address will not be published. Required fields are marked *