Шрифт:
Теперь подключаемся к консоли Asterisk и выгружаем, а затем повторно загружаем модуль app_voicemail.so:
*CLI> module unload app_voicemail.so == Unregistered application 'VoiceMail' == Unregistered application 'VoiceMailMain' == Unregistered application 'MailboxExists' == Unregistered application 'VMAuthenticate'
*CLI> module load app_voicemail.so
Loaded /usr/lib/asterisk/modules/app_voicemail.so => (Comedian Mail (Voicemail System))
== Registered application 'VoiceMail' == Registered application 'VoiceMailMain' == Registered application 'MailboxExists' == Registered application 'VMAuthenticate' == Parsing '/etc/asterisk/voicemail.conf': Found
И проверяем успешность загрузки нового почтового ящика:
*CLI> voicemail show users for default Context Mbox User Zone NewMsg
default 1000 J.P. Wiser 0
Тестирование голосовой почты с использованием ODBC
Создадим простую логику диалплана, чтобы оставлять и извлекать сообщения голосовой почты из тестового ящика голосовой почты. Можно использовать такую простую логику диалплана:
[odbc_vm_test]
exten => 100,1,Voicemail(1000@default) ; оставляем сообщение голосовой почты exten => 200,1,VoicemailMain(1000@default) ; извлекаем сообщение голосовой
; почты
После обновления файла extensions.conf не забудьте перезагрузить диалплан:
*CLI> dialplan reload Можно или включить (с помощью выражения include) контекст odbc_ vm_test в контекст, доступный существующему пользователю, или создать отдельного пользователя для тестирования. Если выбран второй вариант, нового SIP-пользователя можно описать в файле sip.conf следующим образом (при условии, что телефон подключен к локальной сети LAN): [odbc_test_user] type=friend secret=supersecret context=odbc_vm_test host=dynamic qualify=yes disallow=all allow=ulaw allow=gsm
Не забудьте перезагрузить SIP-модуль:
*CLI> module reload chan_sip.so и убедиться в том, что SIP-пользователь существует: *CLI> sip show users like odbc_test_user
Username Secret Accountcode Def.Context ACL NAT
odbc_test_user supersecret odbc_vm_test No RFC3581
Затем задаем для телефона или клиента имя пользователя odbc_test_ user и пароль supersecret, а потом звоним на добавочный номер 100, чтобы оставить сообщение голосовой почты. В случае успеха вы должны увидеть примерно следующее:
– - Executing VoiceMail("SIP/odbc_test_user-10228cac", "1000@default") in new stack
– - Playing 'vm-intro' (language 'en') -- Playing 'beep' (language 'en') -- Recording the message -- x=0, open writing: /var/spool/asterisk/voicemail/default/1000/tmp/dlZunm format: wav49, 0x101f6534 -- User ended message by pressing # -- Playing 'auth-thankyou' (language 'en') == Parsing '/var/spool/asterisk/voicemail/default/1000/INBOX/msg0000.txt': Found
Теперь можно снова использовать приложение psql и убедиться, что запись в базу данных действительно осуществляется:
# psql -h localhost -U asterisk asterisk
Password:
С помощью запроса SELECT проверим наличие некоторых данных в таблице voicemessages:
localhost=# SELECT id,dir,callerid,mailboxcontext, recording FROM voicemessages;
id | dir | callerid | mailboxcontext | recording —+ + + +
1 | /var/spool/asterisk/ | +18005551212 | default | 47395
voicemail/default/1000/INBOX (1 row)
Если запись была помещена в базу данных, должна быть возвращена соответствующая строка. Вы заметите, что в столбце recording имеется номер (он, скорее всего, будет отличаться от приведенного здесь), который на самом деле является идентификатором большого объекта, хранящегося в системной таблице. Давайте проверим существование большого объекта в этой системной таблице с помощью команды lo_ list:
localhost=# \lo_list Large objects
ID | Description +
47395 | (1 row)
Проверяем, соответствует ли ID объекта в таблице voicemessages указанному в системной таблице больших объектов. Также можно извлечь информацию из базы данных и сохранить ее на жестком диске, чтобы воспроизвести и убедиться, что сообщение было сохранено правильно: localhost=# \lo_export 47395 /tmp/voicemail-47395.wav lo_export
Теперь проверьте аудиозапись, используя свое любимое приложение для работы с аудиоданными, например приложение play: # play /tmp/voicemail-47395.wav
Input FilenameInput Filename | /tmp/voicemail-47395.wav |
Sample Size | 8-bits |
Sample Encoding | wav |
Channels | 1 |
Sample Rate | 8000 |
Time: 00:06.22 [00:00.00] of 00:00.00 ( 0.0%) Output Buffer: 298.36K Done.
И теперь, когда мы убедились, что все было сохранено в базе данных правильно, можно попытаться прослушать запись с помощью приложения VoicemailMain, позвонив на добавочный номер 200: