Я сделал настройку для работы VoiceMail для каждого отдельно сотрудника. Пока многовато ручного ввода, но как только время будет - сделаю более автоматически через AGI.
А пока вот так.
1. В приложении voicemail в диалпланах записываем модифицированный код:
1,Set(__VCEX=${CALLERID(dnid)}) ; сохраняем номер, с которого приходит перенаправление
n,Goto(voice_mail_peer_user,voicemail,1)
2. В кастомизации - existensions.conf добавляем в конец:
[voice_mail_peer_user]
exten => voicemail,1,Answer()
same => n,ExecIf($["${CHANNEL:0:5}" == "Local"]?Set(pl=${IF($["${CHANNEL:-1}" == "1"]?2:1)}))
same => n,ExecIf($["${CHANNEL:0:5}" == "Local"]?Set(bridgePeer=${IMPORT(${CUT(CHANNEL,\;,1)}\;${pl},BRIDGEPEER)}))
same => n,ExecIf($[ "${FROM_CHAN}" == "${bridgePeer}" ]?ChannelRedirect(${bridgePeer},${CONTEXT},${EXTEN},2))
same => n,AGI(/usr/www/src/Core/Asterisk/agi-bin/clean_timeout.php)
same => n,Gosub(voicemail_start,${VCEX},1)
same => n,VoiceMail(${VCEX}@voicemailcontext)
same => n,Hangup()
exten => h,1,Gosub(voicemail_end,${VCEX},1)
same => n,Hangup()
3. В кастомизации в voicemail.conf добавляем в конец:
[voicemailcontext](+)
{внутрениий номер}=> 1111,пользователь,<email@пользователя>,,attach=yes|tz=local|delete=yes
Таким образом, в пункте 3 нужно прописать всех пользователей, у которых есть voicemail.
По идее, нужно сделать AGI или патч, который будет брать email со справочника абонентов и туда записывать, но пока руки не дошли до правильной глобальной переделки.
В логе звонков видно что звонили. Пока записи не сохраняются, но это вопрос времени (новая версия на подходе с исправлениями).
Но в логе перестало видно, что это voicemail. Указывается на какой номер ушло. Не знаю, насколько это критично. Запись отправляется на емайл абонента.
Спасибо. Буду рад некоторой конструктивной критике.