Добавить в цитаты Настройки чтения

Страница 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