Страница 88 из 157
== 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([email protected]/* */) ; оставляем сообщение голосовой почты exten => 200,1,VoicemailMain([email protected]/* */) ; извлекаем сообщение голосовой
; почты
После обновления файла 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", "[email protected]/* */") 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